diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/koma-script/source/scrkernel-variables.dtx |
Initial commit
Diffstat (limited to 'macros/latex/contrib/koma-script/source/scrkernel-variables.dtx')
-rw-r--r-- | macros/latex/contrib/koma-script/source/scrkernel-variables.dtx | 399 |
1 files changed, 399 insertions, 0 deletions
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 $ +%<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: 2017-05-08 11:36:55 +0200 (Mon, 08 May 2017) $ + \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} +\usepackage[latin1]{inputenc} +\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}} +% \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]{% +%<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 +% 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 +%</body> +% \fi +% +% \iffalse +%</letter> +% \fi +% +% \Finale +% +\endinput +% +% end of file `scrkernel-variables.dtx' +%%% Local Variables: +%%% mode: doctex +%%% TeX-master: t +%%% End: |