summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/koma-script/scrkernel-basics.dtx
diff options
context:
space:
mode:
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.dtx237
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}