%GERMAN % This is GERMAN.TEX or GERMAN.DOC or GERMAN.STY, Vers. 2.3c, 28 Aug 1990, % 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), 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 Muenster, October 1987. It is available from DANTE (the users % group of German speaking TeX users) at the Uni Heidelberg. % % 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. % "` 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 switch to the language specified by n, which % should be one of the following command names: % \austrian \french \english \german \USenglish; % - this changes the date format, captions and (if % ``multilingual TeX''is installed) 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). % \setlanguage (if not defined, i.e. not with TeX 3.x) = \selectlanguage % % 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. % \language a count that is set by \selectlanguage and can be used % by document style declarations like % \ifnum\language=\english .textengl.\else % \ifnum\language=\german .textgerm.\fi\fi % and/or by M.Ferguson's ``Multilingual T^eX''. % % 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. % The catcode of @ remains unchanged after processing of this file. % All definitions are global, 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. % % \ifundefined{mdqon} or \mdqon=\relax \expandafter\ifx\csname mdqon\endcsname\relax % \then go ahead \else do nothing \else \endinput \fi \message{Document Style Option `german' Version 2.3c of 28 Aug 1990} % \ifundefined{protect} \ifx\protect\undefined % \then define it \let\protect=\relax \fi {\catcode`\@=11 % \makeatletter \gdef\allowhyphens{\penalty\@M \hskip\z@skip} % {\nobreak \hskip 0pt plus 0pt\relax} \newcount\U@C\newbox\U@B\newdimen\U@D % \gdef\umlauthigh{\def\"##1{{\accent127 ##1}}} \gdef\umlauthigh{\def\"##1{{\dirtyumlaut##1}}} %\gdef\umlautlow{\def\"{\protect\newumlaut}} \gdef\umlautlow{\def\"{\protect\dirtyumlautlow}} \gdef\dirtyumlautlow#1{\if#1A{\discretionary {\kern 4321sp m\kern 196sp\kern-4517sp\kern-1em}{}{\protect\newumlaut#1}}\else \if#1O{\discretionary {\kern 4321sp m\kern 214sp\kern-4535sp\kern-1em}{}{\protect\newumlaut#1}}\else \if#1U{\discretionary {\kern 4321sp m\kern 220sp\kern-4541sp\kern-1em}{}{\protect\newumlaut#1}}\else \if#1a{\discretionary {\kern 4321sp m\kern 228sp\kern-4549sp\kern-1em}{}{\protect\newumlaut#1}}\else \if#1o{\discretionary {\kern 4321sp m\kern 246sp\kern-4567sp\kern-1em}{}{\protect\newumlaut#1}}\else \if#1u{\discretionary {\kern 4321sp m\kern 252sp\kern-4573sp\kern-1em}{}{\protect\newumlaut#1}}\else \if#1s{\discretionary {\kern 4321sp m\kern 255sp\kern-4573sp\kern-1em}{} {\ss}}\else{\protect\newumlaut#1}\fi\fi\fi\fi\fi\fi\fi} \gdef\newumlaut#1{\leavevmode \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}}} \gdef\highumlaut#1{\leavevmode\dirtyumlaut#1} \gdef\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.) \gdef\@glqq{{\ifhmode \edef\@SF{\spacefactor\the\spacefactor}\else \let\@SF\empty \fi \leavevmode \set@low@box{''}\box\z@\kern-.04em\allowhyphens\@SF\relax}} \gdef\glqq{\protect\@glqq} \gdef\@grqq{\ifhmode \edef\@SF{\spacefactor\the\spacefactor}\else \let\@SF\empty \fi \kern-.07em``\kern.07em\@SF\relax} \gdef\grqq{\protect\@grqq} \gdef\@glq{{\ifhmode \edef\@SF{\spacefactor\the\spacefactor}\else \let\@SF\empty \fi \leavevmode \set@low@box{'}\box\z@\kern-.04em\allowhyphens\@SF\relax}} \gdef\glq{\protect\@glq} \gdef\@grq{\kern-.07em`\kern.07em} \gdef\grq{\protect\@grq} \gdef\@flqq{\ifhmode \edef\@SF{\spacefactor\the\spacefactor}\else \let\@SF\empty \fi \ifmmode \ll \else \leavevmode \raise .2ex \hbox{$\scriptscriptstyle \ll $}\fi \@SF\relax} \gdef\flqq{\protect\@flqq} \gdef\@frqq{\ifhmode \edef\@SF{\spacefactor\the\spacefactor}\else \let\@SF\empty \fi \ifmmode \gg \else \leavevmode \raise .2ex \hbox{$\scriptscriptstyle \gg $}\fi \@SF\relax} \gdef\frqq{\protect\@frqq} \gdef\@flq{\ifhmode \edef\@SF{\spacefactor\the\spacefactor}\else \let\@SF\empty \fi \ifmmode < \else \leavevmode \raise .2ex \hbox{$\scriptscriptstyle < $}\fi \@SF\relax} \gdef\flq{\protect\@flq} \gdef\@frq{\ifhmode \edef\@SF{\spacefactor\the\spacefactor}\else \let\@SF\empty \fi \ifmmode > \else \leavevmode \raise .2ex \hbox{$\scriptscriptstyle > $}\fi \@SF\relax} \gdef\frq{\protect\@frq} % enable hyphenations after \ss: \global\lccode`\^^Y=`\^^Y \global\let\original@three=\3 % Note that \3 may be defined or undefined. % add the quotes to the definitions of dospecials and sanitize: \begingroup \def\do{\noexpand\do\noexpand}% % note that "\xdef" means "\global\edef" \xdef\dospecials{\dospecials\do\"}% % not ( \ifundefined{@sanitize} or \@sanitize=\relax ) = if LaTeX \expandafter\ifx\csname @sanitize\endcsname\relax \else \def\@makeother{\noexpand\@makeother\noexpand}% \xdef\@sanitize{\@sanitize\@makeother\"}% \fi \endgroup \gdef\mdqon{\catcode`\"\active} \gdef\mdqoff{\catcode`\"12 } \gdef\ck{\allowhyphens\discretionary{k-}{k}{ck}\allowhyphens} {\mdqoff \gdef\@UMLAUT{\"} \gdef\@MATHUMLAUT{\mathaccent"707F } \gdef\@SS{\mathchar"7019 } \gdef\dq{"} } {\mdqon \gdef"{\protect\active@dq} \gdef\active@dq{\futurelet\next@after@dq\first@active@dq} % For efficency, first the most frequent ones in a short macro only: \gdef\first@active@dq#1{% \ifx \next@after@dq\bgroup\dq {#1}% \else \expandafter\ifx \space\next@after@dq\dq\space #1% % The two lines above are needed before everything else, to take care of % (empty or non-empty) groups and spaces after the active quote! % Now the real thing: \else \ifx #1s\ifmmode\@SS \else \ss\fi{}% % note the empty group to avoid gobbling spaces. \else \ifx #1a\ifmmode\@MATHUMLAUT a\else \@UMLAUT a\fi \else \ifx #1o\ifmmode\@MATHUMLAUT o\else \@UMLAUT o\fi \else \ifx #1u\ifmmode\@MATHUMLAUT u\else \@UMLAUT u\fi \else \ifx #1A\ifmmode\@MATHUMLAUT A\else \@UMLAUT A\fi \else \ifx #1O\ifmmode\@MATHUMLAUT O\else \@UMLAUT O\fi \else \ifx #1U\ifmmode\@MATHUMLAUT U\else \@UMLAUT U\fi \else \ifx #1`\glqq{}% \else \ifx #1'\grqq{}% \else \other@active@dq{#1}% \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi \fi } % And now a separate command for the less frequent ones: \gdef\other@active@dq#1{% \ifx #1e\ifmmode\@MATHUMLAUT e\else \highumlaut e\fi \else \ifx #1i\ifmmode\@MATHUMLAUT i\else \highumlaut\i \fi \else \ifx #1E\ifmmode\@MATHUMLAUT E\else \highumlaut E\fi \else \ifx #1I\ifmmode\@MATHUMLAUT I\else \highumlaut I\fi \else \ifx #1SSS% \else \ifx #1-\allowhyphens\-\allowhyphens \else \ifx #1"\hskip\z@skip \else \ifx #1|\discretionary{-}{}{\kern.03em}% \else \ifx #1c\allowhyphens\discretionary{k-}{}{c}\allowhyphens \else \ifx #1f\allowhyphens\discretionary{ff-}{}{f}\allowhyphens \else \ifx #1l\allowhyphens\discretionary{ll-}{}{l}\allowhyphens \else \ifx #1m\allowhyphens\discretionary{mm-}{}{m}\allowhyphens \else \ifx #1n\allowhyphens\discretionary{nn-}{}{n}\allowhyphens \else \ifx #1p\allowhyphens\discretionary{pp-}{}{p}\allowhyphens \else \ifx #1t\allowhyphens\discretionary{tt-}{}{t}\allowhyphens \else \ifx #1C\allowhyphens\discretionary{K-}{}{C}\allowhyphens \else \ifx #1F\allowhyphens\discretionary{FF-}{}{F}\allowhyphens \else \ifx #1L\allowhyphens\discretionary{LL-}{}{L}\allowhyphens \else \ifx #1M\allowhyphens\discretionary{MM-}{}{M}\allowhyphens \else \ifx #1N\allowhyphens\discretionary{NN-}{}{N}\allowhyphens \else \ifx #1P\allowhyphens\discretionary{PP-}{}{P}\allowhyphens \else \ifx #1T\allowhyphens\discretionary{TT-}{}{T}\allowhyphens \else \ifx #1<\flqq{}% \else \ifx #1>\frqq{}% % note the empty group to avoid gobbling spaces. \else \ifx #1\active@dq\hskip\z@skip \else \dq #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\fi } } % end of \mdqon \gdef\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}} \gdef\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}} \gdef\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}} \gdef\dateenglish{\def\today{\ifcase\day\or 1st\or 2nd\or 3rd\or 4th\or 5th\or 6th\or 7th\or 8th\or 9th\or 10th\or 11th\or 12th\or 13th\or 14th\or 15th\or 16th\or 17th\or 18th\or 19th\or 20th\or 21st\or 22nd\or 237rd\or 24th\or 25th\or 26th\or 27th\or 28th\or 29th\or 30th\or 31st\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}} \gdef\datefrench{\def\today{\ifnum\day=1\relax 1\/$^{\rm er}$\else \number\day\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 \captionsxxxxx 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. \gdef\captionsgerman{% \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}} \gdef\captionsenglish{% \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}} \gdef\captionsfrench{% \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}} \newcount\l@nguage % This will be re-declared as \language if the latter has not yet been % declared neither by Ferguson's ``Multilingual T^eX'' nor by TeX 3: % \ifundefined{language} \expandafter\ifx\csname language\endcsname\relax \global\let\language=\l@nguage \fi \newcount\USenglish \global\USenglish=0 \newcount\german \global\german=1 \newcount\austrian \global\austrian=2 \newcount\french \global\french=3 \newcount\english \global\english=4 \gdef\selectlanguage#1{\language #1\relax \expandafter\ifcase #1\relax \dateUSenglish \captionsenglish \or \dategerman \captionsgerman \or \dateaustrian \captionsgerman \or \datefrench \captionsfrench \or \dateenglish \captionsenglish \fi} % \ifundefined{setlanguage} (= TeX version < 3 ) \expandafter\ifx\csname setlanguage\endcsname\relax \global\let\setlanguage=\selectlanguage \fi \gdef\originalTeX{\mdqoff \umlauthigh \let\3\original@three \selectlanguage{\USenglish}} \gdef\germanTeX{\mdqon \umlautlow \let\3\ss \selectlanguage{\german}} } % return to previous catcodes % Now, switch on what is appropriate for german: \germanTeX % This is the end of GERMAN.STY/DOC/TEX. \endinput