summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/generic/babel-german/ngermanb.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/generic/babel-german/ngermanb.dtx')
-rw-r--r--Master/texmf-dist/source/generic/babel-german/ngermanb.dtx358
1 files changed, 250 insertions, 108 deletions
diff --git a/Master/texmf-dist/source/generic/babel-german/ngermanb.dtx b/Master/texmf-dist/source/generic/babel-german/ngermanb.dtx
index 4e305683df7..3caf2247efa 100644
--- a/Master/texmf-dist/source/generic/babel-german/ngermanb.dtx
+++ b/Master/texmf-dist/source/generic/babel-german/ngermanb.dtx
@@ -2,10 +2,11 @@
%
% File `ngermanb.dtx'
%
-% Copyright 1989--2016 Johannes L. Braams
-% Bernd Raichle
-% Walter Schmidt,
-% Juergen Spitzmueller
+% Copyright 1989--2016
+% Johannes L. Braams
+% Bernd Raichle
+% Walter Schmidt
+% Juergen Spitzmueller
% All rights reserved.
%
% This file is part of the babel-german bundle,
@@ -28,7 +29,7 @@
% by Bernd Raichle, Hubert Partl et.al.
%
% \fi
-% \CheckSum{365}
+% \CheckSum{403}
%
% \iffalse
% Tell the \LaTeX\ system who we are and write an entry on the
@@ -36,13 +37,13 @@
%<*dtx>
\ProvidesFile{ngermanb.dtx}
%</dtx>
-%<austrian>\ProvidesLanguage{naustrian}
-%<german>\ProvidesLanguage{ngerman}
-%<swiss>\ProvidesLanguage{nswissgerman}
-%<germanb>\ProvidesLanguage{ngermanb}
+%<naustrian>\ProvidesLanguage{naustrian}
+%<ngerman>\ProvidesLanguage{ngerman}
+%<nswissgerman>\ProvidesLanguage{nswissgerman}
+%<ngermanb>\ProvidesLanguage{ngermanb}
%\fi
%\ProvidesFile{ngermanb.dtx}
- [2016/11/02 v2.9 German support for babel (new orthography)]
+ [2018/03/29 v2.10 German support for babel (post-1996 orthography)]
%\iffalse
%
%<*filedriver>
@@ -53,15 +54,23 @@
\usepackage{url}
\usepackage{array}
\usepackage{booktabs}
-\usepackage[tableposition=top]{caption}
+\usepackage[tableposition=top,skip=5pt]{caption}
\usepackage{marginnote}
-\newcommand*\TeXhax{\TeX hax}
+\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]{\textsf{#1}}
+\newcommand*\Lopt[1]{\texttt{#1}}
\newcommand*\file[1]{\texttt{#1}}
\newcommand*\newfeature[1]{\marginnote{\footnotesize New feature\\in v.\,#1!}}
\GlossaryMin = .33\textheight
@@ -75,62 +84,72 @@
%
%\RecordChanges
%
-% \changes{Version 2.7}{2013/12/13}{Added support for variety \texttt{nswissgerman}.}
-% \changes{Version 2.7}{2013/12/13}{Revised \texttt{naustrian} support.}
+% \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 \texttt{german} and \texttt{austrian}
-% to \texttt{ngerman} and \texttt{naustrian}.}
+% language names changed from \Lopt{german} and \Lopt{austrian}
+% to \Lopt{ngerman} and \Lopt{naustrian}.}
%
-% \title{Babel support for the German language (new~orthography)}
+% \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 the \babel\ language definition file \file{ngermanb.ldf}
-% for German (new orthography).
-% The file is part of the \textsf{babel-german} bundle.
+% \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 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.
+% 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 name as an
-% option, either of
+% 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}
-% Please consult the \babel\ manual \cite{babel} for details.
+% 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 for better control of hyphenation, line breaks and
-% ligatures.
+% 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 \file{ngermanb.ldf}.
+% that are provided by \textsf{babel-german} for \Lopt{ngerman}, \Lopt{naustrian}
+% and \Lopt{nswissgerman}.
% \begin{table}[htb]
% \begin{center}
% \small
@@ -142,9 +161,11 @@
% 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{}|). \tabularnewline
+% |"s| & German \graph{\ss} (shorthand for |\ss{}|);
+% but cf. sec.~\ref{sec:toss}. \tabularnewline
% |"z| & German \graph{\ss} (shorthand for |\ss{}|).
-% The difference to |"s| is the uppercase version. \tabularnewline
+% 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
@@ -157,16 +178,17 @@
% |"-| & An additional breakpoint that does still
% allow for hyphenation at the breakpoints preset in
% the hyphenation patterns (as opposed to |\-|). \tabularnewline
-% |""| & A breakpoint that does not output a hyphen if the line
-% break is performed (useful for compound words with
-% hyphen, e.\,g., |(Un-)""Sinn|). \tabularnewline
-% |"~| & An explicit hyphen without a breakpoint. Useful for
-% cases where the hyphen should stick at the following
-% word, e.\,g., |bergauf und "~ab| . \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. \tabularnewline
+% 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
@@ -179,9 +201,9 @@
% \end{center}
% \end{table}
%
-% Table~\ref{tab:more-quote} lists some \babel\ macros for quotation marks
-% that might be used as an alternative to the quotation mark shorthands
-% provided by \file{ngermanb.ldf}.
+% \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
@@ -202,6 +224,74 @@
% \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{}
%
%
@@ -209,14 +299,23 @@
%
% \subsection{General settings}
%
-% If \file{ngermanb.ldf} is read via the deprecated \babel\ option
-% \Lopt{ngermanb}, we make it behave as if \Lopt{ngerman} was specified.
+% 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
-%<*germanb>
+%<*ngermanb>
% \fi
% \begin{macrocode}
-\def\bbl@tempa{ngermanb}
-\ifx\CurrentOption\bbl@tempa
+\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}
@@ -229,7 +328,7 @@
% \end{macrocode}
%
% If \file{ngermanb.ldf} is read as an option, i.e., by the |\usepackage|
-% command, \texttt{ngerman} could be an `unknown' language, so we
+% 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.
%
@@ -240,17 +339,16 @@
\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}. If no \texttt{ngerman} patterns are found,
+% 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}
-\def\bbl@tempa{naustrian}
-\ifx\CurrentOption\bbl@tempa
+\ifx\CurrentOption\bbl@opt@naustrian
\ifx\l@ngerman\@undefined
\@nopatterns{German (new orthography), needed by Austrian (new orthography)}
\adddialect\l@naustrian0
@@ -258,8 +356,7 @@
\adddialect\l@naustrian\l@ngerman
\fi
\fi
-\def\bbl@tempa{nswissgerman}
-\ifx\CurrentOption\bbl@tempa
+\ifx\CurrentOption\bbl@opt@nswissgerman
\ifx\l@ngerman\@undefined
\@nopatterns{German (new orthography), needed by Swiss German (new orthography)}
\adddialect\l@nswissgerman0
@@ -286,7 +383,7 @@
% \cs{captionsnaustrian} and
% \cs{captionsnswissgerman}.}
% \changes{Version 2.7}{2013/12/13}{Changed \cs{enclname} in
-% \texttt{naustrian} to
+% \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
@@ -299,32 +396,31 @@
\def\bibname{Literaturverzeichnis}%
\def\chaptername{Kapitel}%
\def\appendixname{Anhang}%
- \def\contentsname{Inhaltsverzeichnis}% % oder nur: Inhalt
+ \def\contentsname{Inhaltsverzeichnis}%
\def\listfigurename{Abbildungsverzeichnis}%
\def\listtablename{Tabellenverzeichnis}%
\def\indexname{Index}%
\def\figurename{Abbildung}%
- \def\tablename{Tabelle}% % oder: Tafel
+ \def\tablename{Tabelle}%
\def\partname{Teil}%
\def\enclname{Anlage(n)}%
- \def\ccname{Verteiler}% % oder: Kopien an
+ \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 \texttt{ngerman} is requested.
+% but only defined if \Lopt{ngerman} is requested.
% \changes{Version 2.8}{2016/11/01}{Only define \cs{captionsngerman} if
-% \texttt{ngerman} is requested.}
+% \Lopt{ngerman} is requested.}
% \begin{macrocode}
-\def\bbl@tempa{ngerman}
-\ifx\CurrentOption\bbl@tempa
+\ifx\CurrentOption\bbl@opt@ngerman
\@namedef{captionsngerman}{%
\@nameuse{@captionsngerman}%
}
@@ -335,12 +431,11 @@
% 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
-% \texttt{naustrian} is requested.
+% \Lopt{naustrian} is requested.
% \changes{Version 2.8}{2016/11/01}{Only define \cs{captionsnaustrian} if
-% \texttt{naustrian} is requested.}
+% \Lopt{naustrian} is requested.}
% \begin{macrocode}
-\def\bbl@tempa{naustrian}
-\ifx\CurrentOption\bbl@tempa
+\ifx\CurrentOption\bbl@opt@naustrian
\@namedef{captionsnaustrian}{%
\@nameuse{@captionsngerman}%
\def\enclname{Beilage(n)}%
@@ -352,12 +447,11 @@
% 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
-% \texttt{nswissgerman} is requested.
+% \Lopt{nswissgerman} is requested.
% \changes{Version 2.8}{2016/11/01}{Only define \cs{captionsnswissgerman} if
-% \texttt{nswissgerman} is requested.}
+% \Lopt{nswissgerman} is requested.}
% \begin{macrocode}
-\def\bbl@tempa{nswissgerman}
-\ifx\CurrentOption\bbl@tempa
+\ifx\CurrentOption\bbl@opt@nswissgerman
\@namedef{captionsnswissgerman}{%
\@nameuse{@captionsngerman}%
\def\enclname{Beilage(n)}%
@@ -379,12 +473,12 @@
%
% \begin{macro}{\datengerman}
% The macro |\datengerman| redefines the command
-% |\today| to produce German dates.
+% |\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
-% \texttt{ngerman} is requested.}
+% \Lopt{ngerman} is requested.}
% \begin{macrocode}
-\def\bbl@tempa{ngerman}
-\ifx\CurrentOption\bbl@tempa
+\ifx\CurrentOption\bbl@opt@ngerman
\def\datengerman{\def\today{\number\day.~\month@ngerman
\space\number\year}}
\fi
@@ -394,12 +488,12 @@
% \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.
+% 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
-% \texttt{nswissgerman} is requested.}
+% \Lopt{nswissgerman} is requested.}
% \begin{macrocode}
-\def\bbl@tempa{nswissgerman}
-\ifx\CurrentOption\bbl@tempa
+\ifx\CurrentOption\bbl@opt@nswissgerman
\def\datenswissgerman{\def\today{\number\day.~\month@ngerman
\space\number\year}}
\fi
@@ -410,12 +504,12 @@
% 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.
+% 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
-% \texttt{naustrian} is requested.}
+% \Lopt{naustrian} is requested.}
% \begin{macrocode}
-\def\bbl@tempa{naustrian}
-\ifx\CurrentOption\bbl@tempa
+\ifx\CurrentOption\bbl@opt@naustrian
\def\datenaustrian{\def\today{\number\day.~\ifnum1=\month
J\"anner\else \month@ngerman\fi \space\number\year}}
\fi
@@ -452,10 +546,39 @@
% character.
% \begin{macrocode}
\@namedef{extras\CurrentOption}{%
- \languageshorthands{ngerman}}
+ \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.
@@ -464,10 +587,13 @@
% \changes{Version 2.6j}{1999/12/16}{Deactivate shorthands outside of
% German}
% \changes{Version 2.7}{2013/12/13}{Deactivate shorthands also outside of
-% \texttt{naustrian} and \texttt{nswissgerman}.}
+% \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}
%
%
@@ -504,7 +630,7 @@
% For German texts we need to assure that |\frenchspacing| is
% turned on.
% \changes{Version 2.6m}{2001/01/26}{Turn frenchspacing on, as in
-% \texttt{german.sty}}
+% \file{german.sty}}
% \begin{macrocode}
\expandafter\addto\csname extras\CurrentOption\endcsname{%
\bbl@frenchspacing}
@@ -531,11 +657,18 @@
% \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\dq{"}}
+ \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}
@@ -559,10 +692,10 @@
% \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}
+\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}
@@ -573,7 +706,7 @@
% \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 \texttt{dutch.ldf})}
+% (taken from \file{dutch.ldf})}
% \begin{macrocode}
\declare@shorthand{ngerman}{"-}{\nobreak\-\bbl@allowhyphens}
\declare@shorthand{ngerman}{"|}{%
@@ -605,7 +738,7 @@
\ldf@finish\CurrentOption
% \end{macrocode}
% \iffalse
-%</germanb>
+%</ngermanb>
% \fi
%
% \subsection{\file{naustrian.ldf}, \file{ngerman.ldf} and \file{nswissgerman.ldf}}
@@ -614,22 +747,22 @@
% \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}).
+% 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
-%<*austrian|german|swiss>
+%<*naustrian|ngerman|nswissgerman>
% \fi
% \begin{macrocode}
\input ngermanb.ldf\relax
% \end{macrocode}
% \iffalse
-%</austrian|german|swiss>
+%</naustrian|ngerman|nswissgerman>
% \fi
%
%\PrintChanges
@@ -642,8 +775,17 @@
% \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}.