summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/koma-script/scrkernel-language.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/koma-script/scrkernel-language.dtx')
-rw-r--r--macros/latex/contrib/koma-script/scrkernel-language.dtx1790
1 files changed, 1790 insertions, 0 deletions
diff --git a/macros/latex/contrib/koma-script/scrkernel-language.dtx b/macros/latex/contrib/koma-script/scrkernel-language.dtx
new file mode 100644
index 0000000000..7311e411f7
--- /dev/null
+++ b/macros/latex/contrib/koma-script/scrkernel-language.dtx
@@ -0,0 +1,1790 @@
+% \iffalse meta-comment
+% ======================================================================
+% scrkernel-language.dtx
+% Copyright (c) Markus Kohm, 2002-2022
+%
+% 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.md.
+% ======================================================================
+%%% From File: $Id: scrkernel-language.dtx 3874 2022-06-05 10:38:02Z kohm $
+%<option>%%% (run: option)
+%<body>%%% (run: body)
+%<*dtx>
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2022-06-05 12:38:02 +0200 (So, 05. Jun 2022) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 3874 $
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrkernel-language.dtx}
+ [\filedate\space\filerevision\space
+ KOMA-Script (language)]%
+ }%
+\reserved@a
+\documentclass[USenglish]{koma-script-source-doc}
+\usepackage{babel}
+\setcounter{StandardModuleDepth}{2}
+\begin{document}
+\DocInput{scrkernel-language.dtx}
+\end{document}
+%</dtx>
+% \fi
+%
+% \changes{v2.95}{2002/07/01}{new by splitting \file{scrclass.dtx}}
+% \changes{v3.36}{2022/02/25}{switch over from \cls*{scrdoc} to
+% \cls*{koma-script-source-doc}}
+% \changes{v3.36}{2022/02/25}{whole implementation documentation in English}
+%
+% \GetFileInfo{scrkernel-language.dtx}
+% \title{Easy Changing of Language-Depending Terms with
+% \href{https://komascript.de}{\KOMAScript} \pkg*{scrbase}}
+% \author{\href{mailto:komascript@gmx.info}{Markus Kohm}}
+% \date{Revision \fileversion{} of \filedate}
+% \maketitle
+% \begin{abstract}
+% Changing or defining language-depending terms is meanwhile easy, if
+% \pkg{babel} has been loaded. But before it has been loaded or if another
+% language package is used, it is not as easy as it should be. \KOMAScript{}
+% provides several commands to make it easy.
+% \end{abstract}
+% \tableofcontents
+%
+% \section{User Manual}
+%
+% You can find the user documentation the commands implemented here in the
+% \KOMAScript{} manual, either the German \file{scrguide} or the English
+% \file{scrguien}.
+%
+% \MaybeStop{\PrintIndex}
+%
+%
+% \subsection{Commands and macros for language depending terms}
+%
+% These commands and macros provide very basic features and therefore has been
+% moved to \pkg*{scrbase} with \KOMAScript~3.00.
+%
+% \begin{macrocode}
+%<*package&base&body>
+% \end{macrocode}
+%
+% \begin{command}{\defcaptionname*,\defcaptionname}
+% \changes{3.12}{2013/07/29}{added}
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} replaced by \cs{kernel@ifstar}}
+% With
+% \begin{quote}
+% \cs{defcaptionname}\marg{language list}\marg{name command}\marg{term}
+% \end{quote}
+% you can define \meta{name command} for all languages given in the
+% comma-separated \meta{language list} to be \meta{term}. Note: \meta{name
+% command} has to be a command without arguments. For commands with arguments
+% you have to use the mechanisms of, e.g., \pkg{babel} directly. If the
+% \meta{name command} is already defined in \cs{extras\meta{language}}, the
+% new definition will also be added to this macro. Otherwise it will be added
+% to \cs{captions\meta{language}}. The star variant \cs{defcaptionname*}
+% always used \cs{extras\meta{language}}.
+% \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}{added}
+% Because we are not using \pkg{xparse} we need an extra macro for the star
+% variant. The arguments are the same as for \cs{defcaptionname}.
+% \begin{macrocode}
+\newcommand*{\scr@def@scaptionname}[3]{%
+% \end{macrocode}
+% Because several language packages define \cs{captions\meta{language}} in
+% |\begin{document}|, we also delay the definition, if the command is used in
+% the document preamble.
+% \begin{macrocode}
+ \if@atdocument
+ \expandafter\@firstofone
+ \else
+ \scr@ifactivelanguageisoneof{#1}{\def#2{#3}}{}%
+ \expandafter\AtBeginDocument
+ \fi
+ {%
+% \end{macrocode}
+% Do a local loop over all languages in the \meta{language list}.
+% \changes{v3.26}{2018/08/29}{decreased number of \cs{expandafter}}
+% \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}
+% Inside the loop add definition of \meta{name command} to \meta{term} to
+% \cs{extras\meta{language}}.
+% \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}
+% The redefinition of \cs{reserved@b} to not only close the group but also
+% activate the new term if \meta{language} (\cs{reserved@a}) is the current
+% language:
+% \begin{macrocode}
+ \scr@def@activateactivelanguageaftergroup{#2}{#3}%
+ \fi
+ }%
+ \reserved@b
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\scr@def@activateactivelanguageaftergroup}
+% \changes{v3.12}{2013/07/30}{added}
+% \changes{v3.27}{2019/07/10}{immediate activation from within document
+% preamble}
+% If the language in \cs{reserved@a} is the current language in
+% \cs{languagename} or if the language number of the language in
+% \cs{reserved@a} is the current language number \cs{language}, the definition
+% of \texttt{\#1} as \texttt{\#2} is added to \cs{reserved@b}.
+% \begin{macrocode}
+\newcommand*{\scr@def@activateactivelanguageaftergroup}[2]{%
+ \@onelevel@sanitize\languagename
+ \@tempswafalse
+%<trace> \typeout{comparing `\languagename' and `\scr@reserved@a'}%
+ \ifx\languagename\scr@reserved@a
+ \@tempswatrue
+ \else
+% \end{macrocode}
+% \changes{v3.20}{2016/01/05}{special treatment of \pkg{polyglossia}}
+% With \pkg{polyglossia} all German languages are language
+% \texttt{german}. The distinction of German, Swiss and Austrian is done with
+% two boolean switches \cs{if@austrian@locale} and
+% \cs{if@swiss@local}. Additionally the distinction of old and current German
+% is done with boolean switch \cs{if@german@oldspelling}. We cannot use the
+% switches directly, because of the special handling of such switches and
+% because they are only defined with \pkg{polyglossia}. So we compare them
+% with \cs{iffalse} or \cs{iftrue} instead.
+% \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{comparing 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}
+% \begin{macro}{\scr@ifactivelanguageisoneof}
+% \changes{v3.27}{2019/07/10}{added}
+% \begin{quote}
+% \cs{scr@ifactivelanguageisoneof}\marg{language list}\meta{then
+% code}\meta{else code}
+% \end{quote}
+% If the current language is one of the comma-separated \meta{language list},
+% the \meta{then code} is executed otherwise \meta{else code}.
+% \begin{macrocode}
+\newcommand*{\scr@ifactivelanguageisoneof}[1]{%
+ \begingroup
+ \@tempswafalse
+ \@onelevel@sanitize\languagename
+ \edef\reserved@a{#1}%
+ \@for \reserved@a:=\reserved@a\do{%
+ \scr@trim@spaces\reserved@a
+ \@onelevel@sanitize\reserved@a
+ \ifx\languagename\reserved@a
+ \@tempswatrue
+ \else
+ \edef\reserved@b{\detokenize{german}}%
+ \ifx\languagename\reserved@b
+ \edef\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
+ }%
+ \@onelevel@sanitize\reserved@b
+ \ifx\reserved@a\reserved@b \@tempswatrue\fi
+ \fi
+ \if@tempswa\else
+ \ifcsname l@\reserved@a\endcsname
+ \expandafter\ifnum \csname l@\reserved@a\endcsname=\language
+ \@tempswatrue
+ \fi
+ \fi
+ \fi
+ \fi
+ }%
+ \if@tempswa
+ \aftergroup\@firstoftwo
+ \else
+ \aftergroup\@secondoftwo
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@ifactivelanguageisoneof
+% \end{macro}^^A \scr@def@activateactivelanguageaftergroup
+% \end{macro}^^A \scr@def@scaptionname
+% \begin{macro}{\scr@def@captionname}
+% \changes{v3.12}{2013/07/30}{added}
+% \changes{v3.27}{2019/07/10}{immediate activation from within document
+% preamble}
+% The non-star variant of \cs{defcaptionname} with the same arguments.
+% \begin{macrocode}
+\newcommand*{\scr@def@captionname}[3]{%
+% \end{macrocode}
+% Because several language packages define \cs{captions\meta{language}} in
+% |\begin{document}|, we also delay the definition, if the command is used in
+% the document preamble.
+% \begin{macrocode}
+ \if@atdocument
+ \expandafter\@firstofone
+ \else
+ \scr@ifactivelanguageisoneof{#1}{\def#2{#3}}{}%
+ \expandafter\AtBeginDocument
+ \fi
+ {%
+% \end{macrocode}
+% Do a local loop over all languages in the \meta{language list}.
+% \changes{v3.26}{2018/08/29}{decreased number of \cs{expandafter}}
+% \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}
+% Test, if \meta{name command} is already defined in \cs{extras\meta{language}}.
+% \begin{macrocode}
+ \@tempswafalse
+ \begingroup
+ \@tempswafalse
+ \ifcsname extras\scr@reserved@a\endcsname
+ \let#2\relax
+% \end{macrocode}
+% \changes{v3.27}{2019/05/27}{\pkg{biblatex} workaround}
+% Unfortunately, \pkg{biblatex} adds \cs{abx@extras@\meta{language}} to
+% \cs{extras\meta{language}} if only \meta{language} is an redundant language
+% (see \cs{DeclareRedundantLanguages} in the \pkg{biblatex} manual) and
+% \cs{extras\meta{language}} is defined. But in this case
+% \cs{abx@extras@\meta{language}} is not defined. So calling
+% \cs{extras\meta{language}} would result in an error. As a workaround for
+% this issue, make sure, that \cs{abx@extras@\meta{language}} is defined here
+% locally.
+% \begin{macrocode}
+ \expandafter\providecommand\expandafter*%
+ \csname abx@extras@\scr@reserved@a\endcsname{}%
+ \csname extras\scr@reserved@a\endcsname
+ \ifx #2\relax \else \aftergroup\@tempswatrue \fi
+ \fi
+ \endgroup
+% \end{macrocode}
+% If \meta{name command} is already defined in \cs{extras\meta{language}}
+% \begin{macrocode}
+ \if@tempswa
+% \end{macrocode}
+% once again define it in \cs{extras\meta{language}}.
+% \begin{macrocode}
+ \expandafter\g@addto@macro\csname extras\scr@reserved@a\endcsname{%
+ \def#2{#3}%
+ }%
+ \else
+% \end{macrocode}
+% Otherwise define it in \cs{caption\meta{language}}.
+% \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}
+% The redefinition of \cs{reserved@b} to not only close the group but also
+% activate the new term if \meta{language} (\cs{reserved@a}) is the current
+% language:
+% \begin{macrocode}
+ \scr@def@activateactivelanguageaftergroup{#2}{#3}%
+ \fi
+ }%
+ \reserved@b
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@def@captionname
+% \end{command}^^A \defcaptionname
+%
+% \changes{v3.20}{2016/01/05}{new special treatment of \pkg{polyglossia}}%
+% With \pkg{polyglossia} the languages \texttt{austrian}, \texttt{swiss},
+% \texttt{ngerman}, \texttt{naustrian}, and \texttt{nswiss} are all mixed up
+% to \cs{captionsgerman}. To avoid activation of the language term of the
+% wrong dialect, \cs{init@extra@german} can be changed. Surely this is more or
+% less a hack. But \pkg{polyglossia} seems to not provide a better interface
+% for class and package authors.
+% \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}
+%
+%
+% \begin{command}{\providecaptionname}
+% \changes{v2.8q}{2001/11/08}{added}
+% \changes{v2.9r}{2004/06/16}{immediate activation for current language}
+% \changes{v2.95}{2006/03/10}{sanitizing language test}
+% \changes{v3.00}{2008/05/02}{moved to \pkg*{scrbase}}
+% \changes{v3.01b}{2008/12/07}{missing make undefined}
+% \changes{v3.02c}{2009/02/17}{undefined test improved}
+% \changes{v3.12}{2013/07/30}{re-implemented similar to \cs{defcaptionname}}
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} replaced by \cs{kernel@ifstar}}
+% This is very similar to \cs{defcaptionname}, but nothing is done if a
+% \meta{language} in the \meta{language list} is unknown or \meta{name
+% command} is already defined for the \meta{language}. With this limitation
+% \cs{providecaptionname} adds \meta{name command} to
+% \cs{captions\meta{language}} always, but the star variant
+% \cs{providecaptionname*} uses \cs{extras\meta{language}}.
+% \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}{added}
+% \changes{v3.26}{2018/08/29}{decreased number of \cs{expandafter}}
+% \changes{v3.27}{2019/07/10}{immediate activation from within document
+% preamble}
+% The star variant of \cs{providecaptionname} with the same arguments.
+% \begin{macrocode}
+\newcommand*{\scr@provide@scaptionname}[3]{%
+ \if@atdocument
+ \expandafter\@firstofone
+ \else
+ \scr@ifactivelanguageisoneof{#1}{\providecommand*{#2}{#3}}{}%
+ \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}
+% In opposite to \cs{defcaptionname} add \meta{name command} to
+% \cs{extras\meta{language}} only, if \cs{extras\meta{language}} already
+% exists, but not yet defines \meta{name command}.
+% \begin{macrocode}
+ \begingroup
+ \let#2\relax
+% \end{macrocode}
+% \changes{v3.27}{2019/05/27}{\pkg{biblatex} workaround}
+% Unfortunately, \pkg{biblatex} adds \cs{abx@extras@\meta{language}} to
+% \cs{extras\meta{language}} if only \meta{language} is an redundant language
+% (see \cs{DeclareRedundantLanguages} in the \pkg{biblatex} manual) and
+% \cs{extras\meta{language}} is defined. But in this case
+% \cs{abx@extras@\meta{language}} is not defined. So calling
+% \cs{extras\meta{language}} would result in an error. As a workaround for
+% this issue, make sure, that \cs{abx@extras@\meta{language}} is defined here
+% locally.
+% \begin{macrocode}
+ \expandafter\providecommand\expandafter*%
+ \csname abx@extras@\scr@reserved@a\endcsname{}%
+% \end{macrocode}
+% \changes{v3.30}{2020/04/13}{\cs{renewcommand} workaround}
+% Unfortunately some users use \cs{renewcommand} to change a name even if the
+% language has not been loaded and the command has not been defined. This
+% would result in an error message. So a this point we let \cs{renewcommand}
+% be \cs{providecommand}, because we know that currently the command is
+% \cs{relax}.
+% \begin{macrocode}
+ \let\renewcommand\providecommand
+ \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}{added}
+% \changes{v3.26}{2018/08/29}{decreased number of \cs{expandafter}}
+% \changes{v3.27}{2019/07/10}{immediate activation from within document
+% preamble}
+% The non-star variant of \cs{providecaptionname} with the same arguments.
+% \begin{macrocode}
+\newcommand*{\scr@provide@captionname}[3]{%
+ \if@atdocument
+ \expandafter\@firstofone
+ \else
+ \scr@ifactivelanguageisoneof{#1}{\providecommand*{#2}{#3}}{}%
+ \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}
+% In opposite to \cs{defcaptionname} add \meta{name command} to
+% \cs{captions\meta{language}} only, if \cs{captions\meta{language}} already
+% exists, but neither \cs{extras\meta{language}} nor
+% \cs{captions\meta{language}} defines \meta{name command}.
+% \begin{macrocode}
+ \begingroup
+ \let#2\relax
+% \end{macrocode}
+% \changes{v3.27}{2019/05/27}{\pkg{biblatex} workaround}
+% Unfortunately, \pkg{biblatex} adds \cs{abx@extras@\meta{language}} to
+% \cs{extras\meta{language}} if only \meta{language} is an redundant language
+% (see \cs{DeclareRedundantLanguages} in the \pkg{biblatex} manual) and
+% \cs{extras\meta{language}} is defined. But in this case
+% \cs{abx@extras@\meta{language}} is not defined. So calling
+% \cs{extras\meta{language}} would result in an error. As a workaround for
+% this issue, make sure, that \cs{abx@extras@\meta{language}} is defined here
+% locally.
+% \changes{v3.30}{2020/04/13}{\cs{renewcommand} workaround}
+% Unfortunately some users use \cs{renewcommand} to change a name even if the
+% language has not been loaded and the command has not been defined. This
+% would result in an error message. So a this point we let \cs{renewcommand}
+% be \cs{providecommand}, because we know that currently the command is
+% \cs{relax}.
+% \begin{macrocode}
+ \let\renewcommand\providecommand
+ \expandafter\providecommand\expandafter*%
+ \csname abx@extras@\scr@reserved@a\endcsname{}%
+ \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{command}^^A \providecaptionname
+%
+%
+% \begin{command}{\newcaptionname}
+% \changes{v2.8q}{2001/11/08}{added}
+% \changes{v2.9r}{2004/06/16}{immediate activation for current language}
+% \changes{v2.95}{2006/03/10}{sanitizing language test}
+% \changes{v3.00}{2008/05/02}{moved to \pkg*{scrbase}}
+% \changes{v3.01b}{2008/12/07}{missing make undefined}
+% \changes{v3.02c}{2009/02/17}{undefined test improved}
+% \changes{v3.12}{2013/07/30}{re-implemented similar to \cs{defcaptionname}}
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} replaced by \cs{kernel@ifstar}}
+% This is very similar to \cs{defcaptionname}, but if \meta{language} exists
+% and already defines \meta{language name} an error is reported. If the
+% \meta{language} exists but does not define the \meta{language name}, the
+% definition will be added. If the \meta{language} does not exist, it will be
+% defined. With this limitation \cs{newcaptionname} adds \meta{name command}
+% to \cs{captions\meta{language}} always, but the star variant
+% \cs{newcaptionname*} uses \cs{extras\meta{language}}.
+% \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}{added}
+% \changes{v3.26}{2018/08/29}{decreased number of \cs{expandafter}}
+% \changes{v3.27}{2019/07/10}{immediate activation from within document
+% preamble}
+% The star variant of \cs{newcaptionname} with the same arguments.
+% \begin{macrocode}
+\newcommand*{\scr@new@scaptionname}[3]{%
+ \if@atdocument
+ \expandafter\@firstofone
+ \else
+ \scr@ifactivelanguageisoneof{#1}{\providecommand*{#2}{#3}}{}%
+ \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}
+% In opposite to \cs{defcaptionname} the \meta{language name} has to be
+% undefined.
+% \begin{macrocode}
+ \begingroup
+ \let#2\relax
+% \end{macrocode}
+% \changes{v3.27}{2019/05/27}{\pkg{biblatex} workaround}
+% Unfortunately, \pkg{biblatex} adds \cs{abx@extras@\meta{language}} to
+% \cs{extras\meta{language}} if only \meta{language} is an redundant language
+% (see \cs{DeclareRedundantLanguages} in the \pkg{biblatex} manual) and
+% \cs{extras\meta{language}} is defined. But in this case
+% \cs{abx@extras@\meta{language}} is not defined. So calling
+% \cs{extras\meta{language}} would result in an error. As a workaround for
+% this issue, make sure, that \cs{abx@extras@\meta{language}} is defined here
+% locally.
+% \changes{v3.30}{2020/04/13}{\cs{renewcommand} workaround}
+% Unfortunately some users use \cs{renewcommand} to change a name even if the
+% language has not been loaded and the command has not been defined. This
+% would result in an error message. So a this point we let \cs{renewcommand}
+% be \cs{providecommand}, because we know that currently the command is
+% \cs{relax}.
+% \begin{macrocode}
+ \let\renewcommand\providecommand
+ \expandafter\providecommand\expandafter*%
+ \csname abx@extras@\scr@reserved@a\endcsname{}%
+ \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}{added}
+% \changes{v3.26}{2018/08/29}{decreased number of \cs{expandafter}}
+% \changes{v3.27}{2019/07/10}{immediate activation from within document
+% preamble}
+% The non-star variant of \cs{newcaptionname} with the same arguments.
+% \begin{macrocode}
+\newcommand*{\scr@new@captionname}[3]{%
+ \if@atdocument
+ \expandafter\@firstofone
+ \else
+ \scr@ifactivelanguageisoneof{#1}{\providecommand*{#2}{#3}}{}%
+ \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}
+% In opposite to \cs{defcaptionname} the \meta{language name} has to be
+% undefined.
+% \begin{macrocode}
+ \begingroup
+ \let#2\relax
+% \end{macrocode}
+% \changes{v3.27}{2019/05/27}{\pkg{biblatex} workaround}
+% Unfortunately, \pkg{biblatex} adds \cs{abx@extras@\meta{language}} to
+% \cs{extras\meta{language}} if only \meta{language} is an redundant language
+% (see \cs{DeclareRedundantLanguages} in the \pkg{biblatex} manual) and
+% \cs{extras\meta{language}} is defined. But in this case
+% \cs{abx@extras@\meta{language}} is not defined. So calling
+% \cs{extras\meta{language}} would result in an error. As a workaround for
+% this issue, make sure, that \cs{abx@extras@\meta{language}} is defined here
+% locally.
+% \changes{v3.30}{2020/04/13}{\cs{renewcommand} workaround}
+% Unfortunately some users use \cs{renewcommand} to change a name even if the
+% language has not been loaded and the command has not been defined. This
+% would result in an error message. So a this point we let \cs{renewcommand}
+% be \cs{providecommand}, because we know that currently the command is
+% \cs{relax}.
+% \begin{macrocode}
+ \let\renewcommand\providecommand
+ \expandafter\providecommand\expandafter*%
+ \csname abx@extras@\scr@reserved@a\endcsname{}%
+ \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{command}^^A \newcaptionname
+%
+% \begin{command}{\renewcaptionname}
+% \changes{v2.8q}{2001/11/08}{added}
+% \changes{v2.9r}{2004/06/16}{immediate activation for current language}
+% \changes{v2.95}{2006/03/10}{sanitizing language test}
+% \changes{v3.00}{2008/05/02}{moved to \pkg*{scrbase}}
+% \changes{v3.01b}{2008/12/07}{missing make undefined}
+% \changes{v3.02c}{2009/02/17}{undefined test improved}
+% \changes{v3.12}{2013/07/30}{re-implemented similar to \cs{defcaptionname}}
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} replaced by \cs{kernel@ifstar}}
+% This is very similar to \cs{defcaptionname}, but if the \meta{language} does
+% not exist or does not already define \meta{language name} an error is reported.
+% So for a \meta{language} that exists and defines \meta{language name}, If the
+% \meta{name command} is already defined in \cs{extras\meta{language}},
+% \cs{renewcaptioname} adds the changed definition to this macro. Otherwise it
+% will be added to \cs{captions\meta{language}}. The star variant
+% \cs{renewcaptionname*} always used \cs{extras\meta{language}}.
+% \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}{added}
+% \changes{v3.26}{2018/08/29}{decreased number of \cs{expandafter}}
+% \changes{v3.27}{2019/07/10}{immediate activation from within document
+% preamble}
+% \changes{v3.27a}{2019/10/13}{immediate activation only for already defined terms}
+% The star variant of \cs{renewcaptionname} with the same arguments.
+% \begin{macrocode}
+\newcommand*{\scr@renew@scaptionname}[3]{%
+ \if@atdocument
+ \expandafter\@firstofone
+ \else
+ \scr@ifactivelanguageisoneof{#1}{\ifdefined#2\renewcommand*{#2}{#3}\fi}{}%
+ \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}
+% In opposite to \cs{defcaptionname} \meta{language name} has to be defined.
+% \begin{macrocode}
+ \begingroup
+ \let#2\relax
+% \end{macrocode}
+% \changes{v3.27}{2019/05/27}{\pkg{biblatex} workaround}
+% Unfortunately, \pkg{biblatex} adds \cs{abx@extras@\meta{language}} to
+% \cs{extras\meta{language}} if only \meta{language} is an redundant language
+% (see \cs{DeclareRedundantLanguages} in the \pkg{biblatex} manual) and
+% \cs{extras\meta{language}} is defined. But in this case
+% \cs{abx@extras@\meta{language}} is not defined. So calling
+% \cs{extras\meta{language}} would result in an error. As a workaround for
+% this issue, make sure, that \cs{abx@extras@\meta{language}} is defined here
+% locally.
+% \changes{v3.30}{2020/04/13}{\cs{renewcommand} workaround}
+% Unfortunately some users use \cs{renewcommand} to change a name even if the
+% language has not been loaded and the command has not been defined. This
+% would result in an error message. So a this point we let \cs{renewcommand}
+% be \cs{providecommand}, because we know that currently the command is
+% \cs{relax}.
+% \begin{macrocode}
+ \let\renewcommand\providecommand
+ \expandafter\providecommand\expandafter*%
+ \csname abx@extras@\scr@reserved@a\endcsname{}%
+ \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}{added}
+% \changes{v3.26}{2018/08/29}{decreased number of \cs{expandafter}}
+% \changes{v3.27}{2019/07/10}{immediate activation from within document
+% preamble}
+% \changes{v3.27a}{2019/10/13}{immediate activation only for already existing
+% terms}
+% The non-star variant of \cs{renewcaptionname} with the same arguments.
+% \begin{macrocode}
+\newcommand*{\scr@renew@captionname}[3]{%
+ \if@atdocument
+ \expandafter\@firstofone
+ \else
+ \scr@ifactivelanguageisoneof{#1}{\ifdefined#2\renewcommand*{#2}{#3}\fi}{}%
+ \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}
+% In opposite to \cs{defcaptionname} \meta{language name} has to exist.
+% \begin{macrocode}
+ \begingroup
+ \let#2\relax
+% \end{macrocode}
+% \changes{v3.27}{2019/05/27}{\pkg{biblatex} workaround}
+% Unfortunately, \pkg{biblatex} adds \cs{abx@extras@\meta{language}} to
+% \cs{extras\meta{language}} if only \meta{language} is an redundant language
+% (see \cs{DeclareRedundantLanguages} in the \pkg{biblatex} manual) and
+% \cs{extras\meta{language}} is defined. But in this case
+% \cs{abx@extras@\meta{language}} is not defined. So calling
+% \cs{extras\meta{language}} would result in an error. As a workaround for
+% this issue, make sure, that \cs{abx@extras@\meta{language}} is defined here
+% locally.
+% \changes{v3.30}{2020/04/13}{\cs{renewcommand} workaround}
+% Unfortunately some users use \cs{renewcommand} to change a name even if the
+% language has not been loaded and the command has not been defined. This
+% would result in an error message. So a this point we let \cs{renewcommand}
+% be \cs{providecommand}, because we know that currently the command is
+% \cs{relax}.
+% \begin{macrocode}
+ \let\renewcommand\providecommand
+ \expandafter\providecommand\expandafter*%
+ \csname abx@extras@\scr@reserved@a\endcsname{}%
+ \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
+ }%
+}
+%</package&base&body>
+% \end{macrocode}
+% \end{macro}^^A \scr@renew@captionname
+% \end{command}^^A \renewcaptionname
+%
+%
+% \subsection{Numerical or textual date within letters}
+% For letters \KOMAScript{} provides the option to use either a
+% symbolic/texual date or a numerical date.
+%
+% \begin{option}{numericaldate}
+% \changes{v2.8q}{2001/10/07}{added}
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} replaced by
+% \cs{PackageInfoNoLine}}
+% \changes{v3.17}{2015/03/10}{using internal value storage}
+% \changes{v3.36}{2022/02/25}{initial storage value fixed}
+% The option allows to switch between the original textual date usually
+% provided by \pkg{babel} (or another language package) and a numerical date.
+% \begin{macro}{\@orgdatefalse,\@orgdatetrue,\if@orgdate}
+% The decission is stored in a boolean switch. For compatibility with
+% \cls[https://www.ctan.org/pkg/koma-script-obsolete]{scrlettr} we are still
+% using \cs{if@orgdate} with inverse meaning.
+% \begin{macrocode}
+%<*letter&option>
+\newif\if@orgdate\@orgdatetrue
+% \end{macrocode}
+% \end{macro}^^A \@orgdatefalse,\@orgdatetrue,\if@orgdate
+% Currently a \cs{KOMA@inverseifkey} does not exist. So we need somemore code
+% to define the option.
+% \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
+}{numericaldate}{true}
+% \end{macrocode}
+% \begin{option}{scrdate,orgdate}
+% \changes{v3.01a}{2008/11/21}{deprecated}
+% \begin{macrocode}
+\KOMA@DeclareDeprecatedOption{scrdate}{numericaldate=true}
+\KOMA@DeclareDeprecatedOption{orgdate}{numericaldate=false}
+%</letter&option>
+% \end{macrocode}
+% \end{option}^^A scrdate,orgdate
+% \end{option}^^A numericaldate
+%
+%
+% \begin{macro}{\g@addnumerical@date}
+% We need to redefine the already existing textual date of a language package
+% by a numerical one.
+% \begin{macrocode}
+%<*letter&body>
+\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}%
+ }%
+ }%
+}
+%</letter&body>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Language dependent terms and dates in letters}
+%
+% There are also a lot of additional language dependent terms in
+% letters. Several languages are supported.
+%
+% \begin{command}{\captionsenglish,\dateenglish}
+% \begin{command}{\captionsUSenglish,\dateUSenglish}
+% \begin{command}{\captionsamerican,\dateamerican}
+% \changes{v2.4c}{1997/11/25}{american defined identical to USenglish}
+% \begin{command}{\captionsbritish,\datebritish}
+% \changes{v2.4c}{1997/11/25}{british defined identical to english}
+% \begin{command}{\captionsUKenglish,\dateUKenglish}
+% \changes{v2.4c}{1997/11/25}{UKenglish defined identical to english}
+% \begin{command}{\captionsaustralian,\dateaustralian}
+% \changes{v3.13}{2014/03/19}{australian defined identical to english}
+% \changes{v3.27}{2019/06/09}{fixed}
+% \begin{command}{\captionsnewzealand,\datenewzealand}
+% \changes{v3.13}{2014/03/19}{newzealand defined identical to english}
+% \begin{command}{\captionscanadian,\datecanadian}
+% \changes{v3.13}{2014/03/19}{canadian defined identical to english}
+% \begin{command}{\captionsukenglish,\dateukenglish}
+% \changes{v3.24}{2017/05/29}{ukenglish defined identical to UKenglish}
+% \begin{command}{\captionsusenglish,\dateusenglish}
+% \changes{v3.24}{2017/05/29}{usenglish defined identical to USenglish}
+% \begin{command}{\captionsgerman,\dategerman}
+% \begin{command}{\captionsngerman,\datengerman}
+% \changes{v2.5}{1999/09/08}{ngerman added identical togerman}
+% \begin{command}{\captionsaustrian,\dateaustrian}
+% \begin{command}{\captionsnaustrian,\datenaustrian}
+% \changes{v3.09}{2011/03/10}{naustrian added identical toaustrian}
+% \begin{command}{\captionsfrench,\datefrench}
+% \begin{command}{\captionsitalian,\dateitalian}
+% \changes{v2.3e}{1996/05/31}{added}
+% \begin{command}{\captionsspanish,\datespanish}
+% \changes{v2.4c}{1997/11/25}{added}
+% \begin{command}{\captionscroation,\datecroatian}
+% \changes{v2.8q}{2001/05/10}{added}
+% \begin{command}{\captionsdutch,\datedutch}
+% \changes{v2.8q}{2002/02/01}{added}
+% \begin{command}{\captionsfinnish,\datefinnish}
+% \changes{v2.9u}{2005/02/07}{added}
+% \changes{v3.01c}{2008/12/29}{activation fixed}
+% \begin{command}{\captionsnorsk,\datenorsk}
+% \changes{v3.02}{2009/01/01}{added}
+% \begin{command}{\captionsswedish,\dateswedish}
+% \changes{v3.08}{2011/01/20}{added (Benjamin Hell)}
+% \begin{command}{\captionspolish,\datepolish}
+% \changes{v3.13}{2014/02/01}{added (Blandyna Bogdol)}
+% \begin{command}{\captionsczech,\dateczech}
+% \changes{v3.13}{2014/02/10}{added (Elke Schubert)}
+% \begin{command}{\dateslovak}
+% \changes{v3.13}{2014/02/28}{added (Elke Schubert)}
+% Because of problems with early versions of the code, we use
+% \cs{AtBeginDocument} and \cs{providecaptionname} to define the terms and
+% dates as late as possible. So users can define them in the document preamble
+% differently. A list of all languages (but not the dialects) can be found in
+% \autoref{tab:letterlanguages}.
+% \begin{table}
+% \begin{minipage}{\textwidth}
+% \centering
+% \begin{tabular}{ll}
+% Language & Contributor \\\hline\\[-1.6ex]
+% German & Frank Neukam, Markus Kohm \\
+% English & Frank Neukam, Michael Dewey, Markus Kohm \\
+% Finnish & Hannu Väisänen \\
+% French & Frank Neukam, Henk Jongbloets \\
+% Dutch & Henk Jongbloets \\
+% Italian & Simone Naldi \\
+% Croatian & Branka Lon\v{c}arevi\'{c} \\
+% Norsk & Sveinung Heggen \\
+% Polish & Blandyna Bogdol \\
+% Swedish & Benjamin Hell\\
+% Spanish & Ralph J.\ Hangleiter, Alejandro L\'opez-Valencia\\
+% Czech & Elke Schubert\\
+% (Slovak)\footnotemark & Elke Schubert\\
+% \end{tabular}%
+% \stepcounter{mpfootnote}\renewcommand*{\thempfootnote}{\arabic{mpfootnote}}%
+% \footnotetext{Note: Slovak is only partially supported: The date
+% exists but the language terms are still missing.}
+% \caption{List of supported languages (but not the dialects) and the
+% contributors}
+% \label{tab:letterlanguages}
+% \end{minipage}
+% \end{table}
+% English is a special case. We try to define it always also as a fallback.
+% \begin{macrocode}
+%<*letter&body>
+\AtBeginDocument{%
+ \@ifundefined{captionsenglish}{\let\captionsenglish\@empty}{}%
+ \@ifundefined{dateenglish}{\def\dateenglish{%
+%</letter&body>
+% \end{macrocode}
+% Defining the textual English \cs{today} it the only thing, that has do be
+% done for all classes and also the \pkg*{scrletter} package.
+% \begin{macrocode}
+%<*(letter|class)&body>
+ \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}%
+%</(letter|class)&body>
+%<*letter&body>
+ }%
+ }{}%
+ \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{australian}{\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'' or ``Kopia till''? Both would be possible. Because of using the
+% long form in German, we use it in Swedish too.
+% \begin{macrocode}
+ \providecaptionname{swedish}\ccname{Kopia till}%
+% \end{macrocode}
+% ``Bilaga'' would be singular. For several enclosures we need
+% ``Bilagor''. We've decided to use the plural.
+% \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}
+% There are two usual terms for banking account, either ``Bankgiro'' or
+% ``PlusGiro''. It's hard to say which one is more usual.
+% \begin{macrocode}
+ \providecaptionname{swedish}\bankname{Bankgiro}% PlusGiro
+% \end{macrocode}
+% We use the traditional date ``18/1 2011'' instead of the also common ISO
+% date.
+% \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}
+% Last but not least the activation has to be done.
+% \changes{v2.2c}{1995/03/20}{missing \texttt{\quotechar=} added after
+% \cs{language}}
+% \changes{v2.5b}{2000/01/20}{language reactivation by \cs{languagename} if
+% possible}
+% \changes{v2.5e}{2000/07/14}{workaround for language \texttt{nohyphenation}}
+% First of all we activate English as fallback.
+% \begin{macrocode}
+ \captionsenglish
+ \dateenglish
+% \end{macrocode}
+% \changes{v2.9i}{2002/09/04}{workaround for \file{hyphen.cfg} bug of
+% \pkg{babel}}
+% \changes{v2.97c}{2007/08/10}{warning message changed}
+% \changes{v3.18a}{2015/07/03}{execution \cs{extras\dots}}
+% \changes{v3.18a}{2015/07/03}{using \cs{@nameuse}}
+% If the \file{hyphen.cfg} of \pkg{babel} is used, but \pkg{babel} has not
+% been loaded, \cs{languagename} can be incorrect (depending on the
+% \pkg{babel} version used to generate the \LaTeX{} format). In this case
+% |\selectlanguage{\languagename}| would fail. So we need a workaround.
+% \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 for changed \file{hyphen.cfg} in
+% \pkg{babel}}
+% Unfortunately the workaround does not work any longer after a change of
+% \file{hyphen.cfg} in \pkg{babel}. So we need another workaround.
+% \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
+}
+%</letter&body>
+% \end{macrocode}
+% \end{command}
+% \end{command}
+% \end{command}
+% \end{command}
+% \end{command}
+% \end{command}
+% \end{command}
+% \end{command}
+% \end{command}
+% \end{command}
+% \end{command}
+% \end{command}
+% \end{command}
+% \end{command}
+% \end{command}
+% \end{command}
+% \end{command}
+% \end{command}
+% \end{command}
+% \end{command}
+% \end{command}
+% \end{command}
+% \end{command}
+% \end{command}
+% \end{command}
+%
+%
+% \Finale
+% \PrintChanges
+%
+\endinput
+% Local Variables:
+% mode: doctex
+% ispell-local-dictionary: "en_US"
+% eval: (flyspell-mode 1)
+% TeX-master: t
+% TeX-engine: luatex-dev
+% eval: (setcar (or (cl-member "Index" (setq-local TeX-command-list (copy-alist TeX-command-list)) :key #'car :test #'string-equal) (setq-local TeX-command-list (cons nil TeX-command-list))) '("Index" "mkindex %s" TeX-run-index nil t :help "makeindex for dtx"))
+% End: