summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/koma-script/scrkernel-basics.dtx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2015-04-24 23:19:31 +0000
committerKarl Berry <karl@freefriends.org>2015-04-24 23:19:31 +0000
commit0a00b3b492fd27dc12cddae602b2c43206a17d74 (patch)
tree40a09bf2208cc13bcd727626e1ee058e2caa68b1 /Master/texmf-dist/source/latex/koma-script/scrkernel-basics.dtx
parent77b150bbd42aa48ba71627e09763785b26adfcfd (diff)
koma-script (24apr15)
git-svn-id: svn://tug.org/texlive/trunk@37036 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/koma-script/scrkernel-basics.dtx')
-rw-r--r--Master/texmf-dist/source/latex/koma-script/scrkernel-basics.dtx835
1 files changed, 599 insertions, 236 deletions
diff --git a/Master/texmf-dist/source/latex/koma-script/scrkernel-basics.dtx b/Master/texmf-dist/source/latex/koma-script/scrkernel-basics.dtx
index e26ceedc923..1fd7bf5a694 100644
--- a/Master/texmf-dist/source/latex/koma-script/scrkernel-basics.dtx
+++ b/Master/texmf-dist/source/latex/koma-script/scrkernel-basics.dtx
@@ -1,4 +1,4 @@
-% \CheckSum{2579}
+% \CheckSum{2919}
% \iffalse meta-comment
% ======================================================================
% scrkernel-basics.dtx
@@ -55,17 +55,22 @@
% Right brace \} Tilde \~}
%
% \iffalse
-%%% From File: $Id: scrkernel-basics.dtx 1897 2015-01-02 12:04:12Z kohm $
+%%% From File: $Id: scrkernel-basics.dtx 2011 2015-03-17 11:39:55Z kohm $
%<package&option>\NeedsTeXFormat{LaTeX2e}[1995/06/01]
%<*driver>
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\begingroup
- \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
- \filedate$Date: 2015-01-02 13:04:12 +0100 (Fri, 02 Jan 2015) $
- \def\filerevision$#1: #2 ${\gdef\filerevision{#2}}
+ \def\filedate$#1: #2-#3-#4 #5${\def\filedate{#2/#3/#4}}
+ \filedate$Date: 2015-03-17 12:39:55 +0100 (Tue, 17 Mar 2015) $
+ \def\filerevision$#1: #2 ${\def\filerevision{r#2}}
\filerevision$Revision: 1638 $
-\endgroup
-\ProvidesFile{scrkernel-basics.dtx}[\filedate\space\filerevision\space
+ \xdef\fileinfo{\filedate\space\filerevision\space}
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrkernel_basics.dtx}%
+ [\filedate\space\filerevision\space
+ }
+\reserved@a
%</driver>
%<*driver|(package&option)>
%<package>\ProvidesPackage{%
@@ -124,7 +129,7 @@
%
% \selectlanguage{ngerman}
%
-% \changes{v1.0}{2002/07/06}{Beginn der ersten Version}
+% \changes{v1.0}{2002/07/06}{Beginn der ersten Version}^^A
% \changes{v3.12}{203/03/05}{Verwendung von \cs{@tempa}, \cs{@tempb},
% \cs{@tempc} eliminiert}
%
@@ -216,11 +221,11 @@
% \subsection{Test von Anweisungen}
%
% \begin{macro}{\scr@ifundefinedorrelax}
-% \changes{v2.95c}{2006/08/12}{neu (intern)}
-% \changes{v2.97b}{2007/03/08}{vermurkste Logik korrigiert}
-% \changes{v2.97c}{2007/04/18}{vermurkste Funktion korrigiert}
+% \changes{v2.95c}{2006/08/12}{neu (intern)}^^A
+% \changes{v2.97b}{2007/03/08}{vermurkste Logik korrigiert}^^A
+% \changes{v2.97c}{2007/04/18}{vermurkste Funktion korrigiert}^^A
% \changes{v2.97c}{2007/04/18}{von \cs{scr@ifundefined} umbenannt}
-% \changes{v3.02c}{2009/02/19}{Sonderbehandlung für nicht \eTeX entfernt}
+% \changes{v3.02c}{2009/02/19}{Sonderbehandlung für nicht \eTeX entfernt}^^A
% Dieses Makro arbeitet wie \cs{@ifundefined}, definiert dabei aber
% ein undefiniertes Makro nicht als \cs{relax}. Es muss bereits hier definiert
% werden, weil es gleich verwendet wird.
@@ -239,13 +244,13 @@
}
%</base>
% \end{macrocode}
-% \end{macro}^^A \scr@ifundefinedorrelax
+% \end{macro}^^A \scr@ifundefinedorrelax
%
%
% \subsection{Erweiterung von Meldungen}
%
% \begin{macro}{\PackageErrorNoLine}
-% \changes{v3.12}{2013/09/19}{neu}
+% \changes{v3.12}{2013/09/19}{neu}^^A
% Dieses Makro wird zwar bereits seit langem für einige wenige Fehlermeldungen
% verwendet, existierte bisher aber nicht. Es wird für Fehlermeldungen
% verwendet, denen keine eindeutige Zeilennummer zugeordnet werden kann. In
@@ -270,16 +275,16 @@
% sind.
%
% \begin{macro}{\DefineFamily}
-% \changes{v3.00}{2008/04/30}{Neue Anweisung}
+% \changes{v3.00}{2008/04/30}{Neue Anweisung}^^A
% \begin{macro}{\DefineFamilyMember}
-% \changes{v3.00}{2008/04/30}{Neue Anweisung}
+% \changes{v3.00}{2008/04/30}{Neue Anweisung}^^A
% \begin{macro}{\DefineFamilyKey}
-% \changes{v3.00}{2008/04/30}{Neue Anweisung}
+% \changes{v3.00}{2008/04/30}{Neue Anweisung}^^A
% \changes{v3.12}{2013/03/04}{Setzen von \cs{FamilyKeyState}}
% \begin{macro}{\scr@if@family}
-% \changes{v3.00}{2008/04/30}{Neu (intern)}
+% \changes{v3.00}{2008/04/30}{Neu (intern)}^^A
% \begin{macro}{\scr@if@familymember}
-% \changes{v3.00}{2008/04/30}{Neu (intern)}
+% \changes{v3.00}{2008/04/30}{Neu (intern)}^^A
% Familie, Familienmitglied und \textsf{keyval}-Schlüssel für ein
% Familienmitglied definieren. Dabei wird als Familienmitglied per Default der
% (Datei-)Name des aktuellen Pakets bzw. der aktuellen Klasse verwendet.
@@ -377,7 +382,7 @@
% \end{macro}^^A \DefineFamily
%
% \begin{macro}{\RelaxFamilyKey}
-% \changes{v3.15}{2014/12/03}{neue Anweisung}
+% \changes{v3.15}{2014/12/03}{neue Anweisung}^^A
% Undefiniert einen Schlüssel. Irgendwelche Hilfsmakros werden dabei nicht
% angetastet. Stattdessen wird nur der Schlüssel selbst und ggf. ein
% Defaultwert als \cs{relax} definiert, so dass er nicht mehr verwendet werden
@@ -397,9 +402,9 @@
% \end{macro}
%
% \begin{macro}{\FamilyKeyState}
-% \changes{v3.12}{2013/03/04}{Neue Anweisung}
+% \changes{v3.12}{2013/03/04}{Neue Anweisung}^^A
% \begin{macro}{\FamilyKeyStateProcessed}
-% \changes{v3.12}{2013/03/04}{Neue Anweisung}
+% \changes{v3.12}{2013/03/04}{Neue Anweisung}^^A
% \begin{macro}{\FamilyKeyStateUnknown}
% \changes{v3.12}{2013/03/04}{Neue Anweisung}%
% \begin{macro}{\FamilyKeyStateUnknownValue}
@@ -441,9 +446,9 @@
% \end{macro}^^A \FamilyKeyState
%
% \begin{macro}{\FamilyOfKey}
-% \changes{v3.12}{2013/03/04}{Neue Anweisung}
+% \changes{v3.12}{2013/03/04}{Neue Anweisung}^^A
% \begin{macro}{\FamilyMemberOfKey}
-% \changes{v3.12}{2013/03/04}{Neue Anweisung}
+% \changes{v3.12}{2013/03/04}{Neue Anweisung}^^A
% Geben innerhalb der Verarbeitung eines Schlüssels dessen Familie bzw. das
% zugehörige Familienmitglied an.
% \begin{macrocode}
@@ -456,7 +461,9 @@
% \end{macro}^^A \FamilyOfKey
%
% \begin{macro}{\KOMA@key}
-% \changes{v2.97c}{2007/04/19}{neues optionales Argument}
+% \changes{v2.97c}{2007/04/19}{neues optionales Argument}^^A
+% \changes{v3.17}{2015/02/24}{rudimentäre Funktionalität zur Speicherung von
+% Optionen}^^A
% \begin{macro}{\KOMA@key@familylist}
% \textsf{keyval}-Schlüssel für \KOMAScript{} werden mit \cs{KOMAkey}
% definiert, damit auch die Familie korrekt gesetzt und ggf. der Liste der
@@ -464,12 +471,271 @@
% \begin{macrocode}
%<*koma>
\newcommand*{\KOMA@key}[1][.\@currname.\@currext]{%
- \DefineFamilyMember{KOMA}%
- \DefineFamilyKey[#1]{KOMA}%
+ \DefineFamilyMember[{#1}]{KOMA}%
+ \@ifundefined{scr@kav@KOMA#1}{\@namedef{scr@kav@KOMA#1}{}}{}%
+ \DefineFamilyKey[{#1}]{KOMA}%
+}
+%</koma>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\KOMA@kav@add}
+% \changes{v3.17}{2015/02/24}{neu (\KOMAScript intern)}^^A
+% Dieses Makro speichert ein \texttt{key=value}-Paar in der internen Liste.
+% Es ist ausschließlich für den \KOMAScript-internen Gebrauch bestimmt.
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMA@kav@add}[3]{%
+ \@ifundefined{scr@kav@KOMA#1}{%
+ \KOMA@internal@error\KOMA@kav@add{#1}%
+ }{%
+ \expandafter\l@addto@macro\csname scr@kav@KOMA#1\endcsname{\do{{#2}{#3}}}%
+ }%
+}
+% \end{macrocode}
+%</koma>
+% \end{macro}
+%
+% \begin{macro}{\KOMA@kav@xadd}
+% \changes{v3.17}{2015/02/24}{neu (\KOMAScript intern)}^^A
+% Dieses Makro speichert ein zuvor expandiertes \texttt{key=value}-Paar in der
+% internen Liste.
+% Es ist ausschließlich für den \KOMAScript-internen Gebrauch bestimmt.
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMA@kav@xadd}[3]{%
+ \@ifundefined{scr@kav@KOMA#1}{%
+ \KOMA@internal@error\KOMA@kav@xadd{#1}%
+ }{%
+ \protected@edef\reserved@a{{#2}{#3}}%
+ \expandafter\l@addto@macro\csname scr@kav@KOMA#1\expandafter\endcsname
+ \expandafter{\expandafter\do\expandafter{\reserved@a}}%
+ }%
+}
+% \end{macrocode}
+%</koma>
+% \end{macro}
+%
+% \begin{macro}{\KOMA@kav@remove}
+% \changes{v3.17}{2015/02/24}{neu (\KOMAScript intern)}^^A
+% Dieses Makro entfernt ein ganz bestimmtes \texttt{key=value}-Paar aus der
+% internen Liste.
+% Es ist ausschließlich für den \KOMAScript-internen Gebrauch bestimmt.
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMA@kav@remove}[3]{%
+ \@ifundefined{scr@kav@KOMA#1}{%
+ \KOMA@internal@error\KOMA@kav@remove{#1}%
+ }{%
+ \begingroup
+ \def\reserved@a{\endgroup\@namedef{scr@kav@KOMA#1}{}}%
+ \edef\reserved@b{\detokenize{{#2}{#3}}}%
+ \def\do##1{%
+ \edef\reserved@c{\detokenize{##1}}%
+ \ifx\reserved@b\reserved@c\else
+ \l@addto@macro\reserved@a{%
+ \expandafter\l@addto@macro\csname scr@kav@KOMA#1\endcsname{%
+ \do{##1}%
+ }%
+ }%
+ \fi
+ }%
+ \@nameuse{scr@kav@KOMA#1}%
+ \reserved@a
+ }%
+}
+%</koma>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\KOMA@kav@removekey}
+% \changes{v3.17}{2015/02/24}{neu (\KOMAScript intern)}^^A
+% Dieses Makro entfernt alle \texttt{key=value}-Paar mit einem gegebenen
+% \texttt{key} aus der internen Liste.
+% Es ist ausschließlich für den \KOMAScript-internen Gebrauch bestimmt.
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMA@kav@removekey}[2]{%
+ \@ifundefined{scr@kav@KOMA#1}{%
+ \KOMA@internal@error\KOMA@kav@removekey{#1}%
+ }{%
+ \begingroup
+ \def\reserved@a{\endgroup\@namedef{scr@kav@KOMA#1}{}}%
+ \edef\reserved@b{\detokenize{#2}}%
+ \def\reserved@d##1##2{\edef\reserved@c{\detokenize{##1}}}%
+ \def\do##1{%
+ \reserved@d##1\relax
+ \ifx\reserved@b\reserved@c\else
+ \l@addto@macro\reserved@a{%
+ \expandafter\l@addto@macro\csname scr@kav@KOMA#1\endcsname{%
+ \do{##1}%
+ }%
+ }%
+ \fi
+ }%
+ \@nameuse{scr@kav@KOMA#1}%
+ \reserved@a
+ }%
+}
+%</koma>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\KOMA@kav@replacevalue}
+% \begin{macro}{\KOMA@kav@xreplacevalue}
+% \changes{v3.17}{2015/02/25}{neu (\KOMAScript intern)}^^A
+% Diese Makros dienen dazu, den Wert Schlüssels in der internen Liste
+% auszutauschen. Das erste (optionale) Argument ist das Mitglied, das zweite
+% ist der Name des Schlüssels, das dritte der neue Wert. Es setzt den Status
+% \cs{FamilyKeyStateProcessed} voraus. Anderenfalls tut es nichts!
+% Es ist ausschließlich für den \KOMAScript-internen Gebrauch bestimmt.
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMA@kav@replacevalue}[3]{%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \@ifundefined{scr@kav@KOMA#1}{%
+ \KOMA@internal@error\KOMA@kav@replacevalue{#1}%
+ }{%
+ \KOMA@kav@removekey{#1}{#2}%
+ \KOMA@kav@add{#1}{#2}{#3}%
+ }%
+ \fi
+}
+\newcommand*{\KOMA@kav@xreplacevalue}[3]{%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \@ifundefined{scr@kav@KOMA#1}{%
+ \KOMA@internal@error\KOMA@kav@replacevalue{#1}%
+ }{%
+ \KOMA@kav@removekey{#1}{#2}%
+ \KOMA@kav@xadd{#1}{#2}{#3}%
+ }%
+ \fi
+}
+%</koma>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\KOMA@kav@replacebool}
+% \changes{v3.17}{2015/02/24}{neu (\KOMAScript intern)}^^A
+% Dieses Makro dient dazu, den Wert eines if-Schlüssels in der internen Liste
+% auszutauschen. Das erste (optionale) Argument ist das Mitglied, das zweite
+% ist der Name des Schlüssels, das dritte der Name des Schalters. Es setzt den
+% Status \cs{FamilyKeyStateProcessed} voraus. Anderenfalls tut es nichts!
+% Es ist ausschließlich für den \KOMAScript-internen Gebrauch bestimmt.
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMA@kav@replacebool}[3]{%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \@ifundefined{scr@kav@KOMA#1}{%
+ \KOMA@internal@error\KOMA@kav@replacebool{#1}%
+ }{%
+ \KOMA@kav@remove{#1}{#2}{false}%
+ \KOMA@kav@remove{#1}{#2}{true}%
+ \expandafter\ifx\csname if#3\expandafter\endcsname
+ \csname iftrue\endcsname
+ \KOMA@kav@xadd{#1}{#2}{true}%
+ \else
+ \KOMA@kav@xadd{#1}{#2}{false}%
+ \fi
+ }%
+ \fi
+}
+%</koma>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\KOMA@kav@defall}
+% \changes{v3.17}{2015/02/24}{neu (\KOMAScript intern)}^^A
+% Dieses Makro liefert eine \texttt{key=value}-Liste aller gespeicherten Paare.
+% Das erste Argument ist die zu definierende Anweisung, das zweite ist das
+% Mitglied.
+% Es ist ausschließlich für den \KOMAScript-internen Gebrauch bestimmt.
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMA@kav@defall}[2]{%
+ \@ifundefined{scr@kav@KOMA#2}{%
+ \KOMA@internal@error\KOMA@kav@defall{#1}%
+ }{%
+ \begingroup
+ \let\reserved@a\@empty
+ \def\reserved@b##1##2{\l@addto@macro\reserved@a{,{##1=##2}}}%
+ \def\do##1{\reserved@b##1}%
+ \@nameuse{scr@kav@KOMA#2}%
+ \ifx\reserved@a\@empty
+ \def\reserved@b{\endgroup\let#1\@empty}%
+ \else
+ \edef\reserved@b{%
+ \unexpanded{\endgroup\def#1}{%
+ \unexpanded
+ \expandafter\expandafter\expandafter{%
+ \expandafter\@gobble\reserved@a}}}%
+ \fi
+ \reserved@b
+ }%
+}
+%</koma>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\KOMA@kav@defone}
+% \changes{v3.17}{2015/02/25}{neu (\KOMAScript intern)}^^A
+% Dieses Makro liefert alle aktuellen Werte eine Schlüssels aus der
+% \texttt{key=value}-Liste aller gespeicherten Paare. Falls es mehr als einen
+% Wert gibt, so werden diese \cs{KOMAoption}-tauglich verknüpft. Das erste
+% Argument ist die zu definierende Anweisung, das zweite ist das Mitglied
+% und das dritte der Schlüssel.
+% Es ist ausschließlich für den \KOMAScript-internen Gebrauch bestimmt.
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMA@kav@defone}[3]{%
+ \@ifundefined{scr@kav@KOMA#2}{%
+ \KOMA@internal@error\KOMA@kav@defall{#1}%
+ }{%
+ \begingroup
+ \let\reserved@a\@empty
+ \def\reserved@b##1##2{%
+ \ifstr{##1}{#3}{\l@addto@macro\reserved@a{,{##2}}}{}%
+ }%
+ \def\do##1{\reserved@b##1}%
+ \@nameuse{scr@kav@KOMA#2}%
+ \ifx\reserved@a\@empty
+ \def\reserved@b{\endgroup\let#1\@empty}%
+ \else
+ \edef\reserved@b{%
+ \unexpanded{\endgroup\def#1}{%
+ \unexpanded
+ \expandafter\expandafter\expandafter{%
+ \expandafter\@gobble\reserved@a}}}%
+ \fi
+ \reserved@b
+ }%
}
%</koma>
% \end{macrocode}
% \end{macro}
+%
+% \begin{macro}{\KOMA@internal@error}
+% \changes{v3.17}{2015/02/24}{neu (\KOMAScript intern)}^^A
+% Einfach nur eine Meldung über einen internen Fehler mit der Bitte um einen
+% entsprechenden Bug-Report.
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMA@internal@error}[2]{%
+ \PackageError{scrkbase}{internal error using \string#1{#2}}{%
+ You've found an internal error either in KOMA-Script or a third
+ party\MessageBreak
+ definition, that uses KOMA-Script internal macros.\MessageBreak
+ Please send a bug report with a minimal but complete example,
+ that\MessageBreak
+ shows this error, to komascript at gmx dot info or report it
+ at\MessageBreak
+ <http://www.komascript.de/forum/20> (you need an account to do so).%
+ }%
+}
+%</koma>
+% \end{macrocode}
% \end{macro}
%
% \subsection{Optionen}
@@ -482,8 +748,8 @@
% definiert wurden.
%
% \begin{macro}{\@globaloptionslist}
-% \changes{v2.96}{2006/11/26}{new}
-% \changes{v2.96}{2006/11/26}{Klassenoptionen durchsuchen}
+% \changes{v2.96}{2006/11/26}{new}^^A
+% \changes{v2.96}{2006/11/26}{Klassenoptionen durchsuchen}^^A
% Die Lister der globalen Optionen wird teilweise benötigt. Weil
% \textsl{xkeyval} dämlicherweise glaubt, es müsse alle Optionen mit
% Gleichheitszeichen aus der Liste der Klassenoptionen entfernen
@@ -506,8 +772,8 @@
% \begin{macro}{\FamilyProcessOptions}
% \changes{v3.00}{2008/04/30}{Neue Anweisung}%
% \changes{v3.11a}{2012/06/11}{Klassen melden falsche Werte nicht
-% selbst als Fehler, sondern informieren nur darüber}
-% \changes{v3.12}{2013/03/04}{Fehlerbehandlung}
+% selbst als Fehler, sondern informieren nur darüber}^^A
+% \changes{v3.12}{2013/03/04}{Fehlerbehandlung}^^A
% Es ist zu beachten, dass falsche Werte für Optionen grundsätzlich nicht in
% der Verarbeitung der Optionen per Info, Warnung oder Fehler gemeldet werden
% sollten, sondern über setzen von \cs{FamilyKeyState}. Erst, wenn auch andere
@@ -518,7 +784,7 @@
% darf.
% \begin{macro}{\scr@removeunused}
% \changes{v3.10}{2011/09/12}{neu (intern)}%
-% \changes{v3.12}{2013/03/04}{entfernt}
+% \changes{v3.12}{2013/03/04}{entfernt}^^A
% \end{macro}^^A \scr@removeunused
% \begin{macro}{\scr@optiontest}
% \changes{v2.97c}{2007/04/18}{neu (intern)}%
@@ -615,14 +881,14 @@
\@onlypreamble\FamilyProcessOptions
% \end{macrocode}
% \begin{macro}{\AtEndOfFamilyOptions}
-% \changes{v3.12}{2013/03/04}{Neue Anweisung}
+% \changes{v3.12}{2013/03/04}{Neue Anweisung}^^A
% Mit dieser Option kann innerhalb der Ausführung einer Option Material auf
% das Ende der aktuellen \cs{FamilyProcessOptions}, \cs{FamilyExecuteOptions},
% \cs{FamilyOptions} oder \cs{FamilyOption} verzögert werden. Als einziges
% Argument wird der zu verzögernde Code erwartet, der an \cs{l@addto@macro}
% delegiert wird.
% \begin{macro}{\scr@AtEndOfFamilyOptions}
-% \changes{v3.12}{2013/05/29}{Neue Anweisung (intern)}
+% \changes{v3.12}{2013/05/29}{Neue Anweisung (intern)}^^A
% \begin{macrocode}
\newcommand*{\scr@AtEndOfFamilyOptions}{%
\expandafter
@@ -734,10 +1000,10 @@
% \end{macro}
%
% \begin{option}{internalonly}
-% \changes{v2.96}{2006/11/26}{neu}
-% \changes{v2.97c}{2007/06/20}{geht auch ohne Argument}
+% \changes{v2.96}{2006/11/26}{neu}^^A
+% \changes{v2.97c}{2007/06/20}{geht auch ohne Argument}^^A
% \begin{macro}{\dont@let@as@internal@defined}
-% \changes{v2.96}{2006/11/26}{neu (intern)}
+% \changes{v2.96}{2006/11/26}{neu (intern)}^^A
% Anweisungen, die mit einem internen und einem Anwendername vorhanden sind,
% können vor dem Anwender optional verborgen werden. Wird kein Argument
% angegeben, so werden alle Anweisungen verborgen.
@@ -763,8 +1029,8 @@
% \end{macro}
% \end{option}
%
-% \changes{v2.96}{2006/08/20}{Optionen werden abgearbeitet}
-% \changes{v2.97c}{2007/04/18}{Optionen werden mit \cs{KOMAProcessOptions}
+% \changes{v2.96}{2006/08/20}{Optionen werden abgearbeitet}^^A
+% \changes{v2.97c}{2007/04/18}{Optionen werden mit \cs{KOMAProcessOptions}^^A
% abgearbeitet}
% \begin{macrocode}
%<koma>\KOMAProcessOptions\relax
@@ -779,7 +1045,7 @@
% \subsection{Ein wenig zusätzliche Mathematik für \eTeX}
%
% \begin{macro}{\XdivY}
-% \changes{v3.05a}{2010/03/10}{Neu}
+% \changes{v3.05a}{2010/03/10}{Neu}^^A
% Ergebnis ist erster Argument durch zweites abgerundet auf die nächst
% kleinere ganze Zahl.
% \begin{macrocode}
@@ -792,7 +1058,7 @@
% \end{macro}
%
% \begin{macro}{\XmodY}
-% \changes{v3.05a}{2010/03/10}{Neu}
+% \changes{v3.05a}{2010/03/10}{Neu}^^A
% Ergebnis ist erstes Argument modulo zweites Argument.
% \begin{macrocode}
%<*base>
@@ -805,10 +1071,10 @@
%
% \subsection{Häufig benötigte Befehle}
%
-% \begin{macro}{\if@atdocument}
-% \changes{v2.95}{2002/12/05}{neuer Schalter}
-% \begin{macro}{\@atdocumenttrue}
-% \begin{macro}{\@atdocumentfalse}
+% \begin{macro}{\if@atdocument}
+% \changes{v2.95}{2002/12/05}{neuer Schalter}^^A
+% \begin{macro}{\@atdocumenttrue}
+% \begin{macro}{\@atdocumentfalse}
% Dieser Schalter wird bei \cs{begin}\texttt{\{document\}} wahr. Er
% wird von \KOMAScript{} für Befehle verwendet, die sich
% unterschiedlich verhalten, je nachdem, ob sie in der Präambel oder
@@ -821,21 +1087,21 @@
\@onlypreamble\@atdocumentfalse
%</base>
% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
% \begin{macro}{\let@as@internal@defined}
-% \changes{v2.95}{2002/08/19}{neu (intern)}
-% \changes{v2.95c}{2006/08/12}{Warnung bei Umdefinierung}
+% \changes{v2.95}{2002/08/19}{neu (intern)}^^A
+% \changes{v2.95c}{2006/08/12}{Warnung bei Umdefinierung}^^A
% \changes{v2.96}{2006/11/26}{Herausreichen von internen Makros als
-% Benutzermakros kann verhindert werden}
+% Benutzermakros kann verhindert werden}^^A
% \changes{v2.97c}{2007/06/20}{Herausreichen von internen Makros kann
-% generell verhindert werden}
+% generell verhindert werden}^^A
% \changes{v3.10}{2010/10/26}{\cs{ignorespaces} beim \cs{document}-Patch
% ergänzt}
% \changes{v3.13a}{2014/08/13}{potentielle Leerzeichen durch Zeilenumbruch
-% beseitigt}%^^A
+% beseitigt}^^A
% Dieses Makro wird intern verwendet, um dokumentierte Makros mit der
% Definition von internen Makros zu versehen, falls sie nicht bereits
% definiert oder als nicht zu definieren markiert sind. Der Name des
@@ -893,7 +1159,8 @@
If \expandafter\string\csname #1\endcsname\space does not behave
like\MessageBreak
it was described at the KOMA-Script manual, try to\MessageBreak
- load `scrbase.sty' earlier or find out at which\MessageBreak
+ load `scrbase.\scr@pkgextension' earlier or find out at
+ which\MessageBreak
package or class \expandafter\string\csname #1\endcsname\space
was defined before\@gobble
}%
@@ -902,12 +1169,12 @@
}
%</base>
% \end{macrocode}
-% \end{macro}
+% \end{macro}
%
-% \begin{macro}{\ifundefinedorrelax}
-% \changes{v2.95}{2002/08/21}{neu}
-% \changes{v2.95c}{2006/08/12}{über interne Anweisung definiert}
-% \changes{v2.97c}{2007/06/20}{umbenannt von \cs{ifundefined}}
+% \begin{macro}{\ifundefinedorrelax}
+% \changes{v2.95}{2002/08/21}{neu}^^A
+% \changes{v2.95c}{2006/08/12}{über interne Anweisung definiert}^^A
+% \changes{v2.97c}{2007/06/20}{umbenannt von \cs{ifundefined}}
% Dieses Makro arbeitet wie \cs{@ifundefined}, definiert dabei aber
% ein undefiniertes Makro nicht als \cs{relax}.
% \begin{macrocode}
@@ -915,10 +1182,10 @@
\let@as@internal@defined{ifundefinedorrelax}
%</base>
% \end{macrocode}
-% \end{macro}
+% \end{macro}
%
% \begin{macro}{\ifnotundefined}
-% \changes{v2.95}{2002/08/21}{neu}
+% \changes{v2.95}{2002/08/21}{neu}^^A
% \changes{v2.95c}{2006/08/12}{nutzt \eTeX{} wenn möglich}
% \changes{v3.02c}{2009/02/19}{\eTeX{} ist zwingend}
% Dieses Makro arbeitet genau umgekehrt zu \cs{ifundefined}. Manchmal
@@ -935,11 +1202,11 @@
}
%</base>
% \end{macrocode}
-% \end{macro}
+% \end{macro}
%
-% \begin{macro}{\ifstr}
-% \changes{v2.95}{2004/07/20}{if- und then-Teil werden nicht gefressen}
-% \changes{v3.04b}{2010/01/29}{\cs{edef} durch \cs{protected@edef} ersetzt}
+% \begin{macro}{\ifstr}
+% \changes{v2.95}{2004/07/20}{if- und then-Teil werden nicht gefressen}^^A
+% \changes{v3.04b}{2010/01/29}{\cs{edef} durch \cs{protected@edef} ersetzt}
% Dieses Makro vergleicht zwei Tokenfolgen. Eigentlich müsste es also
% eher \cs{ifequal} oder ähnlich heißen.
% \begin{macrocode}
@@ -954,10 +1221,10 @@
}
%</base>
% \end{macrocode}
-% \end{macro}
+% \end{macro}
%
% \begin{macro}{\ifstrstart}
-% \changes{v3.12}{2013/11/05}{neu}%^^A
+% \changes{v3.12}{2013/11/05}{neu}^^A
% Falls die Expansion des ersten Arguments mit der Expansion des zweiten
% Arguments beginnt, wird das dritte Argument ausgeführt, sonst das vierte.
% \begin{macrocode}
@@ -970,7 +1237,7 @@
}
% \end{macrocode}
% \begin{macro}{\@ifstrstart}
-% \changes{v3.12}{2013/11/05}{neu (intern)}%^^A
+% \changes{v3.12}{2013/11/05}{neu (intern)}^^A
% Hilfsmakro, damit die Argumente vollständig expandiert werden können.
% \begin{macrocode}
\newcommand*{\@ifstrstart}[2]{%
@@ -989,7 +1256,7 @@
% \end{macro}
%
% \begin{macro}{\ifisdimen}
-% \changes{v3.12}{2013/11/05}{neu}%^^A
+% \changes{v3.12}{2013/11/05}{neu}^^A
% Falls die Expansion des ersten Arguments eine \cs{dimen} ist, wird das
% zweite Argument ausgeführt, sonst das dritte.
% \begin{macrocode}
@@ -1013,7 +1280,7 @@
}
% \end{macrocode}
% \begin{macro}{\scr@ifrelax@to@nnil}
-% \changes{v3.12}{2013/11/05}{neu (intern)}%^^A
+% \changes{v3.12}{2013/11/05}{neu (intern)}^^A
% Hilfsmakro, zur Verwendung beispielsweise nach Zuweissungen. Falls alles bis
% zum ersten \cs{@nnil} aus genau einem \cs{relax} besteht, wird das erste
% Argument ausgeführt, sonst das zweite.
@@ -1035,7 +1302,7 @@
% \end{macro}
%
% \begin{macro}{\ifisdimexpr}
-% \changes{v3.12}{2013/11/05}{neu}
+% \changes{v3.12}{2013/11/05}{neu}^^A
% Falls die Expansion des ersten Arguments eine \cs{dimexpr} ist, wird das
% zweite Argument ausgeführt, sonst das dritte. Achtung: Falls der Ausdruck
% ungültig ist, so wird ein Fehler gemeldet!
@@ -1060,7 +1327,7 @@
}
% \end{macrocode}
% \begin{macro}{\scr@ifemptyorrelax@to@nnil}
-% \changes{v3.12}{2013/11/05}{neu (intern)}%^^A
+% \changes{v3.12}{2013/11/05}{neu (intern)}^^A
% Hilfsmakro, zur Verwendung beispielsweise nach Zuweissungen. Falls alles bis
% zum ersten \cs{@nnil} leer ist oder aus genau einem \cs{relax} besteht, wird
% das erste Argument ausgeführt, sonst das zweite.
@@ -1086,7 +1353,7 @@
% \end{macro}
%
% \begin{macro}{\ifisskip}
-% \changes{v3.12}{2013/11/05}{neu}%^^A
+% \changes{v3.12}{2013/11/05}{neu}^^A
% Falls die Expansion des ersten Arguments ein \cs{skip} ist, wird das
% zweite Argument ausgeführt, sonst das dritte.
% \begin{macrocode}
@@ -1113,7 +1380,7 @@
% \end{macro}
%
% \begin{macro}{\ifisglueexpr}
-% \changes{v3.12}{2013/11/05}{neu}
+% \changes{v3.12}{2013/11/05}{neu}^^A
% Falls die Expansion des ersten Arguments eine \cs{glueexpr} ist, wird das
% zweite Argument ausgeführt, sonst das dritte. Achtung: Falls der Ausdruck
% ungültig ist, so wird ein Fehler gemeldet!
@@ -1141,7 +1408,7 @@
% \end{macro}
%
% \begin{macro}{\ifiscount}
-% \changes{v3.12}{2013/11/05}{neu}
+% \changes{v3.12}{2013/11/05}{neu}^^A
% Falls die Expansion des ersten Arguments ein \cs{count} ist, wird das
% zweite Argument ausgeführt, sonst das dritte. Für \LaTeX-Zähler siehe
% stattdessen \cs{ifiscounter}.
@@ -1169,7 +1436,7 @@
% \end{macro}
%
% \begin{macro}{\ifisnumexpr}
-% \changes{v3.12}{2013/11/05}{neu}
+% \changes{v3.12}{2013/11/05}{neu}^^A
% Falls die Expansion des ersten Arguments eine \cs{numexpr} ist, wird das
% zweite Argument ausgeführt, sonst das dritte. Achtung: Falls der Ausdruck
% ungültig ist, so wird ein Fehler gemeldet!
@@ -1197,7 +1464,7 @@
% \end{macro}
%
% \begin{macro}{\ifiscounter}
-% \changes{v3.12}{2013/11/05}{neu}
+% \changes{v3.12}{2013/11/05}{neu}^^A
% Falls die Expansion des ersten Arguments ein \LaTeX-Zähler ist, wird das
% zweite Argument ausgeführt, sonst das dritte.
% \begin{macrocode}
@@ -1214,8 +1481,8 @@
% \end{macro}
%
% \begin{macro}{\ifisinteger}
-% \changes{v3.12}{2013/11/05}{neu}%^^A
-% \changes{v3.12a}{2014/01/24}{Leerzeichenfehler korrigiert}%^^A
+% \changes{v3.12}{2013/11/05}{neu}^^A
+% \changes{v3.12a}{2014/01/24}{Leerzeichenfehler korrigiert}^^A
% Falls die Expansion des ersten Arguments eine (positive oder negative) ganze
% Zahl ist, wird das zweite Argument ausgeführt, sonst das dritte.
% \begin{macrocode}
@@ -1229,7 +1496,7 @@
}
% \end{macrocode}
% \begin{macro}{\scr@ifintegerplusminus}
-% \changes{v3.12}{2013/11/05}{neu (intern)}
+% \changes{v3.12}{2013/11/05}{neu (intern)}^^A
% Hilfsmakro, ausschließlich für \cs{ifisinteger}.
% \begin{macrocode}
\newcommand*{\scr@ifintegerplusminus}{}
@@ -1256,8 +1523,8 @@
% \end{macro}
%
% \begin{macro}{\ifisdimension}
-% \changes{v3.12}{2013/11/05}{neu}%^^A
-% \changes{v3.12a}{2014/01/24}{Leerzeichenfehler korrigiert}%^^A
+% \changes{v3.12}{2013/11/05}{neu}^^A
+% \changes{v3.12a}{2014/01/24}{Leerzeichenfehler korrigiert}^^A
% Falls die Expansion des ersten Arguments eine (positive oder negative)
% Länge ist, wird das zweite Argument ausgeführt, sonst das dritte. Es sei
% darauf hingewiesen, dass derzeit ungültige oder fehlende Einheiten eine
@@ -1273,7 +1540,7 @@
}
% \end{macrocode}
% \begin{macro}{\scr@ifdimensionplusminus}
-% \changes{v3.12}{2013/11/05}{neu (intern)}
+% \changes{v3.12}{2013/11/05}{neu (intern)}^^A
% Hilfsmakro, ausschließlich für \cs{ifisdimension}.
% \begin{macrocode}
\newcommand*{\scr@ifdimensionplusminus}{}
@@ -1302,8 +1569,8 @@
% \end{macro}
%
% \begin{macro}{\ifisglue}
-% \changes{v3.12}{2013/11/05}{neu}%^^A
-% \changes{v3.12a}{2014/01/24}{Leerzeichenfehler korrigiert}%^^A
+% \changes{v3.12}{2013/11/05}{neu}^^A
+% \changes{v3.12a}{2014/01/24}{Leerzeichenfehler korrigiert}^^A
% Falls die Expansion des ersten Arguments eine (positive oder negative)
% Ausdehnung ist, wird das zweite Argument ausgeführt, sonst das dritte. Es sei
% darauf hingewiesen, dass derzeit ungültige oder fehlende Einheiten eine
@@ -1319,7 +1586,7 @@
}
% \end{macrocode}
% \begin{macro}{\scr@ifglueplusminus}
-% \changes{v3.12}{2013/11/05}{neu (intern)}
+% \changes{v3.12}{2013/11/05}{neu (intern)}^^A
% Hilfsmakro, ausschließlich für \cs{ifisglue}.
% \begin{macrocode}
\newcommand*{\scr@ifglueplusminus}{}
@@ -1350,8 +1617,8 @@
%
% \begin{macro}{\ifnumber}
% \changes{v3.12}{2013/10/30}{using \cs{aftergroup} instead of
-% \cs{endgroup}\cs{expandafter}}%^^A
-% \changes{v3.12a}{2014/01/24}{Leerzeichenfehler korrigiert}%^^A
+% \cs{endgroup}\cs{expandafter}}^^A
+% \changes{v3.12a}{2014/01/24}{Leerzeichenfehler korrigiert}^^A
% Dieses Makro testet, ob ein übergebener Parameter eine positive,
% ganze Zahl ist. Ist dies der Fall, wird der zweite Parameter
% ausgeführt, sonst der dritte.
@@ -1409,7 +1676,7 @@
% \end{macro}
%
% \begin{macro}{\ifintnumber}
-% \changes{v3.12}{2013/10/30}{neu}
+% \changes{v3.12}{2013/10/30}{neu}^^A
% Ist das erste Argument eine positive oder negative ganze Zahl, to wird das
% zweite Argument ausgeführt, sonst das dritte. Wie bei \TeX{} auch sind
% beliebig viele Vorzeichen erlaubt.
@@ -1427,7 +1694,7 @@
}
% \end{macrocode}
% \begin{macro}{\scr@test@sign}
-% \changes{v3.12}{2013/10/30}{neu (intern)}
+% \changes{v3.12}{2013/10/30}{neu (intern)}^^A
% \begin{macrocode}
\newcommand*{\scr@test@sign}[1]{%
\ifx \scr@next#1
@@ -1448,7 +1715,7 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\ifdimen}
+% \begin{macro}{\ifdimen}
% Dieses Makro testet, ob ein übergebener Parameter eine Dimension
% ist und führt in Abhängigkeit davon den zweiten oder dritten
% Parameter aus.
@@ -1464,7 +1731,7 @@
\fi
}
% \end{macrocode}
-% \begin{macro}{\test@dimen}
+% \begin{macro}{\test@dimen}
% Als erste muss ein Vorzeichen entfernt werden.
% \begin{macrocode}
\newcommand*{\test@dimen}[1]{%
@@ -1473,7 +1740,7 @@
\scr@next
}
% \end{macrocode}
-% \begin{macro}{\test@posdimen}
+% \begin{macro}{\test@posdimen}
% Dann muss getestet werden, ob es sich beim Rest um eine Dimension
% handelt. Dabei werden der Einfachheit halber mehrere Dezimalkomma
% und -punkte erlaubt. Natürlich könnte man es auch wirklich richtig
@@ -1496,8 +1763,8 @@
\scr@next
}
% \end{macrocode}
-% \begin{macro}{\test@dimunt}
-% \begin{macro}{\test@trueunt}
+% \begin{macro}{\test@dimunt}
+% \begin{macro}{\test@trueunt}
% Außer einer Gleitkomma- bzw. Gleitpunktzahl muss auch noch die Einheit
% behandelt werden. Dabei sind sowohl die neun Standardeinheiten als auch
% deren "`true"'-Variante zu berücksichtigen. Deshalb wird zuerst ein
@@ -1513,7 +1780,7 @@
\ifx\reserved@a\@empty\test@@ifdimunt{#2}\else\test@@ifdimunt{#1}\fi
}
% \end{macrocode}
-% \begin{macro}{\test@@ifdimunt}
+% \begin{macro}{\test@@ifdimunt}
% Anschließend wird dann getestet, ob es sich um eine der neun üblichen
% Einheiten handelt.
% \begin{macrocode}
@@ -1539,18 +1806,18 @@
}
%</base>
% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
%
-% \begin{macro}{\ifpdftex}
-% \changes{v2.95}{2002/08/19}{neu}
-% \begin{macro}{\scr@ifpdftex}
-% \changes{v2.95}{2002/08/19}{neu (intern)}
+% \begin{macro}{\ifpdftex}
+% \changes{v2.95}{2002/08/19}{neu}^^A
+% \begin{macro}{\scr@ifpdftex}
+% \changes{v2.95}{2002/08/19}{neu (intern)}^^A
% If-then-else-Konstrukt, um zu testen, ob pdf\TeX{} verwendet wird.
% \begin{macrocode}
%<*base>
@@ -1560,14 +1827,14 @@
\AfterPackage{pdfcprot}{\let@as@internal@defined{ifpdftex}}
%</base>
% \end{macrocode}
-% \end{macro}
-% \end{macro}
+% \end{macro}
+% \end{macro}
%
% \begin{macro}{\ifVTeX}
-% \changes{v2.95}{2002/08/19}{neu}
+% \changes{v2.95}{2002/08/19}{neu}^^A
% \changes{v2.97c}{2007/06/20}{umdefiniert von \cs{ifvtex}}
% \begin{macro}{\scr@ifVTeX}
-% \changes{v2.95}{2002/08/19}{neu}
+% \changes{v2.95}{2002/08/19}{neu}^^A
% \changes{v2.97c}{2007/06/20}{umdefiniert von \cs{scr@ifvtex}}
% If-then-else-Konstrukt, um zu testen, ob V\TeX{} verwendet wird.
% \begin{macrocode}
@@ -1576,20 +1843,20 @@
\let@as@internal@defined{ifVTeX}
%</base>
% \end{macrocode}
-% \end{macro}
-% \end{macro}
+% \end{macro}
+% \end{macro}
%
-% \begin{macro}{\ifpdfoutput}
-% \changes{v2.7g}{2001/04/17}{neu}
-% \changes{v2.8q}{2001/10/19}{\cs{pdfoutput} wird nicht mehr zu
+% \begin{macro}{\ifpdfoutput}
+% \changes{v2.7g}{2001/04/17}{neu}^^A
+% \changes{v2.8q}{2001/10/19}{\cs{pdfoutput} wird nicht mehr zu
% \cs{relax}, wenn zuvor undefiniert}
-% \changes{v2.8q}{2001/10/19}{darf bereits definiert sein}
-% \changes{v2.8q}{2001/10/19}{Verwendung von \cs{scr@ifpdfoutput}}
-% \begin{macro}{\scr@ifpdfoutput}
-% \changes{v2.8q}{2001/10/19}{neu (intern)}
-% \changes{v2.8q}{2001/11/13}{funktioniert}
-% \changes{v2.95}{2002/08/21}{berücksichtigt V\TeX}
-% \changes{v2.95}{2004/07/20}{Expandierbarkeit verbessert}
+% \changes{v2.8q}{2001/10/19}{darf bereits definiert sein}^^A
+% \changes{v2.8q}{2001/10/19}{Verwendung von \cs{scr@ifpdfoutput}}
+% \begin{macro}{\scr@ifpdfoutput}
+% \changes{v2.8q}{2001/10/19}{neu (intern)}^^A
+% \changes{v2.8q}{2001/11/13}{funktioniert}^^A
+% \changes{v2.95}{2002/08/21}{berücksichtigt V\TeX}^^A
+% \changes{v2.95}{2004/07/20}{Expandierbarkeit verbessert}^^A
% If-then-else-Konstrukt, um abhängig davon, ob als \texttt{pdf}
% ausgegeben wird oder nicht, Befehle auszuführen. Dieses Makro wird
% für die Deklaration der Option \texttt{pagesize} benötigt.
@@ -1617,14 +1884,14 @@
\let@as@internal@defined{ifpdfoutput}
%</base>
% \end{macrocode}
-% \end{macro}
-% \end{macro}
+% \end{macro}
+% \end{macro}
%
-% \begin{macro}{\ifpsoutput}
-% \changes{v2.95}{2002/08/21}{neu}
-% \begin{macro}{\scr@ifpsoutput}
-% \changes{v2.95}{2002/08/21}{neu (intern)}
-% \changes{v2.95}{2004/07/20}{Expandierbarkeit verbessert}
+% \begin{macro}{\ifpsoutput}
+% \changes{v2.95}{2002/08/21}{neu}^^A
+% \begin{macro}{\scr@ifpsoutput}
+% \changes{v2.95}{2002/08/21}{neu (intern)}^^A
+% \changes{v2.95}{2004/07/20}{Expandierbarkeit verbessert}^^A
% If-then-else-Konstrukt, um abhängig davon, ob früher oder später
% \texttt{ps} ausgegeben wird oder nicht, Befehle auszuführen.
% \begin{macrocode}
@@ -1651,14 +1918,14 @@
\let@as@internal@defined{ifpsoutput}
%</base>
% \end{macrocode}
-% \end{macro}
-% \end{macro}
+% \end{macro}
+% \end{macro}
%
-% \begin{macro}{\ifdvioutput}
-% \changes{v2.95}{2002/08/21}{neu}
-% \begin{macro}{\scr@ifdvioutput}
-% \changes{v2.95}{2002/08/21}{neu (intern)}
-% \changes{v2.95}{2004/07/20}{Expandierbarkeit verbessert}
+% \begin{macro}{\ifdvioutput}
+% \changes{v2.95}{2002/08/21}{neu}^^A
+% \begin{macro}{\scr@ifdvioutput}
+% \changes{v2.95}{2002/08/21}{neu (intern)}^^A
+% \changes{v2.95}{2004/07/20}{Expandierbarkeit verbessert}^^A
% If-then-else-Konstrukt, um abhängig davon, ob \texttt{dvi}
% ausgegeben wird oder nicht, Befehle auszuführen.
% \begin{macrocode}
@@ -1685,11 +1952,11 @@
\let@as@internal@defined{ifdvioutput}
%</base>
% \end{macrocode}
-% \end{macro}
-% \end{macro}
+% \end{macro}
+% \end{macro}
%
% \begin{macro}{\scr@smashdp}
-% \changes{v2.97c}{2007/09/17}{neu (intern)}
+% \changes{v2.97c}{2007/09/17}{neu (intern)}^^A
% \changes{v3.02a}{2009/01/23}{\cs{smash} nicht direkt verwenden, weil
% \textsf{amsmath} das inkompatibel umdefiniert}
% Gibt Material aus, erzeugt dabei aber nur Höhe und Breite, jedoch keine
@@ -1712,7 +1979,7 @@
% \end{macro}
%
% \begin{macro}{\PackageInfoNoLine}
-% \changes{v2.97d}{2007/10/03}{neu}
+% \changes{v2.97d}{2007/10/03}{neu}^^A
% Arbeitet wie \cs{PackageInfo} aber ohne Ausgabe der Zeilennummer.
% \begin{macrocode}
%<*base>
@@ -1724,7 +1991,7 @@
% \end{macro}
%
% \begin{macro}{\ClassInfoNoLine}
-% \changes{v2.98c}{2008/02/15}{neu}
+% \changes{v2.98c}{2008/02/15}{neu}^^A
% Arbeitet wie \cs{ClassInfo} aber ohne Ausgabe der Zeilennummer.
% \begin{macrocode}
%<*base>
@@ -1767,7 +2034,7 @@
% \changes{v3.12}{2013/03/04}{neue Implementierung}^^A
% \changes{v3.12}{2013/03/04}{darf auch noch nach der Präambel verwendet
% werden}^^A
-% \changes{v3.14}{2014/10/17}{das dritte Argument wird \cs{long}
+% \changes{v3.14}{2014/10/17}{das dritte Argument wird \cs{long}^^A
% verarbeitet}^^A
% \begin{macro}{\@FamilyExecuteOptions}
% \changes{v3.14}{2014/10/17}{Neue streng interne Anweisung}^^A
@@ -1871,10 +2138,10 @@
% \end{macro}^^A \FamilyExecuteOptions
%
% \begin{macro}{\KOMAExecuteOptions}
-% \changes{v2.97c}{2007/04/19}{Neue Anweisung}
-% \changes{v3.00}{2008/04/30}{Kein optionales Argument mehr}
+% \changes{v2.97c}{2007/04/19}{Neue Anweisung}^^A
+% \changes{v3.00}{2008/04/30}{Kein optionales Argument mehr}^^A
% \changes{v3.12}{2013/03/04}{darf auch noch nach der Präambel verwendet
-% werden}
+% werden}^^A
% Liste von Optionen für ein Mitglied der Familie \texttt{KOMA} ausführen.
% \begin{macrocode}
%<*koma>
@@ -1893,7 +2160,7 @@
% \begin{macro}{\@FamilyOptions}
% \changes{v3.14}[2014/10/17]{Neue streng interne Anweisung}^^A
% \begin{macro}{\Family@Options}
-% \changes{v3.00}{2008/04/30}{Neues Makro (intern)}%^^A
+% \changes{v3.00}{2008/04/30}{Neues Makro (intern)}^^A
% \changes{v3.12}{2013/03/04}{entfernt}^^A
% \end{macro}^^A \FamilyOptions
% Es werden Schlüssel einer Familie verwendet. Existiert ein Schlüssel nicht,
@@ -1937,7 +2204,7 @@
%
% Wir haben jetzt also eine Option und diese aufgespaltet in Schlüssel und
% Wert.
-% \changes{v3.12}{2013/03/04}{der Gesamtstatus wird gespeichert}
+% \changes{v3.12}{2013/03/04}{der Gesamtstatus wird gespeichert}^^A
% Jetzt speichern wir den Gesamtstatus einfach, indem der Fehlerspeicher
% gelöscht wird. Bei \cs{relax} wird er nicht weiter benötigt und es liegt
% ebenso wie bei \cs{@empty} kein auszugebender Fehler vor. Bei anderen
@@ -2030,11 +2297,11 @@
}
% \end{macrocode}
% \begin{macro}{\scr@execute@option}
-% \changes{v3.12}{2013/03/04}{Neue Anweisung (intern)}%^^A
+% \changes{v3.12}{2013/03/04}{Neue Anweisung (intern)}^^A
% \changes{v3.13}{2014/06/30}{fehlendes \cs{expandafter} in \cs{PackageInfo}
-% ergänzt}%^^A
+% ergänzt}^^A
% \changes{v3.13a}{2014/08/13}{Leerzeichen durch fehlendes Prozentzeichen
-% beseitigt}%^^A
+% beseitigt}^^A
% Es wird die bereits gesplittete Option ausgeführt, ohne dass die dabei
% wesentlichen Macros (aber nicht \cs{reserved@a}!) verändert werden. Das
% erste Argument ist bereits der Besitzer in \textsf{keyval}-Syntax.
@@ -2087,7 +2354,7 @@
}
% \end{macrocode}
% \begin{macro}{\scr@KV@err}
-% \changes{v3.12a}{2013/03/04}{missing internal command added}
+% \changes{v3.12a}{2013/03/04}{missing internal command added}^^A
% We just have to signal, that the option needs a value, that is missing.
% \begin{macrocode}
\newcommand*{\scr@KV@err}[1]{%
@@ -2096,7 +2363,7 @@
% \end{macrocode}
% \end{macro}
% \begin{macro}{\scr@key@run@errors}
-% \changes{v3.12}{2013/03/04}{Neue Anweisung (intern)}
+% \changes{v3.12}{2013/03/04}{Neue Anweisung (intern)}^^A
% Wird innerhalb von \cs{FamilyOptions} benötigt, um die Fehlermeldungen
% aufzusammeln, aber erst auszugeben, wenn tatsächlich kein Mitglied die
% Option verarbeiten konnte. Wir definieren das hier, damit oben die
@@ -2107,19 +2374,19 @@
% \end{macro}
% \end{macro}^^A \scr@execute@option
% \begin{macro}{\ifscr@key@found@}
-% \changes{v2.97c}{2007/04/19}{Neuer Schalter (intern)}
+% \changes{v2.97c}{2007/04/19}{Neuer Schalter (intern)}^^A
% \changes{v3.00}{2008/04/30}{umbenannt von \cs{ifKOMA@key@found}}
% \begin{macro}{\scr@key@atlist}
-% \changes{v2.97c}{2007/04/19}{Neues Makro (intern)}
+% \changes{v2.97c}{2007/04/19}{Neues Makro (intern)}^^A
% \changes{v3.00}{2008/04/30}{umbenannt von \cs{KOMA@key@atlist}}
% \begin{macro}{\scr@key@name}
-% \changes{v2.97c}{2007/04/19}{Neues Makro (intern)}
+% \changes{v2.97c}{2007/04/19}{Neues Makro (intern)}^^A
% \changes{v3.00}{2008/04/30}{umbenannt von \cs{KOMA@key@name}}
% \begin{macro}{\scr@key@value}
-% \changes{v2.97c}{2007/04/19}{Neues Makro (intern)}
+% \changes{v2.97c}{2007/04/19}{Neues Makro (intern)}^^A
% \changes{v3.00}{2008/04/30}{umbenannt von \cs{KOMA@key@value}}
% \begin{macro}{\scr@key@split@name@value}
-% \changes{v2.97c}{2007/04/19}{Neues Makro (intern)}
+% \changes{v2.97c}{2007/04/19}{Neues Makro (intern)}^^A
% \changes{v2.97e}{2007/11/10}{verwendet \cs{KV@@sp@def} zur Entsorgung von
% Leerzeichen}
% \changes{v3.00}{2008/04/30}{umbenannt von \cs{KOMA@key@split@name@value}}
@@ -2169,13 +2436,13 @@
\let\reserved@a\@empty
\@for\reserved@b:=#3\do{%
% \end{macrocode}
-% \changes{v3.08}{2010/11/05}{leere Argumente in der Werteliste}
+% \changes{v3.08}{2010/11/05}{leere Argumente in der Werteliste}^^A
% Auf vielfachen Wunsch und entgegen meiner Überzeugung, sind auch leere
% Argumente in der Werteliste erlaubt, werden jedoch ignoriert:
% \begin{macrocode}
\ifx\reserved@b\@empty\else
% \end{macrocode}
-% \changes{v3.12}{2012/03/04}{auch Leerzeichenargumente werden ignoriert}
+% \changes{v3.12}{2012/03/04}{auch Leerzeichenargumente werden ignoriert}^^A
% Auch Argumente, die nur aus einem Leerzeichen bestehen, werden ignoriert:
% \begin{macrocode}
\ifx\reserved@b\space\else
@@ -2194,9 +2461,9 @@
% \end{macro}
%
% \begin{macro}{\KOMAoptions}
-% \changes{v2.96}{2006/08/20}{Neuer Hook nach den Optionen}
-% \changes{v2.97c}{2007/04/19}{Optionen aller KOMA-Familien abarbeiten}
-% \changes{v3.12}{2013/03/04}{Hook-Mechanismus von \cs{FamilyOptions}
+% \changes{v2.96}{2006/08/20}{Neuer Hook nach den Optionen}^^A
+% \changes{v2.97c}{2007/04/19}{Optionen aller KOMA-Familien abarbeiten}^^A
+% \changes{v3.12}{2013/03/04}{Hook-Mechanismus von \cs{FamilyOptions}^^A
% verwendent}
% Simple kleine Abkürzung.
% \begin{macrocode}
@@ -2205,13 +2472,73 @@
%</koma>
% \end{macrocode}
% \begin{macro}{\KOMA@options}
-% \changes{v2.97c}{2007/04/19}{Neues Makro (intern)}
-% \changes{v3.12}{2013/03/04}{entfernt}
+% \changes{v2.97c}{2007/04/19}{Neues Makro (intern)}^^A
+% \changes{v3.12}{2013/03/04}{entfernt}^^A
% \end{macro}^^A \KOMA@options
% \end{macro}^^A \KOMAoptions
%
+% \begin{macro}{\KOMAoptionsOf}
+% \changes{v3.17}{2015/02/25}{neue Anweisung}^^A
+% Mit dieser Anweisung können die aktuell gesetzten \KOMAScript-Optionen
+% eines Pakets oder einer Klasse abgefragt werden, sobald ein Paket oder eine
+% Klasse das unterstützt. Das erste (optionale) Argument gibt dabei eine
+% Anweisung an, die für die Optionenliste ausgeführt werden soll. Das zweite
+% (nicht optionale Argument) ist der Name eines KOMA-Script-Pakets oder einer
+% KOMA-Script-Klasse einschließlich Dateiendung.
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMAoptionsOf}[2][\@firstofone]{%
+ \scr@ifundefinedorrelax{scr@kav@KOMA.#2}{%
+ \PackageError{scrkbase}{\string\KOMAoptionsOf\space not supported}{%
+ #2 is not the name of a KOMA-Script package or\MessageBreak
+ KOMA-Script class, that supports \string\KOMAoptionsOf.}%
+ }{%
+ \begingroup
+ \def\reserved@a{#1}%
+ \KOMA@kav@defall\reserved@b{.#2}%
+ \expandafter\expandafter\expandafter\endgroup
+ \expandafter\reserved@a\expandafter{\reserved@b}%
+ }%
+}
+%</koma>
+% \end{macrocode}
+% \end{macro}^^A \KOMAoptionsOf
+%
+% \begin{macro}{\KOMAoptionOf}
+% \changes{v3.17}{2015/02/26}{neue Anweisung}^^A
+% Mit dieser Anweisung kann eine aktuell gesetzte \KOMAScript-Option
+% eines Pakets oder einer Klasse abgefragt werden, sobald ein Paket oder eine
+% Klasse das unterstützt. Das erste (optionale) Argument gibt dabei eine
+% Anweisung an, die für die Optionenliste ausgeführt werden soll. Das zweite
+% (nicht optionale Argument) ist der Name eines KOMA-Script-Pakets oder einer
+% KOMA-Script-Klasse einschließlich Dateiendung, das dritte (nicht optionale
+% Argument) ist der Name der Option, die abgefragt werden soll.
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMAoptionOf}[3][\@firstofone]{%
+ \scr@ifundefinedorrelax{scr@kav@KOMA.#2}{%
+ \PackageError{scrkbase}{\string\KOMAoptionOf\space not supported}{%
+ #2 is not the name of a KOMA-Script package or\MessageBreak
+ KOMA-Script class, that supports \string\KOMAoptionOf.}%
+ }{%
+ \begingroup
+ \def\reserved@a{#1}%
+ \KOMA@kav@defone\reserved@b{.#2}{#3}%
+ \ifx\reserved@b\@empty
+ \PackageWarning{scrkbase}{option `#3' for `#2' unset}%
+ \endgroup
+ \else
+ \expandafter\expandafter\expandafter\endgroup
+ \expandafter\reserved@a\expandafter{\reserved@b}%
+ \fi
+ }%
+}
+%</koma>
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\post@kopt@hook}
-% \changes{v3.12}{2013/03/04}{entfernt}
+% \changes{v3.12}{2013/03/04}{entfernt}^^A
% \end{macro}^^A \post@kopt@hook
% \begin{macro}{\AfterKOMAoptions}
% \changes{v3.12}{2013/03/04}{Verwendung von \cs{AtEndOfFamilyOptions}}
@@ -2229,9 +2556,9 @@
% Damit \cs{AfterKOMAoptions} lokal möglich ist, wird eine lokal arbeitende
% Variante von \cs{g@addto@macro} benötigt, wie sie hier vorgestellt wird.
% \changes{v2.95}{2006/06/02}{korrigiert, damit es sich bezüglich
-% Erweiterung um Makrodefinitonen mit Argumenten wie \cs{g@addto@macro}
+% Erweiterung um Makrodefinitonen mit Argumenten wie \cs{g@addto@macro}^^A
% verhält}
-% \changes{v3.12}{2013/04/20}{veraltete \eTeX-freie Version entfernt}
+% \changes{v3.12}{2013/04/20}{veraltete \eTeX-freie Version entfernt}^^A
% \changes{v3.12}{2013/04/20}{Warnung, falls eine inkompatible Definition
% von \cs{l@addto@macro} entdeckt wird}
% \begin{macrocode}
@@ -2269,7 +2596,7 @@
% \end{macro}
%
% \begin{macro}{\KOMAoption}
-% \changes{v2.98c}{2008/03/12}{Neue Anweisung}
+% \changes{v2.98c}{2008/03/12}{Neue Anweisung}^^A
% \changes{v3.12}{2013/03/04}{Einfacher Aufruf von \cs{FamilyOption}}
% \begin{macrocode}
%<*koma>
@@ -2279,9 +2606,9 @@
% \end{macro}
%
% \begin{macro}{\FamilyUnknownKeyValue}
-% \changes{v3.10}{2011/09/12}{no error while processing global options}%^^A
+% \changes{v3.10}{2011/09/12}{no error while processing global options}^^A
% \changes{v3.11a}{2012/05/28}{prevent remove from list of unused global
-% options globally}%^^A
+% options globally}^^A
% \changes{v3.14}{2014/10/17}{\cs{long}}^^A
% Dieses Makro berichtet über Fehler wegen unbekannter Wertübergabe an einen
% Schlüssel. Das erste Argument ist die Familie, das zweite der Schlüssel,
@@ -2303,8 +2630,8 @@
%</base>
% \end{macrocode}
% \begin{macro}{\FamilyElseValues}
-% \changes{v3.00}{2008/05/02}{Neue Anweisung}%^^A
-% \changes{v3.12}{2013/03/04}{wird intern nicht mehr verwendet}%^^A
+% \changes{v3.00}{2008/05/02}{Neue Anweisung}^^A
+% \changes{v3.12}{2013/03/04}{wird intern nicht mehr verwendet}^^A
% Diese Anweisung konnte ursprünglich vor dem Setzen eines Wertes definiert
% werden, um bei einer etwaigen Fehlermeldung weitere Werte als erlaubt
% auszugeben. Am Ende von \cs{FamilySetBool} und \cs{FamilySetNumerical}
@@ -2319,7 +2646,7 @@
% \end{macro}^^A \FamilyElseValue
%
% \begin{macro}{\FamilyBoolKey}
-% \changes{v3.00}{2008/04/30}{Neue Anweisung}
+% \changes{v3.00}{2008/04/30}{Neue Anweisung}^^A
% Dieses Makro definiert einen Schlüssel für eine Familie. Dieser Schlüssel
% ist ein Schalter, der über diverse Werte geschaltet werden kann.
% Das erste, optionale Argument ist das Familienmitglied, das zweite,
@@ -2335,8 +2662,8 @@
}
% \end{macrocode}
% \begin{macro}{\FamilySetBool}
-% \changes{v3.00}{2008/04/30}{Neue Anweisung}
-% \changes{v3.11a}{2012/05/25}{Argument in Fehlermeldung korrigiert}
+% \changes{v3.00}{2008/04/30}{Neue Anweisung}^^A
+% \changes{v3.11a}{2012/05/25}{Argument in Fehlermeldung korrigiert}^^A
% Über diese Anweisung wird der Wert dann gesetzt. Dabei ist das erste
% Argument die Familie, das zweite der Name des Schlüssels, das dritte der
% Schalter und das vierte schließlich der gewünschte Wert.
@@ -2364,7 +2691,7 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\KOMA@unknown@keyval}
+% \begin{macro}{\KOMA@unknown@keyval}
% Dieses Makro berichtet über Fehler wegen unbekannter Wertübergabe an
% einen Schlüssel. Das erste Argument ist der Schlüssel, das zweite
% der Wert und das dritte die Liste der möglichen Werte.
@@ -2373,10 +2700,11 @@
\newcommand*{\KOMA@unknown@keyval}{\FamilyUnknownKeyValue{KOMA}}
%</koma>
% \end{macrocode}
-% \end{macro}
+% \end{macro}
%
% \begin{macro}{\KOMA@ifkey}
-% \changes{v3.02c}{2009/02/04}{definiert ebenfalls das Familienmitglied}
+% \changes{v3.02c}{2009/02/04}{definiert ebenfalls das Familienmitglied}^^A
+% \changes{v3.17}{2015/03/02}{ersetzt den gespeicherten Wert}^^A
% Dieses Makro definiert einen Schlüssel, der einen Schalter an Hand des
% Wertes setzt. Als Werte sind "`\texttt{true}"', "`\texttt{false}"',
% "`\texttt{on}"', "`\texttt{off}"', "`\texttt{yes}"' und
@@ -2386,13 +2714,27 @@
% der Name des Schlüssels, der zweite ist der Name des Schalters.
% \begin{macrocode}
%<*koma>
-\newcommand*{\KOMA@ifkey}{%
- \DefineFamilyMember{KOMA}%
- \FamilyBoolKey{KOMA}%
+\newcommand*{\KOMA@ifkey}[2][.\@currname.\@currext]{%
+ \begingroup\edef\reserved@a{\noexpand\KOMA@@ifkey{#1}{#2}}%
+ \expandafter\endgroup\reserved@a
+}
+\newcommand*{\KOMA@@ifkey}[3]{%
+ \@ifundefined{if#3}{%
+ \expandafter\newif\csname if#3\endcsname
+ }{}%
+ \KOMA@key[{#1}]{#2}[true]{%
+ \KOMA@set@ifkey{#2}{#3}{##1}%
+ \KOMA@kav@replacebool{#1}{#2}{#3}%
+ }%
+ \csname if#3\endcsname
+ \KOMA@kav@xadd{#1}{#2}{true}%
+ \else
+ \KOMA@kav@xadd{#1}{#2}{false}%
+ \fi
}
%</koma>
% \end{macrocode}
-% \begin{macro}{\KOMA@set@ifkey}
+% \begin{macro}{\KOMA@set@ifkey}
% Die eigentliche Arbeit bei der ganzen Sache wird von diesem internen
% Makro erledigt. Dabei wird der Name des Schlüssels zu Argument 1, der
% Name des Schalters zu Argument 2 und der Wert des Schlüssels wird
@@ -2402,11 +2744,11 @@
\newcommand*{\KOMA@set@ifkey}{\FamilySetBool{KOMA}}
%</koma>
% \end{macrocode}
-% \end{macro}
-% \end{macro}
+% \end{macro}
+% \end{macro}
%
% \begin{macro}{\FamilyCounterKey}
-% \changes{v3.12}{2013/11/05}{neu}%^^A
+% \changes{v3.12}{2013/11/05}{neu}^^A
% \changes{v3.15}{2014/12/03}{er wird ein (optionaler) Säumniswert
% unterstützt}^^A
% Dieses Makro definiert einen Schlüssel, der einen \LaTeX-Zähler an Hand
@@ -2436,7 +2778,7 @@
}
% \end{macrocode}
% \begin{macro}{\FamilySetCounter}
-% \changes{v3.12}{2013/11/05}{neu}%^^A
+% \changes{v3.12}{2013/11/05}{neu}^^A
% Über diese Anwesiung wird der Wert dann gesetzt. Dabei ist das erste
% Argument die Familie, das zweite der Name des Schlüssels, das dritte der
% Name des \LaTeX-Zählers, das vierte schließlich der gewünschte Wert.
@@ -2476,7 +2818,7 @@
% dritte der Schlüssel, das vierte (optionale) der Säumniswert, das fünfte das
% Makro.
% \begin{macro}{\FamilySetCounterMacro}
-% \changes{v3.12}{2013/11/05}{neu}%^^A
+% \changes{v3.12}{2013/11/05}{neu}^^A
% \changes{v3.15}{2014/12/17}{\cs{aftergroup} vor
% \cs{FamilyKeyStateProcessed}}^^A
% Diese Anweisung arbeitet fast wie \cs{FamilySetCounter}, allerdings wird
@@ -2536,7 +2878,7 @@
% \end{macro}
%
% \begin{macro}{\FamilyLengthKey}
-% \changes{v3.12}{2013/11/05}{neu}%^^A
+% \changes{v3.12}{2013/11/05}{neu}^^A
% \changes{v3.15}{2014/12/03}{er wird ein (optionaler) Säumniswert
% unterstützt}^^A
% Dieses Makro definiert einen Schlüssel, der eine \LaTeX-Länge an Hand
@@ -2597,11 +2939,11 @@
% \end{macro}
% \end{macro}
% \begin{macro}{\FamilyLengthMacroKey}
-% \changes{v3.12}{2013/11/05}{neu}%^^A
+% \changes{v3.12}{2013/11/05}{neu}^^A
% \changes{v3.15}{2014/12/03}{er wird ein (optionaler) Säumniswert
% unterstützt}^^A
% \begin{macro}{\FamilySetLengthMacro}
-% \changes{v3.12}{2013/11/05}{neu}%^^A
+% \changes{v3.12}{2013/11/05}{neu}^^A
% \changes{v3.14a}{2014/11/24}{fix: \cs{@tempskipa} statt \cs{@temskipa}}^^A
% \changes{v3.15}{2014/12/17}{\cs{aftergroup} vor
% \cs{FamilyKeyStateProcessed}}^^A
@@ -2668,9 +3010,9 @@
%
%
% \begin{macro}{\FamilyNumericalKey}
-% \changes{v3.00}{2008/04/30}{Neue Anweisung}
+% \changes{v3.00}{2008/04/30}{Neue Anweisung}^^A
% \begin{macro}{\Family@Numerical@Key}
-% \changes{v3.00}{2008/05/28}{Neu (intern)}
+% \changes{v3.00}{2008/05/28}{Neu (intern)}^^A
% \changes{v3.08b}{2011/03/31}{fehlendes Argument bei \cs{ifundefined}}
% Ein ähnliches Makro definiert einen Schlüssel, der ein nummerisches Makro
% auf einen bestimmten Wert setzt. Dabei können auch verschiedene symbolische
@@ -2748,47 +3090,68 @@
% \end{macro}
%
% \begin{macro}{\KOMA@ncmdkey}
-% \changes{v3.02c}{2009/02/04}{definiert ebenfalls das Familienmitglied}
-% Ein ähnliches Makro definiert einen Schlüssel, der ein nummerisches
-% Makro auf einen bestimmten Wert setzt. Dabei können auch
-% verschiedene symbolische Werte auf denselben nummerischen Wert
-% abgebildet werden. Das erste Argument ist obligatorisch und der Name
-% des Schlüssels. Das zweite Argument ist optional und der Defaultwert
-% für den Schlüssel. Das dritte Argument ist obligatorisch und der
-% Name des Makros, das definiert werden soll. Der Defaultwert dafür
-% ist 0. Das vierte Argument ist obligatorisch und die Liste der
-% symbolischen und nummerischen Wert. Die Liste hat die Form:
-% \{\emph{Symbol}\}\{\emph{Wert}\},\{\emph{Symbol}\}\{\emph{Wert}\}\dots
+% \changes{v3.02c}{2009/02/04}{definiert ebenfalls das Familienmitglied}^^A
+% \changes{v3.17}{2015/03/16}{neu implementiert mit Speicherung der
+% Werte und optionalem erstem Argument}^^A
+% Wie \cs{FamilyNumericalKey} mit zwei entscheidenden Unterschieden:
+% \begin{itemize}
+% \item Die Familien ist immer \texttt{KOMA} und entfällt daher als zweites
+% Argument.
+% \item Der gespeicherte Wert wird ausgetauscht. Daher kann es nicht nur für
+% Optionen verwendet werden, bei denen die Werte exklusiv sind.
+% \end{itemize}
+% Wichtig: Die Voreinstellung muss anschließend noch in jedem Fall mit
+% \cs{KOMA@kav@add} gesetzt werden!
% \begin{macrocode}
%<*koma>
-\newcommand*{\KOMA@ncmdkey}{%
- \DefineFamilyMember{KOMA}%
- \FamilyNumericalKey{KOMA}%
+\newcommand*{\KOMA@ncmdkey}[2][.\@currname.\@currext]{%
+ \begingroup\edef\reserved@a{\noexpand\KOMA@@ncmdkey{#1}{#2}}%
+ \expandafter\endgroup\reserved@a
+}
+\newcommand*{\KOMA@@ncmdkey}[2]{%
+ \@ifnextchar [%]
+ {\KOMA@@@ncmdkey{#1}{#2}}{\KOMA@@@ncmdkey{#1}{#2}[]}
+}
+\newcommand*{\KOMA@@@cmdkey}{}
+\def\KOMA@@@ncmdkey#1#2[#3]#4#5{%
+ \@ifundefined{#4}{\@namedef{#4}{0}}{}%
+ \ifx\relax#3\relax
+ \KOMA@key[{#1}]{#2}{%
+ \KOMA@set@ncmdkey{#2}{#4}{#5}{##1}%
+ \KOMA@kav@replacevalue{#1}{#2}{##1}%
+ }%
+ \else
+ \KOMA@key[{#1}]{#2}[{#3}]{%
+ \KOMA@set@ncmdkey{#2}{#4}{#5}{##1}%
+ \KOMA@kav@replacevalue{#1}{#2}{##1}%
+ }%
+ \fi
}
%</koma>
% \end{macrocode}
-% \begin{macro}{\KOMA@set@ncmdkey}
+% \begin{macro}{\KOMA@set@ncmdkey}
% Die eigentliche Arbeit dabei wird wahlweise von diesem Makro erledigt. Dabei
% wird der Name des Schlüssels zu Argument 1, der Name des Makros,
% das definiert werden soll zu Argument 2, die Liste zu Argument 3 und
-% der Wert, auf den gesetzt werden soll, zu Argument 4.
+% der Wert, auf den gesetzt werden soll, zu Argument 4. Dabei wird allerdings
+% kein gespeicherter Wert ersetzt!
% \begin{macrocode}
%<*koma>
\newcommand*{\KOMA@set@ncmdkey}{\FamilySetNumerical{KOMA}}
%</koma>
% \end{macrocode}
-% \end{macro}
-% \end{macro}
+% \end{macro}
+% \end{macro}
%
%
% \begin{macro}{\FamilyStringKey}
-% \changes{v3.08}{2010/11/05}{Neue Anweisung}
+% \changes{v3.08}{2010/11/05}{Neue Anweisung}^^A
% \changes{v3.08b}{2011/03/31}{\cs{Family@String@Key} und
% \cs{Family@@String@@Key} vertauscht}
% \begin{macro}{\Family@String@Key}
-% \changes{v3.08}{2010/11/05}{Neu (intern)}
+% \changes{v3.08}{2010/11/05}{Neu (intern)}^^A
% \begin{macro}{\Family@@String@@Key}
-% \changes{v3.08}{2010/11/05}{Neu (intern)}
+% \changes{v3.08}{2010/11/05}{Neu (intern)}^^A
% Ein ähnliches Makro definiert einen Schlüssel, der ein Makro auf einen
% beliegigen Wert setzt. Das erste, optionale Argument ist das
% Familienmitglied, das zweite, obligatorische Argument ist die Familie, das
@@ -2819,11 +3182,11 @@
%
%
% \begin{macro}{\KOMA@DeclareDeprecatedOption}
-% \changes{v3.01a}{2008/11/20}{neu (intern)}
+% \changes{v3.01a}{2008/11/20}{neu (intern)}^^A
% \begin{macro}{\KOMA@@DeclareDeprecatedOption}
-% \changes{v3.01a}{2008/11/20}{neu (intern)}
+% \changes{v3.01a}{2008/11/20}{neu (intern)}^^A
% \begin{macro}{\KOMA@@@DeclareDeprecatedOption}
-% \changes{v3.01a}{2008/11/20}{neu (intern)}
+% \changes{v3.01a}{2008/11/20}{neu (intern)}^^A
% Mit Hilfe dieses Makros kann eine Option definiert werden, die
% eigentlich obsolete ist. Statt dieser Option wird dann ein Schlüssel
% verwendet. Das erste Argument ist optional und muss dann der Paketname
@@ -2845,10 +3208,10 @@
}
% \end{macrocode}
% \begin{macro}{\KOMA@UseDeprecatedOption}
-% \changes{v3.01a}{2008/11/20}{neu (intern)}%^^A
-% \changes{v3.12}{2013/03/04}{Test für \texttt{version!=first}}%^^A
-% \changes{v3.12a}{2014/01/22}{vertauschte Logic für \texttt{version!=first}
-% korrigiert}%^^A
+% \changes{v3.01a}{2008/11/20}{neu (intern)}^^A
+% \changes{v3.12}{2013/03/04}{Test für \texttt{version!=first}}^^A
+% \changes{v3.12a}{2014/01/22}{vertauschte Logic für \texttt{version!=first}^^A
+% korrigiert}^^A
% Die eigentliche Arbeit wird von diesem Makro erledigt. Die Argumente sind
% 1. Meldungsbefehl, 2. obsolete Option, 3. Setzen des Schlüssels.
% \begin{macrocode}
@@ -2890,11 +3253,11 @@
%
%
% \begin{macro}{\KOMA@DeclareStandardOption}
-% \changes{v3.01a}{2008/11/21}{neu (intern)}
+% \changes{v3.01a}{2008/11/21}{neu (intern)}^^A
% \begin{macro}{\KOMA@@DeclareStandardOption}
-% \changes{v3.01a}{2008/11/21}{neu (intern)}
+% \changes{v3.01a}{2008/11/21}{neu (intern)}^^A
% \begin{macro}{\KOMA@@@DeclareStandardOption}
-% \changes{v3.01a}{2008/11/21}{neu (intern)}
+% \changes{v3.01a}{2008/11/21}{neu (intern)}^^A
% Mit Hilfe dieses Makros kann eine Option definiert werden, die
% eigentlich obsolete ist. Statt dieser Option wird dann ein Schlüssel
% verwendet. Das erste Argument ist optional und muss dann der Paketname
@@ -2916,7 +3279,7 @@
}
% \end{macrocode}
% \begin{macro}{\KOMA@UseStandardOption}
-% \changes{v3.01a}{2008/11/21}{neu (intern)}
+% \changes{v3.01a}{2008/11/21}{neu (intern)}^^A
% Die eigentliche Arbeit wird von diesem Makro erledigt. Die Argumente sind
% 1. Meldungsbefehl, 2. obsolete Option, 3. Setzen des Schlüssels.
% \begin{macrocode}
@@ -2940,8 +3303,8 @@
%</koma>
% \end{macrocode}
% \begin{macro}{\scr@sr@co}
-% \changes{v2.96}{2006/08/20}{neu (intern)}
-% \changes{v3.12a}{2014/01/22}{beseitigt}
+% \changes{v2.96}{2006/08/20}{neu (intern)}^^A
+% \changes{v3.12a}{2014/01/22}{beseitigt}^^A
% \end{macro}^^A \scr@sr@co
% \end{macro}^^A \KOMA@UseStandardOption
% \end{macro}^^A \KOMA@@@DeclareStandardOption
@@ -2951,19 +3314,19 @@
%
% \begin{macro}{\KOMA@DeclareObsoleteOption}
% \changes{v2.96}{2006/08/20}{\cs{CurrentOption wir geschützt}}
-% \changes{v3.12}{2013/03/04}{entfernt weil unbenutzt}
+% \changes{v3.12}{2013/03/04}{entfernt weil unbenutzt}^^A
% \begin{macro}{\KOMA@@DeclareObsoleteOption}
-% \changes{v2.98c}{2008/02/18}{neu (intern)}
-% \changes{v3.12}{2013/03/04}{entfernt weil unbenutzt}
+% \changes{v2.98c}{2008/02/18}{neu (intern)}^^A
+% \changes{v3.12}{2013/03/04}{entfernt weil unbenutzt}^^A
% \begin{macro}{\KOMA@@@DeclareObsoleteOption}
-% \changes{v2.98c}{2008/02/18}{neu (intern)}
-% \changes{v3.12}{2013/03/04}{entfernt weil unbenutzt}
+% \changes{v2.98c}{2008/02/18}{neu (intern)}^^A
+% \changes{v3.12}{2013/03/04}{entfernt weil unbenutzt}^^A
% \begin{macro}{\KOMA@iv@DeclareObsoleteOption}
-% \changes{v2.98c}{2008/02/18}{neu (intern)}
-% \changes{v3.12}{2013/03/04}{entfernt weil unbenutzt}
+% \changes{v2.98c}{2008/02/18}{neu (intern)}^^A
+% \changes{v3.12}{2013/03/04}{entfernt weil unbenutzt}^^A
% \begin{macro}{\KOMA@UseObsoleteOption}
-% \changes{v2.97c}{2007/04/19}{neu (intern)}
-% \changes{v3.12}{2013/03/04}{entfernt weil unbenutzt}
+% \changes{v2.97c}{2007/04/19}{neu (intern)}^^A
+% \changes{v3.12}{2013/03/04}{entfernt weil unbenutzt}^^A
% \end{macro}^^A \KOMA@UseObsoleteOption
% \end{macro}^^A \KOMA@iv@DeclareObsoleteOption
% \end{macro}^^A \KOMA@iii@DeclareObsoleteOption
@@ -2989,7 +3352,7 @@
}
% \end{macrocode}
% \begin{macro}{\KOMA@UseDeprecatedCommand}
-% \changes{v2.97c}{2007/04/19}{neu (intern)}
+% \changes{v2.97c}{2007/04/19}{neu (intern)}^^A
% \changes{v3.12}{2013/03/04}{renamed \cs{KOMA@UseObsoleteCommand} into
% \cs{KOMA@UseDeprecatedCommand}}
% Die eigentliche Arbeit wird von diesem Makro erledigt. Die Argumente sind