%% \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         \~}
%%
%% GERMAN
%% This is GERMAN.TEX or GERMAN.STY, Vers. 2.3e, 31 Jul 1991
%    collected by H.Partl (TU Wien),
%    using ideas by W.Appelt, F.Hommes et al. (GMD St.Augustin),
%    T.Hofmann (CIBA-GEIGY Basel), N.Schwarz (Uni Bochum),
%    J.Schrod (TH Darmstadt), D.Armbruster (Uni Stuttgart),
%    R.Schoepf (Uni Mainz, Uni Heidelberg) and F.Mittelbach
%    (Uni Mainz, EDS Ruesselsheim), J.Knappen (Uni Mainz),
%    P.Breitenlohner (MPI Muenchen), B.Raichle (Uni Stuttgart)
%    and many others.
%%
%% DOCUMENT STYLE OPTION for writing german texts
%% with TeX version 2.x (Plain TeX) or with LaTeX version 2.09.
%%
% It can be called via
%    \input german
% or (with LaTeX) via
%    \documentstyle[german]{anystyle}
%
% This file conforms to the standard for ``Einheitliche deutsche
% TeX-Befehle'' as proposed at the 6th Meeting of German TeX Users
% in M\"unster, October 1987. It is available from DANTE (the users
% group of German speaking TeX users) at the University of Heidelberg
% (e.g. with GET GERMAN STY from the Bitnet server LISTSERV@DHDURZ1,
% or by requesting a PC diskette).
%
% Commands to be used by the end users:
% "a                 for Umlaut-a (like \"a), also for all other vowels.
% "s                 for sharp s  (like \ss{}).
% "ck                for ck to be hyphenated as k-k.
% "ff                for ff to be hyphenated as ff-f, also for certain
%                    other consonants.
% "S                 for SS to be \uppercase{"s}
% "A, "CK, "FF etc.  uppercase versions of the above.
% "|                 to separate ligatures.
% "-                 like \-, but allowing hyphenation in the rest of
%                    the word.
% ""                 like "-, but producing no hyphen sign (for x-""y).
% "` or \glqq        for german left  double quotes  (similar to ,,)
% "' or \grqq        for german right double quotes  (similar to ``)
%       \glq         for german left  single quotes  (similar to , )
%       \grq         for german right single quotes  (similar to ` )
% "< or \flqq        for french left  double quotes  (similar to <<)
% "> or \frqq        for french right double quotes  (similar to >>)
%       \flq         for french left  single quotes  (similar to < )
%       \frq         for french right single quotes  (similar to > )
% \dq                for the original quotes character (")
% \selectlanguage{n} to select the main language of the document,
%                    specified by the parameter n, which should be
%                    one of the following command names:
%                    \austrian \french \english \german \USenglish;
%                    - this changes the date format, captions and (if
%                    the command is properly modified) hyphenation.
% \originalTeX       to restore everything to the original settings
%                    of TeX and LaTeX (well, almost everything).
% \germanTeX         to re-activate the german settings.
%
% Obsolete commands, provided for compatibility with existing
% applications:
% \3                 for sharp s (like "s).
% \ck                for ck to be hyphenated as k-k (like "ck).
%
% Obsolete command, incompatible with the former definition:
% \setlanguage       the former name of \selectlanguage
%                    TeX 3.x introduces a new primitive with the
%                    same name (DO NOT USE \setlanguage!)
%
% Lower level commands and features:
% \umlautlow        redefines the Umlaut accent such that the dots come
%                   nearer to the letter and that hyphenation is enabled
%                   in the rest of the word.
% \umlauthigh       restores \" to its original meaning.
% \ss               is \lccode'd to enable hyphenation.
% \mdqon            makes " an active (meta-) character that does the
%                   pretty things described above.
% \mdqoff           restores " to its original meaning.
% \dospecials,\@sanitize  are extended to include the ".
% \dateaustrian, \dategerman, \dateenglish, \dateUSenglish, \datefrench
%                   redefine \today to use the respective date format.
% \captionsgerman, \captionsenglish, \captionsfrench
%                   switch to german, english or french chapter captions
%                   and the like, resp.  This will have an effect only
%                   if the document style files use the symbolic names
%                   \chaptername etc. instead of the original english
%                   words. ("International LaTeX")
% \language         a count that may be set by \selectlanguage to switch
%                   hyphenation patterns or other language dependent
%                   items like, e.g., document style declarations of
%                   the form
%                      \ifnum\language=\english .textengl.\else
%                      \ifnum\language=\german  .textgerm.\fi\fi
%
% Finally, \germanTeX is switched on.
%
%
% Notes:
%
% This file can be used both with Plain TeX and with LaTeX and other
% macro packages, and with the original TeX and LaTeX fonts. Usage of
% german hyphenation patterns is recommended to accompany this style
% file when writing german texts.
%
% The file should be read in vertical mode only (usually at the
% beginning of the document) to avoid spurious spaces.
%
% \undefined must be an undefined control sequence.
%
% Multiple calls of this file (e.g. at the beginning of each subfile)
% will do no harm. Only the first call (i.e., if \mdqon is undefined)
% performs all the definitions and settings. Later calls only switch
% to \germanTeX.
%
% The catcode of @ remains unchanged after processing of this file.
% All of the definitions are local (except one \newdimen), the
% switching on of the german options is local.
%
% The commands \mdqon, \mdqoff, \originalTeX, \germanTeX, and
% \selectlanguage are ``fragile'' with LaTeX and should not be used
% within arguments of macro calls.
%
% In Plain TeX, `\protect' should be \let to `\relax' normally and to
% something like `\string' inside the arguments of `\write' or
% `\message' (see LaTeX.TEX for all the details).
%
% The command \umlautlow may need adaption to font parameters (see
% comments there for details).
%
% The commands \flqq, \frqq, \flq, \frq, and \datefrench  in their
% present forms do not work properly with all font sizes and styles,
% they still require a better solution. A LaTeX-only solution might be
% to use {\ly(}, {\ly(\kern-0.166em(}, {\ly)} etc., but this would not
% work with Plain TeX.
%
% The current version has been designed for TeX versions 1 and 2.
% When used with TeX version 3 or with MLTeX by M.Ferguson, the setting
% of the \language counter have to be inserted into the definition of
% the \selectlanguage command, with values that are appropriate for the
% hyphenation patterns loaded into the FMT file by IniTeX.
%
% Since " has a different catcode (\active) and a different meaning than
% in original TeX, special care has to be taken if " is to be used in
% its original meaning for hexadecimal constants (explicitely, or
% implicitely by math-delimiters or other macros when expanded).
%
%
% Known "Bugs":
%
%  -- If a hexadecimal number begins with a letter, TeX reports
%     ``Missing number, treated as zero''.
%  >> Use "0A0-"0FF instead of "A0-"FF or make sure that the catcode of
%     the doublequote is `other' when reading a hexadecimal constant.
%
%  -- Spaces after active doublequotes are ignored.  E.g. the input of
%     ``M" unster'' produces the same as ``M"unster''.
%  -- The use of things like "} in the text causes an error.
%  -- If a doublequote is followed by a group, e.g. "{a"a}, it is
%     possible that TeX reports ``Missing \endcsname inserted''.
%  >> Use the ''-ligature or "{} or \verb+"+ to produce normal
%     doublequotes.
%
 
 
% \ifundefined{mdqon} or \mdqon=\relax
\expandafter\ifx\csname mdqon\endcsname\relax
% \then go ahead \else switch to \germanTeX and do nothing
\else \germanTeX \expandafter\endinput \fi
 
\message{Document Style Option `german' Version 2.3e of 31 Jul 1991}
 
% \ifundefined{protect}
\ifx\protect\undefined
% \then define it
\let\protect=\relax \fi
 
% save current category code of `@'
\chardef\atcode=\catcode`\@
\catcode`\@=11 % \makeatletter
 
% \allowhyphens simulates a word boundary,
% kerning information will be lost!
\def\allowhyphens{\penalty\@M \hskip\z@skip}
%                {\nobreak    \hskip 0pt plus 0pt\relax}
 
\def\umlauthigh{\def\"##1{{\accent127 ##1}}}
\def\umlautlow{\def\"{\protect\newumlaut}}
 
% The old definition of \newumlaut...
%
% \newcount\U@C\newbox\U@B\newdimen\U@D
% \def\newumlaut#1{\leavevmode\allowhyphens
%      \vbox{\baselineskip\z@skip \lineskip.25ex
% %          \baselineskip 0pt
%      \ialign{##\crcr\hidewidth
%      \setbox\U@B\hbox{#1}\U@D .01\p@\U@C\U@D
%      \U@D\ht\U@B\advance\U@D -1ex\divide\U@D \U@C
%      \U@C\U@D\U@D\the\fontdimen1\the\font
%      \multiply\U@D \U@C\divide\U@D 100\kern\U@D
%      \vbox to .20ex  % <--- depending on the METAFONT parameters
% %                           of the fonts, the height of this \vbox
% %                           may vary around the value of .20ex  --
% %                           just try out, which will look best!
%      {\hbox{\char127}\vss}\hidewidth\crcr#1\crcr}}\allowhyphens}
%
% ...and the new one:
%
% The new value of `ex' (or \fontdimen5 of the current font) is
% computed as
%    height(\umlautaccent) - (0.25ex + 0.20ex)
% [ ~= 1.10117ex for cm-fonts]
% The value of `0.20ex' depends on the METAFONT parameters of the
% fonts, ... (see above).
%
\ifx\U@D\undefined
  \csname newdimen\endcsname\U@D
\fi
\def\newumlaut#1{\leavevmode\allowhyphens{\U@D 1ex
      % compute new ex value
  {\setbox\z@\hbox{\char127}\dimen@\ht\z@ \advance\dimen@ -.45ex
      % don't change, if new-ex < old-ex
  \ifdim 1ex<\dimen@ \fontdimen5\font\dimen@ \fi}%
  \accent127 \fontdimen5\font\U@D #1}\allowhyphens}
 
\def\highumlaut#1{\leavevmode\allowhyphens
   {\accent127 #1}\allowhyphens}
 
 
%
%  Quotes
%  ------
%
\def\set@low@box#1{\setbox\tw@\hbox{,}\setbox\z@\hbox{#1}\dimen\z@\ht\z@
   \advance\dimen\z@ -\ht\tw@
   \setbox\z@\hbox{\lower\dimen\z@ \box\z@}\ht\z@\ht\tw@ \dp\z@\dp\tw@ }
%  (this lowers the german left quotes to the same level as the comma.)
 
\def\save@sf@q#1{{\ifhmode \edef\@SF{\spacefactor\the\spacefactor}\else
     \let\@SF\empty \fi \leavevmode #1\@SF}}
 
\def\@glqq{\save@sf@q{\set@low@box{''}\box\z@\kern-.04em\allowhyphens}}
\def\glqq{\protect\@glqq}
\def\@grqq{\save@sf@q{\kern-.07em``\kern.07em}}
\def\grqq{\protect\@grqq}
\def\@glq{\save@sf@q{\set@low@box{'}\box\z@\kern-.04em\allowhyphens}}
\def\glq{\protect\@glq}
\def\@grq{\save@sf@q{\kern-.07em`\kern.07em}}
\def\grq{\protect\@grq}
\def\@flqq{\ifmmode \ll \else
  \save@sf@q{\raise .2ex\hbox{$\scriptscriptstyle \ll $}}\fi}
\def\flqq{\protect\@flqq}
\def\@frqq{\ifmmode \gg \else
  \save@sf@q{\raise .2ex\hbox{$\scriptscriptstyle \gg $}}\fi}
\def\frqq{\protect\@frqq}
\def\@flq{\ifmmode <\else
  \save@sf@q{\raise .2ex\hbox{$\scriptscriptstyle <$}}\fi}
\def\flq{\protect\@flq}
\def\@frq{\ifmmode >\else
  \save@sf@q{\raise .2ex\hbox{$\scriptscriptstyle >$}}\fi}
\def\frq{\protect\@frq}
 
 
% enable hyphenations after \ss:
\lccode`\^^Y=`\^^Y
 
\let\original@three=\3 % Note that \3 may be defined or undefined.
 
% add doublequotes to the definitions of dospecials and sanitize:
\begingroup
  \def\do{\noexpand\do\noexpand}%
  \edef\next{\endgroup
    \def\noexpand\dospecials{\dospecials\do\"}}%
\next
% not ( \ifundefined{@sanitize} or \@sanitize=\relax ) = if LaTeX
\expandafter\ifx\csname @sanitize\endcsname\relax \else
  \begingroup
    \def\@makeother{\noexpand\@makeother\noexpand}%
    \edef\next{\endgroup
      \def\noexpand\@sanitize{\@sanitize\@makeother\"}}%
  \next
\fi
 
\def\mdqon{\catcode`\"\active}
\def\mdqoff{\catcode`\"12 }
 
\def\ck{\allowhyphens\discretionary{k-}{}{c}k\allowhyphens}
 
 
%
%  active doublequote mechanism
%  ----------------------------
%
\begingroup \mdqoff
\def\next{\endgroup
  \def\@UMLAUT{\"}
  \def\@MATHUMLAUT{\mathaccent"707F }
  \def\@SS{\mathchar"7019 }
  \def\dq{"}}
\next
 
 
% For all arguments of an active doublequote which should be treated in
% a special way, we define a macro with the argument text in the name.
%
% \dq@macro#1 constructs this name.
%
% (If the expansion of \dq@macro results in another call of \dq@macro
% the inner macro shouldn't contain unexpandable primitives like
% \relax.  Otherwise TeX warns about a "Missing \endcsname inserted."
% Example: Gr"{u"se})
%
\def\dq@macro#1{\csname @dq@\string #1@dq@\endcsname}
 
 
% The definition of the active doublequote macro:
%
% If used with DC/EC-fonts, correct kerning and ligature building is
% inhibited by \protect (with meaning \relax).
% (Quick&dirty solution: replace \protect by something like
% \ifx\protect\relax \else \expandafter\protect \fi)
%
\def\@active@dq#1{\expandafter\expandafter\expandafter
  \ifx\dq@macro{#1}\relax
    \expandafter\normal@dq
  \else
    \expandafter\protect\expandafter\active@dq
  \fi {#1}}
 
 
% The braces of {#1} in \@active@dq are necessary if someone wants to
% define a doublequote macro for things like "{}.  They ensure that
% \active@dq is called with the correct argument.
% For \normal@dq we have to delete the braces and insert a normal
% doublequote.
%
\def\normal@dq#1{\dq #1}
 
 
% For combinations "x which should be treated in a special way,
% \active@dq is called with `x' as argument.
% In the current implementation the actions for argument #1 are saved
% in macros with name \dq@macro{#1}.  These macros expand to two groups
% containing the action for text and for math mode.
% The support of other ``modes'' (e.g. DC/EC-Fonts) can be implemented
% in this macro.
%
\def\active@dq#1{%
  \csname dq@\ifmmode second\else first\fi
%     \dq@macro has to be expanded three times:
%     1. \dq@macro       --> \csname...
%     2. \csname...      --> control seqence
%     3. control seqence --> {text mode}{math mode}
    \expandafter\expandafter\expandafter\expandafter
    \expandafter\expandafter\expandafter
  \endcsname
  \dq@macro{#1}}
%
\def\dq@first#1#2{#1}
\def\dq@second#1#2{#2}
 
 
% The definition of a "-macro is done with...
%
\def\def@dqmacro#1#2#3{\expandafter\expandafter\expandafter
  \def\dq@macro{#1}{{#2}{#3}}}
 
\def\let@dqmacro#1#2{\begingroup
  \edef\next{\endgroup \let
    \expandafter\expandafter\expandafter\noexpand\dq@macro{#1}%
    \expandafter\expandafter\expandafter\noexpand\dq@macro{#2}}%
  \next}
 
 
% Definitions for all doublequote macros...
% (The empty groups after some macros are necessary for \write commands,
% otherwise spaces after these macros will be ignored.)
%
% umlauts:
%
\def@dqmacro{a}{\@UMLAUT a}{\@MATHUMLAUT a}
\def@dqmacro{o}{\@UMLAUT o}{\@MATHUMLAUT o}
\def@dqmacro{u}{\@UMLAUT u}{\@MATHUMLAUT u}
\def@dqmacro{A}{\@UMLAUT A}{\@MATHUMLAUT A}
\def@dqmacro{O}{\@UMLAUT O}{\@MATHUMLAUT O}
\def@dqmacro{U}{\@UMLAUT U}{\@MATHUMLAUT U}
%
% german es-zet:
%
\def@dqmacro{s}{\ss{}}{\@SS{}}
\def@dqmacro{S}{SS}{SS}
%
% german and french quotes:
%
\def@dqmacro{`}{\glqq{}}{\glqq{}}
\def@dqmacro{'}{\grqq{}}{\grqq{}}
\def@dqmacro{<}{\flqq{}}{\flqq{}}
\def@dqmacro{>}{\frqq{}}{\frqq{}}
%
% tremas:
%
\def@dqmacro{e}{\highumlaut e}{\@MATHUMLAUT a}
\def@dqmacro{E}{\highumlaut E}{\@MATHUMLAUT E}
\def@dqmacro{i}{\highumlaut\i{}}{\@MATHUMLAUT\imath}
\def@dqmacro{I}{\highumlaut I}{\@MATHUMLAUT I}
%
% misc.:
%
\def@dqmacro{-}{\allowhyphens\-\allowhyphens}%
                {\allowhyphens\-\allowhyphens}
\def@dqmacro{"}{\hskip\z@skip}{\hskip\z@skip}
\let@dqmacro{\active@dq}{"}
\def@dqmacro{|}{\discretionary{-}{}{\kern.03em}}{}
%
% discretionaries:
%
\def@dqmacro{c}{\allowhyphens\discretionary{k-}{}{c}\allowhyphens}{c}
\def@dqmacro{C}{\allowhyphens\discretionary{K-}{}{C}\allowhyphens}{C}
\def@dqmacro{f}{\allowhyphens\discretionary{ff-}{}{f}\allowhyphens}{f}
\def@dqmacro{F}{\allowhyphens\discretionary{FF-}{}{F}\allowhyphens}{F}
\def@dqmacro{l}{\allowhyphens\discretionary{ll-}{}{l}\allowhyphens}{l}
\def@dqmacro{L}{\allowhyphens\discretionary{LL-}{}{L}\allowhyphens}{L}
\def@dqmacro{m}{\allowhyphens\discretionary{mm-}{}{m}\allowhyphens}{m}
\def@dqmacro{M}{\allowhyphens\discretionary{MM-}{}{M}\allowhyphens}{M}
\def@dqmacro{n}{\allowhyphens\discretionary{nn-}{}{n}\allowhyphens}{n}
\def@dqmacro{N}{\allowhyphens\discretionary{NN-}{}{N}\allowhyphens}{N}
\def@dqmacro{p}{\allowhyphens\discretionary{pp-}{}{p}\allowhyphens}{p}
\def@dqmacro{P}{\allowhyphens\discretionary{PP-}{}{P}\allowhyphens}{P}
\def@dqmacro{t}{\allowhyphens\discretionary{tt-}{}{t}\allowhyphens}{t}
\def@dqmacro{T}{\allowhyphens\discretionary{TT-}{}{T}\allowhyphens}{T}
 
 
%
%  Dates and Captions
%  ------------------
%
\def\dateaustrian{\def\today{\number\day.~\ifcase\month\or
  J\"anner\or Februar\or M\"arz\or April\or Mai\or Juni\or
  Juli\or August\or September\or Oktober\or November\or Dezember\fi
  \space\number\year}}
\def\dategerman{\def\today{\number\day.~\ifcase\month\or
  Januar\or Februar\or M\"arz\or April\or Mai\or Juni\or
  Juli\or August\or September\or Oktober\or November\or Dezember\fi
  \space\number\year}}
\def\dateUSenglish{\def\today{\ifcase\month\or
  January\or February\or March\or April\or May\or June\or
  July\or August\or September\or October\or November\or December\fi
  \space\number\day, \number\year}}
\def\dateenglish{\def\today{\number\day \ifcase\day \or
  st\or nd\or rd\or th\or th\or th\or th\or th\or th\or th\or %  1..10
  th\or th\or th\or th\or th\or th\or th\or th\or th\or th\or % 11..20
  st\or nd\or rd\or th\or th\or th\or th\or th\or th\or th\or % 21..30
  st\fi
  ~\ifcase\month\or
  January\or February\or March\or April\or May\or June\or
  July\or August\or September\or October\or November\or December\fi
  \space \number\year}}
\def\datefrench{\def\today{\number\day \ifnum1=\day \/$^{\rm er}$\fi
  \space\ifcase\month\or
  janvier\or f\'evrier\or mars\or avril\or mai\or juin\or
  juillet\or ao\^ut\or septembre\or octobre\or novembre\or d\'ecembre\fi
  \space\number\year}}
 
 
% Here is, how you can modify the LaTeX document style files and option
% files, to benefit from the following \captionsxxx commands. Def's like
%  \def\tableofcontents{\section*{Contents\markboth{CONTENTS}{CONTENTS}}
%  \@starttoc{toc}}
% should be redefined by def's like
%  \def\contentsname{Contents} % <---
%  \def\tableofcontents{\section*{\contentsname
%  \markboth{\uppercase{\contentsname}}{\uppercase{\contentsname}}}
%  \@starttoc{toc}}
% (it's best to put all these new lines to the end of the origignal
% files), and of course, you should modify the change date in the file
% header and in the \typeout command.
% You need not do this yourself - rather, retrieve "International LaTeX"
% (e.g. from the DANTE server LISTSERV@DHDURZ1 on Bitnet) !
 
\def\captionsgerman{%
\def\prefacename{Vorwort}%
\def\refname{Literatur}%
\def\abstractname{Zusammenfassung}%
\def\bibname{Literaturverzeichnis}%
\def\chaptername{Kapitel}%
\def\appendixname{Anhang}%
\def\contentsname{Inhaltsverzeichnis}% % oder nur: Inhalt
\def\listfigurename{Abbildungsverzeichnis}%
\def\listtablename{Tabellenverzeichnis}%
\def\indexname{Index}%
\def\figurename{Abbildung}%
\def\tablename{Tabelle}% % oder: Tafel
\def\partname{Teil}%
\def\enclname{Anlage(n)}% % oder: Beilage(n)
\def\ccname{Verteiler}%   % oder: Kopien an
\def\headtoname{An}%
\def\pagename{Seite}%
\def\seename{siehe}%
\def\alsoname{siehe auch}}
 
\def\captionsenglish{%
\def\prefacename{Preface}%
\def\refname{References}%
\def\abstractname{Abstract}%
\def\bibname{Bibliography}%
\def\chaptername{Chapter}%
\def\appendixname{Appendix}%
\def\contentsname{Contents}%
\def\listfigurename{List of Figures}%
\def\listtablename{List of Tables}%
\def\indexname{Index}%
\def\figurename{Figure}%
\def\tablename{Table}%
\def\partname{Part}%
\def\enclname{encl}%
\def\ccname{cc}%
\def\headtoname{To}%
\def\pagename{Page}%
\def\seename{see}%
\def\alsoname{see also}}
 
\def\captionsfrench{%
\def\prefacename{Pr\'eface}%
\def\refname{R\'ef\'erences}%
\def\abstractname{R\'esum\'e}%
\def\bibname{Bibliographie}%
\def\chaptername{Chapitre}%
\def\appendixname{Annexe}%
\def\contentsname{Table des mati\`eres}%
\def\listfigurename{Liste des figures}%
\def\listtablename{Liste des tableaux}%
\def\indexname{Index}%
\def\figurename{Figure}%
\def\tablename{Tableau}%
\def\partname{Partie}%
\def\enclname{P.~J.}%
\def\ccname{Copie \`a}%
\def\headtoname{A}%
\def\pagename{Page}%
\def\seename{voir}%
\def\alsoname{voir aussi}}%
 
 
%
%  Switching Languages
%  -------------------
%
\chardef\USenglish=0
\chardef\german=1
\chardef\austrian=2
\chardef\french=3
\chardef\english=4
 
 
\def\selectlanguage#1{%
     % Note: If used with TeX version 3 or with multi-lingual TeX
     % by M.Ferguson, commands like
  \language #1\relax
     % should be inserted into this definition in order to switch
     % on the correct hyphenation patterns.
  \expandafter\ifcase #1\relax
  \dateUSenglish \captionsenglish \or
  \dategerman    \captionsgerman  \or
  \dateaustrian  \captionsgerman  \or
  \datefrench    \captionsfrench  \or
  \dateenglish   \captionsenglish \fi}
 
 
%
%  TeX 3 compatibility
%  -------------------
%
% If \language has not yet been declared neither by Ferguson's
% ``Multilingual T^eX'' nor by TeX 3, allocate a counter:
%
% \ifundefined{language}
\expandafter\ifx\csname language\endcsname\relax
  \csname newcount\endcsname\language
\fi
 
 
% TeX 3 has another new primitive: \setlanguage. It can be used only in
% hmode and has ``real'' effects in inner mode only!
% If not defined, try to simulate TeX 3's \setlanguage.
%
% \ifundefined{setlanguage} (= TeX version < 3 )
\expandafter\ifx\csname setlanguage\endcsname\relax
  \def\setlanguage{\relax
    \ifhmode \else
      \errhelp{Use \selectlanguage to switch languages.}%
      \errmessage{\setlanguage allowed only in horizontal mode}%
    \fi
    \begingroup\afterassignment\endgroup\count@=}
\fi
 
 
\begingroup \mdqon
\def\next{\endgroup
  \def\originalTeX{\mdqoff \let"\dq \umlauthigh \let\3\original@three
                   \selectlanguage{\USenglish}}
  \def\germanTeX{\mdqon \let"\@active@dq \umlautlow \let\3\ss
                 \selectlanguage{\german}}}
\next
 
 
\catcode`\@=\atcode % return to previous catcode
 
% Now, switch on what is appropriate for german:
 
\germanTeX
 
% This is the end of GERMAN.STY/TEX.
\endinput
