From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- .../koma-script/source/scrkernel-variables.dtx | 399 +++++++++++++++++++++ 1 file changed, 399 insertions(+) create mode 100644 macros/latex/contrib/koma-script/source/scrkernel-variables.dtx (limited to 'macros/latex/contrib/koma-script/source/scrkernel-variables.dtx') diff --git a/macros/latex/contrib/koma-script/source/scrkernel-variables.dtx b/macros/latex/contrib/koma-script/source/scrkernel-variables.dtx new file mode 100644 index 0000000000..909be6f30c --- /dev/null +++ b/macros/latex/contrib/koma-script/source/scrkernel-variables.dtx @@ -0,0 +1,399 @@ +% \CheckSum{160} +% \iffalse meta-comment +% ====================================================================== +% scrkernel-variables.dtx +% Copyright (c) Markus Kohm, 2008-2017 +% +% 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-2017 +% +% 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 2640 2017-05-08 09:36:55Z kohm $ +% +%<*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 + }{% +% \ClassError{scrlttr2% +% \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!% + }% + }% + }{% +% \ClassError{scrlttr2% +% \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}} +% \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. +% \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]{% +% \ClassError{scrlttr2% +% \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 +% Feststellen, ob eine \KOMAScript-Variable überhaupt definiert ist. +% \begin{macrocode} +\DeclareRobustCommand*{\ifkomavar}[1]{% + \scr@ifundefinedorrelax{scr@#1@var}{% + \expandafter\@secondoftwo + }{% + \expandafter\@firstoftwo + }% +} +% \end{macrocode} +% \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 +% 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. +% \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 +% Da mit einer Sternvariante gearbeitet wird, wird wieder ein +% Hilfsmakro verwendet. +% \begin{macrocode} +\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} +% \end{macro} +% +% +% \iffalse +% +% \fi +% +% \iffalse +% +% \fi +% +% \Finale +% +\endinput +% +% end of file `scrkernel-variables.dtx' +%%% Local Variables: +%%% mode: doctex +%%% TeX-master: t +%%% End: -- cgit v1.2.3