15.04.2014 Views

Babel, a multilingual package for use with LATEX's ... - linsrv.net

Babel, a multilingual package for use with LATEX's ... - linsrv.net

Babel, a multilingual package for use with LATEX's ... - linsrv.net

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

This macro expects the name of a group of shorthands in its first argument and a<br />

shorthand character in its second argument. It will expand to either \bbl@firstcs<br />

or \bbl@scndcs. Hence two more arguments need to follow it.<br />

560 \def\bbl@sh@select#1#2{%<br />

561 \expandafter\ifx\csname#1@sh@#2@sel\endcsname\relax<br />

562 \bbl@afterelse\bbl@scndcs<br />

563 \else<br />

564 \bbl@afterfi\csname#1@sh@#2@sel\endcsname<br />

565 \fi}<br />

\active@prefix<br />

The command \active@prefix which is <strong>use</strong>d in the expansion of active characters<br />

has a function similar to \OT1-cmd in that it \protects the active character<br />

whenever \protect is not \@typeset@protect.<br />

566 \def\active@prefix#1{%<br />

567 \ifx\protect\@typeset@protect<br />

568 \else<br />

When \protect is set to \@unexpandable@protect we make sure that the active<br />

character is als not expanded by inserting \noexpand in front of it. The \@gobble<br />

is needed to remove a token such as \activechar: (when the double colon was<br />

the active character to be dealt <strong>with</strong>).<br />

569 \ifx\protect\@unexpandable@protect<br />

570 \noexpand#1%<br />

571 \else<br />

572 \protect#1%<br />

573 \fi<br />

574 \expandafter\@gobble<br />

575 \fi}<br />

\if@safe@actives<br />

\bbl@restore@actives<br />

\bbl@activate<br />

\bbl@deactivate<br />

\bbl@firstcs<br />

\bbl@scndcs<br />

In some circumstances it is necessary to be able to change the expansion of an<br />

active character on the fly. For this purpose the switch @safe@actives is available.<br />

The setting of this switch should be checked in the first level expansion of<br />

\active@char〈char〉.<br />

576 \newif\if@safe@actives<br />

577 \@safe@activesfalse<br />

When the output routine kicks in while the active characters were made “safe” this<br />

must be undone in the headers to prevent unexpected typeset results. For this<br />

situation we define a command to make them “unsafe” again.<br />

578 \def\bbl@restore@actives{\if@safe@actives\@safe@activesfalse\fi}<br />

Both macros take one argument, like \initiate@active@char. The macro is <strong>use</strong>d<br />

to change the definition of an active character to expand to \active@char〈char〉 in<br />

the case of \bbl@activate, or \normal@char〈char〉 in the case of<br />

\bbl@deactivate.<br />

579 \def\bbl@activate#1{%<br />

580 \bbl@<strong>with</strong>active{\expandafter\let\expandafter}#1%<br />

581 \csname bbl@active@\string#1\endcsname}<br />

582 \def\bbl@deactivate#1{%<br />

583 \bbl@<strong>with</strong>active{\expandafter\let\expandafter}#1%<br />

584 \csname bbl@normal@\string#1\endcsname}<br />

These macros have two arguments. They <strong>use</strong> one of their arguments to build a<br />

control sequence from.<br />

585 \def\bbl@firstcs#1#2{\csname#1\endcsname}<br />

586 \def\bbl@scndcs#1#2{\csname#2\endcsname}<br />

49

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!