diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/koma-script/scrkvars.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/koma-script/scrkvars.dtx | 347 |
1 files changed, 347 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/koma-script/scrkvars.dtx b/Master/texmf-dist/source/latex/koma-script/scrkvars.dtx new file mode 100644 index 00000000000..bdbc0ab326b --- /dev/null +++ b/Master/texmf-dist/source/latex/koma-script/scrkvars.dtx @@ -0,0 +1,347 @@ +% \CheckSum{134} +% \iffalse meta-comment +% ====================================================================== +% scrkvars.dtx +% Copyright (c) Markus Kohm, 2006 +% +% 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.3b of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3b 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. +% ---------------------------------------------------------------------- +% scrkvars.dtx +% Copyright (c) Markus Kohm, 2006 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3b, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3b 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: scrkvars.dtx +%<*driver> +% \fi +\ProvidesFile{scrkvars.dtx}[2006/03/28 v2.95 KOMA-Script (koma variables)] +% \iffalse +\documentclass{scrdoc} +\usepackage[english,ngerman]{babel} +\usepackage[latin1]{inputenc} +\CodelineIndex +\RecordChanges +\GetFileInfo{scrkvars.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} +%</driver> +% \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} +% 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}{% + \@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% + }{% + 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% + }{% + 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} +% 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. +% \begin{macro}{\@setkomavar} +% \changes{v2.8q}{2002/01/14}{Neu} +% 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} +% Die Sternvariante definiert nur den Ausgabename neu. +% \begin{macro}{\@@setkomavar} +% \changes{v2.8q}{2002/01/14}{Neu} +% 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}{% + \@ifstar {\@setkomaname}{\@setkomavar}} +\newcommand*{\@setkomavar}[1]{% + \@ifnextchar [%] + {\@@setkomavar{#1}}{\@@setkomavar{#1}[\relax]}} +\newcommand*{\@setkomaname}[2]{% + \@ifundefined{scr@#1@var}{% + \@komavar@err{set}{#1}% + }{% + \@namedef{scr@#1@name}{#2}% + }% + } +\newcommand*{\@@setkomavar}{} +\long\def\@@setkomavar#1[#2]#3{% + \@ifundefined{scr@#1@var}{% + \@komavar@err{set}{#1}% + }{% + \@namedef{scr@#1@var}{#3}% + \begingroup + \def\@tempa{#2}\def\@tempb{\relax}% + \ifx\@tempa\@tempb\endgroup\else + \endgroup\@namedef{scr@#1@name}{#2}% + \fi + }% + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@komavar@err} +% \changes{v2.8q}{2002/01/14}{Neu} +% Dieses Makro wird intern in den Makros \cs{setkomavar} und +% \cs{usekomavar} verwendet. +% \begin{macrocode} +\newcommand*{\@komavar@err}[2]{% + \ClassError{% + scrlttr2% + }{% + 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} +% \changes{v2.9i}{2002/09/04}{robust} +% 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} +% \changes{v2.9i}{2002/09/04}{optionales Argument} +% \changes{v2.9j}{2002/09/18}{\cs{@firstofone} als Defaultargument +% eingefügt} +% \begin{macro}{\@usekomaname} +% \changes{v2.8q}{2002/01/14}{Neu} +% \changes{v2.9i}{2002/09/04}{optionales Argument} +% \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}{% + \@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}{\ifkomavarempty} +% \changes{v2.8q}{2002/01/14}{Neu} +% \changes{v2.9i}{2002/09/04}{Leerzeichen rausgeworfen} +% \changes{v2.9i}{2002/09/04}{robust} +% Es gibt auch noch ein Makro, um zu testen, ob eine KOMA-Script +% 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} +% Da mit einer Sternvariante gearbeitet wird, wird wieder ein +% Hilfsmakro verwendet. +% \begin{macrocode} +\DeclareRobustCommand*{\ifkomavarempty}{% + \begingroup + \@ifstar {\@tempswatrue\@ifkomavarempty}% + {\@tempswafalse\@ifkomavarempty}% + } +\newcommand{\@ifkomavarempty}[3]{% + \@ifundefined{scr@#1@var}{% + \endgroup\@komavar@err{use}{#1}% + }{% + \if@tempswa\endgroup + \@ifundefined{scr@#1@name}{#2}{% + \expandafter\ifx\csname scr@#1@name\endcsname\@empty + #2% + \else + #3% + \fi + }% + \else\endgroup + \expandafter\ifx\csname scr@#1@var\endcsname\@empty + #2% + \else + #3% + \fi + \fi + }% + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% \iffalse +%</body> +% \fi +% +% \iffalse +%</letter> +% \fi +% +% \Finale +% +\endinput +% +% end of file `scrkvars.dtx' +%%% Local Variables: +%%% mode: doctex +%%% TeX-master: t +%%% End: |