[latex3-commits] [git/LaTeX3-latex3-latex2e] utf-8-protected: bump helpers/german.sty from 2.5b to experimental 2.5f (ctan has had 2.5e since 1998) (a0b9baef)

David Carlisle d.p.carlisle at gmail.com
Sun Feb 20 19:16:06 CET 2022


Repository : https://github.com/latex3/latex2e
On branch  : utf-8-protected
Link       : https://github.com/latex3/latex2e/commit/a0b9baef0a197a22a57cc88dfaa25cbcf3997bdd

>---------------------------------------------------------------

commit a0b9baef0a197a22a57cc88dfaa25cbcf3997bdd
Author: David Carlisle <d.p.carlisle at gmail.com>
Date:   Sun Feb 20 18:16:06 2022 +0000

    bump helpers/german.sty from 2.5b to experimental 2.5f (ctan has had 2.5e since 1998)


>---------------------------------------------------------------

a0b9baef0a197a22a57cc88dfaa25cbcf3997bdd
 base/testfiles/helpers/german.sty | 394 ++++++++++++++++++++++----------------
 1 file changed, 227 insertions(+), 167 deletions(-)

diff --git a/base/testfiles/helpers/german.sty b/base/testfiles/helpers/german.sty
index f30b5c4a..7fa727e1 100644
--- a/base/testfiles/helpers/german.sty
+++ b/base/testfiles/helpers/german.sty
@@ -1,85 +1,84 @@
 %%
-%% This is file `german.sty', generated 
-%% on <1995/1/20> with the docstrip utility (2.2i).
+%% This is file `german.sty',
+%% generated with the docstrip utility.
 %%
 %% The original source files were:
 %%
-%% german.dtx 
+%% german.dtx  (with options: `old')
 %% 
-%% This file is part of the GERMAN.STY package, 
-%% a PACKAGE for writing german texts with 
-%% plainTeX or LaTeX version 2e/2.09. 
+%% This file is part of the `german' collection,
+%% providing German language support for
+%% plain TeX or LaTeX version 2e/2.09.
 %% 
-%% -- Copyright 1995 by B.Raichle and DANTE e.V. All rights reserved. -- 
+%% ----------- Copyright (C) 1998, 1999 by B.Raichle ----------
+%% ------------------- All rights reserved. -------------------
 %% Maintained by Bernd Raichle (Uni Stuttgart),
 %% using ideas by H.Partl (TU Wien, Uni.f.Bodenkultur Wien)
 %% and many other people.
 %% 
 %% 
-%% Copying of this file is authorized only if either 
-%% (1) you make absolutely no changes to your copy, including name, or 
-%% (2) if you do make changes, you name it something other than 
-%% german.dtx, german.sty, german.tex, or german.doc. 
-%% This restriction helps ensure that all styles developed for 
-%% DANTE e.V. (the users group of german speaking TeX users) 
-%% remain identical. 
+%% IMPORTANT NOTICE:
 %% 
-%% You are NOT ALLOWED to distribute this file alone. You are NOT 
-%% ALLOWED to take money for the distribution or use of either this 
-%% file or a changed version, except for some nominal charge for 
-%% copying etc. 
+%% This program can be redistributed and/or modified under the terms
+%% of the LaTeX Project Public License Distributed from CTAN
+%% archives in directory macros/latex/base/lppl.txt; either
+%% version 1 of the License, or any later version.
 %% 
-%% Error Reports in case of UNCHANGED versions to 
 %% 
-%% Bernd Raichle 
-%% Stettener Str. 73 
-%% 73732 Esslingen 
-%% Federal Republic of Germany 
-%% Email: raichle at Informatik.Uni-Stuttgart.DE 
+%% Error Reports (in case of UNCHANGED versions) should be sent to:
 %% 
-%% or 
-%% DANTE, Deutschsprachige Anwendervereinigung TeX e.V. 
-%% Koordinator ``german.sty'' 
-%% Postfach 10 18 40 
-%% 69008 Heidelberg 
-%% Federal Republic of Germany 
-%% Email: german at dante.de 
+%%   Bernd Raichle <raichle at Informatik.Uni-Stuttgart.DE>
 %% 
-%%
-%% This is GERMAN.DTX/GERMAN.STY, Version 2.5b, 20. Jan 1995
-%%
-%% Copyright (C) 1987-1990 by H.Partl
-%% Copyright (C) 1991-1995 by B.Raichle and DANTE e.V.
-%%                         All rights reserved.
-%%
-%% Please read the documentation file `germdoc.tex' for more
-%% information of how to use this macro file and how to install
-%% the pattern files necessary for german hyphenation.
-%%
-\expandafter\ifx\csname grmn at VersionNo\endcsname\relax \else
-\ifdim \number\grmn at VersionNo < 9502\relax
-  \mathchardef\grmn at VersionNo=9502\relax % 2/95 = v2.5b
+\expandafter\ifx\csname grmn\string @VersionNo\endcsname\relax
 \else
-  \germanTeX
-  \expandafter\expandafter\expandafter\endinput%
-\fi\fi
-\message{Package `german', Version 2.5b of 95/01/20.}
+  \ifnum\number\csname grmn\string @VersionNo\endcsname<9806\relax
+  \else \germanTeX \expandafter\expandafter\expandafter\endinput
+  \fi\fi
+\expandafter\mathchardef\csname grmn\string @VersionNo\endcsname
+=9806\relax % = v2.5f
+\message{v2.5f 1998-07-08}
 \begingroup\expandafter\expandafter\expandafter\endgroup
 \expandafter\ifx\csname ProvidesPackage\endcsname\relax\else
-  \ProvidesPackage{german}[1995/01/20 v2.5b %
-     Package for writing german texts (br)]
+  \ProvidesPackage{german}[1998/07/08 v2.5f %
+     Support for writing german texts (br)]
 \fi
 \chardef\atcode=\catcode`\@
 \catcode`\@=11 % \makeatletter
 \expandafter\ifx\csname @ifundefined\endcsname\relax
   \def\@ifundefined#1{%
     \expandafter\ifx\csname #1\endcsname\relax
-      \expandafter\grmn at first\else\expandafter\grmn at second\fi}
+      \expandafter\grmn at dqfirst\else\expandafter\grmn at dqsecond\fi}
 \fi
 \def\grmn at dqfirst#1#2{#1}
 \def\grmn at dqsecond#1#2{#2}
 \begingroup\expandafter\expandafter\expandafter\endgroup
-\expandafter\ifx\csname DeclareTextSymbol\endcsname\relax \else
+\expandafter\ifx\csname DeclareTextSymbol\endcsname\relax
+\@ifundefined{SS}{\def\SS{SS}}{}
+\else
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname ProvideTextCommandDefault\endcsname\relax
+  \immediate\write17{}
+  \immediate\write17{%
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
+  \immediate\write17{%
+!! Dies ist eine zu alte LaTeX2e-Version, die nicht}
+  \immediate\write17{%
+!! alle fuer german/ngerman notwendigen Deklarationen}
+  \immediate\write17{%
+!! zur Verfuegung stellt.  Dennoch koennen Sie diese}
+  \immediate\write17{%
+!! Pakete, eventuell mit kleinen Fehlern, verwenden.}
+  \immediate\write17{!!}
+  \immediate\write17{%
+!! Bitte installieren Sie eine neuere LaTeX2e-Version,}
+  \immediate\write17{%
+!! da zukuenftige Versionen der Pakete diese}
+  \immediate\write17{%
+!! LaTeX2e-Version nicht mehr unterstuetzen werden!}
+  \immediate\write17{%
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
+  \immediate\write17{}
+\fi
 \@ifundefined{UseTextSymbol}{%
   \def\UseTextSymbol#1#2{{\fontencoding{#1}\selectfont #2}}
 }{}
@@ -106,9 +105,16 @@
     \expandafter\def\csname\expandafter\string\csname
          #2\endcsname\string#1-\string#3\endcsname##1##2{#4}}%
 }{}
+\@ifundefined{OT1\string\ss}{%
+  \wlog{german: Re-declaration of \string\ss\space for OT1!}%
+  \DeclareTextSymbol{\ss}{OT1}{25}}{}
+\@ifundefined{OT1\string\i}{%
+  \wlog{german: Re-declaration of \string\i\space for OT1!}%
+  \DeclareTextSymbol{\i}{OT1}{16}}{}
 \ProvideTextCommandDefault{\"}{\UseTextAccent{OT1}{\"}}
 \ProvideTextCommandDefault{\ss}{\UseTextSymbol{OT1}\ss}
 \ProvideTextCommandDefault{\i}{\UseTextSymbol{OT1}\i}
+\ProvideTextCommandDefault{\SS}{SS}
 \@ifundefined{textquotedblleft}{%
   \ProvideTextCommandDefault{\textquotedblleft}{%
     \UseTextSymbol{OT1}\textquotedblleft}%
@@ -128,30 +134,24 @@
   \DeclareTextSymbol{\textquoteleft}{OT1}{`\`}%
   \DeclareTextSymbol{\textquoteleft}{T1}{`\`}%
 }{}
-\@ifundefined{textquoteright}{
+\@ifundefined{textquoteright}{%
   \ProvideTextCommandDefault{\textquoteright}{%
     \UseTextSymbol{OT1}\textquoteright}%
   \DeclareTextSymbol{\textquoteright}{OT1}{`\'}%
   \DeclareTextSymbol{\textquoteright}{T1}{`\'}%
 }{}
 \@ifundefined{quotesinglbase}{%
-  \DeclareTextSymbol{\quotesinglbase}{T1}{13}%
-}{}
+  \DeclareTextSymbol{\quotesinglbase}{T1}{13}}{}
 \@ifundefined{quotedblbase}{%
-  \DeclareTextSymbol{\quotedblbase}{T1}{18}%
-}{}
+  \DeclareTextSymbol{\quotedblbase}{T1}{18}}{}
 \@ifundefined{guillemotleft}{%
-  \DeclareTextSymbol{\guillemotleft}{T1}{19}%
-}{}
+  \DeclareTextSymbol{\guillemotleft}{T1}{19}}{}
 \@ifundefined{guillemotright}{%
-  \DeclareTextSymbol{\guillemotright}{T1}{20}%
-}{}
+  \DeclareTextSymbol{\guillemotright}{T1}{20}}{}
 \@ifundefined{guilsinglleft}{%
-  \DeclareTextSymbol{\guilsinglleft}{T1}{14}%
-}{}
+  \DeclareTextSymbol{\guilsinglleft}{T1}{14}}{}
 \@ifundefined{guilsinglright}{%
-  \DeclareTextSymbol{\guilsinglright}{T1}{15}%
-}{}
+  \DeclareTextSymbol{\guilsinglright}{T1}{15}}{}
 \fi
 \expandafter\let\expandafter\protect\csname protect\endcsname
 \def\allowhyphens{\penalty\@M \hskip\z at skip}
@@ -163,7 +163,7 @@
 \def\save at sf@q#1{{\ifhmode
   \edef\@SF{\spacefactor\the\spacefactor}\else
   \let\@SF\empty \fi \leavevmode #1\@SF}}
-\expandafter\ifx\csname grmn at U@D\endcsname\relax
+\expandafter\ifx\csname grmnU at D\endcsname\relax
   \csname newdimen\endcsname\grmnU at D
 \fi
 \def\newumlaut#1{{\grmnU at D 1ex%
@@ -180,9 +180,8 @@
 \def\mdqoff{\catcode`\"12\relax}
 \begingroup \mdqoff
 \def\x{\endgroup
-  \def\@UMLAUT{\"}%
   \def\@MATHUMLAUT{\ddot}% = \mathaccent"707F
-  \def\@SS{\mathchar"7019 }% TODO: correct?
+  \def\@MATHss{\mathord{\mathchar"7019}}% TODO: correct?
   \def\dq{"}}% TODO: or \textquotedbl?
 \x
 \begingroup
@@ -202,79 +201,109 @@
 \def\ck{\penalty\@M\discretionary{k-}{}{c}k\allowhyphens}
 \begingroup\expandafter\expandafter\expandafter\endgroup
 \expandafter\ifx\csname DeclareTextSymbol\endcsname\relax
-\def\@glqq{\save at sf@q{\set at low@box{''\/}\box\z@
-             \kern-.04em\allowhyphens}}
-\def\glqq{\protect\@glqq}
-\def\@grqq{\save at sf@q{\kern-.07em``\kern.07em}}% ('')
-\def\grqq{\protect\@grqq}
-\def\@glq{\save at sf@q{\set at low@box{'\/}\box\z@
-            \kern-.04em\allowhyphens}}
-\def\glq{\protect\@glq}
-\def\@grq{\save at sf@q{\kern-.0125em`\kern.07em}}
-\def\grq{\protect\@grq}
-\def\@flqq{\relax\ifmmode \ll \else \save at sf@q{\penalty\@M
-    \raise .2ex\hbox{$\scriptscriptstyle \ll $}\allowhyphens}\fi}
-\def\flqq{\protect\@flqq}
-\def\@frqq{\relax\ifmmode \gg \else \save at sf@q{\penalty\@M
-    \raise .2ex\hbox{$\scriptscriptstyle \gg $}\allowhyphens}\fi}
-\def\frqq{\protect\@frqq}
-\def\@flq{\relax\ifmmode <\else \save at sf@q{\penalty\@M
-    \raise .2ex\hbox{$\scriptscriptstyle <$}\allowhyphens}\fi}
-\def\flq{\protect\@flq}
-\def\@frq{\relax\ifmmode >\else \save at sf@q{\penalty\@M
-    \raise .2ex\hbox{$\scriptscriptstyle >$}\allowhyphens}\fi}
-\def\frq{\protect\@frq}
+\expandafter\def\csname glqq \endcsname{%
+  \save at sf@q{\set at low@box{''\/}\box\z@\kern-.04em\allowhyphens}}
+\edef\glqq{\noexpand\protect
+  \expandafter\noexpand\csname glqq \endcsname}
+\let\@glqq=\glqq
+\expandafter\def\csname grqq \endcsname{%
+  \save at sf@q{\kern-.07em``\kern.07em}}% ('')
+\edef\grqq{\noexpand\protect
+  \expandafter\noexpand\csname grqq \endcsname}
+\let\@grqq=\grqq
+\expandafter\def\csname glq \endcsname{%
+  \save at sf@q{\set at low@box{'\/}\box\z@\kern-.04em\allowhyphens}}
+\edef\glq{\noexpand\protect
+  \expandafter\noexpand\csname glq \endcsname}
+\let\@glq=\glq
+\expandafter\def\csname grq\endcsname{%
+  \save at sf@q{\kern-.0125em`\kern.07em}}
+\edef\grq{\noexpand\protect
+  \expandafter\noexpand\csname grq \endcsname}
+\let\@grq=\grq
+\expandafter\def\csname flqq \endcsname{%
+  \relax\ifmmode \mathrel{\ll}\else \save at sf@q{\penalty\@M
+    \raise .27ex\hbox{$\m at th\scriptscriptstyle \ll $}%
+    \allowhyphens}\fi}
+\edef\flqq{\noexpand\protect
+  \expandafter\noexpand\csname flqq \endcsname}
+\let\@flqq=\flqq
+\expandafter\def\csname frqq \endcsname{%
+  \relax\ifmmode \mathrel{\gg}\else \save at sf@q{\penalty\@M
+    \raise .27ex\hbox{$\m at th\scriptscriptstyle \gg $}%
+    \allowhyphens}\fi}
+\edef\frqq{\noexpand\protect
+  \expandafter\noexpand\csname frqq \endcsname}
+\let\@frqq=\frqq
+\expandafter\def\csname flq \endcsname{%
+  \relax\ifmmode <\else \save at sf@q{\penalty\@M
+    \raise .27ex\hbox{$\m at th\scriptscriptstyle <$}\allowhyphens}\fi}
+\edef\flq{\noexpand\protect
+  \expandafter\noexpand\csname flq \endcsname}
+\let\@flq=\flq
+\expandafter\def\csname frq \endcsname{%
+  \relax\ifmmode >\else \save at sf@q{\penalty\@M
+    \raise .27ex\hbox{$\m at th\scriptscriptstyle >$}\allowhyphens}\fi}
+\edef\frq{\noexpand\protect
+  \expandafter\noexpand\csname frq \endcsname}
+\let\@frq=\frq
 \else
 \DeclareRobustCommand{\glqq}{%
-  \ifmmode\mbox{\quotedblbase}\else\quotedblbase\fi}
+  \ifmmode\hbox{\quotedblbase}\else\quotedblbase\fi}
 \ProvideTextCommandDefault{\quotedblbase}{%
   \UseTextSymbol{OT1}\quotedblbase}
 \ProvideTextCommand{\quotedblbase}{OT1}{%
   \save at sf@q{\set at low@box{\textquotedblright\/}\box\z@
     \kern-.04em\allowhyphens}}
-\DeclareRobustCommand{\grqq}{%
+\ProvideTextCommand{\grqq}{T1}{\textquotedblleft}
+\ProvideTextCommand{\grqq}{OT1}{%
   \save at sf@q{\kern-.07em%
-  \ifmmode\mbox{\textquotedblleft}\else\textquotedblleft\fi
+  \ifmmode\hbox{\textquotedblleft}\else\textquotedblleft\fi
   \kern.07em\relax}}
+\ProvideTextCommandDefault{\grqq}{\UseTextSymbol{OT1}\grqq}
 \DeclareRobustCommand{\glq}{%
-  \ifmmode\mbox{\quotesinglbase}\else\quotesinglbase\fi}
+  \ifmmode\hbox{\quotesinglbase}\else\quotesinglbase\fi}
 \ProvideTextCommandDefault{\quotesinglbase}{%
   \UseTextSymbol{OT1}\quotesinglbase}
 \ProvideTextCommand{\quotesinglbase}{OT1}{%
   \save at sf@q{\set at low@box{\textquoteright\/}\box\z@
     \kern-.04em\allowhyphens}}
-\DeclareRobustCommand{\grq}{%
+\ProvideTextCommand{\grq}{T1}{\textquoteleft}
+\ProvideTextCommand{\grq}{OT1}{%
   \save at sf@q{\kern-.0125em%
-  \ifmmode\mbox{\textquoteleft}\else\textquoteleft\fi
+  \ifmmode\hbox{\textquoteleft}\else\textquoteleft\fi
   \kern.07em\relax}}
+\ProvideTextCommandDefault{\grq}{\UseTextSymbol{OT1}\grq}
 \DeclareRobustCommand{\flqq}{%
-  \ifmmode\mbox{\guillemotleft}\else\guillemotleft\fi}
+  \ifmmode\mathrel{\hbox{\guillemotleft}}\else\guillemotleft\fi}
 \ProvideTextCommandDefault{\guillemotleft}{%
   \UseTextSymbol{OT1}\guillemotleft}
 \ProvideTextCommand{\guillemotleft}{OT1}{%
   \ifmmode \ll \else \save at sf@q{\penalty\@M
-    \raise .2ex\hbox{$\scriptscriptstyle \ll $}\allowhyphens}\fi}
+    \raise .27ex\hbox{$\m at th\scriptscriptstyle \ll $}%
+    \allowhyphens}\fi}
 \DeclareRobustCommand{\frqq}{%
-  \ifmmode\mbox{\guillemotright}\else\guillemotright\fi}
+  \ifmmode\mathrel{\hbox{\guillemotright}}\else\guillemotright\fi}
 \ProvideTextCommandDefault{\guillemotright}{%
   \UseTextSymbol{OT1}\guillemotright}
 \ProvideTextCommand{\guillemotright}{OT1}{%
   \ifmmode \gg \else \save at sf@q{\penalty\@M
-    \raise .2ex\hbox{$\scriptscriptstyle \gg $}\allowhyphens}\fi}
+    \raise .27ex\hbox{$\m at th\scriptscriptstyle \gg $}%
+    \allowhyphens}\fi}
 \DeclareRobustCommand{\flq}{%
-  \ifmmode\mbox{\guilsinglleft}\else\guilsinglleft\fi}
+  \ifmmode\mathbin{\hbox{\guilsinglleft}}\else\guilsinglleft\fi}
 \ProvideTextCommandDefault{\guilsinglleft}{%
   \UseTextSymbol{OT1}\guilsinglleft}
 \ProvideTextCommand{\guilsinglleft}{OT1}{%
   \ifmmode <\else \save at sf@q{\penalty\@M
-    \raise .2ex\hbox{$\scriptscriptstyle <$}\allowhyphens}\fi}
+    \raise .27ex\hbox{$\m at th\scriptscriptstyle <$}\allowhyphens}\fi}
 \DeclareRobustCommand{\frq}{%
-  \ifmmode\mbox{\guilsinglright}\else\guilsinglright\fi}
+  \ifmmode\mathbin{\hbox{\guilsinglright}}\else\guilsinglright\fi}
 \ProvideTextCommandDefault{\guilsinglright}{%
   \UseTextSymbol{OT1}\guilsinglright}
 \ProvideTextCommand{\guilsinglright}{OT1}{%
   \ifmmode >\else \save at sf@q{\penalty\@M
-    \raise .2ex\hbox{$\scriptscriptstyle >$}\allowhyphens}\fi}
+    \raise .27ex\hbox{$\m at th\scriptscriptstyle >$}\allowhyphens}\fi}
 \fi
 \begingroup\expandafter\expandafter\expandafter\endgroup
 \expandafter\ifx\csname DeclareTextSymbol\endcsname\relax
@@ -311,19 +340,19 @@
 \fi
 \fi
 \def\dqwarninglevel#1{\chardef\grmn at dqwarninglevel=#1\relax}
-\dqwarninglevel{1}
+ \dqwarninglevel{1}
 \expandafter\ifx\csname on at line\endcsname\relax
-  \ifx\inputlineno\undefined \let\on at line\@empty
+  \ifx\inputlineno\undefined \def\on at line{}%
   \else
-    \ifnum\inputlineno<\z@ \let\on at line\@empty
-    \else \def\on at line{ on input line \the\inputlineno}
+    \ifnum\inputlineno<\z@ \def\on at line{}%
+    \else \def\on at line{ on input line \the\inputlineno}%
 \fi\fi\fi
 \def\grmn at dq@error#1{%
   \errhelp{Use `` for a simple double quote character.}%
   \errmessage{german: The command \dq\string#1 is undefined}}
 \def\grmn at dq@warning#1{%
-   \immediate\write\sixt@@n{german: %
-       \dq\string#1 is possibly wrong\on at line.}}
+  \immediate\write\sixt@@n
+    {german: \dq\string#1 is possibly wrong\on at line.}}
 \def\grmn at dq@macro#1#2{%
   \expandafter#1\csname @grmn@@\string #2dq\endcsname}
 \def\def at dqmacro#1#2#3{%
@@ -335,7 +364,7 @@
     \grmn at dq@macro\noexpand{#1}\grmn at dq@macro\noexpand{#2}}%
   \x}
 \def\grmn at dqredefcheck#1{}
-\def\@active at dq#1{%
+\protected\def\@active at dq#1{%
   \grmn at dq@macro\ifx{#1}\relax
     \ifnum\grmn at dqwarninglevel>\z@ \grmn at dq@error{#1}\fi
     \expandafter\grmn@@normal at dq
@@ -353,7 +382,7 @@
 \begingroup
   \catcode`\(=1\lccode`\(=`\{\catcode`\{=12
   \catcode`\)=2\lccode`\)=`\}\catcode`\}=12
-  \catcode`\ =11\relax% <= do not delete these and the
+  \catcode`\ =11\relax% <= do not delete this and the
 \lowercase(\endgroup% <=== following percent characters!
 \def\grmn@@@active at dq#1(%
 \expandafter\grmn@@@@active at dq\expandafter{\string#1})%
@@ -367,7 +396,7 @@
 \def\dq at prtct #1{#2}(\string\dq at prtct{\string#2})%
 \def\active at dq #1{#2}(\grmn at active@@dq(#2))%
 )%
-\def\active at dq#1#{\grmn at active@@dq}%
+\def\active at dq#1#{\@active at dq}%
 \def\grmn at active@@dq#1{%
   \csname grmn at dq\ifmmode second\else first\fi
     \expandafter\expandafter\expandafter\expandafter
@@ -379,24 +408,29 @@
 \let at dqmacro{A}{0}\let at dqmacro{B}{0}\let at dqmacro{C}{0}
 \let at dqmacro{D}{0}\let at dqmacro{E}{0}\let at dqmacro{F}{0}
 \def at dqmacro{}{\dq{}}{\dq{}}
-\def at dqmacro{a}{\@UMLAUT a}{\@MATHUMLAUT a}
-\def at dqmacro{o}{\@UMLAUT o}{\@MATHUMLAUT o}
-\def at dqmacro{u}{\@UMLAUT u}{\@MATHUMLAUT u}
-\def at dqmacro{A}{\@UMLAUT A}{\@MATHUMLAUT A}
-\def at dqmacro{O}{\@UMLAUT O}{\@MATHUMLAUT O}
-\def at dqmacro{U}{\@UMLAUT U}{\@MATHUMLAUT U}
-\def at dqmacro{s}{\ss{}}{\@SS{}}
-\def at dqmacro{S}{SS}{SS}
+\def at dqmacro{a}{\"a}{\@MATHUMLAUT a}
+\def at dqmacro{o}{\"o}{\@MATHUMLAUT o}
+\def at dqmacro{u}{\"u}{\@MATHUMLAUT u}
+\def at dqmacro{A}{\"A}{\@MATHUMLAUT A}
+\def at dqmacro{O}{\"O}{\@MATHUMLAUT O}
+\def at dqmacro{U}{\"U}{\@MATHUMLAUT U}
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname DeclareTextSymbol\endcsname\relax
+  \def at dqmacro{s}{\ss{}}{\@MATHss}
+\else
+  \def at dqmacro{s}{\ss}{\@MATHss}
+\fi
+\def at dqmacro{S}{\SS}{\SS}
 \let at dqmacro{z}{s}
 \def at dqmacro{Z}{SZ}{SZ}
 \def at dqmacro{e}{\highumlaut e}{\@MATHUMLAUT e}
 \def at dqmacro{E}{\highumlaut E}{\@MATHUMLAUT E}
 \def at dqmacro{i}{\highumlaut{\i}}{\@MATHUMLAUT\imath}
 \def at dqmacro{I}{\highumlaut I}{\@MATHUMLAUT I}
-\def at dqmacro{`}{\glqq{}}{\glqq{}}
-\def at dqmacro{'}{\grqq{}}{\grqq{}}
-\def at dqmacro{<}{\flqq{}}{\flqq{}}
-\def at dqmacro{>}{\frqq{}}{\frqq{}}
+\def at dqmacro{`}{\glqq}{\glqq}
+\def at dqmacro{'}{\grqq}{\grqq}
+\def at dqmacro{<}{\flqq}{\flqq}
+\def at dqmacro{>}{\frqq}{\frqq}
 \def at dqmacro{-}{\penalty\@M\-\allowhyphens}%
                {\penalty\@M\-\allowhyphens}
 \def at dqmacro{|}{\penalty\@M\discretionary{-}{}{\kern.03em}%
@@ -410,8 +444,6 @@
   \discretionary{#2-}{}{#1}\allowhyphens}
 \def at dqmacro{c}{\grmn at dqdisc ck}{c}
 \def at dqmacro{C}{\grmn at dqdisc CK}{C}
-\def at dqmacro{f}{\grmn at dqdisc f{ff}}{f}
-\def at dqmacro{F}{\grmn at dqdisc F{FF}}{F}
 \def at dqmacro{l}{\grmn at dqdisc l{ll}}{l}
 \def at dqmacro{L}{\grmn at dqdisc L{LL}}{L}
 \def at dqmacro{m}{\grmn at dqdisc m{mm}}{m}
@@ -424,9 +456,18 @@
 \def at dqmacro{R}{\grmn at dqdisc R{RR}}{R}
 \def at dqmacro{t}{\grmn at dqdisc t{tt}}{t}
 \def at dqmacro{T}{\grmn at dqdisc T{TT}}{T}
+\def at dqmacro{F}{\grmn at dqdisc F{FF}}{F}
+\def at dqmacro{f}{\grmn at dqdiscff}{f}
+\def\grmn at dqdiscff{\penalty\@M
+  \ifnum\grmn at dqwarninglevel>\@ne \grmn at dq@warning f\fi
+  \afterassignment\grmn at dqinsertff \let\grmn at dqnextff= }
+\def\grmn at dqinsertff{%
+  \if f\grmn at dqnextff
+    \expandafter\grmn at dqfirst\else\expandafter\grmn at dqsecond\fi
+  {\relax\discretionary{ff-}{f}{ff}\allowhyphens}{f\grmn at dqnextff}}
+\let\grmn at dqnextff=f
 \def\grmn at dqredefcheck#1{%
-  \immediate\write\m at ne{german: %
-    \grmn at dq@macro\ifx{#1}\relax \else re\fi
+  \wlog{german: \grmn at dq@macro\ifx{#1}\relax \else re\fi
     defining dq-command for `\string#1'\on at line.}}%
 \def\month at german{\ifcase\month \or
   Januar\or Februar\or M\"arz\or April\or Mai\or Juni\or
@@ -514,73 +555,92 @@
   \def\pagename{Page}%
   \def\seename{voir}%
   \def\alsoname{voir aussi}}%
-\let\extrasUSenglish=\relax \let\noextrasUSenglish=\empty
-\let\extrasenglish=\relax \let\noextrasenglish=\empty
-\def\extrasgerman{\frenchspacing
+\def\extrasUSenglish{}
+\let\noextrasUSenglish=\extrasUSenglish
+\let\extrasenglish=\extrasUSenglish
+\let\noextrasenglish=\extrasenglish
+\def\extrasgerman{\frenchspacing \uchyph\@ne
   \lefthyphenmin\tw@ \righthyphenmin\tw@}
 \def\noextrasgerman{%
   \ifnum\sfcode`\.=\@m \else \noexpand\nonfrenchspacing \fi
-  \lefthyphenmin\the\lefthyphenmin \righthyphenmin\the\righthyphenmin}
+  \uchyph\the\uchyph\relax
+  \lefthyphenmin\the\lefthyphenmin
+  \righthyphenmin\the\righthyphenmin}
 \let\extrasaustrian=\extrasgerman
 \let\noextrasaustrian=\noextrasgerman
 \def\extrasfrench{\frenchspacing}
 \def\noextrasfrench{%
   \ifnum\sfcode`\.=\@m \else \noexpand\nonfrenchspacing \fi}
-\expandafter\ifx\csname l at USenglish\endcsname\relax
-  \expandafter\ifx\csname l at english\endcsname\relax
-    \chardef\l at USenglish=255
-  \else
-    \chardef\l at USenglish=\l at english
-  \fi
+\@ifundefined{l at USenglish}{%
+  \@ifundefined{l at english}{\chardef\l at USenglish=255 }%
+                          {\chardef\l at USenglish=\l at english}%
   \wlog{german -- \string\language\space number for USenglish %
-        undefined, default \number\l at USenglish\space used.}
-\fi
-\expandafter\ifx\csname l at english\endcsname\relax
+        undefined, default \number\l at USenglish\space used.}%
+}{}
+\@ifundefined{l at english}{%
   \chardef\l at english=\l at USenglish
   \wlog{german -- \string\language\space number for UKenglish %
-        undefined, default \number\l at english\space used.}
-\fi
-\expandafter\ifx\csname l at german\endcsname\relax
-  \expandafter\ifx\csname l at austrian\endcsname\relax
-    \chardef\l at german=255
+        undefined, default \number\l at english\space used.}%
+}{}
+\@ifundefined{l at german}{%
+  \@ifundefined{l at austrian}{%
+    \chardef\l at german=255 %
     \message{german -- \string\language\space number for German %
-             undefined, default \number\l at german\space used,}
-    \message{german -- Please read \string"germdoc.tex\string" how %
-             to install hyphenation patterns.}
-  \else
+             undefined, default \number\l at german\space used,}%
+    \message{german -- Please read \string"gerdoc.tex\string" how %
+             to install hyphenation patterns.}%
+  }{%
     \chardef\l at german=\l at austrian
     \wlog{german -- \string\language\space number for German %
-          undefined, default \number\l at german\space used.}
-  \fi
-\fi
-\expandafter\ifx\csname l at austrian\endcsname\relax
+          undefined, default \number\l at german\space used.}%
+  }%
+}{}
+\@ifundefined{l at austrian}{%
   \chardef\l at austrian=\l at german
   \wlog{german -- \string\language\space number for Austrian %
-        undefined, default \number\l at austrian\space used.}
-\fi
-\expandafter\ifx\csname l at french\endcsname\relax
+        undefined, default \number\l at austrian\space used.}%
+}{}
+\@ifundefined{l at french}{%
   \chardef\l at french=255
   \wlog{german -- \string\language\space number for French %
-        undefined, default \number\l at french\space used.}
-\fi
+        undefined, default \number\l at french\space used.}%
+}{}
 \def\grmn at originalTeX{}
-\def\p at selectlanguage#1{\relax
+\def\languagename{}
+\expandafter\def\csname selectlanguage \endcsname#1{\relax
   \expandafter\ifx\csname l@#1\endcsname\relax
     \errhelp{Your command will be ignored, type <return> to proceed}%
     \errmessage{You haven't defined the language #1 yet}%
   \else
     \grmn at originalTeX
+    \edef\languagename{#1}%
     \edef\grmn at originalTeX{\csname noextras#1\endcsname
-                       \def\noexpand\grmn at originalTeX{}}%
+                      \def\noexpand\grmn at originalTeX{}}%
     \csname date#1\endcsname
     \csname captions#1\endcsname
-    %\language \csname l@#1\endcsname\relax
     \csname extras#1\endcsname\relax
+    % Diese Zeile ist fuer `bibgerm' ...
+    \csname bibs#1\endcsname
+    % ... sie wird in spaeteren `german.sty'-Versionen nicht
+    % mehr vorhanden sein.  Also nicht darauf verlassen!
     \language \csname l@#1\endcsname\relax
   \fi}
-\def\selectlanguage#1{\protect\p at selectlanguage{%
-  \ifnum\escapechar=\expandafter`\string#1\empty
-  \else \string#1\empty\fi}}
+\begingroup\catcode`\ =11\relax% <= do not delete this and the
+\toks0={\endgroup% <=== following percent characters!
+\def\selectlanguage#1{\protect\selectlanguage {%
+\ifnum\escapechar=\expandafter`\string#1\empty%
+\else\string#1\empty\fi}}}%
+\the\toks0\relax%
+\def\p at selectlanguage{\selectlanguage}
+\def\iflanguage#1{%
+  \ifx\csname l@#1\endcsname\relax
+    \expandafter\grmn at dqsecond
+  \else \ifnum\csname l@#1\endcsname=\language
+    \expandafter\expandafter\expandafter\grmn at dqfirst
+  \else
+    \expandafter\expandafter\expandafter\grmn at dqsecond
+  \fi\fi
+}
 \expandafter\ifx\csname language\endcsname\relax
   \csname newcount\endcsname\language
   \language=0 \fi





More information about the latex3-commits mailing list.