From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
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 $
+%<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:
-- 
cgit v1.2.3

