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.

\SetCase<br />

{\uccode‘i="9D\relax<br />

\uccode"19=‘I\relax}<br />

{\lccode"9D=‘i\relax<br />

\lccode‘I="19\relax}<br />

\End<strong>Babel</strong>Commands<br />

(Note the mapping <strong>for</strong> OT1 is not complete.)<br />

\SetHyphenMap<br />

{〈to-lower-macros〉}<br />

New 3.9g Case mapping serves in T E X <strong>for</strong> two unrelated purposes: case<br />

trans<strong>for</strong>ms (upper/lower) and hyphenation. \SetCase handles the <strong>for</strong>mer, while<br />

hyphenation is handled by \SetHyphenMap and controlled <strong>with</strong> the <strong>package</strong> option<br />

hyphenmap. So, even if internally they are based on the same T E X primitive<br />

(\lccode), babel sets them separately.<br />

There are three helper macros to be <strong>use</strong>d inside \SetHyphenMap:<br />

• \<strong>Babel</strong>Lower{〈uccode〉}{〈lccode〉} is similar to \lccode but it’s ignored if<br />

the char has been set and saves the original lccode to restore it when<br />

switching the language (except <strong>with</strong> hyphenmap=first).<br />

• \<strong>Babel</strong>LowerMM{〈uccode-from〉}{〈uccode-to〉}{〈step〉}{〈lccode-from〉} loops<br />

though the given uppercase codes, using the step, and assigns them the<br />

lccode, which is also increased (MM stands <strong>for</strong> many-to-many).<br />

• \<strong>Babel</strong>LowerMO{〈uccode-from〉}{〈uccode-to〉}{〈step〉}{〈lccode〉} loops<br />

though the given uppercase codes, using the step, and assigns them the<br />

lccode, which is fixed (MO stands <strong>for</strong> many-to-one).<br />

An example is (which is redundant, beca<strong>use</strong> these assignments are done by both<br />

luatex and xetex):<br />

\SetHyphenMap{\<strong>Babel</strong>LowerMM{"100}{"11F}{2}{"101}}<br />

This macro is not intended to fix wrong mappings done by Unicode (which are the<br />

default in both xetex and luatex) – if an assignment is wrong, fix it directly.<br />

4 Compatibility and changes<br />

4.1 Compatibility <strong>with</strong> german.sty<br />

The file german.sty has been one of the sources of inspiration <strong>for</strong> the babel<br />

system. Beca<strong>use</strong> of this I wanted to include german.sty in the babel system. To be<br />

able to do that I had to allow <strong>for</strong> one incompatibility: in the definition of the macro<br />

\selectlanguage in german.sty the argument is <strong>use</strong>d as the 〈number〉 <strong>for</strong> an<br />

\ifcase. So in this case a call to \selectlanguage might look like<br />

\selectlanguage{\german}.<br />

In the definition of the macro \selectlanguage in babel.def the argument is <strong>use</strong>d<br />

as a part of other macronames, so a call to \selectlanguage now looks like<br />

\selectlanguage{german}. Notice the absence of the escape character. As of<br />

version 3.1a of babel both syntaxes are allowed.<br />

All other features of the original german.sty have been copied into a new file,<br />

called germanb.sty 20 .<br />

20 The ‘b’ is added to the name to distinguish the file from Partls’ file.<br />

27

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

Saved successfully!

Ooh no, something went wrong!