diff options
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 | 237 |
1 files changed, 187 insertions, 50 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 a5d08f11a3e..e26ceedc923 100644 --- a/Master/texmf-dist/source/latex/koma-script/scrkernel-basics.dtx +++ b/Master/texmf-dist/source/latex/koma-script/scrkernel-basics.dtx @@ -1,8 +1,8 @@ -% \CheckSum{2461} +% \CheckSum{2579} % \iffalse meta-comment % ====================================================================== % scrkernel-basics.dtx -% Copyright (c) Markus Kohm, 2002-2014 +% Copyright (c) Markus Kohm, 2002-2015 % % This file is part of the LaTeX2e KOMA-Script bundle. % @@ -20,7 +20,7 @@ % This work consists of all files listed in manifest.txt. % ---------------------------------------------------------------------- % scrkernel-basics.dtx -% Copyright (c) Markus Kohm, 2002-2014 +% Copyright (c) Markus Kohm, 2002-2015 % % Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, % Version 1.3c, verteilt und/oder veraendert werden. @@ -55,13 +55,13 @@ % Right brace \} Tilde \~} % % \iffalse -%%% From File: $Id: scrkernel-basics.dtx 1809 2014-10-17 08:02:00Z kohm $ +%%% From File: $Id: scrkernel-basics.dtx 1897 2015-01-02 12:04:12Z kohm $ %<package&option>\NeedsTeXFormat{LaTeX2e}[1995/06/01] %<*driver> \ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi \begingroup \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}} - \filedate$Date: 2014-10-17 10:02:00 +0200 (Fri, 17 Oct 2014) $ + \filedate$Date: 2015-01-02 13:04:12 +0100 (Fri, 02 Jan 2015) $ \def\filerevision$#1: #2 ${\gdef\filerevision{#2}} \filerevision$Revision: 1638 $ \endgroup @@ -376,6 +376,26 @@ % \end{macro}^^A \DefineFamilyMember % \end{macro}^^A \DefineFamily % +% \begin{macro}{\RelaxFamilyKey} +% \changes{v3.15}{2014/12/03}{neue Anweisung} +% 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} +%<*base> +\newcommand*{\RelaxFamilyKey}[3][.\@currname.\@currext]{% + \scr@ifundefinedorrelax{KV@#2#1@#3}{}{% + \expandafter\let\csname KV@#2#1@#3\endcsname\relax + }% + \scr@ifundefinedorrelax{KV@#2#1@#3@default}{}{% + \expandafter\let\csname KV@#2#1@#3@default\endcsname\relax + }% +} +%</base> +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\FamilyKeyState} % \changes{v3.12}{2013/03/04}{Neue Anweisung} % \begin{macro}{\FamilyKeyStateProcessed} @@ -1715,6 +1735,28 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\@removefromreset} +% \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 +% auf andere Pakete zu verlassen. +% \begin{macrocode} +%<*base> +\providecommand*\@removefromreset[2]{% + {% + \expandafter\let\csname c@#1\endcsname\@removefromreset + \def\@elt##1{% + \expandafter\ifx\csname c@##1\endcsname\@removefromreset + \else\noexpand\@elt{##1}\fi + }% + \expandafter\xdef\csname cl@#2\endcsname{\csname cl@#2\endcsname}% + }% +} +%</base> +% \end{macrocode} +% \end{macro} +% % \subsection{Definition von KOMA-\textsf{keyval}-Schlüsseln (Hauptteil)} % % \begin{macro}{\FamilyExecuteOptions} @@ -2365,14 +2407,30 @@ % % \begin{macro}{\FamilyCounterKey} % \changes{v3.12}{2013/11/05}{neu}%^^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 der name des \LaTeX-Zählers. Erlaubt sind alle -% Integer-Werte. +% \changes{v3.15}{2014/12/03}{er wird ein (optionaler) Säumniswert +% unterstützt}^^A +% Dieses Makro definiert einen Schlüssel, der einen \LaTeX-Zähler an Hand +% 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. +% \begin{macro}{\Family@@Counter@@Key} +% \changes{v3.15}{2014/12/03}{neu (intern)}^^A +% \begin{macro}{\Family@Counter@Key} +% \changes{v3.15}{2014/12/03}{neu (intern)}^^A % \begin{macrocode} %<*base> -\newcommand*{\FamilyCounterKey}[4][.\@currname.\@currext]{% +\newcommand*{\FamilyCounterKey}[3][.\@currname.\@currext]{% + \@ifnextchar [%] + {\Family@@Counter@@Key{#1}{#2}{#3}}% + {\Family@Counter@Key{#1}{#2}{#3}}% +} +\newcommand*{\Family@@Counter@@Key}{} +\def\Family@@Counter@@Key#1#2#3[#4]#5{% + \@ifundefined{c@#5}{\newcounter{#5}}{}% + \DefineFamilyKey[{#1}]{#2}{#3}[{#4}]{\FamilySetCounter{#2}{#3}{#5}{##1}}% +} +\newcommand*{\Family@Counter@Key}[4]{% \@ifundefined{c@#4}{\newcounter{#4}}{}% \DefineFamilyKey[{#1}]{#2}{#3}{\FamilySetCounter{#2}{#3}{#4}{##1}}% } @@ -2406,29 +2464,55 @@ % \end{macrocode} % \end{macro} % \end{macro} +% \end{macro} +% \end{macro} % \begin{macro}{\FamilyCounterMacroKey} -% \changes{v3.12}{2013/11/05}{neu}%^^A +% \changes{v3.12}{2013/11/05}{neu}^^A +% \changes{v3.15}{2014/12/03}{er wird ein (optionaler) Säumniswert +% unterstützt}^^A +% Diese Anweisung arbeitet fast wie \cs{FamilyCounterKey}, allerdings wird +% 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 +% Makro. % \begin{macro}{\FamilySetCounterMacro} % \changes{v3.12}{2013/11/05}{neu}%^^A -% Diese Anweisungen arbeitet fast wie \cs{FamilyCounterKey} und -% \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. +% \changes{v3.15}{2014/12/17}{\cs{aftergroup} vor +% \cs{FamilyKeyStateProcessed}}^^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. +% \begin{macro}{\Family@@Counter@@Macro@@Key} +% \changes{v3.15}{2014/12/03}{neu (intern)}^^A +% \begin{macro}{\Family@Counter@Macro@Key} +% \changes{v3.15}{2014/12/03}{neu (intern)}^^A % \begin{macrocode} %<*base> -\newcommand*{\FamilyCounterMacroKey}[4][.\@currname.\@currext]{% +\newcommand*{\FamilyCounterMacroKey}[3][.\@currname.\@currext]{% + \@ifnextchar [%] + {\Family@@Counter@@Macro@@Key{#1}{#2}{#3}}% + {\Family@Counter@Macro@Key{#1}{#2}{#3}}% +} +\newcommand*{\Family@@Counter@@Macro@@Key}{} +\def\Family@@Counter@@Macro@@Key#1#2#3[#4]#5{% + \ifdefined#4\else\let#4\z@\fi + \DefineFamilyKey[{#1}]{#2}{#3}[{#4}]{\FamilySetCounterMacro{#2}{#3}{#5}{##1}}% +} +\newcommand*{\Family@Counter@Macro@Key}[4]{% \ifdefined#4\else\let#4\z@\fi \DefineFamilyKey[{#1}]{#2}{#3}{\FamilySetCounterMacro{#2}{#3}{#4}{##1}}% } \newcommand*{\FamilySetCounterMacro}[4]{% \begingroup - \ifiscount{#4}{\@tempcnta=#4\FamilyKeyStateProcessed}{% - \ifisdimen{#4}{\@tempcnta=#4\FamilyKeyStateProcessed}{% - \ifisskip{#4}{\@tempcnta=#4\FamilyKeyState\Processed}{% - \ifisnumexpr{#4}{\@tempcnta=#4\FamilyKeyStateProcessed}{% - \ifisdimexpr{#4}{\@tempcnta=#4\FamilyKeyStateProcessed}{% - \ifisinteger{#4}{\@tempcnta=#4\FamilyKeyStateProcessed}{% + \ifiscount{#4}{\@tempcnta=#4\aftergroup\FamilyKeyStateProcessed}{% + \ifisdimen{#4}{\@tempcnta=#4\aftergroup\FamilyKeyStateProcessed}{% + \ifisskip{#4}{\@tempcnta=#4\aftergroup\FamilyKeyState\Processed}{% + \ifisnumexpr{#4}{\@tempcnta=#4\aftergroup\FamilyKeyStateProcessed}{% + \ifisdimexpr{#4}{\@tempcnta=#4\aftergroup\FamilyKeyStateProcessed}{% + \ifisinteger{#4}{% + \@tempcnta=#4\aftergroup\FamilyKeyStateProcessed + }{% \ifiscounter{#4}{% \@tempcnta=\value{#4}\FamilyKeyStateProcessed}{% \FamilyUnknownKeyValue{#1}{#2}{#4}{% @@ -2448,25 +2532,44 @@ % \end{macrocode} % \end{macro} % \end{macro} +% \end{macro} +% \end{macro} % % \begin{macro}{\FamilyLengthKey} % \changes{v3.12}{2013/11/05}{neu}%^^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. +% \changes{v3.15}{2014/12/03}{er wird ein (optionaler) Säumniswert +% unterstützt}^^A +% Dieses Makro definiert einen Schlüssel, der eine \LaTeX-Länge an Hand +% 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. +% \begin{macro}{\Family@@Length@@Key} +% \changes{v3.15}{2014/12/03}{neu (intern)}^^A +% \begin{macro}{\Family@Length@Key} +% \changes{v3.15}{2014/12/03}{neu (intern)}^^A % \begin{macrocode} %<*base> -\newcommand*{\FamilyLengthKey}[4][.\@currname.\@currext]{% +\newcommand*{\FamilyLengthKey}[3][.\@currname.\@currext]{% + \@ifnextchar [%] + {\Family@@Length@@Key{#1}{#2}{#3}}% + {\Family@Length@Key{#1}{#2}{#3}}% +} +\newcommand*{\Family@@Length@@Key}{} +\def\Family@@Length@@Key#1#2#3[#4]#5{% + \ifdefined#5\else\newlength{#5}\fi + \DefineFamilyKey[{#1}]{#2}{#3}[{#4}]{\FamilySetLength{#2}{#3}{#5}{##1}}% +} +\newcommand*{\Family@Length@Key}[4]{% \ifdefined#4\else\newlength{#4}\fi \DefineFamilyKey[{#1}]{#2}{#3}{\FamilySetLength{#2}{#3}{#4}{##1}}% } % \end{macrocode} % \begin{macro}{\FamilySetLength} -% \changes{v3.12}{2013/11/05}{neu}%^^A -% Über diese Anwesiung wird der Wert dann gesetzt. Dabei ist das erste -% Argument die Familie, das zweite der Name des Schlüssels, das dritte der -% Name 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 +% Über diese Anwesiung wird der Wert dann gesetzt. Dabei ist das erste +% Argument die Familie, das zweite der Name des Schlüssels, das dritte der +% Name der \LaTeX-Länge, das vierte schließlich der gewünschte Wert. % \begin{macrocode} \newcommand*{\FamilySetLength}[4]{% \ifiscount{#4}{#3=#4\FamilyKeyStateProcessed}{% @@ -2474,9 +2577,11 @@ \ifisskip{#4}{#3=#4\FamilyKeyState\Processed}{% \ifisnumexpr{#4}{#3=#4\FamilyKeyStateProcessed}{% \ifisdimexpr{#4}{#3=#4\FamilyKeyStateProcessed}{% - \ifisglue{#4}{#3=#4\FamilyKeyStateProcessed}{% - \FamilyUnknownKeyValue{#1}{#2}{#4}{% - length values, counters, lengths, skips, dimens + \ifisglueexpr{#4}{#3=#4\FamilyKeyStateProcessed}{% + \ifisglue{#4}{#3=#4\FamilyKeyStateProcessed}{% + \FamilyUnknownKeyValue{#1}{#2}{#4}{% + length values, counters, lengths, skips, dimens + }% }% }% }% @@ -2489,31 +2594,61 @@ % \end{macrocode} % \end{macro} % \end{macro} +% \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 % \begin{macro}{\FamilySetLengthMacro} % \changes{v3.12}{2013/11/05}{neu}%^^A -% Diese Anweisungen arbeitet fast wie \cs{FamilyCounterKey} und -% \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. +% \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 +% Diese Anweisungen arbeitet fast wie \cs{FamilyCounterKey} und +% \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. +% \begin{macro}{\Family@@Length@@Macro@@Key} +% \changes{v3.15}{2014/12/03}{neu (intern)}^^A +% \begin{macro}{\Family@Length@Macro@Key} +% \changes{v3.15}{2014/12/03}{neu (intern)}^^A % \begin{macrocode} %<*base> -\newcommand*{\FamilyLengthMacroKey}[4][.\@currname.\@currext]{% +\newcommand*{\FamilyLengthMacroKey}[3][.\@currname.\@currext]{% + \@ifnextchar [%] + {\Family@@Length@@Macro@@Key{#1}{#2}{#3}}% + {\Family@Length@Macro@Key{#1}{#2}{#3}}% +} +\newcommand*{\Family@@Length@@Macro@@Key}{} +\def\Family@@Length@@Macro@@Key#1#2#3[#4]#5{% + \ifdefined#5\else\let#5\z@\fi + \DefineFamilyKey[{#1}]{#2}{#3}[{#4}]{\FamilySetLengthMacro{#2}{#3}{#5}{##1}}% +} +\newcommand*{\Family@Length@Macro@Key}[4]{% \ifdefined#4\else\let#4\z@\fi \DefineFamilyKey[{#1}]{#2}{#3}{\FamilySetLengthMacro{#2}{#3}{#4}{##1}}% } \newcommand*{\FamilySetLengthMacro}[4]{% \begingroup - \ifiscount{#4}{\@tempskipa=#4\FamilyKeyStateProcessed}{% - \ifisdimen{#4}{\@temskipa=#4\FamilyKeyStateProcessed}{% - \ifisskip{#4}{\@tempkipa=#4\FamilyKeyState\Processed}{% - \ifisnumexpr{#4}{\@tempskipa=#4\FamilyKeyStateProcessed}{% - \ifisdimexpr{#4}{\@tempskipa=#4\FamilyKeyStateProcessed}{% - \ifisglue{#4}{\@tempskipa=#4\FamilyKeyStateProcessed}{% - \FamilyUnknownKeyValue{#1}{#2}{#4}{% - length values, counters, lengths, skips, dimens + \ifiscount{#4}{\@tempskipa=#4\aftergroup\FamilyKeyStateProcessed}{% + \ifisdimen{#4}{\@tempskipa=#4\aftergroup\FamilyKeyStateProcessed}{% + \ifisskip{#4}{\@tempkipa=#4\aftergroup\FamilyKeyState\Processed}{% + \ifisnumexpr{#4}{\@tempskipa=#4\aftergroup\FamilyKeyStateProcessed}{% + \ifisdimexpr{#4}{% + \@tempskipa=#4\aftergroup\FamilyKeyStateProcessed + }{% + \ifisglueexpr{#4}{% + \@tempskipa=#4\aftergroup\FamilyKeyStateProcessed + }{% + \ifisglue{#4}{% + \@tempskipa=#4\aftergroup\FamilyKeyStateProcessed + }{% + \FamilyUnknownKeyValue{#1}{#2}{#4}{% + length values, counters, lengths, skips, dimens + }% }% }% }% @@ -2528,6 +2663,8 @@ % \end{macrocode} % \end{macro} % \end{macro} +% \end{macro} +% \end{macro} % % % \begin{macro}{\FamilyNumericalKey} |