summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/koma-script/source/scrkernel-tocstyle.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/koma-script/source/scrkernel-tocstyle.dtx')
-rw-r--r--macros/latex/contrib/koma-script/source/scrkernel-tocstyle.dtx1377
1 files changed, 988 insertions, 389 deletions
diff --git a/macros/latex/contrib/koma-script/source/scrkernel-tocstyle.dtx b/macros/latex/contrib/koma-script/source/scrkernel-tocstyle.dtx
index 04dec8e47f..b0eba60c05 100644
--- a/macros/latex/contrib/koma-script/source/scrkernel-tocstyle.dtx
+++ b/macros/latex/contrib/koma-script/source/scrkernel-tocstyle.dtx
@@ -1,8 +1,8 @@
-% \CheckSum{1380}
+% \CheckSum{1934}
% \iffalse meta-comment
% ======================================================================
% scrkernel-tocstyle.dtx
-% Copyright (c) Markus Kohm, 2015-2018
+% Copyright (c) Markus Kohm, 2015-2019
%
% 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-tocstyle.dtx
-% Copyright (c) Markus Kohm, 2015-2018
+% Copyright (c) Markus Kohm, 2015-2019
%
% 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-tocstyle.dtx 3011 2018-08-29 07:35:17Z kohm $
+%%% From File: $Id: scrkernel-tocstyle.dtx 3262 2019-10-10 08:25:29Z kohm $
% The runs of run-time file generation:
%<preidentify>%%% (run: preidentify)
% - everything that is needed before selfidentification of resulting files
@@ -80,7 +80,7 @@
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\begingroup
\def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
- \filedate$Date: 2018-08-29 09:35:17 +0200 (Wed, 29 Aug 2018) $
+ \filedate$Date: 2019-10-10 10:25:29 +0200 (Thu, 10 Oct 2019) $
\def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
\filerevision$Revision: 2254 $
\edef\reserved@a{%
@@ -93,7 +93,6 @@
% \iffalse
\documentclass[parskip=half-]{scrdoc}
\usepackage[english,ngerman]{babel}
-\usepackage[latin1]{inputenc}
\CodelineIndex
\RecordChanges
\GetFileInfo{scrkernel-tocstyle.dtx}
@@ -116,9 +115,9 @@
% \section{Verzeichnisstile}
%
% Verzeichnisstile werden derzeit nur in Kooperation mit Gliederungsstilen
-% untersützt. In Zukunft soll das aber mal anders werden. Dann sollen
-% Verzeichnisstile Teil der Grundfunktionalität für Verzeichnisse (Paket
-% \textsf{tocbasic}) werden und auch unabhängig von Gliederungsstilen
+% untersützt. In Zukunft soll das aber mal anders werden. Dann sollen
+% Verzeichnisstile Teil der Grundfunktionalität für Verzeichnisse (Paket
+% \textsf{tocbasic}) werden und auch unabhängig von Gliederungsstilen
% einsetzbar sein.
%
% \StopEventually{\PrintIndex\PrintChanges}
@@ -126,11 +125,11 @@
% \changes{v3.20}{2015/11/13}{neu und nur bei Vorhandensein verwendet}
%
%
-% \subsection{Einstellungen unabhängig von Verzeichnisstilen und doch
-% Grundlage für diese}
+% \subsection{Einstellungen unabhängig von Verzeichnisstilen und doch
+% Grundlage für diese}
%
% Bis \KOMAScript~3.20 waren die Befehle, die hier definiert werden, Teil der
-% KOMA-Script-Klassen. Allerdings zeigt sich, dass es für die Definition von
+% KOMA-Script-Klassen. Allerdings zeigt sich, dass es für die Definition von
% Verzeichnisstilen von Vorteil ist, wenn diese Definitionen im Paket
% vorhanden sind.
%
@@ -139,14 +138,14 @@
% \fi
%
% \begin{macro}{\numberline}
-% \changes{v3.20}{2016/03/10}{\cs{numberline} wird indirekt über
-% \cs{scr@numberline} definiert}^^A
+% \changes{v3.20}{2016/03/10}{\cs{numberline} wird indirekt über
+% \cs{scr@numberline} definiert}%^^A
% \begin{macro}{\scr@numberline}
-% \changes{v2.3c}{1995/08/06}{\cs{numberline} umdefiniert}^^A
-% \changes{v3.06}{2010/05/18}{Verwendung von \cs{numberline@prefix} und
-% \cs{numberline@postfix}}^^A
-% \changes{v3.12}{2013/11/22}{use \cs{numberline@numberformat} only, if the
-% argument expands to a non-empty string}^^A
+% \changes{v2.3c}{1995/08/06}{\cs{numberline} umdefiniert}%^^A
+% \changes{v3.06}{2010/05/18}{Verwendung von \cs{numberline@prefix} und
+% \cs{numberline@postfix}}%^^A
+% \changes{v3.12}{2013/11/22}{use \cs{numberline@numberformat} only, if the
+% argument expands to a non-empty string}%^^A
% Dieses Makro wird indirekt im Inhaltsverzeichnis verwendet und muss
% umdefiniert werden, um Duden, 20.~Auflage, Regel~5 und Regel~6 zu
% implementieren.
@@ -163,11 +162,11 @@
}
% \end{macrocode}
% \begin{macro}{\usetocbasicnumberline}
-% \changes{v3.20}{2016/03/15}{neu}^^A
+% \changes{v3.20}{2016/03/15}{neu}%^^A
% Dieses Makro testet, ob \cs{numberline} auf \cs{scr@numberline}
-% basiert. Falls das nicht der Fall ist, führt es das optionale Argument aus
-% und führt dann eine entsprechende Umdefinierung statt. Falls es jedoch der
-% Fall ist, lässt es alles unverändert.
+% basiert. Falls das nicht der Fall ist, führt es das optionale Argument aus
+% und führt dann eine entsprechende Umdefinierung statt. Falls es jedoch der
+% Fall ist, lässt es alles unverändert.
% \begin{macrocode}
\newcommand*{\usetocbasicnumberline}[1][%
\PackageInfo{tocbasic}{Using my definition of `\string\numberline'}%
@@ -176,9 +175,9 @@
\begingroup
\def\scr@numberline##1{\global\@tempswafalse}%
% \end{macrocode}
-% \cs{@tempdima} ist üblicherweise bei \cs{numberline} die Breite der Nummer.
-% Damit zu kleine Werte nicht zu einem Problem werden können, nehme ich hier
-% gleich mal einen richtig großen Wert.
+% \cs{@tempdima} ist üblicherweise bei \cs{numberline} die Breite der Nummer.
+% Damit zu kleine Werte nicht zu einem Problem werden können, nehme ich hier
+% gleich mal einen richtig großen Wert.
% \begin{macrocode}
\@tempdima\maxdimen
\sbox\@tempboxa{\numberline{0}}%
@@ -186,27 +185,27 @@
\if@tempswa #1\renewcommand*{\numberline}[1]{\scr@numberline{##1}}\fi
}
% \end{macrocode}
-% \end{macro}^^A \usetocbasicnumberline
+% \end{macro}%^^A \usetocbasicnumberline
% \begin{macro}{\numberline@prefix}
-% \changes{v3.06}{2010/05/18}{neu (intern)}^^A
-% Das ist in der Voreinstellung einfach leer. Es könnte verwendet werden, um
-% etwas vor die Nummer zu setzen oder die Nummer rechtsbündig zu setzen.
+% \changes{v3.06}{2010/05/18}{neu (intern)}%^^A
+% Das ist in der Voreinstellung einfach leer. Es könnte verwendet werden, um
+% etwas vor die Nummer zu setzen oder die Nummer rechtsbündig zu setzen.
% \begin{macrocode}
\newcommand*{\numberline@prefix}{}
% \end{macrocode}
-% \end{macro}^^A \numberline@prefix
+% \end{macro}%^^A \numberline@prefix
% \begin{macro}{\numberline@postfix}
-% \changes{v3.06}{2010/05/18}{neu (intern)}
+% \changes{v3.06}{2010/05/18}{neu (intern)}
% Das ist in der Voreinstellung einfach \cs{hfil} und dient dazu die Nummer
-% linksbündig zu platzieren.
+% linksbündig zu platzieren.
% \begin{macrocode}
\newcommand*{\numberline@postfix}{\hfil}
% \end{macrocode}
-% \end{macro}^^A \numberline@postfix
+% \end{macro}%^^A \numberline@postfix
% \begin{macro}{\numberline@numberformat}
-% \changes{v3.06}{2010/05/18}{neu (intern)}^^A
-% \changes{v3.12}{2013/11/22}{don't output anything, if argument expands to
-% an empty string}^^A
+% \changes{v3.06}{2010/05/18}{neu (intern)}%^^A
+% \changes{v3.12}{2013/11/22}{don't output anything, if argument expands to
+% an empty string}%^^A
% Das dient in der Voreinstellung dazu, Regel~5 und 6 aus der 20.~Auflage des
% DUDENs umzusetzen.
% \begin{macrocode}
@@ -215,36 +214,36 @@
}
% \end{macrocode}
% \begin{macro}{\numberline@numberprefix}
-% \changes{v3.20}{2016/03/15}{neu (intern)}
+% \changes{v3.20}{2016/03/15}{neu (intern)}
% Wird verwendet, um innerhalb von \cs{numberline@numberformat} der Nummer
-% einen Präfix voran zu stellen. Im Gegensatz zu \cs{numberline@prefix} wird
+% einen Präfix voran zu stellen. Im Gegensatz zu \cs{numberline@prefix} wird
% dieser nur ausgegeben, wenn das Argument von \cs{numberline@numberformat},
% also auch das Argument von \cs{numberline} nicht leer ist.
% \begin{macrocode}
\newcommand*{\numberline@numberprefix}{}
% \end{macrocode}
-% \end{macro}^^A \numberline@numberprefix
+% \end{macro}%^^A \numberline@numberprefix
% \begin{macro}{\numberline@numberpostfix}
-% \changes{v3.20}{2016/03/15}{neu (intern)}
+% \changes{v3.20}{2016/03/15}{neu (intern)}
% Wird verwendet, um innerhalb von \cs{numberline@numberformat} der Nummer
-% einen Postfix anzuhängen. Im Gegensatz zu \cs{numberline@prefix} wird
+% einen Postfix anzuhängen. Im Gegensatz zu \cs{numberline@prefix} wird
% dieser nur ausgegeben, wenn das Argument von \cs{numberline@numberformat},
% also auch das Argument von \cs{numberline} nicht leer ist.
% \begin{macrocode}
\newcommand*{\numberline@numberpostfix}{}
% \end{macrocode}
-% \end{macro}^^A \numberline@numberpostfix
-% \end{macro}^^A \numberline@numberformat
+% \end{macro}%^^A \numberline@numberpostfix
+% \end{macro}%^^A \numberline@numberformat
% \begin{macro}{\numberline@box}
-% \changes{v3.06}{2010/05/18}{neu (intern)}
+% \changes{v3.06}{2010/05/18}{neu (intern)}
% Das dient in der Voreinstellung dazu, die Gliederungsnummer in eine Box zu
% setzen.
% \begin{macrocode}
\newcommand*{\numberline@box}[1]{\hb@xt@\@tempdima{#1}}
%</body>
% \end{macrocode}
-% \end{macro}^^A \numberline@box
-% \end{macro}^^A \scr@numberline
+% \end{macro}%^^A \numberline@box
+% \end{macro}%^^A \scr@numberline
%
% \iffalse
%</package>
@@ -256,18 +255,18 @@
\let\numberline\scr@numberline
%</body>
% \end{macrocode}
-% \end{macro}^^A \numberline
+% \end{macro}%^^A \numberline
%
% \iffalse
%</class>
% \fi
%
-% \subsection{Grundlagen für Verzeichniseintragsstile}
+% \subsection{Grundlagen für Verzeichniseintragsstile}
%
% Ab \KOMAScript~3.20 halten Stile Einzug in die Verzeichnisse. Der erste
-% Schritt dabei sind die Stile der Verzeichniseinträge. Jeder Stil besteht aus
+% Schritt dabei sind die Stile der Verzeichniseinträge. Jeder Stil besteht aus
% einer Anweisung, mit der ein Verzeichnisbefehl definiert wird und
-% zugehörigen Optionen. Die Optionen dienen dazu, Einstellungen für die
+% zugehörigen Optionen. Die Optionen dienen dazu, Einstellungen für die
% einzelnen Verzeichnisbefehle vorzunehmen.
%
% \iffalse
@@ -275,7 +274,7 @@
% \fi
%
% \changes{v3.20}{2015/11/17}{Verzeichnisstile bekommen das
-% \texttt{KOMAarg}-Mitglied \texttt{.dte}}^^A
+% \texttt{KOMAarg}-Mitglied \texttt{.dte}}%^^A
% \begin{macrocode}
%<*body>
\DefineFamily{KOMAarg}
@@ -284,28 +283,28 @@
% \end{macrocode}
%
% \begin{macro}{\@DefineTOCEntryOption}
-% \changes{v3.20}{2015/04/10}{neu (intern)}
+% \changes{v3.20}{2015/04/10}{neu (intern)}
% Die Definition der Optionen geschieht mit einer einheitlichen
-% Schnittstelle. Wichtig dabei ist, dass hier nicht tatsächlich die Optionen
+% Schnittstelle. Wichtig dabei ist, dass hier nicht tatsächlich die Optionen
% definiert werden, sondern eine Anweisung, die ihrerseits die Optionen bei
% Bedarf definiert. Ein solcher Bedarf besteht beispielsweise bei der
% Definition des Eintragsbefehls selbst. Er besteht aber auch innerhalb von
% \cs{DeclareSectionCommand}, weil diese Anweisung ebenfalls indirekt
-% Verzeichniseinträge definiert und deshalb die Optionen auswerten können
+% Verzeichniseinträge definiert und deshalb die Optionen auswerten können
% soll. Es gibt folgende Parameter:
% \begin{description}
% \item[\marg{Stil}: \meta{String},] Name des Eintragsstils
% \item[\marg{Option}: \meta{String},] Name der Option
-% \item[\oarg{Wert}:] der Säumniswert der Option abhängig von der
+% \item[\oarg{Wert}:] der Säumniswert der Option abhängig von der
% \meta{Definition}
% \item[\marg{Definition}: \meta{Code},] Definition der Option
% \end{description}
% \begin{macro}{\@DefineTOCEntryOptionWithoutDefault}
-% \changes{v3.20}{2015/11/10}{neu (intern)}
+% \changes{v3.20}{2015/11/10}{neu (intern)}
% \begin{macro}{\@DefineTOCEntryOptionWithDefault}
-% \changes{v3.20}{2015/11/10}{neu (intern)}
+% \changes{v3.20}{2015/11/10}{neu (intern)}
% Da mit einem optionalen Argument an Position 3 gearbeitet wird, werden zwei
-% Hilfsmakros benötigt.
+% Hilfsmakros benötigt.
% \begin{macrocode}
%<*body>
\newcommand*{\@DefineTOCEntryOption}[2]{%
@@ -326,20 +325,22 @@
}
%</body>
% \end{macrocode}
-% \end{macro}^^A \@DefineTOCEntryOptionWithoutDefault
-% \end{macro}^^A \@DefineTOCEntryOptionWithDefault
-% \end{macro}^^A \@DefineTOCEntryOption
+% \end{macro}%^^A \@DefineTOCEntryOptionWithoutDefault
+% \end{macro}%^^A \@DefineTOCEntryOptionWithDefault
+% \end{macro}%^^A \@DefineTOCEntryOption
%
% \begin{macro}{\@RelaxTOCEntryOptions}
-% \changes{v3.20}{2015/04/10}{neu (intern)}
-% Setzt alle Optionen der aktuellen Do-Liste zurück auf \cs{relax}.
+% \changes{v3.20}{2015/04/10}{neu (intern)}
+% Setzt alle Optionen der aktuellen Do-Liste zurück auf \cs{relax}.
% \begin{macrocode}
%<*body>
\newcommand*{\@RelaxTOCEntryOptions}{%
\begingroup
\def\do@endgroup{\endgroup}%
\def\do##1{%
- \l@addto@macro\do@endgroup{\RelaxFamilyKey[.dte]{KOMAarg}{##1}}%
+ \l@addto@macro\do@endgroup{%
+ \RelaxFamilyKey[.dte]{KOMAarg}{##1}%
+ }%
\scr@dte@gobbleopt
}%
\scr@dte@doopts
@@ -348,31 +349,46 @@
\newcommand{\scr@dte@gobbleopt}[1][]{}
%</body>
% \end{macrocode}
-% \end{macro}^^A \@RelaxTOCEntryOptions
+% \end{macro}%^^A \@RelaxTOCEntryOptions
%
% \begin{macro}{\@DefineTOCEntryLengthOption}
-% \changes{v3.20}{2015/12/04}{neu (intern)}
+% \changes{v3.20}{2015/12/04}{neu (intern)}%^^A
% Verwendet \cs{DefineTOCEntryOption}, um eine Option zu definieren, die ein
-% Längenmacro definiert. Es gibt folgende Parameter:
+% Längenmacro definiert. Es gibt folgende Parameter:
% \begin{description}
% \item[\marg{Stil}: \meta{String},] Name des Eintragsstils
% \item[\marg{Option}: \meta{String},] Name der Option
-% \item[\oarg{Wert}:] der Säumniswert der Option
-% \item[\marg{Prefix}: \meta{String},] Präfix des zu definierenden Makros
+% \item[\oarg{Wert}:] der Säumniswert der Option
+% \item[\marg{Prefix}: \meta{String},] Präfix des zu definierenden Makros
% \item[\marg{Postfix}: \meta{String},] Postfix des zu definierenden Makros
-% \item[\marg{Erklärung}: \meta{String},] Erklärung der Option
+% \item[\marg{Erklärung}: \meta{String},] Erklärung der Option
% \item[\oarg{Init}: \meta{Code},] Initialisierung der Option
% \end{description}
-% Zwischen Prefix und Postfix wird bei der späteren, tatsächlichen Definition
-% automatisch \cs{scr@dte@current} eingefügt.
+% Zwischen Prefix und Postfix wird bei der späteren, tatsächlichen Definition
+% automatisch \cs{scr@dte@current} eingefügt. Gleichzeitig wird auch noch eine
+% Kopieroption definiert, die sich von der eigentlichen Option dadurch
+% unterscheidet, dass dem Gleichheitszeichen ein Doppelpunkt voran gestellt
+% ist. Der Wert der Kopieroption ist der Name eines anderen Eintrags, dessen
+% Einstellung dann kopiert wird, sofern dieser Eintrag eine entsprechende
+% Einstellung hat.
% \begin{macro}{\@DefineTOCEntryLengthOptionWithoutDefault}
-% \changes{v3.20}{2015/11/10}{neu (intern)}^^A
+% \changes{v3.20}{2015/11/10}{neu (intern)}%^^A
+% \changes{v3.27}{2019/10/02}{es wird gleichzeitig eine Kopieroption
+% definiert}%^^A
+% \changes{v3.27}{2019/10/03}{es wird gleichzeitig eine Addieroption
+% definiert}%^^A
% \begin{macro}{\@DefineTOCEntryLengthOptionWithDefault}
-% \changes{v3.20}{2015/11/10}{neu (intern)}^^A
+% \changes{v3.20}{2015/11/10}{neu (intern)}%^^A
+% \changes{v3.27}{2019/10/02}{es wird gleichzeitig eine Kopieroption
+% definiert}%^^A
+% \changes{v3.27}{2019/10/03}{es wird gleichzeitig eine Addieroption
+% definiert}%^^A
% \begin{macro}{\@DefineTOCEntryLengthOptionMacro}
-% \changes{v3.20}{2015/11/10}{neu (intern)}^^A
+% \changes{v3.20}{2015/11/10}{neu (intern)}%^^A
+% \begin{macro}{\@DefineTOCEntryAddLengthOptionMacro}
+% \changes{v3.27}{2019/10/03}{neu (intern)}%^^A
% Da mit einem optionalen Argument an Position 3 gearbeitet wird, werden drei
-% Hilfsmakros benötigt.
+% Hilfsmakros benötigt.
% \begin{macrocode}
%<*body>
\newcommand*{\@DefineTOCEntryLengthOption}[2]{%
@@ -385,6 +401,21 @@
\@DefineTOCEntryOption{#1}{#2}{%
\@DefineTOCEntryLengthOptionMacro{#2}{#3}{#4}{##1}%
}%
+ \DefineFamilyKey[.dte]{KOMAarg}{#2:}{%
+ \scr@ifundefinedorrelax{#3##1#4}{\FamilyKeyStateUnknownValue}{%
+ \expandafter\let
+ \csname #3\scr@dte@current#4\expandafter\endcsname
+ \csname #3##1#4\endcsname
+ \FamilyKeyStateProcessed
+ }%
+ }%
+ \DefineFamilyKey[.dte]{KOMAarg}{#2+}{%
+ \@DefineTOCEntryAddLengthOptionMacro{#2+}{#3}{#4}{##1}%
+ }%
+ \edef\scr@dte@doopts{%
+ \unexpanded\expandafter{\scr@dte@doopts}%
+ \noexpand\do{#2:}\noexpand\do{#2+}%
+ }%
}
\newcommand*{\@DefineTOCEntryLengthOptionWithDefault}{}
\def\@DefineTOCEntryLengthOptionWithDefault#1#2[#3]#4#5#6{%
@@ -392,6 +423,21 @@
\@DefineTOCEntryOption{#1}{#2}[{#3}]{%
\@DefineTOCEntryLengthOptionMacro{#2}{#4}{#5}{##1}%
}%
+ \DefineFamilyKey[.dte]{KOMAarg}{#2:}{%
+ \scr@ifundefinedorrelax{#4##1#5}{\FamilyKeyStateUnknownValue}{%
+ \expandafter\let
+ \csname #4\scr@dte@current#5\expandafter\endcsname
+ \csname #4##1#5\endcsname
+ \FamilyKeyStateProcessed
+ }%
+ }%
+ \DefineFamilyKey[.dte]{KOMAarg}{#2+}{%
+ \@DefineTOCEntryAddLengthOptionMacro{#2+}{#4}{#5}{##1}%
+ }%
+ \edef\scr@dte@doopts{%
+ \unexpanded\expandafter{\scr@dte@doopts}%
+ \noexpand\do{#2:}\noexpand\do{#2+}%
+ }%
}
\newcommand*{\@DefineTOCEntryLengthOptionMacro}[4]{%
\protected@edef\reserved@a{%
@@ -406,36 +452,72 @@
\fi
\fi
}
+\newcommand*{\@DefineTOCEntryAddLengthOptionMacro}[4]{%
+ \@ifundefined{#2\scr@dte@current#3}{%
+ \FamilyKeyStateUnknownValue
+ }{%
+ \protected@edef\reserved@a{%
+ \noexpand\FamilySetLength{KOMAarg}{#1}{\noexpand\@tempskipa}{#4}%
+ }\reserved@a
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \ifscr@dte@expandtopt
+ \expandafter\edef\csname #2\scr@dte@current#3\endcsname{%
+ \the\glueexpr\@tempskipa
+ +\csname #2\scr@dte@current#3\endcsname\relax}%
+ \else
+ \expandafter\protected@edef\csname #2\scr@dte@current#3\endcsname{%
+ \the\glueexpr #4%
+ +\csname #2\scr@dte@current#3\endcsname\relax}%
+ \fi
+ \fi
+ }%
+}
%</body>
% \end{macrocode}
-% \end{macro}^^A \@DefineTOCEntryLengthOptionMacro
-% \end{macro}^^A \@DefineTOCEntryLengthOptionWithDefault
-% \end{macro}^^A \@DefineTOCEntryLengthOptionWithoutDefault
-% \end{macro}^^A \@DefineTOCEntryLengthOption
+% \end{macro}%^^A \@DefineTOCEntryAddLengthOptionMacro
+% \end{macro}%^^A \@DefineTOCEntryLengthOptionMacro
+% \end{macro}%^^A \@DefineTOCEntryLengthOptionWithDefault
+% \end{macro}%^^A \@DefineTOCEntryLengthOptionWithoutDefault
+% \end{macro}%^^A \@DefineTOCEntryLengthOption
%
% \begin{macro}{\@DefineTOCEntryNumberOption}
-% \changes{v3.20}{2015/12/04}{neu (intern)}
+% \changes{v3.20}{2015/12/04}{neu (intern)}
% Verwendet \cs{DefineTOCEntryOption}, um eine Option zu definieren, die ein
% Nummernmacro definiert. Es gibt folgende Parameter:
% \begin{description}
% \item[\marg{Stil}: \meta{String},] Name des Eintragsstils
% \item[\marg{Option}: \meta{String},] Name der Option
-% \item[\oarg{Wert}:] der Säumniswert der Option
-% \item[\marg{Prefix}: \meta{String},] Präfix des zu definierenden Makros
+% \item[\oarg{Wert}:] der Säumniswert der Option
+% \item[\marg{Prefix}: \meta{String},] Präfix des zu definierenden Makros
% \item[\marg{Postfix}: \meta{String},] Postfix des zu definierenden Makros
-% \item[\marg{Erklärung}: \meta{String},] Erklärung der Option
+% \item[\marg{Erklärung}: \meta{String},] Erklärung der Option
% \item[\oarg{Init}: \meta{Code},] Initialisierung der Option
% \end{description}
-% Zwischen Prefix und Postfix wird bei der späteren, tatsächlichen Definition
-% automatisch \cs{scr@dte@current} eingefügt.
+% Zwischen Prefix und Postfix wird bei der späteren, tatsächlichen Definition
+% automatisch \cs{scr@dte@current} eingefügt. Gleichzeitig wird auch noch eine
+% Kopieroption definiert, die sich von der eigentlichen Option dadurch
+% unterscheidet, dass dem Gleichheitszeichen ein Doppelpunkt voran gestellt
+% ist. Der Wert der Kopieroption ist der Name eines anderen Eintrags, dessen
+% Einstellung dann kopiert wird, sofern dieser Eintrag eine entsprechende
+% Einstellung hat.
% \begin{macro}{\@DefineTOCEntryNumberOptionWithoutDefault}
-% \changes{v3.20}{2015/11/12}{neu (intern)}
+% \changes{v3.20}{2015/11/12}{neu (intern)}
+% \changes{v3.27}{2019/10/02}{es wird gleichzeitig eine Kopieroption
+% definiert}%^^A
+% \changes{v3.27}{2019/10/03}{es wird gleichzeitig eine Addieroption
+% definiert}%^^A
% \begin{macro}{\@DefineTOCEntryNumberOptionWithDefault}
-% \changes{v3.20}{2015/11/12}{neu (intern)}
+% \changes{v3.20}{2015/11/12}{neu (intern)}
+% \changes{v3.27}{2019/10/02}{es wird gleichzeitig eine Kopieroption
+% definiert}%^^A
+% \changes{v3.27}{2019/10/03}{es wird gleichzeitig eine Addieroption
+% definiert}%^^A
% \begin{macro}{\@DefineTOCEntryNumberOptionMacro}
-% \changes{v3.20}{2015/11/12}{neu (intern)}
+% \changes{v3.20}{2015/11/12}{neu (intern)}
+% \begin{macro}{\@DefineTOCEntryAddNumberOptionMacro}
+% \changes{v3.27}{2019/10/03}{neu (intern)}
% Da mit einem optionalen Argument an Position 3 gearbeitet wird, werden drei
-% Hilfsmakros benötigt.
+% Hilfsmakros benötigt.
% \begin{macrocode}
%<*body>
\newcommand*{\@DefineTOCEntryNumberOption}[2]{%
@@ -448,6 +530,21 @@
\@DefineTOCEntryOption{#1}{#2}{%
\@DefineTOCEntryNumberOptionMacro{#2}{#3}{#4}{##1}%
}%
+ \DefineFamilyKey[.dte]{KOMAarg}{#2:}{%
+ \scr@ifundefinedorrelax{#3##1#4}{\FamilyKeyStateUnknownValue}{%
+ \expandafter\let
+ \csname #3\scr@dte@current#4\expandafter\endcsname
+ \csname #3##1#4\endcsname
+ \FamilyKeyStateProcessed
+ }%
+ }%
+ \DefineFamilyKey[.dte]{KOMAarg}{#2+}{%
+ \@DefineTOCEntryAddNumberOptionMacro{#2+}{#3}{#4}{##1}%
+ }%
+ \edef\scr@dte@doopts{%
+ \unexpanded\expandafter{\scr@dte@doopts}%
+ \noexpand\do{#2:}\noexpand\do{#2+}%
+ }%
}
\newcommand*{\@DefineTOCEntryNumberOptionWithDefault}{}
\def\@DefineTOCEntryNumberOptionWithDefault#1#2[#3]#4#5#6{%
@@ -455,6 +552,21 @@
\@DefineTOCEntryOption{#1}{#2}[{#3}]{%
\@DefineTOCEntryNumberOptionMacro{#2}{#4}{#5}{##1}%
}%
+ \DefineFamilyKey[.dte]{KOMAarg}{#2:}{%
+ \scr@ifundefinedorrelax{#4##1#5}{\FamilyKeyStateUnknownValue}{%
+ \expandafter\let
+ \csname #4\scr@dte@current#5\expandafter\endcsname
+ \csname #4##1#5\endcsname
+ \FamilyKeyStateProcessed
+ }%
+ }%
+ \DefineFamilyKey[.dte]{KOMAarg}{#2+}{%
+ \@DefineTOCEntryAddNumberOptionMacro{#2+}{#4}{#5}{##1}%
+ }%
+ \edef\scr@dte@doopts{%
+ \unexpanded\expandafter{\scr@dte@doopts}%
+ \noexpand\do{#2:}\noexpand\do{#2+}%
+ }%
}
\newcommand*{\@DefineTOCEntryNumberOptionMacro}[4]{%
\protected@edef\reserved@a{%
@@ -463,36 +575,60 @@
}{#4}%
}\reserved@a
}
+\newcommand*{\@DefineTOCEntryAddNumberOptionMacro}[4]{%
+ \@ifundefined{#2\scr@dte@current#3}{%
+ \FamilyKeyStateUnknownValue
+ }{%
+ \FamilySetCounterMacro{KOMAarg}{#1}{%
+ \reserved@a
+ }{#4}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \expandafter\edef\csname #2\scr@dte@current#3\endcsname{%
+ \the\numexpr \reserved@a+\csname #2\scr@dte@current#3\endcsname\relax
+ }%
+ \fi
+ }%
+}
%</body>
% \end{macrocode}
-% \end{macro}^^A \@DefineTOCEntryNumberOptionMacro
-% \end{macro}^^A \@DefineTOCEntryNumberOptionWithDefault
-% \end{macro}^^A \@DefineTOCEntryNumberOptionWithoutDefault
-% \end{macro}^^A \@DefineTOCEntryNumberOption
+% \end{macro}%^^A \@DefineTOCEntryAddNumberOptionMacro
+% \end{macro}%^^A \@DefineTOCEntryNumberOptionMacro
+% \end{macro}%^^A \@DefineTOCEntryNumberOptionWithDefault
+% \end{macro}%^^A \@DefineTOCEntryNumberOptionWithoutDefault
+% \end{macro}%^^A \@DefineTOCEntryNumberOption
%
% \begin{macro}{\@DefineTOCEntryBooleanOption}
-% \changes{v3.20}{2015/12/04}{neu (intern)}
+% \changes{v3.20}{2015/12/04}{neu (intern)}
% Verwendet \cs{DefineTOCEntryOption}, um eine Option zu definieren, die einen
% Schalter definiert. Es gibt folgende Parameter:
% \begin{description}
% \item[\marg{Stil}: \meta{String},] Name des Eintragsstils
% \item[\marg{Option}: \meta{String},] Name der Option
-% \item[\oarg{Wert}:] der Säumniswert der Option
-% \item[\marg{Prefix}: \meta{String},] Präfix des zu definierenden Makros
+% \item[\oarg{Wert}:] der Säumniswert der Option
+% \item[\marg{Prefix}: \meta{String},] Präfix des zu definierenden Makros
% \item[\marg{Postfix}: \meta{String},] Postfix des zu definierenden Makros
-% \item[\marg{Erklärung}: \meta{String},] Erklärung der Option
+% \item[\marg{Erklärung}: \meta{String},] Erklärung der Option
% \item[\oarg{Init}: \meta{Code},] Initialisierung der Option
% \end{description}
-% Zwischen Prefix und Postfix wird bei der späteren, tatsächlichen Definition
-% automatisch \cs{scr@dte@current} eingefügt.
+% Zwischen Prefix und Postfix wird bei der späteren, tatsächlichen Definition
+% automatisch \cs{scr@dte@current} eingefügt. Gleichzeitig wird auch noch eine
+% Kopieroption definiert, die sich von der eigentlichen Option dadurch
+% unterscheidet, dass dem Gleichheitszeichen ein Doppelpunkt voran gestellt
+% ist. Der Wert der Kopieroption ist der Name eines anderen Eintrags, dessen
+% Einstellung dann kopiert wird, sofern dieser Eintrag eine entsprechende
+% Einstellung hat.
% \begin{macro}{\@DefineTOCEntryBoolOptionWithoutDefault}
-% \changes{v3.20}{2015/11/12}{neu (intern)}
+% \changes{v3.20}{2015/11/12}{neu (intern)}
+% \changes{v3.27}{2019/10/02}{es wird gleichzeitig eine Kopieroption
+% definiert}%^^A
% \begin{macro}{\@DefineTOCEntryBoolOptionWithDefault}
-% \changes{v3.20}{2015/11/12}{neu (intern)}
+% \changes{v3.20}{2015/11/12}{neu (intern)}
+% \changes{v3.27}{2019/10/02}{es wird gleichzeitig eine Kopieroption
+% definiert}%^^A
% \begin{macro}{\@DefineTOCEntryBoolOptionMacro}
-% \changes{v3.20}{2015/11/12}{neu (intern)}
+% \changes{v3.20}{2015/11/12}{neu (intern)}
% Da mit einem optionalen Argument an Position 3 gearbeitet wird, werden drei
-% Hilfsmakros benötigt.
+% Hilfsmakros benötigt.
% \begin{macrocode}
%<*body>
\newcommand*{\@DefineTOCEntryBooleanOption}[2]{%
@@ -507,6 +643,17 @@
\@DefineTOCEntryOption{#1}{#2}[true]{%
\@DefineTOCEntryBoolOptionMacro{#2}{#3}{#4}{##1}%
}%
+ \DefineFamilyKey[.dte]{KOMAarg}{#2:}{%
+ \scr@ifundefinedorrelax{if#3##1#4}{\FamilyKeyStateUnknownValue}{%
+ \expandafter\let
+ \csname if#3\scr@dte@current#4\expandafter\endcsname
+ \csname if#3##1#4\endcsname
+ \FamilyKeyStateProcessed
+ }%
+ }%
+ \edef\scr@dte@doopts{%
+ \unexpanded\expandafter{\scr@dte@doopts}\noexpand\do{#2:}%
+ }%
}
\newcommand*{\@DefineTOCEntryBoolOptionWithDefault}{}
\def\@DefineTOCEntryBoolOptionWithDefault#1#2[#3]#4#5#6{%
@@ -516,6 +663,17 @@
\@DefineTOCEntryOption{#1}{#2}[{#3}]{%
\@DefineTOCEntryBoolOptionMacro{#2}{#4}{#5}{##1}%
}%
+ \DefineFamilyKey[.dte]{KOMAarg}{#2:}{%
+ \scr@ifundefinedorrelax{if#4##1#5}{\FamilyKeyStateUnknownValue}{%
+ \expandafter\let
+ \csname if#4\scr@dte@current#5\expandafter\endcsname
+ \csname if#4##1#5\endcsname
+ \FamilyKeyStateProcessed
+ }%
+ }%
+ \edef\scr@dte@doopts{%
+ \unexpanded\expandafter{\scr@dte@doopts}\noexpand\do{#2:}%
+ }%
}
\newcommand*{\@DefineTOCEntryBoolOptionMacro}[4]{%
\@ifundefined{if#2\scr@dte@current#3}{%
@@ -525,34 +683,43 @@
}
%</body>
% \end{macrocode}
-% \end{macro}^^A \@DefineTOCEntryBoolOptionMacro
-% \end{macro}^^A \@DefineTOCEntryBoolOptionWithDefault
-% \end{macro}^^A \@DefineTOCEntryBoolOptionWithoutDefault
-% \end{macro}^^A \@DefineTOCEntryBooleanOption
+% \end{macro}%^^A \@DefineTOCEntryBoolOptionMacro
+% \end{macro}%^^A \@DefineTOCEntryBoolOptionWithDefault
+% \end{macro}%^^A \@DefineTOCEntryBoolOptionWithoutDefault
+% \end{macro}%^^A \@DefineTOCEntryBooleanOption
%
% \begin{macro}{\@DefineTOCEntryIfOption}
-% \changes{v3.20}{2015/12/06}{neu (intern)}
+% \changes{v3.20}{2015/12/06}{neu (intern)}
% Verwendet \cs{DefineTOCEntryOption}, um eine Option zu definieren, die eine
% If-Anweisung definiert. Die Option selbst ist dabei eine Schalter-Option. Es
% gibt folgende Parameter:
% \begin{description}
% \item[\marg{Stil}: \meta{String},] Name des Eintragsstils
% \item[\marg{Option}: \meta{String},] Name der Option
-% \item[\oarg{Wert}:] der Säumniswert der Option
-% \item[\marg{Prefix}: \meta{String},] Präfix des zu definierenden Makros
+% \item[\oarg{Wert}:] der Säumniswert der Option
+% \item[\marg{Prefix}: \meta{String},] Präfix des zu definierenden Makros
% \item[\marg{Postfix}: \meta{String},] Postfix des zu definierenden Makros
-% \item[\marg{Erklärung}: \meta{String},] Erklärung der Option
+% \item[\marg{Erklärung}: \meta{String},] Erklärung der Option
% \end{description}
-% Zwischen Prefix und Postfix wird bei der späteren, tatsächlichen Definition
-% automatisch \cs{scr@dte@current} eingefügt.
+% Zwischen Prefix und Postfix wird bei der späteren, tatsächlichen Definition
+% automatisch \cs{scr@dte@current} eingefügt. Gleichzeitig wird auch noch eine
+% Kopieroption definiert, die sich von der eigentlichen Option dadurch
+% unterscheidet, dass dem Gleichheitszeichen ein Doppelpunkt voran gestellt
+% ist. Der Wert der Kopieroption ist der Name eines anderen Eintrags, dessen
+% Einstellung dann kopiert wird, sofern dieser Eintrag eine entsprechende
+% Einstellung hat.
% \begin{macro}{\@DefineTOCEntryIfOptionWithoutDefault}
-% \changes{v3.20}{2015/11/12}{neu (intern)}
+% \changes{v3.20}{2015/11/12}{neu (intern)}
+% \changes{v3.27}{2019/10/02}{es wird gleichzeitig eine Kopieroption
+% definiert}%^^A
% \begin{macro}{\@DefineTOCEntryIfOptionWithDefault}
-% \changes{v3.20}{2015/11/12}{neu (intern)}
+% \changes{v3.20}{2015/11/12}{neu (intern)}
+% \changes{v3.27}{2019/10/02}{es wird gleichzeitig eine Kopieroption
+% definiert}%^^A
% \begin{macro}{\@DefineTOCEntryIfOptionMacro}
-% \changes{v3.20}{2015/11/12}{neu (intern)}
+% \changes{v3.20}{2015/11/12}{neu (intern)}
% Da mit einem optionalen Argument an Position 3 gearbeitet wird, werden drei
-% Hilfsmakros benötigt.
+% Hilfsmakros benötigt.
% \begin{macrocode}
%<*body>
\newcommand*{\@DefineTOCEntryIfOption}[2]{%
@@ -565,6 +732,17 @@
\@DefineTOCEntryOption{#1}{#2}[true]{%
\@DefineTOCEntryIfOptionMacro{#2}{#3}{#4}{##1}%
}%
+ \DefineFamilyKey[.dte]{KOMAarg}{#2:}{%
+ \scr@ifundefinedorrelax{If#3##1#4}{\FamilyKeyStateUnknownValue}{%
+ \expandafter\let
+ \csname If#3\scr@dte@current#4\expandafter\endcsname
+ \csname If#3##1#4\endcsname
+ \FamilyKeyStateProcessed
+ }%
+ }%
+ \edef\scr@dte@doopts{%
+ \unexpanded\expandafter{\scr@dte@doopts}\noexpand\do{#2:}%
+ }%
}
\newcommand*{\@DefineTOCEntryIfOptionWithDefault}{}
\def\@DefineTOCEntryIfOptionWithDefault#1#2[#3]#4#5#6{%
@@ -572,6 +750,17 @@
\@DefineTOCEntryOption{#1}{#2}[{#3}]{%
\@DefineTOCEntryIfOptionMacro{#2}{#4}{#5}{##1}%
}%
+ \DefineFamilyKey[.dte]{KOMAarg}{#2:}{%
+ \scr@ifundefinedorrelax{If#4##1#5}{\FamilyKeyStateUnknownValue}{%
+ \expandafter\let
+ \csname If#4\scr@dte@current#5\expandafter\endcsname
+ \csname If#4##1#5\endcsname
+ \FamilyKeyStateProcessed
+ }%
+ }%
+ \edef\scr@dte@doopts{%
+ \unexpanded\expandafter{\scr@dte@doopts}\noexpand\do{#2:}%
+ }%
}
\newcommand*{\@DefineTOCEntryIfOptionMacro}[4]{%
\FamilySetBool{KOMAarg}{#1}{@tempswa}{#4}%
@@ -585,41 +774,50 @@
}
%</body>
% \end{macrocode}
-% \end{macro}^^A \@DefineTOCEntryIfOptionMacro
-% \end{macro}^^A \@DefineTOCEntryIfOptionWithDefault
-% \end{macro}^^A \@DefineTOCEntryIfOptionWithoutDefault
-% \end{macro}^^A \@DefineTOCEntryIfOption
+% \end{macro}%^^A \@DefineTOCEntryIfOptionMacro
+% \end{macro}%^^A \@DefineTOCEntryIfOptionWithDefault
+% \end{macro}%^^A \@DefineTOCEntryIfOptionWithoutDefault
+% \end{macro}%^^A \@DefineTOCEntryIfOption
%
% \begin{macro}{\@DefineTOCEntryCommandOption}
-% \changes{v3.20}{2015/11/17}{neu}
+% \changes{v3.20}{2015/11/17}{neu}
% Verwendet \cs{DefineTOCEntryOption}, um eine Option zu definieren, die ein
% Macro definiert. Es gibt folgende Parameter:
% \begin{description}
% \item[\marg{Stil}: \meta{String},] Name des Eintragsstils
% \item[\marg{Option}: \meta{String},] Name der Option
-% \item[\oarg{Wert}:] der Säumniswert der Option
-% \item[\marg{Prefix}: \meta{String},] Präfix des zu definierenden Makros
+% \item[\oarg{Wert}:] der Säumniswert der Option
+% \item[\marg{Prefix}: \meta{String},] Präfix des zu definierenden Makros
% \item[\marg{Postfix}: \meta{String},] Postfix des zu definierenden Makros
% \item[\oarg{Argumentzahl}: \meta{Nummer},] Anzahl der Argumente des Makros
-% \item[\marg{Erklärung}: \meta{String},] Erklärung der Option
+% \item[\marg{Erklärung}: \meta{String},] Erklärung der Option
% \item[\oarg{Init}: \meta{Code},] Initialisierung der Option
% \end{description}
-% Zwischen Prefix und Postfix wird bei der späteren, tatsächlichen Definition
-% automatisch \cs{scr@dte@current} eingefügt.
+% Zwischen Prefix und Postfix wird bei der späteren, tatsächlichen Definition
+% automatisch \cs{scr@dte@current} eingefügt. Gleichzeitig wird auch noch eine
+% Kopieroption definiert, die sich von der eigentlichen Option dadurch
+% unterscheidet, dass dem Gleichheitszeichen ein Doppelpunkt voran gestellt
+% ist. Der Wert der Kopieroption ist der Name eines anderen Eintrags, dessen
+% Einstellung dann kopiert wird, sofern dieser Eintrag eine entsprechende
+% Einstellung hat.
% \begin{macro}{\@DefineTOCEntryCommandOptionWithoutDefault}
-% \changes{v3.20}{2015/11/12}{neu (intern)}
+% \changes{v3.20}{2015/11/12}{neu (intern)}
% \begin{macro}{\@@DefineTOCEntryCommandOptionWithoutDefault}
-% \changes{v3.20}{2015/11/26}{neu (intern)}
+% \changes{v3.20}{2015/11/26}{neu (intern)}
+% \changes{v3.27}{2019/10/02}{es wird gleichzeitig eine Kopieroption
+% definiert}%^^A
% \begin{macro}{\@DefineTOCEntryCommandOptionWithDefault}
-% \changes{v3.20}{2015/11/12}{neu (intern)}
+% \changes{v3.20}{2015/11/12}{neu (intern)}
% \begin{macro}{\@@DefineTOCEntryCommandOptionWithDefault}
-% \changes{v3.20}{2015/11/26}{neu (intern)}
+% \changes{v3.20}{2015/11/26}{neu (intern)}
+% \changes{v3.27}{2019/10/02}{es wird gleichzeitig eine Kopieroption
+% definiert}%^^A
% \begin{macro}{\@DefineTOCEntryCommandOptionMacro}
-% \changes{v3.20}{2015/11/12}{neu (intern)}
+% \changes{v3.20}{2015/11/12}{neu (intern)}
% \begin{macro}{\@@DefineTOCEntryCommandOptionMacro}
-% \changes{v3.20}{2015/11/26}{neu (intern)}
+% \changes{v3.20}{2015/11/26}{neu (intern)}
% Da mit einem optionalen Argument an Position 3 gearbeitet wird, werden drei
-% Hilfsmakros benötigt.
+% Hilfsmakros benötigt.
% \begin{macrocode}
%<*body>
\newcommand*{\@DefineTOCEntryCommandOption}[2]{%
@@ -637,10 +835,32 @@
\@DefineTOCEntryOption{#1}{#2}{%
\@DefineTOCEntryCommandOptionMacro{#2}{#3}{#4}[#5]{##1}%
}%
+ \DefineFamilyKey[.dte]{KOMAarg}{#2:}{%
+ \scr@ifundefinedorrelax{#3##1#4}{\FamilyKeyStateUnknownValue}{%
+ \expandafter\let
+ \csname #3\scr@dte@current#4\expandafter\endcsname
+ \csname #3##1#4\endcsname
+ \FamilyKeyStateProcessed
+ }%
+ }%
+ \edef\scr@dte@doopts{%
+ \unexpanded\expandafter{\scr@dte@doopts}\noexpand\do{#2:}%
+ }%
\or
\@DefineTOCEntryOption{#1}{#2}{%
\@DefineTOCEntryCommandOptionMacro{#2}{#3}{#4}[#5]{##1{####1}}%
}%
+ \DefineFamilyKey[.dte]{KOMAarg}{#2:}{%
+ \scr@ifundefinedorrelax{#3##1#4}{\FamilyKeyStateUnknownValue}{%
+ \expandafter\let
+ \csname #3\scr@dte@current#4\expandafter\endcsname
+ \csname #3##1#4\endcsname
+ \FamilyKeyStateProcessed
+ }%
+ }%
+ \edef\scr@dte@doopts{%
+ \unexpanded\expandafter{\scr@dte@doopts}\noexpand\do{#2:}%
+ }%
\else
%<class> \ClassError{\KOMAClassName
%<package> \PackageError{tocbasic%
@@ -660,14 +880,47 @@
\@DefineTOCEntryOption{#1}{#2}[{#3}]{%
\@DefineTOCEntryCommandOptionMacro{#2}{#4}{#5}[#6]{##1}%
}%
+ \DefineFamilyKey[.dte]{KOMAarg}{#2:}{%
+ \scr@ifundefinedorrelax{#4##1#5}{\FamilyKeyStateUnknownValue}{%
+ \expandafter\let
+ \csname #4\scr@dte@current#5\expandafter\endcsname
+ \csname #4##1#5\endcsname
+ \FamilyKeyStateProcessed
+ }%
+ }%
+ \edef\scr@dte@doopts{%
+ \unexpanded\expandafter{\scr@dte@doopts}\noexpand\do{#2:}%
+ }%
\or
\@DefineTOCEntryOption{#1}{#2}[{#3}]{%
\@DefineTOCEntryCommandOptionMacro{#2}{#4}{#5}[#6]{##1{####1}}%
}%
+ \DefineFamilyKey[.dte]{KOMAarg}{#2:}{%
+ \scr@ifundefinedorrelax{#4##1#5}{\FamilyKeyStateUnknownValue}{%
+ \expandafter\let
+ \csname #4\scr@dte@current#5\expandafter\endcsname
+ \csname #4##1#5\endcsname
+ \FamilyKeyStateProcessed
+ }%
+ }%
+ \edef\scr@dte@doopts{%
+ \unexpanded\expandafter{\scr@dte@doopts}\noexpand\do{#2:}%
+ }%
\or
\@DefineTOCEntryOption{#1}{#2}[{#3}]{%
\@DefineTOCEntryCommandOptionMacro{#2}{#4}{#5}[#6]{##1{####1}{####2}}%
}%
+ \DefineFamilyKey[.dte]{KOMAarg}{#2:}{%
+ \scr@ifundefinedorrelax{#4##1#5}{\FamilyKeyStateUnknownValue}{%
+ \expandafter\let
+ \csname #4\scr@dte@current#5\expandafter\endcsname
+ \csname #4##1#5\endcsname
+ \FamilyKeyStateProcessed
+ }%
+ }%
+ \edef\scr@dte@doopts{%
+ \unexpanded\expandafter{\scr@dte@doopts}\noexpand\do{#2:}%
+ }%
\else
%<class> \ClassError{\KOMAClassName
%<package> \PackageError{tocbasic%
@@ -688,27 +941,27 @@
}
%</body>
% \end{macrocode}
-% \end{macro}^^A \@@DefineTOCEntryCommandOptionMacro
-% \end{macro}^^A \@DefineTOCEntryCommandOptionMacro
-% \end{macro}^^A \@@DefineTOCEntryCommandOptionWithDefault
-% \end{macro}^^A \@DefineTOCEntryCommandOptionWithDefault
-% \end{macro}^^A \@@DefineTOCEntryCommandOptionWithoutDefault
-% \end{macro}^^A \@DefineTOCEntryCommandOptionWithoutDefault
-% \end{macro}^^A \@DefineTOCEntryCommandOption
+% \end{macro}%^^A \@@DefineTOCEntryCommandOptionMacro
+% \end{macro}%^^A \@DefineTOCEntryCommandOptionMacro
+% \end{macro}%^^A \@@DefineTOCEntryCommandOptionWithDefault
+% \end{macro}%^^A \@DefineTOCEntryCommandOptionWithDefault
+% \end{macro}%^^A \@@DefineTOCEntryCommandOptionWithoutDefault
+% \end{macro}%^^A \@DefineTOCEntryCommandOptionWithoutDefault
+% \end{macro}%^^A \@DefineTOCEntryCommandOption
%
% \begin{macro}{\@AddToDeclareTOCStyleEntryPreCheckNeeds}
-% \changes{v3.20}{2015/12/06}{neu (intern)}
+% \changes{v3.20}{2015/12/06}{neu (intern)}
% \begin{macro}{\@PreToDeclareTOCStyleEntryPreCheckNeeds}
-% \changes{v3.20}{2015/12/06}{neu (intern)}
-% Noch bevor die benötigten Befehle getestet werden, wird in
-% \cs{DeclareTOCStyleEntry} ein Hook ausgeführt. Für das Hinzufügen von Code
+% \changes{v3.20}{2015/12/06}{neu (intern)}
+% Noch bevor die benötigten Befehle getestet werden, wird in
+% \cs{DeclareTOCStyleEntry} ein Hook ausgeführt. Für das Hinzufügen von Code
% zu diesem Hook gibt es folgende Parameter:
% \begin{description}
-% \item[\marg{Code}: \meta{Code},] Code, der ausgeführt werden soll.
+% \item[\marg{Code}: \meta{Code},] Code, der ausgeführt werden soll.
% \end{description}
% Bitte beachten, dass diese Anweisung im Init-Code von Stilen verwendet wird,
-% also innerhalb von \cs{DeclareTOCEntryStyle}, während der Hook innerhalb
-% von \cs{DeclareTOCStyleEntry} ausgeführt wird. Der Code des Hooks hat ein
+% also innerhalb von \cs{DeclareTOCEntryStyle}, während der Hook innerhalb
+% von \cs{DeclareTOCStyleEntry} ausgeführt wird. Der Code des Hooks hat ein
% Argument: Den Namen der Gliederungsebene.
% \begin{macrocode}
%<*body>
@@ -722,22 +975,22 @@
}
%</body>
% \end{macrocode}
-% \end{macro}^^A \@PreToDeclareTOCStyleEntryPreCheckNeeds
-% \end{macro}^^A \@AddToDeclareTOCStyleEntryPreCheckNeeds
+% \end{macro}%^^A \@PreToDeclareTOCStyleEntryPreCheckNeeds
+% \end{macro}%^^A \@AddToDeclareTOCStyleEntryPreCheckNeeds
%
% \begin{macro}{\@TOCEntryStyleNeedsCommandByOption}
-% \changes{v3.20}{2015/12/04}{neu (intern)}
-% Fügt einen oder mehrere Befehle der Liste der benötigten Befehle hinzu.
+% \changes{v3.20}{2015/12/04}{neu (intern)}
+% Fügt einen oder mehrere Befehle der Liste der benötigten Befehle hinzu.
% \begin{description}
-% \item[\marg{Stil}:] Der Stil \meta{string}, der die Befehle benötigt.
-% \item[\marg{Präfix}:] Präfix \meta{string} des benötigten Befehls.
-% \item[\marg{Postfix}:] Postfix \meta{string} des benötigten Befehls.
-% \item[\marg{Option}:] Die Option \meta{string}, über die dieser Befehl
+% \item[\marg{Stil}:] Der Stil \meta{string}, der die Befehle benötigt.
+% \item[\marg{Präfix}:] Präfix \meta{string} des benötigten Befehls.
+% \item[\marg{Postfix}:] Postfix \meta{string} des benötigten Befehls.
+% \item[\marg{Option}:] Die Option \meta{string}, über die dieser Befehl
% definiert wird.
-% \item[\marg{Erklärung}:] Bedeutung \meta{string} des Befehls.
+% \item[\marg{Erklärung}:] Bedeutung \meta{string} des Befehls.
% \end{description}
-% Zwischen Präfix und Postfix wird dann automatisch der Name der
-% Gliederungsebene eingefügt.
+% Zwischen Präfix und Postfix wird dann automatisch der Name der
+% Gliederungsebene eingefügt.
% \begin{macrocode}
%<*body>
\newcommand*{\@TOCEntryStyleNeedsCommandByOption}[5]{%
@@ -748,19 +1001,19 @@
}
%</body>
% \end{macrocode}
-% \end{macro}^^A \@TOCEntryStyleNeedsCommandByOption
+% \end{macro}%^^A \@TOCEntryStyleNeedsCommandByOption
%
% \begin{macro}{\TOCEntryStyleInitCode}
-% \changes{v3.20}{2015/11/19}{neu}
+% \changes{v3.20}{2015/11/19}{neu}
% \begin{macro}{\TOCEntryStyleStartInitCode}
-% \changes{v3.20}{2015/11/25}{neu}
-% Führt Befehle aus, bevor ein Verzeichnisbefehl in diesem Stil definiert wird
+% \changes{v3.20}{2015/11/25}{neu}
+% Führt Befehle aus, bevor ein Verzeichnisbefehl in diesem Stil definiert wird
% und noch bevor die \emph{needs}-Liste abgearbeitet wird.
% Argumente sind:
% \begin{description}
-% \item[\marg{Stil}:] Der Stil \meta{string} für den die Initialisierung
+% \item[\marg{Stil}:] Der Stil \meta{string} für den die Initialisierung
% erfolgen soll.
-% \item[\marg{Code}:] Wird zwecks Initialisierung ausgeführt. Innerhalb dieses
+% \item[\marg{Code}:] Wird zwecks Initialisierung ausgeführt. Innerhalb dieses
% Codes ist \texttt{\#1} der Name der Verzeichnisebene.
% \end{description}
% \begin{macrocode}
@@ -782,16 +1035,31 @@
}%
}
% \end{macrocode}
-% \end{macro}^^A \TOCEntryStyleStartInitCode
-% \end{macro}^^A \TOCEntryStyleInitCode
+% \end{macro}%^^A \TOCEntryStyleStartInitCode
+% \end{macro}%^^A \TOCEntryStyleInitCode
% \begin{macro}{\@ExecuteTOCEntryStyleInitCode}
-% \changes{v3.20}{2015/12/04}{neu (intern)}
-% Führt den Init-Code eines Stils aus. Das erste Argument ist der Name des
-% Stils, das zweite der Name der Verzeichnisebene. Diesen erhält die
-% Init-Anweisung außerdem als Argument.
+% \changes{v3.20}{2015/12/04}{neu (intern)}
+% Führt den Init-Code eines Stils aus. Das erste Argument ist der Name des
+% Stils, das zweite der Name der Verzeichnisebene. Diesen erhält die
+% Init-Anweisung außerdem als Argument.
% \begin{macrocode}
\newcommand*{\@ExecuteTOCEntryStyleInitCode}[2]{%
\let\scr@dte@doopts\@empty
+% \end{macrocode}
+% \changes{v3.27}{2019/10/02}{Initialisierung von
+% \cs{scr@dte@\meta{Stil}@init}}%^^A
+% Weil die Festlegung, welche Optionen bzw. welche Makros für einen Stil
+% benötigt werden über die Deklaration der Optionen stattfindet und diese
+% Deklaration nicht etwa bei der Festlegung des Stils sondern bei der
+% Zuweisung des Stils an einen Eintrag erfolgt, muss hier auch die do-Liste
+% dieser Information gelöscht werden. Anderenfalls würde sie über alle
+% Einträge desselben Stils ständig anwachsen und damit diverse Einträge
+% mehrfach enthalten. Vermutlich wäre es besser, hier tatsächlich eine Liste
+% je Eintrag statt eine je Stil zu erzeugen, aber so ist es eben nicht. Also
+% wird hier immer wieder die gleiche Liste neu aufgebaut und muss deshalb zu
+% Beginn zurückgesetzt werden.
+% \begin{macrocode}
+ \expandafter\let\csname scr@dte@#1@needs\endcsname\relax
\scr@ifundefinedorrelax{scr@dte@#1@init}{}{%
\def\DefineTOCEntryBooleanOption{\@DefineTOCEntryBooleanOption{#1}}%
\def\DefineTOCEntryCommandOption{\@DefineTOCEntryCommandOption{#1}}%
@@ -819,24 +1087,24 @@
}
%</body>
% \end{macrocode}
-% \end{macro}^^A \ExecuteTOCEntryStyleInitCode
+% \end{macro}%^^A \ExecuteTOCEntryStyleInitCode
%
% \begin{macro}{\DeclareTOCStyleEntry}
-% \changes{v3.20}{2015/11/13}{neu}
+% \changes{v3.20}{2015/11/13}{neu}
% Diese Anweisung definiert einen Verzeichniseintragsbefehl. Dabei wird auch
-% geprüft, ob all benötigten Befehle definiert sind. Falls das nicht der Fall
+% geprüft, ob all benötigten Befehle definiert sind. Falls das nicht der Fall
% ist, wird der Verzeichniseintragsbefehl nicht definiert, sondern ein Fehler
-% gemeldet. Für die Definition werden folgende Argumente verwendet.
+% gemeldet. Für die Definition werden folgende Argumente verwendet.
% \begin{description}
-% \item[\oarg{Optionen}:] Komma separierte Liste von Optionen für die
+% \item[\oarg{Optionen}:] Komma separierte Liste von Optionen für die
% Definition des Eintrags.
% \item[\marg{Stil}:] Der Stil \meta{string}, in dem der Verzeichniseintrag
% sein soll.
% \item[\marg{Gliederungsebene}:] Der Name \meta{string} der Gliederungsebene
-% für die ein Verzeichniseintrag definiert werden soll.
+% für die ein Verzeichniseintrag definiert werden soll.
% \end{description}
-% Es wird außerdem eine Anweisung \cs{scr@dte@def@l@\meta{Stil}} benötigt,
-% über die dann die eigentliche Definition der Eintragsanweisung
+% Es wird außerdem eine Anweisung \cs{scr@dte@def@l@\meta{Stil}} benötigt,
+% über die dann die eigentliche Definition der Eintragsanweisung
% erfolgt. Diese hat genau ein Argument: \meta{Gliederungsebene}.
% \begin{macrocode}
%<*body>
@@ -893,14 +1161,26 @@
\endgroup
\if@tempswa
\@nameuse{scr@dte@def@l@#2}{#3}%
+% \end{macrocode}
+% \changes{v3.27}{2019/10/02}{macro name prefix for style information
+% changed}%^^A
+% Note: Before \KOMAScript~3.27 the style name of an entry was stored in
+% \cs{scr@dte@\meta{level name}@style}. But this war wrong, because the prefix
+% \texttt{scr@dte} is used for attributes of the style (while declaring an
+% entry), but the style is an attribute of the entry. So usage of the prefix
+% \texttt{scr@tso} would be much better. This means usage of
+% \cs{scr@dte@\meta{level name}@style} is deprecated and should be replaced by
+% \cs{scr@tso@\meta{level name}@style}.
+% \begin{macrocode}
\expandafter\edef\csname scr@dte@#3@style\endcsname{#2}%
+ \expandafter\edef\csname scr@tso@#3@style\endcsname{#2}%
% \end{macrocode}
-% \changes{v3.21}{2016/06/09}{\cs{toclevel@\emph{ebene}} wird für
-% \textsf{hyperref} neu gesetzt}^^A
+% \changes{v3.21}{2016/06/09}{\cs{toclevel@\emph{ebene}} wird für
+% \textsf{hyperref} neu gesetzt}%^^A
% Da verschiedene Pakete davon ausgehen, dass die Ebene
% \textsf{hyperref}-kompatibel gespeichert ist, setzen wir die hier
-% zusätzlich. Das \textsf{hyperref} die Einstellungen ggf. überschreibt,
-% machen wir das in der Dokumentpräambel auch mehrfach.
+% zusätzlich. Das \textsf{hyperref} die Einstellungen ggf. überschreibt,
+% machen wir das in der Dokumentpräambel auch mehrfach.
% \begin{macrocode}
\expandafter\let\csname toclevel@#3\expandafter\endcsname
\csname #3tocdepth\endcsname
@@ -920,10 +1200,10 @@
}
%</body>
% \end{macrocode}
-% \end{macro}^^A \DeclareTOCStyleEntry
+% \end{macro}%^^A \DeclareTOCStyleEntry
%
% \begin{macro}{\DeclareTOCStyleEntries}
-% \changes{v3.26}{2018/08/27}{new}^^A
+% \changes{v3.26}{2018/08/27}{new}%^^A
% Use \cs{DeclareTOCStyleEntry} to define a list of entries, all with the same
% options and style.
% \begin{macrocode}
@@ -946,26 +1226,26 @@
}
%</body>
% \end{macrocode}
-% \end{macro}^^A \DeclareTOCStyleEntries
+% \end{macro}%^^A \DeclareTOCStyleEntries
%
% \begin{macro}{\DeclareTOCEntryStyle}
-% \changes{v3.20}{2015/11/17}{neu}
+% \changes{v3.20}{2015/11/17}{neu}
% \begin{macro}{\@DeclareTOCEntryStyle}
-% \changes{v3.20}{2015/11/17}{neu (intern)}
-% Über diese Anweisung wir ein neuer Stil für TOC-Einträge definiert. Ein Stil
+% \changes{v3.20}{2015/11/17}{neu (intern)}
+% Über diese Anweisung wir ein neuer Stil für TOC-Einträge definiert. Ein Stil
% besteht aus:
% \begin{description}
% \item[\marg{Stil}:] Der Stil \meta{string}, der definiert werden soll.
% \item[\oarg{Initialisierungscode}:] Dieser Code wird bei der Definition
-% eines Verzeichnisbefehls ausgeführt und enthält beispielsweise
+% eines Verzeichnisbefehls ausgeführt und enthält beispielsweise
% Optionendeklarationen. Es ist zu beachten, dass dieser Code ggf. auch
-% mehrfach ausgeführt werden kann!
-% \item[\marg{Code}:] Der Code, der ausgeführt wird, wenn ein
+% mehrfach ausgeführt werden kann!
+% \item[\marg{Code}:] Der Code, der ausgeführt wird, wenn ein
% Verzeichniseintrag ausgegeben werden soll.
% \end{description}
-% Unabhängig davon, ob eine \meta{Optionendeklaration} angegeben ist oder
-% nicht, wird immer eine Option \texttt{level} definiert, über die die
-% Verzeichnisebene einen nummerischen Wert erhält.
+% Unabhängig davon, ob eine \meta{Optionendeklaration} angegeben ist oder
+% nicht, wird immer eine Option \texttt{level} definiert, über die die
+% Verzeichnisebene einen nummerischen Wert erhält.
% \begin{macrocode}
%<*body>
\newcommand*{\DeclareTOCEntryStyle}[1]{%
@@ -989,50 +1269,50 @@
}
%</body>
% \end{macrocode}
-% \end{macro}^^A \@DeclareTOCEntryStyle
-% \end{macro}^^A \DeclareTOCEntryStyle
+% \end{macro}%^^A \@DeclareTOCEntryStyle
+% \end{macro}%^^A \DeclareTOCEntryStyle
%
% \begin{macro}{\TOC@EntryStartHook}
-% \changes{v3.20}{2016/01/12}{neu (intern)}
-% Bei jedem Eintrag, der über einen Eintragsstil von \KOMAScript{} definiert
-% ist, kann vor dem jeweiligen Eintrag über einen Haken eine Reihe
-% von Anweisungen ausgeführt werden. Innerhalb dieser Anweisungen ist
-% \texttt{\#1} der Name der Gliederungsebene. In der Regel dürfen diese
-% Anweisungen keinerlei Ausgaben tätigen und weder \cs{lastpenalty} noch
-% \cs{lastskip} verändern. Der Anwender ist dafür selbst verantwortlich! Weil
-% diese Einschränkung jedoch etwas kritisch ist und der Aufruf ohnehin ein
-% \cs{makeatletter} benötigt, wird nur der Haken definiert aber keine
-% Anweisung, um diesen zu ändern oder zu erweitern.
+% \changes{v3.20}{2016/01/12}{neu (intern)}
+% Bei jedem Eintrag, der über einen Eintragsstil von \KOMAScript{} definiert
+% ist, kann vor dem jeweiligen Eintrag über einen Haken eine Reihe
+% von Anweisungen ausgeführt werden. Innerhalb dieser Anweisungen ist
+% \texttt{\#1} der Name der Gliederungsebene. In der Regel dürfen diese
+% Anweisungen keinerlei Ausgaben tätigen und weder \cs{lastpenalty} noch
+% \cs{lastskip} verändern. Der Anwender ist dafür selbst verantwortlich! Weil
+% diese Einschränkung jedoch etwas kritisch ist und der Aufruf ohnehin ein
+% \cs{makeatletter} benötigt, wird nur der Haken definiert aber keine
+% Anweisung, um diesen zu ändern oder zu erweitern.
% \begin{macrocode}
%<*body>
\newcommand*{\TOC@EntryStartHook}[1]{}
%</body>
% \end{macrocode}
-% \end{macro}^^A \TOC@EntryStartHook
+% \end{macro}%^^A \TOC@EntryStartHook
%
% \begin{macro}{\TOC@EntryEndHook}
-% \changes{v3.20}{2016/01/12}{neu (intern)}
-% Bei jedem Eintrag, der über einen Eintragsstil von \KOMAScript{} definiert
-% ist, kann nach dem jeweiligen Eintrag über einen Haken eine Reihe
-% von Anweisungen ausgeführt werden. Innerhalb dieser Anweisungen ist
-% \texttt{\#1} der Name der Gliederungsebene. In der Regel dürfen diese
-% Anweisungen keinerlei Ausgaben tätigen und weder \cs{lastpenalty} noch
-% \cs{lastskip} verändern. Der Anwender ist dafür selbst verantwortlich! Weil
-% diese Einschränkung jedoch etwas kritisch ist und der Aufruf ohnehin ein
-% \cs{makeatletter} benötigt, wird nur der Haken definiert aber keine
-% Anweisung, um diesen zu ändern oder zu erweitern.
+% \changes{v3.20}{2016/01/12}{neu (intern)}
+% Bei jedem Eintrag, der über einen Eintragsstil von \KOMAScript{} definiert
+% ist, kann nach dem jeweiligen Eintrag über einen Haken eine Reihe
+% von Anweisungen ausgeführt werden. Innerhalb dieser Anweisungen ist
+% \texttt{\#1} der Name der Gliederungsebene. In der Regel dürfen diese
+% Anweisungen keinerlei Ausgaben tätigen und weder \cs{lastpenalty} noch
+% \cs{lastskip} verändern. Der Anwender ist dafür selbst verantwortlich! Weil
+% diese Einschränkung jedoch etwas kritisch ist und der Aufruf ohnehin ein
+% \cs{makeatletter} benötigt, wird nur der Haken definiert aber keine
+% Anweisung, um diesen zu ändern oder zu erweitern.
% \begin{macrocode}
%<*body>
\newcommand*{\TOC@EntryEndHook}[1]{}
%</body>
% \end{macrocode}
-% \end{macro}^^A \TOC@EntryEndHook
+% \end{macro}%^^A \TOC@EntryEndHook
%
% \begin{macro}{\CloneTOCEntryStyle}
-% \changes{v3.20}{2015/11/25}{neu}
+% \changes{v3.20}{2015/11/25}{neu}
% Diese Anweisung dupliziert einen Stil samt seiner Optionen und
-% Befehle. Anschließend kann man ihn beispielsweise verändern. Das erste
-% Argument ist der Name des ursprünglichen Stils, das zweite der neue Name.
+% Befehle. Anschließend kann man ihn beispielsweise verändern. Das erste
+% Argument ist der Name des ursprünglichen Stils, das zweite der neue Name.
% \begin{macrocode}
%<*body>
\newcommand*{\CloneTOCEntryStyle}[2]{%
@@ -1057,19 +1337,46 @@
%
% Hier wird quasi an Beispielen gezeigt, wie man Verzeichniseintragsstile
% definieren kann. Einige dieser Stile sind sehr grundlegend. Andere sind
-% stellen Erweiterungen der grundlegenden Stile dar. Die Stile können über
-% mehrere \texttt{docstrip}-Durchgänge einzeln in den Quelltext gelangen.
+% stellen Erweiterungen der grundlegenden Stile dar. Die Stile können über
+% mehrere \texttt{docstrip}-Durchgänge einzeln in den Quelltext gelangen.
+%
+% \begin{macro}{\@pnumwidth}
+% \changes{v3.27}{2019/05/11}{aus den Klassen in das Paket verschoben}%^^A
+% \begin{macro}{\@tocrmarg}
+% \changes{v3.27}{2019/05/11}{aus den Klassen in das Paket verschoben}%^^A
+% \begin{macro}{\@dotsep}
+% \changes{v3.27}{2019/05/11}{aus den Klassen in das Paket verschoben}%^^A
+% Einige Makros für die Formatierung der Verzeichniseinträge:
+% \begin{description}
+% \item[\cs{@pnumwidth}] ist der Platz für die Seitenzahl.
+% \item[\cs{@tocrmarg}] ist der rechte Rand bei mehrzeiligen
+% Verzeichniseinträgen. Dieser wird hier größer als \cs{@pnumwidth}
+% gewählt.
+% \item[\cs{\@dotsep}] ist der Abstand zwischen den einzelnen
+% Punkten.
+% \end{description}
+% \begin{macrocode}
+%<*body>
+\providecommand*\@pnumwidth{1.55em}
+\providecommand*\@tocrmarg {2.55em}
+\providecommand*\@dotsep {4.5}
+%</body>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
%
% \iffalse
%<*style>
% \fi
%
% \begin{macro}{\scr@dte@def@l@gobble}
-% \changes{v3.20}{2015/11/20}{neuer Verzeichniseintragsstil
-% \texttt{gobble}}^^A
+% \changes{v3.20}{2015/11/20}{neuer Verzeichniseintragsstil
+% \texttt{gobble}}%^^A
% Der aller einfachste Verzeichniseintragsstil ist \texttt{gobble}. Er nimmt
-% die beiden Argumente für den Verzeichniseintrag und die Seitenzahl und
-% vergisst sie unabhängig von der Ebene des Eintrags einfach. Daher benötigt
+% die beiden Argumente für den Verzeichniseintrag und die Seitenzahl und
+% vergisst sie unabhängig von der Ebene des Eintrags einfach. Daher benötigt
% dieser Stil auch keinerlei Optionen oder Initialisierung.
% \begin{macrocode}
%<*gobble>
@@ -1077,42 +1384,51 @@
\DeclareTOCEntryStyle{gobble}{}%
%</gobble>
% \end{macrocode}
-% \end{macro}^^A \scr@dte@def@l@gobble
+% \end{macro}%^^A \scr@dte@def@l@gobble
%
% \begin{macro}{\scr@dte@def@l@dottedtocline}
-% \changes{v3.20}{2015/11/20}{neuer Verzeichniseintragsstil
-% \texttt{dottedtocline}}^^A
+% \changes{v3.20}{2015/11/20}{neuer Verzeichniseintragsstil
+% \texttt{dottedtocline}}%^^A
% Der einfachste echte Verzeichniseintragsstil ist
% \texttt{dottedtocline}. Dieser verwendet einfach nur die
-% \LaTeX-Kern-Anweisung \cs{dottedtocline}. Für \KOMAScript{} selbst sollte
+% \LaTeX-Kern-Anweisung \cs{dottedtocline}. Für \KOMAScript{} selbst sollte
% man dieses Stil nicht verwenden. Man kann ihn aber beispielsweise mit den
-% Standardklassen verwenden, wenn man kompatibel bleiben will. Dieser benötigt
-% jedoch bereits Angaben bezüglich der Nummernbreite und des
+% Standardklassen verwenden, wenn man kompatibel bleiben will. Dieser benötigt
+% jedoch bereits Angaben bezüglich der Nummernbreite und des
% Eintragseinzugs. Der ohnehin immer definierte Level wird ebenfalls
% ausgewertet.
% \begin{macro}{\scr@dte@def@l@undottedtocline}
-% \changes{v3.20}{2015/11/20}{neuer Verzeichniseintragsstil
-% \texttt{undottedtocline}}^^A
+% \changes{v3.20}{2015/11/20}{neuer Verzeichniseintragsstil
+% \texttt{undottedtocline}}%^^A
% Im Unterschied dazu entspricht der Verzeichniseintragsstil
% \texttt{undottedtocline} dem der \texttt{chapter}-Ebene der
% Standardklassen. Im Unterschied zu diesen wird jedoch ein Eintragseinzug
-% unterstützt.
+% unterstützt.
% \begin{macro}{\scr@dte@def@l@largetocline}
-% \changes{v3.20}{2015/11/20}{neuer Verzeichniseintragsstil
-% \texttt{largetocline}}^^A
+% \changes{v3.20}{2015/11/20}{neuer Verzeichniseintragsstil
+% \texttt{largetocline}}%^^A
% Im Unterschied dazu entspricht der Verzeichniseintragsstil
% \texttt{largetocline} dem der \texttt{part}-Ebene der Standardklassen. Im
-% Unterschied zu diesen wird jedoch ein Eintragseinzug unterstützt. Eine
-% Nummernbreite gibt es hingegen nicht. Stattdessen werden die Einträge nicht
-% hängend gesetzt.
+% Unterschied zu diesen wird jedoch ein Eintragseinzug unterstützt. Eine
+% Nummernbreite gibt es hingegen nicht. Stattdessen werden die Einträge nicht
+% hängend gesetzt.
% \begin{macro}{\scr@dte@def@l@tocline}
-% \changes{v3.20}{2015/11/22}{neuer Verzeichniseintragsstil
-% \texttt{tocline}}^^A
-% Das hingegen wird der hochflexible Stil für Verzeichniseinträge, die aus
-% einer oder mehreren Zeilen bestehen. Dieser wird später über diverse
+% \changes{v3.20}{2015/11/22}{neuer Verzeichniseintragsstil
+% \texttt{tocline}}%^^A
+% Das hingegen wird der hochflexible Stil für Verzeichniseinträge, die aus
+% einer oder mehreren Zeilen bestehen. Dieser wird später über diverse
% Hilfsmakros definiert.
-% \begin{macrocode}
-%<*dottedtocline|undottedtocline|largetocline|tocline>
+% \begin{macro}{\scr@dte@def@l@toctext}
+% \changes{3.27}{2019/07/08}{neuer Verzeichniseintragsstil
+% \texttt{toctext}}%^^A
+% Während alle bisherigen Stile Zeilen oder eigentlich Absätze im Verzeichnis
+% erstellen, soll dieser Stil lediglich Text innerhalb eines Absatzes
+% erzeugen. Die einzelnen Einträge werden also hintereinander
+% ausgegeben. Dabei können auch Zeilenumbrüche innerhalb eines Eintrags
+% vorkommen. Dieser Stil teilt einige, wenige Optionen mit dem Stil
+% \texttt{tocline}. Die Stile haben aber auch eigene Optionen.
+% \begin{macrocode}
+%<*dottedtocline|undottedtocline|largetocline|tocline|toctext>
%<*dottedtocline>
%%% (run: style,dottedtocline)
\DeclareTOCEntryStyle{dottedtocline}[{%
@@ -1125,6 +1441,10 @@
%%% (run: style, largetocline)
\DeclareTOCEntryStyle{largetocline}[{%
%</largetocline>
+%<*toctext>
+%%% (run: style,toctext)
+\DeclareTOCEntryStyle{toctext}[{%
+%</toctext>
%<*tocline>
%%% (run: style,tocline)
\DeclareTOCEntryStyle{tocline}[{%
@@ -1134,30 +1454,75 @@
{scr@tso@}{@breakafternumber}{line break after number flag}%
\DefineTOCEntryIfOption{dynnumwidth}%
{scr@tso@}{@dynnumwidth}{dynamic number width flag}%
+%</tocline>
+%<*tocline|toctext>
\DefineTOCEntryCommandOption{entryformat}%
{scr@tso@}{@entryformat}[1]{entry format}%
\DefineTOCEntryCommandOption{entrynumberformat}%
{scr@tso@}{@numberformat}[1]{entry number format}%
+%</tocline|toctext>
+%<*tocline>
\DefineTOCEntryCommandOption{linefill}[\TOCLineLeaderFill]%
{scr@tso@}{@linefill}{filling between text and page number}%
+%</tocline>
+%<*toctext>
+ \DefineTOCEntryCommandOption{prepagenumber}%
+ {scr@tso@}{@prepagenumber}{separator between text and page number}%
+%</toctext>
+%<*tocline|toctext>
\DefineTOCEntryLengthOption{numsep}%
{scr@tso@}{@numsep}{entry number separation}%
+%</tocline|toctext>
+%<*tocline>
\DefineTOCEntryCommandOption{onstarthigherlevel}%
{scr@tso@}{@LastTOCLevelWasLower}{start higher level entry hook}%
\DefineTOCEntryCommandOption{onstartlowerlevel}%
{scr@tso@}{@LastTOCLevelWasHigher}{start lower level entry hook}%
\DefineTOCEntryCommandOption{onstartsamelevel}%
{scr@tso@}{@LastTOCLevelWasSame}{start same level entry hook}%
+%</tocline>
+%<*toctext>
+ \DefineTOCEntryCommandOption{onstartfirstentry}%
+ {scr@tso@}{@onstartfirstentry}{output at start of paragraph}%
+ \DefineTOCEntryCommandOption{onstartentry}%
+ {scr@tso@}{@onstartentry}{output at start of all entries but the first}%
+ \DefineTOCEntryCommandOption{onendlastentry}%
+ {scr@tso@}{@onendlastentry}{output at end of paragraph}%
+ \DefineTOCEntryCommandOption{afterpar}%
+ {scr@tso@}{@afterpar}{settings after end of paragraph}%
+ \DefineTOCEntryCommandOption{onendentry}%
+ {scr@tso@}{@onendentry}{output at end of all entries but the last}%
+%</toctext>
+%<*tocline>
\DefineTOCEntryCommandOption{pagenumberbox}%
{scr@tso@}{@pagenumberbox}[1]{page number box}%
+%</tocline>
+%<*tocline|toctext>
\DefineTOCEntryCommandOption{pagenumberformat}%
{scr@tso@}{@pagenumberformat}[1]{page number format}%
+%</tocline|toctext>
% \end{macrocode}
-% \changes{v3.21}{2016/06/06}{neue Option \texttt{raggedentrytext}}^^A
-% Die Option \texttt{raggedentrytext} muss leider etwas umständlich definiert
-% werden, damit sie mit der früheren Definition eines Makros
+% \changes{v3.27}{2019/05/24}{neue Option \texttt{pagenumberwidth}}%^^A
+% \changes{v3.27}{2019/05/24}{neue Option \texttt{rightindent}}%^^A
+% Die Optionen \texttt{pagenumberwidth} und \texttt{rightindent} ersetzen
+% innerhalb des Stils \texttt{tocline} die Makros \cs{@pnumwidth} und
+% \cs{@tocrmarg}.
+% \begin{macrocode}
+%<*tocline>
+ \DefineTOCEntryLengthOption{pagenumberwidth}%
+ {scr@tso@}{@pagenumberwidth}{width of page number box}%
+%</tocline>
+%<*tocline|toctext>
+ \DefineTOCEntryLengthOption{rightindent}%
+ {scr@tso@}{@rightindent}{entry's text right indent}%
+%</tocline|toctext>
+% \end{macrocode}
+% \changes{v3.21}{2016/06/06}{neue Option \texttt{raggedentrytext}}%^^A
+% Die Option \texttt{raggedentrytext} muss leider etwas umständlich definiert
+% werden, damit sie mit der früheren Definition eines Makros
% \cs{raggedchapterentry} halbwegs kompatibel ist.
% \begin{macrocode}
+%<*tocline>
\DefineTOCEntryOption{raggedentrytext}[true]{%
\FamilySetBool{KOMAarg}{raggedentrytext}{@tempswa}{##1}%
\ifx\FamilyKeyState\FamilyKeyStateProcessed
@@ -1173,6 +1538,10 @@
\DefineTOCEntryIfOption{raggedpagenumber}%
{scr@tso@}{@raggedpage}{page number ragged flag}%
%</tocline>
+%<*toctext>
+ \DefineTOCEntryIfOption{raggedright}%
+ {scr@tso@}{@raggedright}{use raggedright for the whole paragraph}%
+%</toctext>
\DefineTOCEntryLengthOption{indent}%
{scr@tso@}{@indent}{entry indent}%
%<*dottedtocline|undottedtocline|tocline>
@@ -1181,11 +1550,11 @@
%</dottedtocline|undottedtocline|tocline>
% \end{macrocode}
% Die Ebene, \texttt{level} bzw. \cs{\dots tocdepth}, kann auf zweierlei Arten
-% automatisch bestimmt werden. Zum einen wird für Sub-Ebenen die Elternebene
-% um eins erhöht verwendet, falls die Elternebene bereits definiert ist.
-% \changes{v3.21}{2016/06/09}{\cs{the} eingefügt}^^A
+% automatisch bestimmt werden. Zum einen wird für Sub-Ebenen die Elternebene
+% um eins erhöht verwendet, falls die Elternebene bereits definiert ist.
+% \changes{v3.21}{2016/06/09}{\cs{the} eingefügt}%^^A
% \begin{macrocode}
-%<*tocline>
+%<*tocline|toctext>
\scr@ifundefinedorrelax{#1tocdepth}{%
\ifstrstart{#1}{sub}{%
\scr@ifundefinedorrelax{\scr@dte@nosub{#1}tocdepth}{}{%
@@ -1195,9 +1564,9 @@
}%
}{}%
}{}%
-%</tocline>
+%</tocline|toctext>
% \end{macrocode}
-% War der Weg über Elternebenen nicht erfolgreich oder wurde er nicht
+% War der Weg über Elternebenen nicht erfolgreich oder wurde er nicht
% verwendet, so werden Standardwerte angenommen, wie sie bei den
% Standardklassen und bei \KOMAScript{} zutreffen.
% \begin{macrocode}
@@ -1212,8 +1581,8 @@
\ifstr{#1}{figure}{\@namedef{#1tocdepth}{1}}{%
\ifstr{#1}{table}{\@namedef{#1tocdepth}{1}}{%
% \end{macrocode}
-% Für unbekannte Anweisungen wird stattdessen eine eventuell vorhandene
-% Gliederungsebene auch als Verzeichnisebene übernommen:
+% Für unbekannte Anweisungen wird stattdessen eine eventuell vorhandene
+% Gliederungsebene auch als Verzeichnisebene übernommen:
% \begin{macrocode}
\expandafter\let\csname #1tocdepth\expandafter\endcsname
\csname #1numdepth\endcsname
@@ -1230,7 +1599,7 @@
% \end{macrocode}
% Der Einzug kann wie der Level aus der Elternebene gebildet werden
% \begin{macrocode}
-%<*tocline>
+%<*tocline|toctext>
\scr@ifundefinedorrelax{scr@tso@#1@indent}{%
\@ifundefined{scr@#1@tocindent}{%
\ifstrstart{#1}{sub}{%
@@ -1258,15 +1627,50 @@
}{}%
}{%
% \end{macrocode}
-% Kompatibilität mit älteren \KOMAScript-Klassen.
+% Kompatibilität mit älteren \KOMAScript-Klassen.
% \begin{macrocode}
\@namedef{scr@tso@#1@indent}{\@nameuse{scr@#1@tocindent}}%
}%
}{}%
+%</tocline|toctext>
+% \end{macrocode}
+% Die Breite der Seitenzahlbox und der rechte Einzug können ebenfalls aus den
+% Elternelementen gebildet werden, allerdings muss hier nur der Wert
+% übernommen werden.
+% \begin{macrocode}
+%<*tocline>
+ \scr@ifundefinedorrelax{scr@tso@#1@pagenumberwidth}{%
+ \ifstrstart{#1}{sub}{%
+ \scr@ifundefinedorrelax{scr@tso@\scr@dte@nosub{#1}@pagenumberwidth}{%
+ \@namedef{scr@tso@#1@pagenumberwidth}{\@pnumwidth}%
+ }{%
+ \expandafter\let
+ \csname scr@tso@#1@pagenumberwidth\expandafter\endcsname
+ \csname scr@tso@\scr@dte@nosub{#1}@pagenumberwidth\endcsname
+ }%
+ }{%
+ \@namedef{scr@tso@#1@pagenumberwidth}{\@pnumwidth}%
+ }%
+ }{}%
%</tocline>
+%<*tocline|toctext>
+ \scr@ifundefinedorrelax{scr@tso@#1@rightindent}{%
+ \ifstrstart{#1}{sub}{%
+ \scr@ifundefinedorrelax{scr@tso@\scr@dte@nosub{#1}@rightindent}{%
+ \@namedef{scr@tso@#1@rightindent}{\@tocrmarg}%
+ }{%
+ \expandafter\let
+ \csname scr@tso@#1@rightindent\expandafter\endcsname
+ \csname scr@tso@\scr@dte@nosub{#1}@rightindent\endcsname
+ }%
+ }{%
+ \@namedef{scr@tso@#1@rightindent}{\@tocrmarg}%
+ }%
+ }{}%
+%</tocline|toctext>
% \end{macrocode}
% War das nicht erfolgreich oder wird es nicht genutzt, so werden
-% Standardwerte verwendet, die sowohl für die Standardklasse als auch die
+% Standardwerte verwendet, die sowohl für die Standardklasse als auch die
% \KOMAScript-Klassen zutreffend sind.
% \begin{macrocode}
\@ifundefined{scr@tso@#1@indent}{%
@@ -1278,7 +1682,7 @@
\ifstr{#1}{part}{\@namedef{scr@tso@#1@indent}{0em}}{%
\ifstr{#1}{chapter}{\@namedef{scr@tso@#1@indent}{0em}}{%
% \end{macrocode}
-% Ab hier hängt es nun davon ab, ob es eine Kapitel-Ebene gibt oder
+% Ab hier hängt es nun davon ab, ob es eine Kapitel-Ebene gibt oder
% nicht. Dazu sollte die Kapitelebene bereits definiert sein!
% \begin{macrocode}
\scr@ifundefinedorrelax{l@chapter}{%
@@ -1294,7 +1698,7 @@
\@namedef{scr@tso@#1@indent}{10em}%
}{%
% \end{macrocode}
-% Für unbekannte Ebenen muss der Wert selbst per Option gesetzt werden!
+% Für unbekannte Ebenen muss der Wert selbst per Option gesetzt werden!
% \begin{macrocode}
}%
}%
@@ -1314,7 +1718,7 @@
\@namedef{scr@tso@#1@indent}{12em}%
}{%
% \end{macrocode}
-% Für unbekannte Ebenen muss der Wert selbst per Option gesetzt werden!
+% Für unbekannte Ebenen muss der Wert selbst per Option gesetzt werden!
% \begin{macrocode}
}%
}%
@@ -1329,14 +1733,14 @@
%<*dottedtocline|undottedtocline|largetocline>
}{%
% \end{macrocode}
-% Kompatibilität mit älteren \KOMAScript-Klassen.
+% Kompatibilität mit älteren \KOMAScript-Klassen.
% \begin{macrocode}
\@namedef{scr@tso@#1@indent}{\@nameuse{scr@#1@tocindent}}%
}%
%</dottedtocline|undottedtocline|largetocline>
}{}%
% \end{macrocode}
-% Für die Nummernbreite gibt es ebenfalls beide Wege.
+% Für die Nummernbreite gibt es ebenfalls beide Wege.
% \begin{macrocode}
%<*dottedtocline|undottedtocline|tocline>
%<*tocline>
@@ -1364,7 +1768,7 @@
\ifstr{#1}{table}{\@namedef{scr@tso@#1@numwidth}{2.3em}}{%
\ifstr{#1}{chapter}{\@namedef{scr@tso@#1@numwidth}{1.5em}}{%
% \end{macrocode}
-% Ab hier hängt es nun davon ab, ob es eine Kapitel-Ebene gibt oder
+% Ab hier hängt es nun davon ab, ob es eine Kapitel-Ebene gibt oder
% nicht. Dazu sollte die Kapitelebene bereits definiert sein!
% \begin{macrocode}
\scr@ifundefinedorrelax{chapter}{%
@@ -1380,7 +1784,7 @@
\@namedef{scr@tso@#1@numwidth}{5m}%
}{%
% \end{macrocode}
-% Für unbekannte Ebenen muss der Wert selbst per Option gesetzt werden!
+% Für unbekannte Ebenen muss der Wert selbst per Option gesetzt werden!
% \begin{macrocode}
}%
}%
@@ -1400,7 +1804,7 @@
\@namedef{scr@tso@#1@numwidth}{6em}%
}{%
% \end{macrocode}
-% Für unbekannte Ebenen muss der Wert selbst per Option gesetzt werden!
+% Für unbekannte Ebenen muss der Wert selbst per Option gesetzt werden!
% \begin{macrocode}
}%
}%
@@ -1414,7 +1818,7 @@
%<*dottedtocline|undottedtocline>
}{%
% \end{macrocode}
-% Kompatibilität mit älteren \KOMAScript-Klassen.
+% Kompatibilität mit älteren \KOMAScript-Klassen.
% \begin{macrocode}
\@namedef{scr@tso@#1@numwidth}{\@nameuse{scr@#1@tocnumwidth}}%
}%
@@ -1423,8 +1827,8 @@
%</dottedtocline|undottedtocline|tocline>
%<*tocline>
% \end{macrocode}
-% Die Standardeinstellungen für die drei Penalty-Hooks sind einfach die
-% Standardanweisungen dafür. Dabei ist das so definiert, dass Änderungen an
+% Die Standardeinstellungen für die drei Penalty-Hooks sind einfach die
+% Standardanweisungen dafür. Dabei ist das so definiert, dass Änderungen an
% den Standardanweisungen direkte Auswirkungen haben.
% \begin{macrocode}
\expandafter\providecommand%
@@ -1434,9 +1838,9 @@
\expandafter\providecommand%
\csname scr@tso@#1@LastTOCLevelWasHigher\endcsname{\LastTOCLevelWasHigher}%
% \end{macrocode}
-% Die Voreinstellung für den vertikalen Abstand ist Null mit ein klein wenig
-% Leim, um den Seitenumbruch zu optimieren. Das genügt bei einer normalen
-% A4-Seite aber gerade mal für den Ausgleich einer Zeile. Bei den höheren
+% Die Voreinstellung für den vertikalen Abstand ist Null mit ein klein wenig
+% Leim, um den Seitenumbruch zu optimieren. Das genügt bei einer normalen
+% A4-Seite aber gerade mal für den Ausgleich einer Zeile. Bei den höheren
% Ebenen werden stattdessen die Voreinstellungen der Standardklassen
% verwendet.
% \begin{macrocode}
@@ -1459,7 +1863,7 @@
}{}%
% \end{macrocode}
% Es ist gut zu wissen, wie breit die breiteste Nummer ist, damit wir
-% ggf. prüfen können, ob entsprechende Bedingungen eingehalten werden.
+% ggf. prüfen können, ob entsprechende Bedingungen eingehalten werden.
% \begin{macrocode}
\@ifundefined{scr@dte@#1@maxnumwidth}{%
\expandafter\newlength\csname scr@dte@#1@maxnumwidth\endcsname
@@ -1467,20 +1871,42 @@
}{}%
\providecommand*{\scr@dte@donumwidth}{}%
\g@addto@macro{\scr@dte@donumwidth}{\do{#1}}%
+%</tocline>
% \end{macrocode}
% Eine dieser Bedingungen ist, dass ein Mindestabstand zwischen Nummer und
% Text eingehalten wird.
% \begin{macrocode}
+%<*tocline|toctext>
\expandafter\providecommand\expandafter*%
\csname scr@tso@#1@numsep\endcsname{.4em}%
+%</tocline|toctext>
% \end{macrocode}
-% Jede Ebene kann ihre eigene Formatierungsanweisung für die Nummer haben.
-% Jede Ebene kann auch ihre eigene Formatierungsanweisung für Nummer und Text
-% haben. Für \texttt{part} wird hier die Voreinstellung der Standardklassen
+% Beim Absatzstil gibt es die Möglichkeit, am Anfang des Absatzes, zwischen
+% den Einträgen und am Ende der Einträge und nach dem letzten Eintrag einen
+% speziellen Text ausgeben zu lassen.
+% \begin{macrocode}
+%<*toctext>
+ \expandafter\providecommand%
+ \csname scr@tso@#1@onstartfirstentry\endcsname{}%
+ \expandafter\providecommand%
+ \csname scr@tso@#1@onstartentry\endcsname{}%
+ \expandafter\providecommand%
+ \csname scr@tso@#1@onendlastentry\endcsname{}%
+ \expandafter\providecommand%
+ \csname scr@tso@#1@onendentry\endcsname{\quad}%
+ \expandafter\providecommand%
+ \csname scr@tso@#1@afterpar\endcsname{}%
+%</toctext>
+% \end{macrocode}
+% Jede Ebene kann ihre eigene Formatierungsanweisung für die Nummer haben.
+% Jede Ebene kann auch ihre eigene Formatierungsanweisung für Nummer und Text
+% haben. Für \texttt{part} wird hier die Voreinstellung der Standardklassen
% verwendet.
% \begin{macrocode}
+%<*tocline|toctext>
\expandafter\providecommand%
\csname scr@tso@#1@numberformat\endcsname[1]{##1}%
+%<*tocline>
\ifstr{#1}{part}{%
\expandafter\providecommand%
\csname scr@tso@#1@entryformat\endcsname[1]{\large\bfseries ##1}%
@@ -1495,22 +1921,27 @@
\csname scr@tso@#1@entryformat\endcsname[1]{\bfseries ##1}%
}{}%
}{}%
+%</tocline>
\expandafter\providecommand%
\csname scr@tso@#1@entryformat\endcsname[1]{##1}%
+%<*tocline>
}%
}%
+%</tocline>
+%</tocline|toctext>
% \end{macrocode}
% Nach der Nummer kann wahlweise ein Zeilenumbruch erfolgen, wobei in diesem
-% Fall der Text wieder auf Höhe der Nummer und nicht erst danach
-% erfolgt. Gesteuert wird das über einen Schalter. In der Voreinstellung
+% Fall der Text wieder auf Höhe der Nummer und nicht erst danach
+% erfolgt. Gesteuert wird das über einen Schalter. In der Voreinstellung
% machen wird das nicht.
% \begin{macrocode}
+%<*tocline>
\expandafter\providecommand
\csname Ifscr@tso@#1@breakafternumber\endcsname[2]{##2}%
% \end{macrocode}
% Die Verbindung zwischen Ende des Eintrags und den Seitenzahlen erfolgt
-% normalerweise mit Pünktchen. Das wird auch genau die Voreinstellung für die
-% Option werden. In der Voreinstellung wird mit \cs{hfill} gefüllt.
+% normalerweise mit Pünktchen. Das wird auch genau die Voreinstellung für die
+% Option werden. In der Voreinstellung wird mit \cs{hfill} gefüllt.
% \begin{macrocode}
\@ifundefined{scr@tso@#1@linefill}{%
\ifstr{#1}{part}{%
@@ -1535,19 +1966,19 @@
% \begin{macrocode}
\expandafter\providecommand\csname Ifscr@tso@#1@raggedpage\endcsname[2]{##2}%
% \end{macrocode}
-% Auch die Seitenzahl kann speziell formatiert werden, wenn das gewünscht ist.
+% Auch die Seitenzahl kann speziell formatiert werden, wenn das gewünscht ist.
% \begin{macrocode}
\ifstr{#1}{part}{%
% \end{macrocode}
-% Für \texttt{part} normalerweise groß und fett:
+% Für \texttt{part} normalerweise groß und fett:
% \begin{macrocode}
\expandafter\providecommand%
\csname scr@tso@#1@pagenumberformat\endcsname[1]{\large\bfseries ##1}%
}{%
% \end{macrocode}
-% \changes{v3.25}{2017/11/23}{Seitenzahlen für \texttt{chapter}-Einräge in der
-% Voreinstellung fett}^^A
-% Für \texttt{chapter} nur fett:
+% \changes{v3.25}{2017/11/23}{Seitenzahlen für \texttt{chapter}-Einräge in der
+% Voreinstellung fett}%^^A
+% Für \texttt{chapter} nur fett:
% \begin{macrocode}
\ifstr{#1}{chapter}{%
\expandafter\providecommand%
@@ -1556,9 +1987,9 @@
\scr@ifundefinedorrelax{l@chapter}{%
\ifstr{#1}{section}{%
% \end{macrocode}
-% \changes{v3.25}{2017/11/23}{Seitenzahlen für \texttt{section}-Einräge in der
-% Voreinstellung unter Umständen fett}^^A
-% Für \texttt{section} ggf. auch fett:
+% \changes{v3.25}{2017/11/23}{Seitenzahlen für \texttt{section}-Einräge in der
+% Voreinstellung unter Umständen fett}%^^A
+% Für \texttt{section} ggf. auch fett:
% \begin{macrocode}
\expandafter\providecommand%
\csname scr@tso@#1@pagenumberformat\endcsname[1]{\bfseries ##1}%
@@ -1574,21 +2005,43 @@
}%
% \end{macrocode}
% Wobei die Seitenzahl normaleweise in eine Box fester Breite gesetzt wird.
+% \changes{v3.27}{2019/10/02}{Breite der Seitenzahlbox verallgemeinert}%^^A
% \begin{macrocode}
\expandafter\providecommand%
\csname scr@tso@#1@pagenumberbox\endcsname[1]{%
- \hb@xt@\@pnumwidth{\hfil ##1}}%
+ \hb@xt@\@nameuse{scr@dte@pagenumberwidth}{\hfil ##1}}%
\expandafter\providecommand\csname Ifscr@tso@#1@dynnumwidth\endcsname[2]{##2}%
%</tocline>
+% \end{macrocode}
+% \changes{v3.27}{2019/07/08}{Initialisierung von \texttt{raggedentry}}%^^A
+% \changes{v3.27}{2019/07/08}{Initialisierung von \texttt{prepagenumber}}%^^A
+% Im Stil \texttt{toctext} muss außerdem initialisiert werden, ob der Eintrag
+% im Flattersatz oder im Blocksatz gesetzt werden soll und was unmittelbar vor
+% der Seitenzahl auszugeben ist (\texttt{linefill} wäre dafür eine unpassende
+% Bezeichnung).
+% \begin{macrocode}
+%<*toctext>
+ \expandafter\providecommand%
+ \csname Ifscr@tso@#1@raggedright\endcsname[2]{##2}%
+ \expandafter\providecommand%
+ \csname scr@tso@#1@prepagenumber\endcsname{\nobreakspace}%
+%</toctext>
}]{%
% \end{macrocode}
+% \changes{v3.27}{2019/05/12}{Berücksichtigung von Verzeichniseigenschaft
+% \texttt{noindent}}%^^A
% Damit ist die Initialisierung abgeschlossen und wir kommen zur
% Eintragsanweisung selbst:
% \begin{macrocode}
%<*dottedtocline>
- \@dottedtocline{\@nameuse{#1tocdepth}}{\@nameuse{scr@tso@#1@indent}}%
- {\@nameuse{scr@tso@#1@numwidth}}{##1}{##2}%
-%</dottedtocline>
+ \iftocfeature{\@currext}{noindent}{%
+ \@dottedtocline{\@nameuse{#1tocdepth}}{\z@}%
+ {\@nameuse{scr@tso@#1@numwidth}}{##1}{##2}%
+ }{%
+ \@dottedtocline{\@nameuse{#1tocdepth}}{\@nameuse{scr@tso@#1@indent}}%
+ {\@nameuse{scr@tso@#1@numwidth}}{##1}{##2}%
+ }%
+%</dottedtocline>
%<*undottedtocline|largetocline>
\ifnum \c@tocdepth >\numexpr \@nameuse{#1tocdepth}-\@ne\relax
% \end{macrocode}
@@ -1616,20 +2069,20 @@
\begingroup
% \end{macrocode}
% Es sei darauf hingewiesen, dass hier eigentlich zweimal \cs{@tocrmarg}
-% statt \cs{@pnumwidth} verwendet werden müsste. Allerdings habe ich
+% statt \cs{@pnumwidth} verwendet werden müsste. Allerdings habe ich
% beschlossen, diesen schon vor Jahren gemeldeten Fehler aus
-% Kompatibilitätsgründen vorerst von den Standardklassen zu übernehmen.
+% Kompatibilitätsgründen vorerst von den Standardklassen zu übernehmen.
% \begin{macrocode}
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
% \end{macrocode}
-% Die Standardklassen fügen an dieser Stelle noch eine Gruppe ein, die dann
-% leider vor dem abschließenden \cs{par} bereits beendet wird. Das führt
-% natürlich zu falschen Zeilenabständen bei mehrzeiligen Einträgen. Ich habe
-% lange überlegt, aber schließlich beschlossen, diesen Fehler nicht aus den
-% Standardklassen zu übernehmen. Das war mir dann doch zu krass! Schlimmer
-% noch, würde man den Fehler übernehmen, müsste man das Setzen von
-% \cs{leftskip} abändern, weil natürlich auch das erst am Absatzende
+% Die Standardklassen fügen an dieser Stelle noch eine Gruppe ein, die dann
+% leider vor dem abschließenden \cs{par} bereits beendet wird. Das führt
+% natürlich zu falschen Zeilenabständen bei mehrzeiligen Einträgen. Ich habe
+% lange überlegt, aber schließlich beschlossen, diesen Fehler nicht aus den
+% Standardklassen zu übernehmen. Das war mir dann doch zu krass! Schlimmer
+% noch, würde man den Fehler übernehmen, müsste man das Setzen von
+% \cs{leftskip} abändern, weil natürlich auch das erst am Absatzende
% wirklich zur Geltung kommt.
% \begin{macrocode}
\leavevmode
@@ -1637,25 +2090,29 @@
\bfseries
% \end{macrocode}
% Es sei darauf hingewiesen, dass hier eigentlich auch bei
-% \texttt{largetocline} \cs{@tempdima} mit berücksichtigt werden
-% müsste. Das geht nur deshalb nicht, weil bei den Standardklassen \cs{part}
-% kein \cs{numberline} verwendet. Deshalb werden mehrzeilige Einträge auch
-% nicht korrekt eingerückt. Auch das habe ich aus Kompatibilitätsgründen
+% \texttt{largetocline} \cs{@tempdima} mit berücksichtigt werden
+% müsste. Das geht nur deshalb nicht, weil bei den Standardklassen \cs{part}
+% kein \cs{numberline} verwendet. Deshalb werden mehrzeilige Einträge auch
+% nicht korrekt eingerückt. Auch das habe ich aus Kompatibilitätsgründen
% beibehalten.
% \begin{macrocode}
%<undottedtocline> \advance\leftskip\@tempdima
- \advance\leftskip\@nameuse{scr@tso@#1@indent}%
+ \iftocfeature{\@currext}{noindent}{%
+%<undottedtocline> \hskip -\leftskip
+ }{%
+ \advance\leftskip\@nameuse{scr@tso@#1@indent}%
%<*undottedtocline>
- \hskip -\dimexpr \leftskip-\@nameuse{scr@tso@#1@indent}\relax
+ \hskip -\dimexpr \leftskip-\@nameuse{scr@tso@#1@indent}\relax
%</undottedtocline>
+ }%
##1%
%<undottedtocline> \nobreak
% \end{macrocode}
-% Hier schließlich ist \cs{@pnumwidth} aufgrund des vorherigen
-% \cs{large} nicht mehr derselbe absolute Wert wie bei Einträgen ohne
-% \cs{large}. Deshalb müsste eigentlich noch vor dem \cs{large} der Wert
-% beispielsweise in eine Länge wie \cs{@tempdimb} übertragen und dann hier
-% verwendet werden. Auch das habe ich aus Kompatibilitätsgründen übernommen.
+% Hier schließlich ist \cs{@pnumwidth} aufgrund des vorherigen
+% \cs{large} nicht mehr derselbe absolute Wert wie bei Einträgen ohne
+% \cs{large}. Deshalb müsste eigentlich noch vor dem \cs{large} der Wert
+% beispielsweise in eine Länge wie \cs{@tempdimb} übertragen und dann hier
+% verwendet werden. Auch das habe ich aus Kompatibilitätsgründen übernommen.
% \begin{macrocode}
\hfil \nobreak\hb@xt@\@pnumwidth{\hss ##2}%
\par
@@ -1674,16 +2131,20 @@
%<*tocline>
\scr@dte@tocline{#1}{##1}{##2}%
%</tocline>
+%<*toctext>
+ \scr@dte@toctext{#1}{##1}{##2}%
+%</toctext>
}
-%</dottedtocline|undottedtocline|largetocline|tocline>
+%</dottedtocline|undottedtocline|largetocline|tocline|toctext>
% \end{macrocode}
-% \end{macro}^^A \scr@dte@def@l@tocline
-% \end{macro}^^A \scr@dte@def@l@largetocline
-% \end{macro}^^A \scr@dte@def@l@undottedtocline
-% \end{macro}^^A \scr@dte@def@l@dottedtocline
+% \end{macro}%^^A \scr@dte@def@l@toctext
+% \end{macro}%^^A \scr@dte@def@l@tocline
+% \end{macro}%^^A \scr@dte@def@l@largetocline
+% \end{macro}%^^A \scr@dte@def@l@undottedtocline
+% \end{macro}%^^A \scr@dte@def@l@dottedtocline
%
-% Für den Stil \texttt{tocline} werden diverse weitere Einstellungen und
-% Befehle benötigt:
+% Für den Stil \texttt{tocline} werden diverse weitere Einstellungen und
+% Befehle benötigt:
% \begin{macrocode}
%<*tocline>
\AtBeginDocument{%
@@ -1709,10 +2170,10 @@
}
% \end{macrocode}
% \begin{macro}{\scr@dte@nosub}
-% \changes{v3.20}{2015/11/23}{neu (intern)}
+% \changes{v3.20}{2015/11/23}{neu (intern)}
% \begin{macro}{\@scr@dte@nosub}
-% \changes{v3.20}{2015/11/23}{neu (intern)}
-% Über diese Hilfsmacros werden die Buchstaben \texttt{sub} am Anfang des
+% \changes{v3.20}{2015/11/23}{neu (intern)}
+% Ãœber diese Hilfsmacros werden die Buchstaben \texttt{sub} am Anfang des
% Arguments entfernt. Stehen diese gar nicht am Anfang, so wird ein Fehler
% wegen falscher Verwendung von \cs{@scr@de@nosub} gemeldet.
% \begin{macrocode}
@@ -1720,22 +2181,24 @@
\newcommand*{\@scr@dte@nosub}{}
\def\@scr@dte@nosub sub#1\relax{#1}
% \end{macrocode}
-% \end{macro}^^A \@scr@dte@nosub
-% \end{macro}^^A \scr@dte@nosub
+% \end{macro}%^^A \@scr@dte@nosub
+% \end{macro}%^^A \scr@dte@nosub
% \begin{macro}{\scr@dte@tocline}
-% \changes{v3.20}{2015/11/22}{neu (intern)}
+% \changes{v3.20}{2015/11/22}{neu (intern)}%^^A
+% \changes{v3.27}{2019/05/12}{Berücksichtigun von Verzeichniseigenschaft
+% \texttt{noindent}}%^^A
% In gewisser Weise entspricht diese Anweisung der \LaTeX-Kern-Anweisung
-% \cs{dottedtocline}. Allerdings werden hier vielfältige
-% Eingriffsmöglichkeiten untersützt, die jeweils durch Optionen gesteuert
-% werden können. Daher hat der Befehl auch nur drei Argumente:
+% \cs{dottedtocline}. Allerdings werden hier vielfältige
+% Eingriffsmöglichkeiten untersützt, die jeweils durch Optionen gesteuert
+% werden können. Daher hat der Befehl auch nur drei Argumente:
% \begin{description}
% \item[\marg{Ebene}:] Der Name \meta{string} der Verzeichnisebene.
% \item[\marg{Eintrag}:] Der Verzeichniseintrag \meta{string}.
% \item[\marg{Seite}:] Die Seitenzahl \meta{string} des Verzeichniseintrags.
% \end{description}
% \begin{Length}{\scr@dte@tocline@numberwidth}
-% \changes{v3.20}{2016/01/15}{neu (intern)}
-% Für alle, die es interessiert, gibt diese Länge die tatsächliche Breite der
+% \changes{v3.20}{2016/01/15}{neu (intern)}
+% Für alle, die es interessiert, gibt diese Länge die tatsächliche Breite der
% formatierten Nummer an.
% \begin{macrocode}
\newlength\scr@dte@tocline@numberwidth
@@ -1745,18 +2208,26 @@
\tocbasic@DependOnPenaltyAndTOCLevel{#1}%
\addvspace{\@nameuse{scr@tso@#1@beforeskip}}\relax
{%
- \leftskip \@nameuse{scr@tso@#1@indent}\relax
- \rightskip \@tocrmarg
+ \iftocfeature{\@currext}{noindent}{%
+ \leftskip \z@
+ }{%
+ \leftskip \@nameuse{scr@tso@#1@indent}\relax
+ }%
+ \rightskip \@nameuse{scr@tso@#1@rightindent}\relax
\parfillskip -\rightskip
\@nameuse{Ifscr@tso@#1@raggedpage}{%
\addtolength{\parfillskip}{\z@ \@plus 1fil}%
}{}%
- \parindent \@nameuse{scr@tso@#1@indent}\relax
+ \iftocfeature{\@currext}{noindent}{%
+ \parindent \z@
+ }{%
+ \parindent \@nameuse{scr@tso@#1@indent}\relax
+ }%
\@afterindenttrue
\interlinepenalty\@M
% \end{macrocode}
-% \changes{v3.21}{2016/06/06}{\cs{ragged\dots entry} wird (wieder)
-% ausgewertet}^^A
+% \changes{v3.21}{2016/06/06}{\cs{ragged\dots entry} wird (wieder)
+% ausgewertet}%^^A
% \begin{macrocode}
\expandafter\ifx\csname ragged#1entry\endcsname\raggedright
\addtolength\rightskip\@flushglue
@@ -1785,7 +2256,7 @@
{%
% \end{macrocode}
% An dieser Stelle wenden wir einen Trick an, um die Breite einer eventuell
-% vorhandenen Nummer während deren Ausgabe auszumessen. Dazu ist es eine
+% vorhandenen Nummer während deren Ausgabe auszumessen. Dazu ist es eine
% schlichte Notwendigkeit, dass \cs{numberline} die interne Definition
% verwendet.
% \begin{macrocode}
@@ -1794,14 +2265,14 @@
\def\numberline@box##1{%
\sbox\scr@dte@tocline@numbox{\@nameuse{scr@tso@#1@numberformat}{##1}}%
% \end{macrocode}
-% Die Zuweisung an die aktuelle Länge der Nummer muss global erfolgen, weil
+% Die Zuweisung an die aktuelle Länge der Nummer muss global erfolgen, weil
% wir hier in einer Gruppe sind.
-% \changes{v3.22}{2016/12/02}{fehlendes zweites \cs{relax} ergänzt}^^A
+% \changes{v3.22}{2016/12/02}{fehlendes zweites \cs{relax} ergänzt}%^^A
% \begin{macrocode}
\global\scr@dte@tocline@numberwidth
\dimexpr\wd\scr@dte@tocline@numbox+\@nameuse{scr@tso@#1@numsep}\relax
% \end{macrocode}
-% \changes{v3.22}{2016/12/02}{fehlendes zweites \cs{relax} ergänzt}^^A
+% \changes{v3.22}{2016/12/02}{fehlendes zweites \cs{relax} ergänzt}%^^A
% Achtung: Hier braucht es ein zweites \cs{relax}, weil das erste von
% \cs{dimexpr} aufgezehrt wird.
% \begin{macrocode}
@@ -1840,6 +2311,16 @@
{%
\normalfont\normalsize\@nameuse{scr@tso@#1@linefill}%
\nobreak
+% \end{macrocode}
+% \changes{v3.27}{2019/10/02}{\cs{scr@dte@pagenumberwidth} wird definiert}%
+% Damit hier keine Abhängigkeit eine Eintragsvariablen von einer
+% Eintragsvariablen existiert wird lokal \cs{scr@dte@pagenumberwidth} zu
+% \cs{scr@tso@\meta{Eintragsname}@pagenumberwidth}, so dass in der Definition
+% von \cs{scr@tso@\meta{Eintragsname}@pagenumberbox} dieses lokale Makro
+% verwendet werden kann.
+% \begin{macrocode}
+ \expandafter\let\expandafter\scr@dte@pagenumberwidth
+ \csname scr@tso@#1@pagenumberwidth\endcsname
\@nameuse{scr@tso@#1@pagenumberbox}{%
\@nameuse{scr@tso@#1@pagenumberformat}{#3}%
}%
@@ -1852,40 +2333,40 @@
\fi
}
% \end{macrocode}
-% \end{Length}^^A \scr@dte@tocline@numberwidth
+% \end{Length}%^^A \scr@dte@tocline@numberwidth
% \begin{macro}{\scr@dte@tocline@numbox}
-% \changes{v3.20}{2015/11/25}{neue Box (intern)}
-% Wird benötigt, um die Breite der Nummer auszumessen und die Nummer später
+% \changes{v3.20}{2015/11/25}{neue Box (intern)}
+% Wird benötigt, um die Breite der Nummer auszumessen und die Nummer später
% wieder zu verwenden.
% \begin{macrocode}
\newsavebox\scr@dte@tocline@numbox
% \end{macrocode}
-% \end{macro}^^A \scr@dte@tocline@numbox
+% \end{macro}%^^A \scr@dte@tocline@numbox
% \begin{macro}{\tocbasic@DependOnPenaltyAndTOCLevel}
-% \changes{v3.20}{2015/11/23}{neu}^^A
-% \changes{v3.20}{2016/03/12}{Anpassung an \textsf{tocbasic}-Syntax für
-% Befehle für Paketautoren}^^A
-% Führt eine gespeicherte Aktion in Abhängigkeit davon aus, ob der aktuelle
-% Penalty-Wert darauf schließen lässt, dass zuvor ein Eintrag mit einem
-% höheren, demselben oder einem tieferen Wert für die Ebene erfolgte.
+% \changes{v3.20}{2015/11/23}{neu}%^^A
+% \changes{v3.20}{2016/03/12}{Anpassung an \textsf{tocbasic}-Syntax für
+% Befehle für Paketautoren}%^^A
+% Führt eine gespeicherte Aktion in Abhängigkeit davon aus, ob der aktuelle
+% Penalty-Wert darauf schließen lässt, dass zuvor ein Eintrag mit einem
+% höheren, demselben oder einem tieferen Wert für die Ebene erfolgte.
% \begin{macro}{\tocbasic@SetPenaltyByTOCLevel}
-% \changes{v3.20}{2015/11/23}{neu}
-% \changes{v3.20}{2016/03/12}{Anpassung an \textsf{tocbasic}-Syntax für
-% Befehle für Paketautoren}^^A
-% Setze die Strafpunkte für einen Umbruch entsprechend der aktuellen
+% \changes{v3.20}{2015/11/23}{neu}
+% \changes{v3.20}{2016/03/12}{Anpassung an \textsf{tocbasic}-Syntax für
+% Befehle für Paketautoren}%^^A
+% Setze die Strafpunkte für einen Umbruch entsprechend der aktuellen
% Verzeichnisebene.
% \begin{macro}{\LastTOCLevelWasHigher}
-% \changes{v3.20}{2015/11/23}{neu}
-% Standardaktion, falls der vorherige Level einen größeren Wert hatte: Umbruch
+% \changes{v3.20}{2015/11/23}{neu}
+% Standardaktion, falls der vorherige Level einen größeren Wert hatte: Umbruch
% erlauben.
% \begin{macro}{\LastTOCLevelWasSame}
-% \changes{v3.20}{2015/11/23}{neu}
+% \changes{v3.20}{2015/11/23}{neu}
% Standardaktion, falls der vorherige Level denselben Wert hatte: Umbruch
% erlauben.
% \begin{macro}{\LastTOCLevelWasLower}
% Standardaktion, falls der vorherige Level einen kleineren Wert hatte:
% Penalty beibehalten und damit den Umbruch verbieten.
-% \changes{v3.20}{2015/11/23}{neu}
+% \changes{v3.20}{2015/11/23}{neu}
% \begin{macrocode}
\newcommand*{\tocbasic@DependOnPenaltyAndTOCLevel}[1]{%
\ifnum \lastpenalty<\numexpr 20009-\@nameuse{#1tocdepth}\relax
@@ -1904,15 +2385,15 @@
\newcommand*{\LastTOCLevelWasSame}{\ifvmode\addpenalty{\@lowpenalty}\fi}
\newcommand*{\LastTOCLevelWasLower}{}
% \end{macrocode}
-% \end{macro}^^A \tocbasic@SetPenaltyByTOCLevel
-% \end{macro}^^A \tocbasic@DependOnPenaltyAndTOCLevel
-% \end{macro}^^A \LastTOCLevelWasLower
-% \end{macro}^^A \LastTOCLevelWasSame
-% \end{macro}^^A \LastTOCLevelWasHigher
+% \end{macro}%^^A \tocbasic@SetPenaltyByTOCLevel
+% \end{macro}%^^A \tocbasic@DependOnPenaltyAndTOCLevel
+% \end{macro}%^^A \LastTOCLevelWasLower
+% \end{macro}%^^A \LastTOCLevelWasSame
+% \end{macro}%^^A \LastTOCLevelWasHigher
% \begin{macro}{\TOCLineLeaderFill}
-% \changes{v3.20}{2015/11/14}{neu}
-% Füllt den Abstand zwischen Text und Seitenzahl komplett. Hat als einziges
-% optionales Argument das Füllzeichen.
+% \changes{v3.20}{2015/11/14}{neu}
+% Füllt den Abstand zwischen Text und Seitenzahl komplett. Hat als einziges
+% optionales Argument das Füllzeichen.
% \begin{macrocode}
\newcommand*{\TOCLineLeaderFill}[1][.]{%
\leaders\hbox{$\m@th
@@ -1921,14 +2402,132 @@
}
%</tocline>
% \end{macrocode}
-% \end{macro}^^A \TOCLineLeaderFill
-% \end{macro}^^A \scr@dte@tocline
+% \end{macro}%^^A \TOCLineLeaderFill
+% \end{macro}%^^A \scr@dte@tocline
+%
+% \selectlanguage{english}
+% \begin{macro}{\scr@dte@toctext}
+% \changes{v3.27}{2019/07/08}{new (internal)}%^^A
+% This is the command to format entries that will be accumalted into a single
+% paragraph. This is somehow special, because the settings of one entrie can
+% influence another one. The three arguments are:
+% \begin{description}
+% \item[\marg{level}:] The name \meta{string} of the entry level.
+% \item[\marg{entry}:] The ToC entry \meta{string}.
+% \item[\marg{pagenumber}:] The page number \meta{string} of the ToC entry.
+% \end{description}
+% \begin{macrocode}
+%<*toctext>
+\newcommand*{\scr@dte@toctext}[3]{%
+ \ifnum \@nameuse{#1tocdepth}>\c@tocdepth
+ \else
+ \ifhmode
+% \end{macrocode}
+% In h-mode their is already output of a previous text entry. So the end code
+% of that previous text entry has to be output before the initial output of
+% the new text entry has to be done.
+% \begin{macrocode}
+ \scr@dte@toctext@lastend
+ \@nameuse{scr@tso@#1@onstartentry}%
+ \else
+% \end{macrocode}
+% In v-mode it is a new text entry.
+% \begin{macrocode}
+ \leavevmode
+% \end{macrocode}
+% The paragraph end has to be prepared to eventually change the right
+% skip, to do the final output, and after all destroy these commands.
+% \begin{macrocode}
+ \def\par{%
+ \scr@dte@toctext@raggedright
+ \scr@dte@toctext@parend
+ \@par
+ \scr@dte@toctext@afterpar
+ \global\let\scr@dte@toctext@afterpar\relax
+ \global\let\scr@dte@toctext@parend\relax
+ \global\let\scr@dte@toctext@raggedright\relax
+ }%
+ \global\let\scr@dte@toctext@afterpar\@empty
+% \end{macrocode}
+% Also the left skip and the right skip has to be setup (these are the
+% margins) and if any of the text entries has to be printed ragged right, all
+% of them should be ragged right.
+% \begin{macrocode}
+ \iftocfeature{\@currext}{noindent}{%
+ \leftskip \z@
+ }{%
+ \leftskip \@nameuse{scr@tso@#1@indent}\relax
+ }%
+ \rightskip \@nameuse{scr@tso@#1@rightindent}\relax
+ \parfillskip \z@ \@plus 1fill\relax
+ \edef\@noitemerr{\unexpanded{\par\def\@noitemerr}%
+ {\unexpanded\expandafter{\@noitemerr}}}%
+% \end{macrocode}
+% Finally the init code of the first entry has to be used.
+% \begin{macrocode}
+ \@nameuse{scr@tso@#1@onstartfirstentry}%
+ \fi
+% \end{macrocode}
+% Also some settings are independend from beeing the first entry in the
+% paragraph or not.
+% \begin{macrocode}
+ \@nameuse{Ifscr@tso@#1@raggedright}{%
+ \let\\\@centercr
+ \gdef\scr@dte@toctext@raggedright{%
+ \@rightskip\@flushglue
+ \addtolength\rightskip\@rightskip
+ }%
+ }{}%
+ \l@addto@macro\scr@dte@toctext@afterpar{\@nameuse{scr@tso@#1@afterpar}}%
+% \end{macrocode}
+% The end codes have to be changed. These are used either at the start of the
+% next entry with this style or at the end of the paragraph.
+% \begin{macrocode}
+ \expandafter\global\expandafter\let\expandafter\scr@dte@toctext@lastend
+ \csname scr@tso@#1@onendentry\endcsname
+ \expandafter\global\expandafter\let\expandafter\scr@dte@toctext@parend
+ \csname scr@tso@#1@onendlastentry\endcsname
+% \end{macrocode}
+% Last but not least, the output has to be done.
+% \begin{macrocode}
+ {%
+ \usetocbasicnumberline
+ \def\numberline@box##1{%
+ \mbox{%
+ \@nameuse{scr@tso@#1@numberformat}{\ignorespaces ##1\unskip}%
+ \hskip\@nameuse{scr@tso@#1@numsep}\relax
+ }%
+ }%
+ \@nameuse{scr@tso@#1@entryformat}{%
+ \ignorespaces#2\unskip
+ \@nameuse{scr@tso@#1@prepagenumber}%
+ \@nameuse{scr@tso@#1@pagenumberformat}{\ignorespaces #3\unskip}%
+ }%
+ }%
+ \fi
+}
+% \end{macrocode}
+% \begin{macro}{\scr@dte@toctext@raggedright}
+% \begin{macro}{\scr@dte@toctext@parend}
+% \begin{macro}{\scr@dte@toctext@lastend}
+% Helper macros to store some information for later usage.
+% \begin{macrocode}
+\newcommand*{\scr@dte@toctext@raggedright}{}
+\newcommand*{\scr@dte@toctext@parend}{}
+\newcommand*{\scr@dte@toctext@lastend}{}
+%</toctext>
+% \end{macrocode}
+% \end{macro}%^^A \scr@dte@toctext@lastend
+% \end{macro}%^^A \scr@dte@toctext@parend
+% \end{macro}%^^A \scr@dte@toctext@raggedright
+% \end{macro}%^^A \scr@dte@toctext
+% \selectlanguage{ngerman}
%
% \begin{macro}{\scr@dte@def@l@default}
-% \changes{v3.20}{2015/12/16}{neu im Paket}^^A
+% \changes{v3.20}{2015/12/16}{neu im Paket}%^^A
% Bereits im Paket gibt es einen Standardstil. Anderen Paketen ist es nicht
% gestattet diesen umzudefinieren. Klassen ist das hingegen gestattet, damit
-% sie einen Dokument weiten Standardstil festlegen können.
+% sie einen Dokument weiten Standardstil festlegen können.
% \begin{macrocode}
%<*default>
%%% (run: style,dottedtocline)
@@ -1953,10 +2552,10 @@
% geschrieben wird:
%
% \begin{macro}{\scr@dte@def@l@part}
-% \changes{v3.20}{2015/12/07}{neuer Verzeichnisstil \texttt{part}}^^A
+% \changes{v3.20}{2015/12/07}{neuer Verzeichnisstil \texttt{part}}%^^A
% Dieser Verzeichnisstil existiert bei \textsf{scrbook}, \textsf{scrreprt} und
% \textsf{scrartcl}. Das Format des Eintrags und der Seitenzahl wird dabei
-% über die Elemente \texttt{partentry} und \texttt{partentrypagenumber}
+% über die Elemente \texttt{partentry} und \texttt{partentrypagenumber}
% realisiert.
% \begin{macrocode}
%<*part>
@@ -1975,10 +2574,10 @@
}
%</part>
% \end{macrocode}
-% \end{macro}^^A \scr@dte@def@l@part
+% \end{macro}%^^A \scr@dte@def@l@part
%
% \begin{macro}{\scr@dte@def@l@chapter}
-% \changes{v3.20}{2015/12/07}{neuer Verzeichnisstil \texttt{chapter}}^^A
+% \changes{v3.20}{2015/12/07}{neuer Verzeichnisstil \texttt{chapter}}%^^A
% Dieser Verzeichnisstil existier bei \textsf{scrbook} und \textsf{scrreprt}.
% \begin{macrocode}
%<*chapter>
@@ -2003,13 +2602,13 @@
}
%</chapter>
% \end{macrocode}
-% \end{macro}^^A \scr@dte@def@l@chapter
+% \end{macro}%^^A \scr@dte@def@l@chapter
%
% \begin{macro}{\scr@dte@def@l@section}
-% \changes{v3.20}{2015/12/07}{neuer Verzeichnisstil \texttt{section}}^^A
-% Bei den Klassen \textsf{scrbook} und \textsf{scrreprt} ist das der Stil für
+% \changes{v3.20}{2015/12/07}{neuer Verzeichnisstil \texttt{section}}%^^A
+% Bei den Klassen \textsf{scrbook} und \textsf{scrreprt} ist das der Stil für
% die \emph{kleinen} Verzeichnisebenen. Bei \textsf{scrartcl} ist es dagegen
-% der Stil für die obere Verzeichnisebene und entspricht damit obigem Stil
+% der Stil für die obere Verzeichnisebene und entspricht damit obigem Stil
% \texttt{chapter}.
% \begin{macrocode}
%<*section>
@@ -2031,7 +2630,7 @@
\hfill
\fi
}%
- % Für die Einträge die Schrift von Element sectionentry verwenden.
+ % Für die Einträge die Schrift von Element sectionentry verwenden.
\expandafter\providecommand%
\csname scr@tso@#1@entryformat\endcsname{\usekomafont{sectionentry}}%
\expandafter\providecommand%
@@ -2042,10 +2641,10 @@
%</article>
%</section>
% \end{macrocode}
-% \end{macro}^^A \scr@dte@def@l@section
+% \end{macro}%^^A \scr@dte@def@l@section
%
% \begin{macro}{\scr@dte@def@l@subsection}
-% \changes{v3.20}{2015/12/07}{neuer Verzeichnisstil \texttt{subsection}}^^A
+% \changes{v3.20}{2015/12/07}{neuer Verzeichnisstil \texttt{subsection}}%^^A
% Dieser Stil existiert nur bei \textsf{scrartcl} und entspricht dann dem Stil
% \texttt{section} bei \textsf{scrbook} und \textsf{scrreprt}.
% \begin{macrocode}
@@ -2058,10 +2657,10 @@
}
%</subsection&article>
% \end{macrocode}
-% \end{macro}^^A \scr@dte@def@l@subsection
+% \end{macro}%^^A \scr@dte@def@l@subsection
%
% \begin{macro}{\scr@dte@def@l@default}
-% \changes{v3.20}{2015/12/07}{neuer Verzeichnisstil \texttt{default}}^^A
+% \changes{v3.20}{2015/12/07}{neuer Verzeichnisstil \texttt{default}}%^^A
% Dieser Stil entspricht bei \textsf{scrbook} und \textsf{scrreprt} dem Stil
% \texttt{section} und bei \textsf{scrartcl} dem Stil \textsf{subsection}.
% \begin{macrocode}
@@ -2085,6 +2684,6 @@
% end of file `scrkernel-tocstyle.dtx'
%%% Local Variables:
%%% mode: doctex
-%%% coding: iso-latin-1
+%%% coding: utf-8
%%% TeX-master: t
%%% End: