Plan 9 from Bell Labs’s /usr/web/sources/contrib/steve/root/sys/lib/texmf/tex/generic/misc/german.sty

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


%% 
%% This is file `german.sty',
%% generated with the docstrip utility.
%% 
%% The original source files were:
%% 
%% german.dtx 
%% 
%% This file is part of the GERMAN.STY package, 
%% a PACKAGE for writing german texts with 
%% plainTeX or LaTeX version 2e/2.09. 
%% 
%% -- Copyright 1996 by B.Raichle and DANTE e.V. All rights reserved. -- 
%% Maintained by Bernd Raichle (Uni Stuttgart), 
%% using ideas by H.Partl (TU Wien, Uni.f.Bodenkultur Wien) 
%% and many other people. 
%% 
%% 
%% Copying of this file is authorized only if either 
%% (1) you make absolutely no changes to your copy, including name, or 
%% (2) if you do make changes, you name it something other than 
%% german.dtx, german.sty, german.tex, or german.doc. 
%% This restriction helps ensure that all styles developed for 
%% DANTE e.V. (the users group of german speaking TeX users) 
%% remain identical. 
%% 
%% You are NOT ALLOWED to distribute this file alone, atleast you have to 
%% include the file `germdoc.tex' containing the documentation, and the 
%% files `german.dtx' and `german.ins' containing the documented macro 
%% source. You are NOT ALLOWED to take money for the distribution or use 
%% of either this file or a changed version, except for some nominal 
%% charge for copying etc. 
%% 
%% Error Reports in case of UNCHANGED versions to 
%% 
%% Bernd Raichle 
%% Stettener Str. 73 
%% 73732 Esslingen 
%% Federal Republic of Germany 
%% Email: raichle@Informatik.Uni-Stuttgart.DE 
%% 
%% or 
%% 
%% DANTE, Deutschsprachige Anwendervereinigung TeX e.V. 
%% Koordinator ``german.sty'' 
%% Postfach 10 18 40 
%% 69008 Heidelberg 
%% Federal Republic of Germany 
%% Email: german@dante.de 
%% 
 %%
 %% This is GERMAN.DTX/GERMAN.STY, Version 2.5c, 1. Mai 1996
 %%
 %% Copyright (C) 1987-1990 by H.Partl
 %% Copyright (C) 1991-1996 by B.Raichle and DANTE e.V.
 %%                         All rights reserved.
 %%
 %% Please read the documentation file `germdoc.tex' for more
 %% information of how to use this macro file and how to install
 %% the pattern files necessary for german hyphenation.
 %%
\expandafter\ifx\csname grmn\string @VersionNo\endcsname\relax
\else
  \ifnum\number\csname grmn\string @VersionNo\endcsname<9601\relax
  \else \germanTeX \expandafter\expandafter\expandafter\endinput
  \fi\fi
\expandafter\mathchardef\csname grmn\string @VersionNo\endcsname
=9601\relax % = 1/96 = v2.5c
\message{Package `german', Version 2.5c of 96/05/01.}
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname ProvidesPackage\endcsname\relax\else
  \ProvidesPackage{german}[1996/05/01 v2.5c %
     Package for writing german texts (br)]
\fi
\chardef\atcode=\catcode`\@
\catcode`\@=11 % \makeatletter
\expandafter\ifx\csname @ifundefined\endcsname\relax
  \def\@ifundefined#1{%
    \expandafter\ifx\csname #1\endcsname\relax
      \expandafter\grmn@dqfirst\else\expandafter\grmn@dqsecond\fi}
\fi
\def\grmn@dqfirst#1#2{#1}
\def\grmn@dqsecond#1#2{#2}
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname DeclareTextSymbol\endcsname\relax \else
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname ProvideTextCommandDefault\endcsname\relax
  \immediate\write17{}
  \immediate\write17{%
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
  \immediate\write17{%
!! Dies ist eine zu alte LaTeX2e-Version, die nicht}
  \immediate\write17{%
!! alle fuer German-Style notwendigen Deklarationen}
  \immediate\write17{%
!! zur Verfuegung stellt.  Dennoch koennen Sie German-}
  \immediate\write17{%
!! Style, evtl. mit kleinen Fehlern, verwenden.}
  \immediate\write17{!!}
  \immediate\write17{%
!! Bitte installieren Sie eine neuere LaTeX2e-Version,}
  \immediate\write17{%
!! da zukuenftige Versionen von German-Style diese}
  \immediate\write17{%
!! LaTeX2e-Version nicht mehr unterstuetzen werden!}
  \immediate\write17{%
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
  \immediate\write17{}
\fi
\@ifundefined{UseTextSymbol}{%
  \def\UseTextSymbol#1#2{{\fontencoding{#1}\selectfont #2}}
}{}
\@ifundefined{UseTextAccent}{%
  \def\UseTextAccent#1#2#3{%
    {\let\@curr@enc\f@encoding
     \fontencoding{#1}\selectfont
     #2{\fontencoding\@curr@enc\selectfont #3}}}%
}{}
\@ifundefined{ProvideTextCommand}{%
  \def\ProvideTextCommand#1#2{%
    %%% misses \RobustTextCommand{#1}{...etc.etc...}!!
    \expandafter\providecommand\csname #2\string#1\endcsname}%
}{}
\@ifundefined{ProvideTextCommandDefault}{%
  \def\ProvideTextCommandDefault#1{%
    \ProvideTextCommand{#1}{U}}%
}{}
\@ifundefined{DeclareTextCompositeCommand}{%
  \def\DeclareTextCompositeCommand#1#2#3#4{%
    % define a `dummy' text composite
    \DeclareTextComposite{#1}{#2}{#3}{`\Z}%
    % then redefine this command including the new command
    \expandafter\def\csname\expandafter\string\csname
         #2\endcsname\string#1-\string#3\endcsname##1##2{#4}}%
}{}
\ProvideTextCommandDefault{\"}{\UseTextAccent{OT1}{\"}}
\ProvideTextCommandDefault{\ss}{\UseTextSymbol{OT1}\ss}
\ProvideTextCommandDefault{\i}{\UseTextSymbol{OT1}\i}
\@ifundefined{textquotedblleft}{%
  \ProvideTextCommandDefault{\textquotedblleft}{%
    \UseTextSymbol{OT1}\textquotedblleft}%
  \DeclareTextSymbol{\textquotedblleft}{OT1}{92}%
  \DeclareTextSymbol{\textquotedblleft}{T1}{16}%
}{}
\@ifundefined{textquotedblright}{%
  \ProvideTextCommandDefault{\textquotedblright}{%
    \UseTextSymbol{OT1}\textquotedblright}%
  \DeclareTextSymbol{\textquotedblright}{OT1}{`\"}%
  \DeclareTextSymbol{\textquotedblright}{T1}{17}%
  %% \DeclareTextSymbol{\textquotedbl}{T1}{`\"}%
}{}
\@ifundefined{textquoteleft}{%
  \ProvideTextCommandDefault{\textquoteleft}{%
    \UseTextSymbol{OT1}\textquoteleft}%
  \DeclareTextSymbol{\textquoteleft}{OT1}{`\`}%
  \DeclareTextSymbol{\textquoteleft}{T1}{`\`}%
}{}
\@ifundefined{textquoteright}{
  \ProvideTextCommandDefault{\textquoteright}{%
    \UseTextSymbol{OT1}\textquoteright}%
  \DeclareTextSymbol{\textquoteright}{OT1}{`\'}%
  \DeclareTextSymbol{\textquoteright}{T1}{`\'}%
}{}
\@ifundefined{quotesinglbase}{%
  \DeclareTextSymbol{\quotesinglbase}{T1}{13}%
}{}
\@ifundefined{quotedblbase}{%
  \DeclareTextSymbol{\quotedblbase}{T1}{18}%
}{}
\@ifundefined{guillemotleft}{%
  \DeclareTextSymbol{\guillemotleft}{T1}{19}%
}{}
\@ifundefined{guillemotright}{%
  \DeclareTextSymbol{\guillemotright}{T1}{20}%
}{}
\@ifundefined{guilsinglleft}{%
  \DeclareTextSymbol{\guilsinglleft}{T1}{14}%
}{}
\@ifundefined{guilsinglright}{%
  \DeclareTextSymbol{\guilsinglright}{T1}{15}%
}{}
\fi
\expandafter\let\expandafter\protect\csname protect\endcsname
\def\allowhyphens{\penalty\@M \hskip\z@skip}
\lccode`\^^Y=`\^^Y
\def\set@low@box#1{\setbox\tw@\hbox{,}\setbox\z@\hbox{#1}%
  \setbox\z@\hbox{\dimen@\ht\z@ \advance\dimen@ -\ht\tw@
      \lower\dimen@\box\z@}%
  \ht\z@\ht\tw@ \dp\z@\dp\tw@}
\def\save@sf@q#1{{\ifhmode
  \edef\@SF{\spacefactor\the\spacefactor}\else
  \let\@SF\empty \fi \leavevmode #1\@SF}}
\expandafter\ifx\csname grmnU@D\endcsname\relax
  \csname newdimen\endcsname\grmnU@D
\fi
\def\newumlaut#1{{\grmnU@D 1ex%
  {\setbox\z@\hbox{\char127}\dimen@-.45ex\advance\dimen@\ht\z@
  \ifdim 1ex<\dimen@ \fontdimen5\font\dimen@ \fi}%
  \accent127\fontdimen5\font\grmnU@D #1}\allowhyphens}
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname DeclareTextSymbol\endcsname\relax
  \def\highumlaut#1{{\accent127 #1}\allowhyphens}
\else
  \def\highumlaut#1{\"{#1}\allowhyphens}
\fi
\def\mdqon{\catcode`\"\active}
\def\mdqoff{\catcode`\"12\relax}
\begingroup \mdqoff
\def\x{\endgroup
  \def\@UMLAUT{\"}%
  \def\@MATHUMLAUT{\ddot}% = \mathaccent"707F
  \def\@SS{\mathchar"7019 }% TODO: correct?
  \def\dq{"}}% TODO: or \textquotedbl?
\x
\begingroup
  \def\do{\noexpand\do\noexpand}%
  \edef\x{\endgroup
    \def\noexpand\dospecials{\dospecials\do\"}}%
\x
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname @sanitize\endcsname\relax \else
  \begingroup
    \def\@makeother{\noexpand\@makeother\noexpand}%
    \edef\x{\endgroup
      \def\noexpand\@sanitize{\@sanitize\@makeother\"}}%
  \x
\fi
\let\grmn@original@three=\3 % \3 may be defined or undefined.
\def\ck{\penalty\@M\discretionary{k-}{}{c}k\allowhyphens}
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname DeclareTextSymbol\endcsname\relax
\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-.0125em`\kern.07em}}
\def\grq{\protect\@grq}
\def\@flqq{\relax\ifmmode \ll \else \save@sf@q{\penalty\@M
    \raise .27ex\hbox{$\m@th\scriptscriptstyle \ll $}%
    \allowhyphens}\fi}
\def\flqq{\protect\@flqq}
\def\@frqq{\relax\ifmmode \gg \else \save@sf@q{\penalty\@M
    \raise .27ex\hbox{$\m@th\scriptscriptstyle \gg $}%
    \allowhyphens}\fi}
\def\frqq{\protect\@frqq}
\def\@flq{\relax\ifmmode <\else \save@sf@q{\penalty\@M
    \raise .27ex\hbox{$\m@th\scriptscriptstyle <$}\allowhyphens}\fi}
\def\flq{\protect\@flq}
\def\@frq{\relax\ifmmode >\else \save@sf@q{\penalty\@M
    \raise .27ex\hbox{$\m@th\scriptscriptstyle >$}\allowhyphens}\fi}
\def\frq{\protect\@frq}
\else
\DeclareRobustCommand{\glqq}{%
  \ifmmode\hbox{\quotedblbase}\else\quotedblbase\fi}
\ProvideTextCommandDefault{\quotedblbase}{%
  \UseTextSymbol{OT1}\quotedblbase}
\ProvideTextCommand{\quotedblbase}{OT1}{%
  \save@sf@q{\set@low@box{\textquotedblright\/}\box\z@
    \kern-.04em\allowhyphens}}
\ProvideTextCommand{\grqq}{T1}{\textquotedblleft}
\ProvideTextCommand{\grqq}{OT1}{%
  \save@sf@q{\kern-.07em%
  \ifmmode\hbox{\textquotedblleft}\else\textquotedblleft\fi
  \kern.07em\relax}}
\ProvideTextCommandDefault{\grqq}{\UseTextSymbol{OT1}\grqq}
\DeclareRobustCommand{\glq}{%
  \ifmmode\hbox{\quotesinglbase}\else\quotesinglbase\fi}
\ProvideTextCommandDefault{\quotesinglbase}{%
  \UseTextSymbol{OT1}\quotesinglbase}
\ProvideTextCommand{\quotesinglbase}{OT1}{%
  \save@sf@q{\set@low@box{\textquoteright\/}\box\z@
    \kern-.04em\allowhyphens}}
\ProvideTextCommand{\grq}{T1}{\textquoteleft}
\ProvideTextCommand{\grq}{OT1}{%
  \save@sf@q{\kern-.0125em%
  \ifmmode\hbox{\textquoteleft}\else\textquoteleft\fi
  \kern.07em\relax}}
\ProvideTextCommandDefault{\grq}{\UseTextSymbol{OT1}\grq}
\DeclareRobustCommand{\flqq}{%
  \ifmmode\hbox{\guillemotleft}\else\guillemotleft\fi}
\ProvideTextCommandDefault{\guillemotleft}{%
  \UseTextSymbol{OT1}\guillemotleft}
\ProvideTextCommand{\guillemotleft}{OT1}{%
  \ifmmode \ll \else \save@sf@q{\penalty\@M
    \raise .27ex\hbox{$\m@th\scriptscriptstyle \ll $}%
    \allowhyphens}\fi}
\DeclareRobustCommand{\frqq}{%
  \ifmmode\hbox{\guillemotright}\else\guillemotright\fi}
\ProvideTextCommandDefault{\guillemotright}{%
  \UseTextSymbol{OT1}\guillemotright}
\ProvideTextCommand{\guillemotright}{OT1}{%
  \ifmmode \gg \else \save@sf@q{\penalty\@M
    \raise .27ex\hbox{$\m@th\scriptscriptstyle \gg $}%
    \allowhyphens}\fi}
\DeclareRobustCommand{\flq}{%
  \ifmmode\hbox{\guilsinglleft}\else\guilsinglleft\fi}
\ProvideTextCommandDefault{\guilsinglleft}{%
  \UseTextSymbol{OT1}\guilsinglleft}
\ProvideTextCommand{\guilsinglleft}{OT1}{%
  \ifmmode <\else \save@sf@q{\penalty\@M
    \raise .27ex\hbox{$\m@th\scriptscriptstyle <$}\allowhyphens}\fi}
\DeclareRobustCommand{\frq}{%
  \ifmmode\hbox{\guilsinglright}\else\guilsinglright\fi}
\ProvideTextCommandDefault{\guilsinglright}{%
  \UseTextSymbol{OT1}\guilsinglright}
\ProvideTextCommand{\guilsinglright}{OT1}{%
  \ifmmode >\else \save@sf@q{\penalty\@M
    \raise .27ex\hbox{$\m@th\scriptscriptstyle >$}\allowhyphens}\fi}
\fi
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname DeclareTextSymbol\endcsname\relax
\def\umlauthigh{\def\"##1{{\accent127 ##1}}}
\def\umlautlow{\def\"{\protect\newumlaut}}
\else
\def\umlauthigh{\def\grmn@OTumlaut##1{{\accent 127 ##1}}}
\def\umlautlow{\def\grmn@OTumlaut{\protect\newumlaut}}
\umlauthigh
\DeclareTextAccent{\"}{T1}{4}
\DeclareTextAccent{\"}{OT1}{127}
\DeclareTextCompositeCommand{\"}{OT1}{a}{\grmn@OTumlaut{a}}%
\DeclareTextCompositeCommand{\"}{OT1}{o}{\grmn@OTumlaut{o}}%
\DeclareTextCompositeCommand{\"}{OT1}{u}{\grmn@OTumlaut{u}}%
\DeclareTextCompositeCommand{\"}{OT1}{A}{\grmn@OTumlaut{A}}%
\DeclareTextCompositeCommand{\"}{OT1}{O}{\grmn@OTumlaut{O}}%
\DeclareTextCompositeCommand{\"}{OT1}{U}{\grmn@OTumlaut{U}}%
\DeclareTextComposite{\"}{T1}{a}{228}
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname AtBeginDocument\endcsname\relax \else
  \AtBeginDocument{%
    \DeclareTextAccent{\"}{T1}{4}%          % from `ltpatch.tex'
    \DeclareTextAccent{\"}{OT1}{127}%       % from `ltpatch.tex'
    % \DeclareTextCommand{\"}{OT1}{\newumlaut}% from `ltpatch.tex'
    % % has to be removed
    \DeclareTextCompositeCommand{\"}{OT1}{a}{\grmn@OTumlaut{a}}%
    \DeclareTextCompositeCommand{\"}{OT1}{o}{\grmn@OTumlaut{o}}%
    \DeclareTextCompositeCommand{\"}{OT1}{u}{\grmn@OTumlaut{u}}%
    \DeclareTextCompositeCommand{\"}{OT1}{A}{\grmn@OTumlaut{A}}%
    \DeclareTextCompositeCommand{\"}{OT1}{O}{\grmn@OTumlaut{O}}%
    \DeclareTextCompositeCommand{\"}{OT1}{U}{\grmn@OTumlaut{U}}%
    \DeclareTextComposite{\"}{T1}{a}{228}%  % from `ltpatch.tex'
  }
\fi
\fi
\def\dqwarninglevel#1{\chardef\grmn@dqwarninglevel=#1\relax}
\dqwarninglevel{1}
\expandafter\ifx\csname on@line\endcsname\relax
  \ifx\inputlineno\undefined \let\on@line\@empty
  \else
    \ifnum\inputlineno<\z@ \let\on@line\@empty
    \else \def\on@line{ on input line \the\inputlineno}
\fi\fi\fi
\def\grmn@dq@error#1{%
  \errhelp{Use `` for a simple double quote character.}%
  \errmessage{german: The command \dq\string#1 is undefined}}
\def\grmn@dq@warning#1{%
   \immediate\write\sixt@@n{german: %
       \dq\string#1 is possibly wrong\on@line.}}
\def\grmn@dq@macro#1#2{%
  \expandafter#1\csname @grmn@@\string #2dq\endcsname}
\def\def@dqmacro#1#2#3{%
  \grmn@dqredefcheck{#1}%
  \grmn@dq@macro\def{#1}{{#2}{#3}}}
\def\let@dqmacro#1#2{\begingroup
  \grmn@dqredefcheck{#1}%
  \edef\x{\endgroup \let
    \grmn@dq@macro\noexpand{#1}\grmn@dq@macro\noexpand{#2}}%
  \x}
\def\grmn@dqredefcheck#1{}
\def\@active@dq#1{%
  \grmn@dq@macro\ifx{#1}\relax
    \ifnum\grmn@dqwarninglevel>\z@ \grmn@dq@error{#1}\fi
    \expandafter\grmn@@normal@dq
  \else
    \expandafter\grmn@@active@dq
  \fi {#1}}
\def\grmn@@active@dq#1{%
  \grmn@dq@macro\ifx{#1}\noexpand
    \expandafter\grmn@normal@dq
  \else
    \expandafter\grmn@@@active@dq
  \fi {#1}}
\def\grmn@@normal@dq#1{``#1}
\def\grmn@normal@dq#1{\dq #1}
\begingroup
  \catcode`\(=1\lccode`\(=`\{\catcode`\{=12
  \catcode`\)=2\lccode`\)=`\}\catcode`\}=12
  \catcode`\ =11\relax% <= do not delete this and the
\lowercase(\endgroup% <=== following percent characters!
\def\grmn@@@active@dq#1(%
\expandafter\grmn@@@@active@dq\expandafter{\string#1})%
\def\grmn@@@@active@dq(%
\ifx\protect\relax\else\ifx\protect\empty\else%
\expandafter\expandafter\expandafter\protect%
\fi\fi%
\active@dq \dq@prtct )%
\def\dq@prtct#1#(\@dq@prtct)%
\def\@dq@prtct#1(\string\dq@prtct{\string#1})%
\def\dq@prtct #1{#2}(\string\dq@prtct{\string#2})%
\def\active@dq #1{#2}(\grmn@active@@dq(#2))%
)%
\def\active@dq#1#{\@active@dq}%
\def\grmn@active@@dq#1{%
  \csname grmn@dq\ifmmode second\else first\fi
    \expandafter\expandafter\expandafter\expandafter
  \grmn@dq@macro\endcsname{#1}}
\grmn@dq@macro\let{0}=\noexpand
\let@dqmacro{1}{0}\let@dqmacro{2}{0}\let@dqmacro{3}{0}
\let@dqmacro{4}{0}\let@dqmacro{5}{0}\let@dqmacro{6}{0}
\let@dqmacro{7}{0}\let@dqmacro{8}{0}\let@dqmacro{9}{0}
\let@dqmacro{A}{0}\let@dqmacro{B}{0}\let@dqmacro{C}{0}
\let@dqmacro{D}{0}\let@dqmacro{E}{0}\let@dqmacro{F}{0}
\def@dqmacro{}{\dq{}}{\dq{}}
\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}
\def@dqmacro{s}{\ss{}}{\@SS{}}
\def@dqmacro{S}{SS}{SS}
\let@dqmacro{z}{s}
\def@dqmacro{Z}{SZ}{SZ}
\def@dqmacro{e}{\highumlaut e}{\@MATHUMLAUT e}
\def@dqmacro{E}{\highumlaut E}{\@MATHUMLAUT E}
\def@dqmacro{i}{\highumlaut{\i}}{\@MATHUMLAUT\imath}
\def@dqmacro{I}{\highumlaut I}{\@MATHUMLAUT I}
\def@dqmacro{`}{\glqq{}}{\glqq{}}
\def@dqmacro{'}{\grqq{}}{\grqq{}}
\def@dqmacro{<}{\flqq{}}{\flqq{}}
\def@dqmacro{>}{\frqq{}}{\frqq{}}
\def@dqmacro{-}{\penalty\@M\-\allowhyphens}%
               {\penalty\@M\-\allowhyphens}
\def@dqmacro{|}{\penalty\@M\discretionary{-}{}{\kern.03em}%
                \allowhyphens}{}
\def@dqmacro{"}{\hskip\z@skip}{\hskip\z@skip}
\def@dqmacro{~}{\leavevmode\hbox{-}}{-}
\def@dqmacro{=}{\penalty\@M-\hskip\z@skip}%
               {\penalty\@M-\hskip\z@skip}
\def\grmn@dqdisc#1#2{\penalty\@M
  \ifnum\grmn@dqwarninglevel>\@ne \grmn@dq@warning{#1}\fi
  \discretionary{#2-}{}{#1}\allowhyphens}
\def@dqmacro{c}{\grmn@dqdisc ck}{c}
\def@dqmacro{C}{\grmn@dqdisc CK}{C}
\def@dqmacro{l}{\grmn@dqdisc l{ll}}{l}
\def@dqmacro{L}{\grmn@dqdisc L{LL}}{L}
\def@dqmacro{m}{\grmn@dqdisc m{mm}}{m}
\def@dqmacro{M}{\grmn@dqdisc M{MM}}{M}
\def@dqmacro{n}{\grmn@dqdisc n{nn}}{n}
\def@dqmacro{N}{\grmn@dqdisc N{NN}}{N}
\def@dqmacro{p}{\grmn@dqdisc p{pp}}{p}
\def@dqmacro{P}{\grmn@dqdisc P{PP}}{P}
\def@dqmacro{r}{\grmn@dqdisc r{rr}}{r}
\def@dqmacro{R}{\grmn@dqdisc R{RR}}{R}
\def@dqmacro{t}{\grmn@dqdisc t{tt}}{t}
\def@dqmacro{T}{\grmn@dqdisc T{TT}}{T}
\def@dqmacro{F}{\grmn@dqdisc F{FF}}{F}
\def@dqmacro{f}{\grmn@dqdiscff}{f}
\def\grmn@dqdiscff{\penalty\@M
  \ifnum\grmn@dqwarninglevel>\@ne \grmn@dq@warning f\fi
  \afterassignment\grmn@dqinsertff \let\grmn@dqnextff= }
\def\grmn@dqinsertff{%
  \if f\grmn@dqnextff
    \expandafter\grmn@dqfirst\else\expandafter\grmn@dqsecond\fi
  {\relax\discretionary{ff-}{f}{ff}\allowhyphens}{f\grmn@dqnext}}
\let\grmn@dqnextff=f
\def\grmn@dqredefcheck#1{%
  \immediate\write\m@ne{german: %
    \grmn@dq@macro\ifx{#1}\relax \else re\fi
    defining dq-command for `\string#1'\on@line.}}%
\def\month@german{\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}
\def\dategerman{\def\today{\number\day.~\month@german
  \space\number\year}}
\def\dateaustrian{\def\today{\number\day.~\ifnum 1=\month
  J\"anner\else \month@german\fi \space\number\year}}
\def\month@english{\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}
\def\dateUSenglish{\def\today{\month@english
  \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
  ~\month@english \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}}
\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}}
\let\captionsaustrian=\captionsgerman
\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}}
\let\captionsUSenglish=\captionsenglish
\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}}%
\def\extrasUSenglish{}
\let\noextrasUSenglish=\extrasUSenglish
\let\extrasenglish=\extrasUSenglish
\let\noextrasenglish=\extrasenglish
\def\extrasgerman{\frenchspacing \uchyph\@ne
  \lefthyphenmin\tw@ \righthyphenmin\tw@}
\def\noextrasgerman{%
  \ifnum\sfcode`\.=\@m \else \noexpand\nonfrenchspacing \fi
  \uchyph\the\uchyph\relax
  \lefthyphenmin\the\lefthyphenmin
  \righthyphenmin\the\righthyphenmin}
\let\extrasaustrian=\extrasgerman
\let\noextrasaustrian=\noextrasgerman
\def\extrasfrench{\frenchspacing}
\def\noextrasfrench{%
  \ifnum\sfcode`\.=\@m \else \noexpand\nonfrenchspacing \fi}
\@ifundefined{l@USenglish}{%
  \@ifundefined{l@english}{\chardef\l@USenglish=255 }%
                          {\chardef\l@USenglish=\l@english}%
  \wlog{german -- \string\language\space number for USenglish %
        undefined, default \number\l@USenglish\space used.}%
}{}
\@ifundefined{l@english}{%
  \chardef\l@english=\l@USenglish
  \wlog{german -- \string\language\space number for UKenglish %
        undefined, default \number\l@english\space used.}%
}{}
\@ifundefined{l@german}{%
  \@ifundefined{l@austrian}{%
    \chardef\l@german=255 %
    \message{german -- \string\language\space number for German %
             undefined, default \number\l@german\space used,}%
    \message{german -- Please read \string"germdoc.tex\string" how %
             to install hyphenation patterns.}%
  }{%
    \chardef\l@german=\l@austrian
    \wlog{german -- \string\language\space number for German %
          undefined, default \number\l@german\space used.}%
  }%
}{}
\@ifundefined{l@austrian}{%
  \chardef\l@austrian=\l@german
  \wlog{german -- \string\language\space number for Austrian %
        undefined, default \number\l@austrian\space used.}%
}{}
\@ifundefined{l@french}{%
  \chardef\l@french=255
  \wlog{german -- \string\language\space number for French %
        undefined, default \number\l@french\space used.}%
}{}
\def\grmn@originalTeX{}
\def\languagename{}
\expandafter\def\csname selectlanguage \endcsname#1{\relax
  \expandafter\ifx\csname l@#1\endcsname\relax
    \errhelp{Your command will be ignored, type <return> to proceed}%
    \errmessage{You haven't defined the language #1 yet}%
  \else
    \grmn@originalTeX
    \edef\languagename{#1}%
    \edef\grmn@originalTeX{\csname noextras#1\endcsname
                      \def\noexpand\grmn@originalTeX{}}%
    \csname date#1\endcsname
    \csname captions#1\endcsname
    \csname extras#1\endcsname\relax
    % Diese Zeile ist fuer `bibgerm' ...
    \csname bibs#1\endcsname
    % ... sie wird in spaeteren `german.sty'-Versionen nicht
    % mehr vorhanden sein.  Also nicht darauf verlassen!
    \language \csname l@#1\endcsname\relax
  \fi}
\begingroup\catcode`\ =11\relax% <= do not delete this and the
\toks0={\endgroup% <=== following percent characters!
\def\selectlanguage#1{\protect\selectlanguage {%
\ifnum\escapechar=\expandafter`\string#1\empty%
\else\string#1\empty\fi}}}%
\the\toks0\relax%
\def\p@selectlanguage{\selectlanguage}
\def\iflanguage#1#2#3{%
  \expandafter\ifx\csname l@#1\endcsname\relax #3%
  \else \ifnum\csname l@#1\endcsname=\language #2%
  \else #3\fi\fi}
\expandafter\ifx\csname language\endcsname\relax
  \csname newcount\endcsname\language
  \language=0 \fi
\expandafter\ifx\csname lefthyphenmin\endcsname\relax
  \csname newcount\endcsname\lefthyphenmin
  \lefthyphenmin=2 \fi
\expandafter\ifx\csname righthyphenmin\endcsname\relax
  \csname newcount\endcsname\righthyphenmin
  \righthyphenmin=3 \fi
\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\x{\endgroup
  \def\originalTeX{\mdqoff \let"\dq \umlauthigh
    \let\3\grmn@original@three
    \selectlanguage{USenglish}}%
  \def\germanTeX{\mdqon \let"\@active@dq \umlautlow
    \let\grmn@original@three\3\let\3\ss
    \selectlanguage{german}}}%
\x
\catcode`\@=\atcode % return to previous catcode
\germanTeX
\endinput
%% 
%% End of file `german.sty'.

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to webmaster@9p.io.