diff options
author | Karl Berry <karl@freefriends.org> | 2018-04-02 21:16:13 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2018-04-02 21:16:13 +0000 |
commit | 1610548529befd1cb7d72da00a3a889261436642 (patch) | |
tree | 04d20de3c80be1f24b619689213ebb794979c0ee /Master/texmf-dist/source/latex/koma-script/scrkernel-basics.dtx | |
parent | 635bc4f06033428fe01440c71f242ec9b68fe092 (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.dtx | 117 |
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 |