diff options
author | Karl Berry <karl@freefriends.org> | 2016-05-11 21:26:48 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2016-05-11 21:26:48 +0000 |
commit | 39c10427f8eee057dc28928380060a585e1e017b (patch) | |
tree | 6750074338d5e6b808cfca3671e2ab9763c328ae /Master/texmf-dist/source/latex/koma-script/scrkernel-sections.dtx | |
parent | a49931ca8756327265b8929a7a147045bf2b3506 (diff) |
koma-script (11may16)
git-svn-id: svn://tug.org/texlive/trunk@41038 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/koma-script/scrkernel-sections.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/koma-script/scrkernel-sections.dtx | 691 |
1 files changed, 358 insertions, 333 deletions
diff --git a/Master/texmf-dist/source/latex/koma-script/scrkernel-sections.dtx b/Master/texmf-dist/source/latex/koma-script/scrkernel-sections.dtx index c91d3652a3d..5bdedf913f7 100644 --- a/Master/texmf-dist/source/latex/koma-script/scrkernel-sections.dtx +++ b/Master/texmf-dist/source/latex/koma-script/scrkernel-sections.dtx @@ -1,8 +1,8 @@ -% \CheckSum{3851} +% \CheckSum{3692} % \iffalse meta-comment % ====================================================================== % scrkernel-sections.dtx -% Copyright (c) Markus Kohm, 2002-2015 +% Copyright (c) Markus Kohm, 2002-2016 % % 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-sections.dtx -% Copyright (c) Markus Kohm, 2002-2015 +% Copyright (c) Markus Kohm, 2002-2016 % % Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, % Version 1.3c, verteilt und/oder veraendert werden. @@ -55,7 +55,7 @@ % Right brace \} Tilde \~} % % \iffalse -%%% From File: $Id: scrkernel-sections.dtx 2212 2015-10-03 12:51:00Z kohm $ +%%% From File: $Id: scrkernel-sections.dtx 2438 2016-04-27 10:58:21Z kohm $ % The runs of run-time file generation: %<preidentify>%%% (run: preidentify) % - everything that is needed before selfidentification of resulting files @@ -78,9 +78,9 @@ \ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi \begingroup \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}} - \filedate$Date: 2015-10-03 14:51:00 +0200 (Sat, 03 Oct 2015) $ + \filedate$Date: 2016-04-27 12:58:21 +0200 (Wed, 27 Apr 2016) $ \def\filerevision$#1: #2 ${\gdef\filerevision{#2}} - \filerevision$Revision: 2212 $ + \filerevision$Revision: 2438 $ \edef\reserved@a{% \noexpand\endgroup \noexpand\ProvidesFile{scrkernel-sections.dtx}% @@ -450,11 +450,13 @@ % \changes{v2.95}{2004/01/15}{es wird erst unmittelbar vor dem Schließen % der Haupt-aux-Datei in diese geschrieben}^^A % \changes{v2.96a}{2006/12/07}{es wird \cs{immediate} geschrieben}^^A +% \changes{v3.20}{2016/03/25}{es wird \cs{csname}\dots\cs{endcsname} +% verwendet}^^A % \begin{macrocode} %<*body> \BeforeClosingMainAux{% \if@autodot\if@filesw\immediate\write\@mainaux{% - \string\global\string\@altsecnumformattrue}% + \string\global\string\csname\space @altsecnumformattrue\string\endcsname}% \fi\fi} %</body> % \end{macrocode} @@ -549,14 +551,24 @@ % \changes{v3.13a}{2014/09/11}{Neue interne Anweisung}^^A % \changes{v3.18}{2015/05/22}{verwende \cs{numexpr} für Argument 2} % \changes{v3.18}{2015/05/22}{verwende \cs{glueexpr} für Argument 3--5} +% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar} +% ersetzt}^^A % \begin{macro}{\scr@saved@startsection} % \changes{v3.13a}{2014/09/11}{Neue interne Anweisung}^^A +% \changes{v3.20}{2016/04/12}{Tests funktionieren jetzt auch mit +% \textsf{amsgen}}^^A % \KOMAScript{} benötigt ein eigenes \cs{@startsection}, weil die % Funktionalität des \cs{@startsection} aus dem \LaTeX-Kern nicht % genügt. Bevor allerdings die eigene Definition in Angriff genommen wird, % muss kontrolliert werden, ob die aufgefundene Definition noch den % Erwartungen entspricht. Alles andere wäre ein deutlicher Hinweis, dass % eventuell in \KOMAScript{} ebenfalls eine Anpassung vorzunehmen wäre. +% Da es offenbar Leute gibt, die bei der Umdefinierung von \cs{section} +% etc. mit Hilfe von \cs{@startsection} Leerzeichen zwischen die Argumente +% packen und gleichzeitig \textsf{amsgen} verwenden, sorgen wir hier dafür, +% dass dann trotzdem noch die Warnungen funktionieren und nebenbei der Code +% mit etwas Glück sogar ebenfalls. Dazu ist es notwendig, dass die Version von +% \cs{@startsection} gespeichert wird, die \cs{kernel@ifstar} verwendet. % \begin{macrocode} %<*body> \newcommand*{\scr@saved@startsection}[6]{% @@ -572,11 +584,33 @@ \else \addpenalty\@secpenalty\addvspace\@tempskipa \fi + \kernel@ifstar + {\@ssect{#3}{#4}{#5}{#6}}% + {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}% +} +\def\reserved@a#1#2#3#4#5#6{% + \if@noskipsec \leavevmode \fi + \par + \@tempskipa #4\relax + \@afterindenttrue + \ifdim \@tempskipa <\z@ + \@tempskipa -\@tempskipa \@afterindentfalse + \fi + \if@nobreak + \everypar{}% + \else + \addpenalty\@secpenalty\addvspace\@tempskipa + \fi \@ifstar {\@ssect{#3}{#4}{#5}{#6}}% {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}% } -\ifx\@startsection\scr@saved@startsection +\ifcase \ifx\@startsection\scr@saved@startsection 0 + \else + \ifx\@startsection\reserved@a 0 + \else 1 + \fi + \fi \newcommand*{\scr@startsection}[6]{% \if@noskipsec \leavevmode \fi \par @@ -591,7 +625,7 @@ \else \addpenalty\@secpenalty\addvspace\@tempskipa \fi - \@ifstar {% + \kernel@ifstar {% \csname scr@preto@ssect@hook\endcsname \def\scr@s@ct@@nn@m@{#1}% \@ssect{\glueexpr #3\relax}{\glueexpr #4\relax}{\glueexpr #5\relax}{#6}% @@ -622,7 +656,7 @@ }% \let\scr@saved@startsection\@startsection \newcommand*{\scr@startsection}[6]{% - \@ifstar {% + \kernel@ifstar {% \scr@saved@startsection{#1}{\numexpr #2\relax}{\glueexpr #3\relax}% {\glueexpr #4\relax}{\glueexpr #5\relax}{#6}*% }{% @@ -708,12 +742,14 @@ % % \begin{macro}{\SecDef} % \changes{v3.13a}{2014/09/11}{neue Anweisung}^^A +% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar} +% ersetzt}^^A % \begin{macro}{\secdef} % \changes{v3.13a}{2014/09/11}{Vollständige Neudefinition zur Optimierung % der Erweiterung für das optionale Argument}^^A % \begin{macrocode} %<*body> -\newcommand*{\SecDef}[2]{\@ifstar{#2}{\scr@section@dblarg{#1}}} +\newcommand*{\SecDef}[2]{\kernel@ifstar{#2}{\scr@section@dblarg{#1}}} \CheckCommand*{\secdef}[2]{\@ifstar{#2}{\@dblarg{#1}}} \let\secdef\SecDef %</body> @@ -1021,7 +1057,7 @@ Neither the then-code nor the else-code will be\MessageBreak executed.\MessageBreak You may change this and avoid the warning by LOCALLY\MessageBreak - setting \string\IsUsePrefixLine\space to either + setting \string\IfUsePrefixLine\space to either \string\@firstoftwo\space or\MessageBreak \string\@secondoftwo\space before using it% }% @@ -1057,7 +1093,9 @@ % \changes{v3.17}{2015/03/23}{Komplettumbau, um stilabhängige Optionen zu % ermöglichen}^^A % \changes{v3.18}{2015/05/22}{\cs{scr@dsc@def@style@\dots @command} -% definiert alle Stil abhängigen Anweisung}^^A +% definiert alle Stil abhängigen Anweisungen}^^A +% \changes{v3.20}{2015/10/03}{\cs{DeclareTOCStyleEntry} +% definiert die Verzeichnisstil abhängigen Anweisungen}^^A % Definition neuer oder Umdefinition existierender Gliederungsbefehle, die auf % \cs{scr@startsection} basieren. Ebenso wird ein Verzeichniseintrag erzeugt, % falls ein solcher noch nicht existiert. Die Deklaration geschieht über @@ -1076,7 +1114,7 @@ % werden, so ist \texttt{KOMAarg} zu verwenden. % \begin{macrocode} \newcommand*{\DeclareSectionCommandStyleOption}[3]{% - \DeclareSectionCommandDummyOption{#2}% + \AddToSectionCommandOptionsDoList{#2}% \expandafter\g@addto@macro\csname scr@dsc@style@#1@options\endcsname{% \DefineFamilyKey[.dsc]{KOMAarg}{#2}{#3}% }% @@ -1084,37 +1122,64 @@ % \end{macrocode} % \begin{macro}{\DeclareSectionCommandDummyOption} % \changes{v3.17}{2015/03/23}{neue Anweisung (intern)}^^A -% \begin{macro}{\scr@dsc@dummyoptions} -% \changes{v3.17}{2015/03/23}{Neu (intern)}^^A -% Definiert eine neue Dummy-Option für einen Stil eines -% Gliederungsbefehls. Das einzige Argument ist der Name der Option. Die -% Dummy-Optionen werden in \cs{scr@dsc@dummyoptions} gesammelt. -% \begin{macrocode} -\newcommand*{\DeclareSectionCommandDummyOption}[1]{% - \@ifstar {% - \g@addto@macro{\scr@dsc@dummyoptions}{% - \DefineFamilyKey[.dsc]{KOMAarg}{#1}[]{\FamilyKeyStateProcessed}% +% \changes{v3.20}{2015/11/18}{wird nicht mehr benötigt}^^A +% \end{macro}^^A \DeclareSectionCommandDummyOption +% \begin{macro}{\AddToSectionCommandOptionsDoList} +% \changes{v3.20}{2015/11/18}{neu} +% \begin{macro}{\@AddToSectionCommandOptionsDoList} +% \changes{v3.20}{2015/11/18}{neu (intern)} +% \begin{macro}{\scr@dsc@doopts} +% \changes{v3.20}{2015/11/18}{neu (intern)} +% Registriert eine neue Gliederungsbefehlsoption, indem sie der internen Liste +% der Gliederungsbefehlsoptionen hinzugefügt wird. +% \begin{macrocode} +\newcommand*{\AddToSectionCommandOptionsDoList}[1]{% + \kernel@ifnextchar [%] + {\@AddToSectionCommandOptionListWithDefault{#1}}% + {\l@addto@macro\scr@dsc@doopts{\do{#1}}}% +} +\newcommand*{\@AddToSectionCommandOptionListWithDefault}{} +\def\@AddToSectionCommandOptionListWithDefault#1[#2]{% + \l@addto@macro\scr@dsc@doopts{\do[{#2}]{#1}} +}% +\newcommand*{\scr@dsc@doopts}{} +% \end{macrocode} +% \end{macro}^^A \scr@dsc@dooptions +% \end{macro}^^A \@AddToSectionCommandOptionsListWithDefault +% \end{macro}^^A \AddToSectionCommandOptionsDoList +% \begin{macro}{\RelaxSectionCommandOptions} +% \changes{v3.20}{2015/11/18}{neu} +% Diese Option macht alle Gliederungsbefehlsoptionen ungültig. +% \begin{macrocode} +\newcommand*{\RelaxSectionCommandOptions}{% + \begingroup + \def\do@endgroup{\endgroup}% + \def\do{% + \kernel@ifnextchar [%] + {\@do}% + {\@do[]}% }% - }{% - \g@addto@macro{\scr@dsc@dummyoptions}{% - \DefineFamilyKey[.dsc]{KOMAarg}{#1}{\FamilyKeyStateProcessed}% + \def\@do[##1]##2{% + \l@addto@macro\do@endgroup{\RelaxFamilyKey[.dsc]{KOMAarg}{##2}}% }% - }% + \scr@dsc@doopts + \do@endgroup } -\newcommand*{\scr@dsc@dummyoptions}{} % \end{macrocode} -% \end{macro}^^A \scr@dsc@dummyoptions -% \end{macro}^^A \DeclareSectionCommandDummyOption +% \end{macro}^^A \RelaxSectionCommandOptions % \end{macro}^^A \DeclareSectionCommandStyleOption % \begin{macro}{\DeclareSectionCommandStyleLengthOption} % \changes{v3.17}{2015/03/23}{neue Anweisung}^^A +% \changes{v3.20}{2016/04/25}{Argument wird ggf. expandiert}^^A % Definiert eine für die aktuelle Ebene \cs{scr@dsc@current} eine neue % Längenoption und speichert das Ergebnis in einem Makro, das sich aus % Argument 3 gefolgt von der aktuellen Ebene gefolgt von Argument 4 ergibt. % \begin{macrocode} \newcommand*{\DeclareSectionCommandStyleLengthOption}[4]{% \DeclareSectionCommandStyleOption{#1}{#2}{% - \FamilySetLength{KOMAarg}{#2}{\@tempskipa}{##1}% + \protected@edef\reserved@a{% + \noexpand\FamilySetLength{KOMAarg}{#2}{\noexpand\@tempskipa}{##1}% + }\reserved@a \ifx\FamilyKeyState\FamilyKeyStateProcessed \ifscr@dsc@expandtopt \expandafter\edef\csname #3\scr@dsc@current#4\endcsname{% @@ -1129,15 +1194,18 @@ % \end{macro}^^A \DeclareSectionCommandStyleLengthOption % \begin{macro}{\DeclareSectionCommandStyleNumberOption} % \changes{v3.17}{2015/03/23}{neue Anweisung}^^A +% \changes{v3.20}{2016/04/25}{Argument wird expandiert}^^A % Definiert eine für die aktuelle Ebene \cs{scr@dsc@current} eine neue % Zahlenoption und speichert das Ergebnis in einem Makro, das sich aus % Argument 3 gefolgt von der aktuellen Ebene gefolgt von Argument 4 ergibt. % \begin{macrocode} \newcommand*{\DeclareSectionCommandStyleNumberOption}[4]{% \DeclareSectionCommandStyleOption{#1}{#2}{% - \FamilySetCounter{KOMAarg}{#2}{\@tempcnta}{##1}% + \protected@edef\reserved@a{% + \noexpand\FamilySetCounterMacro{KOMAarg}{#2}{\noexpand\reserved@a}{##1} + }\reserved@a \ifx\FamilyKeyState\FamilyKeyStateProcessed - \expandafter\edef\csname #3\scr@dsc@current#4 \endcsname{\the\@tempcnta}% + \expandafter\let\csname #3\scr@dsc@current#4 \endcsname\reserved@a \fi }% } @@ -1161,17 +1229,6 @@ } % \end{macrocode} % \end{macro}^^A \DeclareSectionCommandStyleFontOption -% Es folgt die Initialisierung zunächst der Dummys für die Optionen, die es -% immer gibt. (Erklärung dieser Optionen folgt unten.) -% \begin{macrocode} -\DeclareSectionCommandDummyOption{style} -\DeclareSectionCommandDummyOption{expandtopt}* -\DeclareSectionCommandDummyOption{increaselevel} -\DeclareSectionCommandDummyOption{level} -\DeclareSectionCommandDummyOption{toclevel} -\DeclareSectionCommandDummyOption{tocindent} -\DeclareSectionCommandDummyOption{tocnumwidth} -% \end{macrocode} % % \begin{macro}{\scr@dsc@style@section@options} % \changes{v3.17}{2015/03/23}{neue Anweisung (intern)}^^A @@ -1209,6 +1266,8 @@ % \end{macro}^^A \scr@dsc@style@section@options % \begin{macro}{\scr@dsc@def@style@section@command} % \changes{v3.18}{2015/05/21}{neue Anweisung (intern)}^^A +% \changes{v3.20}{2016/01/19}{korrekte Spitzmarkenprüfung für +% \cs{parfillskip}-Änderung}^^A % Diese Anweisung left fest, wie ein Gliederungsbefehl für den Stil % \texttt{section} zu definieren ist. Das einzige Argument ist dabei der % \meta{Name} der Gliederungsebene, beispielsweise \texttt{section}, @@ -1223,7 +1282,7 @@ {\csname scr@#1@beforeskip\endcsname}% {\csname scr@#1@afterskip\endcsname}% {% - \ifdim\glueexpr\csname scr@#1@beforeskip\endcsname <\z@ + \ifdim\glueexpr\csname scr@#1@afterskip\endcsname >\z@ \expandafter\ifnum\scr@v@is@gt{2.96}\relax \setlength{\parfillskip}{\z@ plus 1fil}% \fi @@ -1398,9 +1457,6 @@ % mit \cs{aftergroup}\cs{@gobbletwo} dafür, dass die Definition unterbleibt. % \begin{macrocode} \newcommand*{\scr@dsc@style@section@neededoptionstest}{% -%<trace> \typeout{TRACE: -%<trace> \string\scr@dsc@style@section@neededoptionstest\space for -%<trace> \scr@dsc@current}% \scr@ifundefinedorrelax{scr@\scr@dsc@current @sectionindent}{% \scr@declaresectioncommanderror{\scr@dsc@current}{section indent}{indent}% }{}% @@ -1428,9 +1484,6 @@ % \begin{macrocode} %<*book|report> \newcommand*{\scr@dsc@style@chapter@neededoptionstest}{% -%<trace> \typeout{TRACE: -%<trace> \string\scr@dsc@style@chapter@neededoptionstest\space for -%<trace> \scr@dsc@current}% \scr@ifundefinedorrelax{\scr@dsc@current pagestyle}{% \scr@declaresectioncommanderror{\scr@dsc@current}{initial page style} {pagestyle}% @@ -1467,9 +1520,6 @@ % mit \cs{aftergroup}\cs{@gobbletwo} dafür, dass die Definition unterbleibt. % \begin{macrocode} \newcommand*{\scr@dsc@style@part@neededoptionstest}{% -%<trace> \typeout{TRACE: -%<trace> \string\scr@dsc@style@part@neededoptionstest\space for -%<trace> \scr@dsc@current}% %<*book|report> \scr@ifundefinedorrelax{\scr@dsc@current pagestyle}{% \scr@declaresectioncommanderror{\scr@dsc@current}{initial page style} @@ -1500,9 +1550,10 @@ % \end{macro}^^A \scr@dsc@style@part@neededoptionstest % % \begin{macro}{\ifscr@dsc@parametersonly} -% \changes{v3.17}{2015/03/24}{neu} +% \changes{v3.17}{2015/03/24}{neu}^^A +% \changes{v3.20}{2015/11/18}{es gibt keine Dummy-Optionen mehr}^^A % Dieser Schalter wird verwendet, um die Einstellungen entsprechend dem -% aktuell gültigen Stil zu ändern, die zugehörige Anweisunge selbst aber nicht +% aktuell gültigen Stil zu ändern, die zugehörige Anweisung selbst aber nicht % neu zu definieren. Er wird von einem leeren \texttt{style}-Wert lokal % gesetzt. % \begin{macrocode} @@ -1514,19 +1565,15 @@ \newcommand*{\DeclareSectionCommand}[2][]{% \edef\scr@dsc@current{#2}% % \end{macrocode} -% Zunächst sind alle für Gliederungsbefehle bekannten Optionen nur -% dummy-Optionen. -% \begin{macrocode} - \scr@dsc@dummyoptions -% \end{macrocode} -% Die einzige Optionen, die wir direkt auswerten, ist der Stil: -% \begin{description}\item[\texttt{style}] Stil der -% Gliederungsebene\end{description} +% Im ersten Durchlauf werden nur die Stil-Optionen ausgewertet: +% \begin{description} +% \item[\texttt{style}] Stil der Gliederungsebene +% \end{description} % \begin{macrocode} \scr@dsc@parametersonlyfalse \DefineFamilyKey[.dsc]{KOMAarg}{style}{% - \ifstr{##1}{}{% - \ifscr@dsc@parametersonlytrue + \IfArgIsEmpty{##1}{% + \scr@dsc@parametersonlytrue \FamilyKeyStateProcessed }{% \scr@ifundefinedorrelax{scr@dsc@def@style@##1@command}{% @@ -1537,7 +1584,65 @@ }% }% }% +% \end{macrocode} +% \begin{description} +% \item[\texttt{tocstyle}] +% \changes{v3.20}{2015/11/12}{Option \texttt{tocstyle} frühzeitig +% auswerten}^^A +% Verzeichnis-Eintrags-Stil, damit auch für diesen anschließend die Optionen +% definiert bzw. aktiviert werden können. +% \end{description} +% \begin{macrocode} + \DefineFamilyKey[.dsc]{KOMAarg}{tocstyle}{% + \IfArgIsEmpty{##1}{% + \expandafter\let\csname scr@dte@\scr@dsc@current @style\endcsname + \relax + \FamilyKeyStateProcessed + }{% +%<trace> \typeout{TRACE: option tocstyle=##1}% +%<trace> \typeout{TRACE: command=\scr@dsc@current}% + \scr@ifundefinedorrelax{scr@dte@def@l@##1}{% +%<trace> \typeout{TRACE: style not defined}% + \FamilyKeyStateUnknownValue + }{% +%<trace> \typeout{TRACE: style defined}% + \@namedef{scr@dte@\scr@dsc@current @style}{##1}% + \FamilyKeyStateProcessed + }% + }% + }% +% \end{macrocode} +% \begin{description} +% \item[\texttt{@else@}] +% \changes{v3.20}{2015/11/18}{Option \texttt{tocstyle} frühzeitig +% auswerten}^^A +% Damit keine anderen Optionen ausgewertet werden müssen aber auch nicht als +% unbekannte Optionen einen Fehler erzeugen, wird diese Spezialoption +% definiert, die einfach nur \cs{FamilyKeyStateProcessed} setzt. +% \end{description} +% \begin{macrocode} + \DefineFamilyKey[.dsc]{KOMAarg}{@else@}{% +%<*trace> + \typeout{TRACE: ignoring option `@else@=\detokenize{##1}'}% + \typeout{TRACE: + \string\scr@key@atlist=`\detokenize\expandafter{\scr@key@atlist}'}% + \typeout{TRACE: + \string\scr@key@name=`\detokenize\expandafter{\scr@key@name}'}% + \typeout{TRACE: + \string\scr@key@value=`\detokenize\expandafter{\scr@key@value}'}% +%</trace> + \FamilyKeyStateProcessed + }% \FamilyExecuteOptions[.dsc]{KOMAarg}{#1}% +% \end{macrocode} +% \changes{v3.20}{2015/11/18}{Rüchnahme der Optionen nach dem ersten +% Durchgang}^^A +% Nach dem ersten Druchgang müssen alle Optionen wieder zurückgenommen +% werden. +% \begin{macrocode} + \RelaxFamilyKey[.dsc]{KOMAarg}{@else@}% + \RelaxFamilyKey[.dsc]{KOMAarg}{tocstyle}% + \RelaxFamilyKey[.dsc]{KOMAarg}{style}% \begingroup \scr@ifundefinedorrelax{scr@\scr@dsc@current @style}{% \scr@declaresectioncommanderror{\scr@dsc@current} @@ -1546,13 +1651,79 @@ \endgroup \@firstofone{% % \end{macrocode} -% Nach nun der Stil für den Gliederungsbefehl bekannt ist, können wir dessen -% Optionen aktivieren: +% \changes{v3.20}{2015/11/12}{keine Dummy-Optionen für den echten Lauf}^^A +% Nachdem nun der Stil für den Gliederungsbefehl bekannt ist, können wir +% dessen Optionen aktivieren: % \begin{macrocode} - \scr@dsc@dummyoptions %<trace> \typeout{TRACE: style=\@nameuse{scr@\scr@dsc@current @style}}% \@nameuse{scr@dsc@style@\@nameuse{scr@\scr@dsc@current @style}@options}% % \end{macrocode} +% Außerdem muss der Verzeichniseintrags-Stils initialisiert werden: +% \begin{macrocode} +%<trace> \typeout{TRACE: tocstyle=% +%<trace> \@nameuse{scr@dte@\scr@dsc@current @style}}% + \scr@ifundefinedorrelax{scr@dte@\scr@dsc@current @style}{% + \scr@ifundefinedorrelax{l@\scr@dsc@current}{% + \@namedef{scr@dte@\scr@dsc@current @style}{default}% + }{}% + }{}% +% \end{macrocode} +% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by +% \cs{kernel@ifnextchar}}^^A +% An dieser Stelle müssen die Optionen des Verzeichniseintrags auf Optionen +% der Gliederungsebene abgebildet werden. Dazu erhalten sie in der +% Gliederungebene den Präfix \texttt{toc}. Das bedeutet gleichzeitig, dass es +% keine Verzeichniseintragsoption Namens \texttt{style} geben kann und dass +% Gliederungsoptionen nicht mit \texttt{toc} beginnen dürfen. +% \begin{macrocode} + \let\scr@dsc@tocstyle@options\@empty + \let\scr@dsc@extra@relax@opts\@empty + \scr@ifundefinedorrelax{scr@dte@\scr@dsc@current @style}{}{% + \begingroup + \def\scr@dte@current{#2}% + \edef\reserved@a{% + \noexpand\@ExecuteTOCEntryStyleInitCode{% + \@nameuse{scr@dte@\scr@dsc@current @style}% + }{\scr@dsc@current}% + }\reserved@a + \def\do@endgroup{\endgroup}% + \def\do##1{% + \l@addto@macro\do@endgroup{% + \l@addto@macro\scr@dsc@extra@relax@opts{% + \RelaxFamilyKey[.dsc]{KOMAarg}{toc##1}% + }% + }% + \kernel@ifnextchar[%] + {\@dodefault{##1}}% + {\@donodefault{##1}}% + }% + \def\@donodefault##1{% + \l@addto@macro\do@endgroup{% + \DefineFamilyKey[.dsc]{KOMAarg}{toc##1}{% + \l@addto@macro{\scr@dsc@tocstyle@options}{##1={####1},}% + \FamilyKeyStateProcessed + }% + }% + }% + \def\@dodefault##1[##2]{% + \l@addto@macro\do@endgroup{% + \DefineFamilyKey[.dsc]{KOMAarg}{toc##1}[##2]{% + \l@addto@macro{\scr@dsc@tocstyle@options}{##1={####1},}% + \FamilyKeyStateProcessed + }% + }% + }% + \scr@dte@doopts + \do@endgroup + }% +% \end{macrocode} +% Die Optionen für die Stile von Verzeichniseintrag und Gliederungsebene +% werden nicht erneut benötigt, müssten aber natürlich erneut verarbeitet +% werden. +% \begin{macrocode} + \DefineFamilyKey[.dsc]{KOMAarg}{style}{\FamilyKeyStateProcessed}% + \DefineFamilyKey[.dsc]{KOMAarg}{tocstyle}{\FamilyKeyStateProcessed}% +% \end{macrocode} % Dazu kommen einige Optionen, die es schlicht immer gibt: % \begin{description}\item[\texttt{expandtopt}] Schalter, um die Längen zur % Definitionszeit statt zur Anwendungszeit komplett zu expandieren. Das @@ -1613,66 +1784,47 @@ \FamilyStringKey[.dsc]{KOMAarg}{counterwithin}{\scr@local@counterwithin}% \let\scr@local@counterwithin\relax % \end{macrocode} -% \begin{description}\item[\texttt{toclevel}] Ebene im Inhaltsverzeichnis -% (Voreinstellung ist derselbe Wert wie für level)\end{description} +% \begin{description} +% \item[\texttt{toclevel}] Ebene im Inhaltsverzeichnis (Voreinstellung ist +% derselbe Wert wie für level); diese Option gibt es nur, wenn der +% Verzeichnisstil sie unterstützt (was jeder Verzeichnisstil +% sollte); wenn allerdings ein Offset dafür definiert ist, dann wird die +% Option nicht einfach an den Stil weitergereicht, muss also noch einmal +% umdefiniert werden. +% \end{description} % \begin{macrocode} - \scr@ifundefinedorrelax{scr@local@tocleveloffset}{% - \edef\reserved@a{% - \noexpand\FamilyCounterMacroKey[.dsc]{KOMAarg}{toclevel}{% - \expandafter\noexpand\csname \scr@dsc@current tocdepth\endcsname}% - }\reserved@a - }{% - \edef\reserved@a{% - \noexpand\DefineFamilyKey[.dsc]{KOMAarg}{toclevel}{% - \noexpand\FamilySetCounterMacro{KOMAarg}{toclevel}{% - \expandafter\noexpand\csname \scr@dsc@current tocdepth\endcsname - }% - \unexpanded{% - {\numexpr ##1+\scr@local@tocleveloffset\relax}% - \edef\scr@local@tocleveloffset{% - \the\numexpr\scr@local@tocleveloffset - +\scr@local@levelincrease\relax + \scr@ifundefinedorrelax{scr@local@tocleveloffset}{}{% + \scr@ifundefinedorrelax{KV@KOMAarg.dsc@toclevel}{% + }{% + \DefineFamilyKey[.dsc]{KOMAarg}{toclevel}{% + \edef\reserved@a{% + \noexpand\l@addto@macro{\noexpand\scr@dsc@tocstyle@options}{% + level=\the\numexpr ##1+\scr@local@tocleveloffset\relax,% }% + }\reserved@a + \edef\scr@local@tocleveloffset{% + \the\numexpr\scr@local@tocleveloffset+\scr@local@levelincrease\relax }% + \FamilyKeyStateProcessed }% - }\reserved@a - }% -% \end{macrocode} -% \begin{description}\item[\texttt{tocindent}] Einzug des -% Inhaltsverzeichniseintrags\end{description} -% \begin{macrocode} - \DefineFamilyKey[.dsc]{KOMAarg}{tocindent}{% - \FamilySetLength{KOMAarg}{#2}{\@tempskipa}{##1}% - \ifx\FamilyKeyState\FamilyKeyStateProcessed - \ifscr@dsc@expandtopt - \expandafter\edef\csname scr@\scr@dsc@current @tocindent\endcsname{% - \the\@tempskipa}% - \else - \expandafter\edef\csname scr@\scr@dsc@current @tocindent\endcsname{% - ##1}% - \fi - \fi - }% -% \end{macrocode} -% \begin{description}\item[\texttt{tocnumwidth}] Breite der Nummer des -% Inhaltsverzeichniseintrags\end{description} -% \begin{macrocode} - \DefineFamilyKey[.dsc]{KOMAarg}{tocnumwidth}{% - \FamilySetLength{KOMAarg}{#2}{\@tempskipa}{##1}% - \ifx\FamilyKeyState\FamilyKeyStateProcessed - \ifscr@dsc@expandtopt - \expandafter\edef\csname scr@\scr@dsc@current @tocnumwidth\endcsname{% - \the\@tempskipa}% - \else - \expandafter\edef\csname scr@\scr@dsc@current @tocnumwidth\endcsname{% - ##1}% - \fi - \fi + }% }% % \end{macrocode} -% Optionen ausführen: +% \changes{v3.20}{2015/11/12}{Optionen werden nur temporär definiert}^^A +% Optionen ausführen und anschließend wieder freigeben. % \begin{macrocode} \FamilyExecuteOptions[.dsc]{KOMAarg}{#1}% + \scr@dsc@extra@relax@opts + \let\scr@dsc@extra@relax@opts\relax + \RelaxSectionCommandOptions + \RelaxFamilyKey[.dsc]{KOMAarg}{style}% + \RelaxFamilyKey[.dsc]{KOMAarg}{tocstyle}% + \RelaxFamilyKey[.dsc]{KOMAarg}{expandtopt}% + \scr@ifundefinedorrelax{scr@local@levelincrease}{}{% + \RelaxFamilyKey[.dsc]{KOMAarg}{increaselevel}% + }% + \RelaxFamilyKey[.dsc]{KOMAarg}{level}% + \RelaxFamilyKey[.dsc]{KOMAarg}{counterwithin}% % \end{macrocode} % Testen, ob alle benötigten Optionen für die (Um-)Definierung des % Gliederungsbefehls gesetzt sind: @@ -1681,14 +1833,6 @@ \scr@ifundefinedorrelax{\scr@dsc@current numdepth}{% \scr@declaresectioncommanderror{\scr@dsc@current}{section level}{level}% }{}% - \scr@ifundefinedorrelax{scr@\scr@dsc@current @tocindent}{% - \scr@declaresectioncommanderror{\scr@dsc@current}{toc entry indent} - {tocindent}% - }{}% - \scr@ifundefinedorrelax{scr@\scr@dsc@current @tocnumwidth}{% - \scr@declaresectioncommanderror{\scr@dsc@current}{toc entry number - width}{tocnumwidth}% - }{}% \@nameuse{scr@dsc@style@% \@nameuse{scr@\scr@dsc@current @style}% @neededoptionstest}% @@ -1701,6 +1845,7 @@ % \end{macrocode} % Zunächst sicherstellen, dass der Zähler existiert und ggf. dessen % Ausgabe anpassen: +% \changes{v3.20}{2015/10/15}{fehlendes \cs{expandafter} ergänzt}^^A % \begin{macrocode} \@ifundefined{c@#2}{\newcounter{#2}}{}% \ifx\scr@local@counterwithout\relax @@ -1716,7 +1861,7 @@ \else \@removefromreset{#2}{\scr@local@counterwithin}% \@addtoreset{#2}{\scr@local@counterwithin}% - \expandafter\def\csname the#2\expandafter\endcsname{% + \expandafter\def\csname the#2\expandafter\endcsname\expandafter{% \csname the\scr@local@counterwithin\endcsname.\arabic{#2}}% \fi \fi @@ -1767,22 +1912,27 @@ % Und es gehören Befehle dazu, um einen Eintrag ins Inhaltsverzeichnis zu % schreiben und den Eintrag auch darzustellen: % \begin{macrocode} - \scr@ifundefinedorrelax{#2tocdepth}{% - \expandafter\let\csname #2tocdepth\expandafter\endcsname - \csname #2numdepth\endcsname - }{}% \expandafter\providecommand\expandafter*% \csname add#2tocentry\endcsname[2]{% \addtocentrydefault{#2}{##1}{##2}% }% + \scr@ifundefinedorrelax{scr@dte@#2@style}{% + }{% + \DeclareTOCStyleEntry[\scr@dsc@tocstyle@options]{% + \@nameuse{scr@dte@#2@style}% + }{#2}% + }% \scr@ifundefinedorrelax{l@#2}{% - \expandafter\edef\csname l@#2\endcsname{% - \noexpand\bprot@dottedtocline - \expandafter\noexpand\csname #2tocdepth\endcsname - \expandafter\noexpand\csname scr@#2@tocindent\endcsname - \expandafter\noexpand\csname scr@#2@tocnumwidth\endcsname - }% + \DeclareTOCStyleEntry[\scr@dsc@tocstyle@options]{default}{#2}% }{}% +% \end{macrocode} +% \changes{v3.20}{2015/0/07}{\textsf{hyperref} bei den Ebenen der +% Verzeichniseinträge berücksichtigen}^^A +% \begin{macrocode} + \scr@ifundefinedorrelax{toclevel@part}{}{% + \expandafter\let\csname toclevel@#2\expandafter\endcsname + \csname #2tocdepth\endcsname + }% }% }% \let\scr@dsc@current\relax @@ -1890,9 +2040,9 @@ % \begin{macrocode} \newcommand*{\DeclareSectionCommands}[2][]{% \edef\reserved@a{#2}% - \let\scr@local@levelincrease\z@ - \let\scr@local@leveloffset\z@ - \let\scr@local@tocleveloffset\z@ + \def\scr@local@levelincrease{\z@}% + \def\scr@local@leveloffset{\z@}% + \def\scr@local@tocleveloffset{\z@}% \@for\reserved@a:=\reserved@a\do{% \edef\reserved@a{% \unexpanded{\DeclareSectionCommand[{#1}]}{\reserved@a}% @@ -1916,9 +2066,9 @@ % \begin{macrocode} \newcommand*{\DeclareNewSectionCommands}[2][]{% \edef\reserved@a{#2}% - \let\scr@local@levelincrease\z@ - \let\scr@local@leveloffset\z@ - \let\scr@local@tocleveloffset\z@ + \def\scr@local@levelincrease{\z@}% + \def\scr@local@leveloffset{\z@}% + \def\scr@local@tocleveloffset{\z@}% \@for\reserved@a:=\reserved@a\do{% \@ifundefined{\reserved@a}{}{% \ClassError{\KOMAClassName}{% @@ -1957,9 +2107,9 @@ % \begin{macrocode} \newcommand*{\RedeclareSectionCommands}[2][]{% \edef\reserved@a{#2}% - \let\scr@local@levelincrease\z@ - \let\scr@local@leveloffset\z@ - \let\scr@local@tocleveloffset\z@ + \def\scr@local@levelincrease{\z@}% + \def\scr@local@leveloffset{\z@}% + \def\scr@local@tocleveloffset{\z@}% \@for\reserved@a:=\reserved@a\do{% \@ifundefined{\reserved@a}{% \ClassError{\KOMAClassName}{% @@ -1996,9 +2146,9 @@ % \begin{macrocode} \newcommand*{\ProvideSectionCommands}[2][]{% \edef\reserved@a{#2}% - \let\scr@local@levelincrease\z@ - \let\scr@local@leveloffset\z@ - \let\scr@local@tocleveloffset\z@ + \def\scr@local@levelincrease{\z@}% + \def\scr@local@leveloffset{\z@}% + \def\scr@local@tocleveloffset{\z@}% \@for\reserved@a:=\reserved@a\do{% \@ifundefined{\reserved@a}{% \edef\reserved@a{% @@ -2010,9 +2160,9 @@ % Wenn die Anweisung bereits definiert ist, dann müssen wir trotzdem die % Optionen auswerten, wobei allerdings nur die Option \texttt{level} und % \texttt{increaselevel} eine Wirkung haben dürfen. Der Rest wird per -% dummy-Optionen erledigt. +% \texttt{@else}-Optionen erledigt. % \begin{macrocode} - \scr@dsc@dummyoptions + \DefineFamilyKey[.dsc]{KOMAarg}{@else@}{\FamilyKeyStateProcessed}% \FamilyCounterMacroKey[.dsc]{KOMAarg}{increaselevel}[1]% {\scr@local@levelincrease}% \DefineFamilyKey[.dsc]{KOMAarg}{level}{% @@ -2020,11 +2170,18 @@ \edef\scr@local@leveloffset{% \the\numexpr\scr@local@leveloffset+\scr@local@levelincrease\relax }% + }% + \DefineFamilyKey[.dsc]{KOMAarg}{toclevel}{% + \FamilySetCounterMacro{KOMAarg}{toclevel}{\reserved@b}{##1}% \edef\scr@local@tocleveloffset{% \the\numexpr\scr@local@tocleveloffset+\scr@local@levelincrease\relax }% }% \FamilyExecuteOptions[.dsc]{KOMAarg}{#1}% + \RelaxFamilyKey[.dsc]{KOMAarg}{toclevel}% + \RelaxFamilyKey[.dsc]{KOMAarg}{level}% + \RelaxFamilyKey[.dsc]{KOMAarg}{increaselevel}% + \RelaxFamilyKey[.dsc]{KOMAarg}{@else@}% }% }% \let\scr@local@levelincrease\relax @@ -2065,6 +2222,8 @@ % \end{macro} % \begin{macro}{\set@preamble} % \changes{v2.8p}{2001/09/25}{neu (intern)}^^A +% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by +% \cs{kernel@ifnextchar}}^^A % Das Makro \cs{set@preamble} dient allgemein der Defintion einer % Präambel (für Gliederungsüberschriften). Als Argument wird der % Name der Gliederungsebene übergeben. Danach folgt ein optionales @@ -2075,6 +2234,8 @@ % Präambel. Die Definition der Präambel erfolgt global. % \begin{macro}{\set@@preamble} % \changes{v2.8p}{2001/09/25}{neu (intern)}^^A +% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by +% \cs{kernel@ifnextchar}}^^A % \begin{macro}{\set@@@preamble} % \changes{v2.8p}{2001/09/25}{neu (intern)}^^A % \begin{macro}{\set@@@@preamble} @@ -2089,7 +2250,7 @@ % \end{macrocode} % Zunächst wird das erste optionale Argument gesucht. % \begin{macrocode} - \@ifnextchar [%] + \kernel@ifnextchar [%] {\set@@preamble{#1}}{\set@@@preamble{#1}[][\hsize]}% } \newcommand*{\set@@preamble}{} @@ -2098,7 +2259,7 @@ % Wenn ein optionales Argument existiert, kann es auch ein zweites % geben. Wenn nicht, wird mit der Voreinstellung gearbeitet. % \begin{macrocode} - \@ifnextchar [%] + \kernel@ifnextchar [%] {\set@@@preamble{#1}[{#2}]}{\set@@@preamble{#1}[{#2}][\hsize]}% } \newcommand{\set@@@preamble}{} @@ -2271,19 +2432,11 @@ \newcommand*{\bprot@dottedtocline}[5]{% \expandafter\ifnum\scr@v@is@gt{2.96}\relax \ifnum #1>\c@tocdepth \else - \begingroup - \@tempcnta 20010 - \advance \@tempcnta by -#1 - \ifnum \@tempcnta>\lastpenalty - \endgroup + \ifnum \lastpenalty<\numexpr 20010-#1\relax \addpenalty{\@lowpenalty}% - \else - \endgroup \fi \@dottedtocline{#1}{#2}{#3}{#4}{#5}% - \@tempcnta 20009 - \advance \@tempcnta by -#1 - \penalty\@tempcnta + \penalty \numexpr 20009-#1\relax \fi \else \@dottedtocline{#1}{#2}{#3}{#4}{#5}% @@ -2597,7 +2750,6 @@ % \begin{macrocode} \newcommand{\scr@@startpart}{} \long\def\scr@@startpart#1[#2]#3{% -%<trace> \typeout{TRACE: \string\scr@@startpart{#1}}% % \end{macrocode} % \changes{v3.10}{2011/08/30}{Integration der Erweiterung für das optionale % Argument der Gliederungsbefehle}^^A @@ -2747,7 +2899,6 @@ % ist der \meta{Text} für die Überschrift. % \begin{macrocode} \newcommand{\scr@@startspart}[2]{% -%<trace> \typeout{TRACE: \string\scr@@startspart{#1}}% % \end{macrocode} % Für Leute, die unbedingt nach der Sternversion noch ein \cs{addcontentsline} % anfügen wollen, muss hier ebenfalls der \textsf{hyperref}-Hook ausgeführt @@ -2970,6 +3121,7 @@ % verwendet}^^A % \changes{v3.15}{2014/12/23}{Verwendung von \cs{parttocdepth} und % \cs{scr@part@numwidth}}^^A +% \changes{v3.20}{2015/10/06}{Überführung in Verzeichnisstil}^^A % Der Eintrag für \cs{part}. Es werden einige Hilfsmakros passend zu % \cs{DeclareSectionCommand} definiert. Dadurch können diverse Einstellungen % darüber geändert werden. Es kann jedoch derzeit kein neuer Stil zugewiesen @@ -2977,74 +3129,14 @@ % \begin{macro}{\scr@part@tocindent} % \changes{v3.15}{2014/12/02}{neue (interne) Anweisung}^^A % \changes{v3.18}{2015/06/09}{indirekt über \cs{DeclareSectionCommand}}^^A -% Wird nicht verwendet aber zwecks besserer Kompatibilität mit -% \cs{DeclareSectionCommand} definiert. +% \changes{v3.20}{2015/11/06}{wird nun auch verwendet}^^A +% Der Einzug des Eintrags noch vor der Nummer. % \end{macro}^^A \scr@part@tocindent % \begin{macro}{\scr@part@tocnumwidth} % \changes{v3.15}{2014/12/02}{neue (interne) Anweisung}^^A % \changes{v3.18}{2015/06/09}{indirekt über \cs{DeclareSectionCommand}}^^A % Die definierte Breite der Nummer für den Eintrag ins Inhaltsverzeichnis. % \end{macro} -% \begin{macrocode} -\newcommand*\l@part[2]{% - \ifnum \c@tocdepth <\parttocdepth \else -%<article> \addpenalty{\@secpenalty}% -%<book|report> \addpenalty{-\@highpenalty}% - \addvspace{2.25em \@plus\p@}% -% \end{macrocode} -% \changes{v2.5e}{1998/07/17}{geänderte part-Formatierung ragte in -% den linken Rand}^^A -% \changes{v2.9k}{2003/01/02}{Anpassung an Option \texttt{tocleft}}^^A -% \begin{macrocode} - \setlength{\@tempdima}{\scr@part@tocnumwidth}% - \if@tocleft - \ifx\toc@l@number\@empty\else - \setlength\@tempdima{0\toc@l@number}% - \fi - \fi - \begingroup - \parindent \z@ \rightskip \@pnumwidth - \parfillskip -\@pnumwidth -% \end{macrocode} -% \changes{v2.5c}{1997/11/25}{Formatierung bei Zeilenumbruch im -% part-Eintrag korrigiert}^^A -% \changes{v2.5e}{1998/07/17}{beinhaltet \cs{sectfont} eine -% Größenangabe, so wird diese überschrieben}^^A -% \begin{macrocode} - \leavevmode - \advance\leftskip\@tempdima - \hskip -\leftskip - \usekomafont{partentry}{#1\nobreak - \usekomafont{partentrypagenumber}{\hfil\nobreak - \hb@xt@\@pnumwidth{\hss#2}}}\par -% \end{macrocode} -% \changes{v2.96b}{2006/11/30}{Umbruch zwischen \cs{part}-Eintrag im -% Inhaltsverzeichnis und untergeordneten Einträgen verhindern}^^A -% Aus unerfindlichen Gründen war es bis Version~2.96 erlaubt, dass zwischen -% der \cs{part}-Überschrift und der nachfolgenden Überschrift ein Umbruch -% stattfinden kann. Ab Version~2.96a gilt das nur noch, wenn die nachfolgende -% Überschrift wiederum eine \cs{part}-Überschrift ist. -% \begin{macrocode} - \expandafter\ifnum\scr@v@is@gt{2.96}\relax - \endgroup - \penalty20010 - \else -%<*article> - \if@compatibility - \global\@nobreaktrue -% \end{macrocode} -% \changes{v2.3g}{1996/01/14}{fehlendes Kommentarzeichen ergänzt}^^A -% \begin{macrocode} - \everypar{\global\@nobreakfalse\everypar{}}% - \else -%</article> - \penalty\@highpenalty -%<article> \fi - \endgroup - \fi - \fi -} -% \end{macrocode} % \end{macro}^^A \l@part % % @@ -3662,9 +3754,11 @@ \chapterheadstartvskip % \end{macrocode} % Dann die eigentliche Überschrift innerhalb einer Gruppe. +% \changes{v3.20}{2015/12/23}{\cs{parfillskip} auf \texttt{\cs{z@} plus +% 1fil} gesetzt}^^A % \begin{macrocode} {% - \setlength{\parindent}{\z@}\setlength{\parfillskip}{\fill}% + \setlength{\parindent}{\z@}\setlength{\parfillskip}{\z@ plus 1fil}% % \end{macrocode} % \changes{v3.19}{2015/08/02}{Verwendung von \cs{chapterlinesformat} und % \cs{chapterlineswithprefixformat}}^^A @@ -3743,13 +3837,15 @@ % \cs{raggedsection}}^^A % \changes{v3.19}{2015/08/02}{an die Änderungen bei \cs{scr@@makechapterhead} % angepasst}^^A +% \changes{v3.20}{2015/12/23}{\cs{parfillskip} auf \texttt{\cs{z@} plus +% 1fil} gesetzt}^^A % \begin{macrocode} \newcommand*{\scr@@makeschapterhead}[2]{% \@tempskipa=\glueexpr \csname scr@#1@beforeskip\endcsname\relax\relax \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi \chapterheadstartvskip {% - \setlength{\parindent}{\z@}\setlength{\parfillskip}{\fill}% + \setlength{\parindent}{\z@}\setlength{\parfillskip}{\z@ plus 1fil}% \let\IfUseNumber\secondoftwo \if@chapterprefix \let\IfUsePrefixLine\@firstoftwo @@ -4070,6 +4166,7 @@ Please update hyperref to at least version 6.71b}}} %</book> +%</body> % \end{macrocode} % \end{macro}^^A \@saddchap % \end{macro}^^A \@addchap @@ -4092,6 +4189,7 @@ % \cs{scr@chapter@tocnumwidth}}^^A % \changes{v3.15}{2014/12/10}{Verwendung von \cs{addvspace} statt \cs{vskip} % für den Abstand am Anfang}^^A +% \changes{v3.20}{2015/10/06}{überführt in Verzeichnisstil}^^A % Für die Definition des Kapiteleintrags ins Inhaltsverzeichnis werden einige % Parameter von \cs{DeclareSectionCommand} definiert und teilweise % verwendet. Damit kann man dann zumindest einige Änderungen mit @@ -4100,7 +4198,8 @@ % \begin{macro}{\scr@chapter@tocindent} % \changes{v3.15}{2014/12/02}{neue (interne) Anweisung}^^A % \changes{v3.18}{2015/05/20}{indirekt über \cs{DeclareSectionCommand}}^^A -% Der Einzug des Eintrags wird nicht verwendet. +% \changes{v3.20}{2015/11/06}{wird nun auch verwendet}^^A +% Der Einzug des Eintrags noch vor der Nummer. % \end{macro}^^A \scr@chapter@tocindent % \begin{macro}{\scr@chapter@tocnumwidth} % \changes{v3.15}{2014/12/02}{neue (interne) Anweisung}^^A @@ -4112,65 +4211,17 @@ % Seit Version~3.15 kann man mit dieser Option Pünktchen zwischen Text und % Seitenzahl in den Kapiteleinträgen einschalten. % \begin{macrocode} -%</body> %<*option> \KOMA@ifkey{chapterentrydots}{@chapterentrywithdots} %</option> -%<*body> % \end{macrocode} % \end{option}^^A chapterentrydots -% \begin{macrocode} -\newcommand*\l@chapter[2]{% - \ifnum \c@tocdepth <\chaptertocdepth \else - \ifnum \lastpenalty<20010 - \addpenalty{-\@highpenalty}% - \fi - \expandafter\ifnum\scr@v@is@lt{3.15}% - \vskip 1.0em \@plus\p@ - \else - \addvspace{1.0em \@plus\p@}% - \fi - \setlength\@tempdima{\scr@chapter@tocnumwidth}% - \if@tocleft - \ifx\toc@l@number\@empty\else - \setlength\@tempdima{0\toc@l@number}% - \fi - \fi - \begingroup - \raggedchapterentry - \parindent \z@ \advance\rightskip \@pnumwidth - \parfillskip -\@pnumwidth - \interlinepenalty\@M - \leavevmode - \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip - \edef\@pnumwidth{\the\dimexpr\@pnumwidth\relax}% - \usekomafont{chapterentry}{#1\nobreak - \usekomafont{chapterentrypagenumber}{% -% \end{macrocode} -% \changes{v3.15}{2014/10/12}{optionale Pünktchen im Eintrag}^^A -% \begin{macrocode} - {\usekomafont{chapterentrydots}{% - \if@chapterentrywithdots - \leaders\hbox{$\m@th - \mkern \@dotsep mu\hbox{.}\mkern \@dotsep - mu$}% - \fi - \hfill}}\nobreak - \hb@xt@\@pnumwidth{\hss#2}}}\par - \expandafter\ifnum\scr@v@is@gt{2.96}\relax - \endgroup - \penalty20009 - \else - \penalty\@highpenalty - \endgroup - \fi - \fi -} -% \end{macrocode} % \begin{macro}{\raggedchapterentry} % \changes{v2.97c}{2007/06/21}{neue Anweisung}^^A +% \changes{v3.20}{2015/02/23}{wird nicht mehr verwendet}^^A % Ausrichtung des Textes der Kapiteleinträge im Inhaltsverzeichnis. % \begin{macrocode} +%<*body> \newcommand*{\raggedchapterentry}{} % \end{macrocode} % \end{macro}^^A \raggedchapterentry @@ -4439,11 +4490,12 @@ % \changes{v3.15}{2014/11/24}{\cs{sectiontocdepth}, % \cs{scr@section@tocindent} und \cs{scr@section@tocnumwidth} werden % verwendet}^^A +% \changes{v3.20}{2015/10/06}{Überführung in Verzeichnisstil}^^A % Bei der Artikel-Klasse folgt die Formatierung für % \cs{section}-Einträge, an Stelle der Einträge für \cs{chapter} % der Buch- oder der Bericht-Klasse. Bei diesen handelt es sich hier % stattdessen um eine normale Ebene. -% \begin{option}{chapterentrydots} +% \begin{option}{sectionentrydots} % \changes{v3.15}{2014/12/10}{Neu}^^A % Seit Version~3.15 kann man mit dieser Option Pünktchen zwischen Text und % Seitenzahl in den Kapiteleinträgen einschalten. @@ -4453,59 +4505,19 @@ \KOMA@ifkey{sectionentrydots}{@sectionentrywithdots} %</option> % \end{macrocode} -% \end{option}^^A chapterentrydots -% \begin{macrocode} -%<*body> -\newcommand*\l@section[2]{% - \ifnum \c@tocdepth <\sectiontocdepth\else - \ifnum \lastpenalty<20009 - \addpenalty{\@secpenalty}% - \fi - \addvspace{1.0em \@plus\p@}% - \setlength\@tempdima{\dimexpr\scr@section@tocnumwidth}% - \if@tocleft - \ifx\toc@l@number\@empty\else - \setlength\@tempdima{0\toc@l@number}% - \fi - \fi - \begingroup - \raggedsectionentry - \parindent \z@ \advance\rightskip \@pnumwidth - \parfillskip -\@pnumwidth - \interlinepenalty\@M - \leavevmode - \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip - \edef\@pnumwidth{\the\dimexpr\@pnumwidth\relax}% - \usekomafont{sectionentry}{#1\nobreak - \usekomafont{sectionentrypagenumber}{% -% \end{macrocode} -% \changes{v3.15}{2014/10/12}{optionale Pünktchen im Eintrag}^^A -% \begin{macrocode} - {\usekomafont{sectionentrydots}{% - \if@sectionentrywithdots - \leaders\hbox{$\m@th - \mkern \@dotsep mu\hbox{.}\mkern \@dotsep - mu$}% - \fi - \hfill}}\nobreak - \hb@xt@\@pnumwidth{\hss#2}}}\par - \endgroup - \expandafter\ifnum\scr@v@is@gt{2.96}\relax - \penalty20008 - \fi - \fi -} -% \end{macrocode} +% \end{option}^^A sectionentrydots % \begin{macro}{\raggedsectionentry} % \changes{v2.97c}{2007/06/21}{neue Anweisung}^^A +% \changes{v3.20}{2016/02/23}{nicht mehr verwendet}^^A % Ausrichtung des Textes der Abschnittseinträge im Inhaltsverzeichnis. % \begin{macrocode} +%<*body> \newcommand*{\raggedsectionentry}{} %</body> %</article> % \end{macrocode} -% \end{macro} -% \end{macro} +% \end{macro}^^A \raggedsectionentry +% \end{macro}^^A \l@section % % % \begin{macro}{\addsec} @@ -4976,17 +4988,19 @@ %<article> level=\z@,% %<report|book> level=\m@ne,% %<report|book> pagestyle=plain,% + tocstyle=part,% toclevel=\m@ne,% tocindent=\z@,% - tocnumwidth=2em + tocnumwidth=2em% ]{part} %<*book|report> \DeclareSectionCommand[% style=chapter,% level=\z@,% pagestyle=plain,% + tocstyle=chapter,% tocindent=\z@,% - tocnumwidth=1.5em + tocnumwidth=1.5em% ]{chapter} %</book|report> \DeclareSectionCommand[% @@ -4995,6 +5009,7 @@ indent=\z@,% beforeskip=-3.5ex \@plus -1ex \@minus -.2ex,% afterskip=2.3ex \@plus.2ex,% + tocstyle=section,% %<article> tocindent=0pt,% %<book|report> tocindent=1.5em,% %<article> tocnumwidth=1.5em% @@ -5006,6 +5021,8 @@ indent=\z@,% beforeskip=-3.25ex\@plus -1ex \@minus -.2ex,% afterskip=1.5ex \@plus .2ex,% +%<article> tocstyle=subsection,% +%<book|report> tocstyle=section,% %<article> tocindent=1.5em,% %<book|report> tocindent=3.8em,% %<article> tocnumwidth=2.3em% @@ -5017,6 +5034,8 @@ indent=\z@,% beforeskip=-3.25ex\@plus -1ex \@minus -.2ex,% afterskip=1.5ex \@plus .2ex,% +%<article> tocstyle=subsection,% +%<book|report> tocstyle=section,% %<article> tocindent=3.8em,% %<book|report> tocindent=7.0em,% %<article> tocnumwidth=3.2em% @@ -5028,6 +5047,8 @@ indent=\z@,% beforeskip=3.25ex \@plus1ex \@minus.2ex,% afterskip=-1em,% +%<article> tocstyle=subsection,% +%<book|report> tocstyle=section,% %<article> tocindent=7.0em,% %<book|report> tocindent=10em,% %<article> tocnumwidth=4.1em% @@ -5039,6 +5060,8 @@ indent=\scr@parindent,% beforeskip=3.25ex \@plus1ex \@minus .2ex,% afterskip=-1em,% +%<article> tocstyle=subsection,% +%<book|report> tocstyle=section,% %<article> tocindent=10em,% %<book|report> tocindent=12em,% %<article> tocnumwidth=5em% @@ -5090,12 +5113,14 @@ % \changes{v2.8c}{2001/06/29}{\cs{normalcolor} eingefügt}^^A % \changes{v3.12}{2013/11/11}{wird wegen Option % \texttt{headings!=standardclasses} früher definiert}^^A +% \changes{v3.20}{2016/01/29}{\cs{sffamily} durch \cs{@gr@gsffamily} +% ersetzt}^^A % Dies Schriftart nicht nur für die Gliederungsbefehle. Dieses Makro % ist als intern zu betrachten. Der Anwender sollte stattdessen das % entsprtechende Fontelement verwenden. % \begin{macrocode} %<*prepare> -\newcommand*{\sectfont}{\normalcolor\sffamily\bfseries} +\newcommand*{\sectfont}{\normalcolor\@gr@gsffamily\bfseries} %</prepare> %<*body> \newcommand*{\scr@fnt@disposition}{\sectfont} |