Category : EmTeX is a TeX/LaTeX document editor
Archive   : GTEX.ZIP
Filename : GERMAN.STY
Output of file : GERMAN.STY contained in archive : GTEX.ZIP
% 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.
%
% Typo corrected by em (\dateenglish: 237rd -> 23rd)
%
% 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\umlautlow{\def\"{\protect\newumlaut}}
\gdef\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}
\gdef\highumlaut#1{\leavevmode\allowhyphens
\accent127 #1\allowhyphens}
\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 23rd\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
Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!
This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.
But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/