summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/koma-script/scrkernel-variables.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/koma-script/scrkernel-variables.dtx')
-rw-r--r--Master/texmf-dist/source/latex/koma-script/scrkernel-variables.dtx210
1 files changed, 141 insertions, 69 deletions
diff --git a/Master/texmf-dist/source/latex/koma-script/scrkernel-variables.dtx b/Master/texmf-dist/source/latex/koma-script/scrkernel-variables.dtx
index 909be6f30c8..b7e98fc70ec 100644
--- a/Master/texmf-dist/source/latex/koma-script/scrkernel-variables.dtx
+++ b/Master/texmf-dist/source/latex/koma-script/scrkernel-variables.dtx
@@ -1,8 +1,8 @@
-% \CheckSum{160}
+% \CheckSum{243}
% \iffalse meta-comment
% ======================================================================
% scrkernel-variables.dtx
-% Copyright (c) Markus Kohm, 2008-2017
+% Copyright (c) Markus Kohm, 2008-2019
%
% This file is part of the LaTeX2e KOMA-Script bundle.
%
@@ -20,7 +20,7 @@
% This work consists of all files listed in manifest.txt.
% ----------------------------------------------------------------------
% scrkernel-variables.dtx
-% Copyright (c) Markus Kohm, 2008-2017
+% Copyright (c) Markus Kohm, 2008-2019
%
% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz,
% Version 1.3c, verteilt und/oder veraendert werden.
@@ -55,7 +55,7 @@
% Right brace \} Tilde \~}
%
% \iffalse
-%%% From File: $Id: scrkernel-variables.dtx 2640 2017-05-08 09:36:55Z kohm $
+%%% From File: $Id: scrkernel-variables.dtx 3262 2019-10-10 08:25:29Z kohm $
%<option>%%% (run: option)
%<body>%%% (run: body)
%<*dtx>
@@ -63,7 +63,7 @@
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\begingroup
\def\filedate$#1: #2-#3-#4 #5${\def\filedate{#2/#3/#4}}
- \filedate$Date: 2017-05-08 11:36:55 +0200 (Mon, 08 May 2017) $
+ \filedate$Date: 2019-10-10 10:25:29 +0200 (Thu, 10 Oct 2019) $
\def\filerevision$#1: #2 ${\def\filerevision{r#2}}
\filerevision$Revision: 1638 $
\xdef\fileinfo{\filedate\space\filerevision\space}
@@ -77,7 +77,6 @@
% \iffalse
\documentclass{scrdoc}
\usepackage[english,ngerman]{babel}
-\usepackage[latin1]{inputenc}
\CodelineIndex
\RecordChanges
\GetFileInfo{scrkernel-variables.dtx}
@@ -103,7 +102,7 @@
%
% Bei Briefen gibt es eine ganze Reihe von speziellen Variablen. An dieser
% Stelle sei als Beispiel nur das Feld "`Ihr Zeichen"' genannt. Es ist nahezu
-% unmöglich alle diese Felder vorherzusehen. Daher wurde in der neuen
+% unmöglich alle diese Felder vorherzusehen. Daher wurde in der neuen
% Briefklasse ein neuer Mechanismus zur Definition solcher Felder geschaffen.
%
% \iffalse
@@ -117,7 +116,7 @@
% \fi
%
% \subsection{Option}
-% Der Mechanismus ist unabhängig von Optionen.
+% Der Mechanismus ist unabhängig von Optionen.
%
%
% \iffalse
@@ -128,24 +127,24 @@
% \subsection{Anweisungen zum Anlegen und Verwenden von Variablen}
%
% \begin{macro}{\newkomavar}
-% \changes{v2.8q}{2002/01/14}{Neu}^^A
-% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
-% ersetzt}^^A
+% \changes{v2.8q}{2002/01/14}{Neu}%^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}%^^A
% Es wird zwischen zwei Arten von Feldern unterschieden:
% \begin{itemize}
-% \item Felder für die Geschäftszeile
-% \item Felder für sonstige Verwendung
+% \item Felder für die Geschäftszeile
+% \item Felder für sonstige Verwendung
% \end{itemize}
-% Felder können aber auch nachträglich zur Geschäftszeile
-% hinzugefügt werden. Die Sternvariante von \cs{newkomavar} führt
+% Felder können aber auch nachträglich zur Geschäftszeile
+% hinzugefügt werden. Die Sternvariante von \cs{newkomavar} führt
% dies jedoch automatisch durch.
% \begin{macro}{\@newkomavar}
% Da mit einer Sternvariante gearbeitet wird, wird ein Hilfsmakro
-% benötigt. Das Makro erhält ein optionales und
+% benötigt. Das Makro erhält ein optionales und
% ein obligatorisches Argument. Das optionale Argument ist dabei die
-% Voreinstellung für den \emph{Ausgabenamen} des Feldes, der
+% Voreinstellung für den \emph{Ausgabenamen} des Feldes, der
% ggf. ausgegeben werden soll. Das obligatorische Argument ist
-% \emph{Name} des Feldes, über den das Feld angesprochen wird.
+% \emph{Name} des Feldes, über den das Feld angesprochen wird.
% Das Makro definiert zwei weitere Makros: \cs{\emph{scr@Name}@var} und
% \cs{scr@\emph{Name}@name}.
% \begin{macrocode}
@@ -188,33 +187,32 @@
% \end{macro}
%
% \begin{macro}{\setkomavar}
-% \changes{v2.8q}{2002/01/14}{Neu}^^A
-% \changes{v3.08}{2010/10/28}{\cs{scr@\emph{Name}@postsetname}
-% und \cs{scr@\emph{Name}@postsetvar}}
-% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
-% ersetzt}^^A
-% Natürlich wird auch ein Befehl benötigt, um die Feldvariablen
-% zu setzen und ihnen ggf. einen neuen Namen für die Ausgabe zu
-% geben. Der \emph{Name} der Feldvariable wird als obligatorisches
-% erstes Argument übergeben. Zusätzlich zum Setzen von Ausgabename oder Wert
-% werden ggf. auch die Hooks \cs{scr@\emph{Name}@postsetname}
-% bzw. \cs{scr@\emph{Name}@postsetvar} ausgeführt.
+% \changes{v2.8q}{2002/01/14}{Neu}%^^A
+% \changes{v3.08}{2010/10/28}{\cs{scr@\emph{Name}@postsetname} und
+% \cs{scr@\emph{Name}@postsetvar}}%^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}%^^A
+% Natürlich wird auch ein Befehl benötigt, um die Feldvariable zu setzen und
+% ihnen ggf. einen neuen Namen für die Ausgabe zu geben. Der \emph{Name} der
+% Feldvariable wird als obligatorisches erstes Argument übergeben. Zusätzlich
+% zum Setzen von Ausgabename oder Wert werden ggf. auch die Hooks
+% \cs{scr@\emph{Name}@postsetname} bzw. \cs{scr@\emph{Name}@postsetvar}
+% ausgeführt.
% \begin{macro}{\@setkomavar}
-% \changes{v2.8q}{2002/01/14}{Neu}^^A
-% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
-% \cs{kernel@ifnextchar}}^^A
-% Da dann zwischen einer Sternvariante und einer normalen
-% unterschieden werden soll wird ein Hilfsmakro benötigt.
+% \changes{v2.8q}{2002/01/14}{Neu}%^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}%^^A
+% Da dann zwischen einer Sternvariante und einer normalen unterschieden werden
+% soll wird ein Hilfsmakro benötigt.
% \begin{macro}{\@setkomaname}
-% \changes{v2.8q}{2002/01/14}{Neu}^^A
+% \changes{v2.8q}{2002/01/14}{Neu}%^^A
% Die Sternvariante definiert nur den Ausgabename neu.
% \begin{macro}{\@@setkomavar}
-% \changes{v2.8q}{2002/01/14}{Neu}^^A
-% Da in der normalen Variante nach dem Stern ein optionales Argument
-% folgen kann, wird mit einem weiteren Hilfsmakro gearbeitet. Der
-% \emph{Ausgabename} wird dabei als optionales, zweites Argument
-% übergeben. Der \emph{Inhalt} wird als obligatorisches, drittes
-% Argument übergeben.
+% \changes{v2.8q}{2002/01/14}{Neu}%^^A
+% Da in der normalen Variante nach dem Stern ein optionales Argument folgen
+% kann, wird mit einem weiteren Hilfsmakro gearbeitet. Der \emph{Ausgabename}
+% wird dabei als optionales, zweites Argument übergeben. Der \emph{Inhalt}
+% wird als obligatorisches, drittes Argument übergeben.
% \begin{macrocode}
\newcommand*{\setkomavar}{%
\kernel@ifstar {\@setkomaname}{\@setkomavar}}
@@ -251,7 +249,7 @@
% \end{macro}
%
% \begin{macro}{\@komavar@err}
-% \changes{v2.8q}{2002/01/14}{Neu}^^A
+% \changes{v2.8q}{2002/01/14}{Neu}%^^A
% Dieses Makro wird intern in den Makros \cs{setkomavar} und
% \cs{usekomavar} verwendet.
% \begin{macrocode}
@@ -272,26 +270,26 @@
% \end{macro}
%
% \begin{macro}{\usekomavar}
-% \changes{v2.8q}{2002/01/14}{Neu}^^A
-% \changes{v2.9i}{2002/09/04}{robust}^^A
-% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
-% ersetzt}^^A
-% Selbstverständlich wird auch ein Makro benötigt, um auf den
+% \changes{v2.8q}{2002/01/14}{Neu}%^^A
+% \changes{v2.9i}{2002/09/04}{robust}%^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}%^^A
+% Selbstverständlich wird auch ein Makro benötigt, um auf den
% Inhalt oder den Ausgabename einer Variablen zugreifen zu
-% können. Mit der normalen Variante wird dabei der Inhalt, mit der
+% können. Mit der normalen Variante wird dabei der Inhalt, mit der
% Sternvariante der Name ausgegeben.
% \begin{macro}{\@usekomavar}
-% \changes{v2.8q}{2002/01/14}{Neu}^^A
-% \changes{v2.9i}{2002/09/04}{optionales Argument}^^A
-% \changes{v2.9j}{2002/09/18}{\cs{@firstofone} als Defaultargument
-% eingefügt}
+% \changes{v2.8q}{2002/01/14}{Neu}%^^A
+% \changes{v2.9i}{2002/09/04}{optionales Argument}%^^A
+% \changes{v2.9j}{2002/09/18}{\cs{@firstofone} als Defaultargument
+% eingefügt}
% \begin{macro}{\@usekomaname}
-% \changes{v2.8q}{2002/01/14}{Neu}^^A
-% \changes{v2.9i}{2002/09/04}{optionales Argument}^^A
-% \changes{v2.9j}{2002/09/18}{\cs{@firstofone} als Defaultargument
-% eingefügt}
+% \changes{v2.8q}{2002/01/14}{Neu}%^^A
+% \changes{v2.9i}{2002/09/04}{optionales Argument}%^^A
+% \changes{v2.9j}{2002/09/18}{\cs{@firstofone} als Defaultargument
+% eingefügt}
% Da mir einer Sternvariante gearbeitet wird, werden zwei Hilfsmakros
-% benötigt.
+% benötigt.
% \begin{macrocode}
\DeclareRobustCommand*{\usekomavar}{%
\kernel@ifstar {\@usekomaname}{\@usekomavar}}
@@ -315,8 +313,8 @@
% \end{macro}
%
% \begin{macro}{\ifkomavar}
-% \changes{v3.03}{2009/03/04}{Neu}^^A
-% Feststellen, ob eine \KOMAScript-Variable überhaupt definiert ist.
+% \changes{v3.03}{2009/03/04}{Neu}%^^A
+% Feststellen, ob eine \KOMAScript-Variable überhaupt definiert ist.
% \begin{macrocode}
\DeclareRobustCommand*{\ifkomavar}[1]{%
\scr@ifundefinedorrelax{scr@#1@var}{%
@@ -329,19 +327,19 @@
% \end{macro}
%
% \begin{macro}{\ifkomavarempty}
-% \changes{v2.8q}{2002/01/14}{Neu}^^A
-% \changes{v2.9i}{2002/09/04}{Leerzeichen rausgeworfen}^^A
-% \changes{v2.9i}{2002/09/04}{robust}^^A
-% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
-% ersetzt}^^A
+% \changes{v2.8q}{2002/01/14}{Neu}%^^A
+% \changes{v2.9i}{2002/09/04}{Leerzeichen rausgeworfen}%^^A
+% \changes{v2.9i}{2002/09/04}{robust}%^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}%^^A
% Es gibt auch noch ein Makro, um zu testen, ob eine \KOMAScript{}
-% Variable oder deren Name leer ist. Die Sternvariante ist wieder für
-% den Namen zuständig.
+% Variable oder deren Name leer ist. Die Sternvariante ist wieder für
+% den Namen zuständig.
% \begin{macro}{\if@komavarempty}
-% \changes{v2.8q}{2002/01/14}{Neu}^^A
-% \changes{v3.03}{2009/03/04}{die neue Anweisung \cs{ifkomavar} wird
+% \changes{v2.8q}{2002/01/14}{Neu}%^^A
+% \changes{v3.03}{2009/03/04}{die neue Anweisung \cs{ifkomavar} wird
% verwendet}
-% \changes{v3.03}{2009/03/04}{die Argumente werden nicht mehr direkt gelesen}^^A
+% \changes{v3.03}{2009/03/04}{die Argumente werden nicht mehr direkt gelesen}%^^A
% Da mit einer Sternvariante gearbeitet wird, wird wieder ein
% Hilfsmakro verwendet.
% \begin{macrocode}
@@ -379,6 +377,80 @@
% \end{macro}
% \end{macro}
%
+% \selectlanguage{english}
+% \begin{macro}{\foreachkomavar}
+% \changes{v3.27}{2019/03/13}{new}%^^A
+% Executes \texttt{\#2} for each variable in the comma separated list
+% \texttt{\#1}. An argument is appended to \texttt{\#2} which is the current
+% variable to be processed. This command is short. So if you want so execute
+% long code you should define a command for it. Sideeffect: \cs{reserved@a} is
+% changed.
+% \begin{macrocode}
+\newcommand*{\foreachkomavar}[2]{%
+ \@for \reserved@a:=#1\do{%
+ \scr@trim@spaces\reserved@a
+ \ifx\reserved@a\@empty\else
+ \edef\reserved@a{\unexpanded{#2}{\reserved@a}}\expandafter\reserved@a
+ \fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\foreachkomavarifempty}
+% \changes{v3.27}{2019/03/13}{new}%^^A
+% Same like \cs{foreachkomavar} but \texttt{\#2} is called only for empty
+% variables and \texttt{\#3} is called for non empty.
+% \begin{macrocode}
+\newcommand*{\foreachkomavarifempty}[3]{%
+ \@for \reserved@a:=#1\do{%
+ \scr@trim@spaces\reserved@a
+ \ifx\reserved@a\@empty\else
+ \edef\reserved@a{%
+ \noexpand\ifkomavarempty{\reserved@a}%
+ {\unexpanded{#2}{\reserved@a}}%
+ {\unexpanded{#3}{\reserved@a}}%
+ }\expandafter\reserved@a
+ \fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\foreachemptykomavar}
+% \changes{v3.27}{2019/03/13}{new}%^^A
+% Similar to \cs{foreachemptykomavar} with \texttt{\#3}=\cs{@gobble}.
+% \begin{macrocode}
+\newcommand*{\foreachemptykomavar}[2]{%
+ \@for \reserved@a:=#1\do{%
+ \scr@trim@spaces\reserved@a
+ \ifx\reserved@a\@empty\else
+ \edef\reserved@a{%
+ \noexpand\ifkomavarempty{\reserved@a}{\unexpanded{#2}{\reserved@a}}{}%
+ }\expandafter\reserved@a
+ \fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\foreachnonemptykomavar}
+% \changes{v3.27}{2019/03/13}{new}%^^A
+% Similar to \cs{foreachemptykomavar} with \texttt{\#2}=\cs{@gobble}.
+% \begin{macrocode}
+\newcommand*{\foreachnonemptykomavar}[2]{%
+ \@for \reserved@a:=#1\do{%
+ \scr@trim@spaces\reserved@a
+ \ifx\reserved@a\@empty\else
+ \edef\reserved@a{%
+ \noexpand\ifkomavarempty{\reserved@a}{}{\unexpanded{#2}{\reserved@a}}%
+ }\expandafter\reserved@a
+ \fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \selectlanguage{ngerman}
%
% \iffalse
%</body>