summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/koma-script/scrkernel-basics.dtx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2018-04-02 21:16:13 +0000
committerKarl Berry <karl@freefriends.org>2018-04-02 21:16:13 +0000
commit1610548529befd1cb7d72da00a3a889261436642 (patch)
tree04d20de3c80be1f24b619689213ebb794979c0ee /Master/texmf-dist/source/latex/koma-script/scrkernel-basics.dtx
parent635bc4f06033428fe01440c71f242ec9b68fe092 (diff)
koma-script (2apr18)
git-svn-id: svn://tug.org/texlive/trunk@47249 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/koma-script/scrkernel-basics.dtx')
-rw-r--r--Master/texmf-dist/source/latex/koma-script/scrkernel-basics.dtx117
1 files changed, 92 insertions, 25 deletions
diff --git a/Master/texmf-dist/source/latex/koma-script/scrkernel-basics.dtx b/Master/texmf-dist/source/latex/koma-script/scrkernel-basics.dtx
index 9eb08be0387..38b12a8f180 100644
--- a/Master/texmf-dist/source/latex/koma-script/scrkernel-basics.dtx
+++ b/Master/texmf-dist/source/latex/koma-script/scrkernel-basics.dtx
@@ -1,4 +1,4 @@
-% \CheckSum{3675}
+% \CheckSum{3730}
% \iffalse meta-comment
% ======================================================================
% scrkernel-basics.dtx
@@ -55,7 +55,7 @@
% Right brace \} Tilde \~}
%
% \iffalse
-%%% From File: $Id: scrkernel-basics.dtx 2640 2017-05-08 09:36:55Z kohm $
+%%% From File: $Id: scrkernel-basics.dtx 2818 2017-12-08 08:31:53Z 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: 2017-05-08 11:36:55 +0200 (Mon, 08 May 2017) $
+ \filedate$Date: 2017-12-08 09:31:53 +0100 (Fri, 08 Dec 2017) $
\def\filerevision$#1: #2 ${\def\filerevision{r#2}}
\filerevision$Revision: 1638 $
\xdef\fileinfo{\filedate\space\filerevision\space}
@@ -2742,7 +2742,7 @@
% \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{serkeys} geschützt}^^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
@@ -3177,7 +3177,10 @@
% \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)}
+% \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
% 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
@@ -3185,22 +3188,47 @@
% 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.
+% 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
+% \cs{scr@key@name@else} und \cs{scr@key@value@else} gespeichert.
% \begin{macrocode}
\newcommand*{\scr@execute@elseoption}[1]{%
+ \begingroup
\protected@edef\reserved@a{%
- \noexpand\def\noexpand\scr@key@name{@else@}%
+ \unexpanded{%
+ \endgroup
+ \let\scr@key@name@else\scr@key@name
+ \let\scr@key@value@else\scr@key@value
+ \def\scr@key@name{@else@}%
+ }%
\noexpand\def\noexpand\scr@key@value{%
\unexpanded\expandafter{\scr@key@atlist}}%
\noexpand\def\noexpand\scr@key@atlist{%
@else@={\unexpanded\expandafter{\scr@key@atlist}}}%
\noexpand\scr@execute@option{#1}%
- \noexpand\def\noexpand\scr@key@atlist{
+ \noexpand\def\noexpand\scr@key@atlist{%
\unexpanded\expandafter{\scr@key@atlist}}%
\noexpand\def\noexpand\scr@key@name{%
\unexpanded\expandafter{\scr@key@name}}%
\noexpand\def\noexpand\scr@key@value{%
\unexpanded\expandafter{\scr@key@value}}%
+ \scr@ifundefinedorrelax{scr@key@name@else}{%
+ \unexpanded{\let\scr@key@name@else\relax}%
+ }{%
+ \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}%
+ }{%
+ \noexpand\def\noexpand\scr@key@value@else{%
+ \unexpanded\expandafter{\scr@key@value@else}%
+ }%
+ }%
}\reserved@a
}
% \end{macrocode}
@@ -4081,8 +4109,10 @@
}
% \end{macrocode}
% \begin{macro}{\FamilySetNumerical}
-% \changes{v3.11a}{2012/05/28}{call of \cs{FamilyUnknownKeyValue} outside of
-% local group}
+% \changes{v3.11a}{2012/05/28}{call of \cs{FamilyUnknownKeyValue} outside of
+% local group}^^A
+% \changes{v3.25}{2017/12/04}{komplett leere Listenelemente werden
+% 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
% Name des Makros, das definiert werden soll zu Argument 3, die Liste zu
@@ -4095,13 +4125,15 @@
\let\reserved@b=\@empty
\@tempswafalse
\@for\@valuelist:=#4\do{%
- \if@tempswa\else
- \edef\reserved@c{\expandafter\@firstoftwo\@valuelist}%
- \edef\reserved@a{\reserved@a\reserved@b`\reserved@c'}%
- \edef\reserved@b{, }%
- \ifx\reserved@c\@searched
- \@tempswatrue
- \edef\reserved@a{\expandafter\@secondoftwo\@valuelist}%
+ \ifx\@valuelist\@empty\else
+ \if@tempswa\else
+ \edef\reserved@c{\expandafter\@firstoftwo\@valuelist}%
+ \edef\reserved@a{\reserved@a\reserved@b`\reserved@c'}%
+ \edef\reserved@b{, }%
+ \ifx\reserved@c\@searched
+ \@tempswatrue
+ \edef\reserved@a{\expandafter\@secondoftwo\@valuelist}%
+ \fi
\fi
\fi
}%
@@ -4186,21 +4218,21 @@
%
%
% \begin{macro}{\FamilyStringKey}
-% \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
-% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
-% \cs{kernel@ifnextchar}}^^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
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \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
+% \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,
-% obligatorische Argument ist der Name des Makros, das (in der Voreinstellung
+% 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
% nicht mehr optional, sondern obligatorisch.
@@ -4224,6 +4256,41 @@
% \end{macro}
%
%
+% \begin{macro}{\FamilyCSKey}
+% \changes{v3.25}{2017/12/08}{Neue Anweisung}^^A
+% \begin{macro}{\Family@CS@Key}
+% \changes{v3.25}{2017/12/08}{Neu (intern)}^^A
+% \begin{macro}{\Family@@CS@@Key}
+% \changes{v3.25}{2017/12/08}{Neu (intern)}^^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,
+% 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
+% nicht mehr optional, sondern obligatorisch.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\FamilyCSKey}[3][.\@currname.\@currext]{%
+ \kernel@ifnextchar [%]
+ {\Family@@CS@@Key{#1}{#2}{#3}}{\Family@CS@Key{#1}{#2}{#3}}%
+}
+\newcommand*{\Family@@CS@@Key}{}
+\long\def\Family@@String@@Key#1#2#3[#4]#5{%
+ \DefineFamilyKey[{#1}]{#2}{#3}[{#4}]{\@namedef{#5}{##1}}%
+}
+\newcommand{\Family@CS@Key}[4]{%
+ \DefineFamilyKey[{#1}]{#2}{#3}{\@namedef{#4}{##1}\FamilyKeyStateProcessed}%
+}
+%</base>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
% \begin{macro}{\KOMA@DeclareDeprecatedOption}
% \changes{v3.01a}{2008/11/20}{neu (intern)}^^A
% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by