You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
518 lines
17 KiB
518 lines
17 KiB
% \CheckSum{273}
|
|
% \iffalse meta-comment
|
|
% ======================================================================
|
|
% scrkernel-variables.dtx
|
|
% Copyright (c) Markus Kohm, 2008-2019
|
|
%
|
|
% 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-variables.dtx
|
|
% 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.
|
|
% 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-variables.dtx 3393 2019-11-19 10:33:44Z 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${\def\filedate{#2/#3/#4}}
|
|
\filedate$Date: 2019-11-19 11:33:44 +0100 (Tue, 19 Nov 2019) $
|
|
\def\filerevision$#1: #2 ${\def\filerevision{r#2}}
|
|
\filerevision$Revision: 1638 $
|
|
\xdef\fileinfo{\filedate\space\filerevision\space}
|
|
\edef\reserved@a{%
|
|
\noexpand\endgroup
|
|
\noexpand\ProvidesFile{scrkernel-variables.dtx}%
|
|
[\filedate\space\filerevision\space
|
|
KOMA-Script source(koma variables)]
|
|
}%
|
|
\reserved@a
|
|
% \iffalse
|
|
\documentclass{scrdoc}
|
|
\usepackage[english,ngerman]{babel}
|
|
\CodelineIndex
|
|
\RecordChanges
|
|
\GetFileInfo{scrkernel-variables.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}{2006/03/20}{%
|
|
% erste Version aus der Aufteilung von \textsf{scrclass.dtx}}
|
|
%
|
|
% \section{\KOMAScript{}-Variablen}
|
|
%
|
|
% 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
|
|
% Briefklasse ein neuer Mechanismus zur Definition solcher Felder geschaffen.
|
|
%
|
|
% \iffalse
|
|
%<*letter>
|
|
% \fi
|
|
%
|
|
% \StopEventually{\PrintIndex\PrintChanges}
|
|
%
|
|
% \iffalse
|
|
%<*option>
|
|
% \fi
|
|
%
|
|
% \subsection{Option}
|
|
% Der Mechanismus ist unabhängig von Optionen.
|
|
%
|
|
%
|
|
% \iffalse
|
|
%</option>
|
|
%<*body>
|
|
% \fi
|
|
%
|
|
% \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
|
|
% Es wird zwischen zwei Arten von Feldern unterschieden:
|
|
% \begin{itemize}
|
|
% \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
|
|
% 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
|
|
% ein obligatorisches Argument. Das optionale Argument ist dabei die
|
|
% 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.
|
|
% Das Makro definiert zwei weitere Makros: \cs{\emph{scr@Name}@var} und
|
|
% \cs{scr@\emph{Name}@name}.
|
|
% \begin{macrocode}
|
|
\newcommand*{\newkomavar}{%
|
|
\kernel@ifstar {\@tempswatrue\@newkomavar}{\@tempswafalse\@newkomavar}}
|
|
\newcommand*{\@newkomavar}[2][\relax]{%
|
|
\@ifundefined{scr@#2@name}{%
|
|
\@ifundefined{scr@#2@var}{%
|
|
\begingroup
|
|
\def\@tempa{#1}\def\@tempb{\relax}%
|
|
\ifx\@tempa\@tempb\endgroup\else
|
|
\endgroup\@namedef{scr@#2@name}{#1}%
|
|
\fi%
|
|
\expandafter\let\csname scr@#2@var\endcsname=\@empty
|
|
\if@tempswa\addtoreffields{#2}\fi
|
|
}{%
|
|
%<class> \ClassError{scrlttr2%
|
|
%<package> \PackageError{scrletter%
|
|
}{%
|
|
This should never happen%
|
|
}{%
|
|
The contents of the KOMA-Script variable `#2'\MessageBreak
|
|
is undefined, but the name of the variable is
|
|
defined.\MessageBreak
|
|
This should never happen. So someone crashs me!%
|
|
}%
|
|
}%
|
|
}{%
|
|
%<class> \ClassError{scrlttr2%
|
|
%<package> \PackageError{scrletter%
|
|
}{%
|
|
Variable `#2' already defined%
|
|
}{%
|
|
I'll ignore this command, if you'll continue.%
|
|
}%
|
|
}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \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}}%^^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.
|
|
% \begin{macro}{\@setkomaname}
|
|
% \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.
|
|
% \begin{macrocode}
|
|
\newcommand*{\setkomavar}{%
|
|
\kernel@ifstar {\@setkomaname}{\@setkomavar}}
|
|
\newcommand*{\@setkomavar}[1]{%
|
|
\kernel@ifnextchar [%]
|
|
{\@@setkomavar{#1}}{\@@setkomavar{#1}[\relax]}}
|
|
\newcommand*{\@setkomaname}[2]{%
|
|
\@ifundefined{scr@#1@var}{%
|
|
\@komavar@err{set}{#1}%
|
|
}{%
|
|
\@namedef{scr@#1@name}{#2}%
|
|
\csname scr@#1@postsetname\endcsname
|
|
}%
|
|
}
|
|
\newcommand*{\@@setkomavar}{}
|
|
\long\def\@@setkomavar#1[#2]#3{%
|
|
\@ifundefined{scr@#1@var}{%
|
|
\@komavar@err{set}{#1}%
|
|
}{%
|
|
\@namedef{scr@#1@var}{#3}%
|
|
\csname scr@#1@postsetvar\endcsname
|
|
\begingroup
|
|
\def\@tempa{#2}\def\@tempb{\relax}%
|
|
\ifx\@tempa\@tempb\endgroup\else
|
|
\endgroup\@namedef{scr@#1@name}{#2}%
|
|
\csname scr@#1@postsetname\endcsname
|
|
\fi
|
|
}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\@komavar@err}
|
|
% \changes{v2.8q}{2002/01/14}{Neu}%^^A
|
|
% Dieses Makro wird intern in den Makros \cs{setkomavar} und
|
|
% \cs{usekomavar} verwendet.
|
|
% \begin{macrocode}
|
|
\newcommand*{\@komavar@err}[2]{%
|
|
%<class> \ClassError{scrlttr2%
|
|
%<package> \PackageError{scrletter%
|
|
}{%
|
|
KOMA-Script variable not defined%
|
|
}{%
|
|
You've tried to #1 the not defined KOMA-Script variable
|
|
`#2'.\MessageBreak
|
|
You have to define the variable using \string\newkomavar\space
|
|
before\MessageBreak
|
|
you do this.%
|
|
}%
|
|
}
|
|
% \end{macrocode}
|
|
% \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
|
|
% Inhalt oder den Ausgabename einer Variablen zugreifen zu
|
|
% 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}
|
|
% \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}
|
|
% Da mir einer Sternvariante gearbeitet wird, werden zwei Hilfsmakros
|
|
% benötigt.
|
|
% \begin{macrocode}
|
|
\DeclareRobustCommand*{\usekomavar}{%
|
|
\kernel@ifstar {\@usekomaname}{\@usekomavar}}
|
|
\newcommand*{\@usekomavar}[2][\@firstofone]{%
|
|
\@ifundefined{scr@#2@var}{%
|
|
\@komavar@err{use}{#2}%
|
|
}{%
|
|
#1{\@nameuse{scr@#2@var}}%
|
|
}%
|
|
}
|
|
\newcommand*{\@usekomaname}[2][\@firstofone]{%
|
|
\@ifundefined{scr@#2@var}{%
|
|
\@komavar@err{use}{#2}%
|
|
}{%
|
|
#1{\@nameuse{scr@#2@name}}%
|
|
}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\ifkomavar}
|
|
% \changes{v3.03}{2009/03/04}{Neu}%^^A
|
|
% \changes{v3.28}{2019/11/15}{umbenannt in \cs{Ifkomavar}}%^^A
|
|
% \begin{macro}{\Ifkomavar}
|
|
% \changes{v3.28}{2019/11/15}{Neu aus Umbenennung von \cs{ifkomavar}}%^^A
|
|
% Feststellen, ob eine \KOMAScript-Variable überhaupt definiert ist. Weil
|
|
% einige Mitglieder des \LaTeX3-Teams sich beschwert haben, dass trotz fehlens
|
|
% einer eindeutigen Empfehlung, \KOMAScript{} \LaTeX-Verzweigungen mit
|
|
% \cs{if\dots} definiert, statt dies \TeX-Verzweigungen vorzubehalten, habe
|
|
% ich das hier nach mehr zehn Jahren geändert. Sollte es öffentliche
|
|
% Beschwerden dazu geben und Ulrike diese sehen, will sie übrigens darauf
|
|
% antworten.
|
|
% \begin{macrocode}
|
|
\newcommand*{\ifkomavar}{%
|
|
%<package> \PackageWarning{scrletter}{%
|
|
%<class> \ClassWarning{\KOMAClassName}{%
|
|
Usage of deprecated command `\string\ifkomavar'.\MessageBreak
|
|
The command has been renamed to because of a\MessageBreak
|
|
recommendation of LaTeX3 team members.\MessageBreak
|
|
Please replace `\string\ifkomavar' by `\string\Ifkomavar'%
|
|
}%
|
|
\Ifkomavar
|
|
}
|
|
\DeclareRobustCommand*{\Ifkomavar}[1]{%
|
|
\scr@ifundefinedorrelax{scr@#1@var}{%
|
|
\expandafter\@secondoftwo
|
|
}{%
|
|
\expandafter\@firstoftwo
|
|
}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \Ifkomavar
|
|
% \end{macro}%^^A \ifkomavar
|
|
%
|
|
% \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{v3.28}{2019/11/15}{umbenannt in \cs{Ifkomavar}}%^^A
|
|
% \begin{macro}{\Ifkomavarempty}
|
|
% \changes{v3.28}{2019/11/15}{Neu aus Umbenennung von \cs{ifkomavarempty}}%^^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. Weil einige Mitglieder des \LaTeX3-Teams sich beschwert
|
|
% haben, dass trotz fehlens einer eindeutigen Empfehlung, \KOMAScript{}
|
|
% \LaTeX-Verzweigungen mit \cs{if\dots} definiert, statt dies
|
|
% \TeX-Verzweigungen vorzubehalten, habe ich das hier nach mehr 17 Jahren
|
|
% geändert. Sollte es öffentliche Beschwerden dazu geben und Ulrike diese
|
|
% sehen, will sie übrigens darauf antworten.
|
|
% \begin{macro}{\if@komavarempty}
|
|
% \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.28}{2019/11/15}{\cs{ifkomavar} durch \cs{Ifkomavar} ersetzt}%^^A
|
|
% Da mit einer Sternvariante gearbeitet wird, wird wieder ein
|
|
% Hilfsmakro verwendet.
|
|
% \begin{macrocode}
|
|
\newcommand*{\ifkomavarempty}{%
|
|
%<package> \PackageWarning{scrletter}{%
|
|
%<class> \ClassWarning{\KOMAClassName}{%
|
|
Usage of deprecated command `\string\ifkomavarempty'.\MessageBreak
|
|
The command has been renamed to because of a\MessageBreak
|
|
recommendation of LaTeX3 team members.\MessageBreak
|
|
Please replace `\string\ifkomavarempty' by `\string\Ifkomavarempty'%
|
|
}%
|
|
\Ifkomavarempty
|
|
}
|
|
\DeclareRobustCommand*{\Ifkomavarempty}{%
|
|
\begingroup
|
|
\kernel@ifstar {\@tempswatrue\@ifkomavarempty}%
|
|
{\@tempswafalse\@ifkomavarempty}%
|
|
}
|
|
\newcommand{\@ifkomavarempty}[1]{%
|
|
\Ifkomavar{#1}{%
|
|
\if@tempswa
|
|
\@ifundefined{scr@#1@name}{%
|
|
\aftergroup\@firstoftwo
|
|
}{%
|
|
\expandafter\ifx\csname scr@#1@name\endcsname\@empty
|
|
\aftergroup\@firstoftwo
|
|
\else
|
|
\aftergroup\@secondoftwo
|
|
\fi
|
|
}%
|
|
\else
|
|
\expandafter\ifx\csname scr@#1@var\endcsname\@empty
|
|
\aftergroup\@firstoftwo
|
|
\else
|
|
\aftergroup\@secondoftwo
|
|
\fi
|
|
\fi
|
|
}{%
|
|
\@komavar@err{use}{#1}%
|
|
\aftergroup\@gobbletwo
|
|
}%
|
|
\endgroup
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \@ifkomavarempty
|
|
% \end{macro}%^^A \Ifkomavarempty
|
|
% \end{macro}%^^A \ifkomavarempty
|
|
%
|
|
% \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
|
|
% \changes{v3.28}{2019/11/15}{\cs{ifkomavarempty} durch \cs{Ifkomavarempty}
|
|
% ersetzt}%^^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
|
|
% \changes{v3.28}{2019/11/15}{\cs{ifkomavarempty} durch \cs{Ifkomavarempty}
|
|
% ersetzt}%^^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
|
|
% \changes{v3.28}{2019/11/15}{\cs{ifkomavarempty} durch \cs{Ifkomavarempty}
|
|
% ersetzt}%^^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>
|
|
% \fi
|
|
%
|
|
% \iffalse
|
|
%</letter>
|
|
% \fi
|
|
%
|
|
% \Finale
|
|
%
|
|
\endinput
|
|
%
|
|
% end of file `scrkernel-variables.dtx'
|
|
%%% Local Variables:
|
|
%%% mode: doctex
|
|
%%% TeX-master: t
|
|
%%% End:
|
|
|