diff options
author | Norbert Preining <norbert@preining.info> | 2019-10-14 03:00:58 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-10-14 03:00:58 +0000 |
commit | 370853b6ba0be6e880b2f320268d4fefbd6aeef6 (patch) | |
tree | 6d5fc61b99808ac12a520651d0b2f9c59d2b0a94 /macros/latex/contrib/koma-script/source/scrkernel-basics.dtx | |
parent | 3afcae17b4a1a6dffbaa749a6fd0b6406c4d34a9 (diff) |
CTAN sync 201910140300
Diffstat (limited to 'macros/latex/contrib/koma-script/source/scrkernel-basics.dtx')
-rw-r--r-- | macros/latex/contrib/koma-script/source/scrkernel-basics.dtx | 2241 |
1 files changed, 1307 insertions, 934 deletions
diff --git a/macros/latex/contrib/koma-script/source/scrkernel-basics.dtx b/macros/latex/contrib/koma-script/source/scrkernel-basics.dtx index c347177f85..b1bf79fe8a 100644 --- a/macros/latex/contrib/koma-script/source/scrkernel-basics.dtx +++ b/macros/latex/contrib/koma-script/source/scrkernel-basics.dtx @@ -1,4 +1,4 @@ -% \CheckSum{3893} +% \CheckSum{4201} % \iffalse meta-comment % ====================================================================== % scrkernel-basics.dtx @@ -55,7 +55,7 @@ % Right brace \} Tilde \~} % % \iffalse -%%% From File: $Id: scrkernel-basics.dtx 3063 2019-02-01 07:39:11Z kohm $ +%%% From File: $Id: scrkernel-basics.dtx 3262 2019-10-10 08:25:29Z kohm $ %<prepare>%%% (run: prepare) %<option>%%% (run: option) %<body>%%% (run: body) @@ -65,7 +65,7 @@ \ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi \begingroup \def\filedate$#1: #2-#3-#4 #5${\def\filedate{#2/#3/#4}} - \filedate$Date: 2019-02-01 08:39:11 +0100 (Fri, 01 Feb 2019) $ + \filedate$Date: 2019-10-10 10:25:29 +0200 (Thu, 10 Oct 2019) $ \def\filerevision$#1: #2 ${\def\filerevision{r#2}} \filerevision$Revision: 1638 $ \xdef\fileinfo{\filedate\space\filerevision\space} @@ -116,7 +116,6 @@ \endbatchfile \documentclass{scrdoc} \usepackage[english,ngerman]{babel} -\usepackage[latin1]{inputenc} \CodelineIndex \RecordChanges \GetFileInfo{scrkernel-basics.dtx} @@ -136,7 +135,7 @@ % % \selectlanguage{ngerman} % -% \changes{v1.0}{2002/07/06}{Beginn der ersten Version}^^A +% \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} % @@ -145,18 +144,18 @@ % Neue Versionen von \KOMAScript{} machen zunehmend Gebrauch vom % \textsf{keyval}-Paket. Das \textsf{keyval}-Paket ist Bestandteil des % \textsf{graphics}-Pakets und muss als solches auf allen -% \TeX-Systemen mit \LaTeX{} enthalten sein. Es genügt jedoch in +% \TeX-Systemen mit \LaTeX{} enthalten sein. Es genügt jedoch in % einigen Punkten nicht den Anforderungen von \KOMAScript{}. Deshalb % werden hier Erweiterungen vorgenommen, die von \KOMAScript-Klassen -% und \KOMAScript-Paketen verwendet werden können. +% und \KOMAScript-Paketen verwendet werden können. % -% Darüber hinaus werden immer mehr Teile von \KOMAScript{} von mehr als einem +% Darüber hinaus werden immer mehr Teile von \KOMAScript{} von mehr als einem % Paket oder von Paketen und Klassen verwendet. Diese grundlegenden Dinge -% wurden daher in zwei Pakete, \textsf{scrbase} (für Dinge, die auch von -% anderen Klassen und Paketen genutzt werden können) und \textsf{scrkbase} -% (für Dinge, die \KOMAScript vorbehalten bleiben), ausgegliedert. Dadurch -% werden die Pakete und Klassen selbst kleiner und die können trotzdem -% unabhängig voneinander verwendet werden. Selbstverständlich kann man dieses +% wurden daher in zwei Pakete, \textsf{scrbase} (für Dinge, die auch von +% anderen Klassen und Paketen genutzt werden können) und \textsf{scrkbase} +% (für Dinge, die \KOMAScript vorbehalten bleiben), ausgegliedert. Dadurch +% werden die Pakete und Klassen selbst kleiner und die können trotzdem +% unabhängig voneinander verwendet werden. Selbstverständlich kann man dieses % Paket auch ohne den Rest von \KOMAScript{} zum Einsatz bringen. % % \StopEventually{\PrintIndex\PrintChanges} @@ -166,7 +165,7 @@ % \fi % % \subsection{Laden des Pakets} -% Wer das Paket lädt, tut das allerdings in der Regel sogar bereits +% Wer das Paket lädt, tut das allerdings in der Regel sogar bereits % vor der Definition der Optionen mit: % \begin{macrocode} \RequirePackage{scrkbase}[\KOMAScriptVersion] @@ -211,7 +210,7 @@ % \end{macrocode} % % -% \subsection{Der abhängige Teil lädt den unabhängigen Teil} +% \subsection{Der abhängige Teil lädt den unabhängigen Teil} % % \begin{macrocode} %<koma>\RequirePackage{scrbase}[\KOMAScriptVersion] @@ -229,30 +228,30 @@ % \LaTeX-Kern-Anweisungen durch % andere Pakete} % Einige Pakete wie \textsf{amsgen} definieren \LaTeX-Kern-Anweisungen so um, -% dass sie nicht mehr korrekt funktionieren. Ich muss dann leider dafür +% dass sie nicht mehr korrekt funktionieren. Ich muss dann leider dafür % sorgen, dass \KOMAScript{} damit keine Probleme hat. Die Klassen sind dabei -% in der günstigen Situation, dass sie ggf. einfach die vorhandene Definition -% testen und übernehmen können. Die Pakete müssen hingegen dummer Weise selbst -% dafür sorgen, dass es irgendwie funktioniert. +% in der günstigen Situation, dass sie ggf. einfach die vorhandene Definition +% testen und übernehmen können. Die Pakete müssen hingegen dummer Weise selbst +% dafür sorgen, dass es irgendwie funktioniert. % % \begin{macro}{\kernel@ifstar} -% \changes{v3.20}{2016/04/12}{neu (intern)} -% Ich hoffe ja, dass der \LaTeX-Kern zukünftig diese Anweisung definiert und -% das dann auch funktioniert. Damit es aber auch mit älteren \LaTeX-Versionen +% \changes{v3.20}{2016/04/12}{neu (intern)} +% Ich hoffe ja, dass der \LaTeX-Kern zukünftig diese Anweisung definiert und +% das dann auch funktioniert. Damit es aber auch mit älteren \LaTeX-Versionen % geht, sorge ich hier vor. % \begin{macrocode} %<base>\providecommand*\kernel@ifstar[1]{\kernel@ifnextchar*{\@firstoftwo{#1}}} % \end{macrocode} -% \end{macro}^^A \kernel@ifstar +% \end{macro}%^^A \kernel@ifstar % % \subsection{Test von Anweisungen} % % \begin{macro}{\scr@ifundefinedorrelax} -% \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}^^A +% \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}%^^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. @@ -271,15 +270,15 @@ } %</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}^^A -% Dieses Makro wird zwar bereits seit langem für einige wenige Fehlermeldungen -% verwendet, existierte bisher aber nicht. Es wird für Fehlermeldungen +% \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 % der Regel ist dies zu vermeiden und besser \cs{PackageError} zu verwenden. % \begin{macrocode} @@ -292,34 +291,35 @@ % \end{macro} % % -% \subsection{Definition von KOMA-\textsf{keyval}-Schlüsseln (Basis)} +% \subsection{Definition von KOMA-\textsf{keyval}-Schlüsseln (Basis)} % -% Üblicherweise verwendet \KOMAScript{} für alle -% \textsf{keyval}-Schlüssel die gleiche Bereichskennung -% "`\texttt{KOMA}"'. Dadurch ist es möglich, dass Pakete die Schlüssel +% Ãœblicherweise verwendet \KOMAScript{} für alle +% \textsf{keyval}-Schlüssel die gleiche Bereichskennung +% "`\texttt{KOMA}"'. Dadurch ist es möglich, dass Pakete die Schlüssel % der Klassen umdefinieren und dass jeder Teil von \KOMAScript{} die -% Schlüssel jedes anderen Teils ausführen kann -- sobald sie definiert +% Schlüssel jedes anderen Teils ausführen kann -- sobald sie definiert % sind. % % \begin{macro}{\DefineFamily} -% \changes{v3.00}{2008/04/30}{Neue Anweisung}^^A -% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by -% \cs{kernel@ifnextchar}}^^A +% \changes{v3.00}{2008/04/30}{Neue Anweisung}%^^A +% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by +% \cs{kernel@ifnextchar}}%^^A % \begin{macro}{\DefineFamilyMember} -% \changes{v3.00}{2008/04/30}{Neue Anweisung}^^A +% \changes{v3.00}{2008/04/30}{Neue Anweisung}%^^A % \begin{macro}{\DefineFamilyKey} -% \changes{v3.00}{2008/04/30}{Neue Anweisung}^^A -% \changes{v3.12}{2013/03/04}{Setzen von \cs{FamilyKeyState}} +% \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)}^^A +% \changes{v3.00}{2008/04/30}{Neu (intern)}%^^A % \begin{macro}{\scr@if@familymember} -% \changes{v3.00}{2008/04/30}{Neu (intern)}^^A +% \changes{v3.00}{2008/04/30}{Neu (intern)}%^^A +% \changes{v3.27}{2019/07/19}{das leere Mitglied existiert immer}%^^A % \begin{macro}{\scr@define@family@key} -% \changes{v3.00}{2008/04/30}{Neu (intern)}^^A +% \changes{v3.00}{2008/04/30}{Neu (intern)}%^^A % \begin{macro}{\scr@define@family@key@nodefault} -% \changes{v3.00}{2008/04/30}{Neu (intern)}^^A -% \changes{v3.18a}{2015/07/03}{fehlendes \% ergänzt}^^A -% Familie, Familienmitglied und \textsf{keyval}-Schlüssel für ein +% \changes{v3.00}{2008/04/30}{Neu (intern)}%^^A +% \changes{v3.18a}{2015/07/03}{fehlendes \% ergänzt}%^^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. % \begin{macrocode} @@ -353,21 +353,25 @@ } \newcommand*{\scr@if@familymember}[3]{% \scr@if@family{#2}{#3}{% - \edef\reserved@a{% - \noexpand\in@{#2#1,}{\csname #2@key@familylist\endcsname}}% - \reserved@a - \ifin@ - \expandafter\@firstofone - \else - \PackageError{scrbase}{% - unknown member `#1' at family `#2'% - }{% - You've tried to #3 for member `#1' of family `#2'.\MessageBreak - This my be done only for previous defined family members.\MessageBreak - You should call `\string\DefineFamilyMember[{#1}]{#2}' first.% - }% - \expandafter\@gobble - \fi + \IfArgIsEmpty{#1}{% + \@firstofone + }{% + \edef\reserved@a{% + \noexpand\in@{#2#1,}{\csname #2@key@familylist\endcsname}}% + \reserved@a + \ifin@ + \expandafter\@firstofone + \else + \PackageError{scrbase}{% + unknown member `#1' at family `#2'% + }{% + You've tried to #3 for member `#1' of family `#2'.\MessageBreak + This my be done only for previous defined family members.\MessageBreak + You should call `\string\DefineFamilyMember[{#1}]{#2}' first.% + }% + \expandafter\@gobble + \fi + }% }% } \newcommand*{\DefineFamilyKey}[3][.\@currname.\@currext]{% @@ -409,18 +413,18 @@ } %</base> % \end{macrocode} -% \end{macro}^^A \scr@define@family@key@nodefault -% \end{macro}^^A \scr@define@family@key -% \end{macro}^^A \scr@if@familymember -% \end{macro}^^A \scr@if@family -% \end{macro}^^A \DefineFamilyKey -% \end{macro}^^A \DefineFamilyMember -% \end{macro}^^A \DefineFamily +% \end{macro}%^^A \scr@define@family@key@nodefault +% \end{macro}%^^A \scr@define@family@key +% \end{macro}%^^A \scr@if@familymember +% \end{macro}%^^A \scr@if@family +% \end{macro}%^^A \DefineFamilyKey +% \end{macro}%^^A \DefineFamilyMember +% \end{macro}%^^A \DefineFamily % % \begin{macro}{\RelaxFamilyKey} -% \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 +% \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 % kann. % \begin{macrocode} @@ -438,25 +442,25 @@ % \end{macro} % % \begin{macro}{\FamilyKeyState} -% \changes{v3.12}{2013/03/04}{Neue Anweisung}^^A +% \changes{v3.12}{2013/03/04}{Neue Anweisung}%^^A % \begin{macro}{\FamilyKeyStateProcessed} -% \changes{v3.12}{2013/03/04}{Neue Anweisung}^^A +% \changes{v3.12}{2013/03/04}{Neue Anweisung}%^^A % \begin{macro}{\FamilyKeyStateUnknown} -% \changes{v3.12}{2013/03/04}{Neue Anweisung}% +% \changes{v3.12}{2013/03/04}{Neue Anweisung}% % \begin{macro}{\FamilyKeyStateUnknownValue} -% \changes{v3.12}{2013/03/04}{Neue Anweisung}% +% \changes{v3.12}{2013/03/04}{Neue Anweisung}% % \begin{macro}{\FamilyKeyStateNeedValue} -% \changes{v3.12}{2013/03/04}{Neue Anweisung}% -% \cs{FamilyKeyState} gibt den Status der Verarbeitung eines Schlüssels -% an. In der Voreinstellung wird der Status beim Aufruf des Schlüssels auf +% \changes{v3.12}{2013/03/04}{Neue Anweisung}% +% \cs{FamilyKeyState} gibt den Status der Verarbeitung eines Schlüssels +% an. In der Voreinstellung wird der Status beim Aufruf des Schlüssels auf % \cs{FamilyKeyStateUnknown} gesetzt, was anzeigt, dass der Zustand -% unbekannnt ist, der Schlüssel aber möglicherweise verarbeitet +% unbekannnt ist, der Schlüssel aber möglicherweise verarbeitet % wurde. Daneben gibt es den Zustand \cs{FamilyKeyStateProcessed}, der -% anzeigt, dass der Schlüssel komplett verarbeitet wurde. Alternativ kann +% anzeigt, dass der Schlüssel komplett verarbeitet wurde. Alternativ kann % das Makro einen Text enthalten, der ggf. Teil einer Fehlermeldung, einer -% Warnung oder einer Information über Probleme bei der Verarbeitung wird. Es +% Warnung oder einer Information über Probleme bei der Verarbeitung wird. Es % ist zu beachten, dass \cs{FamilyKeyState} nur unmittelbar nach der -% Verarbeitung gültig ist. +% Verarbeitung gültig ist. % \begin{macrocode} %<*base> \newcommand*{\FamilyKeyState}{} @@ -475,35 +479,35 @@ \let\FamilyKeyState\FamilyKeyStateUnknown %</base> % \end{macrocode} -% \end{macro}^^A \FamilyKeyStateNeedValue -% \end{macro}^^A \FamilyKeyStateUnknownValue -% \end{macro}^^A \FamilyKeyStateUnknown -% \end{macro}^^A \FamilyKeyStateProcessed -% \end{macro}^^A \FamilyKeyState +% \end{macro}%^^A \FamilyKeyStateNeedValue +% \end{macro}%^^A \FamilyKeyStateUnknownValue +% \end{macro}%^^A \FamilyKeyStateUnknown +% \end{macro}%^^A \FamilyKeyStateProcessed +% \end{macro}%^^A \FamilyKeyState % % \begin{macro}{\FamilyOfKey} -% \changes{v3.12}{2013/03/04}{Neue Anweisung}^^A +% \changes{v3.12}{2013/03/04}{Neue Anweisung}%^^A % \begin{macro}{\FamilyMemberOfKey} -% \changes{v3.12}{2013/03/04}{Neue Anweisung}^^A -% Geben innerhalb der Verarbeitung eines Schlüssels dessen Familie bzw. das -% zugehörige Familienmitglied an. +% \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} %<*base> \newcommand*{\FamilyOfKey}{} \newcommand*{\FamilyMemberOfKey}{} %</base> % \end{macrocode} -% \end{macro}^^A \FamilyMemberOfKey -% \end{macro}^^A \FamilyOfKey +% \end{macro}%^^A \FamilyMemberOfKey +% \end{macro}%^^A \FamilyOfKey % % \begin{macro}{\KOMA@key} -% \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 +% \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} +% \textsf{keyval}-Schlüssel für \KOMAScript{} werden mit \cs{KOMAkey} % definiert, damit auch die Familie korrekt gesetzt und ggf. der Liste der -% Familien (\cs{KOMA@key@familylist}) hinzugefügt wird. +% Familien (\cs{KOMA@key@familylist}) hinzugefügt wird. % \begin{macrocode} %<*koma> \newcommand*{\KOMA@key}[1][.\@currname.\@currext]{% @@ -517,9 +521,9 @@ % \end{macro} % % \begin{macro}{\KOMA@kav@add} -% \changes{v3.17}{2015/02/24}{neu (\KOMAScript intern)}^^A +% \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. +% Es ist ausschließlich für den \KOMAScript-internen Gebrauch bestimmt. % \begin{macrocode} %<*koma> \newcommand*{\KOMA@kav@add}[3]{% @@ -534,10 +538,10 @@ % \end{macro} % % \begin{macro}{\KOMA@kav@xadd} -% \changes{v3.17}{2015/02/24}{neu (\KOMAScript intern)}^^A +% \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. +% Es ist ausschließlich für den \KOMAScript-internen Gebrauch bestimmt. % \begin{macrocode} %<*koma> \newcommand*{\KOMA@kav@xadd}[3]{% @@ -554,10 +558,10 @@ % \end{macro} % % \begin{macro}{\KOMA@kav@remove} -% \changes{v3.17}{2015/02/24}{neu (\KOMAScript intern)}^^A +% \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. +% Es ist ausschließlich für den \KOMAScript-internen Gebrauch bestimmt. % \begin{macrocode} %<*koma> \newcommand*{\KOMA@kav@remove}[3]{% @@ -586,10 +590,10 @@ % \end{macro} % % \begin{macro}{\KOMA@kav@removekey} -% \changes{v3.17}{2015/02/24}{neu (\KOMAScript intern)}^^A +% \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. +% Es ist ausschließlich für den \KOMAScript-internen Gebrauch bestimmt. % \begin{macrocode} %<*koma> \newcommand*{\KOMA@kav@removekey}[2]{% @@ -620,12 +624,12 @@ % % \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 +% \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 +% 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. +% Es ist ausschließlich für den \KOMAScript-internen Gebrauch bestimmt. % \begin{macrocode} %<*koma> \newcommand*{\KOMA@kav@replacevalue}[3]{% @@ -654,12 +658,12 @@ % \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 +% \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 +% 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. +% Es ist ausschließlich für den \KOMAScript-internen Gebrauch bestimmt. % \begin{macrocode} %<*koma> \newcommand*{\KOMA@kav@replacebool}[3]{% @@ -683,11 +687,11 @@ % \end{macro} % % \begin{macro}{\KOMA@kav@defall} -% \changes{v3.17}{2015/02/24}{neu (\KOMAScript intern)}^^A +% \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. +% Es ist ausschließlich für den \KOMAScript-internen Gebrauch bestimmt. % \begin{macrocode} %<*koma> \newcommand*{\KOMA@kav@defall}[2]{% @@ -716,13 +720,13 @@ % \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 +% \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 +% 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. +% 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]{% @@ -753,8 +757,8 @@ % \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 +% \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> @@ -778,25 +782,25 @@ % % Ab Version 2.97c sollen sowohl globale KOMA-Optionen als auch die % KOMA-Optionen der jeweiligen Datei als auch die normalen Optionen in der -% Reihenfolge ausgeführt werden, in der sie angegeben wurden -- zuerst die +% Reihenfolge ausgeführt werden, in der sie angegeben wurden -- zuerst die % globalen Optionen, dann die lokalen. Dabei werden nur die Optionen -% verwendet, die auch für das jeweilige Paket bzw. die jeweilige Klasse +% verwendet, die auch für das jeweilige Paket bzw. die jeweilige Klasse % definiert wurden. % % \begin{macro}{\@globaloptionslist} -% \changes{v2.96}{2006/11/26}{new}^^A -% \changes{v2.96}{2006/11/26}{Klassenoptionen durchsuchen}^^A -% \changes{v3.20}{2016/02/06}{Entscheidung später treffen}^^A -% Die Liste der globalen Optionen wird teilweise benötigt. Weil -% \textsl{xkeyval} dämlicherweise glaubt, es müsse alle Optionen mit +% \changes{v2.96}{2006/11/26}{new}%^^A +% \changes{v2.96}{2006/11/26}{Klassenoptionen durchsuchen}%^^A +% \changes{v3.20}{2016/02/06}{Entscheidung später treffen}%^^A +% Die Liste 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 % (seltsamerweise aber nicht die (x)keyval-Optionen, die ohne Wert aufgerufen % werden, weil ihr Defaultwert verwendet werden soll), wird hier ein eigenes % Makro definiert. Bis \KOMAScript{} 3.19a wurde auch genau hier die Zuweisung -% durchgeführt. Wenn aber \textsf{scrbase} noch vor \cs{documentclass} geladen -% wird, dann ist \cs{@classoptionslist} natürlich noch nicht gültig. Deshalb +% durchgeführt. Wenn aber \textsf{scrbase} noch vor \cs{documentclass} geladen +% wird, dann ist \cs{@classoptionslist} natürlich noch nicht gültig. Deshalb % wird die Zuweisung, seit \KOMAScript{} 3.20 in \cs{FamilyProcessOptions} -% durchgeführt. +% durchgeführt. % \begin{macrocode} %<*base> \newcommand*{\@globaloptionslist}{} @@ -805,30 +809,30 @@ % \end{macro} % % \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}^^A -% \changes{v3.12}{2013/03/04}{Fehlerbehandlung}^^A -% Es ist zu beachten, dass falsche Werte für Optionen grundsätzlich nicht in +% \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}%^^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 -% Familienmitglieder den Wert nicht verarbeiten können, ergibt sich daraus +% sollten, sondern über setzen von \cs{FamilyKeyState}. Erst, wenn auch andere +% Familienmitglieder den Wert nicht verarbeiten können, ergibt sich daraus % ggf. eine Meldung, die dann von der Verarbeitung hier erzeugt wird. % Es wird darauf hingewiesen, dass diese Anweisung nicht reentrant ist. Das -% bedeutet, dass man es innerhalb der eigenen Ausführung nicht erneut aufrufen +% bedeutet, dass man es innerhalb der eigenen Ausführung nicht erneut aufrufen % darf. % \begin{macro}{\scr@removeunused} -% \changes{v3.10}{2011/09/12}{neu (intern)}% -% \changes{v3.12}{2013/03/04}{entfernt}^^A -% \end{macro}^^A \scr@removeunused +% \changes{v3.10}{2011/09/12}{neu (intern)}% +% \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)}% -% \changes{v3.12}{2013/03/04}{entfernt}% +% \changes{v2.97c}{2007/04/18}{neu (intern)}% +% \changes{v3.12}{2013/03/04}{entfernt}% % \begin{macro}{\scr@pti@ntest} -% \changes{v2.97c}{2007/04/18}{neu (intern)}% -% \changes{v3.12}{2013/03/04}{entfernt}% -% \end{macro}^^A \scr@pti@ntest -% \end{macro}^^A \scr@optiontest +% \changes{v2.97c}{2007/04/18}{neu (intern)}% +% \changes{v3.12}{2013/03/04}{entfernt}% +% \end{macro}%^^A \scr@pti@ntest +% \end{macro}%^^A \scr@optiontest % \begin{macrocode} %<*base> \newcommand*{\FamilyProcessOptions}[2][.\@currname.\@currext]{% @@ -844,10 +848,10 @@ }% \fi % \end{macrocode} -% \changes{v3.18}{2015/06/17}{new hooks before processing the options}^^A -% Ab Version~3.18 werden hier außerdem zwei Haken ausgeführt. Der erste gilt -% dabei für alle Klassen und Pakete einer Familie und löscht sich nicht -% selbst. Der zweite dagegen gilt nur ein einziges Mal für dieses eine +% \changes{v3.18}{2015/06/17}{new hooks before processing the options}%^^A +% Ab Version~3.18 werden hier außerdem zwei Haken ausgeführt. Der erste gilt +% dabei für alle Klassen und Pakete einer Familie und löscht sich nicht +% selbst. Der zweite dagegen gilt nur ein einziges Mal für dieses eine % Mitglied. % \begin{macrocode} \scr@ifundefinedorrelax{scr@before@process@options@#2@hook}{}{% @@ -859,14 +863,14 @@ \relax }% % \end{macrocode} -% \changes{v3.23}{2017/02/16}{Korrektur: Haken danach verwendet die Familie -% statt des Mitglieds}^^A +% \changes{v3.23}{2017/02/16}{Korrektur: Haken danach verwendet die Familie +% statt des Mitglieds}%^^A % Jetzt \cs{AtEndOfFamilyOptions} samt Haken initialisieren. % \begin{macrocode} \scr@ifundefinedorrelax{scr@after@options@#2@hook}{% \@namedef{scr@after@options@#2@hook}{% % \end{macrocode} -% Die erste Aktion im Haken wird sein, den Haken selbst zu löschen. +% Die erste Aktion im Haken wird sein, den Haken selbst zu löschen. % \begin{macrocode} \@namedef{scr@after@options@#2@hook}{}% }% @@ -883,34 +887,34 @@ }% }% % \end{macrocode} -% \changes{v3.23}{2017/02/16}{neuer Haken für \cs{AtEndOfFamilyOptions*}}^^A +% \changes{v3.23}{2017/02/16}{neuer Haken für \cs{AtEndOfFamilyOptions*}}%^^A % Seit Version 3.23 wird hier auch der neuen Haken vor -% \cs{AtEndOfFamilyOptions*} initialisiert und ausgeführt. Erkannt wird die +% \cs{AtEndOfFamilyOptions*} initialisiert und ausgeführt. Erkannt wird die % oberste Ebene hier einfach an der Definition von \cs{AtEndOfFamilyOptions}, -% weil das schneller geht als die Erkennung über die Definition des Hakens +% weil das schneller geht als die Erkennung über die Definition des Hakens % selbst (wie sie in \cs{FamilyOptions} verwendet werden muss). % \begin{macrocode} \ifx\AtEndOfFamilyOptions\scr@AtEndOfFamilyOptions@immediate \@namedef{scr@after@options@#2@hook@topmost}{% % \end{macrocode} -% Auch dieser Haken wird so definiert, dass er sich bei seiner Ausführung als -% erstes selbst löscht. Das ist auch für rekursive Aufrufe wichtig, um tiefere -% Ebenen eindeutig von der höchsten Ebene unterscheiden zu können. +% Auch dieser Haken wird so definiert, dass er sich bei seiner Ausführung als +% erstes selbst löscht. Das ist auch für rekursive Aufrufe wichtig, um tiefere +% Ebenen eindeutig von der höchsten Ebene unterscheiden zu können. % \begin{macrocode} \@namedef{scr@after@options@#2@hook@topmost}{}% }% % \end{macrocode} -% Der Top-Haken wird außerdem zusammen mit dem Zurücksetzen der Definition von +% Der Top-Haken wird außerdem zusammen mit dem Zurücksetzen der Definition von % \cs{AtEndOfFamilyOptions} in den Haken der (obersten) Ebene -% eingefügt. +% eingefügt. % \begin{macrocode} \expandafter\l@addto@macro\csname scr@after@options@#2@hook\endcsname{% \let\AtEndOfFamilyOptions\scr@AtEndOfFamilyOptions@immediate \@nameuse{scr@after@options@#2@hook@topmost}% }% % \end{macrocode} -% Natürlich darf nicht vergessen werden, den Befehl für das Befüllen der -% beiden Haken nun von der direkten Ausführung eben auf das Befüllen der Haken +% Natürlich darf nicht vergessen werden, den Befehl für das Befüllen der +% beiden Haken nun von der direkten Ausführung eben auf das Befüllen der Haken % umzustellen. % \begin{macrocode} \let\AtEndOfFamilyOptions\scr@AtEndOfFamilyOptions @@ -923,12 +927,12 @@ \ifx\@currext\@clsextension\else % \end{macrocode} % Bei Klassen ist die aktuelle Optionenliste gleichzeitig die globale -% Optionenliste. Daher dürften Klassen nicht auch noch die globale Optionliste +% Optionenliste. Daher dürften Klassen nicht auch noch die globale Optionliste % verarbeiten. Paket verarbeiten jedoch auch die globale Optionenliste, geben % dazu jedoch keine Fehler oder Warnungen aus. -% \changes{v3.18}{2015/06/17}{Behandlung von undefiniertem -% \cs{@globaloptionslist}}^^A -% \changes{v3.20}{2016/02/06}{\cs{@globaloptionslist} immer neu zuweisen}^^A +% \changes{v3.18}{2015/06/17}{Behandlung von undefiniertem +% \cs{@globaloptionslist}}%^^A +% \changes{v3.20}{2016/02/06}{\cs{@globaloptionslist} immer neu zuweisen}%^^A % \begin{macrocode} \let\@globaloptionslist\@classoptionslist \scr@ifundefinedorrelax{XKV@classoptionslist}{% @@ -957,10 +961,10 @@ \else % \end{macrocode} % Wenn die Option keine \LaTeX-Option ist, kann sie noch immer eine -% \textsf{keyval}-Option sein. In diesem Fall wird geprüft, ob das +% \textsf{keyval}-Option sein. In diesem Fall wird geprüft, ob das % Mitglied (\#1) eine Option in der Familie (\#2) hat. Wenn das der Fall ist, -% wird die Option unmittelbar ausgeführt und zwar einmal ohne Mitglied (also -% Optionen, die global der Familie gehören) und dann mit Mitglied. Im Fall +% wird die Option unmittelbar ausgeführt und zwar einmal ohne Mitglied (also +% Optionen, die global der Familie gehören) und dann mit Mitglied. Im Fall % einer unbekannnten Option oder eines unbekannten Wertes, geschieht hier gar % nichts. % \begin{macrocode} @@ -974,22 +978,22 @@ }% \fi % \end{macrocode} -% Sowohl für Klassen als auch für Pakete werden nun die aktuellen Optionen +% Sowohl für Klassen als auch für Pakete werden nun die aktuellen Optionen % abgearbeitet. In diesem Fall ist zu beachten, dass nicht definierte Optionen -% oder unbekannte Werte für Optionen unmittelbar zu einem Fehler führen, wenn +% oder unbekannte Werte für Optionen unmittelbar zu einem Fehler führen, wenn % es sich um ein Paket handelt. Bei Klassen landet die Option hingegen in der % Liste der nicht benutzten globalen Optionen. % \begin{macrocode} \@for\CurrentOption:=\@curroptions\do{% % \end{macrocode} -% \changes{v3.26}{2018/10/22}{Optionen werden für Tests etc. nicht mehr -% vollständig expandiert}^^A -% \changes{v3.26}{2018/10/22}{\cs{@use@ption} wird für key-value-Optionen -% nicht mehr aufgerufen}^^A -% Ab \KOMAScript~3.26 wird für den Test, ob eine Option als normale Option +% \changes{v3.26}{2018/10/22}{Optionen werden für Tests etc. nicht mehr +% vollständig expandiert}%^^A +% \changes{v3.26}{2018/10/22}{\cs{@use@ption} wird für key-value-Optionen +% nicht mehr aufgerufen}%^^A +% Ab \KOMAScript~3.26 wird für den Test, ob eine Option als normale Option % existiert, die Option nicht mehr komplett expandiert. Da die wirklich % notwendige Expansion bereits erfolgt ist, verhindert das Fehler wegen -% angeblich fehlendem \cs{endcsname}. Gleichzeitig wird für key-value-Optionen +% angeblich fehlendem \cs{endcsname}. Gleichzeitig wird für key-value-Optionen % \cs{@use@ption} nicht mehr aufgerufen, da das darin enthaltene % |\csname ds@\CurrentOption\endcsname| dasselbe Problem hat. Stattdessen wird % die Option nur noch aus der Liste der nicht verwendeten Optionen entfernt. @@ -1002,8 +1006,8 @@ }\@use@ption }% % \end{macrocode} -% Fast zum Schluss wird wir im \LaTeX-Kern der Optionencode für alle -% deklarierten \LaTeX-Optionen gelöscht und dafür gesorgt, dass nach dem Paket +% Fast zum Schluss wird wir im \LaTeX-Kern der Optionencode für alle +% deklarierten \LaTeX-Optionen gelöscht und dafür gesorgt, dass nach dem Paket % keine unverarbeiteten Optionen mehr vorhanden sind. % \begin{macrocode} \@for\CurrentOption:=\@declaredoptions\do{% @@ -1012,20 +1016,20 @@ \let\@fileswith@pti@ns\@@fileswith@pti@ns \AtEndOfPackage{\let\@unprocessedoptions\relax}% % \end{macrocode} -% Jetzt muss noch der Hook ausgeführt und wieder gelöscht werden. -% \changes{v3.23}{2017/02/16}{Korrektur: Haken danach verwendet die Familie -% statt des Mitglieds}^^A +% Jetzt muss noch der Hook ausgeführt und wieder gelöscht werden. +% \changes{v3.23}{2017/02/16}{Korrektur: Haken danach verwendet die Familie +% statt des Mitglieds}%^^A % \begin{macrocode} \@nameuse{scr@after@options@#2@hook}% } \@onlypreamble\FamilyProcessOptions % \end{macrocode} % \begin{macro}{\BeforeFamilyProcessOptions} -% \changes{v3.18}{2015/06/17}{neu} -% Über diese Anweisung kann man Code unmittelbar vor Ausführung von -% \cs{FamilyProcessOptions} ausgeführt werden. Dabei muss zur Verwendung +% \changes{v3.18}{2015/06/17}{neu} +% Ãœber diese Anweisung kann man Code unmittelbar vor Ausführung von +% \cs{FamilyProcessOptions} ausgeführt werden. Dabei muss zur Verwendung % des Hakens weder das Mitglied noch die Familie existieren. Man kann dies -% also beispielsweise auch verwenden, um unmittelbar vor der Ausführung der +% also beispielsweise auch verwenden, um unmittelbar vor der Ausführung der % Optionen eines Pakets oder einer Klasse einzugreifen noch bevor das Paket % oder die Klasse geladen ist. % \begin{macrocode} @@ -1038,23 +1042,23 @@ }% } % \end{macrocode} -% \end{macro}^^A \BeforeFamilyProcessOptions +% \end{macro}%^^A \BeforeFamilyProcessOptions % \begin{macro}{\AtEndOfFamilyOptions} -% \changes{v3.12}{2013/03/04}{Neue Anweisung}^^A -% \changes{v3.23}{2017/02/16}{Sternvariante}^^A -% Mit dieser Option kann innerhalb der Ausführung einer Option Material auf +% \changes{v3.12}{2013/03/04}{Neue Anweisung}%^^A +% \changes{v3.23}{2017/02/16}{Sternvariante}%^^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. Die Normalvariante verzögert bei verschachtelten +% \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. Die Normalvariante verzögert bei verschachtelten % \cs{FamilyOptions} bis zum Ende der aktuellen Schachtet, die Sternvariante -% bis zum Ende der äußeren Schachtel. +% bis zum Ende der äußeren Schachtel. % \begin{macro}{\scr@AtEndOfFamilyOptions} -% \changes{v3.12}{2013/05/29}{Neue Anweisung (intern)}^^A +% \changes{v3.12}{2013/05/29}{Neue Anweisung (intern)}%^^A % \begin{macro}{\scr@@AtEndOfFamilyOptions} -% \changes{v3.23}{2017/02/16}{Neue Anweisung (intern)}^^A +% \changes{v3.23}{2017/02/16}{Neue Anweisung (intern)}%^^A % \begin{macro}{\scr@AtEndOfFamilyOptions@immediate} -% \changes{v3.23}{2017/02/16}{Neue Anweisung (intern)}^^A +% \changes{v3.23}{2017/02/16}{Neue Anweisung (intern)}%^^A % \begin{macrocode} \newcommand*{\scr@AtEndOfFamilyOptions}{% \kernel@ifstar {\scr@@AtEndOfFamilyOptions{@topmost}}% @@ -1070,32 +1074,32 @@ \newcommand*{\AtEndOfFamilyOptions}{} \let\AtEndOfFamilyOptions\scr@AtEndOfFamilyOptions@immediate % \end{macrocode} -% \end{macro}^^A \scr@AtEndOfFamilyOptions@immediate -% \end{macro}^^A \scr@@AtEndOfFamilyOptions -% \end{macro}^^A \scr@AtEndOfFamilyOptions -% \end{macro}^^A \AtEndOfFamilyOptions +% \end{macro}%^^A \scr@AtEndOfFamilyOptions@immediate +% \end{macro}%^^A \scr@@AtEndOfFamilyOptions +% \end{macro}%^^A \scr@AtEndOfFamilyOptions +% \end{macro}%^^A \AtEndOfFamilyOptions % \begin{macro}{\scr@ifprocess@curroption} % \changes{v3.13}{2014/01/04}{\cs{CurrentOption} innerhalb von \cs{setkeys} -% in Klammern gesetzt}^^A -% Dieses Makro führt eine aktuelle \textsf{keyval}-Option für das angegebene +% in Klammern gesetzt}%^^A +% Dieses Makro führt eine aktuelle \textsf{keyval}-Option für das angegebene % Mitglied (\#1) der angegebenen Familie (\#2) aus. Falls die Option keinen -% entsprechenden Wert hat, wird das vierte Argument ausgeführt, anderenfalls +% entsprechenden Wert hat, wird das vierte Argument ausgeführt, anderenfalls % nicht. Es ist zu beachten, dass vor der Option des Mitglieds die -% Familien-Option auszuführen ist. Ggf. benötigt das Mitglied dann keine +% Familien-Option auszuführen ist. Ggf. benötigt das Mitglied dann keine % entsprechende Option. % \begin{macrocode} \newcommand*\scr@ifprocess@curroption[2]{% % \end{macrocode} -% \changes{v3.26}{2018/10/22}{\cs{scr@sp@def} statt \cs{def} für das Abtrennen -% des Schlüssels}^^A +% \changes{v3.26}{2018/10/22}{\cs{scr@sp@def} statt \cs{def} für das Abtrennen +% des Schlüssels}%^^A % Da am 21. Oktober 2018 eine Diskussion begann, die darauf hindeutet, dass -% das Entfernen der Leerzeichen in der Optionenliste sich jederzeit ändern -% könnte, wird hier (und an einer weiteren Stelle) nun \cs{scr@sp@def} -% verwendet, um den Schlüssel zu erhalten. Allerdings genügt dies nicht, falls -% irgendwann tatsächlich gar keine Leerzeichen mehr entfernt werden. Dann -% müsste nämlich der komplette Parser umgeschrieben werden. Ich bin alles +% das Entfernen der Leerzeichen in der Optionenliste sich jederzeit ändern +% könnte, wird hier (und an einer weiteren Stelle) nun \cs{scr@sp@def} +% verwendet, um den Schlüssel zu erhalten. Allerdings genügt dies nicht, falls +% irgendwann tatsächlich gar keine Leerzeichen mehr entfernt werden. Dann +% müsste nämlich der komplette Parser umgeschrieben werden. Ich bin alles % andere als begeistert von der Tatsache, dass hier im \LaTeX-Kern Jahrzehnte -% altes Verhalten ohne Rücksicht auf Verluste zur Disposition gestellt wird. +% altes Verhalten ohne Rücksicht auf Verluste zur Disposition gestellt wird. % \begin{macrocode} \def\reserved@a##1=##2\@nil{\scr@sp@def\reserved@a{##1}}% \expandafter\reserved@a\CurrentOption=\@nil @@ -1165,23 +1169,23 @@ % \end{macrocode} % \begin{macro}{\scr@sp@def} % \changes{v3.26}{2018/08/29}{von \texttt{tocbasic.dtx} nach -% \texttt{scrkernel-basics.dtx} verschoben und umbenannt}^^A -% \changes{v3.26b}{2019/01/17}{\cs{long}}^^A +% \texttt{scrkernel-basics.dtx} verschoben und umbenannt}%^^A +% \changes{v3.26b}{2019/01/17}{\cs{long}}%^^A % \begin{macro}{\scr@sp@d} % \changes{v3.26}{2018/08/29}{von \texttt{tocbasic.dtx} nach -% \texttt{scrkernel-basics.dtx} verschoben und umbenannt}^^A +% \texttt{scrkernel-basics.dtx} verschoben und umbenannt}%^^A % \begin{macro}{\scr@sp@b} % \changes{v3.26}{2018/08/29}{von \texttt{tocbasic.dtx} nach -% \texttt{scrkernel-basics.dtx} verschoben und umbenannt}^^A -% \changes{v3.26b}{2019/01/17}{\cs{long}}^^A +% \texttt{scrkernel-basics.dtx} verschoben und umbenannt}%^^A +% \changes{v3.26b}{2019/01/17}{\cs{long}}%^^A % \begin{macro}{\scr@sp@c} % \changes{v3.26}{2018/08/29}{von \texttt{tocbasic.dtx} nach -% \texttt{scrkernel-basics.dtx} verschoben und umbenannt}^^A -% \changes{v3.26b}{2019/01/17}{\cs{long}}^^A +% \texttt{scrkernel-basics.dtx} verschoben und umbenannt}%^^A +% \changes{v3.26b}{2019/01/17}{\cs{long}}%^^A % Die Hilfsanweisung \cs{scr@sp@def} definiert eine Anweisung (erstes % Argument) mit einer Tokenliste (zweites Argument) und entfernt dabei -% führende und abschließende Leerzeichen. Die Anweisung stammt ursprünglich -% aus \textsf{keyval}. Der Rest sind Hilfsanweisungen für die Implementierung +% führende und abschließende Leerzeichen. Die Anweisung stammt ursprünglich +% aus \textsf{keyval}. Der Rest sind Hilfsanweisungen für die Implementierung % der Hilfsanweisung. % \begin{macrocode} \def\@tempa#1{% @@ -1199,24 +1203,24 @@ \long\def\scr@sp@c#1\@nil#2\relax#3{\@temptokena{#1}\edef#3{\the\@temptokena}} %</base> % \end{macrocode} -% \end{macro}^^A \scr@sp@c -% \end{macro}^^A \scr@sp@b -% \end{macro}^^A \scr@sp@d -% \end{macro}^^A \scr@sp@def -% \end{macro}^^A \scr@process@curroption -% \end{macro}^^A \FamilyProcessOptions +% \end{macro}%^^A \scr@sp@c +% \end{macro}%^^A \scr@sp@b +% \end{macro}%^^A \scr@sp@d +% \end{macro}%^^A \scr@sp@def +% \end{macro}%^^A \scr@process@curroption +% \end{macro}%^^A \FamilyProcessOptions % % \begin{macro}{\KOMAProcessOptions} -% \changes{v2.97c}{2007/04/18}{neu}% -% \changes{v3.00}{2008/04/30}{kein optionales Argument mehr}% -% Diese Anweisung führt alle Optionen, sowohl normal deklarierte als auch +% \changes{v2.97c}{2007/04/18}{neu}% +% \changes{v3.00}{2008/04/30}{kein optionales Argument mehr}% +% Diese Anweisung führt alle Optionen, sowohl normal deklarierte als auch % keyval-Optionen eines Pakets bzw. einer Klasse in der Reihenfolge, in der % sie verwendet wurden aus -- zuerst globale Optionen, dann lokale % Optionen. Das entspricht der Verwendung von \cs{ProcessOptions*} mit dem % Unterschied, dass eben auch die keyval-Optionen abgearbeitet % werden. keyval-Optionen, die keiner einzelnen Klasse und keinem einzelnen % Paket zugeordnet werden, werden dabei vor gleichnamigen eigenen -% keyval-Optionen ausgeführt. +% keyval-Optionen ausgeführt. % \begin{macrocode} %<*koma> \newcommand*{\KOMAProcessOptions}{\FamilyProcessOptions{KOMA}} @@ -1231,12 +1235,12 @@ % \fi % % \begin{option}{internalonly} -% \changes{v2.96}{2006/11/26}{neu}^^A -% \changes{v2.97c}{2007/06/20}{geht auch ohne Argument}^^A +% \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)}^^A +% \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 +% können vor dem Anwender optional verborgen werden. Wird kein Argument % angegeben, so werden alle Anweisungen verborgen. % \begin{macrocode} %<*base> @@ -1261,8 +1265,8 @@ % \end{option} % % -% \changes{v2.96}{2006/08/20}{Optionen werden abgearbeitet}^^A -% \changes{v2.97c}{2007/04/18}{Optionen werden mit \cs{KOMAProcessOptions}^^A +% \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 @@ -1274,11 +1278,11 @@ %<*body> % \fi % -% \subsection{Ein wenig zusätzliche Mathematik für \eTeX} +% \subsection{Ein wenig zusätzliche Mathematik für \eTeX} % % \begin{macro}{\XdivY} -% \changes{v3.05a}{2010/03/10}{Neu}^^A -% Ergebnis ist erster Argument durch zweites abgerundet auf die nächst +% \changes{v3.05a}{2010/03/10}{Neu}%^^A +% Ergebnis ist erster Argument durch zweites abgerundet auf die nächst % kleinere ganze Zahl. % \begin{macrocode} %<*base> @@ -1290,7 +1294,7 @@ % \end{macro} % % \begin{macro}{\XmodY} -% \changes{v3.05a}{2010/03/10}{Neu}^^A +% \changes{v3.05a}{2010/03/10}{Neu}%^^A % Ergebnis ist erstes Argument modulo zweites Argument. % \begin{macrocode} %<*base> @@ -1301,17 +1305,44 @@ % \end{macrocode} % \end{macro} % -% \subsection{Häufig benötigte Befehle} +% \subsection{Häufig benötigte Befehle} +% +% \selectlanguage{english}%^^A +% \begin{macro}{\scr@ForEachTrimmedListElement} +% \changes{v3.27}{2019/04/16}{new (internal)}%^^A +% Executes \cs{\#2\{\meta{element}\}} for each \meta{element} of the comma +% separated list \#1. Spaces before for after \meta{element} are eliminated +% and empty elements are ignored. +% \begin{macrocode} +%<*base> +\newcommand{\scr@ForEachTrimmedListElement}[2]{% + \begingroup + \def\reserved@a{\endgroup}% + \@for \reserved@b:=#1 \do {% + \scr@trim@spaces\reserved@b + \ifx\reserved@b\@empty\else + \edef\reserved@a{% + \unexpanded\expandafter{\reserved@a#2}% + {\unexpanded\expandafter{\reserved@b}}% + }% + \fi + }% + \reserved@a +} +%</base> +% \end{macrocode} +% \end{macro}%^^A \scr@ForEachTrimmedListElement +% \selectlanguage{ngerman}%^^A % % \begin{macro}{\scr@trim@spaces} -% \changes{v3.12}{2013/11/06}{neu (intern)}^^A +% \changes{v3.12}{2013/11/06}{neu (intern)}%^^A % \changes{v3.26}{2018/08/29}{von \texttt{scrkernel-language.dtx} nach -% \texttt{scrkernel-basics.dtx} verschoben}^^A -% Diese Hilfsanweisung entfernt führende und abschließende +% \texttt{scrkernel-basics.dtx} verschoben}%^^A +% Diese Hilfsanweisung entfernt führende und abschließende % Leerzeichen. Argument ist die Anweisung, deren Inhalt von den Leerzeichen -% befreit werden soll. Gedacht ist das ganze für die Listenverarbeitung mit -% Hilfe von \cs{@for}. Als Argument wird ein Makro übergeben, in dessen -% Definition führende und abschließende space-Tokens entfernt werden sollen. +% befreit werden soll. Gedacht ist das ganze für die Listenverarbeitung mit +% Hilfe von \cs{@for}. Als Argument wird ein Makro übergeben, in dessen +% Definition führende und abschließende space-Tokens entfernt werden sollen. % \begin{macrocode} %<*base> \newcommand\scr@trim@spaces[1]{% @@ -1319,15 +1350,15 @@ } %</base> % \end{macrocode} -% \end{macro}^^A \scr@trim@space +% \end{macro}%^^A \scr@trim@space % % \begin{macro}{\if@atdocument} -% \changes{v2.95}{2002/12/05}{neuer Schalter}^^A +% \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 +% wird von \KOMAScript{} für Befehle verwendet, die sich +% unterschiedlich verhalten, je nachdem, ob sie in der Präambel oder % danach aufgerufen werden. % \begin{macrocode} %<*base> @@ -1342,21 +1373,21 @@ % \end{macro} % % \begin{macro}{\let@as@internal@defined} -% \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}^^A -% \changes{v2.97c}{2007/06/20}{Herausreichen von internen Makros kann -% 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 +% \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}%^^A +% \changes{v2.97c}{2007/06/20}{Herausreichen von internen Makros kann +% 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 % 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 -% dokumentierten Makros wird als Parameter übergeben. Dies wird gleich -% benötigt. +% dokumentierten Makros wird als Parameter übergeben. Dies wird gleich +% benötigt. % \begin{macrocode} %<*base> \newcommand*{\let@as@internal@defined}[1]{% @@ -1422,9 +1453,9 @@ % \end{macro} % % \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}} +% \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} @@ -1435,11 +1466,11 @@ % \end{macro} % % \begin{macro}{\ifnotundefined} -% \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} +% \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 -% ist es ganz nützlich, auch das zu haben. Dieses Makro heißt nicht +% ist es ganz nützlich, auch das zu haben. Dieses Makro heißt nicht % \cs{ifdefined}, weil \eTeX\ bereits ein solches Primitiv bietet. % \begin{macrocode} %<*base> @@ -1455,10 +1486,10 @@ % \end{macro} % % \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. +% \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} %<*base> \newcommand\ifstr[2]{% @@ -1474,9 +1505,9 @@ % \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. +% Arguments beginnt, wird das dritte Argument ausgeführt, sonst das vierte. % \begin{macrocode} %<*base> \newcommand*{\ifstrstart}[2]{% @@ -1487,8 +1518,8 @@ } % \end{macrocode} % \begin{macro}{\@ifstrstart} -% \changes{v3.12}{2013/11/05}{neu (intern)}^^A -% Hilfsmakro, damit die Argumente vollständig expandiert werden können. +% \changes{v3.12}{2013/11/05}{neu (intern)}%^^A +% Hilfsmakro, damit die Argumente vollständig expandiert werden können. % \begin{macrocode} \newcommand*{\@ifstrstart}[2]{% \def\reserved@a ##1#2##2\@nil{% @@ -1502,16 +1533,20 @@ } %</base> % \end{macrocode} -% \end{macro}^^A \@ifstrstart -% \end{macro}^^A \ifstrstart +% \end{macro}%^^A \@ifstrstart +% \end{macro}%^^A \ifstrstart % % \begin{macro}{\IfArgIsEmpty} -% \changes{v3.19}{2015/08/29}{neu}^^A -% Falls das erste Argument tatsächlich leer ist, wird das zweite Argument -% ausgeführt sonst das dritte. +% \changes{v3.19}{2015/08/29}{neu}%^^A +% \changes{v3.27}{2019/03/11}{\cs{long}}%^^A +% \changes{v3.27}{2019/07/19}{wird bereits vor den Optionen benötigt}%^^A +% Falls das erste Argument tatsächlich leer ist, wird das zweite Argument +% ausgeführt sonst das dritte. +%</body> +%<*prepare> %<*base> % \begin{macrocode} -\newcommand*{\IfArgIsEmpty}[1]{% +\newcommand{\IfArgIsEmpty}[1]{% \if\relax\detokenize{#1}\relax \expandafter\@firstoftwo \else @@ -1520,14 +1555,16 @@ } % \end{macrocode} %</base> -% \end{macro}^^A \IfArgIsEmpty +%</prepare> +%<*body> +% \end{macro}%^^A \IfArgIsEmpty % % % \begin{macro}{\ifislengthprimitive} -% \changes{v3.20}{2015/10/19}{neu}^^A -% Falls das erste Argument ggf. über mehrere Stufen hinweg zu einem Primitiv -% expandiert, das als Länge verwendet werden kann, wird das erste Argument -% ausgeführt, sonst das zweite. +% \changes{v3.20}{2015/10/19}{neu}%^^A +% Falls das erste Argument ggf. über mehrere Stufen hinweg zu einem Primitiv +% expandiert, das als Länge verwendet werden kann, wird das erste Argument +% ausgeführt, sonst das zweite. % \begin{macrocode} %<*base> \newcommand*{\ifislengthprimitive}[1]{% @@ -1535,8 +1572,8 @@ } % \end{macrocode} % \begin{macro}{\scr@ifislengthprimitive} -% \changes{v3.20}{2015/10/19}{neu (intern)}^^A -% Hilfsmacro, das ggf. rekusiv auf diverse Primitive prüft. +% \changes{v3.20}{2015/10/19}{neu (intern)}%^^A +% Hilfsmacro, das ggf. rekusiv auf diverse Primitive prüft. % \begin{macrocode} \newcommand*{\scr@ifislengthprimitive}[1]{% \begingroup @@ -1560,16 +1597,16 @@ } %</base> % \end{macrocode} -% \end{macro}^^A \scr@ifislengthprimitive -% \end{macro}^^A \ifislengthprimitive +% \end{macro}%^^A \scr@ifislengthprimitive +% \end{macro}%^^A \ifislengthprimitive % % % \begin{macro}{\ifisdimen} -% \changes{v3.12}{2013/11/05}{neu}^^A -% \changes{v3.20}{2015/10/19}{Reimplementierung}^^A -% Falls das erste Argument ggf. über mehrere Stufen hinweg zu einem +% \changes{v3.12}{2013/11/05}{neu}%^^A +% \changes{v3.20}{2015/10/19}{Reimplementierung}%^^A +% Falls das erste Argument ggf. über mehrere Stufen hinweg zu einem % \cs{dimen}-Register (und zu nichts weiterem!) expandiert, wird das erste -% Argument ausgeführt, sonst das zweite. +% Argument ausgeführt, sonst das zweite. % \begin{macrocode} %<*base> \newcommand*{\ifisdimen}[1]{% @@ -1577,8 +1614,8 @@ } % \end{macrocode} % \begin{macro}{\scr@ifisdimen} -% \changes{v3.20}{2015/10/19}{neu (intern)}^^A -% Hilfsmacro, das ggf. rekusiv auf ein \cs{dimen}-Register prüft +% \changes{v3.20}{2015/10/19}{neu (intern)}%^^A +% Hilfsmacro, das ggf. rekusiv auf ein \cs{dimen}-Register prüft % \begin{macrocode} \newcommand*{\scr@ifisdimen}[1]{% \begingroup @@ -1595,12 +1632,12 @@ #1% } % \end{macrocode} -% \end{macro}^^A \scr@ifisdimen +% \end{macro}%^^A \scr@ifisdimen % \begin{macro}{\scr@TestDimenAssignTillNil} -% \changes{v3.20}{2015/10/19}{neu (intern)} -% Das durch \cs{@nil} begrenzte Argument wird einer temporären Länge +% \changes{v3.20}{2015/10/19}{neu (intern)} +% Das durch \cs{@nil} begrenzte Argument wird einer temporären Länge % zugewiesen. Wird dabei das Argument komplett aufgebraucht, so wird das -% erste Argument nach \cs{@nil} ausgeführt, sonst das zweite. Das begrenzte +% erste Argument nach \cs{@nil} ausgeführt, sonst das zweite. Das begrenzte % Argument wird in jedem Fall komplett aufgebraucht. % \begin{macrocode} \newcommand*\scr@TestDimenAssignTillNil{} @@ -1611,12 +1648,12 @@ } % \end{macrocode} % \begin{macro}{\scr@IfAfterEndgroupArgIsRelaxTillNnil} -% \changes{v3.20}{2015/10/19}{neu (intern)} +% \changes{v3.20}{2015/10/19}{neu (intern)} % \begin{macro}{\scr@IfArgIsRelaxAfterRelaxTillNnil} -% \changes{v3.20}{2015/10/19}{neu (intern)} +% \changes{v3.20}{2015/10/19}{neu (intern)} % Die Hilfsmakros lesen ein durch \cs{@nnil} begrenztes Argument. Falls dieses % Argument nur aus einer Folge von \cs{relax} besteht, wird das erste Argument -% nach \cs{@nnil} ausgeführt, sonst das zweite. +% nach \cs{@nnil} ausgeführt, sonst das zweite. % \begin{macrocode} \newcommand*\scr@AfterEndGroupIfArgIsRelaxTillNnil{} \def\scr@AfterEndGroupIfArgIsRelaxTillNnil#1\@nnil{% @@ -1636,38 +1673,38 @@ }% } % \end{macrocode} -% \end{macro}^^A \scr@IfArgIsRelaxAfterRelaxTillNnil -% \end{macro}^^A \scr@IfArgIsRelaxTillNnil -% \end{macro}^^A \scr@TestSkipAssignTillNil +% \end{macro}%^^A \scr@IfArgIsRelaxAfterRelaxTillNnil +% \end{macro}%^^A \scr@IfArgIsRelaxTillNnil +% \end{macro}%^^A \scr@TestSkipAssignTillNil % \begin{macro}{\scr@secondoftwoAfterNil} -% \changes{v3.20}{2015/10/19}{neu (intern)} -% Das Hilfsmakro liest ein durch \cs{@nil} begrenztes Argument und führt dann -% das zweite Argument nach \cs{@nil} aus. Dabei wird auch Sorge dafür getrage, -% dass das Argument eventuell leer sein könnte, was normalerweise dazu führen -% würde, dass \cs{@nil} zum Argument selbst wird. +% \changes{v3.20}{2015/10/19}{neu (intern)} +% Das Hilfsmakro liest ein durch \cs{@nil} begrenztes Argument und führt dann +% das zweite Argument nach \cs{@nil} aus. Dabei wird auch Sorge dafür getrage, +% dass das Argument eventuell leer sein könnte, was normalerweise dazu führen +% würde, dass \cs{@nil} zum Argument selbst wird. % \begin{macro}{\scr@@secondoftwoAfterNil} -% \changes{v3.20}{2015/10/19}{neu (intern)} -% Zu diesem Zweck wird ein zweites Hilfsmakro benötigt. +% \changes{v3.20}{2015/10/19}{neu (intern)} +% Zu diesem Zweck wird ein zweites Hilfsmakro benötigt. % \begin{macrocode} \newcommand*{\scr@secondoftwoAfterNil}{\scr@@secondoftwoAfterNil\@empty} \newcommand*{\scr@@secondoftwoAfterNil}{} \def\scr@@secondoftwoAfterNil#1\@nil{\@secondoftwo} %</base> % \end{macrocode} -% \end{macro}^^A \scr@@secondoftwoAfterNil -% \end{macro}^^A \scr@secondoftwoAfterNil -% \end{macro}^^A \ifisdimen +% \end{macro}%^^A \scr@@secondoftwoAfterNil +% \end{macro}%^^A \scr@secondoftwoAfterNil +% \end{macro}%^^A \ifisdimen % % \begin{macro}{\ifisskip} -% \changes{v3.12}{2013/11/05}{neu}^^A -% \changes{v3.18a}{2015/07/07}{\cs{baselineskip} und \cs{parskip} werden als -% skips akzeptiert}^^A -% \changes{v3.20}{2015/10/19}{\cs{baselineskip} und \cs{parskip} sind keine -% skips}^^A -% \changes{v3.20}{2015/10/19}{Reimplementierung}^^A -% Falls das erste Argument ggf. über mehrere Stufen hinweg zu einem +% \changes{v3.12}{2013/11/05}{neu}%^^A +% \changes{v3.18a}{2015/07/07}{\cs{baselineskip} und \cs{parskip} werden als +% skips akzeptiert}%^^A +% \changes{v3.20}{2015/10/19}{\cs{baselineskip} und \cs{parskip} sind keine +% skips}%^^A +% \changes{v3.20}{2015/10/19}{Reimplementierung}%^^A +% Falls das erste Argument ggf. über mehrere Stufen hinweg zu einem % \cs{skip}-Register (und zu nichts weiterem!) expandiert, wird das erste -% Argument ausgeführt, sonst das zweite. +% Argument ausgeführt, sonst das zweite. % \begin{macrocode} %<*base> \newcommand*{\ifisskip}[1]{% @@ -1675,8 +1712,8 @@ } % \end{macrocode} % \begin{macro}{\scr@ifisskip} -% \changes{v3.20}{2015/10/19}{neu (intern)}^^A -% Hilfsmacro, das ggf. rekusiv auf ein \cs{skip}-Register prüft +% \changes{v3.20}{2015/10/19}{neu (intern)}%^^A +% Hilfsmacro, das ggf. rekusiv auf ein \cs{skip}-Register prüft % \begin{macrocode} \newcommand*{\scr@ifisskip}[1]{% \begingroup @@ -1693,12 +1730,12 @@ #1% } % \end{macrocode} -% \end{macro}^^A \scr@ifisskip +% \end{macro}%^^A \scr@ifisskip % \begin{macro}{\scr@TestSkipAssignTillNil} -% \changes{v3.20}{2015/10/19}{neu (intern)} -% Das durch \cs{@nil} begrenzte Argument wird einer temporären Länge +% \changes{v3.20}{2015/10/19}{neu (intern)} +% Das durch \cs{@nil} begrenzte Argument wird einer temporären Länge % zugewiesen. Wird dabei das Argument komplett aufgebraucht, so wird das -% erste Argument nach \cs{@nil} ausgeführt, sonst das zweite. Das begrenzte +% erste Argument nach \cs{@nil} ausgeführt, sonst das zweite. Das begrenzte % Argument wird in jedem Fall komplett aufgebraucht. % \begin{macrocode} \newcommand*\scr@TestSkipAssignTillNil{} @@ -1709,15 +1746,15 @@ } %</base> % \end{macrocode} -% \end{macro}^^A \scr@TestSkipAssignTillNil -% \end{macro}^^A \ifiskip +% \end{macro}%^^A \scr@TestSkipAssignTillNil +% \end{macro}%^^A \ifiskip % % \begin{macro}{\ifiscount} -% \changes{v3.12}{2013/11/05}{neu}^^A -% \changes{v3.20}{2015/10/19}{Reimplementierung}^^A -% Falls das erste Argument ggf. über mehrere Stufen hinweg zu einem +% \changes{v3.12}{2013/11/05}{neu}%^^A +% \changes{v3.20}{2015/10/19}{Reimplementierung}%^^A +% Falls das erste Argument ggf. über mehrere Stufen hinweg zu einem % \cs{count}-Register (und zu nichts weiterem!) expandiert, wird das erste -% Argument ausgeführt, sonst das zweite. +% Argument ausgeführt, sonst das zweite. % \begin{macrocode} %<*base> \newcommand*{\ifiscount}[1]{% @@ -1725,8 +1762,8 @@ } % \end{macrocode} % \begin{macro}{\scr@ifiscount} -% \changes{v3.20}{2015/10/19}{neu (intern)}^^A -% Hilfsmacro, das ggf. rekusiv auf ein \cs{count}-Register prüft +% \changes{v3.20}{2015/10/19}{neu (intern)}%^^A +% Hilfsmacro, das ggf. rekusiv auf ein \cs{count}-Register prüft % \begin{macrocode} \newcommand*{\scr@ifiscount}[1]{% \begingroup @@ -1743,12 +1780,12 @@ #1% } % \end{macrocode} -% \end{macro}^^A \scr@ifiscount +% \end{macro}%^^A \scr@ifiscount % \begin{macro}{\scr@TestSkipCountTillNil} -% \changes{v3.20}{2015/10/19}{neu (intern)} -% Das durch \cs{@nil} begrenzte Argument wird einer temporären Länge +% \changes{v3.20}{2015/10/19}{neu (intern)} +% Das durch \cs{@nil} begrenzte Argument wird einer temporären Länge % zugewiesen. Wird dabei das Argument komplett aufgebraucht, so wird das -% erste Argument nach \cs{@nil} ausgeführt, sonst das zweite. Das begrenzte +% erste Argument nach \cs{@nil} ausgeführt, sonst das zweite. Das begrenzte % Argument wird in jedem Fall komplett aufgebraucht. % \begin{macrocode} \newcommand*\scr@TestCountAssignTillNil{} @@ -1759,19 +1796,19 @@ } %</base> % \end{macrocode} -% \end{macro}^^A \scr@TestCountAssignTillNil -% \end{macro}^^A \ifiscount +% \end{macro}%^^A \scr@TestCountAssignTillNil +% \end{macro}%^^A \ifiscount % % % \begin{macro}{\ifisdimexpr} -% \changes{v3.12}{2013/11/05}{neu}^^A -% \changes{v3.20}{2015/10/19}{Reimplementierung}^^A -% Falls das erste Argument ggf. über mehrere Stufen hinweg zu einer +% \changes{v3.12}{2013/11/05}{neu}%^^A +% \changes{v3.20}{2015/10/19}{Reimplementierung}%^^A +% Falls das erste Argument ggf. über mehrere Stufen hinweg zu einer % \cs{dimexpr} (und zu nichts weiterem!) expandiert, wird das erste -% Argument ausgeführt, sonst das zweite. Dies unterscheidet sich in einem +% Argument ausgeführt, sonst das zweite. Dies unterscheidet sich in einem % wichtigen Punkt von \cs{ifisdimen}: Sollte das ganze zwar als \cs{dimexpr} % beginnen, aber syntaktisch nicht korrekt sein, so wird dies nicht erkannt, -% sondern führt tatsächlich zu einer Fehlermeldung. +% sondern führt tatsächlich zu einer Fehlermeldung. % \begin{macrocode} %<*base> \newcommand*{\ifisdimexpr}[1]{% @@ -1779,8 +1816,8 @@ } % \end{macrocode} % \begin{macro}{\scr@ifisdimexpr} -% \changes{v3.20}{2015/10/19}{neu (intern)}^^A -% Hilfsmacro, das ggf. rekusiv auf eine \cs{dimexpr} prüft +% \changes{v3.20}{2015/10/19}{neu (intern)}%^^A +% Hilfsmacro, das ggf. rekusiv auf eine \cs{dimexpr} prüft % \begin{macrocode} \newcommand*{\scr@ifisdimexpr}[1]{% \begingroup @@ -1798,19 +1835,19 @@ } %</base> % \end{macrocode} -% \end{macro}^^A \scr@ifisdimexpr -% \end{macro}^^A \ifisdimexpr +% \end{macro}%^^A \scr@ifisdimexpr +% \end{macro}%^^A \ifisdimexpr % % % \begin{macro}{\ifisglueexpr} -% \changes{v3.12}{2013/11/05}{neu}^^A -% \changes{v3.20}{2015/10/19}{Reimplementierung}^^A -% Falls das erste Argument ggf. über mehrere Stufen hinweg zu einer +% \changes{v3.12}{2013/11/05}{neu}%^^A +% \changes{v3.20}{2015/10/19}{Reimplementierung}%^^A +% Falls das erste Argument ggf. über mehrere Stufen hinweg zu einer % \cs{glueexpr} (und zu nichts weiterem!) expandiert, wird das erste -% Argument ausgeführt, sonst das zweite. Dies unterscheidet sich in einem +% Argument ausgeführt, sonst das zweite. Dies unterscheidet sich in einem % wichtigen Punkt von \cs{ifisskip}: Sollte das ganze zwar als \cs{glueexpr} % beginnen, aber syntaktisch nicht korrekt sein, so wird dies nicht erkannt, -% sondern führt tatsächlich zu einer Fehlermeldung. +% sondern führt tatsächlich zu einer Fehlermeldung. % \begin{macrocode} %<*base> \newcommand*{\ifisglueexpr}[1]{% @@ -1818,8 +1855,8 @@ } % \end{macrocode} % \begin{macro}{\scr@ifisglueexpr} -% \changes{v3.20}{2015/10/19}{neu (intern)}^^A -% Hilfsmacro, das ggf. rekusiv auf eine \cs{glueexpr} prüft +% \changes{v3.20}{2015/10/19}{neu (intern)}%^^A +% Hilfsmacro, das ggf. rekusiv auf eine \cs{glueexpr} prüft % \begin{macrocode} \newcommand*{\scr@ifisglueexpr}[1]{% \begingroup @@ -1837,19 +1874,19 @@ } %</base> % \end{macrocode} -% \end{macro}^^A \scr@ifisglueexpr -% \end{macro}^^A \ifisglueexpr +% \end{macro}%^^A \scr@ifisglueexpr +% \end{macro}%^^A \ifisglueexpr % % % \begin{macro}{\ifisnumexpr} -% \changes{v3.12}{2013/11/05}{neu}^^A -% \changes{v3.20}{2015/10/19}{Reimplementierung}^^A -% Falls das erste Argument ggf. über mehrere Stufen hinweg zu einer +% \changes{v3.12}{2013/11/05}{neu}%^^A +% \changes{v3.20}{2015/10/19}{Reimplementierung}%^^A +% Falls das erste Argument ggf. über mehrere Stufen hinweg zu einer % \cs{numexpr} (und zu nichts weiterem!) expandiert, wird das erste -% Argument ausgeführt, sonst das zweite. Dies unterscheidet sich in einem +% Argument ausgeführt, sonst das zweite. Dies unterscheidet sich in einem % wichtigen Punkt von \cs{ifiscount}: Sollte das ganze zwar als \cs{numexpr} % beginnen, aber syntaktisch nicht korrekt sein, so wird dies nicht erkannt, -% sondern führt tatsächlich zu einer Fehlermeldung. +% sondern führt tatsächlich zu einer Fehlermeldung. % \begin{macrocode} %<*base> \newcommand*{\ifisnumexpr}[1]{% @@ -1857,8 +1894,8 @@ } % \end{macrocode} % \begin{macro}{\scr@ifisnumexpr} -% \changes{v3.20}{2015/10/19}{neu (intern)}^^A -% Hilfsmacro, das ggf. rekusiv auf eine \cs{numexpr} prüft +% \changes{v3.20}{2015/10/19}{neu (intern)}%^^A +% Hilfsmacro, das ggf. rekusiv auf eine \cs{numexpr} prüft % \begin{macrocode} \newcommand*{\scr@ifisnumexpr}[1]{% \begingroup @@ -1876,18 +1913,18 @@ } %</base> % \end{macrocode} -% \end{macro}^^A \scr@ifisnumexpr -% \end{macro}^^A \ifisnumexpr +% \end{macro}%^^A \scr@ifisnumexpr +% \end{macro}%^^A \ifisnumexpr % % % \begin{macro}{\ifisdefchar} -% \changes{v3.20}{2015/10/19}{neu}^^A -% Falls das erste Argument ggf. über mehrere Stufen hinweg zu einem mit +% \changes{v3.20}{2015/10/19}{neu}%^^A +% Falls das erste Argument ggf. über mehrere Stufen hinweg zu einem mit % \cs{chardef} definierten Wert (und zu nichts weiterem!) expandiert, wird das -% erste Argument ausgeführt, sonst das zweite. Dies unterscheidet sich in einem +% erste Argument ausgeführt, sonst das zweite. Dies unterscheidet sich in einem % wichtigen Punkt von \cs{ifiscount}: Sollte das ganze zwar wie ein \cs{char} % beginnen, aber syntaktisch nicht korrekt sein, so wird dies nicht erkannt, -% sondern führt tatsächlich zu einer Fehlermeldung. +% sondern führt tatsächlich zu einer Fehlermeldung. % \begin{macrocode} %<*base> \newcommand*{\ifisdefchar}[1]{% @@ -1895,8 +1932,8 @@ } % \end{macrocode} % \begin{macro}{\scr@ifisdefchar} -% \changes{v3.20}{2015/10/19}{neu (intern)}^^A -% Hilfsmacro, das ggf. rekusiv auf eine \cs{char} prüft +% \changes{v3.20}{2015/10/19}{neu (intern)}%^^A +% Hilfsmacro, das ggf. rekusiv auf eine \cs{char} prüft % \begin{macrocode} \newcommand*{\scr@ifisdefchar}[1]{% \begingroup @@ -1914,14 +1951,14 @@ } %</base> % \end{macrocode} -% \end{macro}^^A \scr@ifisdefchar -% \end{macro}^^A \ifisdefchar +% \end{macro}%^^A \scr@ifisdefchar +% \end{macro}%^^A \ifisdefchar % % % \begin{macro}{\ifiscounter} -% \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. +% \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} %<*base> \newcommand*{\ifiscounter}[1]{% @@ -1935,15 +1972,15 @@ } %</base> % \end{macrocode} -% \end{macro}^^A \ifiscounter +% \end{macro}%^^A \ifiscounter % % % \begin{macro}{\ifisinteger} -% \changes{v3.12}{2013/11/05}{neu}^^A -% \changes{v3.12a}{2014/01/24}{Leerzeichenfehler korrigiert}^^A -% \changes{v3.20}{2015/10/19}{Reimplementierung}^^A +% \changes{v3.12}{2013/11/05}{neu}%^^A +% \changes{v3.12a}{2014/01/24}{Leerzeichenfehler korrigiert}%^^A +% \changes{v3.20}{2015/10/19}{Reimplementierung}%^^A % Falls die Expansion des ersten Arguments eine (positive oder negative) ganze -% Zahl ist, wird das zweite Argument ausgeführt, sonst das dritte. +% Zahl ist, wird das zweite Argument ausgeführt, sonst das dritte. % \begin{macrocode} %<*base> \newcommand*{\ifisinteger}[1]{% @@ -1951,9 +1988,9 @@ } % \end{macrocode} % \begin{macro}{\scr@ifisinteger} -% \changes{v3.20}{2015/10/19}{neu (intern)}^^A +% \changes{v3.20}{2015/10/19}{neu (intern)}%^^A % Hilfsmacro, das ggf. rekusiv auf ein Vorzeichen oder eine positive Zahl -% prüft. +% prüft. % \begin{macrocode} \def\scr@ifisinteger#1{% \begingroup @@ -2022,15 +2059,15 @@ } %</base> % \end{macrocode} -% \end{macro}^^A \scr@ifisinteger -% \end{macro}^^A \ifisinteger +% \end{macro}%^^A \scr@ifisinteger +% \end{macro}%^^A \ifisinteger % % % \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. +% Argument ausgeführt, sonst das zweite. % \begin{macrocode} %<*base> \newcommand*{\scr@ifrelax@to@nnil}{} @@ -2049,11 +2086,11 @@ % \end{macro} % % \begin{macro}{\ifisdimension} -% \changes{v3.12}{2013/11/05}{neu}^^A -% \changes{v3.12a}{2014/01/24}{Leerzeichenfehler korrigiert}^^A -% \changes{v3.20}{2015/10/20}{Reimplementierung}^^A +% \changes{v3.12}{2013/11/05}{neu}%^^A +% \changes{v3.12a}{2014/01/24}{Leerzeichenfehler korrigiert}%^^A +% \changes{v3.20}{2015/10/20}{Reimplementierung}%^^A % Falls die stufenweise Expansion des ersten Arguments eine (positive oder -% negative) Länge ist, wird das zweite Argument ausgeführt, sonst das +% negative) Länge ist, wird das zweite Argument ausgeführt, sonst das % dritte. % \begin{macrocode} %<*base> @@ -2062,14 +2099,14 @@ } % \end{macrocode} % \begin{macro}{\scr@ifisdimension} -% \changes{v3.20}{2015/10/20}{neu (intern)} -% Eigentlich wäre dieses Hilfsmakro extrem aufwändig, da eine Dimension recht +% \changes{v3.20}{2015/10/20}{neu (intern)} +% Eigentlich wäre dieses Hilfsmakro extrem aufwändig, da eine Dimension recht % komplex aufgebaut sein darf. Ich habe aber beschlossen, hier mit einer % Heuristik zu Werke zu gehen: Wenn das Argument mit einer beliebigen Anzahl % Vorzeichen, gefolgt von max. einem Punkt, Komma oder einer Ziffer oder -% gefolgt einem der für Längen zulässigen Primitiv beginnt, dann probieren wir +% gefolgt einem der für Längen zulässigen Primitiv beginnt, dann probieren wir % eine Zuweisung. Ist diese syntaktisch nicht korrekt, kann ein Fehler die -% Folge sein. Das mag unschön sein, vereinfacht den Test aber erheblich! +% Folge sein. Das mag unschön sein, vereinfacht den Test aber erheblich! % \begin{macrocode} \newcommand*{\scr@ifisdimension}[1]{% \begingroup @@ -2151,10 +2188,10 @@ } % \end{macrocode} % \begin{macro}{\scr@TestDimenionAssignTillNil} -% \changes{v3.20}{2015/10/19}{neu (intern)} -% Das durch \cs{@nil} begrenzte Argument wird einer temporären Länge +% \changes{v3.20}{2015/10/19}{neu (intern)} +% Das durch \cs{@nil} begrenzte Argument wird einer temporären Länge % zugewiesen. Wird dabei das Argument komplett aufgebraucht, so wird das -% erste Argument nach \cs{@nil} ausgeführt, sonst das zweite. Das begrenzte +% erste Argument nach \cs{@nil} ausgeführt, sonst das zweite. Das begrenzte % Argument wird in jedem Fall komplett aufgebraucht. % \begin{macrocode} \newcommand*\scr@TestDimensionAssignTillNil{} @@ -2165,12 +2202,12 @@ } % \end{macrocode} % \begin{macro}{\scr@IfAfterEndgroupArgIsRelaxTillptNnil} -% \changes{v3.20}{2015/10/19}{neu (intern)} +% \changes{v3.20}{2015/10/19}{neu (intern)} % \begin{macro}{\scr@IfArgIsRelaxAfterRelaxTillptNnil} -% \changes{v3.20}{2015/10/19}{neu (intern)} +% \changes{v3.20}{2015/10/19}{neu (intern)} % Die Hilfsmakros lesen ein durch \cs{@nnil} begrenztes Argument. Falls dieses % Argument nur aus einer Folge von \cs{relax} besteht, wird das erste Argument -% nach \cs{@nnil} ausgeführt, sonst das zweite. +% nach \cs{@nnil} ausgeführt, sonst das zweite. % \begin{macrocode} \newcommand*\scr@AfterEndGroupIfArgIsRelaxTillptNnil{} \def\scr@AfterEndGroupIfArgIsRelaxTillptNnil#1\@nnil{% @@ -2191,19 +2228,19 @@ } %</base> % \end{macrocode} -% \end{macro}^^A \scr@IfArgIsRelaxAfterRelaxTillptNnil -% \end{macro}^^A \scr@IfArgIsRelaxTillptNnil -% \end{macro}^^A \scr@DimensionSkipAssignTillNil -% \end{macro}^^A \scr@ifisdimension -% \end{macro}^^A \ifisdimension +% \end{macro}%^^A \scr@IfArgIsRelaxAfterRelaxTillptNnil +% \end{macro}%^^A \scr@IfArgIsRelaxTillptNnil +% \end{macro}%^^A \scr@DimensionSkipAssignTillNil +% \end{macro}%^^A \scr@ifisdimension +% \end{macro}%^^A \ifisdimension % % % \begin{macro}{\ifisglue} -% \changes{v3.12}{2013/11/05}{neu}^^A -% \changes{v3.12a}{2014/01/24}{Leerzeichenfehler korrigiert}^^A -% \changes{v3.20}{2015/10/21}{Reimplementierung}^^A +% \changes{v3.12}{2013/11/05}{neu}%^^A +% \changes{v3.12a}{2014/01/24}{Leerzeichenfehler korrigiert}%^^A +% \changes{v3.20}{2015/10/21}{Reimplementierung}%^^A % Falls die stufenweise Expansion des ersten Arguments eine (positive oder -% negative) Länge mit Leim ist, wird das zweite Argument ausgeführt, sonst das +% negative) Länge mit Leim ist, wird das zweite Argument ausgeführt, sonst das % dritte. % \begin{macrocode} %<*base> @@ -2212,14 +2249,14 @@ } % \end{macrocode} % \begin{macro}{\scr@ifisglue} -% \changes{v3.20}{2015/10/21}{neu (intern)} -% Eigentlich wäre dieses Hilfsmakro extrem aufwändig, da Leim recht +% \changes{v3.20}{2015/10/21}{neu (intern)} +% Eigentlich wäre dieses Hilfsmakro extrem aufwändig, da Leim recht % komplex aufgebaut sein darf. Ich habe aber beschlossen, hier mit einer % Heuristik zu Werke zu gehen: Wenn das Argument mit einer beliebigen Anzahl % Vorzeichen, gefolgt von max. einem Punkt, Komma oder einer Ziffer oder -% gefolgt einem der für Leim zulässigen Primitiv beginnt, dann probieren wir +% gefolgt einem der für Leim zulässigen Primitiv beginnt, dann probieren wir % eine Zuweisung. Ist diese syntaktisch nicht korrekt, kann ein Fehler die -% Folge sein. Das mag unschön sein, vereinfacht den Test aber erheblich! +% Folge sein. Das mag unschön sein, vereinfacht den Test aber erheblich! % \begin{macrocode} \newcommand*{\scr@ifisglue}[1]{% \begingroup @@ -2301,10 +2338,10 @@ } % \end{macrocode} % \begin{macro}{\scr@TestGlueAssignTillNil} -% \changes{v3.20}{2015/10/21}{neu (intern)} -% Das durch \cs{@nil} begrenzte Argument wird einer temporären Länge +% \changes{v3.20}{2015/10/21}{neu (intern)} +% Das durch \cs{@nil} begrenzte Argument wird einer temporären Länge % zugewiesen. Wird dabei das Argument komplett aufgebraucht, so wird das -% erste Argument nach \cs{@nil} ausgeführt, sonst das zweite. Das begrenzte +% erste Argument nach \cs{@nil} ausgeführt, sonst das zweite. Das begrenzte % Argument wird in jedem Fall komplett aufgebraucht. % \begin{macrocode} \newcommand*\scr@TestGlueAssignTillNil{} @@ -2315,23 +2352,24 @@ } %</base> % \end{macrocode} -% \end{macro}^^A \scr@TestGlueAssignTillNil -% \end{macro}^^A \scr@ifisglue -% \end{macro}^^A \ifisglue +% \end{macro}%^^A \scr@TestGlueAssignTillNil +% \end{macro}%^^A \scr@ifisglue +% \end{macro}%^^A \ifisglue % % % \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 -% Dieses Makro testet, ob ein übergebener Parameter eine positive, +% \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 +% \changes{v3.27}{2019/08/26}{leere Argumente werden korrekt behandelt}%^^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. +% ausgeführt, sonst der dritte. % \begin{macrocode} %<*base> \newcommand\ifnumber[1]{% \begingroup\@tempswafalse\let\scr@next\test@number - \expandafter\scr@next#1\scr@next + \IfArgIsEmpty{#1}{}{\expandafter\scr@next#1\scr@next}% \if@tempswa \aftergroup\@firstoftwo \else @@ -2341,7 +2379,7 @@ } % \end{macrocode} % \begin{macro}{\test@number} -% Für den eigentlichen Test wird der erste Parameter Token für Token +% Für den eigentlichen Test wird der erste Parameter Token für Token % gescannt und beurteilt. % \begin{macrocode} \newcommand*{\test@number}[1]{% @@ -2349,8 +2387,8 @@ \let\scr@next\relax \else % \end{macrocode} -% Dabei wird für einen schnelleren Vergleich die Tatsache genutzt, dass -% Ziffernzeichen immer im selben durchgängigen Bereich liegen +% Dabei wird für einen schnelleren Vergleich die Tatsache genutzt, dass +% Ziffernzeichen immer im selben durchgängigen Bereich liegen % \begin{macrocode} \@tempcnta=\expandafter\expandafter\expandafter\number \expandafter`#1\relax @@ -2360,7 +2398,7 @@ \else\@tempswafalse\fi \else\@tempswafalse\fi % \end{macrocode} -% Das zeichenweise Scannen und Parsen kann natürlich nicht einfach +% Das zeichenweise Scannen und Parsen kann natürlich nicht einfach % abgebrochen werden. Stattdessen ist der Parameterrest noch zu % entfernen. % \begin{macrocode} @@ -2381,9 +2419,9 @@ % \end{macro} % % \begin{macro}{\ifintnumber} -% \changes{v3.12}{2013/10/30}{neu}^^A +% \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 +% zweite Argument ausgeführt, sonst das dritte. Wie bei \TeX{} auch sind % beliebig viele Vorzeichen erlaubt. % \begin{macrocode} %<*base> @@ -2399,7 +2437,7 @@ } % \end{macrocode} % \begin{macro}{\scr@test@sign} -% \changes{v3.12}{2013/10/30}{neu (intern)}^^A +% \changes{v3.12}{2013/10/30}{neu (intern)}%^^A % \begin{macrocode} \newcommand*{\scr@test@sign}[1]{% \ifx \scr@next#1 @@ -2421,8 +2459,8 @@ % \end{macro} % % \begin{macro}{\ifdimen} -% Dieses Makro testet, ob ein übergebener Parameter eine Dimension -% ist und führt in Abhängigkeit davon den zweiten oder dritten +% Dieses Makro testet, ob ein übergebener Parameter eine Dimension +% ist und führt in Abhängigkeit davon den zweiten oder dritten % Parameter aus. % \begin{macrocode} %<*base> @@ -2448,8 +2486,8 @@ % \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 -% machen, aber das wäre nochmal etwas aufwendiger. Ist das wirklich +% und -punkte erlaubt. Natürlich könnte man es auch wirklich richtig +% machen, aber das wäre nochmal etwas aufwendiger. Ist das wirklich % notwendig? % \begin{macrocode} \newcommand*{\test@posdimen}[1]{% @@ -2470,9 +2508,9 @@ % \end{macrocode} % \begin{macro}{\test@dimunt} % \begin{macro}{\test@trueunt} -% Außer einer Gleitkomma- bzw. Gleitpunktzahl muss auch noch die Einheit +% 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 +% deren "`true"'-Variante zu berücksichtigen. Deshalb wird zuerst ein % eventuelles "`\texttt{true}"' weggeworfen. % \begin{macrocode} \newcommand*{\test@dimunt}{} @@ -2486,9 +2524,9 @@ } % \end{macrocode} % \begin{macro}{\test@@ifdimunt} -% \changes{v3.21}{2016/05/27}{elf bis zwölf Einheiten nicht neun} -% Anschließend wird dann getestet, ob es sich um eine der elf bis zwölf -% üblichen Einheiten handelt. +% \changes{v3.21}{2016/05/27}{elf bis zwölf Einheiten nicht neun} +% Anschließend wird dann getestet, ob es sich um eine der elf bis zwölf +% üblichen Einheiten handelt. % \begin{macrocode} \newcommand*\test@@ifdimunt[1]{% \@tempswafalse @@ -2529,9 +2567,9 @@ % % % \begin{macro}{\ifpdftex} -% \changes{v2.95}{2002/08/19}{neu}^^A +% \changes{v2.95}{2002/08/19}{neu}%^^A % \begin{macro}{\scr@ifpdftex} -% \changes{v2.95}{2002/08/19}{neu (intern)}^^A +% \changes{v2.95}{2002/08/19}{neu (intern)}%^^A % If-then-else-Konstrukt, um zu testen, ob pdf\TeX{} verwendet wird. % \begin{macrocode} %<*base> @@ -2545,7 +2583,7 @@ % \end{macro} % % \begin{macro}{\scr@ifluatex} -% \changes{v3.21}{2016/05/27}{neu (intern)}^^A +% \changes{v3.21}{2016/05/27}{neu (intern)}%^^A % If-the-else-Konstrukt, um zu testen, ob lua\TeX{} verwendet wird. % \begin{macrocode} %<*base> @@ -2555,7 +2593,7 @@ % \end{macro} % % \begin{macro}{\scr@ifpdforluatex} -% \changes{v3.21}{2016/05/27}{neu (intern)}^^A +% \changes{v3.21}{2016/05/27}{neu (intern)}%^^A % If-then-else-Konstrukt, um zu testen, ob pdf\TeX{} oder lua\TeX{} verwendet % wird. % \begin{macrocode} @@ -2568,11 +2606,11 @@ % \end{macro} % % \begin{macro}{\ifVTeX} -% \changes{v2.95}{2002/08/19}{neu}^^A -% \changes{v2.97c}{2007/06/20}{umdefiniert von \cs{ifvtex}} +% \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}^^A -% \changes{v2.97c}{2007/06/20}{umdefiniert von \cs{scr@ifvtex}} +% \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} %<*base> @@ -2584,20 +2622,20 @@ % \end{macro} % % \begin{macro}{\ifpdfoutput} -% \changes{v2.7g}{2001/04/17}{neu}^^A -% \changes{v2.8q}{2001/10/19}{\cs{pdfoutput} wird nicht mehr zu +% \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}^^A -% \changes{v2.8q}{2001/10/19}{Verwendung von \cs{scr@ifpdfoutput}} +% \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 -% \changes{v3.21}{2016/05/27}{lua\TeX{} nach 0.85 berücksichtigt}^^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. +% \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 +% \changes{v3.21}{2016/05/27}{lua\TeX{} nach 0.85 berücksichtigt}%^^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. % \begin{macrocode} %<*base> \newcommand{\scr@ifpdfoutput}{% @@ -2634,12 +2672,12 @@ % \end{macro} % % \begin{macro}{\ifpsoutput} -% \changes{v2.95}{2002/08/21}{neu}^^A +% \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. +% \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} %<*base> \newcommand*{\scr@ifpsoutput}{% @@ -2668,13 +2706,13 @@ % \end{macro} % % \begin{macro}{\ifdvioutput} -% \changes{v2.95}{2002/08/21}{neu}^^A +% \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 -% \changes{v3.23}{2017/02/14}{lua\TeX{} nach 0.85 berücksichtigt}^^A -% If-then-else-Konstrukt, um abhängig davon, ob \texttt{dvi} -% ausgegeben wird oder nicht, Befehle auszuführen. +% \changes{v2.95}{2002/08/21}{neu (intern)}%^^A +% \changes{v2.95}{2004/07/20}{Expandierbarkeit verbessert}%^^A +% \changes{v3.23}{2017/02/14}{lua\TeX{} nach 0.85 berücksichtigt}%^^A +% If-then-else-Konstrukt, um abhängig davon, ob \texttt{dvi} +% ausgegeben wird oder nicht, Befehle auszuführen. % \begin{macrocode} %<*base> \newcommand*{\scr@ifdvioutput}{% @@ -2711,10 +2749,10 @@ % \end{macro} % % \begin{macro}{\scr@smashdp} -% \changes{v2.97c}{2007/09/17}{neu (intern)}^^A -% \changes{v3.02a}{2009/01/23}{\cs{smash} nicht direkt verwenden, weil +% \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 +% Gibt Material aus, erzeugt dabei aber nur Höhe und Breite, jedoch keine % Tiefe. % \begin{macrocode} %<*base> @@ -2734,10 +2772,10 @@ % \end{macro} % % \begin{macro}{\IfRTL} -% \changes{v3.24}{2017/05/04}{neu} +% \changes{v3.24}{2017/05/04}{neu} % Die Anweisung testet, ob wir uns gerade im Von-Rechts-Nach-Links-Modus von % Paketen wie \textsf{bidi} befinden. Ist das der Fall, wird das erste -% Argument ausgeführt, sonst das zweite. +% Argument ausgeführt, sonst das zweite. % \begin{macrocode} %<*base> \newcommand*{\IfRTL}{% @@ -2752,12 +2790,12 @@ } %</base> % \end{macrocode} -% \end{macro}^^A \IfRTL +% \end{macro}%^^A \IfRTL % \begin{macro}{\IfLTR} -% \changes{v3.24}{2017/05/04}{neu} +% \changes{v3.24}{2017/05/04}{neu} % Die Anweisung testet, ob wir uns gerade nicht im % Von-Rechts-Nach-Links-Modus von Paketen wie \textsf{bidi} befinden. Ist -% das der Fall, wird das erste Argument ausgeführt, sonst das zweite. +% das der Fall, wird das erste Argument ausgeführt, sonst das zweite. % \begin{macrocode} %<*base> \newcommand*{\IfLTR}{% @@ -2772,10 +2810,10 @@ } %</base> % \end{macrocode} -% \end{macro}^^A \IfLTR +% \end{macro}%^^A \IfLTR % % \begin{macro}{\PackageInfoNoLine} -% \changes{v2.97d}{2007/10/03}{neu}^^A +% \changes{v2.97d}{2007/10/03}{neu}%^^A % Arbeitet wie \cs{PackageInfo} aber ohne Ausgabe der Zeilennummer. % \begin{macrocode} %<*base> @@ -2787,7 +2825,7 @@ % \end{macro} % % \begin{macro}{\ClassInfoNoLine} -% \changes{v2.98c}{2008/02/15}{neu}^^A +% \changes{v2.98c}{2008/02/15}{neu}%^^A % Arbeitet wie \cs{ClassInfo} aber ohne Ausgabe der Zeilennummer. % \begin{macrocode} %<*base> @@ -2799,10 +2837,10 @@ % \end{macro} % % \begin{macro}{\@removefromreset} -% \changes{v3.15}{2014/11/21}{neue Anweisung, kompatibel mit -% \textsf{remreset} und \textsf{chngcntr}}^^A +% \changes{v3.15}{2014/11/21}{neue Anweisung, kompatibel mit +% \textsf{remreset} und \textsf{chngcntr}}%^^A % Dieser alte Bekannte aus dem Paket \textsf{remreset} wird auch von -% \KOMAScript{} benötigt. Es ist einfacher, ihn selbst zu definieren, als sich +% \KOMAScript{} benötigt. Es ist einfacher, ihn selbst zu definieren, als sich % auf andere Pakete zu verlassen. % \begin{macrocode} %<*base> @@ -2822,9 +2860,10 @@ % % \selectlanguage{english}% % \begin{macro}{\IfActiveMkBoth} -% \changes{v3.26}{2018/09/03}{new}^^A +% \changes{v3.26}{2018/09/03}{new}%^^A % \begin{macro}{\if@scrActiveMkBoth} -% \changes{v3.26}{2018/09/03}{new}^^A +% \changes{v3.26}{2018/09/03}{new}%^^A +% \changes{v3.27}{2019/07/26}{handling for \cs{marks}}%^^A % This command test, whether or not \cs{@mkboth} does change a mark or not. % \begin{macrocode} %<*base> @@ -2838,7 +2877,8 @@ \def\markleft##1{\scr@ActiveMkBothtrue}% \def\markboth##1{\scr@ActiveMkBothtrue}% \def\markdouble##1{\scr@ActiveMkBothtrue}% - \def\mark##1{\scr@ActiveMkBothtrue} + \def\mark##1{\scr@ActiveMkBothtrue}% + \def\marks##1##2{\scr@ActiveMkBothtrue}% \scr@ActiveMkBothfalse \setbox\@tempboxa\vbox{\@mkboth{}{}}% \endgroup @@ -2850,26 +2890,27 @@ } %</base> % \end{macrocode} -% \end{macro}^^A\if@scrActiveMkBoth -% \end{macro}^^A\IfActiveMkBoth +% \end{macro}%^^A\if@scrActiveMkBoth +% \end{macro}%^^A\IfActiveMkBoth % \selectlanguage{ngerman}% % -% \subsection{Definition von KOMA-\textsf{keyval}-Schlüsseln (Hauptteil)} +% \subsection{Definition von KOMA-\textsf{keyval}-Schlüsseln (Hauptteil)} % % \begin{macro}{\FamilyExecuteOptions} -% \changes{v3.00}{2008/04/30}{Neue Anweisung}^^A -% \changes{v3.04b}{2010/01/29}{\cs{edef} durch \cs{protected@edef} ersetzt}^^A -% \changes{v3.04b}{2010/02/02}{\cs{scr@key@atlist} und \cs{scr@key@name}^^A -% vor Überschreiben in \cs{setkeys} geschützt}^^A -% \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}^^A -% verarbeitet}^^A +% \changes{v3.00}{2008/04/30}{Neue Anweisung}%^^A +% \changes{v3.04b}{2010/01/29}{\cs{edef} durch \cs{protected@edef} ersetzt}%^^A +% \changes{v3.04b}{2010/02/02}{\cs{scr@key@atlist} und \cs{scr@key@name}%^^A +% vor Ãœberschreiben in \cs{setkeys} geschützt}%^^A +% \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}%^^A +% verarbeitet}%^^A % \begin{macro}{\@FamilyExecuteOptions} -% \changes{v3.14}{2014/10/17}{Neue streng interne Anweisung}^^A -% \changes{v3.23}{2017/02/16}{Korrektur: Haken danach verwendet die Familie -% statt des Mitglieds}^^A +% \changes{v3.14}{2014/10/17}{Neue streng interne Anweisung}%^^A +% \changes{v3.23}{2017/02/16}{Korrektur: Haken danach verwendet die Familie +% statt des Mitglieds}%^^A +% \changes{v3.27}{2019/10/02}{Fehlermeldungen verbessert}%^^A % Entspriche \cs{ExecuteOptions} jedoch \textsf{keyval}-Optionen. Insbesondere % ist die Anweisung reentrant! Es ist jedoch zu beachten, dass der hook lokal % zum jeweiligen Aufruf ist. @@ -2898,11 +2939,11 @@ \scr@ifundefinedorrelax{KV@#2@\scr@key@name}{% \scr@ifundefinedorrelax{KV@#2#1@\scr@key@name}{% % \end{macrocode} -% \changes{v3.20}{2015/11/18}{Besondere Behandlung der -% \texttt{@else@}-Option}^^A +% \changes{v3.20}{2015/11/18}{Besondere Behandlung der +% \texttt{@else@}-Option}%^^A % Es existiert zwar weder eine Familienoption noch eine Mitgliedsoption, aber % vielleicht existiert ja die Spezialoption \texttt{@else@}, die in einem -% solchen Fall die eigentliche Option als Wert erhält. +% solchen Fall die eigentliche Option als Wert erhält. % \begin{macrocode} \scr@ifundefinedorrelax{KV@#2#1@@else@}{% \PackageError{scrbase}{% @@ -2922,12 +2963,15 @@ % \end{macrocode} % Im Gegensatz zu anderen Optionen bedeuten bei der \texttt{@else@}-Option % alle von \cs{FamilyKeyStateProcessed} abweichenden Ergebnisse, dass die -% Option nicht korrekt verarbeitet werden konnte und deshalb die ursprüngliche +% Option nicht korrekt verarbeitet werden konnte und deshalb die ursprüngliche % Option als Fehler zu melden ist. % \begin{macrocode} \ifx\FamilyKeyState\FamilyKeyStateProcessed\else \PackageError{scrbase}{% unknown option + \ifx\FamilyKeyState\FamilyKeyStateUnknownValue + value at + \fi `\expandafter\detokenize\expandafter{\scr@key@atlist}'% }{% Member `#1' of family `#2'\MessageBreak @@ -2947,12 +2991,12 @@ \scr@execute@option{#2}% \ifstr{#1}{}{}{% % \end{macrocode} -% \changes{v3.20}{2015/11/18}{Memberoptionstest nach Familyoptionsausführung -% korrigiert}^^A -% Auch wenn eine Familienoption ausgeführt wurde, muss eine existierende -% Mitgliederoption ggf. noch ausgeführt werden. Existiert sie nicht, wird -% ebenfalls eine existierende \texttt{@else@}-Option ausgeführt. Allerdings -% führen in diesem Fall von \cs{FamilyKeyStateProcessed} abweichende +% \changes{v3.20}{2015/11/18}{Memberoptionstest nach Familyoptionsausführung +% korrigiert}%^^A +% Auch wenn eine Familienoption ausgeführt wurde, muss eine existierende +% Mitgliederoption ggf. noch ausgeführt werden. Existiert sie nicht, wird +% ebenfalls eine existierende \texttt{@else@}-Option ausgeführt. Allerdings +% führen in diesem Fall von \cs{FamilyKeyStateProcessed} abweichende % Ergebnisse nicht zu einer Fehlermeldung. % \begin{macrocode} \scr@ifundefinedorrelax{KV@#2#1@\scr@key@name}{% @@ -2978,21 +3022,25 @@ %</base> % \end{macrocode} % \begin{macro}{\scr@show@key@state@error} -% \changes{v3.12}{2013/03/04}{Neue Anweisung (intern)}% -% Zeige abhängig von \cs{FamilyKeyState} eine Fehlermeldung. Alle -% Informationen zu dem Fehler müssen in \cs{FamilyMemberOfKey} +% \changes{v3.12}{2013/03/04}{Neue Anweisung (intern)}%^^A +% \changes{v3.27}{2019/10/02}{Fehlermeldungen verbessert}%^^A +% Zeige abhängig von \cs{FamilyKeyState} eine Fehlermeldung. Alle +% Informationen zu dem Fehler müssen in \cs{FamilyMemberOfKey} % (Familienmitglied oder \cs{@empty}), \cs{FamilyOfKey} (Familie oder % \cs{@empty}), \cs{scr@key@atlist} (Option, wie sie in der Liste stand), % \cs{scr@key@name} (Name der Option) und \cs{scr@key@value} (Wert der % Option) stehen. Es ist zu beachten, dass \cs{scr@key@atlist} und -% \cs{scr@key@value} ebenfalls Macros enthalten können. Deshalb werden diese -% Werte ggf. über \cs{detokenize} ausgegeben. +% \cs{scr@key@value} ebenfalls Macros enthalten können. Deshalb werden diese +% Werte ggf. über \cs{detokenize} ausgegeben. % \begin{macrocode} %<*base> \newcommand*{\scr@show@key@state@error}{% \ifx\FamilyKeyState\FamilyKeyStateProcessed\else \PackageError{scrbase}{% unknown option + \ifx\FamilyKeyState\FamilyKeyStateUnknownValue + value at + \fi `\expandafter\detokenize\expandafter{\scr@key@atlist}'% }{% Option @@ -3020,16 +3068,16 @@ } %</base> % \end{macrocode} -% \end{macro}^^A \scr@show@key@state@error -% \end{macro}^^A \@FamilyExecuteOptions -% \end{macro}^^A \FamilyExecuteOptions +% \end{macro}%^^A \scr@show@key@state@error +% \end{macro}%^^A \@FamilyExecuteOptions +% \end{macro}%^^A \FamilyExecuteOptions % % \begin{macro}{\KOMAExecuteOptions} -% \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}^^A -% Liste von Optionen für ein Mitglied der Familie \texttt{KOMA} ausführen. +% \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}%^^A +% Liste von Optionen für ein Mitglied der Familie \texttt{KOMA} ausführen. % \begin{macrocode} %<*koma> \newcommand*{\KOMAExecuteOptions}[1][.\@currname.\@currext]{% @@ -3040,21 +3088,22 @@ % \end{macro} % % \begin{macro}{\FamilyOptions} -% \changes{v3.00}{2008/04/30}{Neue Anweisung}^^A -% \changes{v3.12}{2013/03/02}{Neue Implementierung}^^A -% \changes{v3.12}{2013/03/02}{\cs{scr@after@options@\#1@hook}}^^A -% \changes{v3.14}{2014/10/17}{zweites Argument wird \cs{long} behandelt}^^A +% \changes{v3.00}{2008/04/30}{Neue Anweisung}%^^A +% \changes{v3.12}{2013/03/02}{Neue Implementierung}%^^A +% \changes{v3.12}{2013/03/02}{\cs{scr@after@options@\#1@hook}}%^^A +% \changes{v3.14}{2014/10/17}{zweites Argument wird \cs{long} behandelt}%^^A % \begin{macro}{\@FamilyOptions} -% \changes{v3.14}[2014/10/17]{Neue streng interne Anweisung}^^A +% \changes{v3.14}[2014/10/17]{Neue streng interne Anweisung}%^^A +% \changes{v3.27}{2019/10/02}{Fehlermeldungen verbessert}%^^A % \begin{macro}{\Family@Options} -% \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, -% oder ist der Wert für alle Schlüssel unbekannt, so wird ein Fehler -% ausgegeben. Diese Anweisung selbst ist reentrant, das heißt sie kann auch -% innerhalb der Ausführung von Optionen aufgerufen werden. Es sei jedoch -% erwähnt, dass der hook dabei nur die jeweilige Anweisung umfasst. +% \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, +% oder ist der Wert für alle Schlüssel unbekannt, so wird ein Fehler +% ausgegeben. Diese Anweisung selbst ist reentrant, das heißt sie kann auch +% innerhalb der Ausführung von Optionen aufgerufen werden. Es sei jedoch +% erwähnt, dass der hook dabei nur die jeweilige Anweisung umfasst. % \begin{macrocode} %<*base> \newcommand{\FamilyOptions}[1]{\@FamilyOptions{#1}} @@ -3072,23 +3121,23 @@ }% }% % \end{macrocode} -% \changes{v3.23}{2017/02/16}{neuer Haken für \cs{AtEndOfFamilyOptions*}}^^A +% \changes{v3.23}{2017/02/16}{neuer Haken für \cs{AtEndOfFamilyOptions*}}%^^A % Seit Version 3.23 wird hier auch der neuen Haken vor -% \cs{AtEndOfFamilyOptions*} initialisiert. Zunächst findet eine Art +% \cs{AtEndOfFamilyOptions*} initialisiert. Zunächst findet eine Art % Vorinitialisierung statt, bei der der Haken lediglich leer definiert wird, -% falls er noch nicht existiert. Falls er nämlich existiert, kann an einem +% falls er noch nicht existiert. Falls er nämlich existiert, kann an einem % leeren Haken die oberste Ebene erkannt werden. % \begin{macrocode} \scr@ifundefinedorrelax{scr@after@options@#1@hook@topmost}{% \@namedef{scr@after@options@#1@hook@topmost}{}% }{}% % \end{macrocode} -% Dann wird an einem leeren Haken die oberste Ausführungsebene erkennt. In -% diesem Fall wird zum einen die Ausführung des Hakens in den normalen +% Dann wird an einem leeren Haken die oberste Ausführungsebene erkennt. In +% diesem Fall wird zum einen die Ausführung des Hakens in den normalen % Ebenen-Haken (das ist dann automatische der oberste Ebenen-Haken) -% eingehängt und zum anderen der Haken selbst so initialisiert, dass er sich -% bei seiner Ausführung als erstes selbst löscht. Gleichzeitig ist der Haken -% selbst dadurch nicht mehr leer, so dass sich tiefere Ebenen von der höchsten +% eingehängt und zum anderen der Haken selbst so initialisiert, dass er sich +% bei seiner Ausführung als erstes selbst löscht. Gleichzeitig ist der Haken +% selbst dadurch nicht mehr leer, so dass sich tiefere Ebenen von der höchsten % eindeutig unterscheiden. % \begin{macrocode} \expandafter\ifx\csname scr@after@options@#1@hook@topmost\endcsname\@empty @@ -3103,54 +3152,83 @@ % \begin{description} % \item[Anmerkung:] Es wird nicht auf \textsf{xkeyval} und den dortigen Befehl % \cs{setkeys+} gesetzt, weil dieser die Optionen nicht in der Reihenfolge -% der Optionen, sondern in der Reihenfolge der Familien ausführt. Das passt +% der Optionen, sondern in der Reihenfolge der Familien ausführt. Das passt % mir aber hier gar nicht. % \end{description} -% In einer Schleife über alle Optionen werden die Optionen zunächst in Option +% In einer Schleife über alle Optionen werden die Optionen zunächst in Option % und Wert aufgespaltet. % \begin{macrocode} \@for\scr@key@atlist:=#2\do{% % \end{macrocode} -% \changes{v3.08}{2010/11/05}{leere Argumente in der Optionenliste}% -% Auf vielfachen Wunsch und entgegen meiner Überzeugung, sind auch leere -% Argumente in der Optionenliste erlaubt. Die erste Form wäre, wenn zwei +% \changes{v3.08}{2010/11/05}{leere Argumente in der Optionenliste}% +% Auf vielfachen Wunsch und entgegen meiner Ãœberzeugung, sind auch leere +% Argumente in der Optionenliste erlaubt. Die erste Form wäre, wenn zwei % Kommas diret aufeinander folgen: % \begin{macrocode} \ifx\scr@key@atlist\@empty\else % \end{macrocode} -% Die zweite Möglichkeit wäre, dass noch Leerzeichen zwischen den Komma -% übrig bleiben: +% Die zweite Möglichkeit wäre, dass noch Leerzeichen zwischen den Komma +% übrig bleiben: % \begin{macrocode} \ifx\scr@key@atlist\space\else \expandafter\scr@key@split@name@value\scr@key@atlist==\@nil % \end{macrocode} -% Die dritte Möglichkeit, dass auch noch ein Gleichheitszeichen übrig -% gelassen wurde, werde ich aber nicht abfangen. Irgendwann müssen die +% Die dritte Möglichkeit, dass auch noch ein Gleichheitszeichen übrig +% gelassen wurde, werde ich aber nicht abfangen. Irgendwann müssen die % Anwender auch mal ihre Fehler einsehen und korrigieren! % -% Wir haben jetzt also eine Option und diese aufgespaltet in Schlüssel und +% Wir haben jetzt also eine Option und diese aufgespaltet in Schlüssel und % Wert. -% \changes{v3.12}{2013/03/04}{der Gesamtstatus wird gespeichert}^^A +% \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 +% 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 -% Werten, enthält er Fehler, die zu melden sind. +% Werten, enthält er Fehler, die zu melden sind. % \begin{macrocode} \let\scr@key@run@errors\@empty % \end{macrocode} -% -% \changes{v3.04b}{2010/01/29}{\cs{edef} durch \cs{protected@edef} ersetzt} -% \changes{v3.09a}{2011/06/07}{weniger Expansion durch sinnvollen Gebrauch +% \changes{v3.04b}{2010/01/29}{\cs{edef} durch \cs{protected@edef} ersetzt} +% \changes{v3.09a}{2011/06/07}{weniger Expansion durch sinnvollen Gebrauch % von \cs{unexpanded}} -% Dann wird in einer Schleife über alle Familien festgestellt, ob die Option -% in einer Familie bekannt ist und ggf. ausgeführt. Hier ist wichtig, dass -% keines der internen Macros vom Aufruf verändert wird. Außerdem muss der -% Status und die daraus resultierenden Meldungen aufgesammelt werden. +% Dann wird in einer Schleife über alle Familienmitglieder festgestellt, ob +% die Option bei einem Mitglied bekannt ist und ggf. ausgeführt. Hier ist +% wichtig, dass keines der internen Macros vom Aufruf verändert wird. Außerdem +% muss der Status und die daraus resultierenden Meldungen aufgesammelt +% werden. Hilfreich ist, dass \cs{\meta{Familie}@key@familylist} eine Liste +% aus Familie + Mitglied ist und nicht nur aus dem Namen der Mitglieder. +% \changes{v3.27}{2019/07/19}{Fix: Familienoptionen werden zuerst +% ausgeführt}%^^A % \begin{macrocode} \scr@key@found@false - \edef\reserved@a{\csname #1@key@familylist\endcsname}% + \edef\reserved@a{#1,\csname #1@key@familylist\endcsname}% \@for\reserved@a:=\reserved@a\do{% - \scr@ifundefinedorrelax{KV@\reserved@a @\scr@key@name}{}{% + \scr@ifundefinedorrelax{KV@\reserved@a @\scr@key@name}{% +% \end{macrocode} +% \changes{v3.27}{2019/07/19}{Behandlung für \texttt{@else@}-Optionen}%^^A +% Wenn das Familiemitglied keine entsprechende Option besitzt, kann es noch +% immer eine \texttt{@else@}-Option besitzen. In diesem Fall wird selbige +% ausgeführt. Die Ausführung hat aber nur dann Einfluss auf den +% Fehlerspeicher, wenn sie erfolgreich war. In diesem Fall wird der +% Fehlerspeicher gelöscht. Ausnahme ist, wenn das aktuelle Mitglied die +% Familie selbst ist. In diesem Fall wird die \texttt{@else@}-Option nicht +% hier ausgeführt. Das erledigen wir später und nur in dem Fall, dass +% tatsächlich kein Mitglied eine solche Option oder eine +% \texttt{@else@}-Option hatte. +% \begin{macrocode} + \ifstr{\reserved@a}{#1}{}{% + \scr@ifundefinedorrelax{KV@\reserved@a @@else@}{}{% + \expandafter\scr@execute@elseoption\expandafter{\reserved@a}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \scr@key@found@true + \let\scr@key@run@errors\relax + \fi + }% + }% + }{% +% \end{macrocode} +% Wurde hingegen eine Option für ein Familienmitglied gefunden, so wird sie +% ausgeführt und bei Bedarf der Fehlerspeicher angepasst. +% \begin{macrocode} \expandafter\scr@execute@option\expandafter{\reserved@a}% \scr@key@found@true \ifx\scr@key@run@errors\relax\else @@ -3161,21 +3239,21 @@ \edef\scr@key@run@errors{% \unexpanded\expandafter{\scr@key@run@errors}% \noexpand\MessageBreak - \FamilyMemberOfKey: unkown value - `\expandafter\detokenize\expandafter{\scr@key@value}'.% + \space\space- `\FamilyMemberOfKey': unkown value + `\expandafter\detokenize\expandafter{\scr@key@value}'% }% \else \ifx\FamilyKeyState\FamilyKeyStateNeedValue \edef\scr@key@run@errors{% \unexpanded\expandafter{\scr@key@run@errors}% \noexpand\MessageBreak - \FamilyMemberOfKey: value expected. + \space\space- `\FamilyMemberOfKey': value expected }% \else \edef\scr@key@run@errors{% \unexpanded\expandafter{\scr@key@run@errors}% \noexpand\MessageBreak - \FamilyMemberOfKey: \FamilyKeyState. + \space\space- `\FamilyMemberOfKey': \FamilyKeyState }% \fi \fi @@ -3186,35 +3264,93 @@ \ifscr@key@found@ \ifx\scr@key@run@errors\relax\else \ifx\scr@key@run@errors\@empty\else + \scr@ifundefinedorrelax{KV@#1@@else@}{% + \PackageError{scrbase}{% + unknown option + `\expandafter\detokenize\expandafter{\scr@key@atlist}'% + }{% + The members of family `#1' cannot set option + `\scr@key@name' + \ifx\scr@key@value\@empty\else + \MessageBreak + to value + `\expandafter\detokenize\expandafter{\scr@key@value}'% + \fi.\MessageBreak + Here's what each member says: + \scr@key@run@errors\MessageBreak + o\expandafter\@gobble + }% + }{% + \scr@execute@elseoption{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \PackageInfo{scrbase}{% + option + `\expandafter\detokenize\expandafter{\scr@key@atlist}'% + \MessageBreak + processed by `@else@' option of family\MessageBreak + `#1', after the members said: + \scr@key@run@errors\MessageBreak + o\expandafter\@gobble + }% + \let\scr@key@run@errors\relax + \else + \PackageError{scrbase}{% + unknown option + \ifx\FamilyKeyState\FamilyKeyStateUnknownValue + value at + \fi + `\expandafter\detokenize\expandafter{\scr@key@atlist}'% + }{% + The members of family `#1' cannot set option + `\scr@key@name' + \ifx\scr@key@value\@empty\else + \MessageBreak + to value + `\expandafter\detokenize\expandafter{\scr@key@value}'% + \fi.\MessageBreak + Here's what each member says: + \scr@key@run@errors\MessageBreak + o\expandafter\@gobble + }% + \fi + }% + \fi + \fi + \else + \scr@ifundefinedorrelax{KV@#1@@else@}{% + \PackageError{scrbase}{% + unknown option + `\expandafter\detokenize\expandafter{\scr@key@atlist}'% + }{% + No one of the members of family `#1'\MessageBreak + can handle option `\scr@key@name'.\MessageBreak + So it cannot be set% + \ifx\scr@key@value\@empty\else + \space to value + `\expandafter\detokenize\expandafter{\scr@key@value}'% + \fi.% + }% + }{% + \scr@execute@elseoption{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \else \PackageError{scrbase}{% unknown option + \ifx\FamilyKeyState\FamilyKeyStateUnknownValue + value at + \fi `\expandafter\detokenize\expandafter{\scr@key@atlist}'% }{% - The members of family `#1' cannot set option - `\scr@key@name' + No one of the members of family `#1'\MessageBreak + can handle option `\scr@key@name'.\MessageBreak + So it cannot be set% \ifx\scr@key@value\@empty\else - \MessageBreak - to value + \space to value `\expandafter\detokenize\expandafter{\scr@key@value}'% - \fi.\MessageBreak - Here's what each member says: - \scr@key@run@errors + \fi.% }% \fi - \fi - \else - \PackageError{scrbase}{% - unknown option - `\expandafter\detokenize\expandafter{\scr@key@atlist}'% - }{% - No one of the members of family `#1'\MessageBreak - can handle option `\scr@key@name'.\MessageBreak - So it cannot be set% - \ifx\scr@key@value\@empty\else - \space to value - `\expandafter\detokenize\expandafter{\scr@key@value}'% - \fi.% - }% + }% \fi \fi \fi @@ -3223,15 +3359,15 @@ } % \end{macrocode} % \begin{macro}{\scr@execute@option} -% \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 -% \changes{v3.13a}{2014/08/13}{Leerzeichen durch fehlendes Prozentzeichen -% beseitigt}^^A -% \changes{v3.23}{2017/02/16}{den \cs{AtEndOfFamilyOptions} Haken hier zu -% sichern nützt nichts}^^A -% Es wird die bereits gesplittete Option ausgeführt, ohne dass die dabei -% wesentlichen Macros (aber nicht \cs{reserved@a}!) verändert werden. Das +% \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 +% \changes{v3.13a}{2014/08/13}{Leerzeichen durch fehlendes Prozentzeichen +% beseitigt}%^^A +% \changes{v3.23}{2017/02/16}{den \cs{AtEndOfFamilyOptions} Haken hier zu +% sichern nützt nichts}%^^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. % \begin{macrocode} \newcommand*{\scr@execute@option}[1]{% @@ -3275,7 +3411,7 @@ } % \end{macrocode} % \begin{macro}{\scr@KV@err} -% \changes{v3.12a}{2013/03/04}{missing internal command added}^^A +% \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]{% @@ -3284,33 +3420,34 @@ % \end{macrocode} % \end{macro} % \begin{macro}{\scr@key@run@errors} -% \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 +% \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 % Wiederherstellung korrekt funktioniert. % \begin{macrocode} \newcommand*{\scr@key@run@errors}{} % \end{macrocode} -% \end{macro}^^A \scr@key@run@errors} -% \end{macro}^^A \scr@execute@option +% \end{macro}%^^A \scr@key@run@errors} +% \end{macro}%^^A \scr@execute@option % \begin{macro}{\scr@execute@elseoption} -% \changes{v3.20}{2015/11/18}{neu (intern)}^^A -% \changes{v3.25}{2017/11/16}{Gruppe eingefügt}^^A +% \changes{v3.20}{2015/11/18}{neu (intern)}%^^A +% \changes{v3.25}{2017/11/16}{Gruppe eingefügt}%^^A % \changes{v3.25}{2017/11/16}{\cs{scr@key@name@else} und -% \cs{scr@key@value@else} neu}^^A +% \cs{scr@key@value@else} neu}%^^A +% \changes{v3.27}{2019/03/10}{missing percent added to avoid spaces}%^^A % Ist eine Spezialoption mit dem Namen \texttt{@else@} definiert, so wird -% diese von \cs{FamilyExecuteOptions} genau dann ausgeführt, wenn keine -% passende Option gefunden wurde. Dafür dient dieses Makro, dessen Argumente +% diese von \cs{FamilyExecuteOptions} genau dann ausgeführt, wenn keine +% passende Option gefunden wurde. Dafür dient dieses Makro, dessen Argumente % und Aufrufstatus genau \cs{scr@execute@option} entspricht. Es soll auch -% genau dasselbe tun, außer dass es nicht die Option selbst aufruft, sondern -% die Option als Wert an die \texttt{@else@}-Option übergibt. Es muss also -% temporär \cs{scr@key@atlist}, \cs{scr@key@name} und \cs{scr@key@value} -% geändert werden, bevor \cs{scr@execute@option} ausgeführt wird. Da +% genau dasselbe tun, außer dass es nicht die Option selbst aufruft, sondern +% die Option als Wert an die \texttt{@else@}-Option übergibt. Es muss also +% temporär \cs{scr@key@atlist}, \cs{scr@key@name} und \cs{scr@key@value} +% geändert werden, bevor \cs{scr@execute@option} ausgeführt wird. Da % allerdings die Originalwerte ggf. von der \texttt{@else@}-Option ausgewertet % werden sollen, wird das originale \cs{scr@key@atlist} zum Wert der % \texttt{@else@}-Option. Damit diese nicht erneut aufgespaltet werden muss, -% werden die originalen \cs{scr@key@name} und \cs{scr@key@value} zusätzlich in +% werden die originalen \cs{scr@key@name} und \cs{scr@key@value} zusätzlich in % \cs{scr@key@name@else} und \cs{scr@key@value@else} gespeichert. % \begin{macrocode} \newcommand*{\scr@execute@elseoption}[1]{% @@ -3339,7 +3476,7 @@ \noexpand\def\noexpand\scr@key@name@else{% \unexpanded\expandafter{\scr@key@name@else}% }% - } + }% \scr@ifundefinedorrelax{scr@key@value@else}{% \unexpanded{\let\scr@key@value@else\relax}% }{% @@ -3350,27 +3487,27 @@ }\reserved@a } % \end{macrocode} -% \end{macro}^^A \scr@execute@elseoption +% \end{macro}%^^A \scr@execute@elseoption % \begin{macro}{\ifscr@key@found@} -% \changes{v2.97c}{2007/04/19}{Neuer Schalter (intern)}^^A -% \changes{v3.00}{2008/04/30}{umbenannt von \cs{ifKOMA@key@found}}^^A +% \changes{v2.97c}{2007/04/19}{Neuer Schalter (intern)}%^^A +% \changes{v3.00}{2008/04/30}{umbenannt von \cs{ifKOMA@key@found}}%^^A % \begin{macro}{\scr@key@atlist} -% \changes{v2.97c}{2007/04/19}{Neues Makro (intern)}^^A -% \changes{v3.00}{2008/04/30}{umbenannt von \cs{KOMA@key@atlist}}^^A +% \changes{v2.97c}{2007/04/19}{Neues Makro (intern)}%^^A +% \changes{v3.00}{2008/04/30}{umbenannt von \cs{KOMA@key@atlist}}%^^A % \begin{macro}{\scr@key@name} -% \changes{v2.97c}{2007/04/19}{Neues Makro (intern)}^^A -% \changes{v3.00}{2008/04/30}{umbenannt von \cs{KOMA@key@name}}^^A +% \changes{v2.97c}{2007/04/19}{Neues Makro (intern)}%^^A +% \changes{v3.00}{2008/04/30}{umbenannt von \cs{KOMA@key@name}}%^^A % \begin{macro}{\scr@key@value} -% \changes{v2.97c}{2007/04/19}{Neues Makro (intern)}^^A -% \changes{v3.00}{2008/04/30}{umbenannt von \cs{KOMA@key@value}}^^A +% \changes{v2.97c}{2007/04/19}{Neues Makro (intern)}%^^A +% \changes{v3.00}{2008/04/30}{umbenannt von \cs{KOMA@key@value}}%^^A % \begin{macro}{\scr@key@split@name@value} -% \changes{v2.97c}{2007/04/19}{Neues Makro (intern)}^^A +% \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}^^A -% \changes{v3.00}{2008/04/30}{umbenannt von \cs{KOMA@key@split@name@value}}^^A -% \changes{v3.13}{2014/10/17}{\cs{long}}^^A +% Leerzeichen}%^^A +% \changes{v3.00}{2008/04/30}{umbenannt von \cs{KOMA@key@split@name@value}}%^^A +% \changes{v3.13}{2014/10/17}{\cs{long}}%^^A % \changes{v3.26}{2018/08/29}{Verwendung von \cs{scr@sp@def} statt -% \cs{KV@@sp@def}}^^A +% \cs{KV@@sp@def}}%^^A % \begin{macrocode} \newif\ifscr@key@found@ \newcommand*{\scr@key@atlist}{} @@ -3383,30 +3520,30 @@ } %</base> % \end{macrocode} -% \end{macro}^^A \scr@key@split@name@value -% \end{macro}^^A \scr@key@value -% \end{macro}^^A \scr@key@name -% \end{macro}^^A \scr@key@atlist -% \end{macro}^^A \@FamilyOptions -% \end{macro}^^A \FamilyOptions +% \end{macro}%^^A \scr@key@split@name@value +% \end{macro}%^^A \scr@key@value +% \end{macro}%^^A \scr@key@name +% \end{macro}%^^A \scr@key@atlist +% \end{macro}%^^A \@FamilyOptions +% \end{macro}%^^A \FamilyOptions % % \begin{macro}{\FamilyOption} -% \changes{v3.00}{2008/04/30}{Neue Anweisung}^^A -% \changes{v3.26b}{2019/01/09}{Tyischen Fehler abgefangen}^^A +% \changes{v3.00}{2008/04/30}{Neue Anweisung}%^^A +% \changes{v3.26b}{2019/01/09}{Tyischen Fehler abgefangen}%^^A % \begin{macro}{\@FamilyOptions} -% \changes{v3.14}[2014/10/17]{Neue streng interne Anweisung}^^A +% \changes{v3.14}[2014/10/17]{Neue streng interne Anweisung}%^^A % \changes{v3.26}{2018/08/29}{Verwendung von \cs{scr@sp@def} statt -% \cs{KV@@sp@def}}^^A +% \cs{KV@@sp@def}}%^^A % \begin{macro}{\Family@Option} -% \changes{v3.00}{2008/04/30}{Neu (intern)}^^A -% \changes{v3.12}{2013/03/04}{entfernt}^^A +% \changes{v3.00}{2008/04/30}{Neu (intern)}%^^A +% \changes{v3.12}{2013/03/04}{entfernt}%^^A % \end{macro} % \changes{v3.04b}{2010/01/29}{\cs{edef} durch \cs{protected@edef} ersetzt} % Im Gegensatz zu \cs{FamilyOptions} kann man mit dieser Anweisung nur eine -% einzige Option setzen. Dafür kann man gleich mehrere durch Komma getrennte -% Argumente für diese Option setzen. Das erste obligatorische Argument ist +% einzige Option setzen. Dafür kann man gleich mehrere durch Komma getrennte +% Argumente für diese Option setzen. Das erste obligatorische Argument ist % wieder die Familie, das zweite obligatorische Argument ist die Option, das -% dritte, obligatorische Argument ist die Liste der Werte für diese Option. +% dritte, obligatorische Argument ist die Liste der Werte für diese Option. % \begin{macrocode} %<*base> \newcommand*{\FamilyOption}[2]{% @@ -3458,18 +3595,18 @@ \expandafter\scr@sp@def\expandafter\scr@key@name\expandafter{#2}% % \end{macrocode} % Der einfachste Weg ist nun schlicht, die Liste der Werte durchzugehen und so -% nach und nach eine Liste von Werten für \cs{FamilyOptions} zu erzeugen. +% nach und nach eine Liste von Werten für \cs{FamilyOptions} zu erzeugen. % \begin{macrocode} \let\reserved@a\@empty \@for\reserved@b:=#3\do{% % \end{macrocode} -% \changes{v3.08}{2010/11/05}{leere Argumente in der Werteliste}^^A -% Auf vielfachen Wunsch und entgegen meiner Überzeugung, sind auch leere +% \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}^^A +% \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 @@ -3488,30 +3625,30 @@ % \end{macro} % % \begin{macro}{\KOMAoptions} -% \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 +% \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. +% Simple kleine Abkürzung. % \begin{macrocode} %<*koma> \newcommand*{\KOMAoptions}{\FamilyOptions{KOMA}} %</koma> % \end{macrocode} % \begin{macro}{\KOMA@options} -% \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 +% \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 +% \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 +% 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. +% KOMA-Script-Klasse einschließlich Dateiendung. % \begin{macrocode} %<*koma> \newcommand*{\KOMAoptionsOf}[2][\@firstofone]{% @@ -3529,16 +3666,16 @@ } %</koma> % \end{macrocode} -% \end{macro}^^A \KOMAoptionsOf +% \end{macro}%^^A \KOMAoptionsOf % % \begin{macro}{\KOMAoptionOf} -% \changes{v3.17}{2015/02/26}{neue Anweisung}^^A +% \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 +% 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 +% KOMA-Script-Klasse einschließlich Dateiendung, das dritte (nicht optionale % Argument) ist der Name der Option, die abgefragt werden soll. % \begin{macrocode} %<*koma> @@ -3565,30 +3702,30 @@ % \end{macro} % % \begin{macro}{\post@kopt@hook} -% \changes{v3.12}{2013/03/04}{entfernt}^^A -% \end{macro}^^A \post@kopt@hook +% \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}}^^A -% \changes{v3.23}{2017/02/16}{kein \cs{let}}^^A -% Eine Option kann dafür sorgen, dass nach den Optionen noch etwas passiert. +% \changes{v3.12}{2013/03/04}{Verwendung von \cs{AtEndOfFamilyOptions}}%^^A +% \changes{v3.23}{2017/02/16}{kein \cs{let}}%^^A +% Eine Option kann dafür sorgen, dass nach den Optionen noch etwas passiert. % \begin{macrocode} %<*koma> \newcommand*{\AfterKOMAoptions}{\AtEndOfFamilyOptions} %</koma> % \end{macrocode} -% \end{macro}^^A \AfterKOMAoptions +% \end{macro}%^^A \AfterKOMAoptions % % \begin{macro}{\l@addto@macro} -% \changes{v2.8p}{2001/09/22}{neu (intern)} -% 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}^^A -% verhält} -% \changes{v3.12}{2013/04/20}{veraltete \eTeX-freie Version entfernt}^^A -% \changes{v3.12}{2013/04/20}{Warnung, falls eine inkompatible Definition +% \changes{v2.8p}{2001/09/22}{neu (intern)} +% 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}%^^A +% verhält} +% \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} -% \changes{v3.23}{2017/02/16}{in den Optionen-Teil verschoben}^^A +% \changes{v3.23}{2017/02/16}{in den Optionen-Teil verschoben}%^^A % \begin{macrocode} %</body> %<*base&prepare> @@ -3623,13 +3760,13 @@ %</base&prepare> %<*body> % \end{macrocode} -% \end{macro}^^A \l@addto@macro +% \end{macro}%^^A \l@addto@macro % % \begin{macro}{\l@addto@macro@a} -% \changes{v3.20}{2015/11/20}{neu (intern)} -% So eine ähnliche Anweisung benötige ich außerdem für den Fall, dass eine +% \changes{v3.20}{2015/11/20}{neu (intern)} +% So eine ähnliche Anweisung benötige ich außerdem für den Fall, dass eine % Anweisung erweitert werden soll, die genau ein obligatorisches Argument -% benötigt. Achtung! Diese Anweisung funktioniert deutlich weniger allgemein +% benötigt. Achtung! Diese Anweisung funktioniert deutlich weniger allgemein % als \cs{l@addto@macro} und wird deshalb nie offiziell dokumentiert! % \begin{macrocode} %<*base> @@ -3665,12 +3802,12 @@ \endgroup %</base> % \end{macrocode} -% \end{macro}^^A \l@addto@macro@a +% \end{macro}%^^A \l@addto@macro@a % % \begin{macro}{\l@preto@macro} -% \changes{v3.20}{2015/11/25}{neu (intern)}^^A +% \changes{v3.20}{2015/11/25}{neu (intern)}%^^A % In gewisser Weise das gleiche wie \cs{l@appto@macro}, allerdings wird vorn -% statt hinten angefügt. +% statt hinten angefügt. % \begin{macrocode} %<*base> \newcommand\l@preto@macro[2]{% @@ -3678,13 +3815,13 @@ }% %</base> % \end{macrocode} -% \end{macro}^^A \l@preto@macro +% \end{macro}%^^A \l@preto@macro % % \begin{macro}{\l@preto@macro@a} -% \changes{v3.20}{2015/11/25}{neu (intern)} -% So eine ähnliche Anweisung benötige ich außerdem für den Fall, dass eine +% \changes{v3.20}{2015/11/25}{neu (intern)} +% So eine ähnliche Anweisung benötige ich außerdem für den Fall, dass eine % Anweisung erweitert werden soll, die genau ein obligatorisches Argument -% benötigt. Achtung! Diese Anweisung funktioniert deutlich weniger allgemein +% benötigt. Achtung! Diese Anweisung funktioniert deutlich weniger allgemein % als \cs{l@preto@macro} und wird deshalb nie offiziell dokumentiert! % \begin{macrocode} %<*base> @@ -3720,11 +3857,11 @@ \endgroup %</base> % \end{macrocode} -% \end{macro}^^A \l@preto@macro@a +% \end{macro}%^^A \l@preto@macro@a % % \begin{macro}{\KOMAoption} -% \changes{v2.98c}{2008/03/12}{Neue Anweisung}^^A -% \changes{v3.12}{2013/03/04}{Einfacher Aufruf von \cs{FamilyOption}} +% \changes{v2.98c}{2008/03/12}{Neue Anweisung}%^^A +% \changes{v3.12}{2013/03/04}{Einfacher Aufruf von \cs{FamilyOption}} % \begin{macrocode} %<*koma> \newcommand*{\KOMAoption}{\FamilyOption{KOMA}} @@ -3733,13 +3870,13 @@ % \end{macro} % % \begin{macro}{\FamilyUnknownKeyValue} -% \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 -% \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, -% das dritte der Wert und das vierte die Liste der möglichen Werte. +% \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 +% \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, +% das dritte der Wert und das vierte die Liste der möglichen Werte. % \begin{macrocode} %<*base> \newcommand{\FamilyUnknownKeyValue}[4]{% @@ -3757,9 +3894,9 @@ %</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 -% Diese Anweisung konnte ursprünglich vor dem Setzen eines Wertes definiert +% \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} % wird die Anweisung automatisch zu \cs{@empty}. Seit Version~3.12 wird @@ -3769,15 +3906,15 @@ \newcommand*{\FamilyElseValues}{} %</base> % \end{macrocode} -% \end{macro}^^A \FamilyUnknownKeyValue -% \end{macro}^^A \FamilyElseValue +% \end{macro}%^^A \FamilyUnknownKeyValue +% \end{macro}%^^A \FamilyElseValue % % \begin{macro}{\FamilyBoolKey} -% \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. +% \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, -% obligatorische Argument ist die Familie, das dritte der Name des Schlüssels, +% obligatorische Argument ist die Familie, das dritte der Name des Schlüssels, % das vierte der Schalter. % \begin{macrocode} %<*base> @@ -3789,21 +3926,24 @@ } % \end{macrocode} % \begin{macro}{\FamilySetBool} -% \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. +% \changes{v3.00}{2008/04/30}{Neue Anweisung}%^^A +% \changes{v3.11a}{2012/05/25}{Argument in Fehlermeldung korrigiert}%^^A +% \changes{v3.27}{2019/07/08}{Leeres Argument ist \texttt{true}}%^^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. % \begin{macrocode} \newcommand*{\FamilySetBool}[4]{% - \ifstr{#4}{true}{\@nameuse{#3true}\FamilyKeyStateProcessed}{% - \ifstr{#4}{on}{\@nameuse{#3true}\FamilyKeyStateProcessed}{% - \ifstr{#4}{yes}{\@nameuse{#3true}\FamilyKeyStateProcessed}{% - \ifstr{#4}{false}{\@nameuse{#3false}\FamilyKeyStateProcessed}{% - \ifstr{#4}{off}{\@nameuse{#3false}\FamilyKeyStateProcessed}{% - \ifstr{#4}{no}{\@nameuse{#3false}\FamilyKeyStateProcessed}{% - \FamilyUnknownKeyValue{#1}{#2}{#4}{% - `true', `on', `yes', `false', `off', `no'% + \ifstr{#4}{}{\@nameuse{#3true}\FamilyKeyStateProcessed}{% + \ifstr{#4}{true}{\@nameuse{#3true}\FamilyKeyStateProcessed}{% + \ifstr{#4}{on}{\@nameuse{#3true}\FamilyKeyStateProcessed}{% + \ifstr{#4}{yes}{\@nameuse{#3true}\FamilyKeyStateProcessed}{% + \ifstr{#4}{false}{\@nameuse{#3false}\FamilyKeyStateProcessed}{% + \ifstr{#4}{off}{\@nameuse{#3false}\FamilyKeyStateProcessed}{% + \ifstr{#4}{no}{\@nameuse{#3false}\FamilyKeyStateProcessed}{% + \FamilyUnknownKeyValue{#1}{#2}{#4}{% + `true', `on', `yes', `false', `off', `no'% + }% }% }% }% @@ -3817,11 +3957,42 @@ % \end{macrocode} % \end{macro} % \end{macro} +% \selectlanguage{english} +% \begin{macro}{\FamilyInverseBoolKey} +% \changes{3.27}{2019/07/08}{new} +% \begin{macro}{\FamilySetInverseBool} +% \changes{3.27}{2019/07/08}{new} +% These are similar to \cs{FamilyBoolKey} and \cs{FamilySetBoolKey} but use +% inverse logic (true sets false and false sets true). +% \begin{macrocode} +%<*base> +\newcommand*{\FamilyInverseBoolKey}[4][.\@currname.\@currext]{% + \@ifundefined{if#4}{% + \expandafter\newif\csname if#4\endcsname + \@nameuse{#4true}% + }{}% + \DefineFamilyKey[{#1}]{#2}{#3}[true]{\FamilySetInverseBool{#2}{#3}{#4}{##1}}% +} +\newcommand*{\FamilySetInverseBool}[4]{% + \FamilySetBool{#1}{#2}{#3}{#4}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \expandafter\ifx\csname if#3\expandafter\endcsname\csname iftrue\endcsname + \@nameuse{#3false}% + \else + \@nameuse{#3true}% + \fi + \fi +} +%</base> +% \end{macrocode} +% \end{macro}%^^A \FamilySetInverseBool +% \end{macro}%^^A \FamilyInverseBoolKey +% \selectlanguage{ngerman} % % \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. +% 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. % \begin{macrocode} %<*koma> \newcommand*{\KOMA@unknown@keyval}{\FamilyUnknownKeyValue{KOMA}} @@ -3830,15 +4001,15 @@ % \end{macro} % % \begin{macro}{\KOMA@ifkey} -% \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 +% \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 -% "`\texttt{no}"' erlaubt. Der Default-Wert für den Schalter ist -% grundsätzlich "`false"', so dass der Default-Wert für die Verwendung -% des Schküssels grundsätzlich "`true"' ist. Das erste Argument ist -% der Name des Schlüssels, der zweite ist der Name des Schalters. +% "`\texttt{no}"' erlaubt. Der Default-Wert für den Schalter ist +% grundsätzlich "`false"', so dass der Default-Wert für die Verwendung +% des Schküssels grundsätzlich "`true"' ist. Das erste Argument ist +% der Name des Schlüssels, der zweite ist der Name des Schalters. % \begin{macrocode} %<*koma> \newcommand*{\KOMA@ifkey}[2][.\@currname.\@currext]{% @@ -3863,8 +4034,8 @@ % \end{macrocode} % \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 +% 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 % Argument 3. % \begin{macrocode} %<*koma> @@ -3875,20 +4046,20 @@ % \end{macro} % % \begin{macro}{\FamilyCounterKey} -% \changes{v3.12}{2013/11/05}{neu}^^A -% \changes{v3.15}{2014/12/03}{er wird ein (optionaler) Säumniswert -% unterstützt}^^A -% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by -% \cs{kernel@ifnextchar}}^^A -% Dieses Makro definiert einen Schlüssel, der einen \LaTeX-Zähler an Hand +% \changes{v3.12}{2013/11/05}{neu}%^^A +% \changes{v3.15}{2014/12/03}{er wird ein (optionaler) Säumniswert +% unterstützt}%^^A +% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by +% \cs{kernel@ifnextchar}}%^^A +% Dieses Makro definiert einen Schlüssel, der einen \LaTeX-Zähler an Hand % des Wertes setzt. Das erste, optionale Argument ist das Familienmitglied, % das zweite, obligatorische Argument ist die Familie, das dritte der Name -% des Schlüssels, das vierte, optionale ist der Säumniswert, das fünfte der -% Name des \LaTeX-Zählers. Erlaubt sind alle Integer-Werte. +% des Schlüssels, das vierte, optionale ist der Säumniswert, das fünfte der +% Name des \LaTeX-Zählers. Erlaubt sind alle Integer-Werte. % \begin{macro}{\Family@@Counter@@Key} -% \changes{v3.15}{2014/12/03}{neu (intern)}^^A +% \changes{v3.15}{2014/12/03}{neu (intern)}%^^A % \begin{macro}{\Family@Counter@Key} -% \changes{v3.15}{2014/12/03}{neu (intern)}^^A +% \changes{v3.15}{2014/12/03}{neu (intern)}%^^A % \begin{macrocode} %<*base> \newcommand*{\FamilyCounterKey}[3][.\@currname.\@currext]{% @@ -3907,13 +4078,13 @@ } % \end{macrocode} % \begin{macro}{\FamilySetCounter} -% \changes{v3.12}{2013/11/05}{neu}^^A -% \changes{v3.18a}{2015/07/06}{korrekte Verwendung von -% \cs{FamilyKeyStateProcessed}}^^A -% \changes{v3.23}{2017/02/23}{Leerzeichen durch \cs{relax} ersetzt}^^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 -% Name des \LaTeX-Zählers, das vierte schließlich der gewünschte Wert. +% \changes{v3.12}{2013/11/05}{neu}%^^A +% \changes{v3.18a}{2015/07/06}{korrekte Verwendung von +% \cs{FamilyKeyStateProcessed}}%^^A +% \changes{v3.23}{2017/02/23}{Leerzeichen durch \cs{relax} ersetzt}%^^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 +% Name des \LaTeX-Zählers, das vierte schließlich der gewünschte Wert. % \begin{macrocode} \newcommand*{\FamilySetCounter}[4]{% \begingroup @@ -3952,30 +4123,30 @@ % \end{macro} % \end{macro} % \begin{macro}{\FamilyCounterMacroKey} -% \changes{v3.12}{2013/11/05}{neu}^^A -% \changes{v3.15}{2014/12/03}{er wird ein (optionaler) Säumniswert -% unterstützt}^^A +% \changes{v3.12}{2013/11/05}{neu}%^^A +% \changes{v3.15}{2014/12/03}{er wird ein (optionaler) Säumniswert +% unterstützt}%^^A % Diese Anweisung arbeitet fast wie \cs{FamilyCounterKey}, allerdings wird -% dabei nicht ein Zähler, sondern ein Marko auf einen Wert definiert. Dabei +% dabei nicht ein Zähler, sondern ein Marko auf einen Wert definiert. Dabei % ist das erste (optionale) Argument das Mitglied, das zweite die Familie, das -% dritte der Schlüssel, das vierte (optionale) der Säumniswert, das fünfte das +% 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.15}{2014/12/17}{\cs{aftergroup} vor -% \cs{FamilyKeyStateProcessed}}^^A -% \changes{v3.18a}{2015/07/06}{korrekte Verwendung von -% \cs{FamilyKeyStateProcessed}}^^A -% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by -% \cs{kernel@ifnextchar}}^^A +% \changes{v3.12}{2013/11/05}{neu}%^^A +% \changes{v3.15}{2014/12/17}{\cs{aftergroup} vor +% \cs{FamilyKeyStateProcessed}}%^^A +% \changes{v3.18a}{2015/07/06}{korrekte Verwendung von +% \cs{FamilyKeyStateProcessed}}%^^A +% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by +% \cs{kernel@ifnextchar}}%^^A % Diese Anweisung arbeitet fast wie \cs{FamilySetCounter}, allerdings wird -% nicht ein Zähler gesetzt, sondern ein Makro auf einen Wert definiert. Dabei -% ist das erste Argument die Familie, das zweite der Name des Schlüssels, das -% dritte das Makro, das vierte schließlich der gewünschte Wert. +% nicht ein Zähler gesetzt, sondern ein Makro auf einen Wert definiert. Dabei +% ist das erste Argument die Familie, das zweite der Name des Schlüssels, das +% dritte das Makro, das vierte schließlich der gewünschte Wert. % \begin{macro}{\Family@@Counter@@Macro@@Key} -% \changes{v3.15}{2014/12/03}{neu (intern)}^^A +% \changes{v3.15}{2014/12/03}{neu (intern)}%^^A % \begin{macro}{\Family@Counter@Macro@Key} -% \changes{v3.15}{2014/12/03}{neu (intern)}^^A +% \changes{v3.15}{2014/12/03}{neu (intern)}%^^A % \begin{macrocode} %<*base> \newcommand*{\FamilyCounterMacroKey}[3][.\@currname.\@currext]{% @@ -3995,8 +4166,8 @@ \newcommand*{\FamilySetCounterMacro}[4]{% \begingroup % \end{macrocode} -% An dieser Stelle wird nun der immer definierte Zähler page als lokaler -% Zähler verwendet. Das ist nur möglich, weil \cs{FamilySetCounter} nicht +% An dieser Stelle wird nun der immer definierte Zähler page als lokaler +% Zähler verwendet. Das ist nur möglich, weil \cs{FamilySetCounter} nicht % global mit \cs{setcounter} arbeitet, sondern lokal mit einer Zuweisung an % \cs{value}. % \begin{macrocode} @@ -4025,19 +4196,19 @@ % \end{macro} % % \begin{macro}{\FamilyLengthKey} -% \changes{v3.12}{2013/11/05}{neu}^^A -% \changes{v3.15}{2014/12/03}{er wird ein (optionaler) Säumniswert -% unterstützt}^^A -% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by -% \cs{kernel@ifnextchar}}^^A -% Dieses Makro definiert einen Schlüssel, der eine \LaTeX-Länge an Hand +% \changes{v3.12}{2013/11/05}{neu}%^^A +% \changes{v3.15}{2014/12/03}{er wird ein (optionaler) Säumniswert +% unterstützt}%^^A +% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by +% \cs{kernel@ifnextchar}}%^^A +% Dieses Makro definiert einen Schlüssel, der eine \LaTeX-Länge an Hand % des Wertes setzt. Das erste, optionale Argument ist das Familienmitglied, % das zweite, obligatorische Argument ist die Familie, das dritte der Name -% des Schlüssels, das vierte der name der \LaTeX-Länge. +% des Schlüssels, das vierte der name der \LaTeX-Länge. % \begin{macro}{\Family@@Length@@Key} -% \changes{v3.15}{2014/12/03}{neu (intern)}^^A +% \changes{v3.15}{2014/12/03}{neu (intern)}%^^A % \begin{macro}{\Family@Length@Key} -% \changes{v3.15}{2014/12/03}{neu (intern)}^^A +% \changes{v3.15}{2014/12/03}{neu (intern)}%^^A % \begin{macrocode} %<*base> \newcommand*{\FamilyLengthKey}[3][.\@currname.\@currext]{% @@ -4056,14 +4227,14 @@ } % \end{macrocode} % \begin{macro}{\FamilySetLength} -% \changes{v3.12}{2013/11/05}{neu}^^A -% \changes{v3.15}{2015/01/02}{\cs{ifglueexpr} hinzugefügt}^^A -% \changes{v3.18a}{2015/07/06}{korrekte Verwendung von -% \cs{FamilyKeyStateProcessed}}^^A -% \changes{v3.20}{2016/04/27}{Expansion vor dem Test}^^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 -% Name der \LaTeX-Länge, das vierte schließlich der gewünschte Wert. +% \changes{v3.12}{2013/11/05}{neu}%^^A +% \changes{v3.15}{2015/01/02}{\cs{ifglueexpr} hinzugefügt}%^^A +% \changes{v3.18a}{2015/07/06}{korrekte Verwendung von +% \cs{FamilyKeyStateProcessed}}%^^A +% \changes{v3.20}{2016/04/27}{Expansion vor dem Test}%^^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 +% Name der \LaTeX-Länge, das vierte schließlich der gewünschte Wert. % \begin{macrocode} \newcommand*{\FamilySetLength}[4]{% \begingroup @@ -4112,29 +4283,29 @@ % \end{macro} % \end{macro} % \begin{macro}{\FamilyLengthMacroKey} -% \changes{v3.12}{2013/11/05}{neu}^^A -% \changes{v3.15}{2014/12/03}{er wird ein (optionaler) Säumniswert -% unterstützt}^^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.14a}{2014/11/24}{fix: \cs{@tempskipa} statt \cs{@temskipa}}^^A -% \changes{v3.15}{2014/12/17}{\cs{aftergroup} vor -% \cs{FamilyKeyStateProcessed}}^^A -% \changes{v3.15}{2015/01/02}{\cs{ifglueexpr} hinzugefügt}^^A -% \changes{v3.18a}{2015/07/06}{korrekte Verwendung von -% \cs{FamilyKeyStateProcessed}}^^A -% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} ersetzt durch -% \cs{kernel@ifnextchar}}^^A -% \changes{v3.20}{2016/04/27}{interne Verwendung von \cs{FamilySetLength}}^^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 +% \changes{v3.15}{2015/01/02}{\cs{ifglueexpr} hinzugefügt}%^^A +% \changes{v3.18a}{2015/07/06}{korrekte Verwendung von +% \cs{FamilyKeyStateProcessed}}%^^A +% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} ersetzt durch +% \cs{kernel@ifnextchar}}%^^A +% \changes{v3.20}{2016/04/27}{interne Verwendung von \cs{FamilySetLength}}%^^A % Diese Anweisungen arbeitet fast wie \cs{FamilyLengthKey} und -% \cs{FamilySetLengt}, allerdings wird nicht eine Länge gesetzt, sondern +% \cs{FamilySetLengt}, allerdings wird nicht eine Länge gesetzt, sondern % ein Makro auf einen Wert definiert. Dabei ist das erste Argument die -% Familie, das zweite der Name des Schlüssels, das dritte das Makro, das -% vierte schließlich der gewünschte Wert. +% Familie, das zweite der Name des Schlüssels, das dritte das Makro, das +% vierte schließlich der gewünschte Wert. % \begin{macro}{\Family@@Length@@Macro@@Key} -% \changes{v3.15}{2014/12/03}{neu (intern)}^^A +% \changes{v3.15}{2014/12/03}{neu (intern)}%^^A % \begin{macro}{\Family@Length@Macro@Key} -% \changes{v3.15}{2014/12/03}{neu (intern)}^^A +% \changes{v3.15}{2014/12/03}{neu (intern)}%^^A % \begin{macrocode} %<*base> \newcommand*{\FamilyLengthMacroKey}[3][.\@currname.\@currext]{% @@ -4179,20 +4350,20 @@ % % % \begin{macro}{\FamilyUseLengthMacroKey} -% \changes{v3.20}{2016/04/27}{neu}^^A +% \changes{v3.20}{2016/04/27}{neu}%^^A % \begin{macro}{\FamilySetUseLengthMacro} -% \changes{v3.20}{2016/04/27}{neu}^^A +% \changes{v3.20}{2016/04/27}{neu}%^^A % Diese Anweisungen arbeitet fast wie \cs{FamilyLengthKey} und % \cs{FamilySetLengt}, allerdings wird das Makro nicht als den Wert des Werts, % sondern als den Wert selbst definiert. Eine Expansion des Werts findet nur -% für die Prüfung statt. Änderungen am Wert wirken sich also ggf. weiterhin +% für die Prüfung statt. Änderungen am Wert wirken sich also ggf. weiterhin % aus. Dabei ist das erste Argument die Familie, das zweite der Name des -% Schlüssels, das dritte das Makro, das vierte schließlich der gewünschte +% Schlüssels, das dritte das Makro, das vierte schließlich der gewünschte % Wert. % \begin{macro}{\Family@@UseLength@@Macro@@Key} -% \changes{v3.20}{2016/04/27}{neu (intern)}^^A +% \changes{v3.20}{2016/04/27}{neu (intern)}%^^A % \begin{macro}{\Family@USeLength@Macro@Key} -% \changes{v3.20}{2016/04/27}{neu (intern)}^^A +% \changes{v3.20}{2016/04/27}{neu (intern)}%^^A % \begin{macrocode} %<*base> \newcommand*{\FamilyUseLengthMacroKey}[3][.\@currname.\@currext]{% @@ -4238,25 +4409,25 @@ % % % \begin{macro}{\FamilyNumericalKey} -% \changes{v3.00}{2008/04/30}{Neue Anweisung}^^A -% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by -% \cs{kernel@ifnextchar}}^^A +% \changes{v3.00}{2008/04/30}{Neue Anweisung}%^^A +% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by +% \cs{kernel@ifnextchar}}%^^A % \begin{macro}{\Family@Numerical@Key} -% \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 +% \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 % Werte auf denselben nummerischen Wert abgebildet werden. Das erste, % optionale Argument ist das Familienmitglied, das zweite, obligatorische % Argument ist die Familie, das dritte, obligatorische Argument ist der Name -% der Option, das vierte, optionale Artument ist der Defaultwert für den -% Schlüssel, das fünfte, obligatorische Argument ist der Name des Makros, das +% der Option, das vierte, optionale Artument ist der Defaultwert für den +% Schlüssel, das fünfte, obligatorische Argument ist der Name des Makros, das % (in der Voreinstellung als 0) definiert werden soll, das sechste, % obligatorische Argument ist die Liste der symbolischen und nummerischen % Werte. Die Liste hat die Form: % \{\emph{Symbol}\}\{\emph{Wert}\},\{\emph{Symbol}\}\{\emph{Wert}\}\dots -% Das interne Makro wird benötigt, um das vierte, optionale Argument zu -% ermöglichen. Dabei ist dann das erste Argument nicht mehr optional, sondern +% Das interne Makro wird benötigt, um das vierte, optionale Argument zu +% ermöglichen. Dabei ist dann das erste Argument nicht mehr optional, sondern % obligatorisch. % \begin{macrocode} %<*base> @@ -4277,11 +4448,11 @@ % \end{macrocode} % \begin{macro}{\FamilySetNumerical} % \changes{v3.11a}{2012/05/28}{call of \cs{FamilyUnknownKeyValue} outside of -% local group}^^A +% local group}%^^A % \changes{v3.25}{2017/12/04}{komplett leere Listenelemente werden -% ignoriert}^^A +% ignoriert}%^^A % Die eigentliche Arbeit dabei wird von diesem Makro erledigt. Dabei -% wird die Familie zu Argument 1, der Name des Schlüssels zu Argument 2, der +% wird die Familie zu Argument 1, der Name des Schlüssels zu Argument 2, der % Name des Makros, das definiert werden soll zu Argument 3, die Liste zu % Argument 4 und der Wert, auf den gesetzt werden soll, zu Argument 5. % \begin{macrocode} @@ -4324,21 +4495,21 @@ % \end{macro} % % \begin{macro}{\KOMA@ncmdkey} -% \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 +% \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 % \begin{macro}{\KOMA@@ncmdkey} -% \changes{v3.17}{2015/03/16}{neu (intern)}^^A +% \changes{v3.17}{2015/03/16}{neu (intern)}%^^A % \begin{macro}{\KOMA@@@ncmdkey} -% \changes{v3.17}{2015/03/16}{neu (intern)}^^A +% \changes{v3.17}{2015/03/16}{neu (intern)}%^^A % Wie \cs{FamilyNumericalKey} mit zwei entscheidenden Unterschieden: % \begin{itemize} -% \item Die Familien ist immer \texttt{KOMA} und entfällt daher als zweites +% \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 +% \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 +% Wichtig: Die Voreinstellung muss anschließend noch in jedem Fall mit % \cs{KOMA@kav@add} gesetzt werden! % \begin{macrocode} %<*koma> @@ -4369,7 +4540,7 @@ % \end{macrocode} % \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, +% 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. Dabei wird allerdings % kein gespeicherter Wert ersetzt! @@ -4385,23 +4556,23 @@ % % % \begin{macro}{\FamilyStringKey} -% \changes{v3.08}{2010/11/05}{Neue Anweisung}^^A +% \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}^^A +% \cs{Family@@String@@Key} vertauscht}%^^A % \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by -% \cs{kernel@ifnextchar}}^^A +% \cs{kernel@ifnextchar}}%^^A % \begin{macro}{\Family@String@Key} -% \changes{v3.08}{2010/11/05}{Neu (intern)}^^A +% \changes{v3.08}{2010/11/05}{Neu (intern)}%^^A % \begin{macro}{\Family@@String@@Key} -% \changes{v3.08}{2010/11/05}{Neu (intern)}^^A -% Ein ähnliches Makro definiert einen Schlüssel, der ein Makro auf einen +% \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 % dritte, obligatorische Argument ist der Name der Option, das vierte, -% optionale Artument ist der Defaultwert für den Schlüssel, das fünfte, +% optionale Artument ist der Defaultwert für den Schlüssel, das fünfte, % obligatorische Argument ist das Makros, das (in der Voreinstellung -% als leer) definiert werden soll. Die internen Makro werden benötigt, um das -% vierte, optionale Argument zu ermöglichen. Dabei ist dann das erste Argument +% als leer) definiert werden soll. Die internen Makro werden benötigt, um das +% vierte, optionale Argument zu ermöglichen. Dabei ist dann das erste Argument % nicht mehr optional, sondern obligatorisch. % \begin{macrocode} %<*base> @@ -4424,21 +4595,21 @@ % % % \begin{macro}{\FamilyCSKey} -% \changes{v3.25}{2017/12/08}{Neue Anweisung}^^A +% \changes{v3.25}{2017/12/08}{Neue Anweisung}%^^A % \begin{macro}{\Family@CS@Key} -% \changes{v3.25}{2017/12/08}{Neu (intern)}^^A +% \changes{v3.25}{2017/12/08}{Neu (intern)}%^^A % \begin{macro}{\Family@@CS@@Key} -% \changes{v3.25}{2017/12/08}{Neu (intern)}^^A +% \changes{v3.25}{2017/12/08}{Neu (intern)}%^^A % \changes{v3.26}{2018/11/06}{Es wird wirklich diese Anweisung (statt erneut -% \cs{Family@@String@@Key}) definiert}^^A -% Ein ähnliches Makro definiert einen Schlüssel, der eine Befehlssequenz auf +% \cs{Family@@String@@Key}) definiert}%^^A +% Ein ähnliches Makro definiert einen Schlüssel, der eine Befehlssequenz auf % einen beliegigen Wert setzt. Das erste, optionale Argument ist das % Familienmitglied, das zweite, obligatorische Argument ist die Familie, das % dritte, obligatorische Argument ist der Name der Option, das vierte, -% optionale Artument ist der Defaultwert für den Schlüssel, das fünfte, +% optionale Artument ist der Defaultwert für den Schlüssel, das fünfte, % obligatorische Argument ist der Name des Makros, das (in der Voreinstellung -% als leer) definiert werden soll. Die internen Makro werden benötigt, um das -% vierte, optionale Argument zu ermöglichen. Dabei ist dann das erste Argument +% als leer) definiert werden soll. Die internen Makro werden benötigt, um das +% vierte, optionale Argument zu ermöglichen. Dabei ist dann das erste Argument % nicht mehr optional, sondern obligatorisch. % \begin{macrocode} %<*base> @@ -4461,19 +4632,19 @@ % % % \begin{macro}{\KOMA@DeclareDeprecatedOption} -% \changes{v3.01a}{2008/11/20}{neu (intern)}^^A -% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by -% \cs{kernel@ifnextchar}}^^A +% \changes{v3.01a}{2008/11/20}{neu (intern)}%^^A +% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by +% \cs{kernel@ifnextchar}}%^^A % \begin{macro}{\KOMA@@DeclareDeprecatedOption} -% \changes{v3.01a}{2008/11/20}{neu (intern)}^^A +% \changes{v3.01a}{2008/11/20}{neu (intern)}%^^A % \begin{macro}{\KOMA@@@DeclareDeprecatedOption} -% \changes{v3.01a}{2008/11/20}{neu (intern)}^^A +% \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 +% eigentlich obsolete ist. Statt dieser Option wird dann ein Schlüssel % verwendet. Das erste Argument ist optional und muss dann der Paketname % sein. Ist es nicht gesetzt, so wird stattdessen die Klasse % \cs{KOMAClassName} angenommen. Das zweite Argument ist der Name der -% Option. Das vierte Argument ist das Setzen des gewünschten Schlüssels. +% Option. Das vierte Argument ist das Setzen des gewünschten Schlüssels. % \begin{macrocode} %<*koma> \newcommand*{\KOMA@DeclareDeprecatedOption}{% @@ -4489,13 +4660,13 @@ } % \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.22}{2016/07/29}{diverse \cs{detokenize} eingefügt}^^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} korrigiert}%^^A +% \changes{v3.22}{2016/07/29}{diverse \cs{detokenize} eingefügt}%^^A % Die eigentliche Arbeit wird von diesem Makro erledigt. Die Argumente sind -% 1. Meldungsbefehl, 2. obsolete Option, 3. Setzen des Schlüssels. +% 1. Meldungsbefehl, 2. obsolete Option, 3. Setzen des Schlüssels. % \begin{macrocode} \newcommand*{\KOMA@UseDeprecatedOption}[3]{% \begingroup @@ -4532,26 +4703,26 @@ } %</koma> % \end{macrocode} -% \end{macro}^^A \KOMA@UseDeprecatedOption -% \end{macro}^^A \KOMA@@@DeclareDeprecatedOption -% \end{macro}^^A \KOMA@@DeclareDeprecatedOption -% \end{macro}^^A \KOMA@DeclareDeprecatedOption +% \end{macro}%^^A \KOMA@UseDeprecatedOption +% \end{macro}%^^A \KOMA@@@DeclareDeprecatedOption +% \end{macro}%^^A \KOMA@@DeclareDeprecatedOption +% \end{macro}%^^A \KOMA@DeclareDeprecatedOption % % % \begin{macro}{\KOMA@DeclareStandardOption} -% \changes{v3.01a}{2008/11/21}{neu (intern)}^^A -% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by -% \cs{kernel@ifnextchar}}^^A +% \changes{v3.01a}{2008/11/21}{neu (intern)}%^^A +% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by +% \cs{kernel@ifnextchar}}%^^A % \begin{macro}{\KOMA@@DeclareStandardOption} -% \changes{v3.01a}{2008/11/21}{neu (intern)}^^A +% \changes{v3.01a}{2008/11/21}{neu (intern)}%^^A % \begin{macro}{\KOMA@@@DeclareStandardOption} -% \changes{v3.01a}{2008/11/21}{neu (intern)}^^A +% \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 +% eigentlich obsolete ist. Statt dieser Option wird dann ein Schlüssel % verwendet. Das erste Argument ist optional und muss dann der Paketname % sein. Ist es nicht gesetzt, so wird stattdessen die Klasse % \cs{KOMAClassName} angenommen. Das zweite Argument ist der Name der -% Option. Das vierte Argument ist das Setzen des gewünschten Schlüssels. +% Option. Das vierte Argument ist das Setzen des gewünschten Schlüssels. % \begin{macrocode} %<*koma> \newcommand*{\KOMA@DeclareStandardOption}{% @@ -4567,9 +4738,9 @@ } % \end{macrocode} % \begin{macro}{\KOMA@UseStandardOption} -% \changes{v3.01a}{2008/11/21}{neu (intern)}^^A +% \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. +% 1. Meldungsbefehl, 2. obsolete Option, 3. Setzen des Schlüssels. % \begin{macrocode} \newcommand*{\KOMA@UseStandardOption}[3]{% \begingroup @@ -4591,46 +4762,46 @@ %</koma> % \end{macrocode} % \begin{macro}{\scr@sr@co} -% \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 -% \end{macro}^^A \KOMA@@DeclareStandardOption -% \end{macro}^^A \KOMA@DeclareStandardOption +% \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 +% \end{macro}%^^A \KOMA@@DeclareStandardOption +% \end{macro}%^^A \KOMA@DeclareStandardOption % % % \begin{macro}{\KOMA@DeclareObsoleteOption} -% \changes{v2.96}{2006/08/20}{\cs{CurrentOption wir geschützt}} -% \changes{v3.12}{2013/03/04}{entfernt weil unbenutzt}^^A +% \changes{v2.96}{2006/08/20}{\cs{CurrentOption wir geschützt}} +% \changes{v3.12}{2013/03/04}{entfernt weil unbenutzt}%^^A % \begin{macro}{\KOMA@@DeclareObsoleteOption} -% \changes{v2.98c}{2008/02/18}{neu (intern)}^^A -% \changes{v3.12}{2013/03/04}{entfernt weil unbenutzt}^^A +% \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)}^^A -% \changes{v3.12}{2013/03/04}{entfernt weil unbenutzt}^^A +% \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)}^^A -% \changes{v3.12}{2013/03/04}{entfernt weil unbenutzt}^^A +% \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)}^^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 -% \end{macro}^^A \KOMA@ii@DeclareObsoleteOption -% \end{macro}^^A \KOMA@i@DeclareObsoleteOption +% \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 +% \end{macro}%^^A \KOMA@ii@DeclareObsoleteOption +% \end{macro}%^^A \KOMA@i@DeclareObsoleteOption % % % \begin{macro}{\KOMA@newdeprecatedcommand} -% \changes{v3.12}{2013/03/04}{renamed \cs{KOMA@newobsoletecommand} into +% \changes{v3.12}{2013/03/04}{renamed \cs{KOMA@newobsoletecommand} into % \cs{KOMA@newdeprecatedcommand}} % Mit Hilfe dieses Makros kann ein Makro definiert werden, das % eigentlich obsolete ist. Das Makro verwendet dann schlicht einen -% Schlüssel. Das erste Argument ist optional und muss dann entweder +% Schlüssel. Das erste Argument ist optional und muss dann entweder % \cs{PackageInfo}, \cs{PackageInfoNoLine}, \cs{PackageWarning} oder % \cs{PackageWarningNoLine} sein. Das zweite Argument ist das Makro. -% Das dritte Argument ist das Setzen des gewünschten Schlüssels. Das +% Das dritte Argument ist das Setzen des gewünschten Schlüssels. Das % definierte Makro selbst hat Schaltercharakter, ist also nicht % \cs{long} und versteht auch keine Argumente. % \begin{macrocode} @@ -4640,8 +4811,8 @@ } % \end{macrocode} % \begin{macro}{\KOMA@UseDeprecatedCommand} -% \changes{v2.97c}{2007/04/19}{neu (intern)}^^A -% \changes{v3.12}{2013/03/04}{renamed \cs{KOMA@UseObsoleteCommand} into +% \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 % dieselben. @@ -4658,9 +4829,211 @@ } %</koma> % \end{macrocode} -% \end{macro}^^A \KOMA@UseDeprecatedCommand -% \end{macro}^^A \KOMA@newdeprecatedcommand +% \end{macro}%^^A \KOMA@UseDeprecatedCommand +% \end{macro}%^^A \KOMA@newdeprecatedcommand +% +% +% \selectlanguage{english} +% \subsection{Do Hook Mechanism} +% \label{sec:dohook} +% +% \changes{v3.27}{2019/02/02}{Do hook mechanism added}%^^A +% From \KOMAScript~v3.27 there is a new general hook mechanism called ``do +% hook mechanism''. This mechanism is mentioned to provide extended hooks for +% package authors. All hooks newly implemented in \KOMAScript{} \emph{should} +% use this new mechanism. +% +% +% \begin{macro}{\ForDoHook} +% \changes{v3.27}{2019/02/05}{New}%^^A +% Arguments: +% \begin{description} +% \item[\meta{specificator}:] +% \meta{string} or \meta{string}\texttt{/}\meta{specificator} +% \item[\meta{code}:] \LaTeX{} code +% \end{description} +% Executes \meta{code} for earch level of a do-hook. This is a helper command +% normally not interesting for users or package authors. However, I define it +% in the user context to be consistent with the other do-hook commands. Note, +% there will be two arguments appended to the \meta{code}. The first one is +% the name of the hook, the second one the hook argument. +% See \cs{ExecuteDoHook} as an example. +% \begin{macrocode} +%<*base> +\newcommand*{\ForDoHook}[2]{% + \ifstr{#1}{}{% + \PackageError{scrbase}{empty do-hook specificator}{% + You've tried to use an empty do-hook specificator,\MessageBreak + but do-hook specificators must not be empty.% + }% + }{% + \let\scr@hookname\relax + \edef\scr@hookargument{#1}% + \loop + \scr@hooksplit@specificator\scr@hookname\scr@hookargument + \scr@hookargument + \begingroup\edef\reserved@a{% + \unexpanded{\endgroup #2}{\scr@hookname}{\scr@hookargument}% + }\reserved@a + \ifx\scr@hookargument\@empty\else + \repeat + \let\scr@hookname\relax + \let\scr@hookargument\relax + }% +} +% \end{macrocode} +% \begin{macro}{\SplitDoHook} +% \changes{v3.27}{2019/02/04}{New}%^^A +% Arguments: +% \begin{description} +% \item[\meta{specificator}:] +% \meta{string} or \meta{string}\texttt{/}\meta{specificator} +% \item[\meta{prefix command}:] \LaTeX{} macro +% \item[\meta{postfix command}:] \LaTeX{} macro +% \end{description} +% Splits of the \emph{last} element of the \meta{specificator}. The +% \meta{postfix command} is defined to be that last element, the \meta{prefix +% command} is defined to be the rest. +% \begin{macrocode} +\newcommand*{\SplitDoHook}[3]{% + \ifstr{#1}{}{% + \PackageWarning{scrbase}{empty do-hook specificator}% + \let#2\@empty\let#3\@empty + }{% + \let#2\relax + \edef\reserved@a{% + \unexpanded{\scr@hooksplit@specificator{#2}{#3}}{#1}% + }\reserved@a + }% +} +% \end{macrocode} +% \begin{macro}{\scr@hooksplit@specificator} +% \changes{v3.27}{2019/02/02}{New internal}%^^A +% Split of the first string of the specificator argument, append it to +% \cs{scr@hookname} and store the rest in \cs{scr@hookargument}. The argument +% must not be empty! +% \begin{macro}{\scr@@hooksplit@specificator} +% \changes{v3.27}{2019/02/02}{New internal}%^^A +% \begin{macrocode} +\newcommand*{\scr@hooksplit@specificator}[3]{% + \expandafter\scr@@hooksplit@specificator\expandafter#1\expandafter#2#3/\@nil +} +\newcommand*{\scr@@hooksplit@specificator}{} +\def\scr@@hooksplit@specificator#1#2#3/#4\@nil{% + \scr@ifundefinedorrelax{scr@hookname}{\def#1{#3}}{% + \edef#1{#1/#3}% + }% + \def#2{#4}% + \ifx#2\@empty\else \scr@@hookargument#2#4\@nil\fi +} +\newcommand*{\scr@@hookargument}{} +\def\scr@@hookargument#1#2/\@nil{\def#1{#2}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\ExecuteDoHook} +% \changes{v3.27}{2019/02/02}{New}%^^A +% Arguments: +% \begin{description} +% \item[\meta{specificator}:] +% \meta{string} or \meta{string}\texttt{/}\meta{specificator} +% \end{description} +% Each string of the \meta{specificator} defines a hook subgroup. The +% execution is done in a loop, first all hook elements of the first +% \meta{string} of the \meta{specificator} are executed with the rest of the +% \meta{specificator} as an argument. Then the hook elements of the +% composition of the first and the second \meta{string} are executed again +% with the rest of the \meta{specificator} as an agument and so on until the +% hook elements of the whole \meta{specificator} has been executed with an +% empty argument. So every hook element has to expect an argument that is +% itself a \meta{specificator}. At each loop level the one-time hooks +% are executed after the permanent hooks. +% \begin{macrocode} +\newcommand*{\ExecuteDoHook}[1]{% + \@ifundefined{scr@execute@dohook}{% + \def\scr@execute@dohook##1##2{% + \def\scr@hook@do####1{####1{##2}}% + \@nameuse{scr@dohook@##1}% + \@nameuse{scr@otdohook@##1}% + \expandafter\global\expandafter\let + \csname scr@otdohook@##1\endcsname\@empty + \let\scr@hook@do\relax + }% + \ForDoHook{#1}{\scr@execute@dohook}% + \let\scr@execute@dohook\relax + }{% + \PackageWarning{scrbase}{cascaded do-hook detected.\MessageBreak + It seems, that the do-hook `\detokenize{#1}'\MessageBreak + is be executed, while another do-hook is active.\MessageBreak + This is not allowed and therefore ignored% + }% + }% +} +% \end{macrocode} +% \end{macro} % +% \begin{macro}{\AddtoDoHook} +% \changes{v3.27}{2019/02/02}{New}%^^A +% Arguments: +% \begin{description} +% \item[\meta{specificator}:] +% \meta{string} or \meta{string}\texttt{/}\meta{specificator} +% \item[\meta{element}:] +% a \LaTeX command, that expects exactly one argument. +% \end{description} +% For the \meta{specificator} see \cs{ExecuteDoHook}. Here you can add an +% \meta{element} to a hook defined by the \meta{specificator}. Adding a hook +% is local to the current group. +% \begin{macrocode} +\newcommand*{\AddtoDoHook}[2]{% + \ifstr{#1}{}{% + \PackageError{scrbase}{empty hook specificator}{% + As hook specificators can never be empty, the first argument\MessageBreak + of \string\AddtoDoHook\space must expand to an not empty string.% + }% + }{% + \scr@ifundefinedorrelax{scr@dohook@#1}{\@namedef{scr@dohook@#1}{}}{}% + \expandafter\l@addto@macro\csname scr@dohook@#1\endcsname{% + \scr@hook@do{#2}% + }% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\AddtoOneTimeDoHook} +% \changes{v3.27}{2019/02/02}{New}%^^A +% Arguments: +% \begin{description} +% \item[\meta{specificator}:] +% \meta{string} or \meta{string}\texttt{/}\meta{specificator} +% \item[\meta{element}:] +% a \LaTeX command, that expects exactly one argument. +% \end{description} +% This is almost the same as \cs{AddtoDoHook} but a hook added by this command +% is executed only once. +% \begin{macrocode} +\newcommand*{\AddtoOneTimeDoHook}[2]{% + \ifstr{#1}{}{% + \PackageError{scrbase}{empty hook specificator}{% + As hook specificators can never be empty, the first argument\MessageBreak + of \string\AddtoDoHook\space must expand to an not empty string.% + }% + }{% + \scr@ifundefinedorrelax{scr@otdohook@#1}{\@namedef{scr@otdohook@#1}{}}{}% + \expandafter\l@addto@macro\csname scr@otdohook@#1\endcsname{% + \scr@hook@do{#2}% + }% + }% +} +%</base> +% \end{macrocode} +% \end{macro} +% +% \selectlanguage{ngerman} % % \iffalse %</body> |