diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/babel-contrib/german/ngermanb.dtx |
Initial commit
Diffstat (limited to 'macros/latex/contrib/babel-contrib/german/ngermanb.dtx')
-rw-r--r-- | macros/latex/contrib/babel-contrib/german/ngermanb.dtx | 815 |
1 files changed, 815 insertions, 0 deletions
diff --git a/macros/latex/contrib/babel-contrib/german/ngermanb.dtx b/macros/latex/contrib/babel-contrib/german/ngermanb.dtx new file mode 100644 index 0000000000..01413286b9 --- /dev/null +++ b/macros/latex/contrib/babel-contrib/german/ngermanb.dtx @@ -0,0 +1,815 @@ +% \iffalse meta-comment +% +% File `ngermanb.dtx' +% +% Copyright 1989--2016 +% 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{403} +% +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{ngermanb.dtx} +%</dtx> +%<naustrian>\ProvidesLanguage{naustrian} +%<ngerman>\ProvidesLanguage{ngerman} +%<nswissgerman>\ProvidesLanguage{nswissgerman} +%<ngermanb>\ProvidesLanguage{ngermanb} +%\fi +%\ProvidesFile{ngermanb.dtx} + [2018/12/08 v2.11 German support for babel (post-1996 orthography)] +%\iffalse +% +%<*filedriver> +\documentclass{ltxdoc} +\usepackage[T1]{fontenc} +\usepackage[osf]{libertine} +\usepackage[scaled=0.76]{beramono} +\usepackage{url} +\usepackage{array} +\usepackage{booktabs} +\usepackage[tableposition=top,skip=5pt]{caption} +\usepackage{marginnote} +\usepackage[svgnames]{xcolor} +\usepackage[pdfusetitle]{hyperref} +\hypersetup{% + colorlinks, + linkcolor=black, + filecolor=Maroon, + urlcolor=Maroon, + citecolor=black +} +\newcommand*\babel{\textsf{babel}} +\newcommand*\Babel{\textsf{Babel}} +\newcommand*\langvar{$\langle \it lang \rangle$} +\newcommand*\graph[1]{$\langle$#1$\rangle$} +\newcommand*\note[1]{} +\newcommand*\Lopt[1]{\texttt{#1}} +\newcommand*\file[1]{\texttt{#1}} +\newcommand*\newfeature[1]{\marginnote{\footnotesize New feature\\in v.\,#1!}} +\GlossaryMin = .33\textheight + +\begin{document} + \DocInput{ngermanb.dtx} +\end{document} +%</filedriver> +%\fi +% \GetFileInfo{ngermanb.dtx} +% +%\RecordChanges +% +% \changes{Version 2.9a=Version 2.10}{2016/11/07}{Improvements to the manual} +% +% \changes{Version 2.7}{2013/12/13}{Added support for variety \Lopt{nswissgerman}.} +% \changes{Version 2.7}{2013/12/13}{Revised \Lopt{naustrian} support.} +% \changes{Version 2.7}{2013/12/13}{Revised documentation: Turn the \babel{} +% manual chapter into a self-enclosed manual.} +% +% \changes{Version 2.6f}{1999/03/24}{Renamed from \file{germanb.ldf}; +% language names changed from \Lopt{german} and \Lopt{austrian} +% to \Lopt{ngerman} and \Lopt{naustrian}.} +% +% \title{Babel support for the German language (post-1996~orthography)} +% \author{Johannes Braams \and Bernd Raichle \and Walter Schmidt \and J\"urgen Spitzm\"uller\thanks{% +% Current maintainer. Please report issues via \protect\url{https://github.com/jspitz/babel-german}.}} +% \date{\fileversion\ (\filedate)} +% \maketitle +% +% \begin{abstract} +% \noindent This manual documents \babel\ language support for German (post-1996 orthography), +% including support for the Austrian and Swiss varieties of German. +% The manual is part of the \textsf{babel-german} bundle. +% \end{abstract} +% +% \section{Aim and usage} +% +% The \babel\ `language definition file' \file{ngermanb.ldf} documented in this manual provides +% the \babel\ package with all language specific strings, settings and commands needed for writing +% German texts, including texts in the Austrian and Swiss varieties of German.\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 initial re-implementation was done by Johannes Braams.} +% Furthermore, it is assured that the correct hyphenation patterns for the respective +% language or variety are used (see sec.~\ref{sec:patterns} for details). +% The file, and hence this manual, addresses the contemporary (`reformed', i.\,e., post-1996) orthography. +% For traditional (pre-1996) German orthography support, please refer to the complementary +% \href{file:germanb.pdf}{manual for the \file{germanb.ldf} language definition file}. +% +% In order to use the language definitions provided here, you need to use +% the \babel\ package and pass the respective language\slash variety name\footnote{% +% Obviously, the prefix \graph{n} in the language\slash variety +% names stands for `new' (orthography) here, since the names \Lopt{austrian}, \Lopt{german} +% and \Lopt{swissgerman} were already used for pre-1996 orthography.} +% as an option, either of +% +% \begin{itemize} +% \setlength{\itemsep}{0pt} +% \item |\usepackage[ngerman]{babel}| +% \item |\usepackage[naustrian]{babel}| +% \item |\usepackage[nswissgerman]{babel}| +% \item |\usepackage[nswissgerman.toss]{babel}|\newfeature{2.10}\footnote{% +% See sec.~\ref{sec:toss} on the \Lopt{toss} modifier.} +% \end{itemize} +% Using multiple varieties in parallel is possible; +% 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 for frequently used special +% characters as well as for better control of hyphenation, line breaks +% and ligatures. +% Table~\ref{tab:german-quote} provides an overview of the shorthands +% that are provided by \textsf{babel-german} for \Lopt{ngerman}, \Lopt{naustrian} +% and \Lopt{nswissgerman}. +% \begin{table}[htb] +% \begin{center} +% \small +% \caption{The extra definitions made +% by \file{ngermanb.ldf}}\label{tab:german-quote} +% \begin{tabular}{l>{\raggedright}p{.9\textwidth}} +% \toprule +% |"a| & Umlaut \graph{\"a} (shorthand for |\"a|). Similar shorthands are +% available for all other lower- and uppercase +% vowels (umlauts: |"a|, |"o|, |"u|, |"A|, |"O|, +% |"U|; tremata: |"e|, |"i|, |"E|, |"I|). \tabularnewline +% |"s| & German \graph{\ss} (shorthand for |\ss{}|); +% but cf. sec.~\ref{sec:toss}. \tabularnewline +% |"z| & German \graph{\ss} (shorthand for |\ss{}|). +% Differs to |"s| in uppercase version; +% but cf. sec.~\ref{sec:toss}. \tabularnewline +% |"S| & |\uppercase{"s}|, typeset as \graph{SS}(\graph{\ss} +% must be written as \graph{SS} in uppercase writing). \tabularnewline +% |"Z| & |\uppercase{"z}|, typeset as \graph{SZ}. In traditional +% spelling, \graph{\ss} could also be written as \graph{SZ} +% instead of \graph{SS} in uppercase writing. Note that, +% with reformed orthography, the \graph{SZ} variant has +% been deprecated in favour of \graph{SS} only. \tabularnewline +% \verb="|= & Disable ligature at this position (e.\,g., at morpheme +% boundaries, as in \verb=Auf"|lage=). \tabularnewline +% |"-| & An additional breakpoint that does still +% allow for hyphenation at the breakpoints preset in +% the hyphenation patterns (as opposed to |\-|). \tabularnewline +% |"=| & An explicit hyphen with a breakpoint, allowing +% for hyphenation at the other points preset in the +% hyphenation patterns (as opposed to plain |-|); +% useful for long compounds such as +% |IT"=Dienstleisterinnen|. \tabularnewline +% |"~| & An explicit hyphen without a breakpoint. Useful for +% cases where the hyphen should stick at the following +% syllable, e.\,g., |bergauf und "~ab| . \tabularnewline +% |""| & A breakpoint that does not output a hyphen if the line +% break is performed (consider parenthetical extensions +% as in |(pseudo"~)""wissenschaftlich|). \tabularnewline +% |"/| & \newfeature{2.9}A slash that allows for a linebreak. +% As opposed to |\slash{}|, hyphenation at the breakpoints +% preset in the hyphenation patterns is still allowed. \tabularnewline +% |"`| & German left double quotes \graph{,,}. \tabularnewline +% |"'| & German right double quotes \graph{``}. \tabularnewline +% |"<| & French/Swiss left double quotes \graph{<<}. \tabularnewline +% |">| & French/Swiss right double quotes \graph{>>}. \tabularnewline +% \bottomrule +% \end{tabular} +% \end{center} +% \end{table} +% +% \enlargethispage{\baselineskip} +% \noindent Table~\ref{tab:more-quote} lists some \babel\ macros for quotation marks +% that might be used as an alternative to the quotation mark shorthands listed above. +% \begin{table}[!h] +% \begin{center} +% \small +% \caption{Alternative commands for quotation marks (provided by \babel)}\label{tab:more-quote} +% \begin{tabular}{lp{.88\textwidth}} +% \toprule +% |\glqq| & German left double quotes \graph{,,}. \tabularnewline +% |\grqq| & German right double quotes \graph{``}. \tabularnewline +% |\glq| & German left single quotes \graph{,}. \tabularnewline +% |\grq| & German right single quotes \graph{`}. \tabularnewline +% |\flqq| & French/Swiss left double quotes \graph{<<}. \tabularnewline +% |\frqq| & French/Swiss right double quotes \graph{>>}. \tabularnewline +% |\flq| & French/Swiss left single quotes \graph{\guilsinglleft}. \tabularnewline +% |\frq| & French/Swiss right single quotes \graph{\guilsinglright}. \tabularnewline +% |\dq| & The straight quotation mark character \graph{\textquotedbl}. \tabularnewline +% \bottomrule +% \end{tabular} +% \end{center} +% \end{table} +% +% \section{Hyphenation patterns}\label{sec:patterns} +% +% The question which hyphenation patterns are used by \Babel\ in case of the varieties of German needs some elaboration. +% There is a set of established hyphenation patterns for pre- and post-1996 German orthography that has been available +% with \TeX\ distributions for a long time (currently, these are shipped in form of the \texttt{dehypht} and \texttt{dehyphn} files). +% These patterns, though, have many flaws (they produce wrong hyphenations, and not much is known about their construction). Therefore, +% a group of people developed completely new patterns that do much better, the so-called `experimental' new hyphenation patterns of German, +% distributed in the \textsf{dehyph-exptl} package \cite{exptl}. +% As opposed to the old patterns, the new ones undergo constant improvement. The price for this, however, is that hyphenation and thus +% the typeset document is subject to change with, and only due to, pattern updates. +% +% Modern engines (i.\,e., \texttt{xetex} and \texttt{luatex}) have already embraced those new patterns, i.\,e., they are activated on these +% engines by default. The classic \TeX\ engines (\texttt{tex}\slash\texttt{pdftex}), however, haven't: they continue to use the old patterns. +% The reason for this is one of \TeX's quality standards: refrain, if ever possible, from changing the output of user's documents in the wake +% of software updates. +% +% This means that you need to explicitly activate the new patterns for a given document with the classic engines, should you want to use them +% instead of the old ones. With \Babel, this can be done quite easily by means of the \textsf{hyphsubst} \cite{hyphsubst} package: +% \begin{verbatim} +% \usepackage[ngerman=ngerman-x-latest]{hyphsubst} +% \usepackage[ngerman]{babel} +% \end{verbatim}\vspace{-\baselineskip} +% Since \Lopt{naustrian} and \Lopt{nswissgerman} use the same patterns as \Lopt{ngerman}, the given \textsf{hyphsubst} option activates +% the new patterns for all varieties; but note that \textsf{hyphsubst} must be loaded before \babel\ (please refer to \cite{exptl} and +% \cite{hyphsubst} for details). +% +% If you only want to use experimental patterns for one variety, you can do like so: +% \begin{verbatim} +% \usepackage{hyphsubst} +% \usepackage[ngerman,naustrian]{babel} +% \HyphSubstLet{naustrian}{ngerman-x-latest} +% \end{verbatim}\vspace{-\baselineskip} +% +% \section{Variety-specific options}\label{sec:toss} +% +% In\newfeature{2.10} Swiss (and Liechtensteinian) German writing, the use of \graph{\ss} is rather uncommon. +% Swiss writers would normally use \graph{ss} where German or Austrian writers use the \graph{\ss} character +% (e.\,g., \emph{Bu\ss e} vs.\,\emph{Busse}). When texts (or names) from other German speaking areas are quoted, +% however, the spelling and hence the \graph{\ss} is often maintained (particularly in scholarly writing where +% the spelling of quoted text is not supposed to be touched). +% +% We assume that (1) Swiss writers normally input \graph{ss} directly when they mean \graph{ss}, and that (2) the +% \graph{\ss}-related shorthands |"s| and |"z| are useful also for Swiss writers when they actually need \graph{\ss}, +% the more so since the \graph{\ss} is not as directly accessible on Swiss keyboards as it is on German and Austrian ones. +% On the other hand, there might be occasions where writers want to transfer a text from German or Austrian into Swiss +% Standard German and adapt the spelling on the fly, i.\,e., transform all \graph{\ss} into \graph{ss}. +% +% For this special case, we provide an option to make the \graph{\ss}-related shorthands |"s| and |"z| expand to the +% respective digraphs\footnote{In graphematics, the term \emph{digraph} denotes two characters that make a functional pair +% (which means, depending on the theoretical assumptions: they represent a single sound or they are semantically distinctive).}, +% \graph{ss} and \graph{sz}, rather than to \graph{\ss}. This is not the default behavior with +% \Lopt{nswissgerman} since, as mentioned, there are situations when the \graph{\ss} is (and has to be) used in Swiss writing, +% and normally, no shorthand is needed to input (or output) two simple \graph{s} characters. You can opt-in (and out) digraphical +% expansion of |"s| and |"z| on a global and local level: +% \begin{itemize} +% \item To globally switch on the digraphical expansion, use the \Babel\ modifier \Lopt{toss} (read: `to \graph{ss}') with +% \Lopt{nswissgerman}. I.\,e., pass \Lopt{nswissgerman.toss} (rather than \Lopt{nswissgerman}) as \babel\ option. +% +% \item To switch on the digraphical expansion only locally, you can use the boolean switch |\ntosstrue|. Likewise, +% |\ntossfalse| switches off (both locally and globally set) digraphical expansion. +% \end{itemize} +% Both these changes result in the following deviant behavior of two shorthands:\\ +% \begin{tabular}{l>{\raggedright}p{.9\textwidth}} +% |"s| & Expands to digraph \graph{ss} \tabularnewline +% |"z| & Expands to digraph \graph{sz} \tabularnewline +% \end{tabular} +% +% +% \StopEventually{} +% +% +% \section{Implementation} +% +% \subsection{General settings} +% +% First, we define some helper macros that help us to identify later on +% which variety of German we are currently dealing with. +% \changes{Version 2.9a=Version 2.10}{2016/11/03}{Add helper macros to identify the current option.} +% \iffalse +%<*ngermanb> +% \fi +% \begin{macrocode} +\def\bbl@opt@ngerman{ngerman} +\def\bbl@opt@ngermanb{ngermanb} +\def\bbl@opt@naustrian{naustrian} +\def\bbl@opt@nswissgerman{nswissgerman} +% \end{macrocode} +% +% If \file{ngermanb.ldf} is read via the deprecated \babel\ option +% \Lopt{ngermanb}, we make it behave as if \Lopt{ngerman} was specified. +% \begin{macrocode} +\ifx\CurrentOption\bbl@opt@ngermanb + \def\CurrentOption{ngerman} +\fi +% \end{macrocode} +% +% The macro |\LdfInit| takes care of preventing that this file is +% loaded more than once with the same option, 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, \Lopt{ngerman} could be an `unknown' language, so we +% have to make it known. We check for the existence of +% |\l@ngerman| and issue a warning if it is unknown. +% +% \begin{macrocode} +\ifx\l@ngerman\@undefined + \@nopatterns{German (new orthography)} + \adddialect\l@ngerman0 +\fi +% \end{macrocode} +% +% We set \Lopt{naustrian} and \Lopt{nswissgerman} as dialects +% of \Lopt{ngerman}, since they use the same hyphenation patterns +% than \Lopt{ngerman}. If no \Lopt{ngerman} patterns are found, +% we issue a warning. +% \changes{Version 2.8}{2016/11/01}{Only add dialects if the respective +% variety is loaded} +% \changes{Version 2.9}{2016/11/02}{Do not attempt to load \cs{l@naustrian} +% or \cs{l@nswissgerman}, which do not exist} +% \begin{macrocode} +\ifx\CurrentOption\bbl@opt@naustrian + \ifx\l@ngerman\@undefined + \@nopatterns{German (new orthography), needed by Austrian (new orthography)} + \adddialect\l@naustrian0 + \else + \adddialect\l@naustrian\l@ngerman + \fi +\fi +\ifx\CurrentOption\bbl@opt@nswissgerman + \ifx\l@ngerman\@undefined + \@nopatterns{German (new orthography), needed by Swiss German (new orthography)} + \adddialect\l@nswissgerman0 + \else + \adddialect\l@nswissgerman\l@ngerman + \fi +\fi +% \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{Version 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. +% This is an internal macro that is inherited and modified by the following +% macros for the respective language varieties. +% +% \changes{Version 2.7}{2013/12/13}{Split \cs{captionsngerman} from +% \cs{captionsnaustrian} and +% \cs{captionsnswissgerman}.} +% \changes{Version 2.7}{2013/12/13}{Changed \cs{enclname} in +% \Lopt{naustrian} to +% \emph{Beilage(n)}.} +% \changes{Version 2.6k}{2000/09/20}{Added \cs{glossaryname}} +% \changes{Version 2.8}{2016/11/01}{Define trans-variational base captions +% which are loaded and modified by the varieties} +% \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}% + \def\listfigurename{Abbildungsverzeichnis}% + \def\listtablename{Tabellenverzeichnis}% + \def\indexname{Index}% + \def\figurename{Abbildung}% + \def\tablename{Tabelle}% + \def\partname{Teil}% + \def\enclname{Anlage(n)}% + \def\ccname{Verteiler}% + \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}{\captionsngerman} +% The macro |\captionsngerman| is identical to |\@captionsngerman|, +% but only defined if \Lopt{ngerman} is requested. +% \changes{Version 2.8}{2016/11/01}{Only define \cs{captionsngerman} if +% \Lopt{ngerman} is requested.} +% \begin{macrocode} +\ifx\CurrentOption\bbl@opt@ngerman + \@namedef{captionsngerman}{% + \@nameuse{@captionsngerman}% + } +\fi +% \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}). It is only defined if +% \Lopt{naustrian} is requested. +% \changes{Version 2.8}{2016/11/01}{Only define \cs{captionsnaustrian} if +% \Lopt{naustrian} is requested.} +% \begin{macrocode} +\ifx\CurrentOption\bbl@opt@naustrian + \@namedef{captionsnaustrian}{% + \@nameuse{@captionsngerman}% + \def\enclname{Beilage(n)}% + } +\fi +% \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}). It is only defined if +% \Lopt{nswissgerman} is requested. +% \changes{Version 2.8}{2016/11/01}{Only define \cs{captionsnswissgerman} if +% \Lopt{nswissgerman} is requested.} +% \begin{macrocode} +\ifx\CurrentOption\bbl@opt@nswissgerman + \@namedef{captionsnswissgerman}{% + \@nameuse{@captionsngerman}% + \def\enclname{Beilage(n)}% + } +\fi +% \end{macrocode} +% \end{macro} +% +% \subsection{Date localizations} +% +% \begin{macro}{\month@ngerman} +% The macro |\month@ngerman| defines German month names for all varieties. +% \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} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\datengerman} +% The macro |\datengerman| redefines the command +% |\today| to produce German dates. It is only defined if +% \Lopt{ngerman} is requested. +% \changes{Version 2.8}{2016/11/01}{Only define \cs{datengerman} if +% \Lopt{ngerman} is requested.} +% \begin{macrocode} +\ifx\CurrentOption\bbl@opt@ngerman + \def\datengerman{\def\today{\number\day.~\month@ngerman + \space\number\year}} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\datenswissgerman} +% \changes{Version 2.7}{2013/12/13}{Added \cs{datenswissgerman}.} +% The macro |\datenswissgerman| does the same for Swiss German dates. +% The result is identical to German. This macro is only defined if +% \Lopt{nswissgerman} is requested. +% \changes{Version 2.8}{2016/11/01}{Only define \cs{datenswissgerman} if +% \Lopt{nswissgerman} is requested.} +% \begin{macrocode} +\ifx\CurrentOption\bbl@opt@nswissgerman + \def\datenswissgerman{\def\today{\number\day.~\month@ngerman + \space\number\year}} +\fi +% \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. The macro is only defined if +% \Lopt{naustrian} is requested. +% \changes{Version 2.8}{2016/11/01}{Only define \cs{datenaustrian} if +% \Lopt{naustrian} is requested.} +% \begin{macrocode} +\ifx\CurrentOption\bbl@opt@naustrian + \def\datenaustrian{\def\today{\number\day.~\ifnum1=\month + J\"anner\else \month@ngerman\fi \space\number\year}} +\fi +% \end{macrocode} +% \end{macro} +% +% \subsection{Extras} +% +% \begin{macro}{\extrasnaustrian} +% \begin{macro}{\extrasnswissgerman} +% \changes{Version 2.7}{2013/12/13}{Added \cs{extrasnswissgerman}.} +% \begin{macro}{\extrasngerman} +% \begin{macro}{\noextrasnaustrian} +% \begin{macro}{\noextrasnswissgerman} +% \changes{Version 2.7}{2013/12/13}{Added \cs{noextrasnswissgerman}.} +% \begin{macro}{\noextrasngerman} +% 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. +% +% First, the character \texttt{"} is declared active for all German +% varieties. This is done once, later on its definition may vary. +% \begin{macrocode} +\initiate@active@char{"} +% \end{macrocode} +% +% Depending on the option with which the language definition file +% has been loaded, the macro |\extrasngerman|, |\extrasnaustrian| +% or |\extrasnswissgerman| is defined. Each of those is identical: +% they load the shorthands defined below and activate the \texttt{"} +% character. +% \begin{macrocode} +\@namedef{extras\CurrentOption}{% + \languageshorthands{ngerman}% +} +\expandafter\addto\csname extras\CurrentOption\endcsname{% + \bbl@activate{"}} +% \end{macrocode} +% +% \changes{Version 2.9a=Version 2.10}{2018/03/28}{Implement boolean switch +% \cs{ntosstrue}\slash\cs{ntossfalse} to customize \graph{\ss}-related +% shorthands in Swiss German context.} +% \changes{Version 2.9a=Version 2.10}{2018/03/28}{Implement modifier \Lopt{toss} +% to customize \graph{\ss}-related shorthands in Swiss German context.} +% \begin{macro}{toss} +% \begin{macro}{\ntosstrue} +% \begin{macro}{\ntossfalse} +% For Swiss German, we allow optionally to expand the \graph{\ss}-related +% shorthands the Swiss way, i.\,e. as \graph{ss} (globally, if the modifier \Lopt{toss} +% is used or locally if |\ntosstrue|.). +% \begin{macrocode} +\newif\ifntoss\ntossfalse +\newif\ifbbl@ntoss\bbl@ntossfalse +\ifx\bbl@mod@nswissgerman\@undefined\else + \@expandtwoargs\in@{,toss,}{,\bbl@mod@nswissgerman,} + \ifin@ + \ntosstrue + \fi + \addto\extrasnswissgerman{% + \ifntoss\bbl@ntosstrue\else\bbl@ntossfalse\fi} +\fi +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% Next, again depending on the option with which the language definition +% file has been loaded, the macro |\noextrasngerman|, |\noextrasnaustrian| +% or |\noextrasnswissgerman| is defined. +% These deactivate the \texttt{"} character and thus turn the shorthands +% off again outside of the respective variety. +% \changes{Version 2.6j}{1999/12/16}{Deactivate shorthands outside of +% German} +% \changes{Version 2.7}{2013/12/13}{Deactivate shorthands also outside of +% \Lopt{naustrian} and \Lopt{nswissgerman}.} +% \begin{macrocode} +\expandafter\addto\csname noextras\CurrentOption\endcsname{% + \bbl@deactivate{"}} +\ifx\CurrentOption\bbl@opt@nswissgerman + \addto\noextrasnswissgerman{\bbl@ntossfalse} +\fi +% \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{Version 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{Version 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{Version 2.6m}{2001/01/26}{Turn frenchspacing on, as in +% \file{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 |"|. +% +% Furthermore, we define some helper macros for contextual \graph{\ss} handling. +% \begin{macrocode} +\begingroup \catcode`\"12 +\def\x{\endgroup + \def\dq{"} + \def\@SS{\mathchar"7019 } + \def\bbl@ss{\ifbbl@ntoss ss\else\textormath{\ss}{\@SS{}}\fi} + \def\bbl@SS{SS} + \def\bbl@sz{\ifbbl@ntoss sz\else\textormath{\ss}{\@SS{}}\fi} + \def\bbl@SZ{SZ} +} +\x +% \end{macrocode} +% \end{macro} +% +% Now we can define the doublequote shorthands: the umlauts, +% \begin{macrocode} +\declare@shorthand{ngerman}{"a}{\textormath{\"{a}\bbl@allowhyphens}{\ddot a}} +\declare@shorthand{ngerman}{"o}{\textormath{\"{o}\bbl@allowhyphens}{\ddot o}} +\declare@shorthand{ngerman}{"u}{\textormath{\"{u}\bbl@allowhyphens}{\ddot u}} +\declare@shorthand{ngerman}{"A}{\textormath{\"{A}\bbl@allowhyphens}{\ddot A}} +\declare@shorthand{ngerman}{"O}{\textormath{\"{O}\bbl@allowhyphens}{\ddot O}} +\declare@shorthand{ngerman}{"U}{\textormath{\"{U}\bbl@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}{\bbl@ss} +\declare@shorthand{ngerman}{"S}{\bbl@SS} +\declare@shorthand{ngerman}{"z}{\bbl@sz} +\declare@shorthand{ngerman}{"Z}{\bbl@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, line breaking and ligature control): +% \changes{Version 2.9}{2016/11/02}{Add \texttt{"/} shortcut for breakable slash +% (taken from \file{dutch.ldf})} +% \changes{Version 2.9b=Version 2.11}{2018/12/08}{Fix old hyphenation regression introduced with \babel\ 3.7 +% (2002) in a number of shorthands (change of meaning of \cs{allowhyphens} +% vs. \cs{bbl@allowhyphens})} +% \begin{macrocode} +\declare@shorthand{ngerman}{"-}{\nobreak\-\bbl@allowhyphens} +\declare@shorthand{ngerman}{"|}{% + \textormath{\penalty\@M\discretionary{-}{}{\kern.03em}% + \bbl@allowhyphens}{}} +\declare@shorthand{ngerman}{""}{\hskip\z@skip} +\declare@shorthand{ngerman}{"~}{\textormath{\leavevmode\hbox{-}}{-}} +\declare@shorthand{ngerman}{"=}{\penalty\@M-\hskip\z@skip} +\declare@shorthand{ngerman}{"/}{\textormath + {\bbl@allowhyphens\discretionary{/}{}{/}\bbl@allowhyphens}{}} +% \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 +%</ngermanb> +% \fi +% +% \subsection{\file{naustrian.ldf}, \file{ngerman.ldf} and \file{nswissgerman.ldf}} +% +% \changes{Version 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 \Lopt{naustrian}, \Lopt{ngerman} and \Lopt{nswissgerman}.\footnote{% +% For \Lopt{naustrian} and \Lopt{ngerman}, this is not strictly necessary, +% since \babel\ provides aliases for these languages (pointing to \Lopt{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 +%<*naustrian|ngerman|nswissgerman> +% \fi +% \begin{macrocode} +\input ngermanb.ldf\relax +% \end{macrocode} +% \iffalse +%</naustrian|ngerman|nswissgerman> +% \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://www.ctan.org/pkg/babel}. +% \bibitem{exptl} Deutschsprachige Trennmustermannschaft: +% \emph{dehyph-exptl -- Experimental hyphenation patterns for the German language}. +% \url{https://ctan.org/pkg/dehyph-exptl}. +% \bibitem{hyphsubst} Heiko Oberdiek: +% \emph{hyphsubst -- Substitute hyphenation patterns}. +% \url{https://ctan.org/pkg/hyphsubst}. +% \bibitem{HP} Partl, Hubert: +% \emph{German \TeX}, \emph{TUGboat} 9/1 (1988), p.~70--72. +% \bibitem{hyph-utf8} Manuel P\'egouri\'e-Gonnard et al.: +% \emph{hyph-utf8 -- Hyphenation patterns expressed in UTF-8}. +% \url{https://ctan.org/pkg/hyph-utf8}. +% \bibitem{gerdoc} Raichle, Bernd: +% \emph{German}. +% \url{http://www.ctan.org/pkg/german}. +% \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 |