%multling.tex
%Written by Ivar Aavatsmark, March 1992, last revision January 1997.
%
%This file is included in the file plain.tex by replacing the statement
%   \input hyphen
%by
%   \input multling
%
%In the file necessary modifications are defined to enable TeX 3.x to 
%run with the dc fonts.
%The 8-bit font ISO Latin 1 has to be available on the computer.
%
%The file creates a multilingual version of TeX for the languages
%English, German, French, Italian, Polish,
%Danish, Norwegian, Swedish, Icelandic and Finnish.
%Extension to other languages or exchange of languages is
%straightforward, provided the new language is written with dc characters. 
%
%The languages (ie the rules for hyphenation, quotes and period space)
%are called by
%\language\english  %by default
%\language\german
%\language\french
%\language\italian
%\language\polish
%\language\danish
%\language\norwegian
%\language\swedish
%\language\icelandic
%\language\finnish
%
%The choice of language can be tested on by writing:
%\ifnum\language=\englishhyphenation
%and likewise for the other languages.
%
%The following new control words and control symbols are defined in
%the file:
%\DH \dh  %edh, Ð, ð
%\TH \th  %thorn, Þ, þ
%\NG \ng  %Lappish eng
%\Y  \y   %Dutch ij
%\DJ \dj  %Croatian and Lappish d bar
%\Lp \lp  %Catalan l dot, l·
%\p       %prime, only for d, t, l, L and g
%\r       %ring over letter
%\k       %ogonek under letter, right adjusted for A, E, a and u
%\|       %control symbol to split characters, used to achieve hyphenation
%         %at - and behind ' and / and to treat ligatures as single characters 
%\SS      %SS = capital ß, used for hyphenation of German words with capital ß
%\CK \ck  %used for hyphenation of German words with ck
%\BBB \DDD \FFF \GGG \KKK \LLL \MMM \NNN \PPP \RRR \SSS \TTT
%\bbb \ddd \fff \ggg \kkk \lll \mmm \nnn \ppp \rrr \sss \ttt
%         %for correct hyphenation of the word Bettuch, write: Be\ttt uch
%\ggghyph \lllhyph  %same as \ggg and \lll
%\pound             %pound sterling £
%\promille          %per thousand 0/00
%\?                 %inverse question mark ¿
%\!                 %inverse exclamation mark ¡
%\caret             %caret ^
%\wave              %repeat mark ~
%\underscore        %underscore _
%\visiblespace      %visible space
%\{ \}              %braces { }, valid also in text mode
%\backslash         %backslash \, valid also in text mode
%  \qt   \lohi   \hihi   \hiqq   \ltgt   \gtlt   \gtgt  %quotes
%\siqt \silohi \sihihi \sihiqq \siltgt \sigtlt \sigtgt  %single quotes
%\upcase   %uppercase of dc characters with nonzero \uccode
%\lowcase  %lowercase of dc characters with nonzero \lccode
%\carriagereturncharacter  %character "0D (,) meant for use in macros
%\backslashcharacter       %character "5C (\) meant for use in macros
%\leftbracecharacter       %character "7B ({) meant for use in macros
%\rightbracecharacter      %character "7D (}) meant for use in macros
%
%=======================================================================
%
%For the definitions in this file to be correct, the following changes
%must be done in the source code of TeX (Web2c 14.05.1992):
%
%in the file tex/tex.ch the assignment
%     @!trie_size=24000;
%should be replaced by:
%     @!trie_size=60000;
%
%in the file tex/tex.ch the assignments
%     @!trie_op_size=750;
%     @!neg_trie_op_size=-750;
%should be replaced by:
%     @!trie_op_size=2000;
%     @!neg_trie_op_size=-2000;
%
%in the file tex/tex.ch the lines
%     @y
%     for i:=0 to @'37 do xchr[i]:=chr(i);
%     for i:=@'177 to @'377 do xchr[i]:=chr(i);
%     @z
%must be replaced by:
%     @y
%     for i:=0 to @'37 do xchr[i]:=chr(i);
%     for i:=@'177 to @'377 do xchr[i]:=chr(i);
%     xchr[@'377]:=chr(@'337);
%     xchr[@'337]:=chr(@'377);
%     @z
%
%in the file tex/tex.ch the lines
%     @x
%     @<Character |k| cannot be printed@>=
%       (k<" ")or(k>"~")
%     @y
%     @<Character |k| cannot be printed@>=
%       (k<" ")or((k>"~")and(k<192))or(k=215)or(k=223)or(k=247)
%     @z
%must be inserted before the section
%     % [4.51] Open the pool file
%
%in the file lib/site.h the line
%     #undef  NONASCII
%must be replaced by:
%     #define NONASCII
%
%=======================================================================

%The suggested trie_size values should suffice for most installations
%with not more than 10 languages.

%The above changes imply that:
%1. ÿ = ^^df   and   ß = ^^ff
%2. The letters from ^^c0 (À) to ^^ff (ß), except ^^d7, ^^df, ^^f7, 
%   can be written to file or display.

\ifxß^^ff\else\errmessage{ERROR: ß not equal ^%
                                              ^ff}\fi

%Initially all characters from ^^80 to ^^ff have category 12,
%\lccode 0, \uccode 0 and \sfcode 1000.
%Characters that can be used in control words, must have category 11. 
%Characters that can take part in hyphenation, must have category 11 or 12
%and must have their \lccode different from 0.
%Capital characters that can occur as initials, should have \sfcode 999.

%=======================================================================

%For all characters from ^^c0 to ^^ff, except ^^d7, ^^df, ^^f7,
%the category is set to 11, \lccode and \uccode are defined 
%and \sfcode is set to 999 for the capitals.

%ISO Latin 1 letters:

\catcode`À=11      \catcode`à=11     % A,a grave
\catcode`Á=11      \catcode`á=11     % A,a acute
\catcode`Â=11      \catcode`â=11     % A,a circumflex
\catcode`Ã=11      \catcode`ã=11     % A,a tilde
\catcode`Ä=11      \catcode`ä=11     % A,a umlaut
\catcode`Å=11      \catcode`å=11     % A,a ring
\catcode`Æ=11      \catcode`æ=11     % AE,ae
\catcode`Ç=11      \catcode`ç=11     % C,c cedilla
\catcode`È=11      \catcode`è=11     % E,e grave
\catcode`É=11      \catcode`é=11     % E,e acute
\catcode`Ê=11      \catcode`ê=11     % E,e circumflex
\catcode`Ë=11      \catcode`ë=11     % E,e dieresis
\catcode`Ì=11      \catcode`ì=11     % I,i grave
\catcode`Í=11      \catcode`í=11     % I,i acute
\catcode`Î=11      \catcode`î=11     % I,i circumflex
\catcode`Ï=11      \catcode`ï=11     % I,i dieresis
\catcode`Ð=11      \catcode`ð=11     % Edh,edh
\catcode`Ñ=11      \catcode`ñ=11     % N,n tilde
\catcode`Ò=11      \catcode`ò=11     % O,o grave
\catcode`Ó=11      \catcode`ó=11     % O,o acute
\catcode`Ô=11      \catcode`ô=11     % O,o circumflex
\catcode`Õ=11      \catcode`õ=11     % O,o tilde
\catcode`Ö=11      \catcode`ö=11     % O,o umlaut
\catcode`Ø=11      \catcode`ø=11     % O,o slash
\catcode`Ù=11      \catcode`ù=11     % U,u grave
\catcode`Ú=11      \catcode`ú=11     % U,u acute
\catcode`Û=11      \catcode`û=11     % U,u circumflex
\catcode`Ü=11      \catcode`ü=11     % U,u umlaut
\catcode`Ý=11      \catcode`ý=11     % Y,y acute
\catcode`Þ=11      \catcode`þ=11     % Thorn,thorn
                   \catcode`ß=11     % eszett

%Capital ISO Latin 1 letters:

\lccode`À=`à          \uccode`À=`À          \sfcode`À=999     % \`A
\lccode`Á=`á          \uccode`Á=`Á          \sfcode`Á=999     % \'A
\lccode`Â=`â          \uccode`Â=`Â          \sfcode`Â=999     % \^A
\lccode`Ã=`ã          \uccode`Ã=`Ã          \sfcode`Ã=999     % \~A
\lccode`Ä=`ä          \uccode`Ä=`Ä          \sfcode`Ä=999     % \"A
\lccode`Å=`å          \uccode`Å=`Å          \sfcode`Å=999     % \AA = \r A
\lccode`Æ=`æ          \uccode`Æ=`Æ          \sfcode`Æ=999     % \AE
\lccode`Ç=`ç          \uccode`Ç=`Ç          \sfcode`Ç=999     % \c C
\lccode`È=`è          \uccode`È=`È          \sfcode`È=999     % \`E
\lccode`É=`é          \uccode`É=`É          \sfcode`É=999     % \'E
\lccode`Ê=`ê          \uccode`Ê=`Ê          \sfcode`Ê=999     % \^E
\lccode`Ë=`ë          \uccode`Ë=`Ë          \sfcode`Ë=999     % \"E
\lccode`Ì=`ì          \uccode`Ì=`Ì          \sfcode`Ì=999     % \`I
\lccode`Í=`í          \uccode`Í=`Í          \sfcode`Í=999     % \'I
\lccode`Î=`î          \uccode`Î=`Î          \sfcode`Î=999     % \^I
\lccode`Ï=`ï          \uccode`Ï=`Ï          \sfcode`Ï=999     % \"I
\lccode`Ð=`ð          \uccode`Ð=`Ð          \sfcode`Ð=999     % \DH
\lccode`Ñ=`ñ          \uccode`Ñ=`Ñ          \sfcode`Ñ=999     % \~N
\lccode`Ò=`ò          \uccode`Ò=`Ò          \sfcode`Ò=999     % \`O
\lccode`Ó=`ó          \uccode`Ó=`Ó          \sfcode`Ó=999     % \'O
\lccode`Ô=`ô          \uccode`Ô=`Ô          \sfcode`Ô=999     % \^O
\lccode`Õ=`õ          \uccode`Õ=`Õ          \sfcode`Õ=999     % \~O
\lccode`Ö=`ö          \uccode`Ö=`Ö          \sfcode`Ö=999     % \"O
\lccode`Ø=`ø          \uccode`Ø=`Ø          \sfcode`Ø=999     % \O
\lccode`Ù=`ù          \uccode`Ù=`Ù          \sfcode`Ù=999     % \`U
\lccode`Ú=`ú          \uccode`Ú=`Ú          \sfcode`Ú=999     % \'U
\lccode`Û=`û          \uccode`Û=`Û          \sfcode`Û=999     % \^U
\lccode`Ü=`ü          \uccode`Ü=`Ü          \sfcode`Ü=999     % \"U
\lccode`Ý=`ý          \uccode`Ý=`Ý          \sfcode`Ý=999     % \'Y
\lccode`Þ=`þ          \uccode`Þ=`Þ          \sfcode`Þ=999     % \TH

%Small ISO Latin 1 letters:

\lccode`à=`à          \uccode`à=`À        % \`a
\lccode`á=`á          \uccode`á=`Á        % \'a
\lccode`â=`â          \uccode`â=`Â        % \^a
\lccode`ã=`ã          \uccode`ã=`Ã        % \~a
\lccode`ä=`ä          \uccode`ä=`Ä        % \"a
\lccode`å=`å          \uccode`å=`Å        % \aa = \r a
\lccode`æ=`æ          \uccode`æ=`Æ        % \ae
\lccode`ç=`ç          \uccode`ç=`Ç        % \c c
\lccode`è=`è          \uccode`è=`È        % \`e
\lccode`é=`é          \uccode`é=`É        % \'e
\lccode`ê=`ê          \uccode`ê=`Ê        % \^e
\lccode`ë=`ë          \uccode`ë=`Ë        % \"e
\lccode`ì=`ì          \uccode`ì=`Ì        % \`\i
\lccode`í=`í          \uccode`í=`Í        % \'\i
\lccode`î=`î          \uccode`î=`Î        % \^\i
\lccode`ï=`ï          \uccode`ï=`Ï        % \"\i
\lccode`ð=`ð          \uccode`ð=`Ð        % \dh
\lccode`ñ=`ñ          \uccode`ñ=`Ñ        % \~n
\lccode`ò=`ò          \uccode`ò=`Ò        % \`o
\lccode`ó=`ó          \uccode`ó=`Ó        % \'o
\lccode`ô=`ô          \uccode`ô=`Ô        % \^o
\lccode`õ=`õ          \uccode`õ=`Õ        % \~o
\lccode`ö=`ö          \uccode`ö=`Ö        % \"o
\lccode`ø=`ø          \uccode`ø=`Ø        % \o
\lccode`ù=`ù          \uccode`ù=`Ù        % \`u
\lccode`ú=`ú          \uccode`ú=`Ú        % \'u
\lccode`û=`û          \uccode`û=`Û        % \^u
\lccode`ü=`ü          \uccode`ü=`Ü        % \"u
\lccode`ý=`ý          \uccode`ý=`Ý        % \'y
\lccode`þ=`þ          \uccode`þ=`Þ        % \th
\lccode`ß=`ß          \uccode`ß=`^^df     % \ss

%=======================================================================

%For all characters from ^^80 to ^^bc, except ^^9f, plus ^^19, ^^1a, 
%^^d7, ^^df and ^^f7, \lccode and \uccode are defined and 
%\sfcode is set to 999 for the capitals.

%Capital non ISO Latin 1 letters:

\lccode`^^80=`^^a0    \uccode`^^80=`^^80    \sfcode`^^80=999   % \u A
\lccode`^^81=`^^a1    \uccode`^^81=`^^81    \sfcode`^^81=999   % \k A
\lccode`^^82=`^^a2    \uccode`^^82=`^^82    \sfcode`^^82=999   % \'C
\lccode`^^83=`^^a3    \uccode`^^83=`^^83    \sfcode`^^83=999   % \v C
\lccode`^^84=`^^a4    \uccode`^^84=`^^84    \sfcode`^^84=999   % \v D
\lccode`^^85=`^^a5    \uccode`^^85=`^^85    \sfcode`^^85=999   % \v E
\lccode`^^86=`^^a6    \uccode`^^86=`^^86    \sfcode`^^86=999   % \k E
\lccode`^^87=`^^a7    \uccode`^^87=`^^87    \sfcode`^^87=999   % \u G
\lccode`^^88=`^^a8    \uccode`^^88=`^^88    \sfcode`^^88=999   % \'L
\lccode`^^89=`^^a9    \uccode`^^89=`^^89    \sfcode`^^89=999   % \p L
\lccode`^^8a=`^^aa    \uccode`^^8a=`^^8a    \sfcode`^^8a=999   % \L
\lccode`^^8b=`^^ab    \uccode`^^8b=`^^8b    \sfcode`^^8b=999   % \'N
\lccode`^^8c=`^^ac    \uccode`^^8c=`^^8c    \sfcode`^^8c=999   % \v N
\lccode`^^8d=`^^ad    \uccode`^^8d=`^^8d    \sfcode`^^8d=999   % \NG
\lccode`^^8e=`^^ae    \uccode`^^8e=`^^8e    \sfcode`^^8e=999   % \H O
\lccode`^^8f=`^^af    \uccode`^^8f=`^^8f    \sfcode`^^8f=999   % \'R
\lccode`^^90=`^^b0    \uccode`^^90=`^^90    \sfcode`^^90=999   % \v R
\lccode`^^91=`^^b1    \uccode`^^91=`^^91    \sfcode`^^91=999   % \'S
\lccode`^^92=`^^b2    \uccode`^^92=`^^92    \sfcode`^^92=999   % \v S
\lccode`^^93=`^^b3    \uccode`^^93=`^^93    \sfcode`^^93=999   % \c S
\lccode`^^94=`^^b4    \uccode`^^94=`^^94    \sfcode`^^94=999   % \v T
\lccode`^^95=`^^b5    \uccode`^^95=`^^95    \sfcode`^^95=999   % \c T
\lccode`^^96=`^^b6    \uccode`^^96=`^^96    \sfcode`^^96=999   % \H U
\lccode`^^97=`^^b7    \uccode`^^97=`^^97    \sfcode`^^97=999   % \r U
\lccode`^^98=`^^b8    \uccode`^^98=`^^98    \sfcode`^^98=999   % \"Y
\lccode`^^99=`^^b9    \uccode`^^99=`^^99    \sfcode`^^99=999   % \'Z
\lccode`^^9a=`^^ba    \uccode`^^9a=`^^9a    \sfcode`^^9a=999   % \v Z
\lccode`^^9b=`^^bb    \uccode`^^9b=`^^9b    \sfcode`^^9b=999   % \.Z
\lccode`^^9c=`^^bc    \uccode`^^9c=`^^9c    \sfcode`^^9c=999   % \Y
\lccode`^^9d=`i       \uccode`^^9d=`^^9d    \sfcode`^^9d=999   % \.I
\lccode`^^d7=`^^f7    \uccode`^^d7=`^^d7    \sfcode`^^d7=999   % \OE
\lccode`^^df=`ß       \uccode`^^df=`^^df    \sfcode`^^df=999   % \SS

%Small non ISO Latin 1 letters:

\lccode`^^19=`^^19    \uccode`^^19=`I      % \i
\lccode`^^1a=`^^1a    \uccode`^^1a=`J      % \j
\lccode`^^9e=`^^9e    \uccode`^^9e=`Ð      % \dj
\lccode`^^a0=`^^a0    \uccode`^^a0=`^^80   % \u a
\lccode`^^a1=`^^a1    \uccode`^^a1=`^^81   % \k a
\lccode`^^a2=`^^a2    \uccode`^^a2=`^^82   % \'c
\lccode`^^a3=`^^a3    \uccode`^^a3=`^^83   % \v c
\lccode`^^a4=`^^a4    \uccode`^^a4=`^^84   % \p d
\lccode`^^a5=`^^a5    \uccode`^^a5=`^^85   % \v e
\lccode`^^a6=`^^a6    \uccode`^^a6=`^^86   % \k e
\lccode`^^a7=`^^a7    \uccode`^^a7=`^^87   % \u g
\lccode`^^a8=`^^a8    \uccode`^^a8=`^^88   % \'l
\lccode`^^a9=`^^a9    \uccode`^^a9=`^^89   % \p l
\lccode`^^aa=`^^aa    \uccode`^^aa=`^^8a   % \l
\lccode`^^ab=`^^ab    \uccode`^^ab=`^^8b   % \'n
\lccode`^^ac=`^^ac    \uccode`^^ac=`^^8c   % \v n
\lccode`^^ad=`^^ad    \uccode`^^ad=`^^8d   % \ng
\lccode`^^ae=`^^ae    \uccode`^^ae=`^^8e   % \H o
\lccode`^^af=`^^af    \uccode`^^af=`^^8f   % \'r
\lccode`^^b0=`^^b0    \uccode`^^b0=`^^90   % \v r
\lccode`^^b1=`^^b1    \uccode`^^b1=`^^91   % \'s
\lccode`^^b2=`^^b2    \uccode`^^b2=`^^92   % \v s
\lccode`^^b3=`^^b3    \uccode`^^b3=`^^93   % \c s
\lccode`^^b4=`^^b4    \uccode`^^b4=`^^94   % \p t
\lccode`^^b5=`^^b5    \uccode`^^b5=`^^95   % \c t
\lccode`^^b6=`^^b6    \uccode`^^b6=`^^96   % \H u
\lccode`^^b7=`^^b7    \uccode`^^b7=`^^97   % \r u
\lccode`^^b8=`^^b8    \uccode`^^b8=`^^98   % \"y
\lccode`^^b9=`^^b9    \uccode`^^b9=`^^99   % \'z
\lccode`^^ba=`^^ba    \uccode`^^ba=`^^9a   % \v z
\lccode`^^bb=`^^bb    \uccode`^^bb=`^^9b   % \.z
\lccode`^^bc=`^^bc    \uccode`^^bc=`^^9c   % \y
\lccode`^^f7=`^^f7    \uccode`^^f7=`^^d7   % \oe

%=======================================================================

%Language section.
%Extensions or exchange of languages should be done in this section.

%Hyphenation patterns for English, German, French, Italian, Polish, 
%Danish, Norwegian, Swedish, Icelandic and Finnish.

%Language dependent modifications:
%French and Italian: \lccode`\'=`\'
%Croatian and Lappish: \lccode`Ð=`^^9e
%Turkish: \lccode`I=`^^19  \uccode`i=`^^9d

\count19=-1

\newlanguage\englishhyphenation
\begingroup
\language\englishhyphenation
\input enghyph \relax
\endgroup

\newlanguage\germanhyphenation
\begingroup
\language\germanhyphenation
\input gerhyph \relax
\endgroup

\newlanguage\frenchhyphenation
\begingroup
\language\frenchhyphenation
\lccode`\'=`\'
\input frehyph \relax
\endgroup

\newlanguage\italianhyphenation
\begingroup
\language\italianhyphenation
\lccode`\'=`\'
\input itahyph \relax
\endgroup

\newlanguage\polishhyphenation
\begingroup
\language\polishhyphenation
\input polhyph \relax
\endgroup

\newlanguage\danishhyphenation
\begingroup
\language\danishhyphenation
\input danhyph \relax
\endgroup

\newlanguage\norwegianhyphenation
\begingroup
\language\norwegianhyphenation
\input norhyph \relax
\endgroup

\newlanguage\swedishhyphenation
\begingroup
\language\swedishhyphenation
\input swehyph \relax
\endgroup

\newlanguage\icelandichyphenation
\begingroup
\language\icelandichyphenation
\input icehyph \relax
\endgroup

\newlanguage\finnishhyphenation
\begingroup
\language\finnishhyphenation
\input finhyph \relax
\endgroup

\def\english{\englishhyphenation\lccode`\'=0 \righthyphenmin=3 
             \nonfrenchspacing \let\qt=\hihi \let\siqt=\sihihi
             \immediate\write16{Selected language: English}}
\def\german{\germanhyphenation\lccode`\'=0 \righthyphenmin=2 
            \nonfrenchspacing \let\qt=\lohi \let\siqt=\silohi
            \immediate\write16{Selected language: German}}
\def\french{\frenchhyphenation\lccode`\'=`\' \righthyphenmin=3 
            \frenchspacing \let\qt=\ltgt \let\siqt=\siltgt
            \immediate\write16{Selected language: French}}
\def\italian{\italianhyphenation\lccode`\'=`\' \righthyphenmin=2 
             \nonfrenchspacing \let\qt=\ltgt \let\siqt=\siltgt
             \immediate\write16{Selected language: Italian}}
\def\polish{\polishhyphenation\lccode`\'=0 \righthyphenmin=2 
            \nonfrenchspacing \let\qt=\lohi \let\siqt=\silohi
            \immediate\write16{Selected language: Polish}}
\def\danish{\danishhyphenation\lccode`\'=0 \righthyphenmin=2 
            \nonfrenchspacing \let\qt=\lohi \let\siqt=\silohi
            \immediate\write16{Selected language: Danish}}
\def\norwegian{\norwegianhyphenation\lccode`\'=0 \righthyphenmin=2 
               \nonfrenchspacing \let\qt=\ltgt \let\siqt=\siltgt
               \immediate\write16{Selected language: Norwegian}}
\def\swedish{\swedishhyphenation\lccode`\'=0 \righthyphenmin=2 
             \nonfrenchspacing \let\qt=\hiqq \let\siqt=\sihiqq
             \immediate\write16{Selected language: Swedish}}
\def\icelandic{\icelandichyphenation\lccode`\'=0 \righthyphenmin=2 
               \nonfrenchspacing \let\qt=\lohi \let\siqt=\silohi
               \immediate\write16{Selected language: Icelandic}}
\def\finnish{\finnishhyphenation\lccode`\'=0 \righthyphenmin=2 
             \nonfrenchspacing \let\qt=\hiqq \let\siqt=\sihiqq
             \immediate\write16{Selected language: Finnish}}

\everyjob{\immediate\write16{Default language: English}}

%=======================================================================

%Macros to facilitate hyphenation.
%Here \penalty10000 is used instead of \nobreak to avoid problems when 
%treating macros expanded by \write.

%The control symbol \| is used to achieve hyphenation at a hyphen (-)
%and behind an apostrophe (') and a slash (/) and to treat ligatures 
%as single characters.
\def\|{\relax\ifmmode\Vert\else\penalty10000\hskip0pt\fi}

%Macro for hyphenating German words with ck
\def\CK{\kern0pt\discretionary{K-}{}{C}\penalty10000\hskip0pt K}
\def\ck{\kern0pt\discretionary{k-}{}{c}\penalty10000\hskip0pt k}

%Macros for three equal consonants that have been contracted to two.
%By hyphenation of such consonant groups, 2+1 equal consonants appear.

\def\BBB{BB\kern0pt\discretionary{-}{B}{}\penalty10000\hskip0pt}
\def\DDD{DD\kern0pt\discretionary{-}{D}{}\penalty10000\hskip0pt}
\def\FFF{FF\kern0pt\discretionary{-}{F}{}\penalty10000\hskip0pt}
\def\GGG{GG\kern0pt\discretionary{-}{G}{}\penalty10000\hskip0pt}
\def\KKK{KK\kern0pt\discretionary{-}{K}{}\penalty10000\hskip0pt}
\def\LLL{LL\kern0pt\discretionary{-}{L}{}\penalty10000\hskip0pt}
\def\MMM{MM\kern0pt\discretionary{-}{M}{}\penalty10000\hskip0pt}
\def\NNN{NN\kern0pt\discretionary{-}{N}{}\penalty10000\hskip0pt}
\def\PPP{PP\kern0pt\discretionary{-}{P}{}\penalty10000\hskip0pt}
\def\RRR{RR\kern0pt\discretionary{-}{R}{}\penalty10000\hskip0pt}
\def\SSS{SS\kern0pt\discretionary{-}{S}{}\penalty10000\hskip0pt}
\def\TTT{TT\kern0pt\discretionary{-}{T}{}\penalty10000\hskip0pt}

\def\bbb{bb\kern0pt\discretionary{-}{b}{}\penalty10000\hskip0pt}
\def\ddd{dd\kern0pt\discretionary{-}{d}{}\penalty10000\hskip0pt}
\def\fff{ff\kern0pt\discretionary{-}{f}{}\penalty10000\hskip0pt}
\def\ggg{gg\kern0pt\discretionary{-}{g}{}\penalty10000\hskip0pt}
\def\kkk{kk\kern0pt\discretionary{-}{k}{}\penalty10000\hskip0pt}
\def\lll{ll\kern0pt\discretionary{-}{l}{}\penalty10000\hskip0pt}
\def\mmm{mm\kern0pt\discretionary{-}{m}{}\penalty10000\hskip0pt}
\def\nnn{nn\kern0pt\discretionary{-}{n}{}\penalty10000\hskip0pt}
\def\ppp{pp\kern0pt\discretionary{-}{p}{}\penalty10000\hskip0pt}
\def\rrr{rr\kern0pt\discretionary{-}{r}{}\penalty10000\hskip0pt}
\def\sss{ss\kern0pt\discretionary{-}{s}{}\penalty10000\hskip0pt}
\def\ttt{tt\kern0pt\discretionary{-}{t}{}\penalty10000\hskip0pt}

\let\ggghyph=\ggg
\let\lllhyph=\lll

%Macro for Catalan l dot (l·):
\def\Lp{\kern0pt\discretionary{L-}{}{L\/\setbox0=\hbox{}%
        {\ooalign{\hidewidth\raise0.65ex\hbox{.}\hidewidth\crcr
                  \unhbox0}}\kern0.02em}\penalty10000\hskip0pt}
\def\lp{\kern0pt\discretionary{l-}{}{l\/\setbox0=\hbox{}%
        {\ooalign{\hidewidth\raise0.65ex\hbox{.}\hidewidth\crcr
                  \unhbox0}}\kern0.02em}\penalty10000\hskip0pt}

%The macros \Lp and \lp would have been much simpler if L· and l· had
%been implemented in the dc fonts:
%\def\Lp{\kern0pt\discretionary{L-}{}{\char`^^xz}\penalty10000\hskip0pt}
%\def\lp{\kern0pt\discretionary{l-}{}{\char`^^yz}\penalty10000\hskip0pt}

%=======================================================================

%Definition of characters.
%It is essential to use \chardef in the definition of these characters
%to prevent expansion when using \edef or \write.
%
%These active characters (except for ¿) cannot be used with \uppercase.

\catcode`\§=\active  %section mark (^^a7)
\chardef§="9F
\catcode`\¡=\active  %inverse exclamation mark (^^a1)
\chardef¡="BD
\catcode`\¿=\active  %inverse question mark (^^bf)
\chardef¿="BE
\catcode`\£=\active  %pound sterling (^^a3)
\chardef£="BF
\catcode`\«=\active  %guillemet less (^^ab)
\chardef«="13
\catcode`\»=\active  %guillemet greater (^^bb)
\chardef»="14
\catcode`\±=\active  %plus minus (^^b1)
\mathchardef±="2206  %\pm
\catcode`\·=\active  %multiplication (^^b7)
\mathchardef·="2201  %\cdot

%Now
% ^^a1 = ¡ but \char`^^a1 = \k a  and \the\lccode`^^a1 = 161 = "A1
% ^^a3 = £ but \char`^^a3 = \v c  and \the\lccode`^^a3 = 163 = "A3
% ^^a7 = § but \char`^^a7 = \u g  and \the\lccode`^^a7 = 167 = "A7
% ^^ab = « but \char`^^ab = \'n   and \the\lccode`^^ab = 171 = "AB
% ^^b1 = ± but \char`^^b1 = \'s   and \the\lccode`^^b1 = 177 = "B1
% ^^b7 = · but \char`^^b7 = \r u  and \the\lccode`^^b7 = 183 = "B7
% ^^bb = » but \char`^^bb = \.z   and \the\lccode`^^bb = 187 = "BB
% ^^bf = ¿ but \char`^^bf = £     and \the\lccode`^^bf =   0 = "00

%=======================================================================

%Macros for special letters.
%The forms \char`^^xy, \char`\^^xy and \char"XY are not equivalent.
%\char`\^^xy gives an error when using \edef or \write.
%\char"XY just gives the typed character with \upcase and \lowcase.

\def\AA{Å}
\def\aa{å}
\def\AE{Æ}
\def\ae{æ}
\def\DH{Ð}            %Edh
\def\dh{ð}            %edh
\def\OE{\char`^^d7 }  %OE
\def\oe{\char`^^f7 }  %oe
\def\O{Ø}
\def\o{ø}
\def\TH{Þ}            %Thorn
\def\th{þ}            %thorn
\def\SS{\char`^^df }  %SS = capital ß
\def\ss{ß}

\def\i{\char`^^19 }   %Turkish dotless i
\def\j{\char`^^1a }   %dotless j
\def\L{\char`^^8a }   %hard Polish L
\def\l{\char`^^aa }   %hard Polish l
\def\NG{\char`^^8d }  %Lappish Eng
\def\ng{\char`^^ad }  %Lappish eng
\def\Y{\char`^^9c }   %Dutch IJ
\def\y{\char`^^bc }   %Dutch ij
\def\DJ{Ð}            %Croatian and Lappish D bar
\def\dj{\char`^^9e }  %Croatian and Lappish d bar

%=======================================================================

%Macros for diacritical marks.
%Braces cannot be used around the \char`^^xy expressions, because that
%would give an error when using the corresponding macro in \hyphenation.

%grave:
\def\`#1{\ifx#1AÀ\else\ifx#1EÈ\else\ifx#1IÌ\else\ifx#1OÒ\else\ifx#1UÙ\else
         \ifx#1aà\else\ifx#1eè\else\ifx#1\i ì\else\ifx#1oò\else\ifx#1uù\else
         {\accent"00 #1}\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}

%acute:
\def\'#1{\ifx#1AÁ\else\ifx#1C\char`^^82 \else\ifx#1EÉ\else\ifx#1IÍ\else
         \ifx#1L\char`^^88 \else\ifx#1N\char`^^8b \else\ifx#1OÓ\else
         \ifx#1R\char`^^8f \else\ifx#1S\char`^^91 \else\ifx#1UÚ\else
         \ifx#1YÝ\else\ifx#1Z\char`^^99 \else
         \ifx#1aá\else\ifx#1c\char`^^a2 \else\ifx#1eé\else\ifx#1\i í\else
         \ifx#1l\char`^^a8 \else\ifx#1n\char`^^ab \else\ifx#1oó\else
         \ifx#1r\char`^^af \else\ifx#1s\char`^^b1 \else\ifx#1uú\else
         \ifx#1yý\else\ifx#1z\char`^^b9 \else{\accent"01 #1}\fi\fi\fi\fi
         \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}

%circumflex, hat:
\def\^#1{\ifx#1AÂ\else\ifx#1EÊ\else\ifx#1IÎ\else\ifx#1OÔ\else\ifx#1UÛ\else
         \ifx#1aâ\else\ifx#1eê\else\ifx#1\i î\else\ifx#1oô\else\ifx#1uû\else
         {\accent"02 #1}\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}

%tilde:
\def\~#1{\ifx#1AÃ\else\ifx#1NÑ\else\ifx#1OÕ\else
         \ifx#1aã\else\ifx#1nñ\else\ifx#1oõ\else
         {\accent"03 #1}\fi\fi\fi\fi\fi\fi}

%umlaut or dieresis:
\def\"#1{\ifx#1AÄ\else\ifx#1EË\else\ifx#1IÏ\else\ifx#1OÖ\else\ifx#1UÜ\else
         \ifx#1Y\char`^^98 \else\ifx#1aä\else\ifx#1eë\else\ifx#1\i ï\else
         \ifx#1oö\else\ifx#1uü\else\ifx#1y\char`^^b8 \else
         {\accent"04 #1}\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}  

%long Hungarian umlaut:
\def\H#1{\ifx#1O\char`^^8e \else\ifx#1U\char`^^96 \else
         \ifx#1o\char`^^ae \else\ifx#1u\char`^^b6 \else
         {\accent"05 #1}\fi\fi\fi\fi}

%ring:
\def\r#1{\ifx#1AÅ\else\ifx#1U\char`^^97 \else\ifx#1aå\else
         \ifx#1u\char`^^b7 \else{\accent"06 #1}\fi\fi\fi\fi}

%hachek:
\def\v#1{\ifx#1C\char`^^83 \else\ifx#1D\char`^^84 \else
         \ifx#1E\char`^^85 \else\ifx#1N\char`^^8c \else
         \ifx#1R\char`^^90 \else\ifx#1S\char`^^92 \else
         \ifx#1T\char`^^94 \else\ifx#1Z\char`^^9a \else
         \ifx#1c\char`^^a3 \else\ifx#1e\char`^^a5 \else
         \ifx#1n\char`^^ac \else\ifx#1r\char`^^b0 \else
         \ifx#1s\char`^^b2 \else\ifx#1z\char`^^ba \else
         {\accent"07 #1}\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}

%breve:
\def\u#1{\ifx#1A\char`^^80 \else\ifx#1G\char`^^87 \else
         \ifx#1a\char`^^a0 \else\ifx#1g\char`^^a7 \else
         {\accent"08 #1}\fi\fi\fi\fi}

%macron, bar:
\def\=#1{{\accent"09 #1}}

%dot:
\def\.#1{\ifx#1Z\char`^^9b \else\ifx#1I\char`^^9d \else
         \ifx#1z\char`^^bb \else{\accent"0A #1}\fi\fi\fi}

%cedilla:
\def\c#1{\ifx#1CÇ\else\ifx#1S\char`^^93 \else\ifx#1T\char`^^95 \else
         \ifx#1cç\else\ifx#1s\char`^^b3 \else\ifx#1t\char`^^b5 \else
         \setbox0=\hbox{#1}\ifdim\ht0=1ex \accent"0B #1%
         \else{\ooalign{\hidewidth\char"0B\hidewidth\crcr\unhbox0}}\fi
         \fi\fi\fi\fi\fi\fi}

%ogonek:
\def\k#1{\ifx#1A\char`^^81 \else\ifx#1E\char`^^86 \else
         \ifx#1a\char`^^a1 \else\ifx#1e\char`^^a6 \else
         \setbox0=\hbox{#1}\ifdim\ht0=1ex 
         \ifx#1u{\ooalign{\hidewidth\kern0.55\wd0\char"0C\hidewidth\crcr u}}%
         \else\accent"0C #1\fi
         \else{\ooalign{\hidewidth\char"0C\hidewidth\crcr\unhbox0}}\fi
         \fi\fi\fi\fi}

%prime:
\def\p#1{\ifx#1L\char`^^89 \else\ifx#1d\char`^^a4 \else
         \ifx#1l\char`^^a9 \else\ifx#1t\char`^^b4 \else
         \ifx#1g\setbox0=\hbox{g}\ifdim\ht0=1ex
         {\ooalign{\hidewidth\raise0.4pt\hbox{`}\hidewidth\crcr g}}%
         \else{\ooalign{\hidewidth\char"0B\hidewidth\crcr g}}\fi
         \else #1\fi\fi\fi\fi\fi}

%bar under:
\def\b#1{\oalign{#1\crcr\hidewidth
         \vbox to.2ex{\hbox{\char"09}\vss}\hidewidth}}

%=======================================================================

%Macros for characters.
%Some characters, e.g. "5C, "7B, "7D, "0D and "7E, having category
%0, 1, 2, 5 and 13, must be defined by \chardef to avoid problems when
%using \lowcase.
%The form \char"XY does not work with \lowcase for some characters, e.g. 
%"0E, "0F, "5E, "5F and "BD.

\chardef\S="9F                                     %section mark §
\def\!{\relax\ifmmode\mskip-\thinmuskip\else\char`^^bd \fi}
                                                   %inverse exclamation mark ¡
\chardef\?="BE                                     %inverse question mark ¿
\chardef\pound="BF                                 %pound sterling £
\def\promille{\%\char`^^18 }                       %per thousand 0/00

\chardef\caret="5E                                 %caret ^
\chardef\wave="7E                                  %repeat mark ~
\chardef\underscore="5F                            %underscore _
\chardef\visiblespace="20                          %visible space

\chardef\leftbracecharacter="7B
\def\{{\relax\ifmmode\lbrace\else\leftbracecharacter \fi}    %left brace {
\chardef\rightbracecharacter="7D
\def\}{\relax\ifmmode\rbrace\else\rightbracecharacter \fi}   %right brace }
\chardef\backslashcharacter="5C
\def\backslash{\relax\ifmmode\delimiter"026E30F 
                     \else\backslashcharacter \fi}           %backslash \

%Macros for quotes:

\def\lohi#1{{\char`^^12 #1\kern-0.07em ``}}                  % ,,#1``
\def\hihi#1{{``{#1}''}}                                      % ``#1''
\def\hiqq#1{{''\penalty10000\hskip-0.09em {#1}''}}           % ''#1'' 
\def\ltgt#1{{\char`^^13 #1\char`^^14}}                       %  «#1»
\def\gtlt#1{{\char`^^14 #1\char`^^13}}                       %  »#1«
\def\gtgt#1{{\char`^^14 #1\char`^^14}}                       %  »#1»
\let\qt=\hihi

%single quotes:

\chardef\carriagereturncharacter="0D
\def\silohi#1{{\carriagereturncharacter {#1}`}}              % ,#1`
\def\sihihi#1{{`{#1}'}}                                      % `#1'
\def\sihiqq#1{{'{#1}'}}                                      % '#1'
\def\siltgt#1{{\char`^^0e #1\char`^^0f}}                     % <#1>
\def\sigtlt#1{{\char`^^0f #1\char`^^0e}}                     % >#1<
\def\sigtgt#1{{\char`^^0f #1\char`^^0f}}                     % >#1>
\let\siqt=\sihihi

%Right quotes are made transparent:

\sfcode`^^0e=0  % <
\sfcode`^^0f=0  % >
\sfcode`^^10=0  % ``
\sfcode`^^11=0  % ''
\sfcode`^^13=0  % «
\sfcode`^^14=0  % »
\sfcode`\`=0    % `
%\sfcode`\'=0   % ' is already set in plain.tex

%The following two macros work on all characters with nonzero \uccode
%and \lccode in the dc fonts, but may not work on all non dc characters.
%Also, \upcase and \lowcase do not work across paragraphs.

\def\upcase#1{\edef\next{#1}\uppercase\expandafter{\next}}
\def\lowcase#1{\edef\next{#1}\lowercase\expandafter{\next}}

%=======================================================================

%Definition of dc fonts:

%roman:
\font\tenrm=dcr10
\font\preloaded=dcr9
\font\preloaded=dcr8
\font\sevenrm=dcr7
\font\preloaded=dcr6
\font\fiverm=dcr5

\font\preloaded=dcss10   %sans serif
%\font\preloaded=dcssq8  %does not exist

\font\preloaded=dcssi10  %sans serif italic
%\font\preloaded=dcssqi8 %does not exist

%boldface roman:
\font\tenbf=dcbx10
\font\preloaded=dcbx9
\font\preloaded=dcbx8
\font\sevenbf=dcbx7
\font\preloaded=dcbx6
\font\fivebf=dcbx5

%typewriter:
\font\tentt=dctt10
\font\preloaded=dctt9
\font\preloaded=dctt8

\font\preloaded=dcsltt10 %slanted typewriter

%slanted roman:
\font\tensl=dcsl10
\font\preloaded=dcsl9
\font\preloaded=dcsl8

%italic:
\font\tenit=dcti10
\font\preloaded=dcti9
\font\preloaded=dcti8
\font\preloaded=dcti7

\font\preloaded=dcu10    %unslanted italic

\font\preloaded=dccsc10  %caps and small caps

\font\preloaded=dcssbx10 %sans serif bold extended

\font\preloaded=dcdunh10 %Dunhill style

%for titles:
\font\preloaded=dcr7 scaled \magstep4
\font\preloaded=dctt10 scaled \magstep2
\font\preloaded=dcssbx10 scaled \magstep2

\let\preloaded=\undefined

%=======================================================================

