texlive[47192] Master/texmf-dist: babel-german (30mar18)

commits+karl at tug.org commits+karl at tug.org
Fri Mar 30 23:16:22 CEST 2018


Revision: 47192
          http://tug.org/svn/texlive?view=revision&revision=47192
Author:   karl
Date:     2018-03-30 23:16:21 +0200 (Fri, 30 Mar 2018)
Log Message:
-----------
babel-german (30mar18)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/generic/babel-german/README
    trunk/Master/texmf-dist/doc/generic/babel-german/germanb.pdf
    trunk/Master/texmf-dist/doc/generic/babel-german/ngermanb.pdf
    trunk/Master/texmf-dist/source/generic/babel-german/german.ins
    trunk/Master/texmf-dist/source/generic/babel-german/germanb.dtx
    trunk/Master/texmf-dist/source/generic/babel-german/ngermanb.dtx
    trunk/Master/texmf-dist/tex/generic/babel-german/austrian.ldf
    trunk/Master/texmf-dist/tex/generic/babel-german/german.ldf
    trunk/Master/texmf-dist/tex/generic/babel-german/germanb.ldf
    trunk/Master/texmf-dist/tex/generic/babel-german/naustrian.ldf
    trunk/Master/texmf-dist/tex/generic/babel-german/ngerman.ldf
    trunk/Master/texmf-dist/tex/generic/babel-german/ngermanb.ldf
    trunk/Master/texmf-dist/tex/generic/babel-german/nswissgerman.ldf
    trunk/Master/texmf-dist/tex/generic/babel-german/swissgerman.ldf

Modified: trunk/Master/texmf-dist/doc/generic/babel-german/README
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/babel-german/germanb.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/babel-german/ngermanb.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/generic/babel-german/german.ins
===================================================================
--- trunk/Master/texmf-dist/source/generic/babel-german/german.ins	2018-03-30 21:15:38 UTC (rev 47191)
+++ trunk/Master/texmf-dist/source/generic/babel-german/german.ins	2018-03-30 21:16:21 UTC (rev 47192)
@@ -3,10 +3,11 @@
 %% driver files from the doc files in this package when run through
 %% LaTeX or TeX.
 %%
-%% 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,
@@ -49,10 +50,11 @@
 \preamble
 This is a generated file.
 
-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,
@@ -72,7 +74,7 @@
 The Current Maintainer of this work is Juergen Spitzmueller.
 
 Please report errors to: Juergen Spitzmueller
-                         juergen at spitzmueller dot org
+                    via: https://github.com/jspitz/babel-german
 
 \endpreamble
 
@@ -83,11 +85,11 @@
 \generate{\file{germanb.ldf}{\from{germanb.dtx}{germanb}}
           \file{german.ldf}{\from{germanb.dtx}{german}}
           \file{austrian.ldf}{\from{germanb.dtx}{austrian}}
-          \file{swissgerman.ldf}{\from{germanb.dtx}{swiss}}
-          \file{ngermanb.ldf}{\from{ngermanb.dtx}{germanb}}          
-          \file{ngerman.ldf}{\from{ngermanb.dtx}{german}}
-          \file{naustrian.ldf}{\from{ngermanb.dtx}{austrian}}
-          \file{nswissgerman.ldf}{\from{ngermanb.dtx}{swiss}}
+          \file{swissgerman.ldf}{\from{germanb.dtx}{swissgerman}}
+          \file{ngermanb.ldf}{\from{ngermanb.dtx}{ngermanb}}          
+          \file{ngerman.ldf}{\from{ngermanb.dtx}{ngerman}}
+          \file{naustrian.ldf}{\from{ngermanb.dtx}{naustrian}}
+          \file{nswissgerman.ldf}{\from{ngermanb.dtx}{nswissgerman}}
           }
 
 \ifToplevel{

Modified: trunk/Master/texmf-dist/source/generic/babel-german/germanb.dtx
===================================================================
--- trunk/Master/texmf-dist/source/generic/babel-german/germanb.dtx	2018-03-30 21:15:38 UTC (rev 47191)
+++ trunk/Master/texmf-dist/source/generic/babel-german/germanb.dtx	2018-03-30 21:16:21 UTC (rev 47192)
@@ -2,10 +2,11 @@
 %
 % File `germanb.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,
@@ -24,7 +25,7 @@
 % 
 % The Current Maintainer of this work is Juergen Spitzmueller.
 % \fi
-% \CheckSum{470}
+% \CheckSum{508}
 %
 % \iffalse
 %    Tell the \LaTeX\ system who we are and write an entry on the
@@ -34,11 +35,11 @@
 %</dtx>
 %<austrian>\ProvidesLanguage{austrian}
 %<german>\ProvidesLanguage{german}
-%<swiss>\ProvidesLanguage{swissgerman}
+%<swissgerman>\ProvidesLanguage{swissgerman}
 %<germanb>\ProvidesLanguage{germanb}
 %\fi
 %\ProvidesFile{germanb.dtx}
-        [2016/11/02 v2.9 German support for babel (traditional orthography)]
+        [2018/03/29 v2.10 German support for babel (pre-1996 orthography)]
 %\iffalse
 %
 %<*filedriver>
@@ -49,15 +50,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
@@ -71,10 +80,12 @@
 %
 %\RecordChanges
 %
+% \changes{Version 2.9a=Version 2.10}{2016/11/07}{Improvements to the manual}
+%
 % \changes{Version 2.7}{2013/12/13}{Revised documentation: Turn the \babel{}
 %          manual chapter into a self-enclosed manual.}
-% \changes{Version 2.7}{2013/12/13}{Added support for variety \texttt{swissgerman}.}
-% \changes{Version 2.7}{2013/12/13}{Revised \texttt{austrian} support.}
+% \changes{Version 2.7}{2013/12/13}{Added support for variety \Lopt{swissgerman}.}
+% \changes{Version 2.7}{2013/12/13}{Revised \Lopt{austrian} support.}
 %
 % \changes{Version 2.6d}{1996/07/10}{Replaced \cs{undefined} with
 %    \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency
@@ -127,7 +138,7 @@
 %
 % \changes{Version 1.0a}{1990/05/14}{Incorporated Nico's comments}
 %
-%  \title{Babel support for the German language (traditional~orthography)}
+%  \title{Babel support for the German language (pre-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)}
@@ -134,27 +145,28 @@
 %  \maketitle
 %
 %    \begin{abstract}
-%      \noindent This manual documents the \babel\ language definition file \file{germanb.ldf}
-%      for German (traditional orthography).
-%      The file is part of the \textsf{babel-german} bundle.
+%      \noindent This manual documents \babel\ language support for German (pre-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{germanb.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{germanb.ldf} started as a re-implementation of the package
-%    \file{german.sty} (v.\,2.5b), which was originally developed by Hubert Partl
-%    (cf. \cite{HP}) and later maintained by Bernd Raichle (cf. \cite{gerdoc}).
-%    The re-implementation was done by Johannes Braams.}
-%    The file adheres to the traditional (1901--1996) orthography.
-%    For reformed (post-1996) German orthography support, please refer to the
-%    complementary |ngermanb.ldf| file.
+%    The \babel\ `language definition file' \file{germanb.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, in \emph{traditional
+%    (1901--1996) spelling}.\footnote{%
+%              The file \file{germanb.ldf} started as a re-implementation of the
+%              package \file{german.sty} (v.\,2.5b), which was originally
+%              developed by Hubert Partl (cf.\,\cite{HP}) and later maintained by Bernd Raichle
+%              (cf.\,\cite{gerdoc}). Johannes Braams did the initial re-implementation.}
+%    As for support for contemporary (`reformed', i.\,e., post-1996) German orthography, please refer to
+%    the complementary \href{file:ngermanb.pdf}{manual for the \file{ngermanb.ldf} language definition file}.
+%    The `language definition file' also assures that the correct hyphenation patterns for the respective
+%    language or variety are used (see sec.~\ref{sec:patterns} for details).
 %
 %    In order to use the language definitions provided here, you need to use
-%    the \babel\ package and pass the respective language name as an
+%    the \babel\ package and pass the respective language\slash variety name as an
 %    option, either of
 %
 %    \begin{itemize}
@@ -162,21 +174,26 @@
 %       \item |\usepackage[german]{babel}|
 %       \item |\usepackage[austrian]{babel}|
 %       \item |\usepackage[swissgerman]{babel}|
+%       \item |\usepackage[swissgerman.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.
-%    Some of these shorthands address a peculiarity of traditional German
+%    Some of these shorthands address a peculiarity of pre-1996 German
 %    spelling: consonantial character combinations that change in the context
 %    of hyphenations.
 %    Other shorthands are provided for frequently used
-%    special characters as well for better control of hyphenation,
+%    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 \file{germanb.ldf}.
+%    that are provided by \textsf{babel-german} for \Lopt{german}, \Lopt{austrian}
+%    and \Lopt{swissgerman}.
 %
 %    \begin{table}[htb]
 %     \begin{center}
@@ -188,13 +205,17 @@
 %                  	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
+% 			The difference to |"s| is the uppercase version;
+%                       but cf. sec.~\ref{sec:toss}.                            \tabularnewline
 %      |"ck|	& 	\graph{ck}, hyphenated as \graph{k-k}.			\tabularnewline
 %      |"ff|	& 	\graph{ff}, hyphenated as \graph{ff-f};
 %                  	this is also implemented for \graph{l}, \graph{m}, 
-%                 	\graph{n}, \graph{p}, \graph{r} and \graph{t}. 		\tabularnewline
+%                 	\graph{n}, \graph{p}, \graph{r} and \graph{t}. 		
+%                       Please refer to sec.~\ref{sec:toss} for why this does not
+%                       include \graph{s}.                                      \tabularnewline
 %      |"S|	& 	|\uppercase{"s}|, typeset as \graph{SS} (\graph{\ss}
 %			must be written as \graph{SS} [or \graph{SZ}, see below] 
 %			in uppercase writing).					\tabularnewline
@@ -206,16 +227,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
@@ -228,9 +250,8 @@
 %     \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{germanb.ldf}.
+%    \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
@@ -251,6 +272,86 @@
 %     \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.
+%   An exception is (pre-1996) Swiss German: here, the classic engines use the `experimental' patterns by default (since there were no patterns available
+%   previously anyway).
+%
+%   So you need to explicitly activate the new patterns for a given document (except for \Lopt{swissgerman}) 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[german=german-x-latest]{hyphsubst}
+%     \usepackage[german]{babel}
+%   \end{verbatim}\vspace{-\baselineskip}
+%   Since \Lopt{austrian} uses the same patterns as \Lopt{german}, the given \textsf{hyphsubst} option activates
+%   the new patterns for this variety as well; 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[german,austrian]{babel}
+%     \HyphSubstLet{austrian}{german-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 Swiss writers will normally input \graph{ss} directly when they mean \graph{ss}, and we assume furthermore
+%   that 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 Standard 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{swissgerman} 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{swissgerman}. I.\,e., pass \Lopt{swissgerman.toss} (rather than \Lopt{swissgerman}) as \babel\ option.
+%
+%   \item To switch on the digraphical expansion only locally, you can use the boolean switch |\tosstrue|. Likewise,
+%         |\tossfalse| switches off (both locally and globally set) digraphical expansion.
+%   \end{itemize}
+%   Both these changes result in the following deviant behavior of two shorthands:
+%    \begin{table}[!h]
+%     \begin{tabular}{l>{\raggedright}p{.9\textwidth}}
+%      |"s|	& 	Expands to digraph \graph{ss}             \tabularnewline
+%      |"z|	& 	Expands to digraph \graph{sz}             \tabularnewline
+%     \end{tabular}
+%    \end{table}
+%
+%    \noindent One further note related to the use of \graph{ss} in Swiss German. As opposed to other consonantial letters, the \graph{s}
+%    is excluded from the three consonant rule (\emph{Dreikonsonantenregel}) of traditional German spelling which prescribes
+%    that one of three identical consonants has to be omitted if a vowel follows the three consonants (i.\,e., \emph{Schiffahrt},
+%    not \emph{Schifffahrt}), except if the word is hyphenated (\emph{Schiff-fahrt}); the shorthands |"ff| etc. account for that.
+%    This does not apply to \graph{s}! In that case, always all three consonants are spelled out (e.\,g., \emph{Kongresssaal},
+%    not \emph{Kongressaal}). This is why we don't provide a shorthand for the \graph{sss} case.
+%
+%
 % \StopEventually{}
 %
 %    \section{Implementation}
@@ -257,20 +358,29 @@
 %
 %    \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
+%<*germanb>
+% \fi
+%    \begin{macrocode}
+\def\bbl at opt@german{german}
+\def\bbl at opt@germanb{germanb}
+\def\bbl at opt@austrian{austrian}
+\def\bbl at opt@swissgerman{swissgerman}
+%    \end{macrocode}
+%
 %    If \file{germanb.ldf} is read via the deprecated  \babel\ option
 %    \Lopt{germanb}, we make it behave as if \Lopt{german} was specified.
 % \changes{Version 2.6l}{2008/03/17}{Making germanb behave like german
 %    needs some more work besides defining \cs{CurrentOption}}
 % \changes{Version 2.6m}{2008/06/01}{Corrected a typo}
-% \iffalse
-%<*germanb>
-% \fi
 %    \begin{macrocode}
-\def\bbl at tempa{germanb}
-\ifx\CurrentOption\bbl at tempa
+\ifx\CurrentOption\bbl at opt@germanb
   \def\CurrentOption{german}
   \ifx\l at german\@undefined
-    \@nopatterns{German}
+    \@nopatterns{German (trad. orthography)}
     \adddialect\l at german0
   \fi
   \let\l at germanb\l at german
@@ -293,7 +403,7 @@
 %    \end{macrocode}
 %
 %    If \file{germanb.ldf} is read as an option, i.e. via |\usepackage|
-%    command, \texttt{german} could be an `unknown' language, so we
+%    command, \Lopt{german} could be an `unknown' language, so we
 %    have to make it known.  We check for the existence of
 %    |\l at german| and issue a warning if it is unknown.
 %
@@ -311,17 +421,16 @@
 \fi
 %    \end{macrocode}
 %
-%    We set \texttt{austrian} as a dialect of \texttt{german},
+%    We set \Lopt{austrian} as a dialect of \Lopt{german},
 %    since the Austrian variety uses the same hyphenation patterns as
 %    Germany's Standard German. If no German patterns are found, we issue
 %    a warning.
 % \changes{Version 2.0}{1991/04/23}{Now use \cs{adddialect} for
 %    austrian}
-% \changes{Version 2.8}{2016/11/01}{Only add Austrian dialect if \texttt{austrian} is loaded}
+% \changes{Version 2.8}{2016/11/01}{Only add Austrian dialect if \Lopt{austrian} is loaded}
 % \changes{Version 2.9}{2016/11/02}{Do not attempt to load \cs{l at austrian}, which does not exist}
 %    \begin{macrocode}
-\def\bbl at tempa{austrian}
-\ifx\CurrentOption\bbl at tempa
+\ifx\CurrentOption\bbl at opt@austrian
   \ifx\l at german\@undefined
     \@nopatterns{German (trad. orthography), needed by Austrian (trad. orthography)}
     \adddialect\l at austrian0
@@ -332,14 +441,13 @@
 %    \end{macrocode}
 %
 %    For the Swiss variety, we attempt to load the specific
-%    \texttt{swissgerman} hyphenation patterns and fall back to
-%    \texttt{german} if those are not available.
+%    \Lopt{swissgerman} hyphenation patterns and fall back to
+%    \Lopt{german} if those are not available.
 %    If no patterns are found, we issue a warning.
 % \changes{Version 2.7b}{2014/10/10}{Do not warn about missing swissgerman patterns
-%    if \texttt{swissgerman} is not loaded}
+%    if \Lopt{swissgerman} is not loaded}
 %    \begin{macrocode}
-\def\bbl at tempa{swissgerman}
-\ifx\CurrentOption\bbl at tempa
+\ifx\CurrentOption\bbl at opt@swissgerman
   \ifx\l at swissgerman\@undefined
     \ifx\l at german\@undefined
       \@nopatterns{Swiss German (trad. orthography) and German (trad. orthography)}
@@ -379,7 +487,7 @@
 %                                    \cs{captionsaustrian} and
 %                                    \cs{captionsswissgerman}.}
 % \changes{Version 2.7}{2013/12/13}{Changed \cs{enclname} in
-%                                    \texttt{austrian} to
+%                                    \Lopt{austrian} to
 %                                    \emph{Beilage(n)}.}
 % \changes{Version 2.8}{2016/11/01}{Define trans-variational base captions
 %                                   which are loaded and modified by the varieties}
@@ -391,15 +499,15 @@
   \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}%
@@ -406,17 +514,16 @@
   \def\alsoname{siehe auch}%
   \def\proofname{Beweis}%
   \def\glossaryname{Glossar}%
-  }
+}
 %    \end{macrocode}
 %  \end{macro}
 %  \begin{macro}{\captionsgerman}
 %    The macro |\captionsgerman| is identical to |\@captionsgerman|,
-%    but only defined if \texttt{german} is requested.
+%    but only defined if \Lopt{german} is requested.
 %  \changes{Version 2.8}{2016/11/01}{Only define \cs{captionsgerman} if
-%                                    \texttt{german} is requested.}
+%                                    \Lopt{german} is requested.}
 %    \begin{macrocode}
-\def\bbl at tempa{german}
-\ifx\CurrentOption\bbl at tempa
+\ifx\CurrentOption\bbl at opt@german
   \@namedef{captionsgerman}{%
     \@nameuse{@captionsgerman}%
   }
@@ -427,12 +534,11 @@
 %    The macro |\captionsaustrian| builds on |\@captionsgerman|, but
 %    redefines some strings following Austrian conventions (for the
 %    respective variants, cf. \cite{vwb}). It is only defined if
-%    \texttt{austrian} is requested.
+%    \Lopt{austrian} is requested.
 %  \changes{Version 2.8}{2016/11/01}{Only define \cs{captionsaustrian} if
-%                                    \texttt{austrian} is requested.}
+%                                    \Lopt{austrian} is requested.}
 %    \begin{macrocode}
-\def\bbl at tempa{austrian}
-\ifx\CurrentOption\bbl at tempa
+\ifx\CurrentOption\bbl at opt@austrian
   \@namedef{captionsaustrian}{%
     \@nameuse{@captionsgerman}%
     \def\enclname{Beilage(n)}%
@@ -444,12 +550,11 @@
 %    The macro |\captionsswissgerman| builds on |\@captionsgerman|, but
 %    redefines some strings following Swiss conventions (for the
 %    respective variants, cf. \cite{vwb}). It is only defined if
-%    \texttt{swissgerman} is requested.
+%    \Lopt{swissgerman} is requested.
 %  \changes{Version 2.8}{2016/11/01}{Only define \cs{captionsswissgerman} if
-%                                    \texttt{swissgerman} is requested.}
+%                                    \Lopt{swissgerman} is requested.}
 %    \begin{macrocode}
-\def\bbl at tempa{swissgerman}
-\ifx\CurrentOption\bbl at tempa
+\ifx\CurrentOption\bbl at opt@swissgerman
   \@namedef{captionsswissgerman}{%
     \@nameuse{@captionsgerman}%
     \def\enclname{Beilage(n)}%
@@ -472,16 +577,16 @@
 %
 %  \begin{macro}{\dategerman}
 %    The macro |\dategerman| redefines the command
-%    |\today| to produce German dates.
+%    |\today| to produce German dates. It is only defined if
+%    \Lopt{german} is requested.
 % \changes{Version 2.6f}{1997/10/01}{Use \cs{edef} to define
 %    \cs{today} to save memory}
 % \changes{Version 2.6f}{1998/03/28}{use \cs{def} instead of
 %    \cs{edef}}
 %  \changes{Version 2.8}{2016/11/01}{Only define \cs{dategerman} if
-%                                    \texttt{german} is requested.}
+%                                    \Lopt{german} is requested.}
 %    \begin{macrocode}
-\def\bbl at tempa{german}
-\ifx\CurrentOption\bbl at tempa
+\ifx\CurrentOption\bbl at opt@german
   \def\dategerman{\def\today{\number\day.~\month at german
       \space\number\year}}
 \fi
@@ -490,13 +595,13 @@
 %
 %  \begin{macro}{\dateswissgerman}
 %    \changes{Version 2.7}{2013/12/13}{Added \cs{dateswissgerman}.}
-%    The macro |\dateswissgerman| does the same for Swiss German dates.
+%    The macro |\dateswissgerman| does the same for Swiss German dates. It
+%    is only defined if \Lopt{swissgerman} is requested.
 %    The result is identical to German.
 %    \changes{Version 2.8}{2016/11/01}{Only define \cs{dateswissgerman} if
-%                                      \texttt{swissgerman} is requested.}
+%                                      \Lopt{swissgerman} is requested.}
 %    \begin{macrocode}
-\def\bbl at tempa{swissgerman}
-\ifx\CurrentOption\bbl at tempa
+\ifx\CurrentOption\bbl at opt@swissgerman
   \def\dateswissgerman{\def\today{\number\day.~\month at german
       \space\number\year}}
 \fi
@@ -507,16 +612,16 @@
 %    The macro |\dateaustrian| 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{austrian} is requested.
 % \changes{Version 2.6f}{1997/10/01}{Use \cs{edef} to define
 %    \cs{today} to save memory}
 % \changes{Version 2.6f}{1998/03/28}{use \cs{def} instead of
 %    \cs{edef}}
 %  \changes{Version 2.8}{2016/11/01}{Only define \cs{dateaustrian} if
-%                                    \texttt{austrian} is requested.}
+%                                    \Lopt{austrian} is requested.}
 %    \begin{macrocode}
-\def\bbl at tempa{austrian}
-\ifx\CurrentOption\bbl at tempa
+\ifx\CurrentOption\bbl at opt@austrian
   \def\dateaustrian{\def\today{\number\day.~\ifnum1=\month
     J\"anner\else \month at german\fi \space\number\year}}
 \fi
@@ -568,6 +673,34 @@
 \expandafter\addto\csname extras\CurrentOption\endcsname{%
   \bbl at activate{"}}
 %    \end{macrocode}
+%
+%   \changes{Version 2.9a=Version 2.10}{2018/03/28}{Implement boolean switch
+%            \cs{tosstrue}\slash\cs{tossfalse} 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}{\tosstrue}
+%   \begin{macro}{\tossfalse}
+%    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 |\tosstrue|.).
+%    \begin{macrocode}
+\newif\iftoss\tossfalse
+\newif\ifbbl at toss\bbl at tossfalse
+\ifx\bbl at mod@swissgerman\@undefined\else
+  \@expandtwoargs\in@{,toss,}{,\bbl at mod@swissgerman,}
+  \ifin@
+    \tosstrue
+  \fi
+  \addto\extrasswissgerman{%
+    \iftoss\bbl at tosstrue\else\bbl at tossfalse\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 |\noextrasgerman|, |\noextrasaustrian|
 %    or |\noextrasswissgerman| is defined. 
@@ -576,10 +709,13 @@
 % \changes{Version 2.6i}{1999/12/16}{Deactivate shorthands outside of
 %    German.}
 % \changes{Version 2.7}{2013/12/13}{Deactivate shorthands also outside of
-%    \texttt{austrian} and \texttt{swissgerman}.}
+%    \Lopt{austrian} and \Lopt{swissgerman}.}
 %    \begin{macrocode}
 \expandafter\addto\csname noextras\CurrentOption\endcsname{%
   \bbl at deactivate{"}}
+\ifx\CurrentOption\bbl at opt@swissgerman
+  \addto\noextrasswissgerman{\bbl at tossfalse}
+\fi
 %    \end{macrocode}
 %
 % \changes{Version 2.6a}{1995/02/15}{All the code to handle the active
@@ -623,7 +759,7 @@
 %    For German texts we need to assure that |\frenchspacing| is
 %    turned on.
 % \changes{Version 2.6k}{2001/01/26}{Turn frenchspacing on, as in
-%    \texttt{german.sty}}
+%    \file{german.sty}}
 %    \begin{macrocode}
 \expandafter\addto\csname extras\CurrentOption\endcsname{%
   \bbl at frenchspacing}
@@ -661,11 +797,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 at ss{\ifbbl at toss ss\else\textormath{\ss}{\@SS{}}\fi}
+  \def\bbl at SS{SS}
+  \def\bbl at sz{\ifbbl at toss sz\else\textormath{\ss}{\@SS{}}\fi}
+  \def\bbl at SZ{SZ}
+}
 \x
 %    \end{macrocode}
 %  \end{macro}
@@ -697,10 +840,10 @@
 % \changes{Version 2.6f}{1997/05/08}{use \cs{SS} instead of
 %    \texttt{SS}, removed braces after \cs{ss}} 
 %    \begin{macrocode}
-\declare at shorthand{german}{"s}{\textormath{\ss}{\@SS{}}}
-\declare at shorthand{german}{"S}{\SS}
-\declare at shorthand{german}{"z}{\textormath{\ss}{\@SS{}}}
-\declare at shorthand{german}{"Z}{SZ}
+\declare at shorthand{german}{"s}{\bbl at ss}
+\declare at shorthand{german}{"S}{\bbl at SS}
+\declare at shorthand{german}{"z}{\bbl at sz}
+\declare at shorthand{german}{"Z}{\bbl at SZ}
 %    \end{macrocode}
 %    German and French/Swiss quotation marks,
 %    \begin{macrocode}
@@ -743,7 +886,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 at shorthand{german}{"-}{\nobreak\-\bbl at allowhyphens}
 \declare at shorthand{german}{"|}{%
@@ -792,9 +935,9 @@
 %            \file{german.ldf} and \file{swissgerman.ldf}.}
 %
 %  \Babel\ expects a \file{\langvar{}.ldf} file for each \langvar. So we create portmanteau
-%    ldf files for \texttt{austrian}, \texttt{german} and \texttt{swissgerman}.\footnote{%
-%    For some \texttt{austrian} and \texttt{german}, this is not strictly necessary,
-%    since \babel\ provides aliases for these languages (pointing to \texttt{germanb}).
+%    ldf files for \Lopt{austrian}, \Lopt{german} and \Lopt{swissgerman}.\footnote{%
+%    For \Lopt{austrian} and \Lopt{german}, this is not strictly necessary,
+%    since \babel\ provides aliases for these languages (pointing to \Lopt{germanb}).
 %    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
@@ -801,13 +944,13 @@
 %    only load \file{germanb.ldf}, which does the real work:
 %
 % \iffalse
-%<*austrian|german|swiss>
+%<*austrian|german|swissgerman>
 % \fi
 %    \begin{macrocode}
 \input germanb.ldf\relax
 %    \end{macrocode}
 % \iffalse
-%</austrian|german|swiss>
+%</austrian|german|swissgerman>
 % \fi
 %
 %
@@ -821,11 +964,20 @@
 %    \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{gerdoc} Raichle, Bernd:
 %       \emph{German}.
 %       \url{http://www.ctan.org/pkg/german}.
+%    \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}.
 %  \end{thebibliography}
 %
 % \Finale

Modified: trunk/Master/texmf-dist/source/generic/babel-german/ngermanb.dtx
===================================================================
--- trunk/Master/texmf-dist/source/generic/babel-german/ngermanb.dtx	2018-03-30 21:15:38 UTC (rev 47191)
+++ trunk/Master/texmf-dist/source/generic/babel-german/ngermanb.dtx	2018-03-30 21:16:21 UTC (rev 47192)
@@ -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,16 +84,18 @@
 %
 %\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)}
@@ -91,29 +102,33 @@
 %  \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}
@@ -120,17 +135,21 @@
 %       \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 at tempa{ngermanb}
-\ifx\CurrentOption\bbl at tempa
+\def\bbl at opt@ngerman{ngerman}
+\def\bbl at opt@ngermanb{ngermanb}
+\def\bbl at opt@naustrian{naustrian}
+\def\bbl at 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 at 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 at ngerman| and issue a warning if it is unknown.
 %
@@ -240,9 +339,9 @@
 \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}
@@ -249,8 +348,7 @@
 %    \changes{Version 2.9}{2016/11/02}{Do not attempt to load \cs{l at naustrian}
 %                                      or \cs{l at nswissgerman}, which do not exist}
 %    \begin{macrocode}
-\def\bbl at tempa{naustrian}
-\ifx\CurrentOption\bbl at tempa
+\ifx\CurrentOption\bbl at opt@naustrian
   \ifx\l at ngerman\@undefined
     \@nopatterns{German (new orthography), needed by Austrian (new orthography)}
     \adddialect\l at naustrian0
@@ -258,8 +356,7 @@
     \adddialect\l at naustrian\l at ngerman
   \fi
 \fi
-\def\bbl at tempa{nswissgerman}
-\ifx\CurrentOption\bbl at tempa
+\ifx\CurrentOption\bbl at opt@nswissgerman
   \ifx\l at ngerman\@undefined
     \@nopatterns{German (new orthography), needed by Swiss German (new orthography)}
     \adddialect\l at 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,15 +396,15 @@
   \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}%
@@ -314,17 +411,16 @@
   \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 at tempa{ngerman}
-\ifx\CurrentOption\bbl at tempa
+\ifx\CurrentOption\bbl at 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 at tempa{naustrian}
-\ifx\CurrentOption\bbl at tempa
+\ifx\CurrentOption\bbl at 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 at tempa{nswissgerman}
-\ifx\CurrentOption\bbl at tempa
+\ifx\CurrentOption\bbl at 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 at tempa{ngerman}
-\ifx\CurrentOption\bbl at tempa
+\ifx\CurrentOption\bbl at opt@ngerman
   \def\datengerman{\def\today{\number\day.~\month at 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 at tempa{nswissgerman}
-\ifx\CurrentOption\bbl at tempa
+\ifx\CurrentOption\bbl at opt@nswissgerman
   \def\datenswissgerman{\def\today{\number\day.~\month at 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 at tempa{naustrian}
-\ifx\CurrentOption\bbl at tempa
+\ifx\CurrentOption\bbl at opt@naustrian
   \def\datenaustrian{\def\today{\number\day.~\ifnum1=\month
     J\"anner\else \month at 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 at 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 at ntoss\bbl at ntossfalse
+\ifx\bbl at mod@nswissgerman\@undefined\else
+  \@expandtwoargs\in@{,toss,}{,\bbl at mod@nswissgerman,}
+  \ifin@
+    \ntosstrue
+  \fi
+  \addto\extrasnswissgerman{%
+    \ifntoss\bbl at ntosstrue\else\bbl at 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 at deactivate{"}}
+\ifx\CurrentOption\bbl at opt@nswissgerman
+  \addto\noextrasnswissgerman{\bbl at 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 at 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 at ss{\ifbbl at ntoss ss\else\textormath{\ss}{\@SS{}}\fi}
+  \def\bbl at SS{SS}
+  \def\bbl at sz{\ifbbl at ntoss sz\else\textormath{\ss}{\@SS{}}\fi}
+  \def\bbl at SZ{SZ}
+}
 \x
 %    \end{macrocode}
 %  \end{macro}
@@ -559,10 +692,10 @@
 %    \end{macrocode}
 %    German \ss{},
 %    \begin{macrocode}
-\declare at shorthand{ngerman}{"s}{\textormath{\ss}{\@SS{}}}
-\declare at shorthand{ngerman}{"S}{\SS}
-\declare at shorthand{ngerman}{"z}{\textormath{\ss}{\@SS{}}}
-\declare at shorthand{ngerman}{"Z}{SZ}
+\declare at shorthand{ngerman}{"s}{\bbl at ss}
+\declare at shorthand{ngerman}{"S}{\bbl at SS}
+\declare at shorthand{ngerman}{"z}{\bbl at sz}
+\declare at shorthand{ngerman}{"Z}{\bbl at 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 at shorthand{ngerman}{"-}{\nobreak\-\bbl at allowhyphens}
 \declare at shorthand{ngerman}{"|}{%
@@ -605,7 +738,7 @@
 \ldf at finish\CurrentOption
 %    \end{macrocode}
 % \iffalse
-%</germanb>
+%</ngermanb>
 % \fi
 %
 %  \subsection{\file{naustrian.ldf}, \file{ngerman.ldf} and \file{nswissgerman.ldf}}
@@ -614,9 +747,9 @@
 %            \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
@@ -623,13 +756,13 @@
 %    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}.

Modified: trunk/Master/texmf-dist/tex/generic/babel-german/austrian.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-german/austrian.ldf	2018-03-30 21:15:38 UTC (rev 47191)
+++ trunk/Master/texmf-dist/tex/generic/babel-german/austrian.ldf	2018-03-30 21:16:21 UTC (rev 47192)
@@ -7,10 +7,11 @@
 %% germanb.dtx  (with options: `austrian')
 %% This is a generated file.
 %% 
-%% 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,
@@ -30,10 +31,10 @@
 %% The Current Maintainer of this work is Juergen Spitzmueller.
 %% 
 %% Please report errors to: Juergen Spitzmueller
-%%                          juergen at spitzmueller dot org
+%%                     via: https://github.com/jspitz/babel-german
 %% 
 \ProvidesLanguage{austrian}
-        [2016/11/02 v2.9 German support for babel (traditional orthography)]
+        [2018/03/29 v2.10 German support for babel (pre-1996 orthography)]
 \input germanb.ldf\relax
 %%
 %% \CharacterTable

Modified: trunk/Master/texmf-dist/tex/generic/babel-german/german.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-german/german.ldf	2018-03-30 21:15:38 UTC (rev 47191)
+++ trunk/Master/texmf-dist/tex/generic/babel-german/german.ldf	2018-03-30 21:16:21 UTC (rev 47192)
@@ -7,10 +7,11 @@
 %% germanb.dtx  (with options: `german')
 %% This is a generated file.
 %% 
-%% 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,
@@ -30,10 +31,10 @@
 %% The Current Maintainer of this work is Juergen Spitzmueller.
 %% 
 %% Please report errors to: Juergen Spitzmueller
-%%                          juergen at spitzmueller dot org
+%%                     via: https://github.com/jspitz/babel-german
 %% 
 \ProvidesLanguage{german}
-        [2016/11/02 v2.9 German support for babel (traditional orthography)]
+        [2018/03/29 v2.10 German support for babel (pre-1996 orthography)]
 \input germanb.ldf\relax
 %%
 %% \CharacterTable

Modified: trunk/Master/texmf-dist/tex/generic/babel-german/germanb.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-german/germanb.ldf	2018-03-30 21:15:38 UTC (rev 47191)
+++ trunk/Master/texmf-dist/tex/generic/babel-german/germanb.ldf	2018-03-30 21:16:21 UTC (rev 47192)
@@ -7,10 +7,11 @@
 %% germanb.dtx  (with options: `germanb')
 %% This is a generated file.
 %% 
-%% 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,
@@ -30,15 +31,18 @@
 %% The Current Maintainer of this work is Juergen Spitzmueller.
 %% 
 %% Please report errors to: Juergen Spitzmueller
-%%                          juergen at spitzmueller dot org
+%%                     via: https://github.com/jspitz/babel-german
 %% 
 \ProvidesLanguage{germanb}
-        [2016/11/02 v2.9 German support for babel (traditional orthography)]
-\def\bbl at tempa{germanb}
-\ifx\CurrentOption\bbl at tempa
+        [2018/03/29 v2.10 German support for babel (pre-1996 orthography)]
+\def\bbl at opt@german{german}
+\def\bbl at opt@germanb{germanb}
+\def\bbl at opt@austrian{austrian}
+\def\bbl at opt@swissgerman{swissgerman}
+\ifx\CurrentOption\bbl at opt@germanb
   \def\CurrentOption{german}
   \ifx\l at german\@undefined
-    \@nopatterns{German}
+    \@nopatterns{German (trad. orthography)}
     \adddialect\l at german0
   \fi
   \let\l at germanb\l at german
@@ -54,8 +58,7 @@
   \@nopatterns{German (trad. orthography)}
   \adddialect\l at german0
 \fi
-\def\bbl at tempa{austrian}
-\ifx\CurrentOption\bbl at tempa
+\ifx\CurrentOption\bbl at opt@austrian
   \ifx\l at german\@undefined
     \@nopatterns{German (trad. orthography), needed by Austrian (trad. orthography)}
     \adddialect\l at austrian0
@@ -63,8 +66,7 @@
     \adddialect\l at austrian\l at german
   \fi
 \fi
-\def\bbl at tempa{swissgerman}
-\ifx\CurrentOption\bbl at tempa
+\ifx\CurrentOption\bbl at opt@swissgerman
   \ifx\l at swissgerman\@undefined
     \ifx\l at german\@undefined
       \@nopatterns{Swiss German (trad. orthography) and German (trad. orthography)}
@@ -82,15 +84,15 @@
   \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}%
@@ -97,22 +99,19 @@
   \def\alsoname{siehe auch}%
   \def\proofname{Beweis}%
   \def\glossaryname{Glossar}%
-  }
-\def\bbl at tempa{german}
-\ifx\CurrentOption\bbl at tempa
+}
+\ifx\CurrentOption\bbl at opt@german
   \@namedef{captionsgerman}{%
     \@nameuse{@captionsgerman}%
   }
 \fi
-\def\bbl at tempa{austrian}
-\ifx\CurrentOption\bbl at tempa
+\ifx\CurrentOption\bbl at opt@austrian
   \@namedef{captionsaustrian}{%
     \@nameuse{@captionsgerman}%
     \def\enclname{Beilage(n)}%
   }
 \fi
-\def\bbl at tempa{swissgerman}
-\ifx\CurrentOption\bbl at tempa
+\ifx\CurrentOption\bbl at opt@swissgerman
   \@namedef{captionsswissgerman}{%
     \@nameuse{@captionsgerman}%
     \def\enclname{Beilage(n)}%
@@ -121,18 +120,15 @@
 \def\month at german{\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\bbl at tempa{german}
-\ifx\CurrentOption\bbl at tempa
+\ifx\CurrentOption\bbl at opt@german
   \def\dategerman{\def\today{\number\day.~\month at german
       \space\number\year}}
 \fi
-\def\bbl at tempa{swissgerman}
-\ifx\CurrentOption\bbl at tempa
+\ifx\CurrentOption\bbl at opt@swissgerman
   \def\dateswissgerman{\def\today{\number\day.~\month at german
       \space\number\year}}
 \fi
-\def\bbl at tempa{austrian}
-\ifx\CurrentOption\bbl at tempa
+\ifx\CurrentOption\bbl at opt@austrian
   \def\dateaustrian{\def\today{\number\day.~\ifnum1=\month
     J\"anner\else \month at german\fi \space\number\year}}
 \fi
@@ -141,8 +137,21 @@
   \languageshorthands{german}}
 \expandafter\addto\csname extras\CurrentOption\endcsname{%
   \bbl at activate{"}}
+\newif\iftoss\tossfalse
+\newif\ifbbl at toss\bbl at tossfalse
+\ifx\bbl at mod@swissgerman\@undefined\else
+  \@expandtwoargs\in@{,toss,}{,\bbl at mod@swissgerman,}
+  \ifin@
+    \tosstrue
+  \fi
+  \addto\extrasswissgerman{%
+    \iftoss\bbl at tosstrue\else\bbl at tossfalse\fi}
+\fi
 \expandafter\addto\csname noextras\CurrentOption\endcsname{%
   \bbl at deactivate{"}}
+\ifx\CurrentOption\bbl at opt@swissgerman
+  \addto\noextrasswissgerman{\bbl at tossfalse}
+\fi
 \expandafter\addto\csname extras\CurrentOption\endcsname{%
   \babel at savevariable{\lccode25}%
   \lccode25=25}
@@ -157,8 +166,13 @@
   \bbl at nonfrenchspacing}
 \begingroup \catcode`\"12
 \def\x{\endgroup
+  \def\dq{"}
   \def\@SS{\mathchar"7019 }
-  \def\dq{"}}
+  \def\bbl at ss{\ifbbl at toss ss\else\textormath{\ss}{\@SS{}}\fi}
+  \def\bbl at SS{SS}
+  \def\bbl at sz{\ifbbl at toss sz\else\textormath{\ss}{\@SS{}}\fi}
+  \def\bbl at SZ{SZ}
+}
 \x
 \declare at shorthand{german}{"a}{\textormath{\"{a}\allowhyphens}{\ddot a}}
 \declare at shorthand{german}{"o}{\textormath{\"{o}\allowhyphens}{\ddot o}}
@@ -171,10 +185,10 @@
 \declare at shorthand{german}{"i}{\textormath{\"{\i}}%
                               {\ddot\imath}}
 \declare at shorthand{german}{"I}{\textormath{\"{I}}{\ddot I}}
-\declare at shorthand{german}{"s}{\textormath{\ss}{\@SS{}}}
-\declare at shorthand{german}{"S}{\SS}
-\declare at shorthand{german}{"z}{\textormath{\ss}{\@SS{}}}
-\declare at shorthand{german}{"Z}{SZ}
+\declare at shorthand{german}{"s}{\bbl at ss}
+\declare at shorthand{german}{"S}{\bbl at SS}
+\declare at shorthand{german}{"z}{\bbl at sz}
+\declare at shorthand{german}{"Z}{\bbl at SZ}
 \declare at shorthand{german}{"`}{\glqq}
 \declare at shorthand{german}{"'}{\grqq}
 \declare at shorthand{german}{"<}{\flqq}

Modified: trunk/Master/texmf-dist/tex/generic/babel-german/naustrian.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-german/naustrian.ldf	2018-03-30 21:15:38 UTC (rev 47191)
+++ trunk/Master/texmf-dist/tex/generic/babel-german/naustrian.ldf	2018-03-30 21:16:21 UTC (rev 47192)
@@ -4,13 +4,14 @@
 %%
 %% The original source files were:
 %%
-%% ngermanb.dtx  (with options: `austrian')
+%% ngermanb.dtx  (with options: `naustrian')
 %% This is a generated file.
 %% 
-%% 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,
@@ -30,10 +31,10 @@
 %% The Current Maintainer of this work is Juergen Spitzmueller.
 %% 
 %% Please report errors to: Juergen Spitzmueller
-%%                          juergen at spitzmueller dot org
+%%                     via: https://github.com/jspitz/babel-german
 %% 
 \ProvidesLanguage{naustrian}
-        [2016/11/02 v2.9 German support for babel (new orthography)]
+        [2018/03/29 v2.10 German support for babel (post-1996 orthography)]
 \input ngermanb.ldf\relax
 %%
 %% \CharacterTable

Modified: trunk/Master/texmf-dist/tex/generic/babel-german/ngerman.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-german/ngerman.ldf	2018-03-30 21:15:38 UTC (rev 47191)
+++ trunk/Master/texmf-dist/tex/generic/babel-german/ngerman.ldf	2018-03-30 21:16:21 UTC (rev 47192)
@@ -4,13 +4,14 @@
 %%
 %% The original source files were:
 %%
-%% ngermanb.dtx  (with options: `german')
+%% ngermanb.dtx  (with options: `ngerman')
 %% This is a generated file.
 %% 
-%% 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,
@@ -30,10 +31,10 @@
 %% The Current Maintainer of this work is Juergen Spitzmueller.
 %% 
 %% Please report errors to: Juergen Spitzmueller
-%%                          juergen at spitzmueller dot org
+%%                     via: https://github.com/jspitz/babel-german
 %% 
 \ProvidesLanguage{ngerman}
-        [2016/11/02 v2.9 German support for babel (new orthography)]
+        [2018/03/29 v2.10 German support for babel (post-1996 orthography)]
 \input ngermanb.ldf\relax
 %%
 %% \CharacterTable

Modified: trunk/Master/texmf-dist/tex/generic/babel-german/ngermanb.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-german/ngermanb.ldf	2018-03-30 21:15:38 UTC (rev 47191)
+++ trunk/Master/texmf-dist/tex/generic/babel-german/ngermanb.ldf	2018-03-30 21:16:21 UTC (rev 47192)
@@ -4,13 +4,14 @@
 %%
 %% The original source files were:
 %%
-%% ngermanb.dtx  (with options: `germanb')
+%% ngermanb.dtx  (with options: `ngermanb')
 %% This is a generated file.
 %% 
-%% 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,
@@ -30,12 +31,15 @@
 %% The Current Maintainer of this work is Juergen Spitzmueller.
 %% 
 %% Please report errors to: Juergen Spitzmueller
-%%                          juergen at spitzmueller dot org
+%%                     via: https://github.com/jspitz/babel-german
 %% 
 \ProvidesLanguage{ngermanb}
-        [2016/11/02 v2.9 German support for babel (new orthography)]
-\def\bbl at tempa{ngermanb}
-\ifx\CurrentOption\bbl at tempa
+        [2018/03/29 v2.10 German support for babel (post-1996 orthography)]
+\def\bbl at opt@ngerman{ngerman}
+\def\bbl at opt@ngermanb{ngermanb}
+\def\bbl at opt@naustrian{naustrian}
+\def\bbl at opt@nswissgerman{nswissgerman}
+\ifx\CurrentOption\bbl at opt@ngermanb
   \def\CurrentOption{ngerman}
 \fi
 \LdfInit\CurrentOption{captions\CurrentOption}
@@ -43,8 +47,7 @@
   \@nopatterns{German (new orthography)}
   \adddialect\l at ngerman0
 \fi
-\def\bbl at tempa{naustrian}
-\ifx\CurrentOption\bbl at tempa
+\ifx\CurrentOption\bbl at opt@naustrian
   \ifx\l at ngerman\@undefined
     \@nopatterns{German (new orthography), needed by Austrian (new orthography)}
     \adddialect\l at naustrian0
@@ -52,8 +55,7 @@
     \adddialect\l at naustrian\l at ngerman
   \fi
 \fi
-\def\bbl at tempa{nswissgerman}
-\ifx\CurrentOption\bbl at tempa
+\ifx\CurrentOption\bbl at opt@nswissgerman
   \ifx\l at ngerman\@undefined
     \@nopatterns{German (new orthography), needed by Swiss German (new orthography)}
     \adddialect\l at nswissgerman0
@@ -68,15 +70,15 @@
   \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}%
@@ -83,22 +85,19 @@
   \def\alsoname{siehe auch}%
   \def\proofname{Beweis}%
   \def\glossaryname{Glossar}%
-  }
-\def\bbl at tempa{ngerman}
-\ifx\CurrentOption\bbl at tempa
+}
+\ifx\CurrentOption\bbl at opt@ngerman
   \@namedef{captionsngerman}{%
     \@nameuse{@captionsngerman}%
   }
 \fi
-\def\bbl at tempa{naustrian}
-\ifx\CurrentOption\bbl at tempa
+\ifx\CurrentOption\bbl at opt@naustrian
   \@namedef{captionsnaustrian}{%
     \@nameuse{@captionsngerman}%
     \def\enclname{Beilage(n)}%
   }
 \fi
-\def\bbl at tempa{nswissgerman}
-\ifx\CurrentOption\bbl at tempa
+\ifx\CurrentOption\bbl at opt@nswissgerman
   \@namedef{captionsnswissgerman}{%
     \@nameuse{@captionsngerman}%
     \def\enclname{Beilage(n)}%
@@ -107,28 +106,39 @@
 \def\month at 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\bbl at tempa{ngerman}
-\ifx\CurrentOption\bbl at tempa
+\ifx\CurrentOption\bbl at opt@ngerman
   \def\datengerman{\def\today{\number\day.~\month at ngerman
       \space\number\year}}
 \fi
-\def\bbl at tempa{nswissgerman}
-\ifx\CurrentOption\bbl at tempa
+\ifx\CurrentOption\bbl at opt@nswissgerman
   \def\datenswissgerman{\def\today{\number\day.~\month at ngerman
       \space\number\year}}
 \fi
-\def\bbl at tempa{naustrian}
-\ifx\CurrentOption\bbl at tempa
+\ifx\CurrentOption\bbl at opt@naustrian
   \def\datenaustrian{\def\today{\number\day.~\ifnum1=\month
     J\"anner\else \month at ngerman\fi \space\number\year}}
 \fi
 \initiate at active@char{"}
 \@namedef{extras\CurrentOption}{%
-  \languageshorthands{ngerman}}
+  \languageshorthands{ngerman}%
+}
 \expandafter\addto\csname extras\CurrentOption\endcsname{%
   \bbl at activate{"}}
+\newif\ifntoss\ntossfalse
+\newif\ifbbl at ntoss\bbl at ntossfalse
+\ifx\bbl at mod@nswissgerman\@undefined\else
+  \@expandtwoargs\in@{,toss,}{,\bbl at mod@nswissgerman,}
+  \ifin@
+    \ntosstrue
+  \fi
+  \addto\extrasnswissgerman{%
+    \ifntoss\bbl at ntosstrue\else\bbl at ntossfalse\fi}
+\fi
 \expandafter\addto\csname noextras\CurrentOption\endcsname{%
   \bbl at deactivate{"}}
+\ifx\CurrentOption\bbl at opt@nswissgerman
+  \addto\noextrasnswissgerman{\bbl at ntossfalse}
+\fi
 \expandafter\addto\csname extras\CurrentOption\endcsname{%
   \babel at savevariable{\lccode25}%
   \lccode25=25}
@@ -143,8 +153,13 @@
   \bbl at nonfrenchspacing}
 \begingroup \catcode`\"12
 \def\x{\endgroup
+  \def\dq{"}
   \def\@SS{\mathchar"7019 }
-  \def\dq{"}}
+  \def\bbl at ss{\ifbbl at ntoss ss\else\textormath{\ss}{\@SS{}}\fi}
+  \def\bbl at SS{SS}
+  \def\bbl at sz{\ifbbl at ntoss sz\else\textormath{\ss}{\@SS{}}\fi}
+  \def\bbl at SZ{SZ}
+}
 \x
 \declare at shorthand{ngerman}{"a}{\textormath{\"{a}\allowhyphens}{\ddot a}}
 \declare at shorthand{ngerman}{"o}{\textormath{\"{o}\allowhyphens}{\ddot o}}
@@ -157,10 +172,10 @@
 \declare at shorthand{ngerman}{"i}{\textormath{\"{\i}}%
                               {\ddot\imath}}
 \declare at shorthand{ngerman}{"I}{\textormath{\"{I}}{\ddot I}}
-\declare at shorthand{ngerman}{"s}{\textormath{\ss}{\@SS{}}}
-\declare at shorthand{ngerman}{"S}{\SS}
-\declare at shorthand{ngerman}{"z}{\textormath{\ss}{\@SS{}}}
-\declare at shorthand{ngerman}{"Z}{SZ}
+\declare at shorthand{ngerman}{"s}{\bbl at ss}
+\declare at shorthand{ngerman}{"S}{\bbl at SS}
+\declare at shorthand{ngerman}{"z}{\bbl at sz}
+\declare at shorthand{ngerman}{"Z}{\bbl at SZ}
 \declare at shorthand{ngerman}{"`}{\glqq}
 \declare at shorthand{ngerman}{"'}{\grqq}
 \declare at shorthand{ngerman}{"<}{\flqq}

Modified: trunk/Master/texmf-dist/tex/generic/babel-german/nswissgerman.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-german/nswissgerman.ldf	2018-03-30 21:15:38 UTC (rev 47191)
+++ trunk/Master/texmf-dist/tex/generic/babel-german/nswissgerman.ldf	2018-03-30 21:16:21 UTC (rev 47192)
@@ -4,13 +4,14 @@
 %%
 %% The original source files were:
 %%
-%% ngermanb.dtx  (with options: `swiss')
+%% ngermanb.dtx  (with options: `nswissgerman')
 %% This is a generated file.
 %% 
-%% 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,
@@ -30,10 +31,10 @@
 %% The Current Maintainer of this work is Juergen Spitzmueller.
 %% 
 %% Please report errors to: Juergen Spitzmueller
-%%                          juergen at spitzmueller dot org
+%%                     via: https://github.com/jspitz/babel-german
 %% 
 \ProvidesLanguage{nswissgerman}
-        [2016/11/02 v2.9 German support for babel (new orthography)]
+        [2018/03/29 v2.10 German support for babel (post-1996 orthography)]
 \input ngermanb.ldf\relax
 %%
 %% \CharacterTable

Modified: trunk/Master/texmf-dist/tex/generic/babel-german/swissgerman.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel-german/swissgerman.ldf	2018-03-30 21:15:38 UTC (rev 47191)
+++ trunk/Master/texmf-dist/tex/generic/babel-german/swissgerman.ldf	2018-03-30 21:16:21 UTC (rev 47192)
@@ -4,13 +4,14 @@
 %%
 %% The original source files were:
 %%
-%% germanb.dtx  (with options: `swiss')
+%% germanb.dtx  (with options: `swissgerman')
 %% This is a generated file.
 %% 
-%% 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,
@@ -30,10 +31,10 @@
 %% The Current Maintainer of this work is Juergen Spitzmueller.
 %% 
 %% Please report errors to: Juergen Spitzmueller
-%%                          juergen at spitzmueller dot org
+%%                     via: https://github.com/jspitz/babel-german
 %% 
 \ProvidesLanguage{swissgerman}
-        [2016/11/02 v2.9 German support for babel (traditional orthography)]
+        [2018/03/29 v2.10 German support for babel (pre-1996 orthography)]
 \input germanb.ldf\relax
 %%
 %% \CharacterTable



More information about the tex-live-commits mailing list