summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/koma-script/source/scrkernel-language.dtx
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/koma-script/source/scrkernel-language.dtx
Initial commit
Diffstat (limited to 'macros/latex/contrib/koma-script/source/scrkernel-language.dtx')
-rw-r--r--macros/latex/contrib/koma-script/source/scrkernel-language.dtx1709
1 files changed, 1709 insertions, 0 deletions
diff --git a/macros/latex/contrib/koma-script/source/scrkernel-language.dtx b/macros/latex/contrib/koma-script/source/scrkernel-language.dtx
new file mode 100644
index 0000000000..6181653de8
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrkernel-language.dtx
@@ -0,0 +1,1709 @@
+% \CheckSum{2080}
+% \iffalse meta-comment
+% ======================================================================
+% scrkernel-language.dtx
+% Copyright (c) Markus Kohm, 2002-2018
+%
+% This file is part of the LaTeX2e KOMA-Script bundle.
+%
+% This work may be distributed and/or modified under the conditions of
+% the LaTeX Project Public License, version 1.3c of the license.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2005/12/01 or later and of this work.
+%
+% This work has the LPPL maintenance status "author-maintained".
+%
+% The Current Maintainer and author of this work is Markus Kohm.
+%
+% This work consists of all files listed in manifest.txt.
+% ----------------------------------------------------------------------
+% scrkernel-language.dtx
+% Copyright (c) Markus Kohm, 2002-2018
+%
+% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz,
+% Version 1.3c, verteilt und/oder veraendert werden.
+% Die neuste Version dieser Lizenz ist
+% http://www.latex-project.org/lppl.txt
+% und Version 1.3c ist Teil aller Verteilungen von LaTeX
+% Version 2005/12/01 oder spaeter und dieses Werks.
+%
+% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained"
+% (allein durch den Autor verwaltet).
+%
+% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm.
+%
+% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scrkernel-language.dtx 3011 2018-08-29 07:35:17Z kohm $
+%<option>%%% (run: option)
+%<body>%%% (run: body)
+%<*dtx>
+% \fi
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2018-08-29 09:35:17 +0200 (Wed, 29 Aug 2018) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 1638 $
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrkernel-language.dtx}
+ [\filedate\space\filerevision\space
+ KOMA-Script (language)]%
+ }%
+\reserved@a
+% \iffalse
+\documentclass[parskip=half-]{scrdoc}
+\usepackage[english,ngerman]{babel}
+\usepackage[latin1]{inputenc}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrkernel-language.dtx}
+\title{\KOMAScript{} \partname\ \texttt{\filename}%
+ \footnote{Dies ist Version \fileversion\ von Datei
+ \texttt{\filename}.}}
+\date{\filedate}
+\author{Markus Kohm}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.95}{2002/07/01}{%
+% erste Version aus der Aufteilung von \texttt{scrclass.dtx}}
+%
+% \section{Sprachabhängigkeiten}
+%
+% Aus verschiedenen Gründen ist es nicht so einfach, neue,
+% sprachabhängige Begriffe zu definieren oder vorhandene
+% umzudefinieren. Mit \KOMAScript{} geht das etwas einfacher.
+%
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \iffalse
+%<*option>
+% \fi
+%
+% \subsection{Option}
+% Für Briefe gibt es die Möglichkeit, zwischen symbolischem und numerischem
+% Datum umzuschalten.
+%
+% \iffalse
+%<*letter>
+% \fi
+%
+% \begin{option}{numericaldate}
+% \changes{v2.8q}{2001/10/07}{Neue Option (an Stelle von
+% \texttt{scrdate} und \texttt{orgdate})}^^A
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} durch \cs{PackageInfoNoLine}
+% ersetzt}^^A
+% \changes{v3.17}{2015/03/10}{Speicherung des aktuellen Werts}^^A
+% Es kann zwischen dem Originaldatum, das beispielsweise von
+% \texttt{german.sty} definiert wird, und dem \texttt{scrlttr2}-Datum
+% gewählt werden. Natürlich gibt es diese Optionen nur bei Briefen.
+% \begin{macro}{\if@orgdate}
+% \begin{macro}{\@orgdatetrue}
+% \begin{macro}{\@orgdatefalse}
+% Die Einstellung wird in einem Schalter gespeichert.
+% \begin{macrocode}
+\newif\if@orgdate\@orgdatetrue
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% Dummerweise besitzt der alte Schalter genau die gegenteilige
+% Bedeutung der Option, deshalb muss der Schalter zweimal invertiert
+% werden.
+% \begin{macrocode}
+\KOMA@key{numericaldate}[true]{%
+ \if@orgdate\@orgdatefalse\else\@orgdatetrue\fi
+ \KOMA@set@ifkey{numericaldate}{@orgdate}{#1}%
+ \KOMA@kav@replacebool{.%
+%<class> \KOMAClassFileName
+%<package&letter> scrletter.\scr@pkgextension
+ }{numericaldate}{@orgdate}%
+ \if@orgdate\@orgdatefalse\else\@orgdatetrue\fi
+}
+\KOMA@kav@add{.%
+%<class> \KOMAClassFileName
+%<package&letter> scrletter.\scr@pkgextension
+}{orgdate}{true}
+% \end{macrocode}
+% \begin{option}{scrdate}
+% \changes{v3.01a}{2008/11/21}{deprecated}^^A
+% \begin{option}{orgdate}
+% \changes{v3.01a}{2008/11/21}{deprecated}^^A
+% \begin{macrocode}
+\KOMA@DeclareDeprecatedOption{scrdate}{numericaldate=true}
+\KOMA@DeclareDeprecatedOption{orgdate}{numericaldate=false}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+% \end{option}
+%
+% \iffalse
+%</letter>
+% \fi
+%
+%
+% \iffalse
+%</option>
+%<*body>
+% \fi
+%
+% \subsection{Definitionen für sprachabhängige Bezeichner}
+%
+% Dieser Teil ist so grundlegend, dass er ab Version~3.00 in das Paket
+% \textsf{scrbase} ausgelagert wird.
+%
+% \iffalse
+%<*package&base>
+% \fi
+%
+% \begin{macro}{\defcaptionname}
+% \changes{3.12}{2013/07/29}{neu}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% Für eine Reihe von Sprachen (durch Komma separierte Liste in \#1)
+% wird ein Makro (\#2) auf einen bestimmten Inhalt (\#3) definiert. Die
+% Sternversion verwendet dabei zwingend \cs{extras\meta{Sprache}}, während
+% die Normalversion \cs{captions\meta{Sprache}} verwendet, außer wenn der
+% Begriff bereits in \cs{extras\meta{Sprache}} definiert ist. Falls der
+% Befehl in der Dokumentpräambel aufgerufen wird, wird er verzögert.
+% \begin{macrocode}
+\newcommand*{\defcaptionname}{%
+ \kernel@ifstar\scr@def@scaptionname\scr@def@captionname
+}
+% \end{macrocode}
+% \begin{macro}{\scr@def@scaptionname}
+% \changes{v3.12}{2013/07/30}{neu (intern)}^^A
+% Die Sternvariante von \cs{defcaptionname}. Die Argumente sind dieselben.
+% \begin{macrocode}
+\newcommand*{\scr@def@scaptionname}[3]{%
+% \end{macrocode}
+% Als erstes findet die Verzögerung bis \cs{begin{document}} statt.
+% \begin{macrocode}
+ \if@atdocument \expandafter\@firstofone
+ \else \expandafter\AtBeginDocument
+ \fi
+ {%
+% \end{macrocode}
+% Dann arbeiten wir in einer lokalen Schleife alle Sprachen aus Argument \#1
+% ab und \dots
+% \changes{v3.26}{2018/08/29}{diverse \cs{expandafter} eingespart}^^A
+% \begin{macrocode}
+ \begingroup
+ \let\reserved@b\endgroup
+ \edef\scr@reserved@a{#1}%
+ \@onelevel@sanitize\scr@reserved@a
+ \@for\scr@reserved@a:=\scr@reserved@a\do{%
+% \end{macrocode}
+% \dots\ fügen dabei \cs{extras\meta{Sprache}} die Definition \#3 für \#2
+% hinzu.
+% \begin{macrocode}
+ \scr@trim@spaces\scr@reserved@a
+ \ifx\scr@reserved@a\@empty
+ \PackageWarning{scrbase}{empty language at \string\defcaptionname}%
+ \else
+ \expandafter\ifx\csname extras\scr@reserved@a\endcsname\relax
+ \expandafter\expandafter\expandafter\gdef
+ \else
+ \expandafter\expandafter\expandafter\g@addto@macro
+ \fi
+ \csname extras\scr@reserved@a\endcsname{%
+ \def#2{#3}%
+ }%
+% \end{macrocode}
+% Wenn etwas hinzugefügt wurde, muss außerdem \cs{reserved@b} so umdefiniert
+% werden, dass dies ggf. auch unmittelbar Geltung bekommt.
+% \begin{macrocode}
+ \scr@def@activateactivelanguageaftergroup{#2}{#3}%
+ \fi
+ }%
+ \reserved@b
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\scr@def@activateactivelanguageaftergroup}
+% \changes{v3.12}{2013/07/30}{neu (intern)}^^A
+% Wenn die Sprache in \cs{reserved@a} die aktuelle Sprache \cs{languagename}
+% ist oder die Sprachnummer zur Sprache \cs{reserved@a} die aktuelle
+% Sprachnummer \cs{language} ist, dann wird \cs{reserved@b} so umdefiniert,
+% dass es die aktuelle Gruppe beendet und \#1 als \#2 definiert.
+% \begin{macrocode}
+\newcommand*{\scr@def@activateactivelanguageaftergroup}[2]{%
+ \@onelevel@sanitize\languagename
+ \@tempswafalse
+%<trace> \typeout{compare `\languagename' and `\scr@reserved@a'}%
+ \ifx\languagename\scr@reserved@a
+ \@tempswatrue
+ \else
+% \end{macrocode}
+% \changes{v3.20}{2016/01/05}{Sonderbehandlung für \textsf{polyglossia}}^^A
+% Bei Verwendung von \textsf{polyglossia} gibt es die Besonderheit, dass alle
+% Deutschen Sprachen als \texttt{german} definiert sind. Die Unterscheidung
+% zwischen Deutsch, Österreichisch und Schweizerisch geschieht über zwei
+% boolsche Schalter. Für die Unterscheidung alte oder neue Rechtschreibung
+% existiert ein weiterer Schalter. Mit ein paar trickreichen Vergleichen kann
+% man das zusätzlich behandeln. Natürlich muss es so gemacht werden, dass es
+% mit babel trotzdem noch funktioniert.
+% \begin{macrocode}
+ \edef\scr@reserved@b{\detokenize{german}}%
+ \ifx\languagename\scr@reserved@b
+ \edef\scr@reserved@b{%
+ \expandafter\ifx\csname if@german@oldspelling\expandafter\endcsname
+ \csname iffalse\endcsname n\fi
+ \expandafter\ifx\csname if@austrian@locale\expandafter\endcsname
+ \csname iftrue\endcsname austrian\else
+ \expandafter\ifx\csname if@swiss@locale\expandafter\endcsname
+ \csname iftrue\endcsname swiss\else german\fi\fi
+ }%
+%<trace> \typeout{compare also `\scr@reserved@a' and `\scr@reserved@b'}%
+ \@onelevel@sanitize\scr@reserved@b
+ \ifx\scr@reserved@a\scr@reserved@b \@tempswatrue\fi
+ \fi
+ \if@tempswa\else
+ \ifcsname l@\scr@reserved@a\endcsname
+ \expandafter\ifnum\csname l@\scr@reserved@a\endcsname=\language
+ \@tempswatrue
+ \fi
+ \fi
+ \fi
+ \fi
+ \if@tempswa
+ \def\reserved@b{\endgroup
+ \PackageInfo{scrbase}{activating \languagename\space \string#1}%
+ \def#1{#2}%
+ }%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@def@activateactivelanguageaftergroup
+% \end{macro}^^A \scr@def@scaptionname
+% \begin{macro}{\scr@def@captionname}
+% \changes{v3.12}{2013/07/30}{neu (intern)}^^A
+% Die Normalvariante von \cs{defcaptionname}, mit denselben Argumenten.
+% \begin{macrocode}
+\newcommand*{\scr@def@captionname}[3]{%
+% \end{macrocode}
+% Als erstes findet die Verzögerung bis \cs{begin{document}} statt.
+% \begin{macrocode}
+ \if@atdocument \expandafter\@firstofone
+ \else \expandafter\AtBeginDocument
+ \fi
+ {%
+% \end{macrocode}
+% Dann arbeiten wir in einer lokalen Schleife alle Sprachen aus Argument \#1
+% ab und \dots
+% \changes{v3.26}{2018/08/29}{diverse \cs{expandafter} eingespart}^^A
+% \begin{macrocode}
+ \begingroup
+ \let\reserved@b\endgroup
+ \edef\scr@reserved@a{#1}%
+ \@onelevel@sanitize\scr@reserved@a
+ \@for\scr@reserved@a:=\scr@reserved@a\do{%
+ \scr@trim@spaces\scr@reserved@a
+ \ifx\scr@reserved@a\@empty
+ \PackageWarning{scrbase}{empty language at \string\defcaptionname}%
+ \else
+% \end{macrocode}
+% \dots\ testen dabei, ob \#2 bereits in \cs{extras\meta{Sprache}} definiert
+% ist.
+% \begin{macrocode}
+ \@tempswafalse
+ \begingroup
+ \@tempswafalse
+ \ifcsname extras\scr@reserved@a\endcsname
+ \let#2\relax
+ \csname extras\scr@reserved@a\endcsname
+ \ifx #2\relax \else \aftergroup\@tempswatrue \fi
+ \fi
+ \endgroup
+% \end{macrocode}
+% Wenn \#2 bereits in \cs{extras\meta{Sprache}} definiert ist, \dots
+% \begin{macrocode}
+ \if@tempswa
+% \end{macrocode}
+% \dots\ dann definieren wir es genau hier neu,
+% \begin{macrocode}
+ \expandafter\g@addto@macro\csname extras\scr@reserved@a\endcsname{%
+ \def#2{#3}%
+ }%
+ \else
+% \end{macrocode}
+% \dots\ anderenfalls definieren wir es in \cs{captions\meta{Sprache}} neu.
+% \begin{macrocode}
+ \expandafter\ifx\csname captions\scr@reserved@a\endcsname\relax
+ \expandafter\expandafter\expandafter\gdef
+ \else
+ \expandafter\expandafter\expandafter\g@addto@macro
+ \fi
+ \csname captions\scr@reserved@a\endcsname{%
+ \def#2{#3}%
+ }%
+ \fi
+% \end{macrocode}
+% Wenn etwas hinzugefügt wurde, muss außerdem \cs{reserved@b} so umdefiniert
+% werden, dass dies ggf. auch unmittelbar Geltung bekommt.
+% \begin{macrocode}
+ \scr@def@activateactivelanguageaftergroup{#2}{#3}%
+ \fi
+ }%
+ \reserved@b
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@def@captionname
+% \end{macro}^^A \defcaptionname
+%
+% \changes{v3.20}{2016/01/05}{Neue Sonderbehandlung für
+% \texttt{polyglossia}}^^A
+% Bei Verwendung von \textsf{polyglossia} haben wir nun bei den Sprachen
+% \texttt{austrian}, \texttt{swiss}, \texttt{ngerman}, \texttt{naustrian} und
+% \texttt{nswiss} das Problem, dass diese dort alle in \cs{captionsgerman}
+% vermischt sind. Es werden also also beim Umschalten eventuell gar nicht die
+% richtigen Befehle ausgeführt. Das lässt sich beispielsweise beheben, indem
+% in \cs{init@extra@german} dafür gesorgt wid, dass eben diese doch noch
+% ausgeführt werden:
+% \begin{macrocode}
+\AfterPackage*{polyglossia}{%
+ \scr@ifundefinedorrelax{init@extras@german}{%
+ \AfterFile{gloss-german.ldf}%
+ }{%
+ \@firstofone
+ }%
+ {%
+ \providecommand*\captionsngerman{}%
+ \providecommand*\captionsaustrian{}%
+ \providecommand*\captionsnaustrian{}%
+ \providecommand*\captionsswiss{}%
+ \providecommand*\captionsnswiss{}%
+ \csgappto{init@extras@german}{%
+ \if@austrian@locale
+ \csuse{captions\if@german@oldspelling\else n\fi austrian}%
+ \else
+ \if@swiss@locale
+ \csuse{captions\if@german@oldspelling\else n\fi swiss}%
+ \else
+ \if@german@oldspelling\else \csuse{captionsngerman}\fi
+ \fi
+ \fi
+ }%
+ }%
+}
+% \end{macrocode}
+% Ich bin mir natürlich bewusst, dass dieser Code auch nur wieder ein Hack
+% ist. Ideal ist das so nicht. Aber sehr viel sauberer geht es mit
+% \textsf{polyglossia} unter Beibehaltung der Kompatibilität auch nicht mehr.
+%
+% \begin{macro}{\providecaptionname}
+% \changes{v2.8q}{2001/11/08}{neu}^^A
+% \changes{v2.9r}{2004/06/16}{Wenn die aktuelle Sprache, die geänderte
+% ist, wird die Anderung sofort aktiviert.}^^A
+% \changes{v2.95}{2006/03/10}{Ermittlung der aktuellen Sprache funktioniert
+% auch, wenn \cs{languagename} mit seltsamen catcodes erstellt wurde.}^^A
+% \changes{v3.00}{2008/05/02}{nach \textsf{scrbase} verschoben}^^A
+% \changes{v3.01b}{2008/12/07}{missing make undefined}^^A
+% \changes{v3.02c}{2009/02/17}{undefined test improved}^^A
+% \changes{v3.12}{2013/07/30}{Neuimplementierung nach dem Muster von
+% \cs{defcaptionname}}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% Wie \cs{defcaptionname}, allerdings wird nur definiert, wenn die Sprache \#1
+% bereits existiert, aber der Begriff \#2 nicht existiert. Unter dieser
+% Einschränkung verwendet die Sternvariante \cs{extras\meta{Sprache}}, während
+% die Normalvariante \cs{captions\meta{Sprache}} verwendet.
+% \begin{macrocode}
+\newcommand*{\providecaptionname}{%
+ \kernel@ifstar\scr@provide@scaptionname\scr@provide@captionname
+}
+% \end{macrocode}
+% \begin{macro}{\scr@provide@scaptionname}
+% \changes{v3.12}{2013/07/30}{neu (intern)}^^A
+% \changes{v3.26}{2018/08/29}{diverse \cs{expandafter} eingespart}^^A
+% \begin{macrocode}
+\newcommand*{\scr@provide@scaptionname}[3]{%
+ \if@atdocument \expandafter\@firstofone
+ \else \expandafter\AtBeginDocument
+ \fi
+ {%
+ \begingroup
+ \let\reserved@b\endgroup
+ \edef\scr@reserved@a{#1}%
+ \@onelevel@sanitize\scr@reserved@a
+ \@for\scr@reserved@a:=\scr@reserved@a\do{%
+ \scr@trim@spaces\scr@reserved@a
+ \ifx\scr@reserved@a\@empty
+ \PackageWarning{scrbase}{empty language at
+ \string\providecaptionname}%
+ \else
+% \end{macrocode}
+% Im Unterschied zu \cs{defcaptionname} wird hier nur etwas zu
+% \cs{extras\meta{Sprache}} hinzugefügt, wenn das bereits definiert ist,
+% aber \#2 selbst noch nicht definiert ist.
+% \begin{macrocode}
+ \begingroup
+ \let#2\relax
+ \csname extras\scr@reserved@a\endcsname
+ \csname captions\scr@reserved@a\endcsname
+ \ifx #2\relax \aftergroup\@firstofone
+ \else
+%<*trace>
+ \PackageInfo{scrbase}{letting \scr@reserved@a\space
+ \expandafter\string#2\MessageBreak
+ unchanged}%
+%</trace>
+ \aftergroup\@gobble
+ \fi
+ \endgroup
+ {%
+ \expandafter\ifx\csname extras\scr@reserved@a\endcsname\relax
+%<*trace>
+ \PackageInfo{scrbase}{letting
+ \expandafter\string\csname extras\scr@reserved@a\endcsname\space
+ unused}%
+%</trace>
+ \expandafter\expandafter\expandafter\@gobbletwo
+ \else
+ \expandafter\expandafter\expandafter\g@addto@macro
+ \fi
+ \csname extras\scr@reserved@a\endcsname{%
+ \def#2{#3}%
+ }%
+ \scr@def@activateactivelanguageaftergroup{#2}{#3}%
+ }%
+ \fi
+ }%
+ \reserved@b
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@provide@scaptionname
+% \begin{macro}{\scr@provide@captionname}
+% \changes{v3.12}{2013/07/30}{neu (intern)}^^A
+% \changes{v3.26}{2018/08/29}{diverse \cs{expandafter} eingespart}^^A
+% Die Normalvariante von \cs{providecaptionname}, mit denselben Argumenten.
+% \begin{macrocode}
+\newcommand*{\scr@provide@captionname}[3]{%
+ \if@atdocument \expandafter\@firstofone
+ \else \expandafter\AtBeginDocument
+ \fi
+ {%
+ \begingroup
+ \let\reserved@b\endgroup
+ \edef\scr@reserved@a{#1}%
+ \@onelevel@sanitize\scr@reserved@a
+ \@for\scr@reserved@a:=\scr@reserved@a\do{%
+ \scr@trim@spaces\scr@reserved@a
+ \ifx\scr@reserved@a\@empty
+ \PackageWarning{scrbase}{empty language at
+ \string\providecaptionname}%
+ \else
+% \end{macrocode}
+% Im Unterschied zu \cs{defcaptionname} wird hier nur etwas zu
+% \cs{captions\meta{Sprache}} hinzugefügt, wenn das bereits definiert ist,
+% aber \#2 selbst weder in \cs{extras\meta{Sprache}} noch in
+% \cs{captions\meta{Sprache}} definiert ist.
+% \begin{macrocode}
+ \begingroup
+ \let#2\relax
+ \csname captions\scr@reserved@a\endcsname
+ \csname extras\scr@reserved@a\endcsname
+ \ifx #2\relax \aftergroup\@firstofone
+ \else
+%<*trace>
+ \PackageInfo{scrbase}{letting \scr@reserved@a
+ \expandafter\string#2\MessageBreak
+ unchanged}%
+%</trace>
+ \aftergroup\@gobble
+ \fi
+ \endgroup
+ {%
+ \expandafter\ifx\csname captions\scr@reserved@a\endcsname\relax
+%<*trace>
+ \PackageInfo{scrbase}{letting
+ \expandafter\string\csname extras\scr@reserved@a\endcsname\space
+ unused}%
+%</trace>
+ \expandafter\expandafter\expandafter\@gobbletwo
+ \else
+ \expandafter\expandafter\expandafter\g@addto@macro
+ \fi
+ \csname captions\scr@reserved@a\endcsname{%
+ \def#2{#3}%
+ }%
+ \scr@def@activateactivelanguageaftergroup{#2}{#3}%
+ }%
+ \fi
+ }%
+ \reserved@b
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@provide@captionname
+% \end{macro}^^A \providecaptionname
+%
+% \begin{macro}{\newcaptionname}
+% \changes{v2.8q}{2001/11/08}{neu}^^A
+% \changes{v2.9r}{2004/06/16}{Wenn die aktuelle Sprache, die geänderte
+% ist, wird die Anderung sofort aktiviert.}^^A
+% \changes{v2.95}{2006/03/10}{Ermittlung der aktuellen Sprache funktioniert
+% auch, wenn \cs{languagename} mit seltsamen catcodes erstellt wurde.}^^A
+% \changes{v3.00}{2008/05/02}{nach \textsf{scrbase} verschoben}^^A
+% \changes{v3.01b}{2008/12/07}{missing make undefined}^^A
+% \changes{v3.02c}{2009/02/17}{undefined test improved}^^A
+% \changes{v3.12}{2013/07/30}{Neuimplementierung nach dem Muster von
+% \cs{defcaptionname}}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% Wie \cs{defcaptionname} mit folgender Änderung: Existiert die
+% Sprache und der Begriff, so wird ein Fehler ausgegeben. Existiert die
+% Sprache aber nicht der Begriff, so wird er definiert. Existiert die Sprache
+% nicht, so wird sie definiert. Unter dieser Prämisse verwendet die
+% Sternversion \cs{extras\meta{Sprache}}, während die Normalversion
+% \cs{captions\meta{Sprache}} verwendet.
+% \begin{macrocode}
+\newcommand*{\newcaptionname}{%
+ \kernel@ifstar\scr@new@scaptionname\scr@new@captionname
+}
+% \end{macrocode}
+% \begin{macro}{\scr@new@scaptionname}
+% \changes{v3.12}{2013/07/30}{neu (intern)}^^A
+% \changes{v3.26}{2018/08/29}{diverse \cs{expandafter} eingespart}^^A
+% Die Sternvariante von \cs{newcaptionname}. Die Argumente sind dieselben.
+% \begin{macrocode}
+\newcommand*{\scr@new@scaptionname}[3]{%
+ \if@atdocument \expandafter\@firstofone
+ \else \expandafter\AtBeginDocument
+ \fi
+ {%
+ \begingroup
+ \let\reserved@b\endgroup
+ \edef\scr@reserved@a{#1}%
+ \@onelevel@sanitize\scr@reserved@a
+ \@for\scr@reserved@a:=\scr@reserved@a\do{%
+ \scr@trim@spaces\scr@reserved@a
+ \ifx\scr@reserved@a\@empty
+ \PackageWarning{scrbase}{empty language at \string\newcaptionname}%
+ \else
+% \end{macrocode}
+% Im Unterschied zu \cs{defcaptionname} darf der Begriff noch nicht definiert
+% sein.
+% \begin{macrocode}
+ \begingroup
+ \let#2\relax
+ \csname captions\scr@reserved@a\endcsname
+ \csname extras\scr@reserved@a\endcsname
+ \ifx #2\relax
+ \else
+ \PackageError{scrbase}{%
+ `\string#2' already defined\MessageBreak
+ for language `\scr@reserved@a'%
+ }{%
+ You've told me to define `\string#2' for language
+ `\scr@reserved@a',\MessageBreak
+ but is has already been defined.\MessageBreak
+ Nevertheless, if you'll continue it will be redefined.%
+ }%
+ \fi
+ \endgroup
+ \expandafter\ifx\csname extras\scr@reserved@a\endcsname\relax
+ \expandafter\expandafter\expandafter\gdef
+ \else
+ \expandafter\expandafter\expandafter\g@addto@macro
+ \fi
+ \csname extras\scr@reserved@a\endcsname{%
+ \def#2{#3}%
+ }%
+ \scr@def@activateactivelanguageaftergroup{#2}{#3}%
+ \fi
+ }%
+ \reserved@b
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@new@scaptionname
+% \begin{macro}{\scr@new@captionname}
+% \changes{v3.12}{2013/07/30}{neu (intern)}^^A
+% \changes{v3.26}{2018/08/29}{diverse \cs{expandafter} eingespart}^^A
+% Die Normalvariante von \cs{newcaptionname}, mit denselben Argumenten.
+% \begin{macrocode}
+\newcommand*{\scr@new@captionname}[3]{%
+ \if@atdocument \expandafter\@firstofone
+ \else \expandafter\AtBeginDocument
+ \fi
+ {%
+ \begingroup
+ \let\reserved@b\endgroup
+ \edef\scr@reserved@a{#1}%
+ \@onelevel@sanitize\scr@reserved@a
+ \@for\scr@reserved@a:=\scr@reserved@a\do{%
+ \scr@trim@spaces\scr@reserved@a
+ \ifx\scr@reserved@a\@empty
+ \PackageWarning{scrbase}{empty language at \string\newcaptionname}%
+ \else
+% \end{macrocode}
+% Im Unterschied zu \cs{defcaptionname} darf der Begriff noch nicht definiert
+% sein.
+% \begin{macrocode}
+ \begingroup
+ \let#2\relax
+ \csname captions\scr@reserved@a\endcsname
+ \csname extras\scr@reserved@a\endcsname
+ \ifx #2\relax
+ \else
+ \PackageError{scrbase}{%
+ `\string#2' already defined\MessageBreak
+ for language `\scr@reserved@a'%
+ }{%
+ You've told me to define `\string#2' for language
+ `\scr@reserved@a',\MessageBreak
+ but is has already been defined.\MessageBreak
+ Nevertheless, if you'll continue it will be redefined.%
+ }%
+ \fi
+ \endgroup
+ \expandafter\ifx\csname captions\scr@reserved@a\endcsname\relax
+ \expandafter\expandafter\expandafter\gdef
+ \else
+ \expandafter\expandafter\expandafter\g@addto@macro
+ \fi
+ \csname captions\scr@reserved@a\endcsname{%
+ \def#2{#3}%
+ }%
+ \scr@def@activateactivelanguageaftergroup{#2}{#3}%
+ \fi
+ }%
+ \reserved@b
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@new@captionname
+% \end{macro}^^A \newcaptionname
+%
+% \begin{macro}{\renewcaptionname}
+% \changes{v2.8q}{2001/11/08}{neu}^^A
+% \changes{v2.9r}{2004/06/16}{Wenn die aktuelle Sprache, die geänderte
+% ist, wird die Anderung sofort aktiviert.}^^A
+% \changes{v2.95}{2006/03/10}{Ermittlung der aktuellen Sprache funktioniert
+% auch, wenn \cs{languagename} mit seltsamen catcodes erstellt wurde.}^^A
+% \changes{v3.00}{2008/05/02}{nach \textsf{scrbase} verschoben}^^A
+% \changes{v3.01b}{2008/12/07}{missing make undefined}^^A
+% \changes{v3.02c}{2009/02/17}{undefined test improved}^^A
+% \changes{v3.12}{2013/07/30}{Neuimplementierung nach dem Muster von
+% \cs{defcaptionname}}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% Wie \cs{defcaptionname} mit folgender Änderung: Existiert die
+% Sprache nicht, so ist dies ein Fehler. Existiert die Sprache nicht aber der
+% Begriff, so ist dies ebenfalls ein Fehler. Existieren Sprache und Begriff,
+% so wird dieser umdefiniert. Unter dieser Voraussetzung ändert die
+% Sternvariante immer \cs{extras\meta{Sprache}}, während die Normalvariante
+% \cs{captions\meta{Sprache}} ändert, falls der Begriff nicht i
+% \cs{extras\meta{Sprache}} definiert war, und sonst \cs{extras\meta{Sprache}}.
+% \begin{macrocode}
+\newcommand*{\renewcaptionname}{%
+ \kernel@ifstar\scr@renew@scaptionname\scr@renew@captionname
+}
+% \end{macrocode}
+% \begin{macro}{\scr@renew@scaptionname}
+% \changes{v3.12}{2013/07/30}{neu (intern)}^^A
+% \changes{v3.26}{2018/08/29}{diverse \cs{expandafter} eingespart}^^A
+% Die Sternvariante von \cs{renewcaptionname}. Die Argumente sind dieselben.
+% \begin{macrocode}
+\newcommand*{\scr@renew@scaptionname}[3]{%
+ \if@atdocument \expandafter\@firstofone
+ \else \expandafter\AtBeginDocument
+ \fi
+ {%
+ \begingroup
+ \let\reserved@b\endgroup
+ \edef\scr@reserved@a{#1}%
+ \@onelevel@sanitize\scr@reserved@a
+ \@for\scr@reserved@a:=\scr@reserved@a\do{%
+ \scr@trim@spaces\scr@reserved@a
+ \ifx\scr@reserved@a\@empty
+ \PackageWarning{scrbase}{empty language at \string\renewcaptionname}%
+ \else
+% \end{macrocode}
+% Im Unterschied zu \cs{defcaptionname} muss der Begriff bereits definiert
+% sein.
+% \begin{macrocode}
+ \begingroup
+ \let#2\relax
+ \csname captions\scr@reserved@a\endcsname
+ \csname extras\scr@reserved@a\endcsname
+ \ifx #2\relax
+ \PackageError{scrbase}{%
+ `\string#2' not defined at language `\scr@reserved@a'%
+ }{%
+ You've told me to redefine `\string#2' at language
+ `\scr@reserved@a',\MessageBreak
+ but is hasn't been defined before.\MessageBreak
+ Nevertheless, if you'll continue I'll define it at
+ `\expandafter\string\csname extras\scr@reserved@a\endcsname'%
+ }%
+ \fi
+ \endgroup
+ \expandafter\ifx\csname extras\scr@reserved@a\endcsname\relax
+ \expandafter\expandafter\expandafter\gdef
+ \else
+ \expandafter\expandafter\expandafter\g@addto@macro
+ \fi
+ \csname extras\scr@reserved@a\endcsname{%
+ \def#2{#3}%
+ }%
+ \scr@def@activateactivelanguageaftergroup{#2}{#3}%
+ \fi
+ }%
+ \reserved@b
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@renew@scaptionname
+% \begin{macro}{\scr@renew@captionname}
+% \changes{v3.12}{2013/07/30}{neu (intern)}^^A
+% \changes{v3.26}{2018/08/29}{diverse \cs{expandafter} eingespart}^^A
+% Die Normalvariante von \cs{renewcaptionname}, mit denselben Argumenten.
+% \begin{macrocode}
+\newcommand*{\scr@renew@captionname}[3]{%
+ \if@atdocument \expandafter\@firstofone
+ \else \expandafter\AtBeginDocument
+ \fi
+ {%
+ \begingroup
+ \let\reserved@b\endgroup
+ \edef\scr@reserved@a{#1}%
+ \@onelevel@sanitize\scr@reserved@a
+ \@for\scr@reserved@a:=\scr@reserved@a\do{%
+ \scr@trim@spaces\scr@reserved@a
+ \ifx\scr@reserved@a\@empty
+ \PackageWarning{scrbase}{empty language at \string\renewcaptionname}%
+ \else
+% \end{macrocode}
+% Im Unterschied zu \cs{defcaptionname} muss der Begriff bereits definiert
+% sein.
+% \begin{macrocode}
+ \begingroup
+ \let#2\relax
+ \csname extras\scr@reserved@a\endcsname
+ \ifx #2\relax
+ \csname captions\scr@reserved@a\endcsname
+ \ifx #2\relax
+ \PackageError{scrbase}{%
+ `\string#2' not defined at language `\scr@reserved@a'%
+ }{%
+ You've told me to redefine `\string#2' at language
+ `\scr@reserved@a',\MessageBreak
+ but it hasn't been defined before.\MessageBreak
+ Nevertheless, if you'll continue I'll define it at
+ `\expandafter\string
+ \csname captions\scr@reserved@a\endcsname'%
+ }%
+ \fi
+ \expandafter\ifx\csname captions\scr@reserved@a\endcsname\relax
+ \expandafter\expandafter\expandafter\gdef
+ \else
+ \expandafter\expandafter\expandafter\g@addto@macro
+ \fi
+ \csname captions\scr@reserved@a\endcsname{\def#2{#3}}%
+ \else
+ \expandafter\ifx\csname extras\scr@reserved@a\endcsname\relax
+ \expandafter\expandafter\expandafter\gdef
+ \else
+ \expandafter\expandafter\expandafter\g@addto@macro
+ \fi
+ \csname extras\scr@reserved@a\endcsname{\def#2{#3}}%
+ \fi
+ \endgroup
+ \scr@def@activateactivelanguageaftergroup{#2}{#3}%
+ \fi
+ }%
+ \reserved@b
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@renew@captionname
+% \end{macro}^^A \renewcaptionname
+%
+% \iffalse
+%</package&base>
+% \fi
+%
+%
+% \subsection{Definitionen für ein nummerisches Datum}
+% Bei Briefen kann ein nummerisches oder ein symbolisches Datum verwendet
+% werden.
+%
+% \iffalse
+%<*letter>
+% \fi
+%
+% \begin{macro}{\g@addnumerical@date}
+% Dazu ist es notwendig, ggf. das bereits definierte symbolische Datum durch
+% ein nummerisches zu ergänzen.
+% \begin{macrocode}
+\newcommand*{\g@addnumerical@date}[2]{%
+ \@ifundefined{date#1}{%
+%<class> \ClassInfo{scrlttr2%
+%<package> \PackageInfo{scrletter%
+ }{%
+ no date found for language `#1'\MessageBreak
+ --> skipped%
+ }%
+ }{%
+ \expandafter\g@addto@macro\csname date#1\endcsname{%
+ \let\sym@date=\today%
+ \def\num@date{#2}%
+ \def\today{\if@orgdate\sym@date\else\num@date\fi}%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \iffalse
+%</letter>
+% \fi
+%
+%
+% \subsection{Festlegungen für einzelne Sprachen}
+%
+% Es folgen nun für einzelne Sprachen konkrete Festlegungen, die für Briefe
+% benötigt werden.
+%
+% \iffalse
+%<*letter>
+% \fi
+%
+% \begin{macro}{\captionsenglish}
+% \changes{v3.13}{2014/01/07}{diverse neue Dialekte}^^A
+% \begin{macro}{\dateenglish}
+% \begin{macro}{\captionsUSenglish}
+% \begin{macro}{\dateUSenglish}
+% \begin{macro}{\captionsamerican}
+% \changes{v2.4c}{1997/11/25}{american identisch mit USenglish definiert}
+% \begin{macro}{\dateamerican}
+% \changes{v2.4c}{1997/11/25}{american identisch mit USenglish definiert}
+% \begin{macro}{\captionsbritish}
+% \changes{v2.4c}{1997/11/25}{british identisch mit english definiert}
+% \begin{macro}{\datebritish}
+% \changes{v2.4c}{1997/11/25}{british identisch mit english definiert}
+% \begin{macro}{\captionsUKenglish}
+% \changes{v2.4c}{1997/11/25}{UKenglish identisch mit english definiert}
+% \begin{macro}{\dateUKenglish}
+% \changes{v2.4c}{1997/11/25}{UKenglish identisch mit english definiert}
+% \begin{macro}{\captionsukenglish}
+% \changes{v3.24}{2017/05/29}{ukenglish identisch mit UKenglish definiert}
+% \begin{macro}{\dateukenglish}
+% \changes{v3.24}{2017/05/29}{ukenglish identisch mit UKenglish definiert}
+% \begin{macro}{\captionsusenglish}
+% \changes{v3.24}{2017/05/29}{usenglish identisch mit USenglish definiert}
+% \begin{macro}{\dateusenglish}
+% \changes{v3.24}{2017/05/29}{usenglish identisch mit USenglish definiert}
+% \begin{macro}{\captionsgerman}
+% \changes{v3.13}{2014/01/07}{neue Dialekte}^^A
+% \begin{macro}{\dategerman}
+% \begin{macro}{\captionsngerman}
+% \changes{v2.5}{1999/09/08}{ngerman neu und identisch mit german}^^A
+% \changes{v3.12a}{2014/03/08}{außer \texttt{german} verwenden alle
+% deutschen Sprachen »Telefon«}^^A
+% \begin{macro}{\datengerman}
+% \changes{v2.5}{1999/09/08}{ngerman neu und identisch mit german}^^A
+% \begin{macro}{\captionsaustrian}
+% \begin{macro}{\dateaustrian}
+% \begin{macro}{\captionsnaustrian}
+% \changes{v3.09}{2011/03/10}{naustrian neu und identisch mit austrian}^^A
+% \begin{macro}{\datenaustrian}
+% \changes{v3.09}{2011/03/10}{naustrian neu und identisch mit austrian}^^A
+% \begin{macro}{\captionsfrench}
+% \changes{v3.13}{2014/01/07}{diverse neue Dialekte}^^A
+% \begin{macro}{\datefrench}
+% \begin{macro}{\captionsitalian}
+% \begin{macro}{\dateitalian}
+% \changes{v2.3e}{1996/05/31}{Ich hoffe, dass das stimmt}^^A
+% \begin{macro}{\captionsspanish}
+% \begin{macro}{\datespanish}
+% \changes{v2.4c}{1997/11/25}{Ich hoffe, dass das stimmt}^^A
+% \changes{v2.4c}{1997/11/25}{Datumsumschaltung nicht mehr zwingend}
+% \begin{macro}{\captionscroation}
+% \changes{v2.8q}{2001/05/10}{Neu}^^A
+% \begin{macro}{\datecroatian}
+% \changes{v2.8q}{2001/05/10}{Neu}^^A
+% \begin{macro}{\captionsdutch}
+% \changes{v2.8q}{2002/02/01}{Neu}^^A
+% \begin{macro}{\datedutch}
+% \changes{v2.8q}{2002/02/01}{Neu}^^A
+% \begin{macro}{\captionsfinnish}
+% \changes{v2.9u}{2005/02/07}{Unterstützung für Finnisch (Dank Hannu
+% Väisänen)}^^A
+% \changes{v2.9u}{2005/02/07}{Neu}^^A
+% \begin{macro}{\datefinnish}
+% \changes{v2.9u}{2005/02/07}{Neu}^^A
+% \changes{v3.01c}{2008/12/29}{Aktivierung korrigiert}^^A
+% \begin{macro}{\captionsnorsk}
+% \changes{v3.02}{2009/01/01}{Neu}^^A
+% \begin{macro}{\datenorsk}
+% \changes{v3.02}{2009/01/01}{Neu}^^A
+% \begin{macro}{\captionsnorsk}
+% \changes{v3.08}{2011/01/20}{Neu (Dank Benjamin Hell)}^^A
+% \begin{macro}{\datenorsk}
+% \changes{v3.08}{2011/01/20}{Neu (Dank Benjamin Hell)}^^A
+% \begin{macro}{\captionspolish}
+% \changes{v3.13}{2014/02/01}{Neu (Dank Blandyna Bogdol)}^^A
+% \begin{macro}{\datepolish}
+% \changes{v3.13}{2014/02/01}{Neu (Dank Blandyna Bogdol)}^^A
+% \begin{macro}{\captionsczech}
+% \changes{v3.13}{2014/02/10}{Neu (Dank Elke Schubert)}^^A
+% \begin{macro}{\dateczech}
+% \changes{v3.13}{2014/02/10}{Neu (Dank Elke Schubert)}^^A
+% \begin{macro}{\dateslovak}
+% \changes{v3.13}{2014/02/28}{Neu (Dank Elke Schubert)}^^A
+% Weil es in früheren Versionen zu Problemen damit gekommen ist,
+% werden diese jedoch erst bei |\begin{document}| definiert. Dabei
+% wird |\providecaptionname| verwendet, so dass sie auch schon vor
+% |\begin{document}| mit |\newcaptionname| anderslautend definiert
+% werden können.
+% \begin{table}
+% \centering
+% \begin{tabular}{ll}
+% Sprache & Spender \\\hline\\[-1.6ex]
+% Deutsch & Frank Neukam, Markus Kohm \\
+% English & Frank Neukam, Michael Dewey, Markus Kohm \\
+% Finnisch & Hannu Väisänen \\
+% Französisch & Frank Neukam, Henk Jongbloets \\
+% Holländisch & Henk Jongbloets \\
+% Italienisch & Simone Naldi \\
+% Kroatisch & Branka Lon\v{c}arevi\'{c} \\
+% Norwegisch & Sveinung Heggen \\
+% Polnish & Blandyna Bogdol \\
+% Schwedisch & Benjamin Hell\\
+% Spanisch & Ralph J.\ Hangleiter, Alejandro L\'opez-Valencia\\
+% Tschechisch & Elke Schubert\\
+% Slovakisch & Elke Schubert\\
+% \end{tabular}
+% \caption{Liste der unterstützten Sprachen und der
+% \emph{Sprachspender}}
+% \end{table}
+% Eine Besonderheit stellt die englische Sprache dar. Es wird
+% versucht, diese als Notersatz immer zu definieren.
+% \begin{macrocode}
+\AtBeginDocument{%
+ \@ifundefined{captionsenglish}{\let\captionsenglish\@empty}{}%
+ \@ifundefined{dateenglish}{\def\dateenglish{%
+% \end{macrocode}
+% \iffalse
+%</letter>
+%<*letter|class>
+% \fi
+% \begin{macrocode}
+ \def\today{\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
+ \space\number\day, \number\year}%
+% \end{macrocode}
+% \iffalse
+%</letter|class>
+%<*letter>
+% \fi
+% \begin{macrocode}
+ }%
+ }{}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\yourrefname{Your ref.}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\yourmailname{Your letter of}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\myrefname{Our ref.}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\customername{Customer no.}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\invoicename{Invoice no.}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\subjectname{Subject}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\ccname{cc}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\enclname{encl}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\headtoname{To}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\headfromname{From}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\datename{Date}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\pagename{Page}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\phonename{Phone}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\mobilephonename{Mobile phone}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\faxname{Fax}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\emailname{Email}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\wwwname{Url}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\bankname{Bank account}%
+ \g@addnumerical@date{american}{\number\month/\number\day/\number\year}%
+ \g@addnumerical@date{australien}{\number\day/\number\month/\number\year}%
+ \g@addnumerical@date{british}{\number\day/\number\month/\number\year}%
+ \g@addnumerical@date{canadian}{\number\year/\number\month/\number\day}%
+ \g@addnumerical@date{english}{\number\day/\number\month/\number\year}%
+ \g@addnumerical@date{newzealand}{\number\day/\number\month/\number\year}%
+ \g@addnumerical@date{UKenglish}{\number\day/\number\month/\number\year}%
+ \g@addnumerical@date{ukenglish}{\number\day/\number\month/\number\year}%
+ \g@addnumerical@date{USenglish}{\number\month/\number\day/\number\year}%
+ \g@addnumerical@date{usenglish}{\number\month/\number\day/\number\year}%
+ \providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\yourrefname{Ihr Zeichen}%
+ \providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\yourmailname{Ihr Schreiben vom}%
+ \providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\myrefname{Unser Zeichen}%
+ \providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\customername{Kundennummer}%
+ \providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\invoicename{Rechnungsnummer}%
+ \providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\subjectname{Betrifft}%
+ \providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\ccname{Kopien an}%
+ \providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\enclname{Anlage}%
+ \providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\headtoname{An}%
+ \providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\headfromname{Von}%
+ \providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\datename{Datum}%
+ \providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\pagename{Seite}%
+ \providecaptionname{german}\phonename{Telephon}%
+ \providecaptionname{ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\phonename{Telefon}%
+ \providecaptionname{german}\mobilephonename{Mobiltelephon}%
+ \providecaptionname{ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\mobilephonename{Mobiltelefon}%
+ \providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\faxname{Fax}%
+ \providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\emailname{E-Mail}%
+ \providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\wwwname{URL}%
+ \providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\bankname{Bankverbindung}%
+ \g@addnumerical@date{german}{\number\day.\,\number\month.\,\number\year}%
+ \g@addnumerical@date{ngerman}{\number\day.\,\number\month.\,\number\year}%
+ \g@addnumerical@date{austrian}{\number\day.\,\number\month.\,\number\year}%
+ \g@addnumerical@date{naustrian}{\number\day.\,\number\month.\,\number\year}%
+ \g@addnumerical@date{swissgerman}{\number\day.\,\number\month.\,\number\year}%
+ \g@addnumerical@date{nswissgerman}{%
+ \number\day.\,\number\month.\,\number\year}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\yourrefname{Vos r\'ef\'erences}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\yourmailname{Votre lettre du}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\myrefname{Nos r\'ef\'erences}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\customername{Num\'ero de client}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\invoicename{Num\'ero de facture}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\subjectname{Concernant}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\ccname{Copie \`a}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\enclname{Annexes}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\headtoname{A}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\headfromname{De}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\datename{Date}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\pagename{Page}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\phonename{T\'el\'ephone}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\mobilephonename{Portable}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\faxname{T\'el\'efax}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\emailname{E-mail}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\wwwname{URL}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\bankname{Compte en banque}%
+ \g@addnumerical@date{acadian}{\number\day.\,\number\month.\,\number\year}%
+ \g@addnumerical@date{canadien}{\number\year/\number\month/\number\day}%
+ \g@addnumerical@date{francais}{\number\day.\,\number\month.\,\number\year}%
+ \g@addnumerical@date{french}{\number\day.\,\number\month.\,\number\year}%
+ \providecaptionname{italian}\yourrefname{Vs./Rif.}% or Vostro Riferimento
+ \providecaptionname{italian}\yourmailname{Vs.~lettera del}% or Vostra
+ % lettera del
+ \providecaptionname{italian}\myrefname{Ns./Rif.}% or Nostro Riferimento
+ \providecaptionname{italian}\customername{Nr.~cliente}% or Cliente num.
+ \providecaptionname{italian}\invoicename{Nr.~fattura}% or Fattura num.
+ \providecaptionname{italian}\subjectname{Oggetto}%
+ \providecaptionname{italian}\ccname{Per conoscenza}% or Copia a
+ \providecaptionname{italian}\enclname{Allegato}% or (plural) Allegati
+ \providecaptionname{italian}\headtoname{A}%
+ \providecaptionname{italian}\headfromname{Da}%
+ \providecaptionname{italian}\datename{Data}%
+ \providecaptionname{italian}\pagename{Pagina}%
+ \providecaptionname{italian}\phonename{Telefono}%
+ \providecaptionname{italian}\mobilephonename{Telefonino}%
+ \providecaptionname{italian}\faxname{Fax}%
+ \providecaptionname{italian}\emailname{Email}%
+ \providecaptionname{italian}\wwwname{Sito Web}%
+ \providecaptionname{italian}\bankname{Conto bancario}%
+ \g@addnumerical@date{italian}{\number\day.\,\number\month.\,\number\year}%
+ \providecaptionname{spanish}\yourrefname{Su ref.}%
+ \providecaptionname{spanish}\yourmailname{Su carta de}%
+ \providecaptionname{spanish}\myrefname{Nuestra ref.}%
+ \providecaptionname{spanish}\customername{No. de cliente}%
+ \providecaptionname{spanish}\invoicename{No. de factura}%
+ \providecaptionname{spanish}\subjectname{Asunto}%
+ \providecaptionname{spanish}\ccname{Copias}%
+ \providecaptionname{spanish}\enclname{Adjunto}%
+ \providecaptionname{spanish}\headtoname{A}%
+ \providecaptionname{spanish}\headfromname{De}%
+ \providecaptionname{spanish}\datename{Fecha}%
+ \providecaptionname{spanish}\pagename{P\'agina}%
+ \providecaptionname{spanish}\phonename{Tel\'efono}%
+ \providecaptionname{spanish}\mobilephonename{M\'ovil}%
+ \providecaptionname{spanish}\faxname{Fax}%
+ \providecaptionname{spanish}\emailname{Email}% or Correo electr\'onico
+ \providecaptionname{spanish}\wwwname{URL}% or P\`agina web
+ \providecaptionname{spanish}\bankname{Cuenta bancaria}%
+ \g@addnumerical@date{spanish}{\number\day.\,\number\month.\,\number\year}%
+ \providecaptionname{croatian}\yourrefname{Va\v{s} znak}%
+ \providecaptionname{croatian}\yourmailname{Va\v{s}e pismo od}%
+ \providecaptionname{croatian}\myrefname{Na\v{s} znak}%
+ \providecaptionname{croatian}\customername{Broj kupca}%
+ \providecaptionname{croatian}\invoicename{Broj fakture}%
+ \providecaptionname{croatian}\subjectname{Predmet}%
+ \providecaptionname{croatian}\ccname{Kopija}%
+ \providecaptionname{croatian}\enclname{Privitak}%
+ \providecaptionname{croatian}\headtoname{Prima}%
+ \providecaptionname{croatian}\headfromname{\v{S}alje}%
+ \providecaptionname{croatian}\datename{Nadnevak}%
+ \providecaptionname{croatian}\pagename{Stranica}%
+ \providecaptionname{croatian}\phonename{Telefon}%
+ \providecaptionname{croatian}\mobilphonename{Mobitel}%
+ \providecaptionname{croatian}\faxname{Fax}%
+ \providecaptionname{croatian}\emailname{E-Mail}%
+ \providecaptionname{croatian}\wwwname{URL}%
+ \providecaptionname{croatian}\bankname{Bankovna veza}%
+ \g@addnumerical@date{croatian}{\number\day.\,\number\month.\,\number\year.}%
+ \providecaptionname{dutch}\yourrefname{Uw kenmerk}%
+ \providecaptionname{dutch}\yourmailname{Uw brief van}%
+ \providecaptionname{dutch}\myrefname{Ons kenmerk}%
+ \providecaptionname{dutch}\customername{Klant No.}%
+ \providecaptionname{dutch}\invoicename{Rekening No.}%
+ \providecaptionname{dutch}\subjectname{Onderwerp}%
+ \providecaptionname{dutch}\ccname{Kopie aan}%
+ \providecaptionname{dutch}\enclname{Bijlage(n)}%
+ \providecaptionname{dutch}\headtoname{Aan}%
+ \providecaptionname{dutch}\headfromname{Van}%
+ \providecaptionname{dutch}\datename{Datum}%
+ \providecaptionname{dutch}\pagename{Pagina}%
+ \providecaptionname{dutch}\phonename{Telefoon}%
+ \providecaptionname{dutch}\mobilephonename{Mobieltje}%
+ \providecaptionname{dutch}\faxname{Fax}%
+ \providecaptionname{dutch}\emailname{E--mail}%
+ \providecaptionname{dutch}\wwwname{URL}%
+ \providecaptionname{dutch}\bankname{Bankrekening}%
+ \g@addnumerical@date{dutch}{\number\day.\,\number\month.\,\number\year}%
+ \providecaptionname{finnish}\yourrefname{Viitteenne}%
+ \providecaptionname{finnish}\yourmailname{Kirjeenne}%
+ \providecaptionname{finnish}\myrefname{Viitteemme}%
+ \providecaptionname{finnish}\customername{Asiakasnumero}%
+ \providecaptionname{finnish}\invoicename{Laskun numero}%
+ \providecaptionname{finnish}\subjectname{Asia}%
+ \providecaptionname{finnish}\ccname{Jakelu}%
+ \providecaptionname{finnish}\enclname{Liitteet}%
+ \providecaptionname{finnish}\headtoname{Vastaanottaja}%
+ \providecaptionname{finnish}\headfromname{L\"ahett\"aj\"a}%
+ \providecaptionname{finnish}\datename{P\"aiv\"a}%
+ \providecaptionname{finnish}\pagename{Sivu}%
+ \providecaptionname{finnish}\phonename{Puhelin}%
+ \providecaptionname{finnish}\mobilephonename{Matkapuhelin}%
+ \providecaptionname{finnish}\faxname{Faksi}%
+ \providecaptionname{finnish}\emailname{S\"ahk\"oposti}%
+ \providecaptionname{finnish}\wwwname{URL}%
+ \providecaptionname{finnish}\bankname{Pankkitilin numero}%
+ \g@addnumerical@date{finnish}{\number\day.\number\month.\number\year}%
+ \providecaptionname{norsk}\yourrefname{Deres ref.}%
+ \providecaptionname{norsk}\yourmailname{Deres brev av:}%
+ \providecaptionname{norsk}\myrefname{V\aa{}r ref:}%
+ \providecaptionname{norsk}\customername{Kundenummer}%
+ \providecaptionname{norsk}\invoicename{Fakturanummer}%
+ \providecaptionname{norsk}\subjectname{Emne}%
+ \providecaptionname{norsk}\ccname{Kopi til}%
+ \providecaptionname{norsk}\enclname{Vedlegg}%
+ \providecaptionname{norsk}\headtoname{Til}%
+ \providecaptionname{norsk}\headfromname{Fra}%
+ \providecaptionname{norsk}\datename{Dato}%
+ \providecaptionname{norsk}\pagename{Side}%
+ \providecaptionname{norsk}\phonename{Telefon}%
+ \providecaptionname{norsk}\mobilephonename{Mobiltelefon}%
+ \providecaptionname{norsk}\faxname{Telefaks}%
+ \providecaptionname{norsk}\emailname{E-post}%
+ \providecaptionname{norsk}\wwwname{Url}%
+ \providecaptionname{norsk}\bankname{Bankkontonummer}%
+ \g@addnumerical@date{norsk}{\number\day.\number\month.\number\year}%
+ \providecaptionname{swedish}\yourrefname{Er ref}%
+ \providecaptionname{swedish}\yourmailname{Ert brev av}%
+ \providecaptionname{swedish}\myrefname{V\aa{}r ref}%
+ \providecaptionname{swedish}\customername{Kundnummer}%
+ \providecaptionname{swedish}\invoicename{Fakturanummer}%
+ \providecaptionname{swedish}\subjectname{\"Amne}%
+% \end{macrocode}
+% "`Kopia"' oder "`Kopia till"' geht beides -- da im Deutschen die
+% lange Form verwendet wird nehmen wir die auch hier:
+% \begin{macrocode}
+ \providecaptionname{swedish}\ccname{Kopia till}%
+% \end{macrocode}
+% "`Bilaga"' ist Singular. Bei mehreren Anlagen schreibt man
+% "`Bilagor"'. Da wir nicht wissen, ob es eine oder mehrere Anlagen sind,
+% haben wir ein kleines Problem und gehen mal von mehreren aus:
+% \begin{macrocode}
+ \providecaptionname{swedish}\enclname{Bilagor}% Singular: Bilaga
+ \providecaptionname{swedish}\headtoname{Till}%
+ \providecaptionname{swedish}\headfromname{Fr\aa{}n}%
+ \providecaptionname{swedish}\datename{Datum}%
+ \providecaptionname{swedish}\pagename{Sida}%
+ \providecaptionname{swedish}\phonename{Telefon}%
+ \providecaptionname{swedish}\mobilephonename{Mobiltelefon}%
+ \providecaptionname{swedish}\faxname{Telefax}%
+ \providecaptionname{swedish}\emailname{E-post}%
+ \providecaptionname{swedish}\wwwname{Hemsida}%
+% \end{macrocode}
+% Für \cs{bankname} gibt es zwei verschiedene Ausdrücke, je nachdem um
+% welche Kontoform es sich handelt: "`Bankgiro"' und "`PlusGiro"'. Beide
+% sind etwa gleich verbreitet, evtl. mit einem leichten Vorteil für
+% Bankgiro.
+% \begin{macrocode}
+ \providecaptionname{swedish}\bankname{Bankgiro}% PlusGiro
+% \end{macrocode}
+% Statt der ISO-Variante wird hier die traditionelle Variante,
+% "`18/1 2011"', verwendet.
+% \begin{macrocode}
+ \g@addnumerical@date{swedish}{\number\day/\number\month~\number\year}%
+ \providecaptionname{polish}\yourrefname{Wasz znak}%
+ \providecaptionname{polish}\yourmailname{Wasze pismo z dnia}%
+ \providecaptionname{polish}\myrefname{Nasz znak}%
+ \providecaptionname{polish}\customername{Numer klienta}%
+ \providecaptionname{polish}\invoicename{Numer rachunku}%
+ \providecaptionname{polish}\subjectname{Dotyczy}%
+ \providecaptionname{polish}\ccname{Rozdzielnik}%
+ \providecaptionname{polish}\enclname{Za\l\aob{}czniki}%
+ \providecaptionname{polish}\headtoname{Do}%
+ \providecaptionname{polish}\headfromname{Od}%
+ \providecaptionname{polish}\datename{Data}%
+ \providecaptionname{polish}\pagename{Strona}%
+ \providecaptionname{polish}\phonename{Telefon}%
+ \providecaptionname{polish}\mobilephonename{Numer mobilny}%
+ \providecaptionname{polish}\faxname{Fax}%
+ \providecaptionname{polish}\emailname{E-mail}%
+ \providecaptionname{polish}\wwwname{URL}%
+ \providecaptionname{polish}\bankname{Konto}%
+ \g@addnumerical@date{polish}{\number\day.\,\number\month.\,\number\year}%
+ \providecaptionname{czech}\yourrefname{Va\v{s}e zna\v{c}ka}%
+ \providecaptionname{czech}\yourmailname{V\'{a}\v{s} dopis ze dne}%
+ \providecaptionname{czech}\myrefname{Na\v{s}e zna\v{c}ka}%
+ \providecaptionname{czech}\customername{Z\'akaznick\'e \v{c}\'{\i}slo}%
+ \providecaptionname{czech}\invoicename{Fakura\v{c}n\'{\i} \v{c}\'{\i}slo}%
+ \providecaptionname{czech}\subjectname{Pr\v{e}dm\v{e}t}%
+ \providecaptionname{czech}\ccname{Kopie}%
+ \providecaptionname{czech}\enclname{P\v{r}\'{\i}loha}%
+ \providecaptionname{czech}\headtoname{Komu}%
+ \providecaptionname{czech}\headfromname{Od}%
+ \providecaptionname{czech}\datename{Datum}%
+ \providecaptionname{czech}\pagename{Strana}%
+ \providecaptionname{czech}\phonename{Telefon}%
+ \providecaptionname{czech}\mobilephonename{Mobil}%
+ \providecaptionname{czech}\faxname{Fax}%
+ \providecaptionname{czech}\emailname{E-Mail}%
+ \providecaptionname{czech}\wwwname{URL}%
+ \providecaptionname{czech}\bankname{Bankovn\'{\i} spojen\'{\i}}%
+ \g@addnumerical@date{czech}{\number\day.\,\number\month.\,\number\year}%
+ \providecaptionname{slovak}\yourrefname{Va\v{s}a zna\v{c}ka}%
+ \providecaptionname{slovak}\yourmailname{V\'{a}\v{s} list zo d\v{n}a}%
+ \providecaptionname{slovak}\myrefname{Na\v{s}a zna\v{c}ka}%
+ \providecaptionname{slovak}\customername{Z\'akazn\'{\i}cke \v{c}\'{\i}slo}%
+ \providecaptionname{slovak}\invoicename{\'{C}\'{\i}slo fakt\'ury}%
+ \providecaptionname{slovak}\subjectname{Predmet}%
+ \providecaptionname{slovak}\ccname{K\'{o}pia pre koho}%
+ \providecaptionname{slovak}\enclname{Pr\'{\i}loha}%
+ \providecaptionname{slovak}\headtoname{Komu}%
+ \providecaptionname{slovak}\headfromname{Od}%
+ \providecaptionname{slovak}\datename{D\'{a}tum}%
+ \providecaptionname{slovak}\pagename{Strana}%
+ \providecaptionname{slovak}\phonename{Telef\'{o}n}%
+ \providecaptionname{slovak}\mobilephonename{Mobil}%
+ \providecaptionname{slovak}\faxname{Fax}%
+ \providecaptionname{slovak}\emailname{E-Mail}%
+ \providecaptionname{slovak}\wwwname{URL}%
+ \providecaptionname{slovak}\bankname{Bankov\'{e} spojenie}%
+ \g@addnumerical@date{slovak}{\number\day.\,\number\month.\,\number\year}%
+% \end{macrocode}
+% Zum Schluss findet noch die eigentliche Auswahl statt. Diese orientiert
+% sich nun an der Auswahl nach german.sty~2.5b und verwendet keine festen
+% Sprachzuordnungen mehr. Dafür sind nun keine Erweiterungen für andere
+% Sprachen mehr möglich.
+% \changes{v2.2c}{1995/03/20}{Im Sprachenvergleich fehlten die "`="'
+% hinter \cs{language}}
+% \changes{v2.4c}{1997/11/25}{Sprachauswahl um american, british,
+% UKenglish und spanish erweitert}^^A
+% \changes{v2.5}{1999/09/08}{Sprachauswahl um ngermen erweitert}^^A
+% \changes{v2.5b}{2000/01/20}{Reaktivierung der Sprache geschieht
+% nun via \cs{languagename}, soweit dies möglich ist}
+% \changes{v2.5e}{2000/07/14}{Workaround für Sprache nohyphenation
+% durch Format mit Babel-Erweiterung aber kein Babel package
+% geladen}^^A
+% \begin{macrocode}
+ \captionsenglish
+ \dateenglish
+% \end{macrocode}
+% \changes{v2.9i}{2002/09/04}{Workaround für den
+% \texttt{hyphen.cfg}-Bug von Babel}
+% \changes{v2.97c}{2007/08/10}{Text einer Warnung geändert}^^A
+% \changes{v3.18a}{2015/07/03}{\cs{extras\dots} werden auch ausgeführt}^^A
+% \changes{v3.18a}{2015/07/03}{sprachabhhängige Befehle mit \cs{@nameuse}}^^A
+% Wird die \texttt{hyphen.cfg} von Babel verwendet, wird aber das
+% \textsl{babel}-Paket nicht geladen, so ist \cs{languagename} häufig
+% nicht korrekt, so dass dann \cs{selectlanguage} mit
+% \cs{languagename} als Argument schief geht. Daher hier ein
+% Workaround für das Problem.
+% \begin{macrocode}
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname date\languagename\endcsname\relax
+%<class> \ClassWarningNoLine{scrlttr2%
+%<package> \PackageWarningNoLine{scrletter%
+ }{%
+ \string\language\space is \the\language, \string\languagename\space is
+ `\languagename'\MessageBreak
+ but \expandafter\string\csname
+ date\languagename\endcsname\space not defined!\MessageBreak
+ This seems to be a bug at you're `hyphen.cfg'.\MessageBreak
+ Undefining macro \string\languagename\space to avoid errors%
+ }%
+ \let\languagename=\undefined
+ \fi
+ \ifx\languagename\undefined
+%<class> \ClassWarningNoLine{scrlttr2%
+%<package> \PackageWarningNoLine{scrletter%
+ }{\string\languagename\space not
+ defined, using \string\language.\MessageBreak
+ This may result in use of wrong language!\MessageBreak
+ You should use a compatible language
+ package\MessageBreak
+ (e.g. `Babel', `german', `ngerman', ...)}%
+ \ifx\l@american\undefined\else\ifnum\language=\l@american
+ \@nameuse{captionsamerican}%
+ \@nameuse{extrasamerican}%
+ \@nameuse{dateamerican}%
+ \fi\fi
+ \ifx\l@australian\undefined\else\ifnum\language=\l@australian
+ \@nameuse{captionsaustralian}%
+ \@nameuse{extrasaustralian}%
+ \@nameuse{dateaustralian}%
+ \fi\fi
+ \ifx\l@british\undefined\else\ifnum\language=\l@british
+ \@nameuse{captionsbritish}%
+ \@nameuse{extrasbritish}%
+ \@nameuse{datebritish}%
+ \fi\fi
+ \ifx\l@canadian\undefined\else\ifnum\language=\l@canadian
+ \@nameuse{captionscanadian}%
+ \@nameuse{extrascanadian}%
+ \@nameuse{datecanadian}%
+ \fi\fi
+ \ifx\l@newzealand\undefined\else\ifnum\language=\l@newzealand
+ \@nameuse{captionsnewzealand}%
+ \@nameuse{extrasnewzealand}%
+ \@nameuse{datenewzealand}%
+ \fi\fi
+ \ifx\l@UKenglish\undefined\else\ifnum\language=\l@UKenglish
+ \@nameuse{captionsUKenglish}%
+ \@nameuse{extrasUKenglish}%
+ \@nameuse{dateUKenglish}%
+ \fi\fi
+ \ifx\l@ukenglish\undefined\else\ifnum\language=\l@ukenglish
+ \@nameuse{captionsukenglish}%
+ \@nameuse{extrasukenglish}%
+ \@nameuse{dateukenglish}%
+ \fi\fi
+ \ifx\l@USenglish\undefined\else\ifnum\language=\l@USenglish
+ \@nameuse{captionsUSenglish}%
+ \@nameuse{extrasUSenglish}%
+ \@nameuse{dateUSenglish}%
+ \fi\fi
+ \ifx\l@usenglish\undefined\else\ifnum\language=\l@usenglish
+ \@nameuse{captionsusenglish}%
+ \@nameuse{extrasusenglish}%
+ \@nameuse{dateusenglish}%
+ \fi\fi
+ \ifx\l@austrian\undefined\else\ifnum\language=\l@austrian
+ \@nameuse{captionsaustrian}%
+ \@nameuse{extrasaustrian}%
+ \@nameuse{dateaustrian}%
+ \fi\fi
+ \ifx\l@naustrian\undefined\else\ifnum\language=\l@naustrian
+ \@nameuse{captionsnaustrian}%
+ \@nameuse{extrasnaustrian}%
+ \@nameuse{datenaustrian}%
+ \fi\fi
+ \ifx\l@german\undefined\else\ifnum\language=\l@german
+ \@nameuse{captionsgerman}%
+ \@nameuse{extrasgerman}%
+ \@nameuse{dategerman}%
+ \fi\fi
+ \ifx\l@ngerman\undefined\else\ifnum\language=\l@ngerman
+ \@nameuse{captionsngerman}%
+ \@nameuse{extrasngerman}%
+ \@nameuse{datengerman}%
+ \fi\fi
+ \ifx\l@swissgerman\undefined\else\ifnum\language=\l@swissgerman
+ \@nameuse{captionsswissgerman}%
+ \@nameuse{extrasswissgerman}%
+ \@nameuse{dateswissgerman}%
+ \fi\fi
+ \ifx\l@nswissgerman\undefined\else\ifnum\language=\l@nswissgerman
+ \@nameuse{captionsnswissgerman}%
+ \@nameuse{extrasnswissgerman}%
+ \@nameuse{datenswissgerman}%
+ \fi\fi
+ \ifx\l@acadian\undefined\else\ifnum\language=\l@acadian
+ \@nameuse{captionsacadian}%
+ \@nameuse{extrasacadian}%
+ \@nameuse{dateacadian}%
+ \fi\fi
+ \ifx\l@canadien\undefined\else\ifnum\language=\l@canadien
+ \@nameuse{captionscanadien}%
+ \@nameuse{extrascanadien}%
+ \@nameuse{datecanadien}%
+ \fi\fi
+ \ifx\l@francais\undefined\else\ifnum\language=\l@francais
+ \@nameuse{captionsfrancais}%
+ \@nameuse{extrasfrancais}%
+ \@nameuse{datefrancais}%
+ \fi\fi
+ \ifx\l@french\undefined\else\ifnum\language=\l@french
+ \@nameuse{captionsfrench}%
+ \@nameuse{extrasfrench}%
+ \@nameuse{datefrench}%
+ \fi\fi
+ \ifx\l@italian\undefined\else\ifnum\language=\l@italian
+ \@nameuse{captionsitalian}%
+ \@nameuse{extrasitalian}%
+ \@nameuse{dateitalian}%
+ \fi\fi
+ \ifx\l@spanish\undefined\else\ifnum\language=\l@spanish
+ \@nameuse{captionsspanish}%
+ \@nameuse{extrasspanish}%
+ \@nameuse{datespanish}%
+ \fi\fi
+ \ifx\l@croatian\undefined\else\ifnum\language=\l@croatian
+ \@nameuse{captionscroatian}%
+ \@nameuse{extrascroatian}%
+ \@nameuse{datecroatian}%
+ \fi\fi
+ \ifx\l@dutch\undefined\else\ifnum\language=\l@dutch
+ \@nameuse{captionsdutch}%
+ \@nameuse{extrasdutch}%
+ \@nameuse{datedutch}%
+ \fi\fi
+ \ifx\l@finnish\undefined\else\ifnum\language=\l@finnish
+ \@nameuse{captionsfinnish}%
+ \@nameuse{extrasfinnish}%
+ \@nameuse{datefinnish}%
+ \fi\fi
+ \ifx\l@norsk\undefined\else\ifnum\language=\l@norsk
+ \@nameuse{captionsnorsk}%
+ \@nameuse{extrasnorsk}%
+ \@nameuse{datenorsk}%
+ \fi\fi
+ \ifx\l@swedish\undefined\else\ifnum\language=\l@swedish
+ \@nameuse{captionsswedish}%
+ \@nameuse{extrasswedish}%
+ \@nameuse{dateswedish}%
+ \fi\fi
+ \ifx\l@polish\undefined\else\ifnum\language=\l@polish
+ \@nameuse{captionspolish}%
+ \@nameuse{extraspolish}%
+ \@nameuse{datepolish}%
+ \fi\fi
+ \ifx\l@czech\undefined\else\ifnum\language=\l@czech
+ \@nameuse{captionsczech}%
+ \@nameuse{extrasczech}%
+ \@nameuse{dateczech}%
+ \fi\fi
+ \ifx\l@slovak\undefined\else\ifnum\language=\l@slovak
+ \@nameuse{captionsslovak}%
+ \@nameuse{extrasslovak}%
+ \@nameuse{dateslovak}%
+ \fi\fi
+ \else
+ \edef\@tempa{nohyphenation}%
+ \ifx\languagename\@tempa
+%<class> \ClassWarningNoLine{scrlttr2%
+%<package> \PackageWarningNoLine{scrletter%
+ }{%
+ You've selected language `\languagename'.\MessageBreak
+ Maybe your LaTeX format contains Babel extension\MessageBreak
+ but you have not selected a language using\MessageBreak
+ Babel package.\MessageBreak
+ Please select another language!\MessageBreak
+ Only as a workaround english captions and date\MessageBreak
+ will be used%
+ }%
+ \else
+%<class> \ClassInfo{scrlttr2%
+%<package> \PackageInfo{scrletter%
+ }{%
+ trying to activate captions and date\MessageBreak
+ of language `\languagename'%
+ }%
+% \end{macrocode}
+% \changes{v3.12}{2012/12/28}{Workaround für babels geänderte hyphen.cfg}^^A
+% Irgendwann wurde in babel die hyphen.cfg geändert, so dass das früher sehr
+% gut funktionierende |\expandafter\selectlanguage\expandafter{\languagename}|
+% damit leider nicht mehr funktioniert, wenn babel nicht mehr geladen
+% ist. Deshalb wird nun etwas direkter vorgegangen. Das kann mit einzelnen
+% Sprachpaketen eventuell Nachteile bringen, funktioniert aber aktuell ohne
+% Sprachpaket, mit babel und mit polyglossia.
+% \begin{macrocode}
+ \csname date\languagename\endcsname
+ \csname captions\languagename\endcsname
+%<class> \ClassInfo{scrlttr2%
+%<package> \PackageInfo{scrletter%
+ }{%
+ used language is `\languagename'.\MessageBreak
+ Supported languages are: `english', `UKenglish',\MessageBreak
+ `ukenglish', `british', `american', `USenglish',\MessageBreak
+ `usenglish', `australian`,`canadian', `newzealand',\MessageBreak
+ `german', `ngerman', `austrian', `naustrian',\MessageBreak
+ `swissgerman', `nswissgermsn',\MessageBreak
+ `acadian', `canadien', `francais', `french', \MessageBreak
+ `dutch', `italian', `spanish', `polish',\MessageBreak
+ `croatian', `finnish', `norsk', `swedish',\MessageBreak
+ `czech', `slovak'%
+ }%
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \iffalse
+%</letter>
+% \fi
+%
+%
+% \iffalse
+%</body>
+% \fi
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrkernel-language.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End: