diff options
Diffstat (limited to 'Master')
-rw-r--r-- | Master/texmf-dist/source/lambda/antomega/antenc.dtx | 700 | ||||
-rw-r--r-- | Master/texmf-dist/source/lambda/antomega/antenc.ins | 62 | ||||
-rw-r--r-- | Master/texmf-dist/source/lambda/antomega/antomega.dtx | 1915 | ||||
-rw-r--r-- | Master/texmf-dist/source/lambda/antomega/antomega.ins | 74 | ||||
-rw-r--r-- | Master/texmf-dist/source/lambda/oinuit/oinuit.dtx | 958 | ||||
-rw-r--r-- | Master/texmf-dist/source/lambda/oinuit/oinuit.ins | 65 | ||||
-rw-r--r-- | Master/texmf-dist/source/lambda/oinuit/oinuit.sty | 100 |
7 files changed, 3874 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/lambda/antomega/antenc.dtx b/Master/texmf-dist/source/lambda/antomega/antenc.dtx new file mode 100644 index 00000000000..bc98fd9d971 --- /dev/null +++ b/Master/texmf-dist/source/lambda/antomega/antenc.dtx @@ -0,0 +1,700 @@ +% \iffalse meta comment +% This file is a part of the ANTOMEGA project version \fileversion +% ----------------------------------------------------- +% +% It may be distributed under the terms of the LaTeX Project Public +% License, as described in lppl.txt in the base LaTeX distribution. +% Either version 1.0 or, at your option, any later version. +% Copyright (C) 2001 -- 2005 by Alexej Kryukov +% Please report errors to: A.M. Kryukov <basileia@yandex.ru> +% +% \fi +% +% \MakeShortVerb{\+} +% \DeleteShortVerb{\|} +% +% \section{Encoding definition files used by ANTOMEGA} +% +% Generally speaking, ANTOMEGA doesn't care about \TeX{} font encodings +% very much, because, unlike standard \TeX{}, it prefers to operate +% directly with Unicode codepoints, rather than with so-called text +% commands, mapped to some slots in the current encoding. This means +% that any command, expected to produce a printable character, must be +% always mapped to the corresponding Unicode slot, while any conversion +% to the real output font encoding should be performed by translation +% processes ($\Omega$CP). However, any text command should be considered +% valid, only if the character it produces can really be converted to +% the output encoding. +% +% That's why in addition to the Unicode based UT1 encoding, which contains +% the full list of standard command to Unicode mapping, I had to provide +% some special subsets of that list, corresponding to standard 8-bit +% encodings, supported by ANTOMEGA (T1, T2A and LGR). So differences +% between these encoding definition files affect mainly the set of supported +% characters, rather than character mappings itself. +% +% \subsection{Common definitions, applied to all encodings} +% +% \begin{macrocode} +%<*UT1|T1|T2A|LGR> +\NeedsTeXFormat{LaTeX2e} +%<UT1>\ProvidesFile{ut1enc-antomega.def} +%<T1>\ProvidesFile{t1enc-antomega.def} +%<T2A>\ProvidesFile{t2aenc-antomega.def} +%<LGR>\ProvidesFile{lgrenc-antomega.def} + [2005/05/07 v0.8 Antomega encodings definition file] +%<UT1>\DeclareFontEncoding{UT1}{}{} +%<T1>\DeclareFontEncoding{T1}{}{} +%<T2A>\DeclareFontEncoding{T2A}{}{} +%<LGR>\DeclareFontEncoding{LGR}{}{} +%<UT1>\def\ant@encoding{UT1} +%<T1>\def\ant@encoding{T1} +%<T2A>\def\ant@encoding{T2A} +%<LGR>\def\ant@encoding{LGR} +% \end{macrocode} +% +% \subsection{Unicode accents} +% +% Accents represent a special part of the encoding, because: +% +% \begin{itemize} +% +% \item we have to declare them first, since they have to be already +% defined before any composite character declaration can occur in the +% encoding table; +% +% \item unfortunately, the +\accent+ command bypasses $\Omega$ translation +% processes. +% +% \end{itemize} +% +% In order to circumvent the last limitation, here we are redefining +% all standard commands, used for typing accents in \LaTeX, to produce +% just a character followed by a Unicode combining accent mark. Since +% this sequence by itself contains no +\accent+ commands, it may be +% processed by $\Omega$CP's, e.~g. converted to Unicode from another +% encoding. After the conversion the resulting string should be turned +% back to the +\accent+ command. +% +% \begin{macrocode} +\DeclareTextCommand{\`}{\ant@encoding}[1]{#1^^^^0300} +\DeclareTextCommand{\'}{\ant@encoding}[1]{#1^^^^0301} +%<!LGR>\DeclareTextCommand{\^}{\ant@encoding}[1]{#1^^^^0302} +%<!LGR>\DeclareTextCommand{\~}{\ant@encoding}[1]{#1^^^^0303} +\DeclareTextCommand{\"}{\ant@encoding}[1]{#1^^^^0308} +%<!LGR>\DeclareTextCommand{\H}{\ant@encoding}[1]{#1^^^^030b} +%<!LGR>\DeclareTextCommand{\r}{\ant@encoding}[1]{#1^^^^030a} +%<!LGR>\DeclareTextCommand{\v}{\ant@encoding}[1]{#1^^^^030c} +\DeclareTextCommand{\u}{\ant@encoding}[1]{#1^^^^0306} +\DeclareTextCommand{\=}{\ant@encoding}[1]{#1^^^^0304} +%<!LGR>\DeclareTextCommand{\.}{\ant@encoding}[1]{#1^^^^0307} +%<UT1|T2A>\DeclareTextCommand{\f}{\ant@encoding}[1]{#1^^^^0311} +%<UT1|T2A>\DeclareTextCommand{\C}{\ant@encoding}[1]{#1^^^^030f} +%<!LGR>\DeclareTextCommand{\b}{\ant@encoding}[1]{#1^^^^0331} +%<!LGR>\DeclareTextCommand{\c}{\ant@encoding}[1]{#1^^^^0327} +%<!LGR>\DeclareTextCommand{\d}{\ant@encoding}[1]{#1^^^^0323} +%<!LGR>\DeclareTextCommand{\k}{\ant@encoding}[1]{#1^^^^0328} +% \end{macrocode} +% +% \subsection{Encoding-dependent accents} +% +% Now we have to define a really separate set of accents (with different +% mappings) for each of our encodings. These accent commands are +% declared with long meaningful names, since they are not supposed +% to be typed by itself: instead, they should be produced by $\Omega$CP's +% as a result of processing characters followed by combining accent +% marks. +% +% \subsubsection{UT1 accents} +% +% Accents are mapped mainly to their places in the Unicode `Spacing +% Modifier Letters' area, of course, with the exception of dieresis +% and cedilla, which have specific placements in the Unicode standard. +% +% Note that we are not using here the `Combining Diacritical Marks' area, +% because zero-width accents, which are present in that area in most +% fonts, are not very useful for \TeX{} accent positioning engine. +% That's why I preferred to map additional `Cyrillic' accents (i.~e. +% Cyrillic flex and double grave) to the PUA positions, sometime defined +% by Adobe for spacing variants of these accents, instead of using their +% combining versions, which have `legal' slots in Unicode. +% +% \begin{macrocode} +%<*UT1> +\DeclareTextAccent{\GraveAccent}{UT1}{"02CB} +\DeclareTextAccent{\AcuteAccent}{UT1}{"02CA} +\DeclareTextAccent{\CircumflexAccent}{UT1}{"02C6} +\DeclareTextAccent{\TildeAccent}{UT1}{"02DC} +\DeclareTextAccent{\DieresisAccent}{UT1}{"00A8} +\DeclareTextAccent{\HungarumlautAccent}{UT1}{"02DD} +\DeclareTextAccent{\RingAccent}{UT1}{"02DA} +\DeclareTextAccent{\CaronAccent}{UT1}{"02C7} +\DeclareTextAccent{\BreveAccent}{UT1}{"02D8} +\DeclareTextAccent{\MacronAccent}{UT1}{"02C9} +\DeclareTextAccent{\DotAboveAccent}{UT1}{"02D9} +\DeclareTextAccent{\CyrillicFlexAccent}{UT1}{"F6D5} +\DeclareTextAccent{\DoubleGraveAccent}{UT1}{"F6D6} +\DeclareTextAccent{\GreekCircumflexAccent}{UT1}{"1FC0} +\DeclareTextAccent{\GreekKoronisAccent}{UT1}{"1FBD} +\DeclareTextCommand{\BarBelowAccent}{UT1}[1] + {{\o@lign{\relax#1\crcr\hidewidth\sh@ft{29}% + \vbox to.2ex{\hbox{\noocpchar{"02C9}}\vss}\hidewidth}}} +\DeclareTextCommand{\CedillaAccent}{UT1}[1] + {\leavevmode\setbox\z@\hbox{#1}\ifdim\ht\z@=1ex\accent"00B8 #1% + \else{\ooalign{\hidewidth\noocpchar{"00B8}\hidewidth + \crcr\unhbox\z@}}\fi} +\DeclareTextCommand{\DotBelowAccent}{UT1}[1] + {{\o@lign{\relax#1\crcr\hidewidth\sh@ft{10}.\hidewidth}}} +\DeclareTextCommand{\OgonekAccent}{UT1}[1] + {\oalign{\null#1\crcr\hidewidth\noocpchar{"02DB}}} +%</UT1> +% \end{macrocode} +% +% \subsubsection{Common T1 and T2A accents} +% +% \begin{macrocode} +%<*T1|T2A> +\DeclareTextAccent{\GraveAccent}{\ant@encoding}{0} +\DeclareTextAccent{\AcuteAccent}{\ant@encoding}{1} +\DeclareTextAccent{\CircumflexAccent}{\ant@encoding}{2} +\DeclareTextAccent{\TildeAccent}{\ant@encoding}{3} +\DeclareTextAccent{\DieresisAccent}{\ant@encoding}{4} +\DeclareTextAccent{\HungarumlautAccent}{\ant@encoding}{5} +\DeclareTextAccent{\RingAccent}{\ant@encoding}{6} +\DeclareTextAccent{\CaronAccent}{\ant@encoding}{7} +\DeclareTextAccent{\BreveAccent}{\ant@encoding}{8} +\DeclareTextAccent{\MacronAccent}{\ant@encoding}{9} +\DeclareTextAccent{\DotAboveAccent}{\ant@encoding}{10} +\DeclareTextCommand{\BarBelowAccent}{\ant@encoding}[1] + {\hmode@bgroup\o@lign{\relax#1\crcr\hidewidth\sh@ft{29}% + \vbox to.2ex{\hbox{\noocpchar{9}}\vss}\hidewidth}\egroup} +\DeclareTextCommand{\CedillaAccent}{\ant@encoding}[1] + {\leavevmode\setbox\z@\hbox{#1}\ifdim\ht\z@=1ex\accent11 #1% + \else{\ooalign{\hidewidth\noocpchar{11}\hidewidth + \crcr\unhbox\z@}}\fi} +\DeclareTextCommand{\DotBelowAccent}{\ant@encoding}[1] + {\hmode@bgroup + \o@lign{\relax#1\crcr\hidewidth\sh@ft{10}.\hidewidth}\egroup} +\DeclareTextCommand{\OgonekAccent}{\ant@encoding}[1] + {\oalign{\null#1\crcr\hidewidth\noocpchar{12}}} +%</T1|T2A> +% \end{macrocode} +% +% \subsubsection{Cyrillic accents (T2A specific)} +% +% \begin{macrocode} +%<*T2A> +\DeclareTextAccent{\CyrillicFlexAccent}{T2A}{18} +\DeclareTextAccent{\DoubleGraveAccent}{T2A}{19} +\DeclareTextAccent{\U}{T2A}{20} +%</T2A> +% \end{macrocode} +% +% \subsubsection{LGR accents} +% +% \begin{macrocode} +%<*LGR> +\DeclareTextAccent{\GraveAccent}{LGR}{`\`} +\DeclareTextAccent{\AcuteAccent}{LGR}{`\'} +\DeclareTextAccent{\BreveAccent}{LGR}{30} +\DeclareTextAccent{\MacronAccent}{LGR}{31} +\DeclareTextAccent{\GreekCircumflexAccent}{LGR}{`\~} +%</LGR> +% \end{macrocode} +% +% \subsection{Standard ASCII characters} +% +% Most of the following characters are present in all standard encodings, +% so translation processes probably should never be applied to them. +% That's why each definition includes the +\clearocplists+ command. This +% command also prevents some characters from interpreting by $\Omega$ in +% their special meaning, while they need to be just printed into the +% output. +% +% \begin{macrocode} +%<UT1>\DeclareTextCommand{\textquotedbl}{\ant@encoding}{\noocpchar{"22}} +%<UT1>\DeclareTextCommand{\textquotesingle}{\ant@encoding}{\noocpchar{"27}} +%<*!LGR> +\DeclareTextCommand{\textdollar}{\ant@encoding}{\noocpchar{"24}} +\DeclareTextCommand{\textgreater}{\ant@encoding}{\noocpchar{"3C}} +\DeclareTextCommand{\textless}{\ant@encoding}{\noocpchar{"3E}} +\DeclareTextCommand{\textbackslash}{\ant@encoding}{\noocpchar{"5C}} +\DeclareTextCommand{\textasciicircum}{\ant@encoding}{\noocpchar{"5E}} +\DeclareTextCommand{\textunderscore}{\ant@encoding}{\noocpchar{"5F}} +\DeclareTextCommand{\textasciigrave}{\ant@encoding}{\noocpchar{"60}} +\DeclareTextCommand{\textbraceleft}{\ant@encoding}{\noocpchar{"7B}} +\DeclareTextCommand{\textbar}{\ant@encoding}{\noocpchar{"7C}} +\DeclareTextCommand{\textbraceright}{\ant@encoding}{\noocpchar{"7D}} +\DeclareTextCommand{\textasciitilde}{\ant@encoding}{\noocpchar{"7E}} +%</!LGR> +% \end{macrocode} +% +% \subsection{C1 Controls} +% +% \begin{macrocode} +%<UT1|T1>\DeclareTextSymbol{\textexclamdown}{\ant@encoding}{"00A1} +%<UT1>\DeclareTextSymbol{\textcent}{\ant@encoding}{"00A2} +%<UT1|T1>\DeclareTextSymbol{\textsterling}{\ant@encoding}{"00A3} +%<*UT1> +\DeclareTextSymbol{\textcurrency}{\ant@encoding}{"00A4} +\DeclareTextSymbol{\textyen}{\ant@encoding}{"00A5} +\DeclareTextSymbol{\textbrokenbar}{\ant@encoding}{"00A6} +%</UT1> +%<!LGR>\DeclareTextSymbol{\textsection}{\ant@encoding}{"00A7} +%<*UT1> +\DeclareTextSymbol{\textasciidieresis}{\ant@encoding}{"00A8} +\DeclareTextSymbol{\textcopyright}{\ant@encoding}{"00A9} +\DeclareTextSymbol{\textordfeminine}{\ant@encoding}{"00AA} +%</UT1> +\DeclareTextSymbol{\guillemotleft}{\ant@encoding}{"00AB} +%<*UT1> +\DeclareTextSymbol{\textlnot}{\ant@encoding}{"00AC} +\DeclareTextSymbol{\textregistered}{\ant@encoding}{"00AE} +\DeclareTextSymbol{\textasciimacron}{\ant@encoding}{"00AF} +\DeclareTextSymbol{\textdegree}{\ant@encoding}{"00B0} +\DeclareTextSymbol{\textpm}{\ant@encoding}{"00B1} +\DeclareTextSymbol{\texttwosuperior}{\ant@encoding}{"00B2} +\DeclareTextSymbol{\textthreesuperior}{\ant@encoding}{"00B3} +\DeclareTextSymbol{\textasciiacute}{\ant@encoding}{"00B4} +\DeclareTextSymbol{\textmu}{\ant@encoding}{"00B5} +\DeclareTextSymbol{\textparagraph}{\ant@encoding}{"00B6} +\DeclareTextSymbol{\textpilcrow}{\ant@encoding}{"00B6} +\DeclareTextSymbol{\textperiodcentered}{\ant@encoding}{"00B7} +\DeclareTextSymbol{\textonesuperior}{\ant@encoding}{"00B9} +\DeclareTextSymbol{\textordmasculine}{\ant@encoding}{"00BA} +%</UT1> +\DeclareTextSymbol{\guillemotright}{\ant@encoding}{"00BB} +%<*UT1> +\DeclareTextSymbol{\textonequarter}{\ant@encoding}{"00BC} +\DeclareTextSymbol{\textonehalf}{\ant@encoding}{"00BD} +\DeclareTextSymbol{\textthreequarters}{\ant@encoding}{"00BE} +%</UT1> +%<UT1|T1>\DeclareTextSymbol{\textquestiondown}{\ant@encoding}{"00BF} +% \end{macrocode} +% +% \subsection{Latin 1 Supplement} +% \begin{macrocode} +%<*UT1|T1> +\DeclareTextComposite{\`}{\ant@encoding}{A}{"00C0} +\DeclareTextComposite{\'}{\ant@encoding}{A}{"00C1} +\DeclareTextComposite{\^}{\ant@encoding}{A}{"00C2} +\DeclareTextComposite{\~}{\ant@encoding}{A}{"00C3} +\DeclareTextComposite{\"}{\ant@encoding}{A}{"00C4} +\DeclareTextComposite{\r}{\ant@encoding}{A}{"00C5} +\DeclareTextSymbol{\AE}{\ant@encoding}{"00C6} +\DeclareTextComposite{\c}{\ant@encoding}{C}{"00C7} +\DeclareTextComposite{\`}{\ant@encoding}{E}{"00C8} +\DeclareTextComposite{\'}{\ant@encoding}{E}{"00C9} +\DeclareTextComposite{\^}{\ant@encoding}{E}{"00CA} +\DeclareTextComposite{\"}{\ant@encoding}{E}{"00CB} +\DeclareTextComposite{\`}{\ant@encoding}{I}{"00CC} +\DeclareTextComposite{\'}{\ant@encoding}{I}{"00CD} +\DeclareTextComposite{\^}{\ant@encoding}{I}{"00CE} +\DeclareTextComposite{\"}{\ant@encoding}{I}{"00CF} +\DeclareTextSymbol{\DH}{\ant@encoding}{"00D0} +\DeclareTextComposite{\~}{\ant@encoding}{N}{"00D1} +\DeclareTextComposite{\`}{\ant@encoding}{O}{"00D2} +\DeclareTextComposite{\'}{\ant@encoding}{O}{"00D3} +\DeclareTextComposite{\^}{\ant@encoding}{O}{"00D4} +\DeclareTextComposite{\~}{\ant@encoding}{O}{"00D5} +\DeclareTextComposite{\"}{\ant@encoding}{O}{"00D6} +\DeclareTextSymbol{\texttimes}{\ant@encoding}{"00D7} +\DeclareTextSymbol{\O}{\ant@encoding}{"00D8} +\DeclareTextComposite{\`}{\ant@encoding}{U}{"00D9} +\DeclareTextComposite{\'}{\ant@encoding}{U}{"00DA} +\DeclareTextComposite{\^}{\ant@encoding}{U}{"00DB} +\DeclareTextComposite{\"}{\ant@encoding}{U}{"00DC} +\DeclareTextComposite{\'}{\ant@encoding}{Y}{"00DD} +\DeclareTextSymbol{\TH}{\ant@encoding}{"00DE} +\DeclareTextCommand{\SS}{\ant@encoding}{SS} +\DeclareTextSymbol{\ss}{\ant@encoding}{"00DF} +\DeclareTextComposite{\`}{\ant@encoding}{a}{"00E0} +\DeclareTextComposite{\'}{\ant@encoding}{a}{"00E1} +\DeclareTextComposite{\^}{\ant@encoding}{a}{"00E2} +\DeclareTextComposite{\~}{\ant@encoding}{a}{"00E3} +\DeclareTextComposite{\"}{\ant@encoding}{a}{"00E4} +\DeclareTextComposite{\r}{\ant@encoding}{a}{"00E5} +\DeclareTextComposite{\c}{\ant@encoding}{c}{"00E7} +\DeclareTextSymbol{\ae}{\ant@encoding}{"00E6} +\DeclareTextComposite{\`}{\ant@encoding}{e}{"00E8} +\DeclareTextComposite{\'}{\ant@encoding}{e}{"00E9} +\DeclareTextComposite{\^}{\ant@encoding}{e}{"00EA} +\DeclareTextComposite{\"}{\ant@encoding}{e}{"00EB} +\DeclareTextComposite{\`}{\ant@encoding}{i}{"00EC} +\DeclareTextComposite{\`}{\ant@encoding}{\i}{"00EC} +\DeclareTextComposite{\'}{\ant@encoding}{i}{"00ED} +\DeclareTextComposite{\'}{\ant@encoding}{\i}{"00ED} +\DeclareTextComposite{\^}{\ant@encoding}{i}{"00EE} +\DeclareTextComposite{\^}{\ant@encoding}{\i}{"00EE} +\DeclareTextComposite{\"}{\ant@encoding}{i}{"00EF} +\DeclareTextComposite{\"}{\ant@encoding}{\i}{"00EF} +\DeclareTextSymbol{\dh}{\ant@encoding}{"00F0} +\DeclareTextComposite{\~}{\ant@encoding}{n}{"00F1} +\DeclareTextComposite{\`}{\ant@encoding}{o}{"00F2} +\DeclareTextComposite{\'}{\ant@encoding}{o}{"00F3} +\DeclareTextComposite{\^}{\ant@encoding}{o}{"00F4} +\DeclareTextComposite{\~}{\ant@encoding}{o}{"00F5} +\DeclareTextComposite{\"}{\ant@encoding}{o}{"00F6} +\DeclareTextSymbol{\textdiv}{\ant@encoding}{"00F7} +\DeclareTextSymbol{\o}{\ant@encoding}{"00F8} +\DeclareTextComposite{\`}{\ant@encoding}{u}{"00F9} +\DeclareTextComposite{\'}{\ant@encoding}{u}{"00FA} +\DeclareTextComposite{\^}{\ant@encoding}{u}{"00FB} +\DeclareTextComposite{\"}{\ant@encoding}{u}{"00FC} +\DeclareTextComposite{\'}{\ant@encoding}{y}{"00FD} +\DeclareTextSymbol{\th}{\ant@encoding}{"00FE} +\DeclareTextComposite{\"}{\ant@encoding}{y}{"00FF} +%</UT1|T1> +% \end{macrocode} +% +% \subsection{Latin Extended A} +% +% \begin{macrocode} +%<*UT1|T1> +%<!T1>\DeclareTextComposite{\=}{\ant@encoding}{A}{"0100} +%<!T1>\DeclareTextComposite{\=}{\ant@encoding}{a}{"0101} +\DeclareTextComposite{\u}{\ant@encoding}{A}{"0102} +\DeclareTextComposite{\u}{\ant@encoding}{a}{"0103} +\DeclareTextComposite{\k}{\ant@encoding}{A}{"0104} +\DeclareTextComposite{\k}{\ant@encoding}{a}{"0105} +\DeclareTextComposite{\'}{\ant@encoding}{C}{"0106} +\DeclareTextComposite{\'}{\ant@encoding}{c}{"0107} +\DeclareTextComposite{\v}{\ant@encoding}{C}{"0108} +\DeclareTextComposite{\v}{\ant@encoding}{c}{"0109} +\DeclareTextComposite{\v}{\ant@encoding}{D}{"010E} +\DeclareTextComposite{\v}{\ant@encoding}{d}{"010F} +\DeclareTextSymbol{\DJ}{\ant@encoding}{"0110} +\DeclareTextSymbol{\dj}{\ant@encoding}{"0111} +%<!T1>\DeclareTextComposite{\=}{\ant@encoding}{E}{"0112} +%<!T1>\DeclareTextComposite{\=}{\ant@encoding}{e}{"0113} +%<!T1>\DeclareTextComposite{\u}{\ant@encoding}{E}{"0114} +%<!T1>\DeclareTextComposite{\u}{\ant@encoding}{e}{"0115} +%<!T1>\DeclareTextComposite{\.}{\ant@encoding}{E}{"0116} +%<!T1>\DeclareTextComposite{\.}{\ant@encoding}{e}{"0117} +\DeclareTextComposite{\k}{\ant@encoding}{E}{"0118} +\DeclareTextComposite{\k}{\ant@encoding}{e}{"0119} +\DeclareTextComposite{\v}{\ant@encoding}{E}{"011A} +\DeclareTextComposite{\v}{\ant@encoding}{e}{"011B} +%<!T1>\DeclareTextComposite{\V}{\ant@encoding}{G}{"010C} +%<!T1>\DeclareTextComposite{\v}{\ant@encoding}{g}{"010D} +\DeclareTextComposite{\u}{\ant@encoding}{G}{"011E} +\DeclareTextComposite{\u}{\ant@encoding}{g}{"011F} +%<*!T1> +\DeclareTextComposite{\.}{\ant@encoding}{G}{"0120} +\DeclareTextComposite{\.}{\ant@encoding}{g}{"0121} +\DeclareTextComposite{\c}{\ant@encoding}{G}{"0122} +\DeclareTextComposite{\c}{\ant@encoding}{g}{"0123} +\DeclareTextComposite{\^}{\ant@encoding}{H}{"0124} +\DeclareTextComposite{\^}{\ant@encoding}{h}{"0125} +\DeclareTextComposite{\~}{\ant@encoding}{I}{"0128} +\DeclareTextComposite{\~}{\ant@encoding}{i}{"0129} +\DeclareTextComposite{\=}{\ant@encoding}{I}{"012A} +\DeclareTextComposite{\=}{\ant@encoding}{i}{"012B} +\DeclareTextComposite{\u}{\ant@encoding}{I}{"012C} +\DeclareTextComposite{\u}{\ant@encoding}{i}{"012D} +\DeclareTextComposite{\k}{\ant@encoding}{I}{"012E} +\DeclareTextComposite{\k}{\ant@encoding}{i}{"012F} +%</!T1> +\DeclareTextComposite{\.}{\ant@encoding}{I}{"0130} +%</UT1|T1> +%<!LGR>\DeclareTextSymbol{\i}{\ant@encoding}{"0131} +%<*UT1|T1> +\DeclareTextSymbol{\IJ}{\ant@encoding}{"0132} +\DeclareTextSymbol{\ij}{\ant@encoding}{"0133} +%<*!T1> +\DeclareTextComposite{\^}{\ant@encoding}{J}{"0134} +\DeclareTextComposite{\^}{\ant@encoding}{j}{"0135} +\DeclareTextComposite{\c}{\ant@encoding}{K}{"0136} +\DeclareTextComposite{\c}{\ant@encoding}{k}{"0137} +%</!T1> +\DeclareTextComposite{\'}{\ant@encoding}{L}{"0139} +\DeclareTextComposite{\'}{\ant@encoding}{l}{"013A} +%<!T1>\DeclareTextComposite{\c}{\ant@encoding}{L}{"013B} +%<!T1>\DeclareTextComposite{\c}{\ant@encoding}{l}{"013C} +\DeclareTextComposite{\v}{\ant@encoding}{L}{"013D} +\DeclareTextComposite{\v}{\ant@encoding}{l}{"013E} +\DeclareTextSymbol{\L}{\ant@encoding}{"0141} +\DeclareTextSymbol{\l}{\ant@encoding}{"0142} +\DeclareTextComposite{\'}{\ant@encoding}{N}{"0143} +\DeclareTextComposite{\'}{\ant@encoding}{n}{"0144} +%<!T1>\DeclareTextComposite{\c}{\ant@encoding}{N}{"0145} +%<!T1>\DeclareTextComposite{\c}{\ant@encoding}{n}{"0146} +\DeclareTextComposite{\v}{\ant@encoding}{N}{"0147} +\DeclareTextComposite{\v}{\ant@encoding}{n}{"0148} +\DeclareTextSymbol{\NG}{\ant@encoding}{"014A} +\DeclareTextSymbol{\ng}{\ant@encoding}{"014B} +%<*!T1> +\DeclareTextComposite{\=}{\ant@encoding}{O}{"014C} +\DeclareTextComposite{\=}{\ant@encoding}{o}{"014D} +\DeclareTextComposite{\u}{\ant@encoding}{O}{"014E} +\DeclareTextComposite{\u}{\ant@encoding}{o}{"014F} +%</!T1> +\DeclareTextComposite{\H}{\ant@encoding}{O}{"0150} +\DeclareTextComposite{\H}{\ant@encoding}{o}{"0151} +\DeclareTextSymbol{\OE}{\ant@encoding}{"0152} +\DeclareTextSymbol{\oe}{\ant@encoding}{"0153} +\DeclareTextComposite{\'}{\ant@encoding}{R}{"0154} +\DeclareTextComposite{\'}{\ant@encoding}{r}{"0155} +%<!T1>\DeclareTextComposite{\c}{\ant@encoding}{R}{"0156} +%<!T1>\DeclareTextComposite{\c}{\ant@encoding}{r}{"0157} +\DeclareTextComposite{\v}{\ant@encoding}{R}{"0158} +\DeclareTextComposite{\v}{\ant@encoding}{r}{"0159} +\DeclareTextComposite{\'}{\ant@encoding}{S}{"015A} +\DeclareTextComposite{\'}{\ant@encoding}{s}{"015B} +%<!T1>\DeclareTextComposite{\^}{\ant@encoding}{S}{"015C} +%<!T1>\DeclareTextComposite{\^}{\ant@encoding}{s}{"015D} +\DeclareTextComposite{\c}{\ant@encoding}{S}{"015E} +\DeclareTextComposite{\c}{\ant@encoding}{s}{"015F} +\DeclareTextComposite{\v}{\ant@encoding}{S}{"0160} +\DeclareTextComposite{\v}{\ant@encoding}{s}{"0161} +\DeclareTextComposite{\c}{\ant@encoding}{T}{"0162} +\DeclareTextComposite{\c}{\ant@encoding}{t}{"0163} +\DeclareTextComposite{\v}{\ant@encoding}{T}{"0164} +\DeclareTextComposite{\v}{\ant@encoding}{t}{"0165} +%<*!T1> +\DeclareTextComposite{\~}{\ant@encoding}{U}{"0168} +\DeclareTextComposite{\~}{\ant@encoding}{u}{"0169} +\DeclareTextComposite{\=}{\ant@encoding}{U}{"016A} +\DeclareTextComposite{\=}{\ant@encoding}{u}{"016B} +\DeclareTextComposite{\u}{\ant@encoding}{U}{"016C} +\DeclareTextComposite{\u}{\ant@encoding}{u}{"016D} +\DeclareTextComposite{\r}{\ant@encoding}{U}{"016E} +\DeclareTextComposite{\r}{\ant@encoding}{u}{"016F} +%</!T1> +\DeclareTextComposite{\H}{\ant@encoding}{U}{"0170} +\DeclareTextComposite{\H}{\ant@encoding}{u}{"0171} +%<*!T1> +\DeclareTextComposite{\k}{\ant@encoding}{U}{"0172} +\DeclareTextComposite{\k}{\ant@encoding}{u}{"0173} +\DeclareTextComposite{\^}{\ant@encoding}{W}{"0174} +\DeclareTextComposite{\^}{\ant@encoding}{w}{"0175} +\DeclareTextComposite{\^}{\ant@encoding}{Y}{"0176} +\DeclareTextComposite{\^}{\ant@encoding}{y}{"0177} +%</!T1> +\DeclareTextComposite{\"}{\ant@encoding}{Y}{"0178} +\DeclareTextComposite{\'}{\ant@encoding}{Z}{"0179} +\DeclareTextComposite{\'}{\ant@encoding}{z}{"017A} +\DeclareTextComposite{\.}{\ant@encoding}{Z}{"017B} +\DeclareTextComposite{\.}{\ant@encoding}{z}{"017C} +\DeclareTextComposite{\v}{\ant@encoding}{Z}{"017D} +\DeclareTextComposite{\v}{\ant@encoding}{z}{"017E} +%</UT1|T1> +% \end{macrocode} +% +% \subsection{Latin Extended B} +% +% \begin{macrocode} +%<*UT1> +\DeclareTextSymbol{\textflorin}{\ant@encoding}{"0192} +\DeclareTextComposite{\=}{\ant@encoding}{Y}{"0232} +\DeclareTextComposite{\=}{\ant@encoding}{y}{"0233} +%</UT1> +% \end{macrocode} +% +% \subsection{Spacing modifier letters} +% +% This area is used once again to map some text commands for ASCII-styled +% accents, originally defined in the TS1 encoding. +% +% \begin{macrocode} +%<*UT1> +\DeclareTextSymbol{\textasciicaron}{\ant@encoding}{"02C7} +\DeclareTextSymbol{\textasciibreve}{\ant@encoding}{"02D8} +\DeclareTextSymbol{\textacutedbl}{\ant@encoding}{"02DD} +%</UT1> +% \end{macrocode} +% +% \subsection{Thai} +% +% \begin{macrocode} +%<*UT1> +\DeclareTextSymbol{\textbaht}{\ant@encoding}{"0E3F} +%</UT1> +% \end{macrocode} +% +% \subsection{General punctuation} +% +% \begin{macrocode} +\DeclareTextSymbol{\textcompwordmark}{\ant@encoding}{"200C} +%<UT1>\DeclareTextSymbol{\textbardbl}{\ant@encoding}{"2016} +%<UT1>\DeclareTextSymbol{\textdagger}{\ant@encoding}{"2020} +%<UT1>\DeclareTextSymbol{\textdaggerdbl}{\ant@encoding}{"2021} +%<UT1>\DeclareTextSymbol{\textbullet}{\ant@encoding}{"2022} +%<UT1|LGR>\DeclareTextSymbol{\textperthousand}{\ant@encoding}{"2030} +%<UT1>\DeclareTextSymbol{\textpertenthousand}{\ant@encoding}{"2031} +%<UT1|T1>\DeclareTextSymbol{\guilsinglleft}{\ant@encoding}{"2039} +%<UT1|T1>\DeclareTextSymbol{\guilsinglright}{\ant@encoding}{"203A} +\DeclareTextSymbol{\textendash}{\ant@encoding}{"2013} +\DeclareTextSymbol{\textemdash}{\ant@encoding}{"2014} +\DeclareTextSymbol{\textquoteleft}{\ant@encoding}{"2018} +\DeclareTextSymbol{\textquoteright}{\ant@encoding}{"2019} +%<UT1|T1>\DeclareTextSymbol{\quotesinglbase}{\ant@encoding}{"201A} +\DeclareTextSymbol{\textquotedblleft}{\ant@encoding}{"201C} +\DeclareTextSymbol{\textquotedblright}{\ant@encoding}{"201D} +%<!LGR>\DeclareTextSymbol{\quotedblbase}{\ant@encoding}{"201E} +%<UT1>\DeclareTextSymbol{\textreferencemark}{\ant@encoding}{"203B} +%<UT1>\DeclareTextSymbol{\textinterrobang}{\ant@encoding}{"203D} +%<UT1>\DeclareTextSymbol{\textlquill}{\ant@encoding}{"2045} +%<UT1>\DeclareTextSymbol{\textrquill}{\ant@encoding}{"2046} +% \end{macrocode} +% +% \subsection{Currency symbols} +% +% \begin{macrocode} +%<*UT1> +\DeclareTextSymbol{\textcolonmonetary}{\ant@encoding}{"20A1} +\DeclareTextSymbol{\textlira}{\ant@encoding}{"20A4} +\DeclareTextSymbol{\textnaira}{\ant@encoding}{"20A6} +\DeclareTextSymbol{\textpeso}{\ant@encoding}{"20A7} +\DeclareTextSymbol{\textwon}{\ant@encoding}{"20A9} +\DeclareTextSymbol{\textdong}{\ant@encoding}{"20AB} +%</UT1> +%<UT1|LGR>\DeclareTextSymbol{\texteuro}{\ant@encoding}{"20AC} +%<UT1>\DeclareTextSymbol{\textguarani}{\ant@encoding}{"20B2} +% \end{macrocode} +% +% \subsection{Combining diacritical marks for symbols} +% +% \begin{macrocode} +%<UT1>\DeclareTextSymbol{\textbigcircle}{\ant@encoding}{"20DD} +\DeclareTextCommand{\textcircled}{\ant@encoding}[1]{{% + \ooalign{% + \hfil \raise .07ex\hbox {\upshape#1}\hfil \crcr + \char 79 % '117 = "4F + }% +}} +% \end{macrocode} +% +% \subsection{Letterlike symbols} +% +% \begin{macrocode} +%<*UT1> +\DeclareTextSymbol{\textcelsius}{\ant@encoding}{"2103} +%</UT1> +%<UT1|T2A>\DeclareTextSymbol{\textnumero}{\ant@encoding}{"2116} +%<*UT1> +\DeclareTextSymbol{\textcircledP}{\ant@encoding}{"2117} +\DeclareTextSymbol{\textrecipe}{\ant@encoding}{"211E} +\DeclareTextSymbol{\textservicemark}{\ant@encoding}{"2120} +\DeclareTextSymbol{\texttrademark}{\ant@encoding}{"2122} +\DeclareTextSymbol{\textohm}{\ant@encoding}{"2126} +\DeclareTextSymbol{\textmho}{\ant@encoding}{"2127} +\DeclareTextSymbol{\textestimated}{\ant@encoding}{"212E} +%</UT1> +% \end{macrocode} +% +% \subsection{Arrows} +% +% \begin{macrocode} +%<*UT1> +\DeclareTextSymbol{\textleftarrow}{\ant@encoding}{"2190} +\DeclareTextSymbol{\textrightarrow}{\ant@encoding}{"2191} +\DeclareTextSymbol{\textuparrow}{\ant@encoding}{"2192} +\DeclareTextSymbol{\textdownarrow}{\ant@encoding}{"2193} +%</UT1> +% \end{macrocode} +% +% \subsection{Mathematical Operators} +% +% \begin{macrocode} +%<*UT1> +\DeclareTextSymbol{\textminus}{\ant@encoding}{"2212} +\DeclareTextSymbol{\textsurd}{\ant@encoding}{"221A} +%</UT1> +%<UT1|T2A>\DeclareTextSymbol{\textlangle}{\ant@encoding}{"2329} +%<UT1|T2A>\DeclareTextSymbol{\textrangle}{\ant@encoding}{"232A} +% \end{macrocode} +% +% \subsection{Control Pictures} +% +% \begin{macrocode} +%<UT1|T1|T2A>\DeclareTextSymbol{\textvisiblespace}{\ant@encoding}{"2423} +% \end{macrocode} +% +% \subsection{Geometric Shapes} +% +% \begin{macrocode} +%<*UT1> +\DeclareTextSymbol{\textopenbullet}{\ant@encoding}{"25E6} +%</UT1> +% \end{macrocode} +% +% \subsection{Miscellaneous Symbols} +% +% \begin{macrocode} +%<*UT1> +\DeclareTextSymbol{\textmusicalnote}{\ant@encoding}{"266A} +%</UT1> +% \end{macrocode} +% +% \subsection{CJK Symbols and Punctuation} +% +% \begin{macrocode} +%<*UT1> +\DeclareTextSymbol{\textlbrackdbl}{\ant@encoding}{"301A} +\DeclareTextSymbol{\textrbrackdbl}{\ant@encoding}{"301B} +%</UT1> +% \end{macrocode} +% +% \subsection{Private use area} +% +% PUA characters are mapped according to the Adobe Glyph List. +% Don't use the following text commands, if your font really doesn't +% include the corresponding characters. +% +% \begin{macrocode} +%<UT1|T1|T2A>\DeclareTextSymbol{\j}{\ant@encoding}{"F6BE} +%<*UT1> +\DeclareTextSymbol{\textgravedbl}{\ant@encoding}{"F6D6} +\DeclareTextSymbol{\textdollaroldstyle}{\ant@encoding}{"F724} +\DeclareTextSymbol{\textzerooldstyle}{\ant@encoding}{"F730} +\DeclareTextSymbol{\textoneoldstyle}{\ant@encoding}{"F731} +\DeclareTextSymbol{\texttwooldstyle}{\ant@encoding}{"F732} +\DeclareTextSymbol{\textthreeoldstyle}{\ant@encoding}{"F733} +\DeclareTextSymbol{\textfouroldstyle}{\ant@encoding}{"F734} +\DeclareTextSymbol{\textfiveoldstyle}{\ant@encoding}{"F735} +\DeclareTextSymbol{\textsixoldstyle}{\ant@encoding}{"F736} +\DeclareTextSymbol{\textsevenoldstyle}{\ant@encoding}{"F737} +\DeclareTextSymbol{\texteightoldstyle}{\ant@encoding}{"F738} +\DeclareTextSymbol{\textnineoldstyle}{\ant@encoding}{"F739} +\DeclareTextSymbol{\textcentoldstyle}{\ant@encoding}{"F7A2} +%</UT1> +% \end{macrocode} +% +% Again, capital accents are mapped according to older Adobe +% specifications and their real placement in Adobe's fonts. +% +% \begin{macrocode} +%<*UT1> +\DeclareTextCommand{\capitalogonek}{\ant@encoding}[1] + {{\ooalign{\null#1\crcr\hidewidth\noocpchar{"EFF1}\hidewidth}}} +\DeclareTextCommand{\capitalcedilla}{\ant@encoding}[1] + {{\ooalign{\null#1\crcr\hidewidth\noocpchar{"EFF2}\hidewidth}}} +\DeclareTextAccent{\capitalgrave}{\ant@encoding}{"F6CE} +\DeclareTextAccent{\capitalacute}{\ant@encoding}{"F6C9} +\DeclareTextAccent{\capitalcircumflex}{\ant@encoding}{"EFF7} +\DeclareTextAccent{\capitaltilde}{\ant@encoding}{"EFF5} +\DeclareTextAccent{\capitaldieresis}{\ant@encoding}{"F6CB} +\DeclareTextAccent{\capitalhungarumlaut}{\ant@encoding}{"F6CF} +\DeclareTextAccent{\capitalring}{\ant@encoding}{"EFF3} +\DeclareTextAccent{\capitalcaron}{\ant@encoding}{"F6CA} +\DeclareTextAccent{\capitalbreve}{\ant@encoding}{"EFEE} +\DeclareTextAccent{\capitalmacron}{\ant@encoding}{"F6D0} +\DeclareTextAccent{\capitaldotaccent}{\ant@encoding}{"EFED} +%</UT1> +% \end{macrocode} +% +% \subsection{Final operations} +% +% Finally undefine +\ant@encoding+. +% +% \begin{macrocode} +\let\ant@encoding\@undefined +% \end{macrocode} +%</UT1|T1|T2A|LGR> +% +% \Finale +% +\endinput +%% +%% End of file `antenc.dtx'. diff --git a/Master/texmf-dist/source/lambda/antomega/antenc.ins b/Master/texmf-dist/source/lambda/antomega/antenc.ins new file mode 100644 index 00000000000..a8c41ad7732 --- /dev/null +++ b/Master/texmf-dist/source/lambda/antomega/antenc.ins @@ -0,0 +1,62 @@ +%% +%% This file generates various encoding definition files from the file +%% antenc.dtx by means of the LaTeX program docstrip. This program +%% eliminates almost all commented lines thus speeding up the loading +%% of the code. Documentation may be obtained by running LaTeX on +%% the source file antomega.dtx. +%% ---------------------------------------- +%% +%% This file is distributed in the hope that it will be useful, +%% but WITHOUT ANY WARRANTY; without even the implied warranty of +%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +%% +%% IMPORTANT NOTICE: +%% +%% Copyright 2005 Alexej Kryukov +%% All rights reserved. +%% +%% Permission is granted to distribute verbatim copies of this file +%% together with antomega.dtx. +%% +%% No other permissions to copy or distribute this file in any form +%% are granted and in particular no permission to modify its contents. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\batchfile{antenc.ins} +\def\fileversion{0.8} +\def\filedate{7 May 2005} +\input docstrip.tex +\preamble + +This file is a part of the ANTOMEGA project version \fileversion +----------------------------------------------------- + +It may be distributed under the terms of the LaTeX Project Public +License, as described in lppl.txt in the base LaTeX distribution. +Either version 1.0 or, at your option, any later version. +Copyright (C) 2001 -- 2005 by Alexej Kryukov +Please report errors to: A.M. Kryukov <basileia@yandex.ru> + +\endpreamble + +\keepsilent + +\Msg{*** Generating the extension package antomega.sty ***} + +\generateFile{ut1enc-antomega.def}{t}{\from{antenc.dtx}{UT1}} +\generateFile{t1enc-antomega.def}{t}{\from{antenc.dtx}{T1}} +\generateFile{t2aenc-antomega.def}{t}{\from{antenc.dtx}{T2A}} +\generateFile{lgrenc-antomega.def}{t}{\from{antenc.dtx}{LGR}} + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* Now move the encoding definition files where Omega } +\Msg{* can find them } +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/lambda/antomega/antomega.dtx b/Master/texmf-dist/source/lambda/antomega/antomega.dtx new file mode 100644 index 00000000000..682c4c81898 --- /dev/null +++ b/Master/texmf-dist/source/lambda/antomega/antomega.dtx @@ -0,0 +1,1915 @@ +% \iffalse meta comment +% This file is a part of the ANTOMEGA project version \fileversion +% ----------------------------------------------------- +% +% It may be distributed under the terms of the LaTeX Project Public +% License, as described in lppl.txt in the base LaTeX distribution. +% Either version 1.0 or, at your option, any later version. +% Copyright (C) 2001 -- 2005 by Alexej Kryukov +% Please report errors to: A.M. Kryukov <basileia@yandex.ru> +% +% \fi +% +% \iffalse +% +%<*dtx> +\ProvidesFile{antomega.dtx} +%</dtx> +% +%<antomega>\NeedsTeXFormat{LaTeX2e} +%<antomega>\ProvidesPackage{antomega} +%<antomega>\RequirePackage{keyval,ifthen,calc} +% +%<driver>\ProvidesFile{antomega.dtx} +% +%<*driver> +\documentclass{ltxdoc} +\GetFileInfo{antomega.dtx} +\def\fileversion{0.8} +\def\filedate{7 May 2005} +\def\docdate{7 May 2005} + +\newcommand*\file[1]{\texttt{#1}} +\title{Typesetting multilingual documents with ANTOMEGA + \thanks{This file + has version number \fileversion, last + revised on \filedate.}} +\author{Alexej Kryukov} + +\begin{document} + \maketitle + \DocInput{antomega.dtx} + \DocInput{antenc.dtx} +\end{document} +%</driver> +% +% \fi +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \changes{v0.2}{2002/10/12}{First public release} +% \changes{v0.5}{2002/11/14}{Added new interface for loading translation +% processes} +% \changes{v0.5}{2002/11/14}{The documentation is totally rewritten using +% the doc package} +% \changes{v0.5}{2002/11/14}{Many bugs fixed} +% \changes{v0.6}{2003/03/18}{Added new translation processes in order +% to make antomega more independent from the original `omega' +% package} +% \changes{v0.6}{2003/03/18}{Added new language switching commands, +% compatible with the Babel package. Old commands are still +% supported for backwards compatibility purposes.} +% \changes{v0.61}{2003/03/27}{Fixed a bug in uni1f00.def} +% \changes{v0.7}{2003/08/30}{Keyval syntax is now used for package +% options. Old options are still supported for backwards +% compatibility.} +% \changes{v0.7}{2003/08/30}{Now it is possible to specify `input=utf-8' +% in options of the whole package. This option will be inherited +% by commands used to load specific languages.} +% \changes{v0.7}{2003/08/30}{Added support files for new languages: German +% (thanks to Olaf Dietrich <olaf.dietrich@ikra.med.uni-muenchen.de>), +% Polish (thanks to Mariusz Wodzicki <wodzicki@Math.Berkeley.EDU>) +% and Latvian (thanks to Dmitry Ivanov <dimss@solutions.lv>).} +% \changes{v0.7}{2003/08/30}{Added special version of the file `hyphen.cfg', +% allowing to load character codes for specific Unicode ranges +% into Lambda format.} +% \changes{v0.7}{2003/08/30}{Removed options `localtoc' and `nolocaltoc'. +% These options were used to control if language markup should +% be included into the arguments of `contentsline'. This is not +% needed now, because language markup commands are written +% into *.toc files separately, exactly as in Babel.} +% \changes{v0.7}{2003/08/30}{Various minor improvements and bugfixes} +% \changes{v0.8}{2004/04/30}{Bugfix: `local@hyphenmins' produced an +% extra space in the output.} +% \changes{v0.8}{2004/04/30}{Bugfix: An OCP was assigned to a wrong slot +% in German and Polish language support files -- now fixed.} +% \changes{v0.8}{2005/01/08}{Bugfix: fixed a bug which caused a language name +% to be reproduced in the output while using that name as a name of a +% language switching environment.} +% \changes{v0.8}{2005/01/08}{Added an (experimental) support file for Latin +% language.} +% \changes{v0.8}{2005/01/09}{Bugfix: the `specials' key didn't work as +% expected.} +% \changes{v0.8}{2005/04/15}{Bugfix: the correct language environment was not +% restored after exiting from `otherlanguage'.} +% \changes{v0.8}{2005/04/17}{Language switching commands (i.~e. +% `seletlanguage' and `otherlanguage' now cause locale dependent +% captions to be displayed in the current language. So the concept +% of having a special set of extras, applicable only for the +% `background' document language (inherited from older omega.sty) +% is abandoned.} +% \changes{v0.8}{2005/04/17}{ANTOMEGA now prevents some special characters, +% produced by text commands, from placing back to the OCP stack. To +% implement this feature, I had to add a set of encoding definition +% files, designed specially for ANTOMEGA. In particular this means +% ANTOMEGA is no longer dependent from ut1enc.def.} +% \changes{v0.8}{2005/04/17}{uppercase.otp (now called uppercase-dflt.otp) +% is incorporated into ANTOMEGA. OCP-based conversion to uppercase +% is now used by default, since Omega incorrectly performs the +% standard (uccode/lccode based) conversion in the UTF-8 mode.} +% \changes{v0.8}{2005/05/03}{Added an experimental support for Scientific +% Word/Scientific Workplace.} +% \changes{v0.8}{2005/05/07}{Workaround for the `accent' command: now all +% standard commands used to type accents are redefined to produce +% a character followed by a Unicode combining accent. Later this +% sequence may be processed by OCP and turned back to an accented +% character. So arguments of such commands may be processed by OCP +% and correctly converted from user's input encoding to Unicode.} +% +% \MakeShortVerb{\|} +% +% \begin{abstract} +% Antomega is a language support package for Lambda, based on the +% original \file{omega.sty} file. However, it provides some additional +% functionality. +% \end{abstract} +% +% \section{Introduction} +% Moving from \LaTeX\ to $\Omega$ is always difficult for an average +% user, since the $\Omega$ distribution doesn't include any language support +% package which could be used as a Babel replacement. The \file{omega.sty} +% file, version of 1999/06/01, was released by the $\Omega$ developers as +% a first attempt to make something like `Omega-Babel', but, unfortunately, +% this work was not finished. Moreover, more recent versions of +% \file{omega.sty} are suitable only for testing some right-to-left languages, +% but not for regular work. So I prepared my own package, based on the original +% \file{omega.sty}, which fixes some bugs and provides some additional +% functionality. +% +% \section{Installation instructions} +% +% First, download and install the $\Omega$ binaries or ensure that your \TeX\ +% installation already includes them. Unpack the archive file with ANTOMEGA +% and move all files to the appropriate directories (for example, +% everything in \file{omega/lambda/} to |$$texmf/omega/lambda|, everything +% in \file{omega/ocp/} to |$$texmf/omega/ocp|, and so on. If you already +% have a file named \file{language.dat} in |$$texmf/omega/lambda/base|, +% replace it with the provided file (called language.dat.sample) in case you +% want to get correct hyphenation for Russian and/or Greek. +% +% Note that ANTOMEGA still needs some files from the original $\Omega$ +% distribution. The most important file is \file{ut1omlgc.fd}. +% Unfortunately, this file was not included into some recent +% $\Omega$ distributions. I can neither include +% it into my package as is (this might cause name clashes) nor rename +% it (since I can't rename the default font and the default encoding +% vector used in $\Omega$). So in case you haven't this file already +% installed you have to install it separately. Either take it from +% an older \TeX\ distribution or from the $\Omega$ CVS tree. +% +% There are also some additional translation processes (useful mainly +% for typesetting polytonic (classical) Greek), which you may want to +% take from old $\Omega$. +% +% Of course, after installing new files you have to update the \TeX\ +% file names database. On teTeX or fpTeX systems this is performed +% with |texconfig rehash| or |mktexlsr| commands. On MikTeX you +% can do the same via a menu item. Refer yourself to a special +% section (\ref{sw}) of this manual, in case you are interested in +% installing and configuring ANTOMEGA under Scientific Word/Scientific +% Workplace. +% +% \subsection{Deprecated files} +% +% If you are upgrading from an older version of ANTOMEGA, you can +% safely delete the following deprecated files: +% +% \begin{itemize} +% +% \item In |$$TEXMF/omega/unidata|: +% +% \begin{itemize} +% +% \item \file{uni0300.def} (now called \file{uni0370.def}; +% +% \item \file{grahyph.tex} and \file{grmhyph.tex} (replaced with +% \file{ograhyph.tex} and \file{ogrmhyph.tex} correspondingly according +% to the naming convention proposed by Dimitrios Filippou); +% +% \end{itemize} +% +% \item In |$$TEXMF/omega/hyphen|: \file{greek2uni.tex} and +% \file{greek2omega.tex} (no longer needed); +% +% \item In |$$TEXMF/omega/otp/antomega|: \file{latin2punct.otp} and +% \file{cyr2punct.otp} (replaced with files \file{tex2punct.otp}, +% \file{babel2punct.otp} and \file{babel2ru.otp}); +% +% \item In |$$TEXMF/omega/ocp/antomega|: \file{latin2punct.ocp} and +% \file{cyr2punct.ocp} (replaced with files \file{tex2punct.ocp}, +% \file{babel2punct.ocp} and \file{babel2ru.ocp}). +% +% \end{itemize} +% +% \subsection{Updating Lambda format} +% +% With older versions of ANTOMEGA you could do without updating Lambda +% format (at least if you work only with Latin-based languages), but now +% this operation is strongly recommended for the following +% reasons. As you probably know, the core of the \LaTeX\ system consists of +% \file{latex.ltx} and some other files which should be loaded into format. +% Since there are no special versions of those files for $\Omega$, +% the same files are used also for Lambda format. +% +% Of course, files designed for \LaTeX\ not always work well for +% $\Omega$. For example, in order to get correct hyphenation for a text +% in a specific language, we have to set |\catcode| (which should be equal +% to 11 or 12) and |\lccode| for all characters used in that language. +% For correct conversion to uppercase we need also |\uccode| values. +% In standard \LaTeX\ these values are defined for all 256 characters +% of the encoding table, but with $\Omega$ we need similar definitions for +% a wider range of Unicode characters, and it would be nice to have these +% definitions loaded into format. Some people achieve this effect putting +% tables of such codes together with their hyphenation patterns. +% +% However, this approach causes some problems. First of all, it is very +% inconvenient to set |\catcode|, |\lccode| and |\uccode| with primitive +% commands for each letter from a large amount of characters. Antomega defines +% some commands (namely |\makeletter|, |\makeucletter|, |\makelcletter| +% and |\makesameletter|), allowing to simplify this process. It also +% provides definition tables for some Unicode ranges, written using +% these commands. However, in order to load these tables into the format +% the commands they use should be already known to \file{iniomega}. +% +% There is another problem, even more important. The file responsible for +% loading hyphenation patterns is called \file{hyphen.cfg}. This file +% is part of the \file{babel} package, but some language-specific formats +% like cslatex, platex etc. include their own versions of \file{hyphen.cfg}. +% Note that those versions are mainly incompatible with ANTOMEGA. The +% official $\Omega$ distribution also included its own simplified version +% of \file{hyphen.cfg}, but this file was removed from the most recent versions. +% That's why original babel's version of the file is also often loaded +% into Lambda format. +% +% \emph{This} \file{hyphen.cfg} is mainly compatible with $\Omega$, +% although it defines a lot of specific commands not needed if we are not +% planning to use Babel itself. However, in last versions it has the following +% feature: hyphenation patterns are loaded inside a \TeX\ group. This +% means that hyphenation rules itself will be saved, but character codes +% loaded together with them will be forgotten immediately after +% processing hyphenation rules. That's correct, because character codes +% required by specific hyphenation patterns may not match codes normally used +% by \LaTeX. For example, Russian hyphenation patterns usually have the +% koi8 encoding, which is not directly used by \LaTeX. So we need a specific +% table of codes in order to reencode these patterns into an internal +% font encoding supported by \TeX. Once reencoding is performed, these +% character codes are no longer needed. +% +% However, this means that hyphenation patterns is an incorrect place +% to store character codes for Unicode symbols, because it is very +% possible that our settings will take no effect. And even if they are +% saved (in case we have old Omega's \file{hyphen.cfg} installed) the +% result may be rather unexpected, because $\Omega$ has no way to +% determine which codes are necessary only for processing specific +% hyphenation patterns, and which should really be stored for further +% use. +% +% That's why ANTOMEGA now includes its own version of \file{hyphen.cfg} +% and special file \file{antomega.cfg} which contains references to +% tables of character codes for all supported Unicode ranges. This +% version of \file{hyphen.cfg} first defines commands |\makeletter|, +% |\makelcletter|, |\makeucletter| and |\makesameletter|. After that +% it loads \file{antomega.cfg}. So if you created a custom table of +% character codes for your script, you may load it via +% \file{antomega.cfg} instead of including it into your hyphenation patterns. +% Of course you can also prevent codes for a specific Unicode range +% from loading into your format. For example, if you never use polytonic +% Greek, comment out the following line in \file{antomega.cfg}: +% +% \begin{verbatim} +% \input{uni1f00.def} +% \end{verbatim} +% +% Only after loading character codes into format, hyphenation patterns +% are processed. As well as in Babel, this procession is done inside a +% group, and so all character codes defined here should be used only +% for converting your patterns into another encoding. +% +% Note that, while old Omega's \file{hyphen.cfg} resides in +% |$TEXMF/omega/lambda/config|, ANTOMEGA installes its version of the file +% into |$TEXMF/omega/lambda/antomega|. This prevents name clashes, but, +% in case you have old \file{hyphen.cfg} installed, you have to remove +% it manually to ensure that the correct version will be found and loaded +% by \file{iniomega}. Only after that you may rebuild the \file{lambda} +% format file. On teTeX or fpTeX systems you have to run +% +% \begin{verbatim} +% fmtutil --byfmt lambda +% \end{verbatim} +% +% See section~\ref{sw} for information on doing that with True\TeX{}/ +% Scientific Word systems. +% +% It is easy to test if you have the correct \file{hyphen.cfg} version loaded +% into your format: just take a look at any |.log| file produced by \file{lambda}. +% In case everything is correct it should contain the following text at the +% beginning: ``Antomega and hyphenation patters for\ldots loaded''. +% Now you should be able to typeset you documents with ANTOMEGA. +% +% \section{Loading ANTOMEGA} +% One of the main advantages of \file{omega.sty} was using different commands +% for setting the main language of the document and for loading additional +% languages. ANTOMEGA preserves this feature, using the same |\background| +% and |\load| commands. So if you want to prepare an English +% document including some Greek text, you can do it by the same way as +% with \file{omega.sty}, for example: +% +% \begin{verbatim} +% \usepackage{antomega} +% \background{english} +% \load{greek} +% \end{verbatim} +% +% However, \file{omega.sty} needs two different files for each language: +% first of them (with the *.bgd extension) is used by the |\background| +% command, and second (with the *.lay extension) by the |\load| command. +% Of course, these two files usually have very similar code. ANTOMEGA +% fixes this problem: both |\background| and |\load| commands load the same +% language definition file with the .ldf extension, but process it in a +% different way. +% +% \section{Typesetting in different languages} +% +% \file{omega.sty} supported only a limited set of languages, which included +% |usenglish|, |french| and |greek|. ANTOMEGA supports these languages too, +% but separate support for |usenglish| is no longer available. Instead you +% can load |english| with options |dialect=british| or |dialect=american|, +% for example: +% +% \begin{verbatim} +% \background[dialect=american]{english} +% \end{verbatim} +% +% I added support files for Russian, and later also for German, Polish +% and Latvian. +% +% Generally speaking, it is not +% difficult to provide support for a new language, since language definition +% files are quite independent from the core package, and so you can write +% a file with definitions for your language without changing anything +% in \file{antomega.sty}, using the existing .ldf files as an example. +% +% In the original \file{omega} package we could use for switching to +% another language either an environment with the same +% name as a name of your language, or +% (for small pieces of text) the |\local<$language>| macro, there +% |<$language>| is your language name. These commands had to be defined in +% the language definition file. For example, \file{usenglish.bgd} +% defined the |usenglish| environment and the |\localusenglish| command. +% +% These commands are still supported in ANTOMEGA. However, beginning +% from the version 0.6 ANTOMEGA provides new language switching +% commands, compatible with the Babel package. So you can use the +% |\selectlanguage| and |\foreignlanguage| macros and the |otherlanguage| +% environment exactly as you did with Babel. This means that your old +% documents may be transferred to $\Omega$ with minimal changes. +% +% \section{Loading languages with options} +% +% As well as the original \file{omega.sty} file, ANTOMEGA requires the \file{keyval} +% package. So all commands used for loading languages may be executed with +% different parameters, which may take different values. Each language has +% its own set of such parameters. However, some options are suitable for all +% supported languages. The most important of them are |input| and |output| +% parameters, which replace the \file{inputenc} and \file{fontenc} packages, +% used in standard \LaTeX{}. +% +% Beginning from ANTOMEGA v.~0.7 the same \file{keyval} syntax is also +% supported for options of the \file{antomega} package itself. +% +% \subsection{The ``input'' parameter} +% +% Of course, this parameter is language-specific. However, there are two +% values, which are always supported: |utf-8| and |ucs-2|. The later really +% means ``no conversion'', since ucs-2 is the native format for $\Omega$. +% Since these two encodings are suitable for most languages, they may be +% specified in options of the ANTOMEGA package, for example: +% +% \begin{verbatim} +% \usepackage[input=utf-8]{antomega} +% \end{verbatim} +% +% The |\load| and |\background| commands also support this option, +% but they may additionally accept other values for it, depending +% from the language you want to load. For example, if you want to type an +% English document with some international symbols encoded in iso-8859-1, +% you may put the following line into your \LaTeX{} preamble: +% +% \begin{verbatim} +% \background[input=iso-8859-1]{english} +% \end{verbatim} +% +% \subsection{The ``output'' parameter} +% +% For this parameter you can use one of the following values: |unicode|, +% |omega| and |tex|. |unicode| is used by default. Note that the |omlgc| +% font, distributed with $\Omega$, is not fully compatible with Unicode. +% For example, it has a specific encoding for Latin ligatures and +% general punctuation. So you have to set |output=omega| if you want +% to use this font, and |output=unicode| if you have another font, more +% strictly conforming the Unicode standard. You my want to set also +% |output=tex| if you prefer using 8-bit fonts in standard \TeX{} encodings +% (T1 for Western languages, T2A for Russian, LGR for Greek). +% +% For example, if you want to typeset your English text with the standard +% EC fonts, but haven't any corresponding font for Greek, you may use the +% following preamble: +% +% \begin{verbatim} +% \documentclass{article} +% \usepackage{antomega} +% \background[output=tex]{english} +% \load[output=omega]{greek} +% \end{verbatim} +% +% \subsection{The ``shorthands'' parameter} +% +% Since ANTOMEGA tries to completely reproduce the functionality of +% the Babel package, it also supports combinations with the |"| character +% (\emph{shorthands}) which have a special meaning in Babel. Note +% that ANTOMEGA always uses translation processes to emulate Babel's +% behavior, and so it never really makes |"| an active character. The +% set of supported shorthands differs from language to language, but +% there is a minimal set available by default. For example, you may +% use |"<| and |">| for guillemots. You may turn off support for Babel +% shorthands by setting `shorthands=off', and, of course, you may explicitly +% enable it (`shortahnds=on'). Currently this parameter is supported for +% all languages except Greek. +% +% \section{Translation processes} +% +% Since the last $\Omega$ versions are suitable only for testing +% purposes, they don't include many useful files, originally +% provided by J.~Plaice ang Y.~Haralambous. Particularly some $\Omega$ +% translation processes were removed, and some are incorrect (e. g. +% don't correspond to the |omlgc| font). That's why \file{antomega} +% provides its own set of |ocp| and |otp| files, which makes it +% rather independent from $\Omega$'s texmf part. +% +% For conversion to different encodings I added some new .otp and .ocp +% files, which (I hope) work correctly. Beginning from v.~0.6 +% ANTOMEGA includes improved translation processes for conversion from +% some standard iso-8859 and windows-125* codepages to Unicode. +% However, some original |.ocp| files are still necessary for \file{antomega} +% to work. There also some rarely used (but still supported in \file{antomega}) +% files, not present neither in \file{antomega} nor in the most recent $\Omega$ +% distributions. +% +% \section{Selecting fonts with ANTOMEGA} +% +% Of course, it is not enough to set an input encoding for your language. +% You will need also a correct font matching your encoding. With +% ANTOMEGA you can select a font separately for each script you use. For +% example, it defines new commands |\westernrm|, |\westernsf| and |\westerntt|. +% So, if you want to use Computer Modern for English but prefer to +% keep standard omlgc for Greek, simply put the following +% line in your preamble: +% +% \begin{verbatim} +% \renewcommand{\westernrm}{cmr} +% \end{verbatim} +% +% In ANTOMEGA's language support files some similar commands for +% other scripts are defined. For example, \file{omega-russian.ldf} +% introduces |\russianrm|, and \file{omega-latvian.ldf}~--- +% |\balticrm|. Note that there is no need to define specific commands +% for Central European languages, because not only Unicode, but even +% T1 covers both Western and Central European character sets. +% +% Of course, you can write your own special packages to make selecting +% a new font a bit more easy. You can even use standard font selecting +% packages, but, in this case, you must load them \emph{after} ANTOMEGA +% itself and \emph{before} any language-specific commands. For example: +% +% \begin{verbatim} +% \usepackage{antomega} +% \usepackage{palatino} +% \background{english} +% \end{verbatim} +% +% \iffalse +%<*kernel> +% \fi +% +% \section{Using ANTOMEGA with MacKichan software products} +% +% \label{sw} +% Generally speaking, adapting MacKichan software products (like +% Scientific Word or Scientific Workplace) for non-Latin languages +% represents a not so trivial task. The problem is, that their shell +% (very powerful by itself) knows nothing about various input encodings, +% supported by \LaTeX, and so it can't take advantage of multilingual +% capabilities, provided by Babel. Instead, it represents any national +% characters, typed by user, in the form |\U{<hexadecimal Unicode index>}|. +% This representation is hardly legible for standard \LaTeX, because it +% is Unicode-based. That's why $\Omega$ is traditionally used for preparing +% multilingual documents with Scientific Word or Scientific Workplace. +% +% So, adapting ANTOMEGA (which is already distributed together with +% these software packages) to MacKichan shell is a very natural solution +% for those who want to get their text correctly typeset according to +% typographic rules used in their native languages. Preparing your Scientific +% products to use ANTOMEGA may be divided into two main stages: +% configuring your True\TeX{} installation (which lies in the background +% of Scientific Word/Scientific Workplace) and configuring the graphical +% front-end itself. +% +% \subsection{Configuring True\TeX} +% +% First, ensure you have ANTOMEGA v.~0.8 or above. If necessary, +% download the latest version from CTAN and copy the contents of +% all directories available in the downloaded package into the +% corresponding directories found in |TCITeX\Omega\|. +% +% Second, locate the file +% |TCITeX\Omega\Lambda\base\languages.dat.sample| and rename it +% to \file{languages.dat}. Edit this file to enable hyphenation +% patterns for your language. +% +% Now you have to rebuild the Lambda format. This operation is +% mandatory, because all default format files supplied with +% Scientific products are built without multilingual extensions +% provided by Babel, so that using ANTOMEGA with your default +% \file{lambda.oft} just will cause an error. This is also probably +% the hardest part, because True\TeX{}, unlike Mik\TeX{} or fp\TeX{}, +% provides no special tools allowing to call \file{iniomega} with +% desired parameters. However, to simplify this task, you can use the +% following batch script (call it, say, \file{runinilambda.bat}): +% +% \begin{verbatim} +% echo off +% setlocal +% set TEXMF=C:\sw50\TCITeX +% set TEXINPUTS=.;%TEXMF%/{omega,tex}// +% %TEXMF%\web2c\iniomega %TEXMF%\omega\lambda\config\lambda.ini +% endlocal +% \end{verbatim} +% +% Note that you can run this script from any location, but the +% resulting \file{lambda.oft} file must be placed into your +% |TCITeX\web2c\| directory. +% +% \subsection{Configuring the Scientific Word / Scientific Workplace shell} +% +% When you have done with updating Lambda format, you can start Scientific +% Word and create a new document (or load an existing one). To make its +% processing with Lambda possible, you should do the following: +% +% \begin{itemize} +% +% \item From the main menu bar, select `Typeset'---`Expert Settings'. +% The dialog box with several tabs will appear, where you should select +% the `DVI Format Settings' page, and then the `TeX Live Lambda' entry +% from the drop-down box. +% +% \item Go to the `Typeset'---`Options and packages' menu. +% Ensure that \file{sw2unicode}, \file{swtimes} and \file{fontenc} are +% \textbf{not} in the list of loaded packages. These packages are not +% needed, since their functuionality is completely incorporated by +% ANTOMEGA. +% +% \item From the same dialog box, click the `Go native' button. A dialog +% box with a multi-line input field will appear. Add the following line +% to that input field: +% +% \begin{verbatim} +% [input=sw,ffi=ligatures]{antomega} +% \end{verbatim} +% +% Note that the |ffi=ligatures| option is mandatory, since Times New +% Roman (the only Unicode font which is supported in the Scientific +% Word/Scientific Workplace distribution by default) hasn't some latin +% ligatures at the places ANTOMEGA expects to find them, so that enabling the +% corresponding translation process will result in missing glyphs in the +% output. Unfortunately, the default \file{ofm} files for Times New Roman also +% contain no information about ligature substitution, so that +% |ffi=ligatures| practically means `no ligatures at all' in this case. +% +% \item Go to `Typeset'---`Preamble' and input any number of |\background| +% and |\load| commands for the languages you are planning to use. +% +% \end{itemize} +% +% Now you should be able to compile your document with Lambda. +% +% \section{The ANTOMEGA code} +% +% \subsection{Handling identification codes for our files} +% +% Unlike in Babel, no tests if |\ProvidesFile| is already defined. +% Since \LaTeXe\ was released in 1994, and the $\Omega$ project +% started also in 1994, probably nobody will use $\Omega$ with the 2.09 +% format. +% +% \DescribeMacro{\ProvidesFile} +% We save the original definition of |\ProvidesFile| in +% |\ant@tempa| and restore it after we have stored the version of +% the file in |\toks8|. +% +% \begin{macrocode} +\let\ant@tempa\ProvidesFile +\def\ProvidesFile#1[#2 #3 #4]{% + \toks8{Antomega <#3> and hyphenation patterns for }% + \ant@tempa#1[#2 #3 #4]% + \let\ProvidesFile\ant@tempa} +% \end{macrocode} +% +% \DescribeMacro{\ProvidesLanguage} +% As an alternative for |\ProvidesFile| we define +% |\ProvidesLanguage| here to be used in the language definition +% files. +% +% \begin{macrocode} +\def\ProvidesLanguage#1{% + \begingroup + \catcode`\ 10 % + \@makeother\/% + \@ifnextchar[%] + {\@provideslanguage{#1}}{\@provideslanguage{#1}[]}} +\def\@provideslanguage#1[#2]{% + \wlog{Language: #1 #2}% + \expandafter\xdef\csname ver@#1.ldf\endcsname{#2}% + \endgroup} +\ProvidesFile{hyphen.cfg} + [2005/05/07 v0.8 + Taken from Babel language switching mechanism + and modified for Antomega] +% \end{macrocode} +% +% \iffalse +%</kernel> +%<*antomega> +% \fi +% +% \subsection{Handling $\Omega$CP files} +% +% \DescribeMacro{\LoadOCPByName} +% The macro |\LoadOCPByName| takes two arguments: an OCP file name +% (without extension) and an $\Omega$ command which will be used for +% loading this file. If the referenced .ocp file doesn't exist in user's +% system, \file{id.ocp} will be used instead. So it is possible to proceed +% with document processing, even if some .ocp files were not found. +% +% \begin{macrocode} +\def\LoadOCPByName#1#2{\IfFileExists{#2.ocp}{\ocp#1=#2}{ + \PackageWarning{antomega}{#2.ocp not found. + Identity will be used instead.}{} + \ocp#1=id}} +% \end{macrocode} +% +% Now we load some commonly used translation processes, using the +% macro |\LoadOCPByName|. +% +% \begin{macrocode} +\ocp\IdOCP=id +\LoadOCPByName{\BasicIsoUni}{uniutf2uni} +\LoadOCPByName{\BasicWinUni}{uniutf2uni} +\LoadOCPByName{\BasicUtfUni}{uniutf2uni} +\LoadOCPByName{\BasicTexUni}{tex2punct} +\LoadOCPByName{\BasicBabelUni}{babel2punct} +\LoadOCPByName{\BasicAccentsUni}{uni2accents} +\LoadOCPByName{\UniToOmega}{uni2omega} +\LoadOCPByName{\Oldstyle}{oldstyle} +\LoadOCPByName{\LatinUniToTex}{uni2t1} +% \end{macrocode} +% +% \file{uni2lig.ocp} is used for setting up Latin ligatures. However, +% the standard \TeX\ ligature mechanism should be a better choice, since +% using OCP for combinations like `fi' or `fl' may break hyphenation. So I +% provided a special |ffi| option which may be set either to `ocp' or to +% `ligatures'. Setting it to `ligatures' simply prevents the translation +% process from loading. Note that \file{uni2lig.ocp} is designed for pure +% Unicode fonts and it is never used, if |output| is set to `omega'. In this +% case you can't turn off processing ligatures via OCP, since the \file{omlgc} +% font doesn't contain any ligatures at all. +% +% \begin{macrocode} +\def\opt@ocp{ocp} +\def\opt@ligatures{ligatures} +\define@key{antomega}{ffi}[ocp]{% + \def\@tmpa{#1} + \ifx\@tmpa\opt@ocp% + \LoadOCPByName{\LatinUniToLig}{uni2lig} + \else\ifx\@tmpa\opt@ligatures% + \typeout{Antomega package option: ffi=ligatures} + \LoadOCPByName{\LatinUniToLig}{id} + \fi\fi +} +% \end{macrocode} +% +% The following option is deprecated and preserved for backwards compatibility +% only. Use `ffi=ligatures' instead. +% +% \begin{macrocode} +\DeclareOption{noffi}{\setkeys{antomega}{ffi=ligatures}} +% \end{macrocode} +% +% By default we use OCP for Latin ligatures in order to prevent MikTeX crashes. +% +% \begin{macrocode} +\setkeys{antomega}{ffi=ocp} +% \end{macrocode} +% +% Now we can define some standard OCP lists, useful generally +% for languages with Latin-based scripts. +% +% \DescribeMacro{\BasicTexOCP} This OCP list loads the default translation +% process for standard TeX ligatures and punctuation characters. +% +% \begin{macrocode} +\ocplist\BasicTexOCP= + \addbeforeocplist 1750 \BasicTexUni +\nullocplist +% \end{macrocode} +% +% \DescribeMacro{\BasicBabelOCP} This OCP list loads the default translation +% process for Babel-like shorthands. If you don't like them, set +% `shorthands=off' for your language. +% +% \begin{macrocode} +\ocplist\BasicBabelOCP= + \addbeforeocplist 2000 \BasicBabelUni +\nullocplist +% \end{macrocode} +% +% \DescribeMacro{\BasicAccentsOCP} This OCP list converts Unicode +% combining accents to \TeX-styled |\accent| commands. +% +% \begin{macrocode} +\ocplist\BasicAccentsOCP= + \addbeforeocplist 2250 \BasicAccentsUni +\nullocplist +% \end{macrocode} +% +% \DescribeMacro{\BasicInputUcsOCP} This is ANTOMEGA's default OCP +% list. It doesn't translate text to any other character set +% (so, sctually, does nothing). +% +% \begin{macrocode} +\ocplist\BasicInputUcsOCP= + \addbeforeocplist 500 \IdOCP +\nullocplist +% \end{macrocode} +% +% \DescribeMacro{\BasicInputUtfOCP} This OCP list should be +% used for utf-8 encoded texts. +% +% \begin{macrocode} +\ocplist\BasicInputUtfOCP= + \addbeforeocplist 500 \BasicUtfUni +\nullocplist +% \end{macrocode} +% +% \DescribeMacro{\BasicInputIsoOCP} This OCP list is intended for +% 8-bit texts using Latin ISO-8859-1 codepage, but note that +% it doesn't perform any real conversion, since ISO-8859-1 character +% codes are the same as in Unicode, and $\Omega$ automatically +% distinguishes 8-bit and 2-byte input. +% +% \begin{macrocode} +\ocplist\BasicInputIsoOCP= + \addbeforeocplist 500 \BasicIsoUni +\nullocplist +% \end{macrocode} +% +% \DescribeMacro{\BasicInputWinOCP} This OCP list is intended for +% 8-bit texts using Latin windows-1252 codepage. +% +% \begin{macrocode} +\ocplist\BasicInputWinOCP= + \addbeforeocplist 500 \BasicWinUni +\nullocplist +% \end{macrocode} +% +% The following OCP lists are used to convert a text to an +% $\Omega$ output. +% +% \DescribeMacro{\LatinUniOutOCP} A conversion to a Unicode +% font. The only operation which may be performed here is setting +% up the Latin ligatures. +% +% \begin{macrocode} +\ocplist\LatinUniOutOCP= + \addbeforeocplist 3500 \LatinUniToLig +\nullocplist +% \end{macrocode} +% +% \DescribeMacro{\LatinOmegaOutOCP} A conversion to the default +% omlgc font. Its encoding differs from Unicode, and so a +% special conversion routine is required. +% +% \begin{macrocode} +\ocplist\LatinOmegaOutOCP= + \addbeforeocplist 3500 \UniToOmega +\nullocplist +% \end{macrocode} +% +% \DescribeMacro{\LatinTexOutOCP} A conversion from Unicode +% to the T1 encoding. +% +% \begin{macrocode} +\ocplist\LatinTexOutOCP= + \addbeforeocplist 3500 \LatinUniToTex +\nullocplist +% \end{macrocode} +% +% \DescribeMacro{\OldstyleOCP} This OCP list converts ASCII +% digits to their oldstyle equivalents. Note that it is not +% compatible with the |omlgc| font. +% +% \begin{macrocode} +\ocplist\OldstyleOCP= + \addbeforeocplist 4000 \Oldstyle +\nullocplist +% \end{macrocode} +% +% The following key allows to set input encoding globally for the whole +% document instead of setting it separately for each language. Of course, +% from all the standard codepages only `utf-8' makes a sense in this context. +% `ucs-2' is also supported, but this encoding doesn't require any +% translation processes, because $\Omega$ uses it by default anyway. +% +% Beginning from ANTOMEGA~v.~0.8 you can also select `sw' to match a +% specific Unicode character representation, used in files generated +% by MacKichan software products. +% +% \begin{macrocode} +\let\BasicInputOCP\BasicInputUcsOCP + \define@key{antomega}{input}[ucs-2]{ + \def\@tmpa{#1}% + \ifx\@tmpa\opt@utf% + \let\BasicInputOCP\BasicInputUtfOCP% + \typeout{Antomega package option: input=utf-8} + \else\ifx\@tmpa\opt@sw% + \def\U##1{/QQ[##1]}% + \def\rmdefault{swtimes}% + \let\westernrm\rmdefault% + \LoadOCPByName{\BasicSWordUni}{sw2uni}% + \ocplist\BasicInputSWordOCP= + \addbeforeocplist 500 \BasicSWordUni + \nullocplist + \let\BasicInputOCP\BasicInputSWordOCP% + \typeout{Antomega package option: input=sw} + \else% + \let\BasicInputOCP\BasicInputUcsOCP% + \typeout{Antomega package option: input=ucs-2} + \fi} +% \end{macrocode} +% +% \DescribeMacro{\UppercaseOCP}. +% ANTOMEGA includes a special translation process, \file{uppercase-dflt.ocp}, +% based on the \file{uppercase.ocp} file, available in older $\Omega$ +% distribution, which may be used for lowercase to uppercase conversion. +% Although standard conversion rules, based on |\lccode| and |\uccode| +% settings, usually produce a better result, I have to use the OCP-based +% conversion by default, because $\Omega$ incorrectly processes some character +% codes in its UTF-8 mode. You can disable this feature by setting +% |uppercase=standard|. +% +% \begin{macrocode} +\LoadOCPByName{\Uppercase}{uppercase-dflt} +\ocplist\UppercaseOCP= + \addbeforeocplist 3000 \Uppercase +\nullocplist +\def\MakeUppercase#1{{\pushocplist\UppercaseOCP#1}} +\def\opt@standard{standard} +\define@key{antomega}{uppercase}[ocp]{ + \def\@tmpa{#1} + \ifx\@tmpa\opt@standard + \let\MakeUppercase\uppercase + \typeout{Antomega package option: use character codes} + \typeout{for conversion to Uppercase} + \fi} +% \end{macrocode} +% +% \DescribeMacro{\oldstylenums} +% This command supposes that our text font contains old style +% numerals and that they are mapped to their places in the +% Unicode Private Use area as defined in AGL. Don't use it +% with the |omlgc| font. +% +% \begin{macrocode} +\def\oldstylenums#1{{\pushocplist\OldstyleOCP#1}} +% \end{macrocode} +% +% \subsection{Encoding-independent commands for printing special characters} +% +% \DescribeMacro{\noocpchar} +% After expanding a command, Omega puts the result back into the OCP stack. +% If the result of expansion contains some characters, which have a +% special meaning in the \TeX{} system, they will be processed again, +% instead of typing into the output. So it is impossible e.~g. to +% use the |\%| command in order to obtain the percent sign, because the +% character produced by that command is recognized anyway as a comment mark +% after processing it via OCP. The same problem affects character codes +% less than 0x20 (used in most 8-bit encodings), since these characters +% usually have no |\catcode| assigned, and so are treated as invalid +% in the input. +% +% Previously some hacks were used to prevent this effect. For example, +% in the \file{omlgc} some ASCII characters are reproduced once again +% in the 0x80--0x0F range, not used in Unicode, so that e.~g. the |\%| +% command could actually refer to a slot different from the `real' percent +% sign. For 8-bit fonts we had to assign code 12 to some characters +% in order to make them `valid'. Older ANTOMEGA versions had a special +% option, |specials|, used to control such situations. +% +% However, this option is deprecated (and removed) now. Instead, we +% just define a special command which puts |\clearocplists| before +% |\char| in order to prevent the result from placing into the OCP +% stack\ldots +% +% \begin{macrocode} +\def\noocpchar#1{{\clearocplists\char#1}} +% \end{macrocode} +% +% \ldots{}and then apply it to the most commonly used special characters. +% +% \begin{macrocode} +\def\#{\noocpchar{"23}} +\def\%{\noocpchar{"25}} +\def\&{\noocpchar{"26}} +% \end{macrocode} +% +% \subsection{Omega-specific commands to handle \TeX{} font encodings} +% +% \DescribeMacro{\uniencoding} +% It is necessary to declare a special encoding for Omega-specific +% 2-byte fonts. $\Omega$ developers called it |UT1|. +% +% \begin{macrocode} +\def\uniencoding{UT1} +% \end{macrocode} +% +% \DescribeMacro{\ant@load@encoding} +% The concept of current font encoding doesn't really matter for ANTOMEGA. +% Although some text commands traditionally used in \LaTeX\ are allowed +% in the input, they just should be always mapped to the same Unicode +% codepoints, and it is a task of translation processes to translate +% them to the current font encoding. +% +% So the only reason why we have to declare font encodings at all is that +% Omega needs to know the current encoding in order to select an +% appropriate font. That's why \file{antomega} no longer loads any encoding +% definition files. Instead, whatever encoding is requested, +% \file{antomega} always declares it itself, and then loads the same +% list of mappings between text commands and Unicode codepoints. +% +% \begin{macrocode} +\def\ant@load@encoding#1{% + \edef\ant@encodingfile{% + \lowercase{\def\noexpand\ant@encodingfile{#1enc-antomega.def}}}% + \ant@encodingfile + \InputIfFileExists{\ant@encodingfile}{}{% + \DeclareFontEncoding{#1}{}{} + \PackageWarning{antomega}{The \ant@encodingfile\ file was not found. + The #1 encoding was defined by antomega.}{} + } + \let\ant@encodingfile\@undefined +} +\ant@load@encoding{\uniencoding} +\def\encodingdefault{\uniencoding} +% \end{macrocode} +% +% Since T1 is loaded into the Lambda format, we have to redefine it now. +% +% \begin{macrocode} +\ant@load@encoding{T1} +% \end{macrocode} +% +% \subsection{Font issues} +% +% The omlgc font is not perfect, but it is included into all standard +% \TeX\ distributions. So, it will be used by default. +% +% \begin{macrocode} +\def\rmdefault{omlgc} +% \end{macrocode} +% +% \file{Antomega} stores its default font names in the |\westernrm|, +% |\westernsf| and |\westerntt| variables, since |\rmdefault|, |\sfdefault| +% and |\ttdefault| will be redefined each time we switch to a new +% language. +% +% \begin{macrocode} +\ifx\westernrm\@undefined\let\westernrm=\rmdefault\fi +\ifx\westernsf\@undefined\let\westernsf=\sfdefault\fi +\ifx\westerntt\@undefined\let\westerntt=\ttdefault\fi +% \end{macrocode} +% +% Generally speaking, with $\Omega$ we should use translation processes +% rather than active characters. So I made |textasciitilde| an +% `other symbol'. +% +% \begin{macrocode} +\catcode`\~=12 +% \end{macrocode} +% +% \iffalse +%</antomega> +%<*kernel> +% \fi +% +% \subsection{Language-specific commands which should be loaded +% into the Lambda format} +% +% Again, no tests for |\language| and |\newlanguage|, because $\Omega$ +% should be always compatible with \TeX\ version~3.0. +% +% \begin{macrocode} +\countdef\last@language=19 +% \end{macrocode} +% +% \DescribeMacro{\addlanguage} +% To add languages to \TeX's memory plain \TeX\ version~3.0 +% supplies |\newlanguage|. However, a new macro is defined here, +% because the original |\newlanguage| was defined to be |\outer|. +% +% \begin{macrocode} +\def\addlanguage{\alloc@9\language\chardef\@cclvi} +% \end{macrocode} +% +% \DescribeMacro{\adddialect} +% The macro |\adddialect| can be used to add the name of a dialect +% or variant language, for which an already defined hyphenation +% table can be used. +% +% \begin{macrocode} +\def\adddialect#1#2{% + \global\chardef#1#2\relax + \wlog{\string#1 = a dialect from \string\language#2}} +% \end{macrocode} +% +% \DescribeMacro{\iflanguage} +% Users might want to test (in a private package for instance) +% which language is currently active. For this we provide a test +% macro, |\iflanguage|, that has three arguments. It checks +% whether the first argument is a known language. If so, it +% compares the first argument with the value of |\language|. Then, +% depending on the result of the comparison, it executes either the +% second or the third argument. +% +% \begin{macrocode} +\def\iflanguage#1{% + \expandafter\ifx\csname l@#1\endcsname\relax + \PackageWarning{antomega}{#1 is not a known language.}% + \else + \ifnum\csname l@#1\endcsname=\language + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi% + \fi} +% \end{macrocode} +% +% \subsection{Handling character codes} +% +% \iffalse +%</kernel> +%<*kernel|antomega> +% \fi +% +% We can't get correct hyphenation for our 2-byte characters without +% setting |\catcode|, |\lccode| and |\uccode| for each of them. +% The following commands simplify making such definitions. +% +% \DescribeMacro{\makeletter} This command takes two arguments, the first +% being an uppercase character and the second a corresponding lowercase +% character, and sets |\lccode| and |\uccode| for both characters. +% +% \begin{macrocode} +\ifx\makeletter\@undefined + \def\makeletter#1#2{% + \ifnum\catcode#2=11\else\catcode#2=12 \fi + \ifnum\catcode#1=11\else\catcode#1=12 \fi + \uccode#1=#1 \uccode#2=#1% + \lccode#1=#2 \lccode#2=#2} +\fi +% \end{macrocode} +% +% \DescribeMacro{\makelcletter} This command takes two arguments, the first +% being an uppercase character and the second a corresponding lowercase +% character, and sets |\lccode| and |\uccode| for the lowercase character. +% +% \begin{macrocode} +\ifx\makelcletter\@undefined + \def\makelcletter#1#2{% + \ifnum\catcode#2=11\else\catcode#2=12 \fi + \uccode#2=#1% + \lccode#2=#2} +\fi +% \end{macrocode} +% +% \DescribeMacro{\makeucletter} This command takes two arguments, the first +% being an uppercase character and the second a corresponding lowercase +% character, and sets |\lccode| and |\uccode| for the uppercase character. +% +% \begin{macrocode} +\ifx\makeucletter\@undefined + \def\makeucletter#1#2{% + \ifnum\catcode#1=11\else\catcode#1=12 \fi + \uccode#1=#1% + \lccode#1=#2} +\fi +% \end{macrocode} +% +% \DescribeMacro{\makesameletter} This command takes two arguments, both +% of them being uppercase or lowercase characters, +% and sets |\lccode| and |\uccode| for character 1 equal to character 2. +% +% \begin{macrocode} +\ifx\makesameletter\@undefined + \def\makesameletter#1#2{% + \ifnum\catcode#1=11\else\catcode#1=12 \fi + \uccode#1=\uccode#2% + \lccode#1=\lccode#2} +\fi +% \end{macrocode} +% +% \iffalse +%</kernel|antomega> +%<*config> +% \fi +% +% The following code should be written into \file{antomega.cfg}. You may +% edit that file depending from which Unicode ranges you really need. +% +% \begin{macrocode} +\input{uni0100.def} % Latin Extended-A +\input{uni0370.def} % Greek Basic +\input{uni0400.def} % Cyrillic +\input{uni1f00.def} % Greek Extended +% \end{macrocode} +% +% \iffalse +%</config> +%<*kernel> +% \fi +% +% In \file{hyphen.cfg} first we test if \file{antomega.cfg} exists, and +% then load it. +% +% \begin{macrocode} +\openin1 = antomega.cfg +\ifeof1 + \message{I couldn't find the file antomega.cfg.\space + Codes for Unicode characters will not be loaded.} +\else + \input{antomega.cfg} +\fi +\closein1 +% \end{macrocode} +% +% \iffalse +%</kernel> +%<*antomega> +% \fi +% +% \subsection{Warnings and error messages} +% +% \DescribeMacro{\ant@nocodes} +% This command is used to show a warning message if $\Omega$ can't find +% a file with lccodes/uccodes for the specified Unicode range. +% +% \begin{macrocode} +\providecommand*{\ant@nocodes}[3]{% + \PackageWarningNoLine{antomega}% + {No file was found with symbol codes\MessageBreak + for the #2 range #3.\MessageBreak + You may proceed, but your #1 texts\MessageBreak + probably will not be correctly hyphenated.}} +% \end{macrocode} +% +% \DescribeMacro{\ant@nopatterns} +% This macro is based on Babel's |\@nopatterns| command. +% However I removed test if |\PackageWarningNoLine| is defined, +% because probably nobody will try to build \LaTeX~2.09 based +% format for $\Omega$. +% +% \begin{macrocode} +\providecommand*{\ant@nopatterns}[1]{% + \PackageWarningNoLine{antomega}% + {No hyphenation patterns were loaded for\MessageBreak + the language `#1'\MessageBreak + I will use the patterns loaded for \string\language=0 + instead}} +% \end{macrocode} +% +% \DescribeMacro{\ant@nolang} +% This macro defines the error message which will be displayed +% if the requested language definition file was not found. +% +% \begin{macrocode} +\providecommand*{\ant@nolang}[1]{% + \PackageWarningNoLine{antomega}% + {Couldn't find file omega-#1.ldf!!}} +% \end{macrocode} +% +% \subsection{Different corrections for standard \LaTeX\ commands} +% +% With $\Omega$ we usually have to control all commands which print +% some strings (for example, to headers/footers), so that they always +% apply correct translation processes and correct font to the text they +% produce. However, modifying these commands may be inconvenient if we +% have to use some packages which also try to redefine them. If you +% want to prevent \file{antomega} from modifying these commands, you +% may control its behavior by setting the |localmarks| option either +% to `on' or to `off'. +% +% \DescribeMacro{\local@marks} +% This command is executed every time we are switching to a new +% language. It applies all rules specific for this language to +% the text, which is written to headers/footers. +% +% \begin{macrocode} +\def\opt@enabled{on} +\def\opt@disabled{off} +\def\opt@tex{tex} +\def\opt@omega{omega} +\def\opt@unicode{unicode} +\def\opt@utf{utf-8} +\def\opt@ucs{ucs-2} +\def\opt@sw{sw} +\define@key{antomega}{localmarks}[on]{% + \def\@tmpa{#1} + \ifx\@tmpa\opt@enabled + \def\local@marks##1{% + \def\markboth####1####2{% + \begingroup% + \let\label\relax \let\index\relax \let\glossary\relax% + \unrestored@protected@xdef\@themark% + {{\foreignlanguage{##1}{####1}}{\foreignlanguage{##1}{####2}}}% + \@temptokena \expandafter{\@themark}% + \mark{\the\@temptokena}% + \endgroup% + \if@nobreak\ifvmode\nobreak\fi\fi}% + \def\markright####1{% + \begingroup% + \let\label\relax \let\index\relax \let\glossary\relax% + \expandafter\@markright\@themark{\foreignlanguage{##1}{####1}}% + \@temptokena \expandafter{\@themark}% + \mark{\the\@temptokena}% + \endgroup% + \if@nobreak\ifvmode\nobreak\fi\fi}% + \def\@markright####1####2####3{\@temptokena{####1}% + \unrestored@protected@xdef\@themark{{\the\@temptokena}% + {{####3}}}}} + \else\ifx\@tmpa\opt@disabled + \def\local@marks#1{} + \typeout{Antomega package option: localmarks=off} + \fi\fi +} +% \end{macrocode} +% +% The following option is preserved for backwards compatibility only. +% Use `localmarks=off' instead. +% +% \begin{macrocode} +\DeclareOption{nolocalmarks}{\setkeys{antomega}{localmarks=off}} +% \end{macrocode} +% +% By default string conversion in headers and footers is enabled. +% +% \begin{macrocode} +\setkeys{antomega}{localmarks=on} +% \end{macrocode} +% +% \DescribeMacro{\oaddto} +% This command was taken from the Babel package and renamed in +% order to avoid conflicts. It is useful for modifying +% some language-specific commands, predefined in *.lfd files. +% +% \begin{macrocode} +\def\oaddto#1#2{% + \ifx#1\@undefined + \def#1{#2}% + \else + \ifx#1\relax + \def#1{#2}% + \else + {\toks@\expandafter{#1#2}% + \xdef#1{\the\toks@}}% + \fi + \fi +} +% \end{macrocode} +% +% \subsection{Loading languages} +% +% Standard commands for loading languages +% (the core of the antomega package). +% +% \DescribeMacro{\background} This command requires one arguments which +% must be a language name and loads it as the first language for +% our document. +% +% The optional argument is a set of parameters and their values +% for the given language. +% +% \begin{macrocode} +\newcommand{\background}[2][]{% + \IfFileExists{omega-#2.ldf}% + {\input{omega-#2.ldf}% + \AtBeginDocument{\selectlanguage[#1]{#2}}% + \newenvironment{#2}[1][]{\begin{otherlanguage}[####1]{#2}}% + {\end{otherlanguage}}% + \expandafter\newcommand\csname local#2\endcsname[2][]{% + \foreignlanguage[####1]{#2}{####2}}}% + {\ant@nolang{#2}}% +} +% \end{macrocode} +% +% \DescribeMacro{\load} This command takes one argument which +% must be a language name and loads it in addition to the first +% language. +% +% The optional argument is a set of parameters and their values +% for the given language. +% +% Both |\background| and |\load| commands are used to define +% a |\local<$language>| command and a |<$language>| environment. +% Commands and environments with these names were standard way +% to switch languages in the original \file{omega} package, as well as +% in \file{antomega} until the version 0.6. Now they are defined +% in terms of standard babel-like commands. +% +% \begin{macrocode} +\newcommand{\load}[2][]{\IfFileExists{omega-#2.ldf} + {\input{omega-#2.ldf}\setkeys{#2}{#1}% + \newenvironment{#2}[1][]{\begin{otherlanguage}[####1]{#2}}% + {\end{otherlanguage}} + \expandafter\newcommand\csname local#2\endcsname[2][]{% + \foreignlanguage[####1]{#2}{####2}}} + {\ant@nolang{#2}}} +% \end{macrocode} +% +% \subsection{Default values for language-specific settings} +% +% First we define some standard values for the punctuation +% commands, used by \file{lat2punct.otp}. The command names +% are self-explanative. +% +% \begin{macrocode} +\def\common@punctuation{% + \def\InitialThinSpace{\nobreak\hskip.2em\ignorespaces}% + \def\ExplicitHyphen{\nobreak\-\nobreak\hskip\z@skip}% + \def\AllowHyphenation{\hskip\z@skip}% + \def\DisableLigature{\textormath{\nobreak\discretionary{-}{}% + {\kern.03em}\allowhyphens}{}}% + \def\CompoundWordMarkWithBreakpoint{\nobreak-\hskip\z@skip}% + \def\CompoundWordMarkNoBreakpoint{\textormath{\leavevmode\hbox{-}}{-}}% + \def\LeftDoubleQuotationMark{^^^^201c}% + \def\RightDoubleQuotationMark{^^^^201d}% + \def\LeftPointingDoubleAngleQuotationMark{^^^^00ab}% + \def\RightPointingDoubleAngleQuotationMark{^^^^00bb}% + \def\GermanLeftDoubleQuotationMark{^^^^201e}% + \def\GermanRightDoubleQuotationMark{^^^^201c}% + \def\QuestionMark{?}% + \def\ExclamationMark{!}% + \def\InvertedQuestionMark{^^^^00bf}% + \def\InvertedExclamationMark{^^^^00a1}% + \def\Semicolon{;}% + \def\Colon{:}% + \def\NonBreakingSpace{\leavevmode\nobreak\ }} +% \end{macrocode} +% +% \DescribeMacro{\common@font} +% The |\common@font| macro will be used at the beginning of the +% document and also each time we should return to the default +% fonts (e. g. before switching to another language). +% +% \begin{macrocode} +\def\common@font{\normalfont\fontfamily{\westernrm}% + \fontencoding{\uniencoding}\selectfont% + \let\rmdefault=\westernrm\let\sfdefault=\westernsf% + \let\ttdefault=\westerntt\let\encodingdefault=\uniencoding} +% \end{macrocode} +% +% \DescribeMacro{\common@language} +% This macro is used for enabling default hyphenation patterns. +% +% \begin{macrocode} +\def\common@language{% + \protect\language=0% + \lefthyphenmin=2\righthyphenmin=3} +% \end{macrocode} +% +% \DescribeMacro{\noextrascurrent} +% \DescribeMacro{\originalOmega} +% The |\originalOmega| macro is used to switch all settings, +% which could be modified by the language switching commands, +% to their default values. +% +% \begin{macrocode} +\def\noextrascurrent#1{\@ifundefined{noextras@#1}{}% + {\csname noextras@#1\endcsname}} +\def\originalOmega{\@ifundefined{languagename}{}% + {\noextrascurrent{\languagename}}% + \common@language% + \common@punctuation% + \common@font% + \clearocplists% + } +\AtBeginDocument{\originalOmega} +% \end{macrocode} +% +% \subsection{Language switching commands} +% +% In case we have Babel's \file{hyphen.cfg} loaded into format, +% |\foreignlanguage| is already defined, and so we have to unset +% it first. +% +% \begin{macrocode} +\@ifundefined{foreignlanguage}{}% + {\let\foreignlanguage\@undefined} +% \end{macrocode} +% +% \DescribeMacro{\foreignlanguage} +% This macro works exactly as Babel's |\foreignlanguage| command, +% but it takes 3 arguments. The first (optional) argument allows +% to set any options, defined in the support file for the +% given language. The second argument is languages's name itself, +% and the third~--- the piece of text, which should be typeset in +% this language. +% +% \begin{macrocode} +\newcommand{\foreignlanguage}[3][]{% + \@ifundefined{inlineextras@#2}{\ant@nolang{#2}}{% + {\def\languagename{#2}% + \setkeys{#2}{#1}% + \csname inlineextras@#2\endcsname#3}% +}} +% \end{macrocode} +% +% |\selectlanguage| have to be redefined too. +% +% \begin{macrocode} +\@ifundefined{selectlanguage}{}% + {\let\selectlanguage\@undefined} +% \end{macrocode} +% +% \DescribeMacro{\selectlanguage} +% This macro works exactly as Babel's |\selectlanguage| command, +% but it takes 2 arguments. The second argument is languages's name +% itself, and the first (optional) allows to set any options, defined +% in the support file for the given language. +% +% \begin{macrocode} +\newcommand{\selectlanguage}[2][]{% + \@ifundefined{blockextras@#2}{\ant@nolang{#2}}{% + \def\ant@pop@language{% + \ant@set@language{\languagename}% + \let\emp@langname\undefined}% + \aftergroup\ant@pop@language% + \setkeys{#2}{#1}% + \ant@set@language{#2}% +}} +\newcommand{\ant@set@language}[1]{% + \select@language{#1}% + \if@filesw% + \protected@write\@auxout{}{\protect\select@language{#1}}% + \addtocontents{toc}{\protect\select@language{#1}}% + \addtocontents{lof}{\protect\select@language{#1}}% + \addtocontents{lot}{\protect\select@language{#1}}% + \fi% +} +\@ifundefined{select@language}{}% + {\let\select@language\@undefined} +\newcommand{\select@language}[1]{% + \originalOmega% + \edef\languagename{#1}% + \csname blockextras@#1\endcsname% +} +\let\ant@pop@language\relax +% \end{macrocode} +% +% We have to redefine the |otherlanguage| environment as well. +% +% \begin{macrocode} +\@ifundefined{otherlanguage}{}% + {\let\otherlanguage\@undefined} +\@ifundefined{endotherlanguage}{}% + {\let\endotherlanguage\@undefined} +% \end{macrocode} +% +% \DescribeEnv{otherlanguage} +% This environment works exactly as Babel's |otherlanguage| environment. +% The only difference is that is has an optional argument allowing +% to set any options, defined in the .ldf file. +% +% \begin{macrocode} +\newenvironment{otherlanguage}[2][]{% + \selectlanguage[#1]{#2}% + }{} +% \end{macrocode} +% +% \iffalse +%</antomega> +%<*patterns> +% \fi +% +% \subsection{Handling hyphenation rules} +% +% \DescribeEnv{hyphenrules} +% The environment \texttt{hyphenrules} can be used to select +% \emph{just} the hyphenation rules. This environment does +% \emph{not} change |\languagename| and when the hyphenation rules +% specified were not loaded it has no effect. +% +% \begin{macrocode} +\def\hyphenrules#1{% + \expandafter\ifx\csname l@#1\endcsname\@undefined + \@nolanerr{#1}% + \else + \language=\csname l@#1\endcsname\relax + \fi +} +\def\endhyphenrules{} +% \end{macrocode} +% +% \DescribeMacro{\set@hyphenmins} +% This macro sets the values of |\lefthyphenmin| and +% |\righthyphenmin|. It expects two values as its argument. +% +% \begin{macrocode} +\def\set@hyphenmins#1#2{\lefthyphenmin#1\righthyphenmin#2} +% \end{macrocode} +% +% \iffalse +%</patterns> +%<*antomega> +% \fi +% +% \DescribeMacro{\local@hyphenmins} +% This macro takes 3 arguments: a language name and default +% |\lefthyphenmin| and |\righthyphenmin| values for that language. +% First it tests if |\<language>hyphenmins| is already defined (i.~e. +% some |\lefthyphenmin| and |\righthyphenmin| values were specified in +% the hyphenation patterns loaded into format), and either executes this +% command, or sets both variables to the provided default values. +% +% \begin{macrocode} +\newcommand{\local@hyphenmins}[3]{% + \@ifundefined{#1hyphenmins}% + {\lefthyphenmin=#2\righthyphenmin=#3}% + {\csname #1hyphenmins\endcsname}% +} +% \end{macrocode} +% +% \iffalse +%</antomega> +%<*patterns> +% \fi +% +% \subsection{Loading hyphenation rules into format} +% +% \DescribeMacro{\process@line} +% Each line in the file \file{language.dat} is processed by +% |\process@line| after it is read. The first thing this macro does +% is to check wether the line starts with \texttt{=}. +% When the first token of a line is an \texttt{=}, the macro +% |\process@synonym| is called; otherwise the macro +% |\process@language| will continue. +% +% \begin{macrocode} +\def\process@line#1#2 #3/{% + \ifx=#1 + \process@synonym#2 / + \else + \process@language#1#2 #3/% + \fi +} +% \end{macrocode} +% +% \DescribeMacro{\process@synonym} +% This macro takes care of the lines which start with an +% \texttt{=}. It needs an empty token register to begin with. +% +% \begin{macrocode} +\toks@{} +\def\process@synonym#1 /{% + \ifnum\last@language=\m@ne +% \end{macrocode} +% +% When no languages have been loaded yet the name following the +% \texttt{=} will be a synonym for hyphenation register 0. +% +% \begin{macrocode} + \expandafter\chardef\csname l@#1\endcsname0\relax + \wlog{\string\l@#1=\string\language0} +% \end{macrocode} +% +% As no hyphenation patterns are read in yet, we can not yet set +% the hyphenmin paramaters. Therefor a commands to do so is stored +% in a token register and executed when the first pattern file has +% been processed. +% +% \begin{macrocode} + \toks@\expandafter{\the\toks@ + \expandafter\let\csname #1hyphenmins\expandafter\endcsname + \csname\languagename hyphenmins\endcsname}% + \else +% \end{macrocode} +% +% Otherwise the name will be a synonym for the language loaded last. +% +% \begin{macrocode} + \expandafter\chardef\csname l@#1\endcsname\last@language + \wlog{\string\l@#1=\string\language\the\last@language} +% \end{macrocode} +% +% We also need to copy the hyphenmin paramaters for the synonym. +% +% \begin{macrocode} + \expandafter\let\csname #1hyphenmins\expandafter\endcsname + \csname\languagename hyphenmins\endcsname + \fi + } +% \end{macrocode} +% +% \DescribeMacro{\process@language} +% The macro |\process@language| is used to process a non-empty line +% from the `configuration file'. It has three arguments, each +% delimited by white space. The third argument is optional, +% therefore a |/| character is expected to delimit the last +% argument. The first argument is the `name' of a language, the +% second is the name of the file that contains the patterns. The +% optional third argument is the name of a file containing +% hyphenation exceptions. +% +% The first thing to do is call |\addlanguage| to allocate a +% pattern register and to make that register `active'. +% +% \begin{macrocode} +\def\process@language#1 #2 #3/{% + \expandafter\addlanguage\csname l@#1\endcsname + \expandafter\language\csname l@#1\endcsname + \def\languagename{#1}% +% \end{macrocode} +% +% Then the `name' of the language that will be loaded now is +% added to the token register |\toks8|. and finally +% the pattern file is read. +% +% \begin{macrocode} + \global\toks8\expandafter{\the\toks8#1, }% +% \end{macrocode} +% +% For some hyphenation patterns it is needed to load them with a +% specific font encoding selected. This can be specified in the +% file \file{language.dat} by adding for instance `\texttt{:T1}' to +% the name of the language. The macro |\ant@get@enc| extracts the +% font encoding from the language name and stores it in +% |\ant@hyph@enc|. +% +% \begin{macrocode} + \begingroup + \ant@get@enc#1:\@@@ + \ifx\ant@hyph@enc\@empty + \else + \fontencoding{\ant@hyph@enc}\selectfont + \fi +% \end{macrocode} +% +% Some pattern files contain assignments to |\lefthyphenmin| and +% |\righthyphenmin|. \TeX\ does not keep track of these +% assignments. Therefor we try to detect such assignments and +% store them in the |\<langvar>hyphenmins| macro. When no +% assignments were made we provide a default setting. +% +% \begin{macrocode} + \lefthyphenmin\m@ne +% \end{macrocode} +% +% Some pattern files contain changes to the |\lccode| en |\uccode| +% arrays. Such changes should remain local to the language; +% therefor we process the pattern file in a group; the |\patterns| +% command acts globally so it's effect will be remembered. +% +% \begin{macrocode} + \input #2\relax +% \end{macrocode} +% +% Now we globally store the settings of |\lefthyphenmin| and +% |\righthyphenmin| and close the group. +% +% \begin{macrocode} + \ifnum\lefthyphenmin=\m@ne + \else + \expandafter\xdef\csname #1hyphenmins\endcsname{% + \set@hyphenmins{\the\lefthyphenmin}{\the\righthyphenmin}}% + \fi + \endgroup +% \end{macrocode} +% +% If the counter |\language| is still equal to zero we set the +% hyphenmin parameters to the values for the language loaded on +% pattern register 0. +% +% \begin{macrocode} + \ifnum\the\language=\z@ + \expandafter\ifx\csname #1hyphenmins\endcsname\relax + \set@hyphenmins\tw@\thr@@\relax + \else + \expandafter\expandafter\expandafter\set@hyphenmins + \csname #1hyphenmins\endcsname + \fi +% \end{macrocode} +% +% Now execute the contents of token register zero as it may +% contain commands which set the hyphenmin parameters for synonyms +% that were defined before the first pattern file is read in. +% +% \begin{macrocode} + \the\toks@ + \fi +% \end{macrocode} +% +% Empty the token register after use. +% +% \begin{macrocode} + \toks@{}% +% \end{macrocode} +% +% When the hyphenation patterns have been processed we need to see +% if a file with hyphenation exceptions needs to be read. This is +% the case when the third argument is not empty and when it does +% not contain a space token. +% +% \begin{macrocode} + \def\ant@tempa{#3}% + \ifx\ant@tempa\@empty + \else + \ifx\ant@tempa\space + \else + \input #3\relax + \fi + \fi +} +% \end{macrocode} +% +% \DescribeMacro{\ant@get@enc} +% \DescribeMacro{\ant@hyph@enc} +% The macro |\ant@get@enc| extracts the font encoding from the +% language name and stores it in |\ant@hyph@enc|. It uses delimited +% arguments to acheive this. +% +% \begin{macrocode} +\def\ant@get@enc#1:#2\@@@{% +% \end{macrocode} +% +% First store both arguments in temporary macros, +% +% \begin{macrocode} + \def\ant@tempa{#1}% + \def\ant@tempb{#2}% +% \end{macrocode} +% +% then, if the second argument was empty, no font encoding was +% specified and we're done. +% +% \begin{macrocode} + \ifx\ant@tempb\@empty + \let\ant@hyph@enc\@empty + \else +% \end{macrocode} +% +% But if the second argument was \emph{not} empty it will now have +% a superfluous colon attached to it which we need to remove. This +% done by feeding it to |\ant@get@enc|. The string that we are +% after will then be in the first argument and be stored in +% |\ant@tempa|. +% +% \begin{macrocode} + \ant@get@enc#2\@@@ + \edef\ant@hyph@enc{\ant@tempa}% + \fi} +% \end{macrocode} +% +% The configuration file can now be opened for reading. +% +% \begin{macrocode} +\openin1 = language.dat +% \end{macrocode} +% +% See if the file exists, if not, use the default hyphenation file +% \file{hyphen.tex}. The user will be informed about this. +% +% \begin{macrocode} +\ifeof1 + \message{I couldn't find the file language.dat,\space + I will try the file hyphen.tex} + \input hyphen.tex\relax +\else +% \end{macrocode} +% +% Pattern registers are allocated using count register +% |\last@language|. Its initial value is~0. The definition of the +% macro |\newlanguage| is such that it first increments the count +% register and then defines the language. In order to have the +% first patterns loaded in pattern register number~0 we initialize +% |\last@language| with the value~$-1$. +% +% \begin{macrocode} + \last@language\m@ne +% \end{macrocode} +% +% We now read lines from the file untill the end is found +% +% \begin{macrocode} + \loop +% \end{macrocode} +% +% While reading from the input it is useful to switch off +% recognition of the end-of-line character. This saves us stripping +% off spaces from the contents of the controlsequence. +% +% \begin{macrocode} + \endlinechar\m@ne + \read1 to \ant@line + \endlinechar`\^^M +% \end{macrocode} +% +% Empty lines are skipped. +% +% \begin{macrocode} + \ifx\ant@line\@empty + \else +% \end{macrocode} +% +% Now we add a space and a |/| character to the end of +% |\ant@line|. This is needed to be able to recognize the third, +% optional, argument of |\process@language| later on. +% +% \begin{macrocode} + \edef\ant@line{\ant@line\space/}% + \expandafter\process@line\ant@line + \fi +% \end{macrocode} +% +% Check for the end of the file. To avoid a new \texttt{if} +% control sequence we create the necessary |\iftrue| or |\iffalse| +% with the help of |\csname|. But there is one complication with +% this approach: when skipping the \texttt{loop...repeat} \TeX\ has +% to read |\if|/|\fi| pairs. So we have to insert a `dummy' +% |\iftrue|. +% +% \begin{macrocode} + \iftrue \csname fi\endcsname + \csname if\ifeof1 false\else true\fi\endcsname + \repeat +% \end{macrocode} +% +% Reactivate the default patterns, +% +% \begin{macrocode} + \language=0 +\fi +% \end{macrocode} +% +% and close the configuration file. +% +% \begin{macrocode} +\closein1 +% \end{macrocode} +% +% Also remove some macros from memory +% +% \begin{macrocode} +\let\process@language\@undefined +\let\process@synonym\@undefined +\let\process@line\@undefined +\let\ant@tempa\@undefined +\let\ant@tempb\@undefined +\let\ant@eq@\@undefined +\let\ant@line\@undefined +\let\ant@get@enc\@undefined +\ifx\addto@hook\@undefined +\else + \expandafter\addto@hook\expandafter\everyjob\expandafter{% + \expandafter\typeout\expandafter{\the\toks8 loaded.}} +\fi +% \end{macrocode} +% +% \iffalse +%</patterns> +%<*antomega> +% \fi +% +% \subsection{Processing options} +% +% \begin{macrocode} +\DeclareOption*{% + \edef\@temp{\noexpand\setkeys{antomega}{\CurrentOption}}% + \@temp% +} +\ProcessOptions +% \end{macrocode} +% +% \iffalse +%</antomega> +% \fi +% +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/lambda/antomega/antomega.ins b/Master/texmf-dist/source/lambda/antomega/antomega.ins new file mode 100644 index 00000000000..7fc31478f15 --- /dev/null +++ b/Master/texmf-dist/source/lambda/antomega/antomega.ins @@ -0,0 +1,74 @@ +%% +%% This file generates file antomega.sty from file antomega.dtx by means +%% of the LaTeX program docstrip. This program eliminates almost all +%% commented lines thus speeding up the loading of the code. Documentation +%% may be obtained by running LaTeX on the source file antomega.dtx. +%% +%% +%% ---------------------------------------- +%% +%% This system is distributed in the hope that it will be useful, +%% but WITHOUT ANY WARRANTY; without even the implied warranty of +%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +%% +%% IMPORTANT NOTICE: +%% +%% Copyright 2002 Alexej Kryukov +%% All rights reserved. +%% +%% Permission is granted to distribute verbatim copies of this file +%% together with antomega.dtx. +%% +%% No other permissions to copy or distribute this file in any form +%% are granted and in particular no permission to modify its contents. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\batchfile{antomega.ins} +\def\fileversion{0.8} +\def\filedate{7 May 2005} +\input docstrip.tex +\preamble + +This file is a part of the ANTOMEGA project version \fileversion +----------------------------------------------------- + +It may be distributed under the terms of the LaTeX Project Public +License, as described in lppl.txt in the base LaTeX distribution. +Either version 1.0 or, at your option, any later version. +Copyright (C) 2001 -- 2002 by Alexej Kryukov +Please report errors to: A.M. Kryukov <basileia@yandex.ru> + +\endpreamble + +\keepsilent + +\Msg{*** Generating the extension package antomega.sty ***} + +\generateFile{antomega.sty}{t}{\from{antomega.dtx}{antomega}} + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* Now move antomega.sty where Omega can find it } +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{***********************************************************} +} + +\Msg{*** Generating the files which should be loaded into Lambda format ***} + +\generateFile{hyphen.cfg}{t}{\from{antomega.dtx}{kernel,patterns}} +\generateFile{antomega.cfg}{t}{\from{antomega.dtx}{config}} + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* Now move hyphen.cfg and antomega.cfg where iniomega can } +\Msg{* find them } +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/lambda/oinuit/oinuit.dtx b/Master/texmf-dist/source/lambda/oinuit/oinuit.dtx new file mode 100644 index 00000000000..78b4ba079b7 --- /dev/null +++ b/Master/texmf-dist/source/lambda/oinuit/oinuit.dtx @@ -0,0 +1,958 @@ +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%\iffalse +% +% oinuit.dtx +% Copyright 2002 Apostolos Syropoulos +% +% This program may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.2 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.2 or later is part of all distributions of LaTeX +% version 1999/12/01 or later. +% +% This program consists of the files oinuit.dtx and oinuit.ins +% +% Please report errors or suggestions for improvement to +% +% Apostolos Syropoulos +% 366, 28th October Str. +% GR-671 00 Xanthi, GREECE +% apostolo@ocean1.ee.duth.gr or apostolo@obelix.ee.duth.gr +% +%\fi +% \CheckSum{475} +% \iffalse This is a Metacomment +% +%<oinuit, >\ProvidesPackage{oinuit.sty} +%<LITenc, >\ProvidesFile{litenc.def} +%<LITcmr, >\ProvidesFile{litcmr.fd} +%<Hyphenation, >\message{2002/07/21 v1.0 Inuktitut hyphenation patterns} +%<Ninuit2uni, >%% Omega translation process Ninuit2uni +%<Qinuit2uni, >%% Omega translation process Qinuit2uni +%<inuitscii, >%% Omega translation process inuitscii +% +%<oinuit, >[2002/07/21 v1.0 Package `oinuit.sty'] +%<LITenc, >[2002/07/21 v1.0 Local Inuktitut Encoding] +%<LITcmr, >[2002/07/21 v1.0 Inuktitut Font Definition] +%<Ninuit2uni, >%% 2002/07/21 v1.0 Inuktitut Latin transcription to Unicode, +%<Ninuit2uni, >%% follows the Anglican orthography. +%<Qinuit2uni, >%% 2002/07/21 v1.0 Inuktitut Latin transcription to Unicode, +%<Qinuit2uni, >%% follows the Catholic orthography. +%<inuitscii, >%% 2002/07/21 v1.0 Inuit ASCII to Unicode. +% +% \begin{macrocode} +%<*driver> +\documentclass{ltxdoc} +\usepackage{url,graphicx} +\GetFileInfo{oinuit.drv} +\begin{document} + \frenchspacing + \DocInput{oinuit.dtx} +\end{document} +%</driver> +% \end{macrocode} +% \fi +% +% \title{The \textit{oinuit} package} +% \author{Apostolos Syropoulos\\366, 28th October Str.\\ +% GR-671 00 Xanthi, HELLAS\\ +% Email:\texttt{apostolo@obelix.ee.duth.gr}\\ or \\ +% \hphantom{Email:}\texttt{apostolo@ocean1.ee.duth.gr}} +% \date{2002/07/21} +% \maketitle +% +%\MakeShortVerb{\|} +%\StopEventually{} +% +% \section{Introduction} +% +% This $\Lambda$\footnote{$\Lambda$ is \LaTeX's nickname when used with the +% $\Omega$ typesetting engine.} package is part of a system that +% provides a rather complete solution to the problem of typesetting Inuktitut +% documents. The package is bundled with a PostScript version of the Nunacom +% TrueType font developed by Nortext (\url{http://www.nortext.com}), which is +% redistributed with permission from Nortext. In addition, there four $\Omega$ +% virtual fonts, which define a Unicode encoded font that consists of the +% English alphabet, the digits, some symbols and the Inuktitut syllabary. +% +% Inuktitut is the language of the Inuit (also known as Eskimos, but the term +% is considered offensive by Inuit who live in Canada and Greenland). The +% language is spoken in Greenland, Canada, Alaska, and the Chukotka Autonomous +% Okrug, which is located in the far northeast region of the Russian +% Federation, by approximately 152,000 people. The Inuktitut syllabics are +% used by Inuit who live in Canada, especially in the new Canadian territory +% of Nunavut. This writing system was invented by Reverend James Evans, a +% Wesleyan missionary. This system was based on earlier work on the Cree +% language, which, in turn, was based on work on the Ojibway language. +% +% The complete system consists of the following files: +% \begin{description} +% \item[\texttt{driver}] produces a documentation driver file. +% \item[\texttt{oinuit.sty}] the package itself. +% \item[\texttt{litenc.def}] font encoding definition file. +% \item[\texttt{litcmr.fd}] font definition file. +% \item[\texttt{inuit.tex}] Inuktitut hyphenation patterns. +% \item[\texttt{Ninuit2uni.otp}] an $\Omega$TP that transforms text written +% in the Inuktitut Latin transcription to Unicode that follows the +% Anglican orthography. +% \item[\texttt{Qinuit2uni.otp}] an $\Omega$TP that transforms text written +% in the Inuktitut Latin transcription to Unicode that follows the +% Catholic orthography. +% \item[\texttt{inuitscii.otp}] an $\Omega$TP that transforms text written in +% a Inuit ASCII to Unicode. +% \end{description} +% +% \section{The package `oinuit'} +% +% The package `oinuit' provides the basic user-interface for the typesetting +% of Inuktitut text with $\Lambda$. The package provides five options: +% \texttt{nunavut} (default option), \texttt{quebec}, \texttt{iscii}, +% \texttt{utf8}, and \texttt{ucs2}, which should be used when users want to +% enter text using the Latin transcription of Inuktitut and the Anglican +% orthography, the Latin transcription of Inuktitut and the Catholic +% orthography, the Inuit ASCII (see Table~\ref{iscii}), the UTF-8 Unicode, +% or the UCS-2 Unicode encoding, respectively. +% \begin{table} +% \begin{center} +% \includegraphics[scale=0.8]{Table.eps} +% \end{center} +% \caption{The Inuit character table that the \texttt{inuitscii} +% $\Omega$TP implements.}\label{iscii} +% \end{table} +% The Inuit ASCII presented in the above is based on PC Inuit Character Table +% proposed by Everson Typography +% (see \url{http://www.evertype.com/standards/iu/iu-tables.html}). +% +% The first thing we have to do is to redefine the +% \texttt{\char`\\ttde\-fault} or, else, we will not be able to use the +% |\verb| command and the \texttt{verbatim} environment. +% \begin{macrocode} +%<*oinuit> +\IfFileExists{ot1uctt.fd}{% + \def\ttdefault{uctt}}{}% +% \end{macrocode} +% Each option corresponds to a particular ``$\Omega$ Translation Process,'' +% or $\Omega$TP, for short. Consequently, depending on the option the user has +% specified, we must load the corresponding $\Omega$TP. The \texttt{nunavut} +% option should be used to transform Inuktitut text that is ``encoded'' in the +% Latin transcription that follows the Anglican orthography to Unicode. In all +% cases we use the same $\Omega$CP (for $\Omega$ Compiled Process) list that +% consists of only one $\Omega$CP, namely the one that corresponds to the +% option. +% \begin{macrocode} +\DeclareOption{nunavut}{% + \ocp\InInuit=Ninuit2uni + \ocplist\InInuitList= + \addbeforeocplist 1 \InInuit + \nullocplist +} +% \end{macrocode} +% The \texttt{quebec} option should be used to transform Inuktitut text that +% is ``encoded'' in the Latin transcription that follows the Catholic +% orthography to Unicode: +% \begin{macrocode} +\DeclareOption{quebec}{% + \ocp\InInuit=Qinuit2uni + \ocplist\InInuitList= + \addbeforeocplist 1 \InInuit + \nullocplist +} +% \end{macrocode} +% The \texttt{iscii} option should be used when Inuit ASCII is the prefered +% input encoding: +% \begin{macrocode} +\DeclareOption{iscii}{% + \ocp\InInuit=inuitscii + \ocplist\InInuitList= + \addbeforeocplist 1 \InInuit + \nullocplist +} +% \end{macrocode} +% Naturally, people may find it easier to type directly prepare their +% documents using a Unicode editor, so we support UTF-8 input. Note +% that the \texttt{inutf8} $\Omega$CP is a standard part of every $\Omega$ +% installtion. +% \begin{macrocode} +\DeclareOption{utf8}{% + \ocp\InInuit=inutf8 + \ocplist\InInuitList= + \addbeforeocplist 1 \InInuit + \nullocplist +} +% \end{macrocode} +% Naturally, we support UCS-2 input. Note that here we use the \texttt{id} +% $\Omega$CP which maps any character to itself. +% \begin{macrocode} +\DeclareOption{ucs2}{% + \ocp\InInuit=id + \ocplist\InInuitList= + \addbeforeocplist 1 \InInuit + \nullocplist +} +% \end{macrocode} +% The default input encoding for the Inuktitut text is the Latin transcription +% that follows the Anglican orthography: +% \begin{macrocode} +\ExecuteOptions{nunavut} +\ProcessOptions +% \end{macrocode} +% Now, we load a local font encoding which is a temporal solution as we do +% not really have a complete Unicode font. +% \begin{macrocode} +\input litenc.def +% \end{macrocode} +%\begin{macro}{\selectlanguage} +% The command |\selectlanguage| is actaully a hack that simulates the +% behavior of the corresponding command that the \textsf{babel} package +% provides. The command has one argument, which is the name of a lnaguage +% whose hyphenation patterns will be enabled. Each language, +% \texttt{\textit{lang}}, is internally represented by the control sequence +% \texttt{\char`\\l@\textit{lang}}. If this control sequence expands to +% \texttt{\char`\\re\-lax}, then there are no preloaded hyphenation patterns +% for \texttt{\textit{lang}} and so the default (American) hyphenation +% patterns are loaded. Otherwise, we load the hyphenation patterns of the +% requested \texttt{\textit{lang}}. +% \begin{macrocode} +\def\selectlanguage#1{% + \expandafter\ifx\csname l@#1\endcsname\relax% + \typeout{^^J Error: No hyphenation pattern for language #1 loaded,}% + \typeout{ default hyphenation patterns are used.^^J}% + \language=0% + \else\language=\csname l@#1\endcsname\fi} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\inuittext} +% The |\inuittext| command should be used to permanently change the font +% encoding, make the Inuktitut hyphenation patterns the default hyphenation +% patterns and select the appropriate $\Omega$CP list. +% \begin{macrocode} +\def\inuittext{% + \fontencoding{LIT}\selectfont% + \def\encodingdefault{LIT}% + \selectlanguage{inuit}% + \pushocplist\InInuitList% +} +% \end{macrocode} +% Although we do not provide the ``opposite'' declaration, it is fairly +% easy to write a macro that will do this job. +%\end{macro} +%\begin{macro}{inuit} +% The \texttt{inuit} environment is actually a local scope in which we +% activate the equivalent of the \texttt{\char`\\inuit\-text} declaration. +% \begin{macrocode} +\newenvironment{inuit}{\fontencoding{LIT}\selectfont% + \selectlanguage{inuit}% + \pushocplist\InInuitList}% + {\popocplist} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\textinuit} +% The |\textinuit| command is a long command that does exactly what the +% \texttt{inuit} environment does: +% \begin{macrocode} +\DeclareRobustCommand{\textinuit}[1]{{% + \leavevmode\fontencoding{LIT}\selectfont% + \selectlanguage{inuit}% + \pushocplist\InInuitList #1}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\InuitToday} +% The |\InuitToday| command prints the current date in Inuktitut. Note that +% we use the |^^^^hhhh| notation to write the letters of the word and so we +% actually using Unicode code points instead of ``letters.'' +% \begin{macrocode} +\DeclareRobustCommand{\InuitToday}{{% + \fontencoding{LIT}\selectfont% + \number\day\space% + \ifcase\month% + \or ^^^^1528^^^^14c4^^^^140a^^^^1546 %January + \or ^^^^1555^^^^1433^^^^140a^^^^1546 %February + \or ^^^^14ab^^^^1550^^^^14ef %March + \or ^^^^140a^^^^1403^^^^1433^^^^1546^^^^14ea %April + \or ^^^^14aa^^^^1403 %May + \or ^^^^152a^^^^14c2 %June + \or ^^^^152a^^^^14da^^^^1403 %July + \or ^^^^140a^^^^1405^^^^148d^^^^1505 %August + \or ^^^^14ef^^^^144e^^^^14bb^^^^1433^^^^1546 %September + \or ^^^^1505^^^^1483^^^^1450^^^^1433^^^^1546 %October + \or ^^^^14c4^^^^1555^^^^14bb^^^^1433^^^^1546 %November + \or ^^^^144e^^^^14ef^^^^14bb^^^^1433^^^^1546 %December + \fi% + \number\year}} +%</oinuit> +% \end{macrocode} +% Of course, we do need to do a few more things (e.g., provide translation +% of the common strings that \LaTeX\ uses), but we wanted to release the +% package to make available the tools and to give other package writer's +% the chance to check out a complete and (hopefully) well-documented $\Lambda$ +% package. +%\end{macro} +% +% \section{Font Encoding and Font Definition Files} +% +% Since the fonts that we use do not have a standard encoding (they support +% ASCII and the Inuktitut symbols that are contained in the Canadian +% Aboriginal Syllabics section of the Unicode Standard), we have to declare +% a new ``local'' font encoding. +% \begin{macrocode} +%<*LITenc> +\DeclareFontEncoding{LIT}{}{} +\DeclareFontSubstitution{LIT}{cmr}{m}{n} +\DeclareErrorFont{LIT}{cmr}{m}{n}{10} +%</LITenc> +% \end{macrocode} +% +% Of course, declaring a new font encoding is not enough: we need a font +% definition file. Note that we claim to support a Roman font, but we +% actually support a san-serif font as this matches with the Inuktitut +% symbols. In addition, the available ``shapes'' are: up-right, slanted, +% bold, and bold slanted. +% +% \begin{macrocode} +%<*LITcmr> +\DeclareFontShape{LIT}{cmr}{m}{n}{% + <-> OInuit}{} +\DeclareFontShape{LIT}{cmr}{m}{sc}{% + <-> ssub * cmr/m/n}{} +\DeclareFontShape{LIT}{cmr}{m}{sl}{% + <-> OInuito}{} +\DeclareFontShape{LIT}{cmr}{m}{it}{% + <-> ssub * cmr/m/sl}{} +\DeclareFontShape{LIT}{cmr}{bx}{n}{% + <-> OInuitb}{} +\DeclareFontShape{LIT}{cmr}{bx}{sc}{% + <-> ssub * cmr/bx/n}{} +\DeclareFontShape{LIT}{cmr}{bx}{sl}{% + <-> OInuitbo}{} +\DeclareFontShape{LIT}{cmr}{bx}{it}{% + <-> ssub * cmr/bx/sl}{} +%</LITcmr> +% \end{macrocode} +% +% \section{Inuktitut Hyphenation Patterns} +% +% The hyphenation rules of the Inuktitut language are very simple: +% words can be broken at any point! The only exception is that a +% break-point cannot appear before a final consonant. Before, we code +% the hyphenation patterns, we must change the catcode of all symbols that +% the Inuktitut language uses. By default, all these symbols have catcode +% ``other,'' so we set it to ``letter.'' In addition, we set the lowercase +% codes and the uppercase codes of each symbol. Since there are no uppercase +% or lowercase letters, we define that the uppercase/lowercase of a symbol +% is the symbol itself. +% \begin{macrocode} +%<*Hyphenation> +\catcode`^^^^1403=11 \lccode`^^^^1403=`^^^^1403 + \uccode`^^^^1403=`^^^^1403 +\catcode`^^^^1404=11 \lccode`^^^^1404=`^^^^1404 + \uccode`^^^^1404=`^^^^1404 +\catcode`^^^^1405=11 \lccode`^^^^1405=`^^^^1405 + \uccode`^^^^1405=`^^^^1405 +\catcode`^^^^1406=11 \lccode`^^^^1406=`^^^^1406 + \uccode`^^^^1406=`^^^^1406 +\catcode`^^^^140a=11 \lccode`^^^^140a=`^^^^140a + \uccode`^^^^140a=`^^^^140a +\catcode`^^^^140b=11 \lccode`^^^^140b=`^^^^140b + \uccode`^^^^140b=`^^^^140b +\catcode`^^^^1431=11 \lccode`^^^^1431=`^^^^1431 + \uccode`^^^^1431=`^^^^1431 +\catcode`^^^^1432=11 \lccode`^^^^1432=`^^^^1432 + \uccode`^^^^1432=`^^^^1432 +\catcode`^^^^1433=11 \lccode`^^^^1433=`^^^^1433 + \uccode`^^^^1433=`^^^^1433 +\catcode`^^^^1434=11 \lccode`^^^^1434=`^^^^1434 + \uccode`^^^^1434=`^^^^1434 +\catcode`^^^^1438=11 \lccode`^^^^1438=`^^^^1438 + \uccode`^^^^1438=`^^^^1438 +\catcode`^^^^1439=11 \lccode`^^^^1439=`^^^^1439 + \uccode`^^^^1439=`^^^^1439 +\catcode`^^^^1449=11 \lccode`^^^^1449=`^^^^1449 + \uccode`^^^^1449=`^^^^1449 +\catcode`^^^^144e=11 \lccode`^^^^144e=`^^^^144e + \uccode`^^^^144e=`^^^^144e +\catcode`^^^^144f=11 \lccode`^^^^144f=`^^^^144f + \uccode`^^^^144f=`^^^^144f +\catcode`^^^^1450=11 \lccode`^^^^1450=`^^^^1450 + \uccode`^^^^1450=`^^^^1450 +\catcode`^^^^1451=11 \lccode`^^^^1451=`^^^^1451 + \uccode`^^^^1451=`^^^^1451 +\catcode`^^^^1455=11 \lccode`^^^^1455=`^^^^1455 + \uccode`^^^^1455=`^^^^1455 +\catcode`^^^^1456=11 \lccode`^^^^1456=`^^^^1456 + \uccode`^^^^1456=`^^^^1456 +\catcode`^^^^1466=11 \lccode`^^^^1466=`^^^^1466 + \uccode`^^^^1466=`^^^^1466 +\catcode`^^^^146d=11 \lccode`^^^^146d=`^^^^146d + \uccode`^^^^146d=`^^^^146d +\catcode`^^^^146e=11 \lccode`^^^^146e=`^^^^146e + \uccode`^^^^146e=`^^^^146e +\catcode`^^^^146f=11 \lccode`^^^^146f=`^^^^146f + \uccode`^^^^146f=`^^^^146f +\catcode`^^^^1470=11 \lccode`^^^^1470=`^^^^1470 + \uccode`^^^^1470=`^^^^1470 +\catcode`^^^^1472=11 \lccode`^^^^1472=`^^^^1472 + \uccode`^^^^1472=`^^^^1472 +\catcode`^^^^1473=11 \lccode`^^^^1473=`^^^^1473 + \uccode`^^^^1473=`^^^^1473 +\catcode`^^^^1483=11 \lccode`^^^^1483=`^^^^1483 + \uccode`^^^^1483=`^^^^1483 +\catcode`^^^^148b=11 \lccode`^^^^148b=`^^^^148b + \uccode`^^^^148b=`^^^^148b +\catcode`^^^^148c=11 \lccode`^^^^148c=`^^^^148c + \uccode`^^^^148c=`^^^^148c +\catcode`^^^^148d=11 \lccode`^^^^148d=`^^^^148d + \uccode`^^^^148d=`^^^^148d +\catcode`^^^^148e=11 \lccode`^^^^148e=`^^^^148e + \uccode`^^^^148e=`^^^^148e +\catcode`^^^^1490=11 \lccode`^^^^1490=`^^^^1490 + \uccode`^^^^1490=`^^^^1490 +\catcode`^^^^1491=11 \lccode`^^^^1491=`^^^^1491 + \uccode`^^^^1491=`^^^^1491 +\catcode`^^^^14a1=11 \lccode`^^^^14a1=`^^^^14a1 + \uccode`^^^^14a1=`^^^^14a1 +\catcode`^^^^14a5=11 \lccode`^^^^14a5=`^^^^14a5 + \uccode`^^^^14a5=`^^^^14a5 +\catcode`^^^^14a6=11 \lccode`^^^^14a6=`^^^^14a6 + \uccode`^^^^14a6=`^^^^14a6 +\catcode`^^^^14a7=11 \lccode`^^^^14a7=`^^^^14a7 + \uccode`^^^^14a7=`^^^^14a7 +\catcode`^^^^14a8=11 \lccode`^^^^14a8=`^^^^14a8 + \uccode`^^^^14a8=`^^^^14a8 +\catcode`^^^^14aa=11 \lccode`^^^^14aa=`^^^^14aa + \uccode`^^^^14aa=`^^^^14aa +\catcode`^^^^14ab=11 \lccode`^^^^14ab=`^^^^14ab + \uccode`^^^^14ab=`^^^^14ab +\catcode`^^^^14bb=11 \lccode`^^^^14bb=`^^^^14bb + \uccode`^^^^14bb=`^^^^14bb +\catcode`^^^^14c2=11 \lccode`^^^^14c2=`^^^^14c2 + \uccode`^^^^14c2=`^^^^14c2 +\catcode`^^^^14c3=11 \lccode`^^^^14c3=`^^^^14c3 + \uccode`^^^^14c3=`^^^^14c3 +\catcode`^^^^14c4=11 \lccode`^^^^14c4=`^^^^14c4 + \uccode`^^^^14c4=`^^^^14c4 +\catcode`^^^^14c5=11 \lccode`^^^^14c5=`^^^^14c5 + \uccode`^^^^14c5=`^^^^14c5 +\catcode`^^^^14c7=11 \lccode`^^^^14c7=`^^^^14c7 + \uccode`^^^^14c7=`^^^^14c7 +\catcode`^^^^14c8=11 \lccode`^^^^14c8=`^^^^14c8 + \uccode`^^^^14c8=`^^^^14c8 +\catcode`^^^^14d0=11 \lccode`^^^^14d0=`^^^^14d0 + \uccode`^^^^14d0=`^^^^14d0 +\catcode`^^^^14ef=11 \lccode`^^^^14ef=`^^^^14ef + \uccode`^^^^14ef=`^^^^14ef +\catcode`^^^^14f0=11 \lccode`^^^^14f0=`^^^^14f0 + \uccode`^^^^14f0=`^^^^14f0 +\catcode`^^^^14f1=11 \lccode`^^^^14f1=`^^^^14f1 + \uccode`^^^^14f1=`^^^^14f1 +\catcode`^^^^14f2=11 \lccode`^^^^14f2=`^^^^14f2 + \uccode`^^^^14f2=`^^^^14f2 +\catcode`^^^^14f4=11 \lccode`^^^^14f4=`^^^^14f4 + \uccode`^^^^14f4=`^^^^14f4 +\catcode`^^^^14f5=11 \lccode`^^^^14f5=`^^^^14f5 + \uccode`^^^^14f5=`^^^^14f5 +\catcode`^^^^1505=11 \lccode`^^^^1505=`^^^^1505 + \uccode`^^^^1505=`^^^^1505 +\catcode`^^^^14d5=11 \lccode`^^^^14d5=`^^^^14d5 + \uccode`^^^^14d5=`^^^^14d5 +\catcode`^^^^14d6=11 \lccode`^^^^14d6=`^^^^14d6 + \uccode`^^^^14d6=`^^^^14d6 +\catcode`^^^^14d7=11 \lccode`^^^^14d7=`^^^^14d7 + \uccode`^^^^14d7=`^^^^14d7 +\catcode`^^^^14d8=11 \lccode`^^^^14d8=`^^^^14d8 + \uccode`^^^^14d8=`^^^^14d8 +\catcode`^^^^14da=11 \lccode`^^^^14da=`^^^^14da + \uccode`^^^^14da=`^^^^14da +\catcode`^^^^14db=11 \lccode`^^^^14db=`^^^^14db + \uccode`^^^^14db=`^^^^14db +\catcode`^^^^14ea=11 \lccode`^^^^14ea=`^^^^14ea + \uccode`^^^^14ea=`^^^^14ea +\catcode`^^^^1528=11 \lccode`^^^^1528=`^^^^1528 + \uccode`^^^^1528=`^^^^1528 +\catcode`^^^^1529=11 \lccode`^^^^1529=`^^^^1529 + \uccode`^^^^1529=`^^^^1529 +\catcode`^^^^152a=11 \lccode`^^^^152a=`^^^^152a + \uccode`^^^^152a=`^^^^152a +\catcode`^^^^152b=11 \lccode`^^^^152b=`^^^^152b + \uccode`^^^^152b=`^^^^152b +\catcode`^^^^152d=11 \lccode`^^^^152d=`^^^^152d + \uccode`^^^^152d=`^^^^152d +\catcode`^^^^152e=11 \lccode`^^^^152e=`^^^^152e + \uccode`^^^^152e=`^^^^152e +\catcode`^^^^153e=11 \lccode`^^^^153e=`^^^^153e + \uccode`^^^^153e=`^^^^153e +\catcode`^^^^1555=11 \lccode`^^^^1555=`^^^^1555 + \uccode`^^^^1555=`^^^^1555 +\catcode`^^^^1556=11 \lccode`^^^^1556=`^^^^1556 + \uccode`^^^^1556=`^^^^1556 +\catcode`^^^^1557=11 \lccode`^^^^1557=`^^^^1557 + \uccode`^^^^1557=`^^^^1557 +\catcode`^^^^1558=11 \lccode`^^^^1558=`^^^^1558 + \uccode`^^^^1558=`^^^^1558 +\catcode`^^^^1559=11 \lccode`^^^^1559=`^^^^1559 + \uccode`^^^^1559=`^^^^1559 +\catcode`^^^^155a=11 \lccode`^^^^155a=`^^^^155a + \uccode`^^^^155a=`^^^^155a +\catcode`^^^^155d=11 \lccode`^^^^155d=`^^^^155d + \uccode`^^^^155d=`^^^^155d +\catcode`^^^^1546=11 \lccode`^^^^1546=`^^^^1546 + \uccode`^^^^1546=`^^^^1546 +\catcode`^^^^1547=11 \lccode`^^^^1547=`^^^^1547 + \uccode`^^^^1547=`^^^^1547 +\catcode`^^^^1548=11 \lccode`^^^^1548=`^^^^1548 + \uccode`^^^^1548=`^^^^1548 +\catcode`^^^^1549=11 \lccode`^^^^1549=`^^^^1549 + \uccode`^^^^1549=`^^^^1549 +\catcode`^^^^154b=11 \lccode`^^^^154b=`^^^^154b + \uccode`^^^^154b=`^^^^154b +\catcode`^^^^154c=11 \lccode`^^^^154c=`^^^^154c + \uccode`^^^^154c=`^^^^154c +\catcode`^^^^1550=11 \lccode`^^^^1550=`^^^^1550 + \uccode`^^^^1550=`^^^^1550 +\catcode`^^^^157f=11 \lccode`^^^^157f=`^^^^157f + \uccode`^^^^157f=`^^^^157f +\catcode`^^^^1580=11 \lccode`^^^^1580=`^^^^1580 + \uccode`^^^^1580=`^^^^1580 +\catcode`^^^^1581=11 \lccode`^^^^1581=`^^^^1581 + \uccode`^^^^1581=`^^^^1581 +\catcode`^^^^1582=11 \lccode`^^^^1582=`^^^^1582 + \uccode`^^^^1582=`^^^^1582 +\catcode`^^^^1583=11 \lccode`^^^^1583=`^^^^1583 + \uccode`^^^^1583=`^^^^1583 +\catcode`^^^^1584=11 \lccode`^^^^1584=`^^^^1584 + \uccode`^^^^1584=`^^^^1584 +\catcode`^^^^1585=11 \lccode`^^^^1585=`^^^^1585 + \uccode`^^^^1585=`^^^^1585 +\catcode`^^^^158f=11 \lccode`^^^^158f=`^^^^158f + \uccode`^^^^158f=`^^^^158f +\catcode`^^^^1590=11 \lccode`^^^^1590=`^^^^1590 + \uccode`^^^^1590=`^^^^1590 +\catcode`^^^^1592=11 \lccode`^^^^1592=`^^^^1592 + \uccode`^^^^1592=`^^^^1592 +\catcode`^^^^1591=11 \lccode`^^^^1591=`^^^^1591 + \uccode`^^^^1591=`^^^^1591 +\catcode`^^^^1593=11 \lccode`^^^^1593=`^^^^1593 + \uccode`^^^^1593=`^^^^1593 +\catcode`^^^^1594=11 \lccode`^^^^1594=`^^^^1594 + \uccode`^^^^1594=`^^^^1594 +\catcode`^^^^1595=11 \lccode`^^^^1595=`^^^^1595 + \uccode`^^^^1595=`^^^^1595 +\catcode`^^^^1671=11 \lccode`^^^^1671=`^^^^1671 + \uccode`^^^^1671=`^^^^1671 +\catcode`^^^^1672=11 \lccode`^^^^1672=`^^^^1672 + \uccode`^^^^1672=`^^^^1672 +\catcode`^^^^1673=11 \lccode`^^^^1673=`^^^^1673 + \uccode`^^^^1673=`^^^^1673 +\catcode`^^^^1674=11 \lccode`^^^^1674=`^^^^1674 + \uccode`^^^^1674=`^^^^1674 +\catcode`^^^^1675=11 \lccode`^^^^1675=`^^^^1675 + \uccode`^^^^1675=`^^^^1675 +\catcode`^^^^1676=11 \lccode`^^^^1676=`^^^^1676 + \uccode`^^^^1676=`^^^^1676 +\catcode`^^^^1596=11 \lccode`^^^^1596=`^^^^1596 + \uccode`^^^^1596=`^^^^1596 +\catcode`^^^^15a0=11 \lccode`^^^^15a0=`^^^^15a0 + \uccode`^^^^15a0=`^^^^15a0 +\catcode`^^^^15a1=11 \lccode`^^^^15a1=`^^^^15a1 + \uccode`^^^^15a1=`^^^^15a1 +\catcode`^^^^15a2=11 \lccode`^^^^15a2=`^^^^15a2 + \uccode`^^^^15a2=`^^^^15a2 +\catcode`^^^^15a3=11 \lccode`^^^^15a3=`^^^^15a3 + \uccode`^^^^15a3=`^^^^15a3 +\catcode`^^^^15a4=11 \lccode`^^^^15a4=`^^^^15a4 + \uccode`^^^^15a4=`^^^^15a4 +\catcode`^^^^15a5=11 \lccode`^^^^15a5=`^^^^15a5 + \uccode`^^^^15a5=`^^^^15a5 +\catcode`^^^^15a6=11 \lccode`^^^^15a6=`^^^^15a6 + \uccode`^^^^15a6=`^^^^15a6 +\catcode`^^^^157c=11 \lccode`^^^^157c=`^^^^157c + \uccode`^^^^157c=`^^^^157c +% \end{macrocode} +% Before we present the hyphenation patterns, we must explain the +% hyphenation rules of the language. The rules are very easy: a word +% can be broken at any point and the only exception is that we should never +% break a word before or after a final consonant. Let us now see how we can +% code this rule. Given a letter \texttt{\textit{c}}, the pattern +% \texttt{\textit{c}1} means that it is possible to break a word just after +% this letter. So, we need such a pattern for each syllable. +% \begin{macrocode} +\patterns{% +^^^^14031 ^^^^14041 ^^^^14051 ^^^^14061 ^^^^140a1 ^^^^140b1 ^^^^14311 +^^^^14321 ^^^^14331 ^^^^14341 ^^^^14381 ^^^^14391 ^^^^14491 ^^^^144e1 +^^^^144f1 ^^^^14501 ^^^^14511 ^^^^14551 ^^^^14561 ^^^^14661 ^^^^146d1 +^^^^146e1 ^^^^146f1 ^^^^14701 ^^^^14721 ^^^^14731 ^^^^14831 ^^^^148b1 +^^^^148c1 ^^^^148d1 ^^^^148e1 ^^^^14901 ^^^^14911 ^^^^14a11 ^^^^14a51 +^^^^14a61 ^^^^14a71 ^^^^14a81 ^^^^14aa1 ^^^^14ab1 ^^^^14bb1 ^^^^14c21 +^^^^14c31 ^^^^14c41 ^^^^14c51 ^^^^14c71 ^^^^14c81 ^^^^14d01 ^^^^14ef1 +^^^^14f01 ^^^^14f11 ^^^^14f21 ^^^^14f41 ^^^^14f51 ^^^^15051 ^^^^14d51 +^^^^14d61 ^^^^14d71 ^^^^14d81 ^^^^14da1 ^^^^14db1 ^^^^14ea1 ^^^^15281 +^^^^15291 ^^^^152a1 ^^^^152b1 ^^^^152d1 ^^^^152e1 ^^^^153e1 ^^^^15551 +^^^^15561 ^^^^15571 ^^^^15581 ^^^^15591 ^^^^155a1 ^^^^155d1 ^^^^15461 +^^^^15471 ^^^^15481 ^^^^15491 ^^^^154b1 ^^^^154c1 ^^^^15501 ^^^^157f1 +^^^^15801 ^^^^15811 ^^^^15821 ^^^^15831 ^^^^15841 ^^^^15851 ^^^^158f1 +^^^^15901 ^^^^15911 ^^^^15921 ^^^^15931 ^^^^15941 ^^^^15951 ^^^^16711 +^^^^16721 ^^^^16731 ^^^^16741 ^^^^16751 ^^^^16761 ^^^^15961 ^^^^15a01 +^^^^15a11 ^^^^15a21 ^^^^15a31 ^^^^15a41 ^^^^15a51 ^^^^15a61 ^^^^157c1 +% +% \end{macrocode} +% Now, we are going to code the exception. Given a letter \texttt{\textit{c}}, +% the pattern \texttt{2\textit{c}.} prohibits hyphenation before the letter +% \texttt{\textit{c}}. So, we need such a pattern for each final consonant. +% \begin{macrocode} +2^^^^1449. 2^^^^1466. 2^^^^1483. 2^^^^14a1. 2^^^^14bb. 2^^^^14d0. +2^^^^1505. 2^^^^14ea. 2^^^^153e. 2^^^^155d. 2^^^^1550. 2^^^^1585. +2^^^^1595. 2^^^^1596. 2^^^^15a6. 2^^^^157c.} +%</Hyphenation> +% \end{macrocode} +% The hyphenation pattern can be used only if we remake the $\Lambda$ +% format. To do this we append the following line +% \begin{center} +% \texttt{inuit inuit.tex} +% \end{center} +% to file \texttt{language.dat}, which can should be in the +% \texttt{omega/lambda/base} directory. Note that you should not use +% the file that resides in the directory \texttt{tex/generic/config}, as the +% the later is used by \TeX\ only. +% +% \section{Translation Processes} +% +% In this section we present the various $\Omega$TPs that we have to design +% to facilitate input for Inuktitut texts. We first describe the $\Omega$TPs +% that transform Inuktitut text written in using the Latin transcription. Then +% we descibe the $\Omega$TP that is used to transform text written in the +% Inuktitut ASCII presented above to Unicode. +% +% First of all, we need to specify the length (in bytes) of each input and +% output character, respectively. +% \begin{macrocode} +%<*Ninuit2uni|Qinuit2uni> +input : 1; +output: 2; +% \end{macrocode} +% The input stream we are dealing is not very complex, so we start immediately +% the \texttt{expressions} section of the $\Omega$TPs. First, we have to +% handle the voweles of the language and the letter ``h'': +% +% \begin{macrocode} +expressions: +%<Ninuit2uni>`i' `i' => @"1404; +`i' => @"1403; +%<Ninuit2uni>`u' `u' => @"1406; +`u' => @"1405; +%<Ninuit2uni>`a' `a' => @"140B; +`a' => @"140A; +`h' => @"157C; +% \end{macrocode} +% Now, we will discribe how we will handle a consonant and the various +% syllables that start with with this consonant. If this consonant is the +% last character of the input stream, we simply push to the output stream +% the Unicode charcater that corresponds to this letter. If the consonant +% is not followed by one of the vowels, then we push back to the input stream +% the character that immediately follows the consonant and to the output +% stream the code point of the consonant. Finally, depending on the vowel +% (or vowels) that follow the consonant, we push to the output stream the +% Unicode character that corresponds to this syllable. We start with the +% consonant ``p'': +% \begin{macrocode} +`p' end: => @"1449; +`p' ^(`i'|`a'|`u') => @"1449 <= \2; +%<Ninuit2uni>`p' `i' `i' => @"1432; +`p' `i' => @"1431; +%<Ninuit2uni>`p' `a' `a' => @"1439; +`p' `a' => @"1438; +%<Ninuit2uni>`p' `u' `u' => @"1434; +`p' `u' => @"1433; +% \end{macrocode} +% Since the all other cases are coded in a similar way, we will not +% comment the rest of the code. +% \begin{macrocode} +`t' end: => @"1466; +`t' ^(`i'|`a'|`u') => @"1466 <= \2; +%<Ninuit2uni>`t' `i' `i' => @"144F; +`t' `i' => @"144E; +%<Ninuit2uni>`t' `a' `a' => @"1456; +`t' `a' => @"1455; +%<Ninuit2uni>`t' `u' `u' => @"1451; +`t' `u' => @"1450; +% +`k' end: => @"1483; +`k' ^(`i'|`a'|`u') => @"1483 <= \2; +%<Ninuit2uni>`k' `i' `i' => @"146E; +`k' `i' => @"146D; +%<Ninuit2uni>`k' `a' `a' => @"1473; +`k' `a' => @"1472; +%<Ninuit2uni>`k' `u' `u' => @"1470; +`k' `u' => @"146F; +% +`n' `n' `g' end: => @"1596; +`n' `n' `g' ^(`i'|`a'|`u') => @"1596 <= \2; +%<Ninuit2uni>`n' `n' `g' `i' `i' => @"1672; +`n' `n' `g' `i' => @"1671; +%<Ninuit2uni>`n' `n' `g' `u' `u' => @"1674; +`n' `n' `g' `u' => @"1673; +%<Ninuit2uni>`n' `n' `g' `a' `a' => @"1676; +`n' `n' `g' `a' => @"1675; +% +`n' `g' end: => @"1595; +`n' `g' ^(`i'|`a'|`u') => @"1595 <= \2; +%<Ninuit2uni>`n' `g' `i' `i' => @"1590; +`n' `g' `i' => @"158F; +%<Ninuit2uni>`n' `g' `u' `u' => @"1592; +`n' `g' `u' => @"1591; +%<Ninuit2uni>`n' `g' `a' `a' => @"1594; +`n' `g' `a' => @"1593; +% +`g' end: => @"14A1; +`g' ^(`i'|`a'|`u') => @"14A1 <= \2; +%<Ninuit2uni>`g' `i' `i' => @"148C; +`g' `i' => @"148B; +%<Ninuit2uni>`g' `a' `a' => @"1491; +`g' `a' => @"1490; +%<Ninuit2uni>`g' `u' `u' => @"148E; +`g' `u' => @"148D; +% +`m' end: => @"14BB; +`m' ^(`i'|`a'|`u') => @"14BB <= \2; +%<Ninuit2uni>`m' `i' `i' => @"14A6; +`m' `i' => @"14A5; +%<Ninuit2uni>`m' `a' `a' => @"14AB; +`m' `a' => @"14AA; +%<Ninuit2uni>`m' `u' `u' => @"14A8; +`m' `u' => @"14A7; +% +`n' end: => @"14D0; +`n' ^(`i'|`a'|`u') => @"14D0 <= \2; +%<Ninuit2uni>`n' `i' `i' => @"14C3; +`n' `i' => @"14C2; +%<Ninuit2uni>`n' `a' `a' => @"14C8; +`n' `a' => @"14C7; +%<Ninuit2uni>`n' `u' `u' => @"14C5; +`n' `u' => @"14C4; +% +`l' end: => @"14EA; +`l' ^(`i'|`a'|`u'|`h') => @"14EA <= \2; +%<Ninuit2uni>`l' `i' `i' => @"14D6; +`l' `i' => @"14D5; +%<Ninuit2uni>`l' `a' `a' => @"14DB; +`l' `a' => @"14DA; +%<Ninuit2uni>`l' `u' `u' => @"14D8; +`l' `u' => @"14D7; +% +`s' end: => @"1505; +`s' ^(`i'|`a'|`u') => @"1505 <= \2; +%<Ninuit2uni>`s' `i' `i' => @"14F0; +`s' `i' => @"14EF; +%<Ninuit2uni>`s' `a' `a' => @"14F5; +`s' `a' => @"14F4; +%<Ninuit2uni>`s' `u' `u' => @"14F2; +`s' `u' => @"14F1; +% +`j' end: => @"153E; +`j' ^(`i'|`a'|`u') => @"153E <= \2; +%<Ninuit2uni>`j' `i' `i' => @"1529; +`j' `i' => @"1528; +%<Ninuit2uni>`j' `u' `u' => @"152B; +`j' `u' => @"152A; +%<Ninuit2uni>`j' `a' `a' => @"1529; +`j' `a' => @"152D; +% +`r' end: => @"1550; +`r' ^(`i'|`a'|`u') => @"1550 <= \2; +%<Ninuit2uni>`r' `i' `i' => @"1547; +`r' `i' => @"1546; +%<Ninuit2uni>`r' `u' `u' => @"1549; +`r' `u' => @"1548; +%<Ninuit2uni>`r' `a' `a' => @"154C; +`r' `a' => @"154B; +% +`v' end: => @"155D; +`v' ^(`i'|`a'|`u') => @"155D <= \2; +%<Ninuit2uni>`v' `i' `i' => @"1556; +`v' `i' => @"1555; +%<Ninuit2uni>`v' `u' `u' => @"1558; +`v' `u' => @"1559; +%<Ninuit2uni>`v' `a' `a' => @"155A; +`v' `a' => @"1559; +% +`q' end: => @"1585; +`q' ^(`i'|`a'|`u') => @"1585 <= \2; +%<Ninuit2uni>`q' `i' `i' => @"1580; +`q' `i' => @"157F; +%<Ninuit2uni>`q' `u' `u' => @"1582; +`q' `u' => @"1581; +%<Ninuit2uni>`q' `a' `a' => @"1584; +`q' `a' => @"1583; +% \end{macrocode} +% The consonant we dealing with in the last case is usually writen as \l, +% however, the Unicode standard uses the name ``lh.'' Since we want to be +% Unicode compliant, we opt to use this name. Note that in the very last +% case, we simply push to the output stream unprocessed any other character. +% This is quite useful as one may want to have punctuation marks or numbers +% in the text. +% \begin{macrocode} +`l' `h' end: => @"15A6; +`l' `h' ^(`i'|`a'|`u') => @"15A6 <= \2; +%<Ninuit2uni>`l' `h' `i' `i' => @"15A1; +`l' `h' `i' => @"15A0; +%<Ninuit2uni>`l' `h' `u' `u' => @"15A3; +`l' `h' `u' => @"15A2; +%<Ninuit2uni>`l' `h' `a' `a' => @"15A5; +`l' `h' `a' => @"15A4; +. => \1; +%</Ninuit2uni|Qinuit2uni> +% \end{macrocode} +% Now, we present the code of the $\Omega$TP that transforms an input stream +% encoded in the 8-bit Inuit ASCII to Unicode. +% \begin{macrocode} +%<*inuitscii> +input: 1; +output: 2; +% \end{macrocode} +% Since, we have quite a specific code page, we use an array to store the +% Unicode code points of the upper-half of the code page. +% \begin{macrocode} +tables: +tabInuitSCII[@"81] = { +@"1403, @"1404, @"1405, @"1406, @"140A, @"2026, @"140B, @"1431, +@"1432, @"1433, @"1434, @"1438, @"1439, @"1449, @"144E, @"144F, +@"1450, @"2018, @"2019, @"201C, @"201D, @"2022, @"2013, @"2014, +@"1451, @"2122, @"1455, @"1456, @"1466, @"146D, @"146E, @"146F, +@"00A0, @"1470, @"1472, @"1473, @"1483, @"148B, @"148C, @"148D, +@"148E, @"00A9, @"1490, @"1491, @"14A1, @"14A5, @"00AE, @"14A6, +@"FFFD, @"14A7, @"14A8, @"14AA, @"14AB, @"14BB, @"FFFD, @"14C2, +@"14C3, @"14C4, @"14C5, @"14C7, @"14C8, @"14D0, @"14EF, @"14F0, +@"14F1, @"14F2, @"14F4, @"14F5, @"1505, @"14D5, @"14D6, @"14D7, +@"14D8, @"14DA, @"14DB, @"14EA, @"1528, @"1529, @"152A, @"152B, +@"152D, @"152E, @"143E, @"1555, @"1556, @"1557, @"1558, @"1559, +@"155A, @"155D, @"1546, @"1547, @"1548, @"1549, @"154B, @"154C, +@"1550, @"157F, @"1580, @"1581, @"1582, @"1583, @"1584, @"1585, +@"158F, @"1590, @"1591, @"1592, @"1593, @"1594, @"1595, @"1671, +@"1672, @"1673, @"1674, @"1675, @"1676, @"1596, @"15A0, @"15A1, +@"15A2, @"15A3, @"15A4, @"15A5, @"15A6, @"157C, @"FFFD, @"FFFD}; +% \end{macrocode} +% Now we proceed with the expressions. First, we define some ligatures, though +% these should be part of the virtual font. On the other hand, these ligatures +% are proper Unicode characters, so go figure! +% \begin{macrocode} +expressions: +`f' `f' => @"FB00; +`f' `i' => @"FB01; +`f' `l' => @"FB02; +`f' `f' `i' => @"FB03; +`f' `f' `l' => @"FB04; +% \end{macrocode} +% And now we show how we map the ISCII characters to Unicode characters: +% if the character has ordinal number less than or equal to 127, then +% we just push to the output stream the character as it is. If its ordinal +% number is greater than 127, we consult the array and return its entry +% at the index which determined by the ordinal number minus 0x80 (128). +% Any other character is mapped to the Unicode \textit{replacement character}, +% which is used to replace an incoming character whose value is unknown or +% unpresentable in Unicode. +% \begin{macrocode} +@"00-@"7F => \1; +@"80-@"FF => #(tabInuitSCII[\1-@"80]); +. => @"FFFD; +%</inuitscii> +% \end{macrocode} +% +% \section{The Virtual Fonts} +% +% In this section we present only the general structure of the $\Omega$ +% virtual property list files that we had to create to allow users to enter +% directly Unicode text. The reader may wonder why we do not present the +% complete code of all four $\Omega$VP file? The answer simply is that each +% file is about 2,000 lines long with repeated information. In addition, the +% package does not inlcude these files, as the \texttt{ovp2ovf} program that +% is included with most \TeX\ distributions fails to process these +% files and so they are practically useless\footnote{The author used +% \texttt{ovp2ovf} version 1.5 to process the files, while most \TeX\ +% installations provide version 2.0, which is buggy.} Users who want to +% experiment with the files can obtain them directly from the author of the +% package. +% +% At the beggining of each $\Omega$VP file, we have the identification part +% and the assigment of the font dimensions. +% \begin{macrocode} +%<*OVP> +(FAMILY OINUIT) +(CODINGSCHEME Unicode Inuit) +(DESIGNSIZE R 10.0) +(COMMENT DESIGNSIZE IS IN POINTS) +(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE) +(FONTDIMEN + (SLANT R 0.0) + (SPACE R 0.5) + (STRETCH R 0.3) + (SHRINK R 0.1) + (XHEIGHT R 0.583) + (QUAD R 1.0) + ) +% \end{macrocode} +% We wanted each virtual font to inlcude the ASCII characters and the +% characters used in Inuktitut. That is why we have two \texttt{MAPFONT} +% definitions (more complex fonts, may need more \texttt{MAFONT} definitions). +% Note that we use the Computer Modern sans serif font as this matches better +% with the Nunacom font. +% \begin{macrocode} +(MAPFONT D 0 + (FONTNAME Inuit) + (FONTDSIZE R 10.0) + ) +(MAPFONT D 1 + (FONTNAME cmss10) + (FONTDSIZE R 10.0) + ) +% \end{macrocode} +% The ligature table contains the ``ordinary'' kerning information found in all% Computer Modern fonts plus some that deal with the Inuktitut charcaters. +% It is interesting to note that we cannot have ligature definitions, as +% these instructions cause \texttt{ovp2ovf} to crash! +% \begin{macrocode} +(LIGTABLE + (LABEL H 0066) + (KRN H 0027 R 0.069445) + (KRN H 003F R 0.069445) + (KRN H 0021 R 0.069445) + (KRN H 0029 R 0.069445) + (KRN H 005D R 0.069445) + (STOP) + ) +% \end{macrocode} +% Although each character entry is quite standard, we present just one so +% that can see what has to be done. +% \begin{macrocode} +(CHARACTER H 0021 + (CHARWD R 0.256) + (CHARHT R 0.689) + (CHARDP R 0.004) + (MAP + (SELECTFONT D 0) + (SETCHAR O 41) + ) + ) +%</OVP> +% \end{macrocode} +% +% \section*{Acknowledgments} +% +% I would like to thank Andrea Tomkins for giving me the right to redistribute +% the Nunacom font. I also thank Luis-Jacques Dorais, who explained to me the +% hyphenation rules of the Inuktitut language, and Dimitrios Filippou, who +% deciphered to me the secrets of transforming hyphenation rules into +% hyphenation patterns suitable for use with \TeX/$\Omega$. +% diff --git a/Master/texmf-dist/source/lambda/oinuit/oinuit.ins b/Master/texmf-dist/source/lambda/oinuit/oinuit.ins new file mode 100644 index 00000000000..9ead2e8bd40 --- /dev/null +++ b/Master/texmf-dist/source/lambda/oinuit/oinuit.ins @@ -0,0 +1,65 @@ +%% Copyright 2002 Apostolos Syropoulos +%% +%% This file is part of the `grtimes' package. +%% You are not allowed to modify its contents. +%% +\def\filedate{2002/07/21} +\def\batchfile{oinuit.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\preamble + + (c) copyright 2002 Apostolos Syropoulos + This program can be redistributed and/or modified under the terms + of the LaTeX Project Public License Distributed from CTAN + archives in directory macros/latex/base/lppl.txt; either + version 1 of the License, or any later version. + use or alter this file in any way. + + Please report errors or suggestions for improvement to + + Apostolos Syropoulos + 366, 28th October Str. + GR-671 00 Xanthi, GREECE + apostolo@ocean1.ee.duth.gr or apostolo@obelix.ee.duth.gr + +\endpreamble + + +\keepsilent + +\generate{\generateFile{oinuit.sty}{f}{\from{oinuit.dtx}{oinuit}} + \generateFile{litenc.def}{f}{\from{oinuit.dtx}{LITenc}} + \generateFile{litcmr.fd}{f}{\from{oinuit.dtx}{LITcmr}} + \generateFile{inuit.tex}{f}{\from{oinuit.dtx}{Hyphenation}}} +\postamble +\endpostamble +\generate{\generateFile{Ninuit2uni.otp}{f}{\from{oinuit.dtx}{Ninuit2uni}} + \generateFile{Qinuit2uni.otp}{f}{\from{oinuit.dtx}{Qinuit2uni}} + \generateFile{inuitscii.otp}{f}{\from{oinuit.dtx}{inuitscii}}} +\Msg{********************************************************} +\Msg{To finish installation you have to create the directory } +\Msg{/omega/lambda/oinuit and copy there the .fd, the .end } +\Msg{and the .sty files. The .otp files should be copied to } +\Msg{the directory omega/ocp/oinuit, which must be created. } +\Msg{Now, rehash your TeX installation , if it is required to} +\Msg{do this. Optionally, you can regenerate the Lambda } +\Msg{format. } +\Msg{ Happy Inuiktitut ``Omega''-ing!} +\Msg{********************************************************} +\endinput diff --git a/Master/texmf-dist/source/lambda/oinuit/oinuit.sty b/Master/texmf-dist/source/lambda/oinuit/oinuit.sty new file mode 100644 index 00000000000..a2444870fa7 --- /dev/null +++ b/Master/texmf-dist/source/lambda/oinuit/oinuit.sty @@ -0,0 +1,100 @@ +% (c) copyright 2002 Apostolos Syropoulos +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or any later version. +% +% Please report errors or suggestions for improvement to +% +% Apostolos Syropoulos +% 366, 28th October Str. +% GR-671 00 Xanthi, GREECE +% apostolo@ocean1.ee.duth.gr or apostolo@obelix.ee.duth.gr +% +%% onuit.sty +\IfFileExists{ot1uctt.fd}{% + \def\ttdefault{uctt}}{}% +% +\DeclareOption{nunavut}{% + \ocp\InInuit=Ninuit2uni + \ocplist\InInuitList= + \addbeforeocplist 1 \InInuit + \nullocplist +} +% +\DeclareOption{quebec}{% + \ocp\InInuit=Qinuit2uni + \ocplist\InInuitList= + \addbeforeocplist 1 \InInuit + \nullocplist +} +% +\DeclareOption{iscii}{% + \ocp\InInuit=inuitscii + \ocplist\InInuitList= + \addbeforeocplist 1 \InInuit + \nullocplist +} +% +\DeclareOption{utf8}{% + \ocp\InInuit=inutf8 + \ocplist\InInuitList= + \addbeforeocplist 1 \InInuit + \nullocplist +} +% +\DeclareOption{ucs2}{% + \ocp\InInuit=id + \ocplist\InInuitList= + \addbeforeocplist 1 \InInuit + \nullocplist +} +% +\ExecuteOptions{nunavut} +\ProcessOptions +% +\input litenc.def +\def\selectlanguage#1{% + \expandafter\ifx\csname l@#1\endcsname\relax% + \typeout{^^J Error: No hyphenation pattern for language #1 loaded,}% + \typeout{ default hyphenation patterns are used.^^J}% + \language=0% + \else\language=\csname l@#1\endcsname\fi} +% +\def\inuittext{% + \fontencoding{LIT}\selectfont% + \def\encodingdefault{LIT}% + \selectlanguage{inuit}% + \pushocplist\InInuitList% +} +% +\newenvironment{inuit}{\fontencoding{LIT}\selectfont% + \selectlanguage{inuit}% + \pushocplist\InInuitList}% + {\popocplist} +% +\DeclareRobustCommand{\textinuit}[1]{{% + \leavevmode\fontencoding{LIT}\selectfont% + \selectlanguage{inuit}% + \pushocplist\InInuitList #1}} +% +\DeclareRobustCommand{\InuitToday}{{% + \fontencoding{LIT}\selectfont% + \number\day\space% + \ifcase\month% + \or ^^^^1528^^^^14c4^^^^140a^^^^1546 %January + \or ^^^^1555^^^^1433^^^^140a^^^^1546 %February + \or ^^^^14ab^^^^1550^^^^14ef %March + \or ^^^^140a^^^^1403^^^^1433^^^^1546^^^^14ea %April + \or ^^^^14aa^^^^1403 %May + \or ^^^^152a^^^^14c2 %June + \or ^^^^152a^^^^14da^^^^1403 %July + \or ^^^^140a^^^^1405^^^^148d^^^^1505 %August + \or ^^^^14ef^^^^144e^^^^14bb^^^^1433^^^^1546 %September + \or ^^^^1505^^^^1483^^^^1450^^^^1433^^^^1546 %October + \or ^^^^14c4^^^^1555^^^^14bb^^^^1433^^^^1546 %November + \or ^^^^144e^^^^14ef^^^^14bb^^^^1433^^^^1546 %December + \fi% + \number\year}} +% +\endinput |