[latex3-commits] [git/LaTeX3-latex3-latex2e] utf-8-protected: remove local german.sty, move tests to search config and patch from firstaid (c7d08a1d)

David Carlisle d.p.carlisle at gmail.com
Sun Feb 20 23:42:05 CET 2022


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

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

commit c7d08a1d3c36ed993c1446c6d4a7ac484997ffbf
Author: David Carlisle <d.p.carlisle at gmail.com>
Date:   Sun Feb 20 22:42:05 2022 +0000

    remove local german.sty,move tests to search config and patch from firstaid


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

c7d08a1d3c36ed993c1446c6d4a7ac484997ffbf
 .../github-0621.lvt                                |   0
 .../github-0621.tlg                                |   0
 .../tlb0077.luatex.tlg                             |   0
 base/{testfiles => testfiles-search}/tlb0077.lvt   |   0
 base/{testfiles => testfiles-search}/tlb0077.tlg   |   0
 base/{testfiles => testfiles-search}/tlb1315.lvt   |   0
 base/{testfiles => testfiles-search}/tlb1315.tlg   |   0
 base/testfiles/helpers/german.sty                  | 675 ---------------------
 .../latex2e-first-aid-for-external-files.dtx       |  14 +
 9 files changed, 14 insertions(+), 675 deletions(-)

diff --git a/base/testfiles/github-0621.lvt b/base/testfiles-search/github-0621.lvt
similarity index 100%
rename from base/testfiles/github-0621.lvt
rename to base/testfiles-search/github-0621.lvt
diff --git a/base/testfiles/github-0621.tlg b/base/testfiles-search/github-0621.tlg
similarity index 100%
rename from base/testfiles/github-0621.tlg
rename to base/testfiles-search/github-0621.tlg
diff --git a/base/testfiles/tlb0077.luatex.tlg b/base/testfiles-search/tlb0077.luatex.tlg
similarity index 100%
rename from base/testfiles/tlb0077.luatex.tlg
rename to base/testfiles-search/tlb0077.luatex.tlg
diff --git a/base/testfiles/tlb0077.lvt b/base/testfiles-search/tlb0077.lvt
similarity index 100%
rename from base/testfiles/tlb0077.lvt
rename to base/testfiles-search/tlb0077.lvt
diff --git a/base/testfiles/tlb0077.tlg b/base/testfiles-search/tlb0077.tlg
similarity index 100%
rename from base/testfiles/tlb0077.tlg
rename to base/testfiles-search/tlb0077.tlg
diff --git a/base/testfiles/tlb1315.lvt b/base/testfiles-search/tlb1315.lvt
similarity index 100%
rename from base/testfiles/tlb1315.lvt
rename to base/testfiles-search/tlb1315.lvt
diff --git a/base/testfiles/tlb1315.tlg b/base/testfiles-search/tlb1315.tlg
similarity index 100%
rename from base/testfiles/tlb1315.tlg
rename to base/testfiles-search/tlb1315.tlg
diff --git a/base/testfiles/helpers/german.sty b/base/testfiles/helpers/german.sty
deleted file mode 100644
index 7b93fde9..00000000
--- a/base/testfiles/helpers/german.sty
+++ /dev/null
@@ -1,675 +0,0 @@
-%%
-%% This is file `german.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% german.dtx  (with options: `old')
-%% 
-%% This file is part of the `german' collection,
-%% providing German language support for
-%% plain TeX or LaTeX version 2e/2.09.
-%% 
-%% ----------- 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.
-%% 
-%% 
-%% IMPORTANT NOTICE:
-%% 
-%% 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) should be sent to:
-%% 
-%%   Bernd Raichle <raichle at Informatik.Uni-Stuttgart.DE>
-%% 
-\expandafter\ifx\csname grmn\string @VersionNo\endcsname\relax
-\else
-  \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 2022-02-20}
-\begingroup\expandafter\expandafter\expandafter\endgroup
-\expandafter\ifx\csname ProvidesPackage\endcsname\relax\else
-  \ProvidesPackage{german}[2022/02/20 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 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
-\@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}}
-}{}
-\@ifundefined{UseTextAccent}{%
-  \def\UseTextAccent#1#2#3{%
-    {\let\@curr at enc\f at encoding
-     \fontencoding{#1}\selectfont
-     #2{\fontencoding\@curr at enc\selectfont #3}}}%
-}{}
-\@ifundefined{ProvideTextCommand}{%
-  \def\ProvideTextCommand#1#2{%
-    %%% misses \RobustTextCommand{#1}{...etc.etc...}!!
-    \expandafter\providecommand\csname #2\string#1\endcsname}%
-}{}
-\@ifundefined{ProvideTextCommandDefault}{%
-  \def\ProvideTextCommandDefault#1{%
-    \ProvideTextCommand{#1}{U}}%
-}{}
-\@ifundefined{DeclareTextCompositeCommand}{%
-  \def\DeclareTextCompositeCommand#1#2#3#4{%
-    % define a `dummy' text composite
-    \DeclareTextComposite{#1}{#2}{#3}{`\Z}%
-    % then redefine this command including the new command
-    \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}%
-  \DeclareTextSymbol{\textquotedblleft}{OT1}{92}%
-  \DeclareTextSymbol{\textquotedblleft}{T1}{16}%
-}{}
-\@ifundefined{textquotedblright}{%
-  \ProvideTextCommandDefault{\textquotedblright}{%
-    \UseTextSymbol{OT1}\textquotedblright}%
-  \DeclareTextSymbol{\textquotedblright}{OT1}{`\"}%
-  \DeclareTextSymbol{\textquotedblright}{T1}{17}%
-  %% \DeclareTextSymbol{\textquotedbl}{T1}{`\"}%
-}{}
-\@ifundefined{textquoteleft}{%
-  \ProvideTextCommandDefault{\textquoteleft}{%
-    \UseTextSymbol{OT1}\textquoteleft}%
-  \DeclareTextSymbol{\textquoteleft}{OT1}{`\`}%
-  \DeclareTextSymbol{\textquoteleft}{T1}{`\`}%
-}{}
-\@ifundefined{textquoteright}{%
-  \ProvideTextCommandDefault{\textquoteright}{%
-    \UseTextSymbol{OT1}\textquoteright}%
-  \DeclareTextSymbol{\textquoteright}{OT1}{`\'}%
-  \DeclareTextSymbol{\textquoteright}{T1}{`\'}%
-}{}
-\@ifundefined{quotesinglbase}{%
-  \DeclareTextSymbol{\quotesinglbase}{T1}{13}}{}
-\@ifundefined{quotedblbase}{%
-  \DeclareTextSymbol{\quotedblbase}{T1}{18}}{}
-\@ifundefined{guillemotleft}{%
-  \DeclareTextSymbol{\guillemotleft}{T1}{19}}{}
-\@ifundefined{guillemotright}{%
-  \DeclareTextSymbol{\guillemotright}{T1}{20}}{}
-\@ifundefined{guilsinglleft}{%
-  \DeclareTextSymbol{\guilsinglleft}{T1}{14}}{}
-\@ifundefined{guilsinglright}{%
-  \DeclareTextSymbol{\guilsinglright}{T1}{15}}{}
-\fi
-\expandafter\let\expandafter\protect\csname protect\endcsname
-\def\allowhyphens{\penalty\@M \hskip\z at skip}
-\lccode`\^^Y=`\^^Y
-\def\set at low@box#1{\setbox\tw@\hbox{,}\setbox\z@\hbox{#1}%
-  \setbox\z@\hbox{\dimen@\ht\z@ \advance\dimen@ -\ht\tw@
-      \lower\dimen@\box\z@}%
-  \ht\z@\ht\tw@ \dp\z@\dp\tw@}
-\def\save at sf@q#1{{\ifhmode
-  \edef\@SF{\spacefactor\the\spacefactor}\else
-  \let\@SF\empty \fi \leavevmode #1\@SF}}
-\expandafter\ifx\csname grmnU at D\endcsname\relax
-  \csname newdimen\endcsname\grmnU at D
-\fi
-\def\newumlaut#1{{\grmnU at D 1ex%
-  {\setbox\z@\hbox{\char127}\dimen at -.45ex\advance\dimen@\ht\z@
-  \ifdim 1ex<\dimen@ \fontdimen5\font\dimen@ \fi}%
-  \accent127\fontdimen5\font\grmnU at D #1}\allowhyphens}
-\begingroup\expandafter\expandafter\expandafter\endgroup
-\expandafter\ifx\csname DeclareTextSymbol\endcsname\relax
-  \def\highumlaut#1{{\accent127 #1}\allowhyphens}
-\else
-  \def\highumlaut#1{\"{#1}\allowhyphens}
-\fi
-\def\mdqon{\catcode`\"\active}
-\def\mdqoff{\catcode`\"12\relax}
-\begingroup \mdqoff
-\def\x{\endgroup
-  \def\@MATHUMLAUT{\ddot}% = \mathaccent"707F
-  \def\@MATHss{\mathord{\mathchar"7019}}% TODO: correct?
-  \def\dq{"}}% TODO: or \textquotedbl?
-\x
-\begingroup
-  \def\do{\noexpand\do\noexpand}%
-  \edef\x{\endgroup
-    \def\noexpand\dospecials{\dospecials\do\"}}%
-\x
-\begingroup\expandafter\expandafter\expandafter\endgroup
-\expandafter\ifx\csname @sanitize\endcsname\relax \else
-  \begingroup
-    \def\@makeother{\noexpand\@makeother\noexpand}%
-    \edef\x{\endgroup
-      \def\noexpand\@sanitize{\@sanitize\@makeother\"}}%
-  \x
-\fi
-\let\grmn at original@three=\3 % \3 may be defined or undefined.
-\def\ck{\penalty\@M\discretionary{k-}{}{c}k\allowhyphens}
-\begingroup\expandafter\expandafter\expandafter\endgroup
-\expandafter\ifx\csname DeclareTextSymbol\endcsname\relax
-\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\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}}
-\ProvideTextCommand{\grqq}{T1}{\textquotedblleft}
-\ProvideTextCommand{\grqq}{OT1}{%
-  \save at sf@q{\kern-.07em%
-  \ifmmode\hbox{\textquotedblleft}\else\textquotedblleft\fi
-  \kern.07em\relax}}
-\ProvideTextCommandDefault{\grqq}{\UseTextSymbol{OT1}\grqq}
-\DeclareRobustCommand{\glq}{%
-  \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}}
-\ProvideTextCommand{\grq}{T1}{\textquoteleft}
-\ProvideTextCommand{\grq}{OT1}{%
-  \save at sf@q{\kern-.0125em%
-  \ifmmode\hbox{\textquoteleft}\else\textquoteleft\fi
-  \kern.07em\relax}}
-\ProvideTextCommandDefault{\grq}{\UseTextSymbol{OT1}\grq}
-\DeclareRobustCommand{\flqq}{%
-  \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 .27ex\hbox{$\m at th\scriptscriptstyle \ll $}%
-    \allowhyphens}\fi}
-\DeclareRobustCommand{\frqq}{%
-  \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 .27ex\hbox{$\m at th\scriptscriptstyle \gg $}%
-    \allowhyphens}\fi}
-\DeclareRobustCommand{\flq}{%
-  \ifmmode\mathbin{\hbox{\guilsinglleft}}\else\guilsinglleft\fi}
-\ProvideTextCommandDefault{\guilsinglleft}{%
-  \UseTextSymbol{OT1}\guilsinglleft}
-\ProvideTextCommand{\guilsinglleft}{OT1}{%
-  \ifmmode <\else \save at sf@q{\penalty\@M
-    \raise .27ex\hbox{$\m at th\scriptscriptstyle <$}\allowhyphens}\fi}
-\DeclareRobustCommand{\frq}{%
-  \ifmmode\mathbin{\hbox{\guilsinglright}}\else\guilsinglright\fi}
-\ProvideTextCommandDefault{\guilsinglright}{%
-  \UseTextSymbol{OT1}\guilsinglright}
-\ProvideTextCommand{\guilsinglright}{OT1}{%
-  \ifmmode >\else \save at sf@q{\penalty\@M
-    \raise .27ex\hbox{$\m at th\scriptscriptstyle >$}\allowhyphens}\fi}
-\fi
-\begingroup\expandafter\expandafter\expandafter\endgroup
-\expandafter\ifx\csname DeclareTextSymbol\endcsname\relax
-\def\umlauthigh{\def\"##1{{\accent127 ##1}}}
-\def\umlautlow{\def\"{\protect\newumlaut}}
-\else
-\def\umlauthigh{\def\grmn at OTumlaut##1{{\accent 127 ##1}}}
-\def\umlautlow{\def\grmn at OTumlaut{\protect\newumlaut}}
-\umlauthigh
-\DeclareTextAccent{\"}{T1}{4}
-\DeclareTextAccent{\"}{OT1}{127}
-\DeclareTextCompositeCommand{\"}{OT1}{a}{\grmn at OTumlaut{a}}%
-\DeclareTextCompositeCommand{\"}{OT1}{o}{\grmn at OTumlaut{o}}%
-\DeclareTextCompositeCommand{\"}{OT1}{u}{\grmn at OTumlaut{u}}%
-\DeclareTextCompositeCommand{\"}{OT1}{A}{\grmn at OTumlaut{A}}%
-\DeclareTextCompositeCommand{\"}{OT1}{O}{\grmn at OTumlaut{O}}%
-\DeclareTextCompositeCommand{\"}{OT1}{U}{\grmn at OTumlaut{U}}%
-\DeclareTextComposite{\"}{T1}{a}{228}
-\begingroup\expandafter\expandafter\expandafter\endgroup
-\expandafter\ifx\csname AtBeginDocument\endcsname\relax \else
-  \AtBeginDocument{%
-    \DeclareTextAccent{\"}{T1}{4}%          % from `ltpatch.tex'
-    \DeclareTextAccent{\"}{OT1}{127}%       % from `ltpatch.tex'
-    % \DeclareTextCommand{\"}{OT1}{\newumlaut}% from `ltpatch.tex'
-    % % has to be removed
-    \DeclareTextCompositeCommand{\"}{OT1}{a}{\grmn at OTumlaut{a}}%
-    \DeclareTextCompositeCommand{\"}{OT1}{o}{\grmn at OTumlaut{o}}%
-    \DeclareTextCompositeCommand{\"}{OT1}{u}{\grmn at OTumlaut{u}}%
-    \DeclareTextCompositeCommand{\"}{OT1}{A}{\grmn at OTumlaut{A}}%
-    \DeclareTextCompositeCommand{\"}{OT1}{O}{\grmn at OTumlaut{O}}%
-    \DeclareTextCompositeCommand{\"}{OT1}{U}{\grmn at OTumlaut{U}}%
-    \DeclareTextComposite{\"}{T1}{a}{228}%  % from `ltpatch.tex'
-  }
-\fi
-\fi
-\def\dqwarninglevel#1{\chardef\grmn at dqwarninglevel=#1\relax}
- \dqwarninglevel{1}
-\expandafter\ifx\csname on at line\endcsname\relax
-  \ifx\inputlineno\undefined \def\on at line{}%
-  \else
-    \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.}}
-\def\grmn at dq@macro#1#2{%
-  \expandafter#1\csname @grmn@@\string #2dq\endcsname}
-\def\def at dqmacro#1#2#3{%
-  \grmn at dqredefcheck{#1}%
-  \grmn at dq@macro\def{#1}{{#2}{#3}}}
-\def\let at dqmacro#1#2{\begingroup
-  \grmn at dqredefcheck{#1}%
-  \edef\x{\endgroup \let
-    \grmn at dq@macro\noexpand{#1}\grmn at dq@macro\noexpand{#2}}%
-  \x}
-\def\grmn at dqredefcheck#1{}
-\def\@active at dq{\protect\grmn at active@dq@}
-\def\grmn at active@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
-  \else
-    \expandafter\grmn@@active at dq
-  \fi {#1}}
-\def\grmn@@active at dq#1{%
-  \grmn at dq@macro\ifx{#1}\noexpand
-    \expandafter\grmn at normal@dq
-  \else
-    \expandafter\grmn@@@active at dq
-  \fi {#1}}
-\def\grmn@@normal at dq#1{``#1}
-\def\grmn at normal@dq#1{\dq #1}
-\begingroup
-  \catcode`\(=1\lccode`\(=`\{\catcode`\{=12
-  \catcode`\)=2\lccode`\)=`\}\catcode`\}=12
-  \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})%
-\def\grmn@@@@active at dq(%
-\ifx\protect\relax\else\ifx\protect\empty\else%
-\expandafter\expandafter\expandafter\protect%
-\fi\fi%
-\active at dq \dq at prtct )%
-\def\dq at prtct#1#(\@dq at prtct)%
-\def\@dq at prtct#1(\string\dq at prtct{\string#1})%
-\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#{\@active at dq}%
-\def\grmn at active@@dq#1{%
-  \csname grmn at dq\ifmmode second\else first\fi
-    \expandafter\expandafter\expandafter\expandafter
-  \grmn at dq@macro\endcsname{#1}}
-\grmn at dq@macro\let{0}=\noexpand
-\let at dqmacro{1}{0}\let at dqmacro{2}{0}\let at dqmacro{3}{0}
-\let at dqmacro{4}{0}\let at dqmacro{5}{0}\let at dqmacro{6}{0}
-\let at dqmacro{7}{0}\let at dqmacro{8}{0}\let at dqmacro{9}{0}
-\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}{\"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{-}{\penalty\@M\-\allowhyphens}%
-               {\penalty\@M\-\allowhyphens}
-\def at dqmacro{|}{\penalty\@M\discretionary{-}{}{\kern.03em}%
-                \allowhyphens}{}
-\def at dqmacro{"}{\hskip\z at skip}{\hskip\z at skip}
-\def at dqmacro{~}{\leavevmode\hbox{-}}{-}
-\def at dqmacro{=}{\penalty\@M-\hskip\z at skip}%
-               {\penalty\@M-\hskip\z at skip}
-\def\grmn at dqdisc#1#2{\penalty\@M
-  \ifnum\grmn at dqwarninglevel>\@ne \grmn at dq@warning{#1}\fi
-  \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{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}
-\def at dqmacro{M}{\grmn at dqdisc M{MM}}{M}
-\def at dqmacro{n}{\grmn at dqdisc n{nn}}{n}
-\def at dqmacro{N}{\grmn at dqdisc N{NN}}{N}
-\def at dqmacro{p}{\grmn at dqdisc p{pp}}{p}
-\def at dqmacro{P}{\grmn at dqdisc P{PP}}{P}
-\def at dqmacro{r}{\grmn at dqdisc r{rr}}{r}
-\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{%
-  \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
-  Juli\or August\or September\or Oktober\or November\or Dezember\fi}
-\def\dategerman{\def\today{\number\day.~\month at german
-  \space\number\year}}
-\def\dateaustrian{\def\today{\number\day.~\ifnum 1=\month
-  J\"anner\else \month at german\fi \space\number\year}}
-\def\month at english{\ifcase\month \or
-  January\or February\or March\or April\or May\or June\or
-  July\or August\or September\or October\or November\or December\fi}
-\def\dateUSenglish{\def\today{\month at english
-  \space\number\day, \number\year}}
-\def\dateenglish{\def\today{\number\day \ifcase\day \or
-  st\or nd\or rd\or th\or th\or th\or th\or th\or th\or th\or%  1..10
-  th\or th\or th\or th\or th\or th\or th\or th\or th\or th\or% 11..20
-  st\or nd\or rd\or th\or th\or th\or th\or th\or th\or th\or% 21..30
-  st\fi
-  ~\month at english \space\number\year}}
-\def\datefrench{\def\today{\number\day \ifnum1=\day \/$^{\rm er}$\fi
-  \space\ifcase\month \or
-  janvier\or f\'evrier\or mars\or avril\or mai\or juin\or
-  juillet\or ao\^ut\or septembre\or
-  octobre\or novembre\or d\'ecembre\fi
-  \space\number\year}}
-\def\captionsgerman{%
-  \def\prefacename{Vorwort}%
-  \def\refname{Literatur}%
-  \def\abstractname{Zusammenfassung}%
-  \def\bibname{Literaturverzeichnis}%
-  \def\chaptername{Kapitel}%
-  \def\appendixname{Anhang}%
-  \def\contentsname{Inhaltsverzeichnis}% % oder nur: Inhalt
-  \def\listfigurename{Abbildungsverzeichnis}%
-  \def\listtablename{Tabellenverzeichnis}%
-  \def\indexname{Index}%
-  \def\figurename{Abbildung}%
-  \def\tablename{Tabelle}%  % oder: Tafel
-  \def\partname{Teil}%
-  \def\enclname{Anlage(n)}% % oder: Beilage(n)
-  \def\ccname{Verteiler}%   % oder: Kopien an
-  \def\headtoname{An}%
-  \def\pagename{Seite}%
-  \def\seename{siehe}%
-  \def\alsoname{siehe auch}}
-\let\captionsaustrian=\captionsgerman
-\def\captionsenglish{%
-  \def\prefacename{Preface}%
-  \def\refname{References}%
-  \def\abstractname{Abstract}%
-  \def\bibname{Bibliography}%
-  \def\chaptername{Chapter}%
-  \def\appendixname{Appendix}%
-  \def\contentsname{Contents}%
-  \def\listfigurename{List of Figures}%
-  \def\listtablename{List of Tables}%
-  \def\indexname{Index}%
-  \def\figurename{Figure}%
-  \def\tablename{Table}%
-  \def\partname{Part}%
-  \def\enclname{encl}%
-  \def\ccname{cc}%
-  \def\headtoname{To}%
-  \def\pagename{Page}%
-  \def\seename{see}%
-  \def\alsoname{see also}}
-\let\captionsUSenglish=\captionsenglish
-\def\captionsfrench{%
-  \def\prefacename{Pr\'eface}%
-  \def\refname{R\'ef\'erences}%
-  \def\abstractname{R\'esum\'e}%
-  \def\bibname{Bibliographie}%
-  \def\chaptername{Chapitre}%
-  \def\appendixname{Annexe}%
-  \def\contentsname{Table des mati\`eres}%
-  \def\listfigurename{Liste des figures}%
-  \def\listtablename{Liste des tableaux}%
-  \def\indexname{Index}%
-  \def\figurename{Figure}%
-  \def\tablename{Tableau}%
-  \def\partname{Partie}%
-  \def\enclname{P.~J.}%
-  \def\ccname{Copie \`a}%
-  \def\headtoname{A}%
-  \def\pagename{Page}%
-  \def\seename{voir}%
-  \def\alsoname{voir aussi}}%
-\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
-  \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}
-\@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.}%
-}{}
-\@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.}%
-}{}
-\@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"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.}%
-  }%
-}{}
-\@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.}%
-}{}
-\@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.}%
-}{}
-\def\grmn at originalTeX{}
-\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{}}%
-    \csname date#1\endcsname
-    \csname captions#1\endcsname
-    \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}
-\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
-\expandafter\ifx\csname lefthyphenmin\endcsname\relax
-  \csname newcount\endcsname\lefthyphenmin
-  \lefthyphenmin=2 \fi
-\expandafter\ifx\csname righthyphenmin\endcsname\relax
-  \csname newcount\endcsname\righthyphenmin
-  \righthyphenmin=3 \fi
-\expandafter\ifx\csname setlanguage\endcsname\relax
-  \def\setlanguage{\relax
-    \ifhmode \else
-      \errhelp{Use \selectlanguage to switch languages.}%
-      \errmessage{\setlanguage allowed only in horizontal mode}%
-    \fi
-    \begingroup\afterassignment\endgroup\count@=}
-\fi
-\begingroup \mdqon
-\def\x{\endgroup
-  \def\originalTeX{\mdqoff \let"\dq \umlauthigh
-    \let\3\grmn at original@three
-    \selectlanguage{USenglish}}%
-  \def\germanTeX{\mdqon \let"\@active at dq \umlautlow
-    \let\grmn at original@three\3\let\3\ss
-    \selectlanguage{german}}}%
-\x
-\catcode`\@=\atcode % return to previous catcode
-\germanTeX
-\endinput
-%%
-%% End of file `german.sty'.
diff --git a/required/firstaid/latex2e-first-aid-for-external-files.dtx b/required/firstaid/latex2e-first-aid-for-external-files.dtx
index 898b5120..d02bfb2c 100644
--- a/required/firstaid/latex2e-first-aid-for-external-files.dtx
+++ b/required/firstaid/latex2e-first-aid-for-external-files.dtx
@@ -559,6 +559,20 @@
    }
 %    \end{macrocode}
 %
+% \subsection{The \pkg{german} class first aid}
+%
+%    Again a case of a no longer correct \cs{endgroup} in document.
+%    Here the fix is simply though.
+%    \begin{macrocode}
+\AddToHook{file/german.sty/after}[firstaid]{%
+  \FirstAidNeededT{german}{sty}{1998/07/08 v2.5e Support for writing german texts (br)}
+                  {%
+\let\grmn at active@dq@\@active at dq
+\def\@active at dq{\protect\grmn at active@dq@}%
+\germanTeX
+}%
+}
+%    \end{macrocode}
 %
 %
 %





More information about the latex3-commits mailing list.