% \iffalse meta-comment % % File `ngermanb.dtx' % % Copyright 1989--2014 Johannes L. Braams % Bernd Raichle % Walter Schmidt, % Juergen Spitzmueller % All rights reserved. % % This file is part of the babel-german bundle, % an extension to the Babel system. % ---------------------------------------------- % % It may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 % of this license or (at your option) any later version. % The latest version of this license is in % http://www.latex-project.org/lppl.txt % and version 1.3 or later is part of all distributions of LaTeX % version 2003/12/01 or later. % % This work has the LPPL maintenance status "maintained". % % The Current Maintainer of this work is Juergen Spitzmueller. % % This file is based on german.tex version 2.5e % by Bernd Raichle, Hubert Partl et.al. % % \fi % \CheckSum{294} % % \iffalse % Tell the \LaTeX\ system who we are and write an entry on the % transcript. %<*dtx> \ProvidesFile{ngermanb.dtx} % %\ProvidesLanguage{naustrian} %\ProvidesLanguage{ngerman} %\ProvidesLanguage{nswissgerman} %\ProvidesLanguage{ngermanb} %\fi %\ProvidesFile{ngermanb.dtx} [2013/12/13 v2.7 German support for babel (new orthography)] %\iffalse % %<*filedriver> \documentclass{ltxdoc} \usepackage{bera} \usepackage{url} \font\manual=logo10 % font used for the METAFONT logo, etc. \newcommand*\MF{{\manual META}\-{\manual FONT}} \newcommand*\TeXhax{\TeX hax} \newcommand*\babel{\textsf{babel}} \newcommand*\Babel{\textsf{Babel}} \newcommand*\langvar{$\langle \it lang \rangle$} \newcommand*\note[1]{} \newcommand*\Lopt[1]{\textsf{#1}} \newcommand*\file[1]{\texttt{#1}} \GlossaryMin = .33\textheight \begin{document} \DocInput{ngermanb.dtx} \end{document} % %\fi % \GetFileInfo{ngermanb.dtx} % %\RecordChanges % % \changes{ngermanb-2.7}{2013/12/13}{Added support for variety \texttt{nswissgerman}.} % \changes{ngermanb-2.7}{2013/12/13}{Revised \texttt{naustrian} support.} % \changes{ngermanb-2.7}{2013/12/13}{Revised documentation: Turn the \babel{} % manual chapter into a self-enclosed manual.} % % \changes{ngermanb-2.6f}{1999/03/24}{Renamed from \file{germanb.ldf}; % language names changed from \texttt{german} and \texttt{austrian} % to \texttt{ngerman} and \texttt{naustrian}.} % % \title{Babel support for the German language (new~orthography)} % \author{Johannes Braams \and Bernd Raichle \and Walter Schmidt \and J\"urgen Spitzm\"uller\thanks{% % Current maintainer. Address correspondence to juergen (at) spitzmueller (dot) org.}} % \date{\fileversion\ (\filedate)} % \maketitle % % \begin{abstract} % \noindent This manual documents the \babel\ language definition file \file{ngermanb.ldf} % for German (new orthography). % The file is part of the \textsf{babel-german} bundle. % \end{abstract} % % \section{Aim and usage} % % The file \file{ngermanb.ldf} provides the \babel\ package with all language % definition macros (language specific strings and settings) for the German % language, including the Austrian and Swiss varieties of German. Furthermore, % it assures that the correct hyphenation patterns for the respective language % or variety are used.\footnote{The file \file{ngermanb.ldf} started as a % re-implementation of the package \file{ngerman.sty} by Bernd Raichle (cf. \cite{gerdoc}), % which itself builds on \file{german.sty}, originally developed by Hubert Partl % (cf. \cite{HP}) and later maintained by Bernd Raichle as well. % The re-implementation was done by Johannes Braams.} % The file adheres to the reformed (1996\,ff.) orthography. % For traditional (1901--1996) German orthography support, % please refer to the complementary |germanb.ldf| file. % % In order to use the language definitions provided here, you need to use % the \babel\ package and pass the respective language name as an % option, either of % % \begin{itemize} % \setlength{\itemsep}{0pt} % \item |\usepackage[ngerman]{babel}| % \item |\usepackage[naustrian]{babel}| % \item |\usepackage[nswissgerman]{babel}| % \end{itemize} % Please consult the \babel\ manual \cite{babel} for details. % % \section{Shorthands} % % For all three varieties of German, the character |"| is made active % in order to provide some shorthand macros. % The shorthands provide access to some frequently % used special characters as well as some further possibilities % to control hyphenation, to break lines and to deal with ligatures. % Table~\ref{tab:german-quote} provides an overview of the shorthands % that are provided by \file{ngermanb.ldf}. % \begin{table}[htb] % \begin{center} % \begin{tabular}{lp{.75\textwidth}} % |"a| & umlaut \"a (shorthand for |\"a|). Similar shorthands are % available for all other lower- and uppercase % vowels (umlauts: |"a|, |"o|, |"u|, |"A|, |"O|, % |"U|, as well as tremata: |"e|, |"i|, |"E|, |"I|).\\ % |"s| & German \ss{} (shorthand for |\ss{}|). \\ % |"z| & German \ss{} (shorthand for |\ss{}|). \\ % |"S| & |SS| (|\uppercase{"s}|, since \ss{} must be written % as SS in uppercase writing). \\ % |"Z| & |SZ| (|\uppercase{"z}|). An alternative to |"S| common % in traditional spelling, where \ss{} could also % be written as SZ instead of SS in uppercase writing. % Note that, with reformed orthography, the SZ % variant has been deprecated in favour of SS only. \\ % \verb="|= & disable ligature at this position % (e.\,g. \verb=Auf"|lage=). \\ % |"-| & an additional breakpoint that does still % allow for hyphenation at the breakpoints preset in % the hyphenation patterns (as opposed to |\-|). \\ % |""| & a breakpoint that does not output a hyphen sign % if the line break is performed (useful for compound % words with hyphen, e.\,g.\ |(Un-)""Sinn|). \\ % |"~| & a compound word mark without a breakpoint. Useful for % cases such as |bergauf und "~ab|. \\ % |"=| & a compound word mark with a breakpoint, allowing % for hyphenation at the other points preset in the % hyphenation patterns (as opposed to plain |-|). \\ % |"`| & German left double quotes (i.\,e. ,,). \\ % |"'| & German right double quotes (i.\,e. ``). \\ % |"<| & French/Swiss left double quotes (i.\,e. <<). \\ % |">| & French/Swiss right double quotes (i.\,e. >>). \\ % \end{tabular} % \caption{The extra definitions made % by \file{ngermanb.ldf}}\label{tab:german-quote} % \end{center} % \end{table} % % Table~\ref{tab:more-quote} lists some macros for quotation marks % that might be used as an alternative to the quotation mark shorthands % provided by \file{ngermanb.ldf}. % \begin{table}[htb] % \begin{center} % \begin{tabular}{lp{8cm}} % |\glqq| & German left double quotes (i.\,e. ,,). \\ % |\grqq| & German right double quotes (i.\,e. ``). \\ % |\glq| & German left single quotes (i.\,e. ,). \\ % |\grq| & German right single quotes (i.\,e. `). \\ % |\flqq| & French/Swiss left double quotes (i.\,e. <<). \\ % |\frqq| & French/Swiss right double quotes (i.\,e. >>).\\ % |\flq| & French/Swiss left single quotes (i.\,e. \guilsinglleft). \\ % |\frq| & French/Swiss right single quotes (i.\,e. \guilsinglright). \\ % |\dq| & the original quotation mark character (i.\,e. |"|). \\ % \end{tabular} % \caption{Alternative commands for quotation marks (provided by \babel)}\label{tab:more-quote} % \end{center} % \end{table} % % \StopEventually{} % % % \section{Implementation} % % \subsection{General settings} % % If \file{ngermanb.ldf} is read via the \babel\ option \Lopt{ngermanb}, % we make it behave as if \Lopt{ngerman} was specified. % \iffalse %<*germanb> % \fi % \begin{macrocode} \def\bbl@tempa{ngermanb} \ifx\CurrentOption\bbl@tempa \def\CurrentOption{ngerman} \fi % \end{macrocode} % % The macro |\LdfInit| takes care of preventing that this file is % loaded more than once, checking the category code of the % \texttt{@} sign, etc. % \begin{macrocode} \LdfInit\CurrentOption{captions\CurrentOption} % \end{macrocode} % % If \file{ngermanb.ldf} is read as an option, i.e., by the |\usepackage| % command, \texttt{ngerman} will be an `unknown' language, so we % have to make it known. We check for the existence of % |\l@ngerman| to see whether we have to do something here. % % \begin{macrocode} \ifx\l@ngerman\@undefined \@nopatterns{ngerman} \adddialect\l@ngerman0 \fi % \end{macrocode} % % We set \texttt{naustrian} and \texttt{nswissgerman} as dialects % of \texttt{ngerman}, since they use the same hyphenation patterns % than \texttt{ngerman}. % \begin{macrocode} \adddialect\l@naustrian\l@ngerman \adddialect\l@nswissgerman\l@ngerman % \end{macrocode} % % \subsection{Language-specific strings (captions)} % % The next step consists of defining macros that provide language specific strings % and settings. % % \begin{macro}{\captionsngerman} % \changes{ngermanb-2.6n}{2008/07/06}{Corrected typo % \cs{captionnsgerman}} % The macro |\captionsngerman| defines all strings used in the four % standard document classes provided with \LaTeX\ for German. % % \changes{ngermanb-2.7}{2013/12/13}{Split \cs{captionsngerman} from % \cs{captionsnaustrian} and % \cs{captionsnswissgerman}.} % \changes{ngermanb-2.7}{2013/12/13}{Changed \cs{enclname} in % \texttt{naustrian} to % \emph{Beilage(n)}.} % \changes{ngermanb-2.6k}{2000/09/20}{Added \cs{glossaryname}} % \begin{macrocode} \@namedef{captionsngerman}{% \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)}% \def\ccname{Verteiler}% % oder: Kopien an \def\headtoname{An}% \def\pagename{Seite}% \def\seename{siehe}% \def\alsoname{siehe auch}% \def\proofname{Beweis}% \def\glossaryname{Glossar}% } % \end{macrocode} % \end{macro} % \begin{macro}{\captionsnaustrian} % The macro |\captionsnaustrian| builds on |\captionsngerman|, but % redefines some strings following Austrian conventions (for the % respective variants, cf. \cite{vwb}). % \begin{macrocode} \@namedef{captionsnaustrian}{% \@nameuse{captionsngerman} \def\enclname{Beilage(n)}% } % \end{macrocode} % \end{macro} % \begin{macro}{\captionsnswissgerman} % The macro |\captionsnswissgerman| builds on |\captionsngerman|, but % redefines some strings following Swiss conventions (for the % respective variants, cf. \cite{vwb}). % \begin{macrocode} \@namedef{captionsnswissgerman}{% \@nameuse{captionsngerman} \def\enclname{Beilage(n)}% } % \end{macrocode} % \end{macro} % % \subsection{Date localizations} % % \begin{macro}{\datengerman} % The macro |\datengerman| redefines the command % |\today| to produce German dates. % \begin{macrocode} \def\month@ngerman{\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\datengerman{\def\today{\number\day.~\month@ngerman \space\number\year}} % \end{macrocode} % \end{macro} % % \begin{macro}{\datenswissgerman} % \changes{ngermanb-2.7}{2013/12/13}{Added \cs{datenswissgerman}.} % The macro |\datenswissgerman| does the same for Swiss German dates. % The result is identical to German. % \begin{macrocode} \def\datenswissgerman{\def\today{\number\day.~\month@ngerman \space\number\year}} % \end{macrocode} % \end{macro} % % \begin{macro}{\datenaustrian} % The macro |\datenaustrian| redefines the command % |\today| to produce Austrian versions of the German dates. % Here, the naming of January (,,J\"anner``) differs from the % other German varieties. % \begin{macrocode} \def\datenaustrian{\def\today{\number\day.~\ifnum1=\month J\"anner\else \month@ngerman\fi \space\number\year}} % \end{macrocode} % \end{macro} % % \subsection{Extras} % % \begin{macro}{\extrasngerman} % \begin{macro}{\extrasnaustrian} % \begin{macro}{\extrasnswissgerman} % \begin{macro}{\noextrasngerman} % \begin{macro}{\noextrasnaustrian} % \begin{macro}{\noextrasnswissgerman} % The macros |\extrasngerman|, |\extrasnaustrian| % and |\extrasnswissgerman|, respectively, will perform all the extra % definitions needed for the German language or the respective % variety. The macro |\noextrasngerman| is used to cancel the % actions of |\extrasngerman|. |\noextrasnaustrian| and % |\noextrasnswissgerman| behave analoguously. % \changes{ngermanb-2.7}{2013/12/13}{Added \cs{extrasnswissgerman} % and \cs{noextrasnswissgerman}.} % % For all German varieties, the character \texttt{"} is % made active. This is done once, later on its definition may vary. % \begin{macrocode} \initiate@active@char{"} \@namedef{extras\CurrentOption}{% \languageshorthands{ngerman}} \expandafter\addto\csname extras\CurrentOption\endcsname{% \bbl@activate{"}} % \end{macrocode} % Turn the shorthands off again outside of German. % \changes{ngermanb-2.6j}{1999/12/16}{Deactivate shorthands ouside of % German} % \changes{ngermanb-2.7}{2013/12/13}{Deactivate shorthands also outside of % \texttt{naustrian} and \texttt{nswissgerman}.} % \begin{macrocode} \expandafter\addto\csname noextras\CurrentOption\endcsname{% \bbl@deactivate{"}} % \end{macrocode} % % % In order for \TeX\ to be able to hyphenate German words which % contain `\ss' (in the \texttt{OT1} position |^^Y|) we have to % give the character a nonzero |\lccode| (see Appendix H, the \TeX % book). % \begin{macrocode} \expandafter\addto\csname extras\CurrentOption\endcsname{% \babel@savevariable{\lccode25}% \lccode25=25} % \end{macrocode} % % The umlaut accent macro |\"| is changed to lower the umlaut dots. % The redefinition is done with the help of |\umlautlow|. % \begin{macrocode} \expandafter\addto\csname extras\CurrentOption\endcsname{% \babel@save\"\umlautlow} % \end{macrocode} % \changes{ngermanb-2.7}{2013/12/13}{Do not use \cs{@namedef} when % \cs{noextras} is already defined and should not be overwritten.} % \begin{macrocode} \expandafter\addto\csname noextras\CurrentOption\endcsname{% \umlauthigh} % \end{macrocode} % The current % version of the `new' German hyphenation patterns (\file{dehyphn.tex}) % is to be used with |\lefthyphenmin| and |\righthyphenmin| set to~2. % \changes{ngermanb-2.6k}{2000/09/22}{Now use \cs{providehyphenmins} to % provide a default value} % \begin{macrocode} \providehyphenmins{\CurrentOption}{\tw@\tw@} % \end{macrocode} % For German texts we need to assure that |\frenchspacing| is % turned on. % \changes{ngermanb-2.6m}{2001/01/26}{Turn frenchspacing on, as in % \texttt{german.sty}} % \begin{macrocode} \expandafter\addto\csname extras\CurrentOption\endcsname{% \bbl@frenchspacing} \expandafter\addto\csname noextras\CurrentOption\endcsname{% \bbl@nonfrenchspacing} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \subsection{Active characters, macros \& shorthands} % % The following code is necessary because we need an extra active % character. This character is then used as indicated in % table~\ref{tab:german-quote}. % % In order to be able to define the function of |"|, we first define a % couple of `support' macros. % % % \begin{macro}{\dq} % We save the original double quotation mark character in |\dq| to keep % it available, the math accent |\"| can now be typed as |"|. % \begin{macrocode} \begingroup \catcode`\"12 \def\x{\endgroup \def\@SS{\mathchar"7019 } \def\dq{"}} \x % \end{macrocode} % \end{macro} % % Now we can define the doublequote shorthands: the umlauts, % \begin{macrocode} \declare@shorthand{ngerman}{"a}{\textormath{\"{a}\allowhyphens}{\ddot a}} \declare@shorthand{ngerman}{"o}{\textormath{\"{o}\allowhyphens}{\ddot o}} \declare@shorthand{ngerman}{"u}{\textormath{\"{u}\allowhyphens}{\ddot u}} \declare@shorthand{ngerman}{"A}{\textormath{\"{A}\allowhyphens}{\ddot A}} \declare@shorthand{ngerman}{"O}{\textormath{\"{O}\allowhyphens}{\ddot O}} \declare@shorthand{ngerman}{"U}{\textormath{\"{U}\allowhyphens}{\ddot U}} % \end{macrocode} % tremata, % \begin{macrocode} \declare@shorthand{ngerman}{"e}{\textormath{\"{e}}{\ddot e}} \declare@shorthand{ngerman}{"E}{\textormath{\"{E}}{\ddot E}} \declare@shorthand{ngerman}{"i}{\textormath{\"{\i}}% {\ddot\imath}} \declare@shorthand{ngerman}{"I}{\textormath{\"{I}}{\ddot I}} % \end{macrocode} % German \ss{}, % \begin{macrocode} \declare@shorthand{ngerman}{"s}{\textormath{\ss}{\@SS{}}} \declare@shorthand{ngerman}{"S}{\SS} \declare@shorthand{ngerman}{"z}{\textormath{\ss}{\@SS{}}} \declare@shorthand{ngerman}{"Z}{SZ} % \end{macrocode} % German and French/Swiss quotation marks, % \begin{macrocode} \declare@shorthand{ngerman}{"`}{\glqq} \declare@shorthand{ngerman}{"'}{\grqq} \declare@shorthand{ngerman}{"<}{\flqq} \declare@shorthand{ngerman}{">}{\frqq} % \end{macrocode} % and some additional commands (hyphenation and ligature control): % \begin{macrocode} \declare@shorthand{ngerman}{"-}{\nobreak\-\bbl@allowhyphens} \declare@shorthand{ngerman}{"|}{% \textormath{\penalty\@M\discretionary{-}{}{\kern.03em}% \allowhyphens}{}} \declare@shorthand{ngerman}{""}{\hskip\z@skip} \declare@shorthand{ngerman}{"~}{\textormath{\leavevmode\hbox{-}}{-}} \declare@shorthand{ngerman}{"=}{\penalty\@M-\hskip\z@skip} % \end{macrocode} % % \begin{macro}{\mdqon} % \begin{macro}{\mdqoff} % All that's left to do now is to define a couple of commands % for reasons of compatibility with \file{german.sty}. % \begin{macrocode} \def\mdqon{\shorthandon{"}} \def\mdqoff{\shorthandoff{"}} % \end{macrocode} % \end{macro} % \end{macro} % % The macro |\ldf@finish| takes care of looking for a % configuration file, setting the main language to be switched on % at |\begin{document}| and resetting the category code of % \texttt{@} to its original value. % \begin{macrocode} \ldf@finish\CurrentOption % \end{macrocode} % \iffalse % % \fi % % \subsection{\file{naustrian.ldf}, \file{ngerman.ldf} and \file{nswissgerman.ldf}} % % \changes{ngermanb-2.7}{2013/12/13}{Generate portmanteau files \file{naustrian.ldf}, % \file{ngerman.ldf} and \file{nswissgerman.ldf}.} % % \Babel\ expects a \file{\langvar{}.ldf} file for each \langvar. So we create portmanteau % ldf files for \texttt{naustrian}, \texttt{ngerman} and \texttt{nswissgerman}.\footnote{% % For some \texttt{naustrian} and \texttt{ngerman}, this is not strictly necessary, % since \babel\ provides aliases for these languages (pointing to \texttt{ngermanb}). % However, since \babel\ does not officially support these aliases anymore after % the language definition files have been separated from the core, we provide % the whole range of ldf files for the sake of completeness.} These files themselves % only load \file{ngermanb.ldf}, which does the real work: % % \iffalse %<*austrian|german|swiss> % \fi % \begin{macrocode} \input ngermanb.ldf\relax % \end{macrocode} % \iffalse % % \fi % %\PrintChanges % % \begin{thebibliography}{9} % \bibitem{vwb} Ammon, Ulrich et al.: % \emph{Variantenw\"orterbuch des Deutschen. Die Standardsprache in \"Osterreich, der Schweiz % und Deutschland sowie in Liechtenstein, Luxemburg, Ostbelgien und S\"udtirol.} % Berlin, New York: De Gruyter. % \bibitem{babel} Braams, Johannes and Bezos, Javier: % \emph{Babel}. % \url{http://mirrors.ctan.org/macros/latex/required/babel/base/babel.pdf}. % \bibitem{HP} Partl, Hubert: % \emph{German \TeX}, \emph{TUGboat} 9 (1988) \#1, p.~70--72. % \bibitem{gerdoc} Raichle, Bernd: % \emph{Kurzbeschreibung german.sty und ngerman.sty (Version 2.5)}. % \url{http://mirrors.ctan.org/language/german/gerdoc.pdf}. % \end{thebibliography} % % \Finale %% %% \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 \~} %% \endinput