1 % \iffalse meta-comment
3 % Copyright 1989-2008 Johannes L. Braams and any individual authors
4 % listed elsewhere in this file. All rights reserved.
6 % This file is part of the Babel system.
7 % --------------------------------------
9 % It may be distributed and/or modified under the
10 % conditions of the LaTeX Project Public License, either version 1.3
11 % of this license or (at your option) any later version.
12 % The latest version of this license is in
13 % http://www.latex-project.org/lppl.txt
14 % and version 1.3 or later is part of all distributions of LaTeX
15 % version 2003/12/01 or later.
17 % This work has the LPPL maintenance status "maintained".
19 % The Current Maintainer of this work is Johannes Braams.
21 % The list of all files belonging to the Babel system is
22 % given in the file `manifest.bbl. See also `legal.bbl' for additional
25 % The list of derived (unpacked) files belonging to the distribution
26 % and covered by LPPL is defined by the unpacking scripts (with
27 % extension .ins) which are part of the distribution.
32 % Tell the \LaTeX\ system who we are and write an entry on the
35 \ProvidesFile{germanb.dtx}
37 %<code>\ProvidesLanguage{germanb}
39 %\ProvidesFile{germanb.dtx}
40 [2008/06/01 v2.6m German support from the babel system]
43 %% Babel package for LaTeX version 2e
44 %% Copyright (C) 1989 - 2008
45 %% by Johannes Braams, TeXniek
47 %% Germanb Language Definition File
48 %% Copyright (C) 1989 - 2008
49 %% by Bernd Raichle raichle at azu.Informatik.Uni-Stuttgart.de
50 %% Johannes Braams, TeXniek
51 % This file is based on german.tex version 2.5d,
52 % by Bernd Raichle, Hubert Partl et.al.
54 %% Please report errors to: J.L. Braams
55 %% babel at braams.xs4all.nl
58 \documentclass{ltxdoc}
59 \font\manual=logo10 % font used for the METAFONT logo, etc.
60 \newcommand*\MF{{\manual META}\-{\manual FONT}}
61 \newcommand*\TeXhax{\TeX hax}
62 \newcommand*\babel{\textsf{babel}}
63 \newcommand*\langvar{$\langle \it lang \rangle$}
64 \newcommand*\note[1]{}
65 \newcommand*\Lopt[1]{\textsf{#1}}
66 \newcommand*\file[1]{\texttt{#1}}
68 \DocInput{germanb.dtx}
72 % \GetFileInfo{germanb.dtx}
74 % \changes{germanb-1.0a}{1990/05/14}{Incorporated Nico's comments}
75 % \changes{germanb-1.0b}{1990/05/22}{fixed typo in definition for
76 % austrian language found by Werenfried Spit
77 % \texttt{nspit@fys.ruu.nl}}
78 % \changes{germanb-1.0c}{1990/07/16}{Fixed some typos}
79 % \changes{germanb-1.1}{1990/07/30}{When using PostScript fonts with
80 % the Adobe fontencoding, the dieresis-accent is located elsewhere,
82 % \changes{germanb-1.1a}{1990/08/27}{Modified the documentation
84 % \changes{germanb-2.0}{1991/04/23}{Modified for babel 3.0}
85 % \changes{germanb-2.0a}{1991/05/25}{Removed some problems in change
87 % \changes{germanb-2.1}{1991/05/29}{Removed bug found by van der Meer}
88 % \changes{germanb-2.2}{1991/06/11}{Removed global assignments,
89 % brought uptodate with \file{german.tex} v2.3d}
90 % \changes{germanb-2.2a}{1991/07/15}{Renamed \file{babel.sty} in
92 % \changes{germanb-2.3}{1991/11/05}{Rewritten parts of the code to use
93 % the new features of babel version 3.1}
94 % \changes{germanb-2.3e}{1991/11/10}{Brought up-to-date with
95 % \file{german.tex} v2.3e (plus some bug fixes) [br]}
96 % \changes{germanb-2.5}{1994/02/08}{Update or \LaTeXe}
97 % \changes{germanb-2.5c}{1994/06/26}{Removed the use of \cs{filedate}
98 % and moved the identification after the loading of
100 % \changes{germanb-2.6a}{1995/02/15}{Moved the identification to the
102 % \changes{germanb-2.6a}{1995/02/15}{Rewrote the code that handles the
103 % active double quote character}
104 % \changes{germanb-2.6d}{1996/07/10}{Replaced \cs{undefined} with
105 % \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency
107 % \changes{germanb-2.6d}{1996/10/10}{Moved the definition of
108 % \cs{atcatcode} right to the beginning.}
110 % \section{The German language}
112 % The file \file{\filename}\footnote{The file described in this
113 % section has version number \fileversion\ and was last revised on
114 % \filedate.} defines all the language definition macros for the
115 % German language as well as for the Austrian dialect of this
116 % language\footnote{This file is a re-implementation of Hubert
117 % Partl's \file{german.sty} version 2.5b, see~\cite{HP}.}.
119 % For this language the character |"| is made active. In
120 % table~\ref{tab:german-quote} an overview is given of its
121 % purpose. One of the reasons for this is that in the German
122 % language some character combinations change when a word is broken
123 % between the combination. Also the vertical placement of the
124 % umlaut can be controlled this way.
127 % \begin{tabular}{lp{8cm}}
128 % |"a| & |\"a|, also implemented for the other
129 % lowercase and uppercase vowels. \\
130 % |"s| & to produce the German \ss{} (like |\ss{}|). \\
131 % |"z| & to produce the German \ss{} (like |\ss{}|). \\
132 % |"ck|& for |ck| to be hyphenated as |k-k|. \\
133 % |"ff|& for |ff| to be hyphenated as |ff-f|,
134 % this is also implemented for l, m, n, p, r and t\\
135 % |"S| & for |SS| to be |\uppercase{"s}|. \\
136 % |"Z| & for |SZ| to be |\uppercase{"z}|. \\
137 % \verb="|= & disable ligature at this position. \\
138 % |"-| & an explicit hyphen sign, allowing hyphenation
139 % in the rest of the word. \\
140 % |""| & like |"-|, but producing no hyphen sign
141 % (for compund words with hyphen, e.g.\ |x-""y|). \\
142 % |"~| & for a compound word mark without a breakpoint. \\
143 % |"=| & for a compound word mark with a breakpoint, allowing
144 % hyphenation in the composing words. \\
145 % |"`| & for German left double quotes (looks like ,,). \\
146 % |"'| & for German right double quotes. \\
147 % |"<| & for French left double quotes (similar to $<<$). \\
148 % |">| & for French right double quotes (similar to $>>$). \\
150 % \caption{The extra definitions made
151 % by \file{german.ldf}}\label{tab:german-quote}
154 % The quotes in table~\ref{tab:german-quote} can also be typeset by
155 % using the commands in table~\ref{tab:more-quote}.
158 % \begin{tabular}{lp{8cm}}
159 % |\glqq| & for German left double quotes (looks like ,,). \\
160 % |\grqq| & for German right double quotes (looks like ``). \\
161 % |\glq| & for German left single quotes (looks like ,). \\
162 % |\grq| & for German right single quotes (looks like `). \\
163 % |\flqq| & for French left double quotes (similar to $<<$). \\
164 % |\frqq| & for French right double quotes (similar to $>>$).\\
165 % |\flq| & for (French) left single quotes (similar to $<$). \\
166 % |\frq| & for (French) right single quotes (similar to $>$). \\
167 % |\dq| & the original quotes character (|"|). \\
169 % \caption{More commands which produce quotes, defined
170 % by \file{german.ldf}}\label{tab:more-quote}
176 % When this file was read through the option \Lopt{germanb} we make
177 % it behave as if \Lopt{german} was specified.
178 % \changes{german-2.6l}{2008/03/17}{Making germanb behave like german
179 % needs some more work besides defining \cs{CurrentOption}}
180 % \changes{germanb-2.6m}{2008/06/01}{Correted a typo}
182 \def\bbl@tempa{germanb}
183 \ifx\CurrentOption\bbl@tempa
184 \def\CurrentOption{german}
185 \ifx\l@german\@undefined
187 \adddialect\l@german0
189 \let\l@germanb\l@german
191 \let\captionsgermanb\captionsgerman
192 \let\dategermanb\dategerman
193 \let\extrasgermanb\extrasgerman
194 \let\noextrasgermanb\noextrasgerman
199 % The macro |\LdfInit| takes care of preventing that this file is
200 % loaded more than once, checking the category code of the
201 % \texttt{@} sign, etc.
202 % \changes{germanb-2.6d}{1996/11/02}{Now use \cs{LdfInit} to perform
206 \LdfInit\CurrentOption{captions\CurrentOption}
209 % When this file is read as an option, i.e., by the |\usepackage|
210 % command, \texttt{german} will be an `unknown' language, so we
211 % have to make it known. So we check for the existence of
212 % |\l@german| to see whether we have to do something here.
214 % \changes{germanb-2.0}{1991/04/23}{Now use \cs{adddialect} if
215 % language undefined}
216 % \changes{germanb-2.2d}{1991/10/27}{Removed use of \cs{@ifundefined}}
217 % \changes{germanb-2.3e}{1991/11/10}{Added warning, if no german
219 % \changes{germanb-2.5c}{1994/06/26}{Now use \cs{@nopatterns} to
220 % produce the warning}
222 \ifx\l@german\@undefined
224 \adddialect\l@german0
228 % For the Austrian version of these definitions we just add another
230 % \changes{germanb-2.0}{1991/04/23}{Now use \cs{adddialect} for
233 \adddialect\l@austrian\l@german
236 % The next step consists of defining commands to switch to (and
237 % from) the German language.
239 % \begin{macro}{\captionsgerman}
240 % \begin{macro}{\captionsaustrian}
241 % Either the macro |\captionsgerman| or the macro
242 % |\captionsaustrian| will define all strings used in the four
243 % standard document classes provided with \LaTeX.
245 % \changes{germanb-2.2}{1991/06/06}{Removed \cs{global} definitions}
246 % \changes{germanb-2.2}{1991/06/06}{\cs{pagename} should be
248 % \changes{germanb-2.3e}{1991/11/10}{Added \cs{prefacename},
249 % \cs{seename} and \cs{alsoname}}
250 % \changes{germanb-2.4}{1993/07/15}{\cs{headpagename} should be
252 % \changes{germanb-2.6b}{1995/07/04}{Added \cs{proofname} for
254 % \changes{germanb-2.6d}{1996/07/10}{Construct control sequence on the
256 % \changes{germanb-2.6j}{2000/09/20}{Added \cs{glossaryname}}
258 \@namedef{captions\CurrentOption}{%
259 \def\prefacename{Vorwort}%
260 \def\refname{Literatur}%
261 \def\abstractname{Zusammenfassung}%
262 \def\bibname{Literaturverzeichnis}%
263 \def\chaptername{Kapitel}%
264 \def\appendixname{Anhang}%
265 \def\contentsname{Inhaltsverzeichnis}% % oder nur: Inhalt
266 \def\listfigurename{Abbildungsverzeichnis}%
267 \def\listtablename{Tabellenverzeichnis}%
268 \def\indexname{Index}%
269 \def\figurename{Abbildung}%
270 \def\tablename{Tabelle}% % oder: Tafel
272 \def\enclname{Anlage(n)}% % oder: Beilage(n)
273 \def\ccname{Verteiler}% % oder: Kopien an
275 \def\pagename{Seite}%
277 \def\alsoname{siehe auch}%
278 \def\proofname{Beweis}%
279 \def\glossaryname{Glossar}%
285 % \begin{macro}{\dategerman}
286 % The macro |\dategerman| redefines the command
287 % |\today| to produce German dates.
288 % \changes{germanb-2.3e}{1991/11/10}{Added \cs{month@german}}
289 % \changes{germanb-2.6f}{1997/10/01}{Use \cs{edef} to define
290 % \cs{today} to save memory}
291 % \changes{germanb-2.6f}{1998/03/28}{use \cs{def} instead of
294 \def\month@german{\ifcase\month\or
295 Januar\or Februar\or M\"arz\or April\or Mai\or Juni\or
296 Juli\or August\or September\or Oktober\or November\or Dezember\fi}
297 \def\dategerman{\def\today{\number\day.~\month@german
302 % \begin{macro}{\dateaustrian}
303 % The macro |\dateaustrian| redefines the command
304 % |\today| to produce Austrian version of the German dates.
305 % \changes{germanb-2.6f}{1997/10/01}{Use \cs{edef} to define
306 % \cs{today} to save memory}
307 % \changes{germanb-2.6f}{1998/03/28}{use \cs{def} instead of
310 \def\dateaustrian{\def\today{\number\day.~\ifnum1=\month
311 J\"anner\else \month@german\fi \space\number\year}}
315 % \begin{macro}{\extrasgerman}
316 % \begin{macro}{\extrasaustrian}
317 % \changes{germanb-2.0b}{1991/05/29}{added some comment chars to
318 % prevent white space}
319 % \changes{germanb-2.2}{1991/06/11}{Save all redefined macros}
320 % \begin{macro}{\noextrasgerman}
321 % \begin{macro}{\noextrasaustrian}
322 % \changes{germanb-1.1}{1990/07/30}{Added \cs{dieresis}}
323 % \changes{germanb-2.0b}{1991/05/29}{added some comment chars to
324 % prevent white space}
325 % \changes{germanb-2.2}{1991/06/11}{Try to restore everything to its
327 % \changes{germanb-2.6d}{1996/07/10}{Construct control sequence
328 % \cs{extrasgerman} or \cs{extrasaustrian} on the fly}
330 % Either the macro |\extrasgerman| or the macros |\extrasaustrian|
331 % will perform all the extra definitions needed for the German
332 % language. The macro |\noextrasgerman| is used to cancel the
333 % actions of |\extrasgerman|.
335 % For German (as well as for Dutch) the \texttt{"} character is
336 % made active. This is done once, later on its definition may vary.
338 \initiate@active@char{"}
339 \@namedef{extras\CurrentOption}{%
340 \languageshorthands{german}}
341 \expandafter\addto\csname extras\CurrentOption\endcsname{%
344 % Don't forget to turn the shorthands off again.
345 % \changes{germanb-2.6i}{1999/12/16}{Deactivate shorthands ouside of
348 \addto\noextrasgerman{\bbl@deactivate{"}}
351 % \changes{germanb-2.6a}{1995/02/15}{All the code to handle the active
352 % double quote has been moved to \file{babel.def}}
354 % In order for \TeX\ to be able to hyphenate German words which
355 % contain `\ss' (in the \texttt{OT1} position |^^Y|) we have to
356 % give the character a nonzero |\lccode| (see Appendix H, the \TeX
358 % \changes{germanb-2.6c}{1996/04/08}{Use decimal number instead of
359 % hat-notation as the hat may be activated}
361 \expandafter\addto\csname extras\CurrentOption\endcsname{%
362 \babel@savevariable{\lccode25}%
365 % \changes{germanb-2.6a}{1995/02/15}{Removeed \cs{3} as it is no
366 % longer in \file{german.ldf}}
368 % The umlaut accent macro |\"| is changed to lower the umlaut dots.
369 % The redefinition is done with the help of |\umlautlow|.
371 \expandafter\addto\csname extras\CurrentOption\endcsname{%
372 \babel@save\"\umlautlow}
373 \@namedef{noextras\CurrentOption}{\umlauthigh}
375 % The german hyphenation patterns can be used with |\lefthyphenmin|
376 % and |\righthyphenmin| set to~2.
377 % \changes{germanb-2.6a}{1995/05/13}{use \cs{germanhyphenmins} to store
378 % the correct values}
379 % \changes{germanb-2.6j}{2000/09/22}{Now use \cs{providehyphenmins} to
380 % provide a default value}
382 \providehyphenmins{\CurrentOption}{\tw@\tw@}
384 % For German texts we need to make sure that |\frenchspacing| is
386 % \changes{germanb-2.6k}{2001/01/26}{Turn frenchspacing on, as in
387 % \texttt{german.sty}}
389 \expandafter\addto\csname extras\CurrentOption\endcsname{%
391 \expandafter\addto\csname noextras\CurrentOption\endcsname{%
392 \bbl@nonfrenchspacing}
399 % \changes{germanb-2.6a}{1995/02/15}{\cs{umlautlow} and
400 % \cs{umlauthigh} moved to \file{glyphs.dtx}, as well as
401 % \cs{newumlaut} (now \cs{lower@umlaut}}
403 % The code above is necessary because we need an extra active
404 % character. This character is then used as indicated in
405 % table~\ref{tab:german-quote}.
407 % To be able to define the function of |"|, we first define a
408 % couple of `support' macros.
410 % \changes{germanb-2.3e}{1991/11/10}{Added \cs{save@sf@q} macro and
411 % rewrote all quote macros to use it}
412 % \changes{germanb-2.3h}{1991/02/16}{moved definition of
413 % \cs{allowhyphens}, \cs{set@low@box} and \cs{save@sf@q} to
415 % \changes{germanb-2.6a}{1995/02/15}{Moved all quotation characters to
419 % We save the original double quote character in |\dq| to keep
420 % it available, the math accent |\"| can now be typed as |"|.
422 \begingroup \catcode`\"12
424 \def\@SS{\mathchar"7019 }
429 % \changes{germanb-2.6c}{1996/01/24}{Moved \cs{german@dq@disc} to
430 % babel.def, calling it \cs{bbl@disc}}
432 % \changes{germanb-2.6a}{1995/02/15}{Use \cs{ddot} instead of
435 % Now we can define the doublequote macros: the umlauts,
436 % \changes{germanb-2.6c}{1996/05/30}{added the \cs{allowhyphens}}
438 \declare@shorthand{german}{"a}{\textormath{\"{a}\allowhyphens}{\ddot a}}
439 \declare@shorthand{german}{"o}{\textormath{\"{o}\allowhyphens}{\ddot o}}
440 \declare@shorthand{german}{"u}{\textormath{\"{u}\allowhyphens}{\ddot u}}
441 \declare@shorthand{german}{"A}{\textormath{\"{A}\allowhyphens}{\ddot A}}
442 \declare@shorthand{german}{"O}{\textormath{\"{O}\allowhyphens}{\ddot O}}
443 \declare@shorthand{german}{"U}{\textormath{\"{U}\allowhyphens}{\ddot U}}
447 \declare@shorthand{german}{"e}{\textormath{\"{e}}{\ddot e}}
448 \declare@shorthand{german}{"E}{\textormath{\"{E}}{\ddot E}}
449 \declare@shorthand{german}{"i}{\textormath{\"{\i}}%
451 \declare@shorthand{german}{"I}{\textormath{\"{I}}{\ddot I}}
453 % german es-zet (sharp s),
454 % \changes{germanb-2.6f}{1997/05/08}{use \cs{SS} instead of
455 % \texttt{SS}, removed braces after \cs{ss}}
457 \declare@shorthand{german}{"s}{\textormath{\ss}{\@SS{}}}
458 \declare@shorthand{german}{"S}{\SS}
459 \declare@shorthand{german}{"z}{\textormath{\ss}{\@SS{}}}
460 \declare@shorthand{german}{"Z}{SZ}
462 % german and french quotes,
464 \declare@shorthand{german}{"`}{\glqq}
465 \declare@shorthand{german}{"'}{\grqq}
466 \declare@shorthand{german}{"<}{\flqq}
467 \declare@shorthand{german}{">}{\frqq}
469 % discretionary commands
471 \declare@shorthand{german}{"c}{\textormath{\bbl@disc ck}{c}}
472 \declare@shorthand{german}{"C}{\textormath{\bbl@disc CK}{C}}
473 \declare@shorthand{german}{"F}{\textormath{\bbl@disc F{FF}}{F}}
474 \declare@shorthand{german}{"l}{\textormath{\bbl@disc l{ll}}{l}}
475 \declare@shorthand{german}{"L}{\textormath{\bbl@disc L{LL}}{L}}
476 \declare@shorthand{german}{"m}{\textormath{\bbl@disc m{mm}}{m}}
477 \declare@shorthand{german}{"M}{\textormath{\bbl@disc M{MM}}{M}}
478 \declare@shorthand{german}{"n}{\textormath{\bbl@disc n{nn}}{n}}
479 \declare@shorthand{german}{"N}{\textormath{\bbl@disc N{NN}}{N}}
480 \declare@shorthand{german}{"p}{\textormath{\bbl@disc p{pp}}{p}}
481 \declare@shorthand{german}{"P}{\textormath{\bbl@disc P{PP}}{P}}
482 \declare@shorthand{german}{"r}{\textormath{\bbl@disc r{rr}}{r}}
483 \declare@shorthand{german}{"R}{\textormath{\bbl@disc R{RR}}{R}}
484 \declare@shorthand{german}{"t}{\textormath{\bbl@disc t{tt}}{t}}
485 \declare@shorthand{german}{"T}{\textormath{\bbl@disc T{TT}}{T}}
487 % We need to treat |"f| a bit differently in order to preserve the
489 % \changes{germanb-2.6f}{1998/06/15}{Copied the coding for \texttt{"f}
490 % from german.dtx version 2.5d}
492 \declare@shorthand{german}{"f}{\textormath{\bbl@discff}{f}}
493 \def\bbl@discff{\penalty\@M
494 \afterassignment\bbl@insertff \let\bbl@nextff= }
497 \expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
498 {\relax\discretionary{ff-}{f}{ff}\allowhyphens}{f\bbl@nextff}}
501 % and some additional commands:
503 \declare@shorthand{german}{"-}{\nobreak\-\bbl@allowhyphens}
504 \declare@shorthand{german}{"|}{%
505 \textormath{\penalty\@M\discretionary{-}{}{\kern.03em}%
507 \declare@shorthand{german}{""}{\hskip\z@skip}
508 \declare@shorthand{german}{"~}{\textormath{\leavevmode\hbox{-}}{-}}
509 \declare@shorthand{german}{"=}{\penalty\@M-\hskip\z@skip}
512 % \begin{macro}{\mdqon}
513 % \begin{macro}{\mdqoff}
515 % All that's left to do now is to define a couple of commands
516 % for reasons of compatibility with \file{german.sty}.
517 % \changes{germanb-2.6f}{1998/06/07}{Now use \cs{shorthandon} and
520 \def\mdqon{\shorthandon{"}}
521 \def\mdqoff{\shorthandoff{"}}
522 \def\ck{\allowhyphens\discretionary{k-}{k}{ck}\allowhyphens}
528 % The macro |\ldf@finish| takes care of looking for a
529 % configuration file, setting the main language to be switched on
530 % at |\begin{document}| and resetting the category code of
531 % \texttt{@} to its original value.
532 % \changes{germanb-2.6d}{1996/11/02}{Now use \cs{ldf@finish} to wrap
535 \ldf@finish\CurrentOption
542 %% {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
543 %% 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
544 %% Digits \0\1\2\3\4\5\6\7\8\9
545 %% Exclamation \! Double quote \" Hash (number) \#
546 %% Dollar \$ Percent \% Ampersand \&
547 %% Acute accent \' Left paren \( Right paren \)
548 %% Asterisk \* Plus \+ Comma \,
549 %% Minus \- Point \. Solidus \/
550 %% Colon \: Semicolon \; Less than \<
551 %% Equals \= Greater than \> Question mark \?
552 %% Commercial at \@ Left bracket \[ Backslash \\
553 %% Right bracket \] Circumflex \^ Underscore \_
554 %% Grave accent \` Left brace \{ Vertical bar \|
555 %% Right brace \} Tilde \~}