summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/koma-script/scrkernel-sections.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/koma-script/scrkernel-sections.dtx')
-rw-r--r--Master/texmf-dist/source/latex/koma-script/scrkernel-sections.dtx1803
1 files changed, 1110 insertions, 693 deletions
diff --git a/Master/texmf-dist/source/latex/koma-script/scrkernel-sections.dtx b/Master/texmf-dist/source/latex/koma-script/scrkernel-sections.dtx
index 4f0d0ef0aac..5211cf04d65 100644
--- a/Master/texmf-dist/source/latex/koma-script/scrkernel-sections.dtx
+++ b/Master/texmf-dist/source/latex/koma-script/scrkernel-sections.dtx
@@ -1,4 +1,4 @@
-% \CheckSum{3673}
+% \CheckSum{3697}
% \iffalse meta-comment
% ======================================================================
% scrkernel-sections.dtx
@@ -55,15 +55,32 @@
% Right brace \} Tilde \~}
%
% \iffalse
-%%% From File: $Id: scrkernel-sections.dtx 2079 2015-04-20 07:12:08Z kohm $
+%%% From File: $Id: scrkernel-sections.dtx 2131 2015-06-10 18:17:51Z kohm $
+% The runs of run-time file generation:
+%<preidentify>%%% (run: preidentify)
+% - everything that is needed before selfidentification of resulting files
+% (unused)
+%<identify>%%% (run: identify)
+% - everything that is needed for selfidentification of resulting files
+% (unused)
+%<prepare>%%% (run: prepare)
+% - everything that is needed to define options
+%<option>%%% (run: option)
+% - definition of options
+%<execoption>%%% (run: execoption)
+% - initial option executions up to \KOMAProcessOptions
+%<body>%%% (run: body)
+% - everything, that should be done after \KOMAProcessOptions
+%<exit>%%% (run: exit)
+% - everything, that should be done immediately before leaving the file
%<*driver>
% \fi
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\begingroup
\def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
- \filedate$Date: 2015-04-20 09:12:08 +0200 (Mon, 20 Apr 2015) $
+ \filedate$Date: 2015-06-10 20:17:51 +0200 (Wed, 10 Jun 2015) $
\def\filerevision$#1: #2 ${\gdef\filerevision{#2}}
- \filerevision$Revision: 2079 $
+ \filerevision$Revision: 2131 $
\edef\reserved@a{%
\noexpand\endgroup
\noexpand\ProvidesFile{scrkernel-sections.dtx}%
@@ -180,12 +197,18 @@
\fi
\fi
}
-%<book>\KOMA@kav@add{.\KOMAClassFileName}{open}{right}
-%<report>\KOMA@kav@add{.\KOMAClassFileName}{open}{any}
-%<book>\KOMA@kav@add{.\KOMAClassFileName}{headings}{openright}
-%<report>\KOMA@kav@add{.\KOMAClassFileName}{headings}{openany}
+%</option>
+% \end{macrocode}
+% \changes{v3.18}{2015/05/22}{indirekte Initialisierung}
+% Die Initialisierung erfolgt indirekt über Option \texttt{headings}.
+% \begin{macrocode}
+%<*execoption>
+%<book>\KOMAExecuteOptions{headings=openright}
+%<report>\KOMAExecuteOptions{headings=openany}
+%</execoption>
% \end{macrocode}
% \end{option}
+%
% \begin{option}{openright}
% \changes{v2.98c}{2008/03/05}{obsolet}^^A
% \changes{v3.01a}{2008/11/21}{standard statt obsolet}^^A
@@ -195,6 +218,7 @@
% Zusätzlich gibt es einige Standardoptionen, die natürlich auch mit
% \KOMAScript{} funktionieren sollen.
% \begin{macrocode}
+%<*option>
\KOMA@DeclareStandardOption{openright}{open=right}
\KOMA@DeclareStandardOption{openany}{open=any}
%</option>
@@ -272,8 +296,8 @@
\fi
\fi
}
-\KOMA@kav@add{.\KOMAClassFileName}{numbers}{autoendperiod}
%</option>
+%<execoption>\KOMAExecuteOptions{numbers=autoendperiod}
% \end{macrocode}
% \end{option}
%
@@ -313,6 +337,7 @@
%<*body>
%<book|report>\setcounter{secnumdepth}{2}
%<article>\setcounter{secnumdepth}{3}
+%</body>
% \end{macrocode}
% \end{Counter}
%
@@ -325,6 +350,7 @@
% Fall ist, wird das zweite Argument verwendet, sonst das dritte. Bei
% \cs{ifunnumbered} ist die Logik genau vertauscht.
% \begin{macrocode}
+%<*body>
\newcommand*{\ifnumbered}[1]{%
\scr@ifundefinedorrelax{#1numdepth}{%
\@secondoftwo
@@ -417,12 +443,28 @@
\@autodotfalse
%</prepare>
% \end{macrocode}
+% Dabei soll die Umstellung des Punktes beim zweiten TeX-Lauf bereits am
+% Anfang aktiv sein. Deshalb wird die Information am Ende in die aux-Datei
+% geschrieben.
+% \changes{v2.9k}{2003/01/12}{es wird direkt in \cs{@mainaux} geschrieben}^^A
+% \changes{v2.95}{2004/01/15}{es wird erst unmittelbar vor dem Schließen
+% der Haupt-aux-Datei in diese geschrieben}^^A
+% \changes{v2.96a}{2006/12/07}{es wird \cs{immediate} geschrieben}^^A
+% \begin{macrocode}
+%<*body>
+\BeforeClosingMainAux{%
+ \if@autodot\if@filesw\immediate\write\@mainaux{%
+ \string\global\string\@altsecnumformattrue}%
+ \fi\fi}
+%</body>
+% \end{macrocode}
% \end{macro}^^A \@autodotfalse
% \end{macro}^^A \@autodottrue
% \end{macro}^^A \if@autodot
% \end{macro}^^A \@altsecnumformatfalse
% \end{macro}^^A \@altsecnumformattrue
% \end{macro}^^A \if@altsecnumformat
+%
% \begin{macro}{\scr@altsecnumhook}
% \changes{v2.98c}{2008/03/07}{Neu (intern)}^^A
% \begin{macro}{\scr@altsecnumhooktrue}
@@ -449,6 +491,7 @@
% \end{macro}^^A \scr@altsecnumhooktrue
% \end{macro}^^A \scr@altsecnumhookfalse
% \end{macro}^^A \scr@altsecnumhook
+%
% \begin{macro}{\@maybeautodot}
% \changes{v2.8e}{2001/07/10}{neu (intern)}^^A
% Ob der automatische Punkt aktiviert werden muss, wird aufgrund der
@@ -483,14 +526,18 @@
\fi
\@@maybeautodot
}
+%</body>
% \end{macrocode}
% \end{macro}^^A \@@maybeautodot
% \end{macro}^^A \@maybeautodot
+%
% \begin{macro}{\autodot}
% \changes{v2.7}{2001/01/03}{neu}^^A
% Dieses Makro setzt dann den Punkt nach Bedarf.
% \begin{macrocode}
+%<*body>
\newcommand*\autodot{\if@altsecnumformat.\fi}
+%</body>
% \end{macrocode}
% \end{macro}
%
@@ -500,6 +547,8 @@
% der Erweiterung für das optionale Argument}^^A
% \begin{macro}{\scr@startsection}
% \changes{v3.13a}{2014/09/11}{Neue interne Anweisung}^^A
+% \changes{v3.18}{2015/05/22}{verwende \cs{numexpr} für Argument 2}
+% \changes{v3.18}{2015/05/22}{verwende \cs{glueexpr} für Argument 3--5}
% \begin{macro}{\scr@saved@startsection}
% \changes{v3.13a}{2014/09/11}{Neue interne Anweisung}^^A
% \KOMAScript{} benötigt ein eigenes \cs{@startsection}, weil die
@@ -509,6 +558,7 @@
% Erwartungen entspricht. Alles andere wäre ein deutlicher Hinweis, dass
% eventuell in \KOMAScript{} ebenfalls eine Anpassung vorzunehmen wäre.
% \begin{macrocode}
+%<*body>
\newcommand*{\scr@saved@startsection}[6]{%
\if@noskipsec \leavevmode \fi
\par
@@ -530,7 +580,7 @@
\newcommand*{\scr@startsection}[6]{%
\if@noskipsec \leavevmode \fi
\par
- \@tempskipa #4\relax
+ \@tempskipa \glueexpr #4\relax
\@afterindenttrue
\ifdim \@tempskipa <\z@
\@tempskipa -\@tempskipa \@afterindentfalse
@@ -541,10 +591,16 @@
\else
\addpenalty\@secpenalty\addvspace\@tempskipa
\fi
- \@ifstar
- {\csname scr@preto@ssect@hook\endcsname\@ssect{#3}{#4}{#5}{#6}}%
- {\csname scr@preto@sect@hook\endcsname
- \scr@section@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}%
+ \@ifstar {%
+ \csname scr@preto@ssect@hook\endcsname
+ \@ssect{\glueexpr #3\relax}{\glueexpr #4\relax}{\glueexpr #5\relax}{#6}%
+ }{%
+ \csname scr@preto@sect@hook\endcsname
+ \scr@section@dblarg{%
+ \@sect{#1}{\numexpr #2\relax}{\glueexpr #3\relax}{\glueexpr #4\relax}%
+ {\glueexpr #5\relax}{#6}%
+ }%
+ }%
}
\else
\ClassWarningNoLine{\KOMAClassName}{`\string\@startsection' has been
@@ -565,9 +621,14 @@
}%
\let\scr@saved@startsection\@startsection
\newcommand*{\scr@startsection}[6]{%
- \@ifstar
- {\scr@saved@startsection{#1}{#2}{#3}{#4}{#5}{#6}*}%
- {\scr@section@dblarg{\scr@saved@startsection{#1}{#2}{#3}{#4}{#5}{#6}}}%
+ \@ifstar {%
+ \scr@saved@startsection{#1}{\numexpr #2\relax}{\glueexpr #3\relax}%
+ {\glueexpr #4\relax}{\glueexpr #5\relax}{#6}*%
+ }{%
+ \scr@section@dblarg{%
+ \scr@saved@startsection{#1}{\numexpr #2\relax}{\glueexpr #3\relax}%
+ {\glueexpr #4\relax}{\glueexpr #5\relax}{#6}}%
+ }%
}
\fi
% \end{macrocode}
@@ -639,6 +700,7 @@
\expandafter\scr@startsection
\fi
}
+%</body>
% \end{macrocode}
% \end{macro}%^^A \@startsection
%
@@ -649,9 +711,11 @@
% \changes{v3.13a}{2014/09/11}{Vollständige Neudefinition zur Optimierung
% der Erweiterung für das optionale Argument}^^A
% \begin{macrocode}
+%<*body>
\newcommand*{\SecDef}[2]{\@ifstar{#2}{\scr@section@dblarg{#1}}}
\CheckCommand*{\secdef}[2]{\@ifstar{#2}{\@dblarg{#1}}}
\let\secdef\SecDef
+%</body>
% \end{macrocode}
% \end{macro}%^^A \secdef
% \end{macro}%^^A \SecDef
@@ -663,12 +727,17 @@
% \changes{v3.10}{2011/08/30}{Verwendung von
% \cs{csname}\texttt{add\#1tocentry}\cs{endcsname}
% bzw. \cs{addtocentrydefault}}^^A
+% \changes{v3.18}{2015/05/20}{definiert \cs{IfUsePrefixLine} intern}^^A
+% \changes{v3.18}{2015/05/22}{Verwendung von \cs{numexpr} für Argument 2}^^A
+% \changes{v3.18}{2015/05/22}{Verwendung von \cs{gluexpr} für Argument
+% 3--5}^^A
% Damit auch alle mit \cs{@startsection} definierten Gliederungsebenen
% bei der Entscheidung berücksichtigt werden, muss ein internes Makro
% des \LaTeX-Kerns erweitert werden. Für die Ebenen \cs{part} und
% \cs{chapter} wird der Test direkt in der Definition der Befehle
% erledigt.
% \begin{macrocode}
+%<*body>
\def\@tempa#1#2#3#4#5#6[#7]#8{%
\ifnum #2>\c@secnumdepth
\let\@svsec\@empty
@@ -729,18 +798,19 @@
\setkeys{KOMAarg.section}{tocentry={#7},head={#7}}%
\fi
\fi
- \ifnum #2>\c@secnumdepth
+ \let\IfUsePrefixLine\@secondoftwo
+ \ifnum \numexpr #2\relax>\c@secnumdepth
\let\@svsec\@empty
\else
\refstepcounter{#1}%
\expandafter\@maybeautodot\csname the#1\endcsname
\protected@edef\@svsec{\@seccntformat{#1}\relax}%
\fi
- \@tempskipa #5\relax
+ \@tempskipa \glueexpr #5\relax\relax
\ifdim \@tempskipa>\z@
\begingroup
#6{%
- \@hangfrom{\hskip #3\relax\@svsec}%
+ \@hangfrom{\hskip \glueexpr #3\relax\@svsec}%
\interlinepenalty \@M #8\@@par}%
\endgroup
%<trace> \ClassInfo{\KOMAClassName}{head=`\scr@ds@head'}%
@@ -753,7 +823,7 @@
\addtocentrydefault{#1}{##1}{##2}%
}%
}{}%
- \ifnum #2>\c@secnumdepth
+ \ifnum \numexpr #2\relax>\c@secnumdepth
\csname add#1tocentry\endcsname{}{\scr@ds@tocentry}%
\else
\csname add#1tocentry\endcsname{\csname the#1\endcsname}{%
@@ -762,11 +832,11 @@
\fi
\else
\def\@svsechd{%
- #6{\hskip #3\relax
+ #6{\hskip \glueexpr #3\relax
\@svsec #8}%
%<trace> \ClassInfo{\KOMAClassName}{head=`\scr@ds@head'}%
- \expandafter\csname #1mark\expandafter\endcsname\expandafter{%
- \scr@ds@head}%
+ \expandafter\csname #1mark\expandafter\endcsname
+ \expandafter{\scr@ds@head}%
%<trace> \ClassInfo{\KOMAClassName}{tocentry=`\scr@ds@tocentry'}%
\ifx\scr@ds@tocentry\@empty\else
\scr@ifundefinedorrelax{add#1tocentry}{%
@@ -775,7 +845,7 @@
\addtocentrydefault{#1}{####1}{####2}%
}%
}{}%
- \ifnum #2>\c@secnumdepth
+ \ifnum \numexpr #2\relax>\c@secnumdepth
\csname add#1tocentry\endcsname{}{\scr@ds@tocentry}%
\else
\csname add#1tocentry\endcsname{\csname the#1\endcsname}{%
@@ -784,7 +854,8 @@
\fi
}%
\fi
- \@xsect{#5}%
+ \let\IfUsePrefixLine\scr@IfUsePrefixLineWarning
+ \@xsect{\glueexpr #5\relax}%
}
% \end{macrocode}
% \begin{macro}{\scr@ds@tocentry}
@@ -809,6 +880,7 @@
\ifx\relax#2\relax\@scr@tempswafalse\else\@scr@tempswatrue\fi
}
\newif\if@scr@tempswa
+%</body>
% \end{macrocode}
% \end{macro}^^A \scr@istest
% \end{macro}^^A \if@scr@tempswa
@@ -816,19 +888,42 @@
% \end{macro}^^A \scr@ds@tocentry
% \end{macro}^^A \@sect
% \end{macro}^^A \scr@sect
-% Dabei soll die Umstellung des Punktes beim zweiten TeX-Lauf bereits am
-% Anfang aktiv sein. Deshalb wird die Information am Ende in die aux-Datei
-% geschrieben.
-% \changes{v2.9k}{2003/01/12}{es wird direkt in \cs{@mainaux} geschrieben}^^A
-% \changes{v2.95}{2004/01/15}{es wird erst unmittelbar vor dem Schließen
-% der Haupt-aux-Datei in diese geschrieben}^^A
-% \changes{v2.96a}{2006/12/07}{es wird \cs{immediate} geschrieben}^^A
+%
+% \begin{macro}{\IfUsePrefixLine}
+% \changes{v3.18}{2015/06/09}{außerhalb von Gliederungsbefehlsstilen
+% definiert}^^A
+% Eigentlich ist diese Anweisung nur innerhalb von Gliederungsbefehlen
+% sinnvoll und wurde bis \KOMAScript{} 3.17c auch nur dort definiert. Dann gab
+% es aber Leute, die \cs{chapterformat} missbraucht haben und gleich meldete
+% sich jemand, die nicht verstehen konnte, warum die Anweisung dann einen
+% Fehler produzieren muss. Wenn man den Code nicht verstanden hat, dann ist
+% das nämlich so. Deshalb gebe ich jetzt eine Warnung aus, dass die Verwendung
+% nicht unbedingt zu dem Resultat führt, das erwartet wird.
+% \begin{macro}{\scr@IfUsePrefixLineWarning}
+% \changes{v3.18}{2015/06/09}{neu (intern)}
% \begin{macrocode}
-\BeforeClosingMainAux{%
- \if@autodot\if@filesw\immediate\write\@mainaux{%
- \string\global\string\@altsecnumformattrue}%
- \fi\fi}
+%<*body>
+\newcommand*{\scr@IfUsePrefixLineWarning}[2]{%
+ \ClassWarning{\KOMAClassName}{%
+ usage of \string\IfUsePrefixLine\space outside
+ section command\MessageBreak
+ style makes no sense, because the behaviour not only\MessageBreak
+ depends on class options but also on the run-time\MessageBreak
+ section command style.\MessageBreak
+ Neither the then-code nor the else-code will be\MessageBreak
+ executed.\MessageBreak
+ You may change this and avoid the warning by LOCALLY\MessageBreak
+ setting \string\IsUsePrefixLine\space to either
+ \string\@firstoftwo\space or\MessageBreak
+ \string\@secondoftwo\space before using it%
+ }%
+}
+\newcommand*{\IfUsePrefixLine}[2]{}
+\let\IfUsePrefixLine\scr@IfUsePrefixLineWarning
+%</body>
% \end{macrocode}
+% \end{macro}^^A \scr@IfUsePrefixLineWarning
+% \end{macro}^^A \IfUsePrefixLine
%
%
% \begin{macro}{\raggedsection}
@@ -841,8 +936,10 @@
% von \cs{section} (und darunter), sondern auch die Voreinstellung für die
% höheren Ebenen ist, wird die Definition hier vorgezogen.
% \begin{macrocode}
+%<*body>
\newcommand*{\raggedsection}{}
\let\raggedsection\raggedright
+%</body>
% \end{macrocode}
% \end{macro}^^A \raggedsection
%
@@ -851,12 +948,15 @@
% \changes{v3.15}{2014/11/21}{neue Anweisung}^^A
% \changes{v3.17}{2015/03/23}{Komplettumbau, um stilabhängige Optionen zu
% ermöglichen}^^A
+% \changes{v3.18}{2015/05/22}{\cs{scr@dsc@def@style@\dots @command}
+% definiert alle Stil abhängigen Anweisung}^^A
% Definition neuer oder Umdefinition existierender Gliederungsbefehle, die auf
% \cs{scr@startsection} basieren. Ebenso wird ein Verzeichniseintrag erzeugt,
% falls ein solcher noch nicht existiert. Die Deklaration geschieht über
% diverse Optionen (Achtung: Unbedingt daran denken, diese in
% \cs{ProvideSectionCommands} ebenfalls zu definieren!!!):
% \begin{macrocode}
+%<*body>
\DefineFamily{KOMAarg}
\DefineFamilyMember[.dsc]{KOMAarg}
% \end{macrocode}
@@ -964,7 +1064,9 @@
\DeclareSectionCommandDummyOption{tocindent}
\DeclareSectionCommandDummyOption{tocnumwidth}
% \end{macrocode}
+%
% \begin{macro}{\scr@dsc@style@section@options}
+% \changes{v3.17}{2015/03/23}{neue Anweisung (intern)}^^A
% Dann für die Optionen des Stils \texttt{section}:
% \begin{macrocode}
\newcommand*{\scr@dsc@style@section@options}{}
@@ -997,14 +1099,53 @@
\DeclareSectionCommandStyleFontOption{section}{font}{}{}
% \end{macrocode}
% \end{macro}^^A \scr@dsc@style@section@options
+% \begin{macro}{\scr@dsc@def@style@section@command}
+% \changes{v3.18}{2015/05/21}{neue Anweisung (intern)}^^A
+% Diese Anweisung left fest, wie ein Gliederungsbefehl für den Stil
+% \texttt{section} zu definieren ist. Das einzige Argument ist dabei der
+% \meta{Name} der Gliederungsebene, beispielsweise \texttt{section},
+% \texttt{subsection} etc. Hier ist es recht einfach, da lediglich
+% \cs{\meta{Name}} per \cs{scr@startsection} definiert werden muss.
+% \begin{macrocode}
+\newcommand*{\scr@dsc@def@style@section@command}[1]{%
+ \@namedef{#1}{%
+ \scr@startsection{#1}%
+ {\csname #1numdepth\endcsname}%
+ {\csname scr@#1@sectionindent\endcsname}%
+ {\csname scr@#1@beforeskip\endcsname}%
+ {\csname scr@#1@afterskip\endcsname}%
+ {%
+ \ifdim\glueexpr\csname scr@#1@beforeskip\endcsname <\z@
+ \expandafter\ifnum\scr@v@is@gt{2.96}\relax
+ \setlength{\parfillskip}{\z@ plus 1fil}%
+ \fi
+ \fi
+ \raggedsection\normalfont\sectfont\nobreak
+ \usekomafont{#1}%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@dsc@def@style@section@command
%
% \begin{macro}{\scr@dsc@style@chapter@options}
+% \changes{v3.17}{2015/03/23}{neue Anweisung (intern)}^^A
% Dann für die Optionen des Stils \texttt{chapter}:
% \begin{macrocode}
%<*book|report>
\newcommand*{\scr@dsc@style@chapter@options}{}
% \end{macrocode}
% \begin{description}
+% \item[\texttt{pagestyle}] Seitenstil für die Anfangsseite der
+% Gliederungsebene.
+% \end{description}
+% \begin{macrocode}
+\DeclareSectionCommandStyleOption{chapter}{pagestyle}{%
+ \@namedef{\scr@dsc@current pagestyle}{#1}%
+ \FamilyKeyStateProcessed
+}%
+% \end{macrocode}
+% \begin{description}
% \item[\texttt{beforeskip}] Der Absolutwert gibt den vertikalen Abstand vor
% der Überschrift an. Negative Werte bedeuten, dass der Absatzeinzug nach
% der Überschrift unterdrückt werden soll.
@@ -1036,20 +1177,55 @@
\DeclareSectionCommandStyleFontOption{chapter}{font}{}{}
% \end{macrocode}
% \begin{description}
-% \item[\texttt{font}] Schrifteinstellungen für die Präfixzeile des Elements.
+% \item[\texttt{prefixfont}] Schrifteinstellungen für die Präfixzeile des
+% Elements.
% \end{description}
% \begin{macrocode}
\DeclareSectionCommandStyleFontOption{chapter}{prefixfont}{}{prefix}
-%</book|report>
% \end{macrocode}
% \end{macro}^^A \scr@dsc@style@chapter@options
+% \begin{macro}{\scr@dsc@def@style@chapter@command}
+% \changes{v3.18}{2015/05/22}{neue Anweisung (intern)}
+% Diese Anweisung left fest, wie ein Gliederungsbefehl für den Stil
+% \texttt{chapter} zu definieren ist. Das einzige Argument ist dabei der
+% \meta{Name} der Gliederungsebene, normalerweise \texttt{chapter}.
+% Das ist etwas komplizierter als bei \cs{scr@dsc@def@style@section@command},
+% da hier eine ganze Reihe von miteinander verschachtelten Anweisungen zu
+% definieren sind.
+% \begin{macrocode}
+\newcommand*{\scr@dsc@def@style@chapter@command}[1]{%
+ \@namedef{#1}{\scr@startchapter{#1}}%
+ \@namedef{@#1}{\scr@@startchapter{#1}}%
+ \@namedef{@s#1}{\scr@@startschapter{#1}}%
+ \@namedef{@make#1head}{\scr@makechapterhead{#1}}%
+ \@namedef{@makes#1head}{\scr@makeschapterhead{#1}}%
+ \@namedef{@@make#1head}{\scr@@makechapterhead{#1}}%
+ \@namedef{@@makes#1head}{\scr@@makeschapterhead{#1}}%
+ \@namedef{set#1preamble}{\set@preamble{#1}}%
+}
+%</book|report>
+% \end{macrocode}
+% \end{macro}^^A \scr@dsc@def@style@chapter@command
%
% \begin{macro}{\scr@dsc@style@part@options}
+% \changes{v3.17}{2015/03/23}{neue Anweisung (intern)}^^A
% Dann für die Optionen des Stils \texttt{part}:
% \begin{macrocode}
\newcommand*{\scr@dsc@style@part@options}{}
% \end{macrocode}
% \begin{description}
+% \item[\texttt{pagestyle}] Seitenstil für die Anfangsseite der
+% Gliederungsebene.
+% \end{description}
+% \begin{macrocode}
+%<*report|book>
+\DeclareSectionCommandStyleOption{part}{pagestyle}{%
+ \@namedef{\scr@dsc@current pagestyle}{#1}%
+ \FamilyKeyStateProcessed
+}%
+%</report|book>
+% \end{macrocode}
+% \begin{description}
% \item[\texttt{beforeskip}] Der Absolutwert gibt den vertikalen Abstand vor
% der Überschrift an. Negative Werte bedeuten, dass der Absatzeinzug nach
% der Überschrift unterdrückt werden soll.
@@ -1086,9 +1262,25 @@
% \item[\texttt{font}] Schrifteinstellungen für die Präfixzeile des Elements.
% \end{description}
% \begin{macrocode}
-\DeclareSectionCommandStyleFontOption{part}{prefixfont}{}{number}
+\DeclareSectionCommandStyleFontOption{part}{prefixfont}{}{prefix}
% \end{macrocode}
% \end{macro}^^A \scr@dsc@style@part@options
+% \begin{macro}{\scr@dsc@def@style@part@command}
+% \changes{v3.18}{2015/05/23}{neue Anweisung (intern)}
+% Diese Anweisung legt fest, wie ein Gliederungsbefehl für den Stil
+% \texttt{part} zu definieren ist. Das einzige Argument ist dabei der
+% \meta{Name} der Gliederungsebene, normalerweise \texttt{part}.
+% Das ist ganz ähnlich wie bei \cs{scr@dsc@def@style@chapter@command}.
+% \begin{macrocode}
+\newcommand*{\scr@dsc@def@style@part@command}[1]{%
+ \@namedef{#1}{\scr@startpart{#1}}%
+ \@namedef{@#1}{\scr@@startpart{#1}}%
+ \@namedef{@s#1}{\scr@@startspart{#1}}%
+%<book|report> \@namedef{@end#1}{\scr@@endpart{#1}}%
+%<book|report> \@namedef{set#1preamble}{\set@preamble{#1}}%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@dsc@def@style@part@command
%
% \begin{macro}{\scr@dsc@style@section@neededoptionstest}
% \changes{v3.17}{2015/03/24}{Neu (intern)}
@@ -1131,6 +1323,10 @@
%<trace> \typeout{TRACE:
%<trace> \string\scr@dsc@style@chapter@neededoptionstest\space for
%<trace> \scr@dsc@current}%
+ \scr@ifundefinedorrelax{\scr@dsc@current pagestyle}{%
+ \scr@declaresectioncommanderror{\scr@dsc@current}{initial page style}
+ {pagestyle}%
+ }{}%
\scr@ifundefinedorrelax{scr@\scr@dsc@current @innerskip}{%
\scr@declaresectioncommanderror{\scr@dsc@current}{inner chapter skip}
{innerskip}%
@@ -1158,7 +1354,7 @@
% \begin{macro}{\scr@dsc@style@part@neededoptionstest}
% \changes{v3.17}{2015/03/24}{Neu (intern)}
% Dieses Anweisung überprüft, ob alle notwendigen Eigenschaften für die
-% Definition der spezifischen Gliederungsebene im chapter-Stil bekannt
+% Definition der spezifischen Gliederungsebene im part-Stil bekannt
% sind. Sollte das nicht der Fall sein, meldet sie einen Fehler und sorgt sie
% mit \cs{aftergroup}\cs{@gobbletwo} dafür, dass die Definition unterbleibt.
% \begin{macrocode}
@@ -1167,6 +1363,10 @@
%<trace> \string\scr@dsc@style@part@neededoptionstest\space for
%<trace> \scr@dsc@current}%
%<*book|report>
+ \scr@ifundefinedorrelax{\scr@dsc@current pagestyle}{%
+ \scr@declaresectioncommanderror{\scr@dsc@current}{initial page style}
+ {pagestyle}%
+ }{}%
\scr@ifundefinedorrelax{scr@\scr@dsc@current @innerskip}{%
\scr@declaresectioncommanderror{\scr@dsc@current}{inner part skip}
{innerskip}%
@@ -1183,7 +1383,7 @@
\IfExistskomafont{\scr@dsc@current}{}{%
\scr@declaresectioncommanderror{\scr@dsc@current}{font}{font}%
}{}%
- \IfExistskomafont{\scr@dsc@current number}{}{%
+ \IfExistskomafont{\scr@dsc@current prefix}{}{%
\scr@declaresectioncommanderror{\scr@dsc@current}{number font}
{prefixfont}%
}{}%
@@ -1221,7 +1421,7 @@
\ifscr@dsc@parametersonlytrue
\FamilyKeyStateProcessed
}{%
- \scr@ifundefinedorrelax{scr@start##1}{%
+ \scr@ifundefinedorrelax{scr@dsc@def@style@##1@command}{%
\FamilyKeyStateUnknownValue
}{%
\@namedef{scr@\scr@dsc@current @style}{##1}%
@@ -1331,7 +1531,7 @@
\expandafter\edef\csname scr@\scr@dsc@current @tocindent\endcsname{%
\the\@tempskipa}%
\else
- \expandafter\edef\csname scr@\scr@dsc@current @tocindent\endcsname{
+ \expandafter\edef\csname scr@\scr@dsc@current @tocindent\endcsname{%
##1}%
\fi
\fi
@@ -1409,7 +1609,9 @@
empty section style option%
}%
\else
- \scr@ifundefinedorrelax{scr@start\@nameuse{scr@#2@style}}{%
+ \scr@ifundefinedorrelax{%
+ scr@dsc@def@style@\@nameuse{scr@#2@style}@command%
+ }{%
\ClassWarning{\KOMAClassName}{%
not defining `\expandafter\string\csname #2\endcsname'
due\MessageBreak
@@ -1417,28 +1619,7 @@
`\@nameuse{scr@#2@style}'%
}%
}{%
- \expandafter\edef\csname #2\endcsname{%
- \expandafter\noexpand
- \csname scr@start\csname scr@#2@style\endcsname\endcsname
- {#2}%
- \expandafter\noexpand\csname #2numdepth\endcsname
- \expandafter\noexpand\csname scr@#2@sectionindent\endcsname
- \expandafter\noexpand\csname scr@#2@beforeskip\endcsname
- \expandafter\noexpand\csname scr@#2@afterskip\endcsname{%
- \noexpand\ifdim\noexpand\glueexpr
- \expandafter\noexpand\csname scr@#2@beforeskip\endcsname
- <\noexpand\z@
- \unexpanded{%
- \expandafter\ifnum\scr@v@is@gt{2.96}\relax
- \setlength{\parfillskip}{\z@ plus 1fil}%
- \fi
- }%
- \noexpand\fi
- \unexpanded{%
- \raggedsection\normalfont\sectfont\nobreak\usekomafont{#2}%
- }%
- }%
- }%
+ \@nameuse{scr@dsc@def@style@\@nameuse{scr@#2@style}@command}{#2}%
}%
\fi
% \end{macrocode}
@@ -1480,6 +1661,7 @@
}{}%
}%
}%
+ \let\scr@dsc@current\relax
}
% \end{macrocode}
% \begin{macro}{\scr@declaresectioncommanderror}
@@ -2127,95 +2309,11 @@
\newcommand*{\size@part}{}
\newcommand*{\size@partnumber}{}
%</prepare>
-%</class>
% \end{macrocode}
% \end{macro}^^A \size@partnumber
% \end{macro}^^A \size@part
%
%
-% \begin{macro}{\partnumdepth}
-% \changes{v3.12}{2013/12/16}{new read only command}^^A
-% Darf nur gelesen, sollten aber nie umdefiniert werden und gibt die
-% Nummerierungsebene der Gliederungsanweisungen an (nicht zu verwechseln mit
-% der Verzeichnisebene der Gliederungsanweisungen). Dass sich die Ebene für
-% \texttt{article} unterscheidet ist ein zum Feature erklärten Bug, der aus
-% Kompatibilitätsgründen von den Standardklassen übernommen wurde. Richtig
-% glücklich bin ich damit jedoch nicht!
-% \begin{macrocode}
-%<*class>
-%<*body>
-\newcommand*{\partnumdepth}{%
-%<article> \z@
-%<report|book> \m@ne
-}
-% \end{macrocode}
-% \end{macro}^^A \partnumdepth
-%
-%
-% \begin{macro}{\part}
-% \changes{v2.1c}{1995/01/17}{Zeichenkette "`markboth"' durch Befehl
-% \cs{markboth} ersetzt}^^A
-% \changes{v2.2c}{1995/05/25}{Part-Ausgabe auf CJK umgestellt}^^A
-% \changes{v2.3c}{1995/08/06}{alternative Numerierung bei römischer
-% Part-Numerierung}^^A
-% \changes{v2.3d}{1995/08/19}{alternative Numerierung korrigiert}^^A
-% \changes{v2.3g}{1996/01/14}{\cs{hbox} durch \cs{null} ersetzt}^^A
-% \changes{v2.8d}{2001/07/05}{\cs{partpagestyle} statt \texttt{plain}}^^A
-% \changes{v2.8p}{2001/09/27}{Präambel über der Überschrift hinzugefügt}^^A
-% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont} behebt einen
-% Bug im color Paket}^^A
-% \changes{v3.13a}{2014/09/11}{Verwendung von \cs{SecDef}}^^A
-% \begin{macro}{\@part}
-% \changes{v2.4b}{1996/03/29}{\cs{size@partnumer} durch
-% \cs{size@partnumber} ersetzt}^^A
-% \changes{v2.4n}{1997/05/28}{für \textsf{scrartcl} \cs{markboth}
-% zum Löschen der Kolumnentitel durch \cs{sectionmark} ersetzt}^^A
-% \changes{v2.5e}{1998/07/17}{\cs{numberline} verwendet, damit die
-% reservierte Part-Nummern-Breite in \cs{l@part} auch wirklich verwendet
-% wird}^^A
-% \changes{v2.8e}{2001/07/10}{\cs{@maybeautodot} wird aufgerufen}^^A
-% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor \cs{size@part} und
-% \cs{size@partnumber} aufgerufen}^^A
-% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}^^A
-% \changes{v2.95}{2002/08/13}{\cs{centering} und \cs{@parskipfalse}%
-% \cs{@parskip@indent} vertauscht}^^A
-% \changes{v2.95}{2004/11/05}{\cs{@parskipfalse} und \cs{@parskip@indent}
-% ersetzt}^^A
-% \changes{v3.08}{2010/11/01}{Verwendung von \cs{addparttocentry}}^^A
-% \changes{v3.10}{2011/08/30}{Integration der Erweiterung für das optionale
-% Argument der Gliederungsbefehle}^^A
-% \changes{v3.10}{2011/08/30}{Wenn \cs{partmark} \cs{@gobble} ist, wird
-% stattdessen \cs{@mkboth}{}{} aufgerufen.}^^A
-% \begin{macro}{\@spart}
-% \changes{v2.4n}{1997/05/28}{in der Sternvariante \cs{chaptermark}^^A
-% bzw. \cs{sectionmark} eingefügt, um die Kolumnentitel zu
-% löschen}^^A
-% \changes{v2.6a}{2000/01/20}{zum Löschen der Kolumnentitel wird
-% nun \cs{@mkboth} verwendet}^^A
-% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}^^A
-% \changes{v2.95}{2002/08/13}{\cs{centering} und
-% \cs{@parskipfalse}\cs{@parskip@indent} vertauscht}^^A
-% \changes{v2.95}{2004/11/05}{\cs{@parskipfalse} und \cs{@parskip@indent}
-% ersetzt}^^A
-% \begin{macro}{\@endpart}
-% \changes{v2.3g}{1996/01/14}{\cs{@endpart} wird für
-% \textsf{scrartcl} nicht mehr definiert}^^A
-% \changes{v2.4e}{1996/07/02}{Option \texttt{openany} beachten}^^A
-% \changes{v2.6c}{2000/06/10}{\cs{@endpart} fügt nur noch in
-% beidseitigen Dokumenten bei Verwendung von openright eine
-% Leerseite ein}^^A
-% \changes{v2.8p}{2001/09/27}{\cs{vbox} eingefügt}^^A
-% \changes{v2.8p}{2001/09/27}{\cs{use@preamble} ersetzt
-% \cs{@part@preamble}}^^A
-% \changes{v3.02}{2009/01/01}{Verwendung des neuen
-% \cs{partheademptypage}}^^A
-% Der Gliederungsfehl \cs{part} wird wie in den Standardklassen mit
-% Hilfe mehrere Hilfsmakros definiert. Wesentliche Unterschiede zu den
-% Standardklassen existieren nicht, jedoch sind Schriftgröße,
-% Schriftart u.\,ä. flexibler gehalten. Außerdem gibt es die
-% Möglichkeit von Präambeln. \emph{Achtung: Die Präambel vor der
-% \cs{part}-Überschrift kann ohne Warnung über den oberen Rand
-% hinaus reichen!}
% \begin{macro}{\partheadstartvskip}
% \changes{v2.95a}{2006/07/10}{neue Konfiguratonsmöglichkeit}^^A
% \changes{v3.15}{2014/11/24}{\textsf{scrartcl} definiert und verwendet
@@ -2233,6 +2331,9 @@
% kann damit auch der Umbruch zwischen Nummer und Text entfernt werden.
% Da die Größe nicht über Option \texttt{headings} beeinflusst werden kann,
% müssen diese Hilfsmakros nicht bereits vor den Optionen definiert werden.
+%
+% Zur Erhöhung der Kompatibilität mit \cs{DeclareSectionCommand} werden
+% zunächst einige Hilfsanweisung definiert und verwendet.
% \begin{macro}{\scr@part@sectionbeforeskip}
% \changes{v3.15}{2014/11/24}{neue (interne) Anweisung}^^A
% \changes{v3.17}{2015/03/25}{umbenannt in \cs{scr@part@beforeskip}}^^A
@@ -2258,6 +2359,7 @@
% Es wird der leere Stil verwendet, mit dem Neudefinitionen von \cs{part}
% über \cs{DeclareSectionCommand} verhindert werden.
% \begin{macrocode}
+%<*prepare>
\newcommand*{\scr@part@beforeskip}{%
%<article> 4ex
% \end{macrocode}
@@ -2266,24 +2368,30 @@
% \begin{macrocode}
%<report|book> \z@ \@plus 1fil + \baselineskip
}
+%<book|report>\newcommand*{\scr@part@innerskip}{20\p@}
+\newcommand*{\scr@part@afterskip}{%
+%<article> 3ex
+%<report|book> \z@ \@plus 1fil
+}
+\newcommand*{\scr@part@style}{part}
+% \end{macrocode}
+% \end{macro}^^A \scr@part@style
+% \end{macro}^^A \scr@part@afterskip
+% \end{macro}^^A \scr@part@innerskip
+% \end{macro}^^A \scr@part@beforeskip
+% \begin{macrocode}
\newcommand*{\partheadstartvskip}{%
%<article> \addvspace{\@tempskipa}%
%<report|book> \null\vskip-\baselineskip\vskip\@tempskipa
}
-%<book|report>\newcommand*{\scr@part@innerskip}{20\p@}
\newcommand*{\partheadmidvskip}{%
\par\nobreak
%<book|report> \vskip\@tempskipa
}
-\newcommand*{\scr@part@afterskip}{%
-%<article> 3ex
-%<report|book> \z@ \@plus 1fil
-}
\newcommand*{\partheadendvskip}{%
%<article> \vskip\@tempskipa
%<report|book> \vskip\@tempskipa\newpage
}
-\newcommand*{\scr@part@style}{part}
%<*report|book>
\newcommand*{\partheademptypage}{%
\if@twoside\if@openright
@@ -2293,119 +2401,280 @@
\fi\fi
}
%</report|book>
+%</prepare>
% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
+% \end{macro}^^A \partheademptypage
+% \end{macro}^^A \partheadendvskip
+% \end{macro}^^A \partheadmidvskip
+% \end{macro}^^A \partheadstartvskip
+%
+%
+% \begin{macro}{\scr@startpart}
+% \changes{v3.18}{2015/05/23}{neue Anweisung (intern)}^^A
+% Diese Anweisung ist von der ursprünglichen Definition von \cs{part}
+% abgeleitet und erbt deren ChangeLog-Einträge.
+% \changes{v2.8d}{2001/07/05}{\cs{partpagestyle} statt \texttt{plain}}^^A
+% \changes{v2.8p}{2001/09/27}{Präambel über der Überschrift hinzugefügt}^^A
+% \changes{v3.13a}{2014/09/11}{Verwendung von \cs{SecDef}}^^A
+% Die Anweisung definiert den Gliederungsüberschriften-Stil
+% \texttt{part}. Dazu bekommt sie als einziges explizites Argument den
+% \meta{Namen} der Gliederungsüberschrift. Weitere Argumente wie ein
+% optionaler Stern oder ein optionales Argument für Inhaltsverzeichnis und
+% Kolumnentitel sowie ein obligatorisches Argument für den Text der
+% Überschrift sind implizit, das heißt, sie werden erst im weiteren Verlauf
+% von Unter-Macros eingelesen und verarbeitet.
% \begin{macrocode}
-%<*article>
-\newcommand\part{\par
- \@tempskipa=\glueexpr\scr@part@beforeskip\relax
- \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
- \partheadstartvskip%
- \@afterindentfalse
- \SecDef\@part\@spart
-}
-%</article>
-%<*report|book>
-\newcommand\part{\if@openright\cleardoublepage\else\clearpage\fi
- \thispagestyle{\partpagestyle}%
+%<*body>
+\newcommand*{\scr@startpart}[1]{%
+%<article> \par
+%<*book|report>
+ \if@openright\cleardoublepage\else\clearpage\fi
+ \thispagestyle{\@nameuse{#1pagestyle}}%
\if@twocolumn
\onecolumn
\@tempswatrue
\else
\@tempswafalse
\fi
- \@tempskipa=\glueexpr\scr@part@beforeskip\relax
+%</book|report>
+ \@tempskipa=\glueexpr\@nameuse{scr@#1@beforeskip}\relax\relax
\ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
\partheadstartvskip
- \vbox to\z@{\vss\use@preamble{part@o}\strut\par}%
- \vskip-\baselineskip\nobreak%
- \SecDef\@part\@spart
+%<article> \@afterindentfalse
+%<*book|report>
+ \vbox to\z@{\vss\use@preamble{#1@o}\strut\par}%
+ \vskip-\baselineskip\nobreak
+%</book|report>
+ \expandafter\SecDef\csname @#1\expandafter\endcsname\csname @s#1\endcsname
}
-%</report|book>
-\newcommand*{\@part}{}
-\def\@part[#1]#2{%
+% \end{macrocode}
+%
+% \begin{macro}{\scr@@startpart}
+% \changes{v3.18}{2015/05/23}{neue Anweisung (intern)}^^A
+% Diese Anweisung ist von der ursprünglichen Definition von \cs{@part}
+% abgeleitet und erbt deren ChangeLog-Einträge.
+% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}^^A
+% \changes{v2.95}{2002/08/13}{\cs{centering} und \cs{@parskipfalse}%
+% \cs{@parskip@indent} vertauscht}^^A
+% \changes{v2.95}{2004/11/05}{\cs{@parskipfalse} und \cs{@parskip@indent}
+% ersetzt}^^A
+% Die Anweisung macht die eigentliche Arbeit für den Fall einer
+% Gliederungsanweisung ohne Stern. Das erste obligatorische Argument ist der
+% \meta{Name} der Gliederungsanweisung. Das zweite eigentlich optionale
+% Argument, das hier jedoch zwingend ist, ist der \meta{Spezial-Text} für
+% Kolumnentitel und Inhaltsverzeichnis. Das dritte obligatorische Argument
+% ist der \meta{Text} für die Überschrift.
+% \begin{macrocode}
+\newcommand{\scr@@startpart}{}
+\long\def\scr@@startpart#1[#2]#3{%
+%<trace> \typeout{TRACE: \string\scr@@startpart{#1}}%
+% \end{macrocode}
+% \changes{v3.10}{2011/08/30}{Integration der Erweiterung für das optionale
+% Argument der Gliederungsbefehle}^^A
+% Für das erweitere optionale Argument muss hier eine key-value-Auswertung
+% erfolgen, falls das erweitere optionale Argument aktiviert ist:
+% \begin{macrocode}
\ifnum \scr@osectarg=\z@
\@scr@tempswafalse
\else
- \scr@istest#1=\@nil
+ \scr@istest#2=\@nil
\fi
\if@scr@tempswa
- \setkeys{KOMAarg.section}{tocentry={#2},head={#2},#1}%
+ \setkeys{KOMAarg.section}{tocentry={#3},head={#3},#2}%
\else
\ifcase \scr@osectarg\relax
- \setkeys{KOMAarg.section}{tocentry={#1},head={#1}}%
+ \setkeys{KOMAarg.section}{tocentry={#2},head={#2}}%
\or
- \setkeys{KOMAarg.section}{tocentry={#2},head={#1}}%
+ \setkeys{KOMAarg.section}{tocentry={#3},head={#2}}%
\or
- \setkeys{KOMAarg.section}{tocentry={#1},head={#2}}%
+ \setkeys{KOMAarg.section}{tocentry={#2},head={#3}}%
\or
- \setkeys{KOMAarg.section}{tocentry={#1},head={#1}}%
+ \setkeys{KOMAarg.section}{tocentry={#2},head={#2}}%
\fi
\fi
- \ifnumbered{part}{%
- \refstepcounter{part}%
+% \end{macrocode}
+% Als nächstes muss für nummerierte Überschriften dieser Ebene sowohl der
+% Zähler erhöht also auch ein nummerierter Eintrag ins Inhaltsverzeichnis
+% erstellt werden.
+% \changes{v2.8e}{2001/07/10}{\cs{@maybeautodot} wird aufgerufen}^^A
+% \changes{v3.08}{2010/11/01}{Verwendung von \cs{addparttocentry}}^^A
+% \changes{v3.18}{2015/05/20}{Verwendung von \cs{add\meta{Name}tocentry} in
+% \cs{typeout}}^^A
+% \begin{macrocode}
+ \ifnumbered{#1}{%
+ \refstepcounter{#1}%
\@maybeautodot\thepart%
+ \expandafter\@maybeautodot\csname the#1\endcsname
+ \typeout{#1 \csname the#1\endcsname.}%
\ifx\scr@ds@tocentry\@empty\else
- \addparttocentry{\thepart}{\scr@ds@tocentry}%
+ \scr@ifundefinedorrelax{add#1tocentry}{%
+ \addtocentrydefault{#1}%
+ }{%
+ \@nameuse{add#1tocentry}%
+ }{\csname the#1\endcsname}{\scr@ds@tocentry}%
\fi
}{%
+% \end{macrocode}
+% \changes{v3.18}{2015/05/23}{Resetliste auch bei nicht nummerierten
+% Überschriften abarbeiten}^^A
+% Für alle nicht nummerieten Überschriften dieser Ebene trotzdem die
+% Resetliste des Zählers ausführen und ggf. einen Verzeichniseintrag
+% erstellen.
+% \begin{macrocode}
+ \expandafter\ifnum\scr@v@is@lt{3.18}\relax\else
+ \begingroup
+ \let\@elt\@stpelt
+ \csname cl@#1\endcsname
+ \endgroup
+ \fi
+ \typeout{#1 without number}%
\ifx\scr@ds@tocentry\@empty\else
- \addparttocentry{}{\scr@ds@tocentry}%
+% \end{macrocode}
+% An dieser Stelle muss ggf. der \textsf{hyperref}-Hook für nicht nummerierte
+% Inhaltsverzeichniseinträge ausgeführt werden.
+% \changes{v3.08}{2010/11/01}{Verwendung von \cs{addparttocentry}}^^A
+% \changes{v3.18}{2015/05/23}{\cs{addparttocentry} verallgemeinert}^^A
+% \begin{macrocode}
+ \hy@insteadofrefstepcounter{#1}%
+ \scr@ifundefinedorrelax{add#1tocentry}{%
+ \addtocentrydefault{#1}%
+ }{%
+ \@nameuse{add#1tocentry}%
+ }{}{\scr@ds@tocentry}%
\fi
}%
+% \end{macrocode}
+% Es folgt das eigentliche Setzen der Überschrift. Übrigens ist der ganze Code
+% oben bei \cs{scr@@startchapter} praktisch identisch. Lediglich das
+% Abarbeiten der Resetliste gibt es dort bereits seit Version~3.15. In
+% \cs{scr@@startchapter} wird an dieser Stelle dann \cs{@make\dots head}
+% ausgeführt. Das könnte man eigentlich irgendwann hier genauso machen.
+% \changes{v2.2c}{1995/05/25}{Part-Ausgabe auf CJK umgestellt}^^A
+% \changes{v2.4b}{1996/03/29}{\cs{size@partnumer} durch
+% \cs{size@partnumber} ersetzt}^^A
+% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor \cs{size@part} und
+% \cs{size@partnumber} aufgerufen}^^A
+% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont} behebt einen
+% Bug im color Paket}^^A
+% \changes{v3.18}{2015/05/23}{\cs{size@\dots} durch \cs{usekomafont}
+% ersetzt}^^A
+% \begin{macrocode}
\begingroup
\setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative
\raggedpart
\interlinepenalty \@M
\normalfont\sectfont\nobreak
- \ifnumbered{part}{%
- \size@partnumber{\partformat}%
-%<book|report> \setlength{\@tempskipa}{\scr@part@innerskip}%
+ \ifnumbered{#1}{%
+ \usekomafont{#1prefix}{\@nameuse{#1format}}%
+%<book|report> \setlength{\@tempskipa}{\@nameuse{scr@#1@innerskip}}%
\partheadmidvskip
}{}%
- \size@part{#2}\strut
- \ifx\partmark\@gobble
- \@mkboth{}{}\par
+ \usekomafont{part}{#3}\strut
+% \end{macrocode}
+% \changes{v3.10}{2011/08/30}{Wenn \cs{partmark} \cs{@gobble} ist, wird
+% stattdessen \cs{@mkboth}{}{} aufgerufen.}^^A
+% Und noch den Kolumnentitel setzen.
+% \begin{macrocode}
+ \expandafter\ifx\csname #1mark\endcsname\@gobble
+ \@mkboth{}{}%
\else
- \expandafter\partmark\expandafter{\scr@ds@head}\par
+ \csname #1mark\expandafter\endcsname\expandafter{\scr@ds@head}%
\fi
+ \par
\endgroup
+% \end{macrocode}
+% Ganz zum Schluss muss noch einmal ein Abstand eingefügt werden.
+% \begin{macrocode}
%<*article>
\nobreak
- \@tempskipa=\glueexpr\scr@part@afterskip\relax
+ \@tempskipa=\glueexpr\@nameuse{scr@#1@afterskip}\relax\relax
\ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
\partheadendvskip
\@afterheading
%</article>
-%<book|report> \@endpart
+%<book|report> \@nameuse{@end#1}%
}
-\newcommand*{\@spart}[1]{%
+% \end{macrocode}
+% \end{macro}^^A \scr@@startpart
+%
+% \begin{macro}{\scr@@startspart}
+% \changes{v3.18}{2015/05/23}{neue Anweisung (intern)}^^A
+% Diese Anweisung ist von der ursprünglichen Definition von \cs{@spart}
+% abgeleitet und erbt deren ChangeLog-Einträge.
+% \changes{v2.4n}{1997/05/28}{in der Sternvariante \cs{chaptermark}^^A
+% bzw. \cs{sectionmark} eingefügt, um die Kolumnentitel zu
+% löschen}^^A
+% \changes{v2.6a}{2000/01/20}{zum Löschen der Kolumnentitel wird
+% nun \cs{@mkboth} verwendet}^^A
+% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}^^A
+% \changes{v2.95}{2002/08/13}{\cs{centering} und
+% \cs{@parskipfalse}\cs{@parskip@indent} vertauscht}^^A
+% \changes{v2.95}{2004/11/05}{\cs{@parskipfalse} und \cs{@parskip@indent}
+% ersetzt}^^A
+% Die Anweisung macht die eigentliche Arbeit für den Fall einer
+% Gliederungsanweisung mit Stern. Das erste obligatorische Argument ist der
+% \meta{Name} der Gliederungsanweisung. Das zweite obligatorische Argument
+% ist der \meta{Text} für die Überschrift.
+% \begin{macrocode}
+\newcommand{\scr@@startspart}[2]{%
+%<trace> \typeout{TRACE: \string\scr@@startspart{#1}}%
+% \end{macrocode}
+% Für Leute, die unbedingt nach der Sternversion noch ein \cs{addcontentsline}
+% anfügen wollen, muss hier ebenfalls der \textsf{hyperref}-Hook ausgeführt
+% werden. Allerdings passiert das hier entsprechend dem Vorgehen von
+% \textsf{hyperref} selbst in einer Gruppe, in der zusätzlich \cs{@mkboth} zu
+% \cs{@gobbletwo} gemacht wird, auch wenn ich absolut nicht versehe, was das
+% soll.
+% \begin{macrocode}
+ \begingroup
+ \let\@mkboth\@gobbletwo
+ \hy@insteadofrefstepcounter{#1}%
+ \endgroup
+% \end{macrocode}
+% Erst dann erfolgt die tatsächliche Ausgabe der Überschrift.
+% \begin{macrocode}
\begingroup
\setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative
\raggedpart
\interlinepenalty \@M
\normalfont
- \sectfont\nobreak\size@part{#1}\strut\@mkboth{}{}\par
+ \sectfont\nobreak\usekomafont{#1}{#2}\strut\@mkboth{}{}\par
\endgroup
%<*article>
\nobreak
- \@tempskipa=\glueexpr\scr@part@afterskip\relax
+ \@tempskipa=\glueexpr\csname scr@#1@afterskip\endcsname\relax\relax
\ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
\partheadendvskip
\@afterheading
%</article>
-%<book|report> \@endpart
+%<book|report> \@nameuse{@end#1}%
}
+% \end{macrocode}
+% \end{macro}^^A \scr@@startspart
+%
+% \begin{macro}{\scr@@endpart}
+% \changes{v3.18}{2015/05/23}{neue Anweisung (intern)}^^A
+% Diese Anweisung ist von der ursprünglichen Definition von \cs{@spart}
+% abgeleitet und erbt deren ChangeLog-Einträge.
+% \changes{v2.3g}{1996/01/14}{\cs{@endpart} wird für
+% \textsf{scrartcl} nicht mehr definiert}^^A
+% \changes{v2.4e}{1996/07/02}{Option \texttt{openany} beachten}^^A
+% \changes{v2.6c}{2000/06/10}{\cs{@endpart} fügt nur noch in
+% beidseitigen Dokumenten bei Verwendung von \texttt{openright} eine
+% Leerseite ein}^^A
+% \changes{v2.8p}{2001/09/27}{\cs{vbox} eingefügt}^^A
+% \changes{v2.8p}{2001/09/27}{\cs{use@preamble} ersetzt
+% \cs{@part@preamble}}^^A
+% \changes{v3.02}{2009/01/01}{Verwendung des neuen
+% \cs{partheademptypage}}^^A
+% Die Anweisung wird bei \textsf{scrbook} und \textsf{screprt} verwendet, um
+% die Überschrift abzuschließen. \textsf{scrartcl} hat keine solche Anweisung.
+% Da einzige Argument ist der \meta{Name} der Gliederungsanweisung.
+% \begin{macrocode}
%<*book|report>
-\newcommand*{\@endpart}{\vbox to\z@{\use@preamble{part@u}\vss}%
- \@tempskipa=\glueexpr\scr@part@afterskip\relax
+\newcommand*{\scr@@endpart}[1]{%
+ \vbox to\z@{\use@preamble{#1@u}\vss}%
+ \@tempskipa=\glueexpr\csname scr@#1@afterskip\endcsname\relax\relax
\ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
\partheadendvskip
\partheademptypage
@@ -2415,35 +2684,47 @@
}
%</book|report>
% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\setpartpreamble}
-% \changes{v2.8f}{2001/07/12}{neu}^^A
-% \changes{v2.8p}{2001/09/27}{Verwendung von \cs{use@preamble}}^^A
-% \begin{macro}{\part@u@preamble}
-% \changes{v2.8p}{2001/09/27}{neu (intern)}^^A
-% \changes{v2.8p}{2001/09/27}{Ersatz für \cs{part@preamble}}^^A
-% \changes{v3.12a}{2014/02/14}{flaschen (\cs{part@preamble@u}) Namen
-% korrigiert}^^A
-% \begin{macro}{\part@o@preamble}
-% \changes{v2.8p}{2001/09/27}{neu (intern)}^^A
-% \changes{v3.12a}{2014/02/14}{flaschen Namen (\cs{part@preamble@o})
-% korrigiert}^^A
-% Analog zu den Kapitel gibt es Befehle für eine Teil-Präambel.
-% \begin{macrocode}
-%<*book|report>
-\newcommand*{\setpartpreamble}{\set@preamble{part}}
-\newcommand*{\part@u@preamble}{}
-\let\part@u@preamble\relax
-\newcommand*{\part@o@preamble}{}
-\let\part@o@preamble\relax
-%</book|report>
+% \end{macro}^^A \scr@@endpart
+% \end{macro}^^A \scr@startpart
+%
+%
+% \begin{macro}{\hy@insteadofrefstepcounter}
+% \changes{v3.18}{2015/05/22}{neu (intern und \textsf{hyperref})}
+% Normalerweise führt \textsf{hyperref} via \cs{refstepcounter}
+% Initialisierungen für ein nachfolgendes \cs{addcontentsline} durch. Wenn
+% allerdings eine nicht nummerierte Überschrift ins Inhaltsverzeichnis
+% eingetragen wird, dann fehlt das vorherige \cs{refstepcounter}. Statt
+% \cs{@chapter}, \cs{@schapter}, \cs{@part}, \cs{@spart} etc. direkt zu
+% patchen, erscheint es mir sinnvoller einen Hook dafür zu definieren, der
+% dann von \textsf{hyperref} entsprechend definiert werden kann. Solange
+% \textsf{hyperref} das nicht macht, versuche ich mich selbst daran und kann
+% nur hoffen, dass es funktioniert. Dabei verwende ich im Gegensatz zu
+% \textsf{hyperref} für \cs{Hy@MakeCurrentHrefAuto} kein \cs{Hy@chapapp}, weil
+% ja \cs{autoref} für nicht nummerierte Überschriften ohnehin sinnlos
+% ist. Stattdessen verwende ich den Gliederungsbefehl.
+% \begin{macrocode}
+\newcommand*{\hy@insteadofrefstepcounter}[1]{}
+\let\hy@insteadofrefstepcounter\@gobble
+\BeforePackage{hyperref}{%
+ \let\scr@orig@chapter\@chapter
+ \let\scr@orig@schapter\@schapter
+ \let\scr@orig@addchap\@addchap
+}
+\AfterPackage!{hyperref}{%
+ \let\@chapter\scr@orig@chapter
+ \let\@schapter\scr@orig@schapter
+ \let\@addchap\scr@orig@addchap
+ \ifx\hy@insteadofrefstepcounter\@gobble
+ \renewcommand*{\hy@insteadofrefstepcounter}[1]{%
+ \Hy@MakeCurrentHrefAuto{#1*}%
+ \Hy@raisedlink{%
+ \hyper@anchorstart{\@currentHref}\hyper@anchorend
+ }%
+ }%
+ \fi
+}
% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
+% \end{macro}^^A \hy@insteadofrefstepcounter
%
% \begin{macro}{\addparttocentry}
% \changes{v3.08}{2010/11/01}{Neu}^^A
@@ -2460,9 +2741,48 @@
}
% \end{macrocode}
% \end{macro}^^A \addparttocentry
-% \end{macro}^^A \part
%
%
+% \begin{macro}{\part}
+% \changes{v3.18}{2015/05/23}{siehe \cs{scr@dsc@def@style@part@command} und
+% \cs{scr@startpart}}^^A
+% \begin{macro}{\@part}
+% \changes{v3.18}{2015/05/23}{siehe \cs{scr@dsc@def@style@part@command} und
+% \cs{scr@@startpart}}^^A
+% \begin{macro}{\@spart}
+% \changes{v3.18}{2015/05/23}{siehe \cs{scr@dsc@def@style@part@command} und
+% \cs{scr@@startspart}}^^A
+% \begin{macro}{\@endpart}
+% \changes{v3.18}{2015/05/23}{siehe \cs{scr@dsc@def@style@part@command} und
+% \cs{scr@@endpart}}^^A
+% \begin{macro}{\setpartpreamble}
+% \changes{v2.8f}{2001/07/12}{neu}^^A
+% \changes{v2.8p}{2001/09/27}{Verwendung von \cs{use@preamble}}^^A
+% \changes{v3.18}{2015/05/23}{siehe \cs{scr@dsc@def@style@part@command} und
+% \cs{scr@@endpart}}^^A
+% \begin{macro}{\part@u@preamble}
+% \changes{v2.8p}{2001/09/27}{neu (intern)}^^A
+% \changes{v2.8p}{2001/09/27}{Ersatz für \cs{part@preamble}}^^A
+% \changes{v3.12a}{2014/02/14}{flaschen (\cs{part@preamble@u}) Namen
+% korrigiert}^^A
+% \changes{v3.18}{2015/05/23}{siehe \cs{scr@dsc@def@style@part@command} und
+% \cs{scr@@endpart}}^^A
+% \begin{macro}{\part@o@preamble}
+% \changes{v2.8p}{2001/09/27}{neu (intern)}^^A
+% \changes{v3.12a}{2014/02/14}{flaschen Namen (\cs{part@preamble@o})
+% korrigiert}^^A
+% \changes{v3.18}{2015/05/23}{siehe \cs{scr@dsc@def@style@part@command} und
+% \cs{scr@@endpart}}^^A
+% Diese Anweisungen werden indirekt über \cs{DeclareSectionCommand} und
+% \cs{scr@dsc@def@style@part@command} bzw. \cs{setpartpreamble} definiert.
+% \end{macro}^^A \setpartpreamble
+% \end{macro}^^A \part@u@preamble
+% \end{macro}^^A \part@o@preamble
+% \end{macro}^^A \@endpart
+% \end{macro}^^A \@spart
+% \end{macro}^^A \@part
+% \end{macro}^^A \part
+%
% \begin{macro}{\addpart}
% \changes{v2.8c}{2001/06/29}{neu}^^A
% \changes{v2.8d}{2001/07/05}{\cs{partpagestyle} statt \texttt{plain}}^^A
@@ -2471,6 +2791,7 @@
% \changes{v3.13a}{2014/09/11}{Verwendung von \cs{SecDef}}^^A
% \changes{v3.15a}{2015/01/22}{Anpassung an geänderte Abstandsbehandlung bei
% \cs{part} und \cs{@spart}}^^A
+% \changes{v3.18}{2015/05/25}{Komplett neu definiert}^^A
% \begin{macro}{\@addpart}
% \changes{v2.8c}{2001/06/29}{neu (intern)}^^A
% \changes{v2.8l}{2001/08/17}{erst eintragen, dann ausgeben}^^A
@@ -2483,98 +2804,30 @@
% \cs{@mkboth}{}{} aufgerufen.}^^A
% \changes{v3.17}{2015/04/20}{Es wird \cs{addpartmark} verwendet und auch
% nie \cs{@mkboth}{}{} aufgerufen.}^^A
+% \changes{v3.18}{2015/05/25}{Komplett neu definiert}^^A
% \begin{macro}{\@saddpart}
% \changes{v2.8c}{2001/06/29}{neu (intern)}^^A
+% \changes{v3.18}{2015/05/25}{Komplett neu definiert}^^A
% \begin{macrocode}
\newcommand\addpart{%
-%<*article>
- \par
- \partheadstartvskip
- \@afterindentfalse
-%</article>
-%<*report|book>
- \if@openright\cleardoublepage\else\clearpage\fi
- \thispagestyle{\partpagestyle}%
- \if@twocolumn
- \onecolumn
- \@tempswatrue
- \else
- \@tempswafalse
- \fi
- \@tempskipa=\glueexpr\scr@part@beforeskip\relax
- \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
- \partheadstartvskip
- \vbox to\z@{\vss\use@preamble{part@o}\strut\par}%
- \vskip-\baselineskip\nobreak%
-%</report|book>
\SecDef\@addpart\@saddpart
}
\newcommand*{\@addpart}{}
-\def\@addpart[#1]#2{%
- \ifnum \scr@osectarg=\z@
- \@scr@tempswafalse
- \else
- \scr@istest#1=\@nil
- \fi
- \if@scr@tempswa
- \setkeys{KOMAarg.section}{tocentry={#2},head={#2},#1}%
- \else
- \ifcase \scr@osectarg\relax
- \setkeys{KOMAarg.section}{tocentry={#1},head={#1}}%
- \or
- \setkeys{KOMAarg.section}{tocentry={#2},head={#1}}%
- \or
- \setkeys{KOMAarg.section}{tocentry={#1},head={#2}}%
- \or
- \setkeys{KOMAarg.section}{tocentry={#1},head={#1}}%
- \fi
- \fi
-% \end{macrocode}
-% Notlösung, damit \textsf{hyperref} halbwegs damit klar kommt. Das ist aber
-% weit davon entfernt eine echte Lösung zu bringen.
-% \changes{v3.10b}{2012/04/24}{missing \cs{fi} added}^^A
-% \begin{macrocode}
- \csname phantomsection\endcsname
- \ifx\scr@ds@tocentry\@empty\else
- \expandafter\addparttocentry\expandafter{\expandafter}\expandafter{%
- \scr@ds@tocentry}%
- \fi
- \@spart{#2}%
- \expandafter\addpartmark\expandafter{\scr@ds@head}%
+\long\def\@addpart[#1]#2{%
+ \edef\reserved@a{%
+ \unexpanded{%
+ \part[{#1}]{#2}%
+ \c@secnumdepth=
+ }\the\c@secnumdepth\relax
+ }%
+ \c@secnumdepth=\numexpr \partnumdepth-1\relax
+ \reserved@a
}
-% \end{macrocode}
-% Da bereits \cs{@spart} den Kolumnentitel mit \cs{@mkboth} löscht, brauchen
-% wir hier im Gegensatz zu \cs{@saddchap} das nicht auch noch zu erledigen.
-% \begin{macrocode}
-\newcommand*{\@saddpart}{\@spart}
-% \end{macrocode}
-%
-% \begin{macro}{\partmark}
-% \changes{v2.9r}{2004/07/20}{neu (für \textsf{scrpage2})}^^A
-% \begin{macrocode}
-\newcommand*{\partmark}{}
-\let\partmark\@gobble
-% \end{macrocode}
-% \end{macro}^^A \partmark
-
-% \begin{macro}{\addpartmark}
-% \changes{v3.17}{2015/04/20}{neue Anweisung}^^A
-% Analog zu \cs{addchapmark} für \cs{addpart}. Auch dabei gilt, dass
-% \cs{if@mainmatter} hier auch von \textsf{scrreprt} definiert wird. Das ist
-% Absicht und vereinfacht dem einen oder anderen Paket oder Benutzer
-% vielleicht die Arbeit.
-% \begin{macrocode}
-\newcommand*\addpartmark[1]{%
- \begingroup
- \expandafter\let\csname if@mainmatter\expandafter\endcsname
- \csname iffalse\endcsname
- \c@secnumdepth=-2
- \partmark{#1}%
- \endgroup
+\newcommand{\@saddpart}[1]{%
+ \part*{#1}%
+ \addpartmark{}%
}
% \end{macrocode}
-% \end{macro}^^A \addpartmark
-%
% \end{macro}^^A \@saddpart
% \end{macro}^^A \@addpart
% \end{macro}^^A \addpart
@@ -2591,29 +2844,16 @@
% \cs{DeclareSectionCommand} definiert. Dadurch können diverse Einstellungen
% darüber geändert werden. Es kann jedoch derzeit kein neuer Stil zugewiesen
% werden.
-% \begin{macro}{\parttocdepth}
-% \changes{v3.15}{2014/12/22}{neue Anweisung}^^A
-% Die Ebene des Verzeichniseintrags wird tatsächlich verwendet.
-% \begin{macrocode}
-\newcommand*{\parttocdepth}{\m@ne}
-\let\parttocdepth\m@ne
-% \end{macrocode}
-% \end{macro}^^A \parttocdepth
% \begin{macro}{\scr@part@tocindent}
% \changes{v3.15}{2014/12/02}{neue (interne) Anweisung}^^A
+% \changes{v3.18}{2015/06/09}{indirekt über \cs{DeclareSectionCommand}}^^A
% Wird nicht verwendet aber zwecks besserer Kompatibilität mit
% \cs{DeclareSectionCommand} definiert.
-% \begin{macrocode}
-\newcommand*{\scr@part@tocindent}{\z@}
-\let\scr@part@tocindent\z@
-% \end{macrocode}
% \end{macro}^^A \scr@part@tocindent
% \begin{macro}{\scr@part@tocnumwidth}
% \changes{v3.15}{2014/12/02}{neue (interne) Anweisung}^^A
+% \changes{v3.18}{2015/06/09}{indirekt über \cs{DeclareSectionCommand}}^^A
% Die definierte Breite der Nummer für den Eintrag ins Inhaltsverzeichnis.
-% \begin{macrocode}
-\newcommand*{\scr@part@tocnumwidth}{2em}
-% \end{macrocode}
% \end{macro}
% \begin{macrocode}
\newcommand*\l@part[2]{%
@@ -2708,6 +2948,35 @@
% \end{macro}^^A \partname
%
%
+% \begin{macro}{\partmark}
+% \changes{v2.9r}{2004/07/20}{neu (für \textsf{scrpage2})}^^A
+% \changes{v3.18}{2015/05/24}{Voreinstellung von \cs{@gobble} zu
+% \cs{@mkboth{}{}} geändert}
+% \begin{macrocode}
+\newcommand*{\partmark}[1]{\@mkboth{}{}}
+% \end{macrocode}
+% \end{macro}^^A \partmark
+%
+% \begin{macro}{\addpartmark}
+% \changes{v3.17}{2015/04/20}{neue Anweisung}^^A
+% \changes{v3.18}{2015/05/24}{abhängig von \cs{partnumdepth}}^^A
+% Analog zu \cs{addchapmark} für \cs{addpart}. Auch dabei gilt, dass
+% \cs{if@mainmatter} hier auch von \textsf{scrreprt} definiert wird. Das ist
+% Absicht und vereinfacht dem einen oder anderen Paket oder Benutzer
+% vielleicht die Arbeit.
+% \begin{macrocode}
+\newcommand*\addpartmark[1]{%
+ \begingroup
+ \expandafter\let\csname if@mainmatter\expandafter\endcsname
+ \csname iffalse\endcsname
+ \c@secnumdepth=\numexpr \partnumdepth-1\relax
+ \partmark{#1}%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}^^A \addpartmark
+%
+%
% \begin{macro}{\raggedpart}
% \changes{v2.95a}{2006/07/10}{neue Konfigurationsmöglichkeit}^^A
% Die Ausrichtung der Überschrift von \cs{part} kann davon abweichend über
@@ -2728,10 +2997,14 @@
% \changes{v2.8p}{2001/09/23}{neues Element \texttt{partnumber}}^^A
% \begin{macro}{\scr@fnt@partnumber}
% \changes{v2.8p}{2001/09/23}{neues Element \texttt{partnumber}}^^A
+% \begin{KOMAfont}{partprefix}
+% \changes{v3.18}{2015/06/10}{neues Alias-Element \texttt{partprefix}}^^A
% \begin{macrocode}
\newcommand*{\scr@fnt@part}{\size@part}
\newcommand*{\scr@fnt@partnumber}{\size@partnumber}
+\aliaskomafont{partprefix}{partnumber}
% \end{macrocode}
+% \end{KOMAfont}
% \end{macro}
% \end{KOMAfont}
% \end{macro}
@@ -2762,11 +3035,24 @@
% \subsection{Kapitel}
%
% Bei den Klassen \texttt{scrbook} und \texttt{scrreprt} gibt es im
-% Unterschied zu \texttt{scrartcl} auch noch die Kapitelebene.
+% Unterschied zu \texttt{scrartcl} auch noch die Kapitelebene. Für die
+% Definition des Kapitelstils mittels \cs{DeclareSectionCommand} werden neben
+% den Optionen und \cs{scr@dsc@def@style@chapter@command} noch diverse
+% Anweisungen benötigt. Diese sind allesamt von der ursprünglichen Definition
+% für Kapitel abgeleitet. Eine Besonderheit ist dabei, dass \textsf{hyperref}
+% dem neuen Code durch (inkompatible) Umdefinierung von \cs{@schapter} und
+% \cs{@chapter} in die Quere kommt. Das gilt es also zusätzlich zu verhindern
+% und dennoch \cs{hyperref} zu berücksichtigen. Dies gelingt am einfachsten
+% durch einen neuen Hook, den \cs{hyperref} zukünftig gerne selbst passend
+% umdefinieren kann. Wer sonst noch an \cs{@chapter} und \cs{@schaper}
+% herumdoktert und dabei \KOMAScript{} aus dem Tritt bringt, ist selbst
+% schuld.
%
% \begin{option}{chapterprefix}
% \changes{v2.8}{2001/06/15}{neue Option}^^A
% \changes{v2.95c}{2006/08/21}{als \textsf{keyval}-Option}^^A
+% \changes{v3.18}{2015/05/22}{die Option bezieht sich allgemein auf den
+% Gliederungsstil}^^A
% \begin{option}{nochapterprefix}
% \changes{v2.8}{2001/06/15}{neue Option}^^A
% \changes{v2.95c}{2006/08/21}{obsolete Option}^^A
@@ -2784,8 +3070,8 @@
% \begin{macrocode}
%<*class>
%<*book|report>
+%<prepare>\newif\if@chapterprefix
%<*option>
-\newif\if@chapterprefix
\KOMA@key{chapterprefix}[true]{%
\KOMA@set@ifkey{chapterprefix}{@chapterprefix}{#1}%
\ifx\FamilyKeyState\FamilyKeyStateProcessed
@@ -2808,7 +3094,6 @@
% \end{option}
% \end{option}
%
-%
% \begin{option}{appendixprefix}
% \changes{v2.8}{2001/06/15}{neue Option}^^A
% \changes{v2.95c}{2006/08/21}{als \textsf{keyval}-Option}^^A
@@ -2899,9 +3184,7 @@
% verwendet, wenn Option \texttt{chapterprefix} aktiv ist.
%
% Zur Erhöhung der Kompatibilität mit \cs{DeclareSectionCommand} werden
-% zunächst einige Hilfsanweisung definiert und verwendet. Das bedeutet jedoch
-% nicht, dass \cs{chapter} mit \cs{DeclareSectionCommand} den Stil von normalen
-% Gliederungsbefehlen erhalten kann!
+% zunächst einige Hilfsanweisung definiert und verwendet.
% \begin{macro}{\scr@chapter@beforeskip}
% \changes{v3.15}{2014/11/24}{neue (interne) Anweisung}^^A
% \changes{v3.17}{2015/03/25}{umbenannt in
@@ -2953,46 +3236,200 @@
% \end{macro}^^A \chapterheadendvskip
% \end{macro}^^A \chapterheadstartvskip
%
-% \begin{macro}{\chapternumdepth}
-% \changes{v3.12}{2013/12/16}{new read only command}^^A
-% Darf nur gelesen, sollten aber nie umdefiniert werden und gibt die
-% Nummerierungsebene der Gliederungsanweisungen an (nicht zu verwechseln mit
-% der Verzeichnisebene der Gliederungsanweisungen):
+%
+% \begin{macro}{\scr@startchapter}
+% \changes{v3.18}{2015/05/22}{neue Anweisung (für Paketautoren)}
+% Diese Anweisung legt fest, wie der konkrete Aufruf für Überschriften des
+% Stils \texttt{chapter} lautet. Einziges Argument ist dabei der Name der
+% Gliederungsebene, beispielsweise \texttt{chapter}. Alle anderen benötigten
+% Werte ergeben sich aus den Einstellungen für die Gliederungsebene. Beim
+% tatsächlichen Aufruf wird dann daran wie üblich noch optional noch entweder
+% ein Stern oder ein Argument für Kolumnentitel und Inhaltsverzeichniseintrag
+% und der Text der Überschrift angehängt. Diese Anweisung wurde von der
+% ursprünglichen Definition von \cs{chapter} abgeleitet.
% \begin{macrocode}
%<*body>
-\newcommand*{\chapternumdepth}{\z@}
+\newcommand*{\scr@startchapter}[1]{%
+ \if@openright\cleardoublepage\else\clearpage\fi
+ \thispagestyle{\@nameuse{#1pagestyle}}%
+ \global\@topnum\z@
+ \@afterindentfalse
+ \expandafter\SecDef\csname @#1\expandafter\endcsname\csname @s#1\endcsname
+}
% \end{macrocode}
-% \end{macro}^^A \chapternumdepth
-%
%
-% \begin{macro}{\chapter}
-% \changes{v2.8d}{2001/07/05}{\cs{chapterpagestyle} statt
-% \texttt{plain}}^^A
-% \begin{macro}{\@chapter}
+% \begin{macro}{\scr@@startchapter}
+% \changes{v3.18}{2015/05/22}{neue Anweisung (intern)}
+% Diese Anweisung nimmt die Rolle des ursprüngliche \cs{@chapter} ein und
+% erbst damit auch die ganzen noch relevanten ChangeLog-Einträge dieser
+% Anweisung.
+% \begin{macrocode}
+\newcommand*{\scr@@startchapter}{}
+\def\scr@@startchapter#1[#2]#3{%
+% \end{macrocode}
+% \changes{v3.10}{2011/08/30}{Integration der Erweiterung für das optionale
+% Argument der Gliederungsbefehle}^^A
+% Für das erweitere optionale Argument muss hier eine key-value-Auswertung
+% erfolgen, falls das erweitere optionale Argument aktiviert ist:
+% \begin{macrocode}
+ \ifnum \scr@osectarg=\z@
+ \@scr@tempswafalse
+ \else
+ \scr@istest#2=\@nil
+ \fi
+ \if@scr@tempswa
+ \setkeys{KOMAarg.section}{tocentry={#3},head={#3},#2}%
+ \else
+ \ifcase \scr@osectarg\relax
+ \setkeys{KOMAarg.section}{tocentry={#2},head={#2}}%
+ \or
+ \setkeys{KOMAarg.section}{tocentry={#3},head={#2}}%
+ \or
+ \setkeys{KOMAarg.section}{tocentry={#2},head={#3}}%
+ \or
+ \setkeys{KOMAarg.section}{tocentry={#2},head={#2}}%
+ \fi
+ \fi
+% \end{macrocode}
+% Als nächstes muss für nummerierte Überschriften dieser Ebene sowohl der
+% Zähler erhöht also auch ein nummerierter Eintrag ins Inhaltsverzeichnis
+% erstellt werden.
% \changes{v2.8e}{2001/07/10}{\cs{@maybeautodot} wird aufgerufen}^^A
+% \changes{v3.08}{2010/11/01}{Verwendung von \cs{addchaptertocentry}}^^A
+% \changes{v3.18}{2015/05/20}{Verwendung von \cs{add\meta{Name}tocentry}}^^A
+% \changes{v3.18}{2015/05/22}{Verwendung von \meta{Name} statt \cs{@chapapp}
+% in \cs{typeout}}^^A
+% \begin{macrocode}
+ \ifnumbered{#1}{%
+%<book> \if@mainmatter
+ \@tempswatrue
+%<book> \else\@tempswafalse\fi
+ }{\@tempswafalse}%
+ \if@tempswa
+ \refstepcounter{#1}%
+ \expandafter\@maybeautodot\csname the#1\endcsname
+ \typeout{#1 \csname the#1\endcsname.}%
+ \ifx\scr@ds@tocentry\@empty\else
+ \scr@ifundefinedorrelax{add#1tocentry}{%
+ \addtocentrydefault{#1}%
+ }{%
+ \@nameuse{add#1tocentry}%
+ }{\csname the#1\endcsname}{\scr@ds@tocentry}%
+ \fi
+% \end{macrocode}
+% Für alle nicht nummerieten Überschriften dieser Ebene trotzdem die
+% Resetliste des Zählers ausführen und ggf. einen Verzeichniseintrag
+% erstellen.
+% \begin{macrocode}
+ \else
+ \expandafter\ifnum\scr@v@is@lt{3.15}\relax\else
+ \begingroup
+ \let\@elt\@stpelt
+ \csname cl@#1\endcsname
+ \endgroup
+ \fi
+ \typeout{#1 without number}%
+ \ifx\scr@ds@tocentry\@empty\else
+% \end{macrocode}
+% An dieser Stelle muss ggf. der \textsf{hyperref}-Hook für nicht nummerierte
+% Inhaltsverzeichniseinträge ausgeführt werden.
+% \begin{macrocode}
+ \hy@insteadofrefstepcounter{#1}%
+ \scr@ifundefinedorrelax{add#1tocentry}{%
+ \addtocentrydefault{#1}%
+ }{%
+ \@nameuse{add#1tocentry}%
+ }{}{\scr@ds@tocentry}%
+ \fi
+ \fi
+% \end{macrocode}
+% Jetzt kommt der Kolumnentitel an die Reihe.
+% \begin{macrocode}
+ \csname #1mark\expandafter\endcsname\expandafter{\scr@ds@head}%
+% \end{macrocode}
+% Und die Abstände in die andere Verzeichnisse.
% \changes{v2.8g}{2001/07/18}{per \cs{float@addtolists} wird nun
% auch ein vertikaler Abstand in Listen des \texttt{float}-Pakets
% eingebaut}^^A
% \changes{v3.00}{2008/07/01}{jetzt auch Kapiteleinträge in andere
% float-Verzeichnisse mit hyperref}^^A
-% \changes{v3.08}{2010/11/01}{Verwendung von \cs{addchaptertocentry}}^^A
-% \changes{v3.10}{2011/08/30}{Integration der Erweiterung für das optionale
-% Argument der Gliederungsbefehle}^^A
-% \changes{v3.13a}{2014/09/11}{Verwendung von \cs{SecDef}}^^A
-% \begin{macro}{\@makechapterhead}
-% \changes{v2.7b}{2001/01/05}{Kapitel können grundsätzlich mit
-% einer Präambel versehen werden}^^A
-% \changes{v2.8p}{2001/09/25}{es gibt verschiedene Arten von Präambeln}^^A
-% \changes{v3.15}{2014/12/10}{\cs{nobreak} am Ende entfernt}^^A
-% \begin{macro}{\@@makechapterhead}
-% \changes{v2.8p}{2001/09/25}{neu (intern)}^^A
-% \changes{v2.8q}{2002/04/18}{\cs{raggedsection} wird bei Option
-% \texttt{chapterprefix} auch auf den Präfix angewendet}^^A
-% \changes{v2.9p}{2003/06/28}{\cs{parfillskip} auf \cs{fill} gesetzt}^^A
-% Der Gliederungsfehl \cs{chapter}, der nur in den Klassen
-% \textsf{scrbook} und \textsf{scrreprt} vorhanden ist, wird wie in
-% den Standardklassen mit Hilfe mehrere Hilfsmakros definiert.
-% \begin{macro}{\if@at@twocolumn}
+% \begin{macrocode}
+ \ifdim \@chapterlistsgap>\z@
+ \doforeachtocfile{%
+ \iftocfeature{\@currext}{chapteratlist}{%
+ \addtocontents{\@currext}{\protect\addvspace{\@chapterlistsgap}}%
+ }{}%
+ }%
+ \@ifundefined{float@addtolists}{}{%
+ \scr@float@addtolists@warning
+ \float@addtolists{\protect\addvspace{\@chapterlistsgap}}%
+ }%
+ \fi
+% \end{macrocode}
+% Jetzt kommt die eigentliche Überschrift. An dieser Stelle wird ab
+% Version~3.18 nicht mehr stur \cs{@makecshapterhead} verwendet, sondern eine
+% Anweisung, die vom Namen der Gliederungsüberschrift abhängig ist.
+% \changes{v3.18}{2015/05/22}{\cs{@makechapterhead} durch
+% \cs{@make\meta{Name}head} ersetzt}^^A
+% \begin{macrocode}
+ \if@twocolumn
+ \if@at@twocolumn
+ \@nameuse{@make#1head}{#3}%
+ \else
+ \@topnewpage[\@nameuse{@make#1head}{#3}]%
+ \fi
+ \else
+ \@nameuse{@make#1head}{#3}%
+ \fi
+% \end{macrocode}
+% Und das Ganze endet schließlich mit:
+% \changes{v3.18}{2015/05/21}{\cs{@afterheading} in jedem Fall}^^A
+% \begin{macrocode}
+ \@afterheading
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@@startchapter
+%
+% \begin{macro}{\scr@@startschapter}
+% \changes{v3.18}{2015/05/22}{neue Anweisung (intern)}
+% Diese Anweisung nimmt die Rolle des ursprüngliche \cs{@schapter} ein sie ist
+% sehr viel einfacher gestrickt als \cs{scr@@startchapter}.
+% \begin{macrocode}
+\newcommand*{\scr@@startschapter}[2]{%
+% \end{macrocode}
+% Für Leute, die unbedingt nach der Sternversion noch ein \cs{addcontentsline}
+% anfügen wollen, muss hier ebenfalls der \textsf{hyperref}-Hook ausgeführt
+% werden. Allerdings passiert das hier entsprechend dem Vorgehen von
+% \textsf{hyperref} selbst in einer Gruppe, in der zusätzlich \cs{@mkboth} zu
+% \cs{@gobbletwo} gemacht wird, auch wenn ich absolut nicht versehe, was das
+% soll.
+% \begin{macrocode}
+ \begingroup
+ \let\@mkboth\@gobbletwo
+ \hy@insteadofrefstepcounter{#1}%
+ \endgroup
+% \end{macrocode}
+% Dann wird die eigentliche Überschrift ausgegeben.
+% \begin{macrocode}
+ \if@twocolumn
+ \if@at@twocolumn
+ \@nameuse{@makes#1head}{#2}%
+ \else
+ \@topnewpage[\@nameuse{@makes#1head}{#2}]%
+ \fi
+ \else
+ \@nameuse{@makes#1head}{#2}%
+ \fi
+% \end{macrocode}
+% Und das Ganze endet schließlich mit:
+% \changes{v3.18}{2015/05/21}{\cs{@afterheading} in jedem Fall}^^A
+% \begin{macrocode}
+ \@afterheading
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@@startschapter
+%
+%% \begin{macro}{\if@at@twocolumn}
% \changes{v2.7b}{2001/01/05}{neu (intern)}^^A
% \begin{macro}{\scr@topnewpage}
% \changes{v2.7b}{2001/01/05}{neu (intern)}^^A
@@ -3029,29 +3466,171 @@
% \end{macro}^^A \@topnewpage
% \end{macro}^^A \scr@topnewpage
% \end{macro}^^A \if@at@twocolumn
+%
+% \begin{macro}{\scr@makechapterhead}
+% \changes{v3.18}{2015/05/22}{neue Anweisung (intern)}
+% Diese Anweisung nimmt die Rolle des ursprüngliche \cs{@makechapterhead}
+% ein. Mit dem neuen Mechanismus könnte man auf diesen zusätzlichen Schritt
+% verzichten. Aus Gründen der Kompatibilität wurde er aber übernommen. Daher
+% übernimmt sie auch die ChangeLog-Einträge der alten Anweisung.
+% \changes{v2.7b}{2001/01/05}{Kapitel können grundsätzlich mit einer
+% Präambel versehen werden}^^A
+% \changes{v2.8p}{2001/09/25}{es gibt verschiedene Arten von Präambeln}^^A
+% \changes{v3.15}{2014/12/10}{\cs{nobreak} am Ende entfernt}^^A
+% \begin{macrocode}
+\newcommand*{\scr@makechapterhead}[2]{%
+ \use@chapter@o@preamble{#1}%
+ \@nameuse{@@make#1head}{#2}%
+ \use@preamble{#1@u}%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@makechapterhead
+%
+% \begin{macro}{\scr@makeschapterhead}
+% \changes{v3.18}{2015/05/22}{neue Anweisung (intern)}
+% Diese Anweisung nimmt die Rolle des ursprüngliche \cs{@makeschapterhead}
+% ein. Mit dem neuen Mechanismus könnte man auf diesen zusätzlichen Schritt
+% verzichten. Aus Gründen der Kompatibilität wurde er aber übernommen. Daher
+% übernimmt sie auch die ChangeLog-Einträge der alten Anweisung.
+% \begin{macrocode}
+\newcommand*{\scr@makeschapterhead}[2]{%
+ \use@chapter@o@preamble{#1}%
+ \@nameuse{@@makes#1head}{#2}%
+ \use@preamble{#1@u}%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@makeschapterhead
+%
+% \begin{macro}{\scr@@makechapterhead}
+% \changes{v3.18}{2015/05/22}{neue Anweisung (intern)}
+% Diese Anweisung nimmt die Rolle des ursprüngliche \cs{@@makechapterhead}
+% ein. Daher übernimmt sie auch die ChangeLog-Einträge der alten Anweisung.
+% \changes{v2.8q}{2002/04/18}{\cs{raggedsection} wird bei Option
+% \texttt{chapterprefix} auch auf den Präfix angewendet}^^A
+% \changes{v2.9p}{2003/06/28}{\cs{parfillskip} auf \cs{fill} gesetzt}^^A
+% \changes{v2.96a}{2006/12/02}{Abstand nach der Präfixzeile nur, wenn eines
+% Präfixzeile ausgegeben wurde}^^A
+% \changes{v2.97b}{2007/03/09}{\cs{endgraf} korrigiert}^^A
+% \changes{v3.15}{2014/11/20}{Generalumbau}^^A
+% \changes{v3.15}{2014/12/09}{\cs{raggedchapter} ersetzt
+% \cs{raggedsection}}^^A
+% \changes{v3.17}{2015/04/03}{Verwendung von \cs{usefontofkomafont} für die
+% initiale Fontumstellung}^^A
+% \begin{macrocode}
+\newcommand*{\scr@@makechapterhead}[2]{%
+% \end{macrocode}
+% Der Absolutwert des Abstandes davor wird eingefügt.
+% \begin{macrocode}
+ \@tempskipa=\glueexpr \csname scr@#1@beforeskip\endcsname\relax\relax
+ \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
+ \chapterheadstartvskip
+% \end{macrocode}
+% Dann die eigentliche Überschrift innerhalb einer Gruppe.
+% \begin{macrocode}
+ {%
+ \setlength{\parindent}{\z@}\setlength{\parfillskip}{\fill}%
+ \normalfont\sectfont\nobreak\nobreak
+ \usefontofkomafont{#1}%
+%<book> \if@mainmatter
+ \def\IfUseNumber{\ifnumbered{#1}}%
+%<book> \else\let\IfUseNumber\@secondoftwo\fi
+ \if@chapterprefix
+ \raggedchapter
+ \let\IfUsePrefixLine\@firstoftwo
+ \let\@tempa\@firstofone
+ \else
+ \let\IfUsePrefixLine\@secondoftwo
+ \let\@tempa\@hangfrom
+ \fi
+ \@tempa{%
+ \IfUseNumber{%
+ \usekomafont{#1}{%
+ \IfUsePrefixLine{%
+ {\usekomafont{#1prefix}{%
+ \csname #1format\endcsname
+ \setlength{\@tempskipa}{%
+ \csname scr@#1@innerskip\endcsname
+ }%
+ \chapterheadmidvskip
+ }}%
+ }{%
+ \csname #1format\endcsname
+ }%
+ }%
+ }{}%
+ }%
+ {%
+ \IfUsePrefixLine{}{\raggedchapter}%
+ \interlinepenalty \@M
+ \usekomafont{#1}{#2}\par
+ }%
+ }%
+ \nobreak\par\nobreak
+% \end{macrocode}
+% Zum Schluss der Absolutwert des Abstandes dahinter.
+% \begin{macrocode}
+ \@tempskipa=\glueexpr \csname scr@#1@afterskip\endcsname\relax\relax
+ \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
+ \chapterheadendvskip
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@@makechapterhead
+%
+% \begin{macro}{\scr@@makeschapterhead}
+% \changes{v3.18}{2015/05/22}{neue Anweisung (intern)}
+% Diese Anweisung nimmt die Rolle des ursprüngliche \cs{@@makechapterhead}
+% ein. Sie ist um einiges einfacher als \cs{scr@@makechapterhead} orientiert
+% sich aber prinzipiell daran.
+% \changes{v2.9p}{2003/06/28}{\cs{parfillskip} auf \cs{fill} gesetzt}^^A
+% \changes{v2.9q}{2004/03/24}{Klammerung an \cs{@@makechapterhead}^^A
+% angepasst}^^A
+% \changes{v3.15}{2014/12/09}{\cs{raggedchapter} ersetzt
+% \cs{raggedsection}}^^A
+% \begin{macrocode}
+\newcommand*{\scr@@makeschapterhead}[2]{%
+ \@tempskipa=\glueexpr \csname scr@#1@beforeskip\endcsname\relax\relax
+ \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
+ \chapterheadstartvskip
+ {%
+ \setlength{\parindent}{\z@}\setlength{\parfillskip}{\fill}%
+ \normalfont\sectfont\nobreak\nobreak\usekomafont{#1}{}%
+ \raggedchapter \interlinepenalty \@M \usekomafont{#1}{#2}\par
+ }%
+ \nobreak\par\nobreak
+ \@tempskipa=\glueexpr \csname scr@#1@afterskip\endcsname\relax
+ \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
+ \chapterheadendvskip
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@@makeschapterhead
+%
% \begin{macro}{\use@chapter@o@preamble}
% \changes{v3.15}{2014/12/08}{Anpassung an geänderte Abstandsbehandlung}^^A
% \changes{v3.15a}{2015/02/02}{Korrektur, zur Verhinderung falscher
% \texttt{overfull \cs{vbox}} Meldungen}^^A
+% \changes{v3.18}{2015/05/20}{Verwendung befehlsabhängiger Abstände und
+% Warnungen}^^A
+% \changes{v3.18}{2015/05/22}{Bekommt ein Argument und setzt die Prämabel
+% der Anweisung nicht des Stils}^^A
% Das Makro wird benötigt, weil das Setzen der oberen Präambel etwas
% mehr Aufwand bedeutet. Die Anweisung spart Platz, da sie zweimal
% verwendet wird.
% \begin{macrocode}
-\newcommand*{\use@chapter@o@preamble}{%
+\newcommand*{\use@chapter@o@preamble}[1]{%
{%
\settoheight{\@tempdima}{%
- \@tempskipa=\glueexpr \scr@chapter@beforeskip\relax
+ \@tempskipa=\glueexpr \csname scr@#1@beforeskip\endcsname\relax\relax
\ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
\vbox{\chapterheadstartvskip}%
}%
\settodepth{\@tempdimb}{%
- \@tempskipa=\glueexpr \scr@chapter@beforeskip\relax
+ \@tempskipa=\glueexpr \csname scr@#1@beforeskip\endcsname\relax\relax
\ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
\vbox{\chapterheadstartvskip}%
}%
\addtolength{\@tempdima}{\@tempdimb}%
\setbox\z@\vbox{%
- \use@preamble{chapter@o}%
+ \use@preamble{#1@o}%
}%
\setlength{\@tempdimb}{\ht0}%
\addtolength{\@tempdimb}{\dp0}%
@@ -3067,21 +3646,19 @@
\addtolength{\@tempdimb}{-\@tempdima}%
\ifdim\@tempdimb<\vfuzz
\ClassInfo{\KOMAClassName}{%
- preamble before chapter is \the\@tempdimb\space too
- high.\MessageBreak
+ preamble before #1 is \the\@tempdimb\space to high.\MessageBreak
Tolerated without warning because of\MessageBreak
\string\vfuzz\space = \the\vfuzz\space >= \the\@tempdimb
}%
\else
\ClassWarning{\KOMAClassName}{%
- preamble before chapter is \the\@tempdimb\space too
- high.\MessageBreak
+ preamble before #1 is \the\@tempdimb\space to high.\MessageBreak
To avoid the overfull \string\vbox\space you may
- redefine\MessageBreak
- \string\chapterheadstartvskip\space at the preamble of
- your\MessageBreak
- document. You may also change
- \string\setchapterpreamble\MessageBreak
+ change\MessageBreak
+ the `beforeskip' value using
+ \string\RedeclareSectionCommand\MessageBreak
+ at the preamble of your document.\MessageBreak
+ You may also change \string\setchapterpreamble\MessageBreak
before the command, which generates the message
about\MessageBreak
an overfull \string\vbox
@@ -3092,174 +3669,8 @@
}
% \end{macrocode}
% \end{macro}^^A \use@chapter@o@preamble
-% Zurück zur Kapiteldefinition:
-% \begin{macrocode}
-\newcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi
- \thispagestyle{\chapterpagestyle}%
- \global\@topnum\z@
- \@afterindentfalse
- \SecDef\@chapter\@schapter
-}
-% \end{macrocode}
-% \changes{v3.06}{2010/06/02}{einschalten des \texttt{tocbasic}-Features
-% \texttt{chapteratlist} in die Datei \texttt{scrkliof.dtx} verschoben}^^A
-% Die Variante ohne Stern:
-% \begin{macrocode}
-\newcommand*{\@chapter}{}
-\def\@chapter[#1]#2{%
- \ifnum \scr@osectarg=\z@
- \@scr@tempswafalse
- \else
- \scr@istest#1=\@nil
- \fi
- \if@scr@tempswa
- \setkeys{KOMAarg.section}{tocentry={#2},head={#2},#1}%
- \else
- \ifcase \scr@osectarg\relax
- \setkeys{KOMAarg.section}{tocentry={#1},head={#1}}%
- \or
- \setkeys{KOMAarg.section}{tocentry={#2},head={#1}}%
- \or
- \setkeys{KOMAarg.section}{tocentry={#1},head={#2}}%
- \or
- \setkeys{KOMAarg.section}{tocentry={#1},head={#1}}%
- \fi
- \fi
- \ifnumbered{chapter}{%
-%<book> \if@mainmatter
- \refstepcounter{chapter}%
- \@maybeautodot\thechapter
- \typeout{\@chapapp\space\thechapter.}%
- \ifx\scr@ds@tocentry\@empty\else
- \addchaptertocentry{\thechapter}{\scr@ds@tocentry}%
- \fi
-%<*book>
- \else
-% \end{macrocode}
-% \changes{v3.15}{2014/11/20}{Resetliste des Kapitelzählers ausführen}^^A
-% \begin{macrocode}
- \expandafter\ifnum\scr@v@is@lt{3.15}\relax\else
- \begingroup
- \let\@elt\@stpelt
- \csname cl@chapter\endcsname
- \endgroup
- \fi
- \ifx\scr@ds@tocentry\@empty\else
- \addchaptertocentry{}{\scr@ds@tocentry}%
- \fi
- \fi
-%</book>
- }{%
- \ifx\scr@ds@tocentry\@empty\else
- \addchaptertocentry{}{\scr@ds@tocentry}%
- \fi
- }%
- \expandafter\chaptermark\expandafter{\scr@ds@head}%
- \ifdim \@chapterlistsgap>\z@
- \doforeachtocfile{%
- \iftocfeature{\@currext}{chapteratlist}{%
- \addtocontents{\@currext}{\protect\addvspace{\@chapterlistsgap}}%
- }{}%
- }%
- \@ifundefined{float@addtolists}{}{%
- \scr@float@addtolists@warning
- \float@addtolists{\protect\addvspace{\@chapterlistsgap}}%
- }%
- \fi
- \if@twocolumn
- \if@at@twocolumn
- \@makechapterhead{#2}%
- \else
- \@topnewpage[\@makechapterhead{#2}]%
- \fi
- \else
- \@makechapterhead{#2}%
- \@afterheading
- \fi
-}
-\newcommand*{\@makechapterhead}[1]{%
- \use@chapter@o@preamble
- \@@makechapterhead{#1}%
- \use@preamble{chapter@u}%
-}
-% \end{macrocode}
-% \changes{v2.96a}{2006/12/02}{Abstand nach der Präfixzeile nur, wenn eines
-% Präfixzeile ausgegeben wurde}^^A
-% \changes{v2.97b}{2007/03/09}{\cs{endgraf} korrigiert}^^A
-% \changes{v3.15}{2014/11/20}{Generalumbau}^^A
-% \changes{v3.15}{2014/12/09}{\cs{raggedchapter} ersetzt
-% \cs{raggedsection}}^^A
-% \changes{v3.17}{2015/04/03}{Verwendung von \cs{usefontofkomafont} für die
-% initiale Fontumstellung}^^A
-% \begin{macrocode}
-\newcommand*{\@@makechapterhead}[1]{%
- \@tempskipa=\glueexpr \scr@chapter@beforeskip\relax
- \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
- \chapterheadstartvskip
- {%
- \setlength{\parindent}{\z@}\setlength{\parfillskip}{\fill}%
- \normalfont\sectfont\nobreak\nobreak\usefontofkomafont{chapter}%
-%<book> \if@mainmatter
- \def\IfUseNumber{\ifnumbered{chapter}}%
-%<book> \else\let\IfUseNumber\@secondoftwo\fi
- \if@chapterprefix
- \raggedchapter
- \let\IfUsePrefixLine\@firstoftwo
- \let\@tempa\@firstofone
- \else
- \let\IfUsePrefixLine\@secondoftwo
- \let\@tempa\@hangfrom
- \fi
- \@tempa{%
- \IfUseNumber{%
- \usekomafont{chapter}{%
- \IfUsePrefixLine{%
- {\usekomafont{chapterprefix}{%
- \chapterformat
- \setlength{\@tempskipa}{\scr@chapter@innerskip}%
- \chapterheadmidvskip
- }}%
- }{%
- \chapterformat
- }%
- }%
- }{}%
- }%
- {%
- \IfUsePrefixLine{}{\raggedchapter}%
- \interlinepenalty \@M
- \usekomafont{chapter}{#1}\par
- }%
- }%
- \nobreak\par\nobreak
- \@tempskipa=\glueexpr \scr@chapter@afterskip\relax
- \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
- \chapterheadendvskip
-}
-% \end{macrocode}
-% \end{macro}^^A \@@makechapterhead
-% \end{macro}^^A \@makechapterhead
-% \end{macro}^^A \@chapter
-% \begin{macro}{\setchapterpreamble}
-% \changes{v2.7b}{2001/01/05}{neu}^^A
-% \changes{v2.8p}{2001/09/25}{Verwendung von \cs{set@preamble}}^^A
-% \begin{macro}{\chapter@u@preamble}
-% \changes{v2.8p}{2001/09/25}{neu (intern)}^^A
-% \changes{v2.8p}{2001/09/25}{Ersatz für \cs{chapter@preamble}}^^A
-% \begin{macro}{\chapter@o@preamble}
-% \changes{v2.8p}{2001/09/25}{neu (intern)}^^A
-% Diese Makros werden benötigt, um die Kapitel-Präambel zu setzen
-% bzw. zu speichern.
-% \begin{macrocode}
-\newcommand*{\setchapterpreamble}{\set@preamble{chapter}}
-\newcommand*{\chapter@u@preamble}{}
-\let\chapter@u@preamble\relax
-\newcommand*{\chapter@o@preamble}{}
-\let\chapter@o@preamble\relax
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
+% \end{macro}^^A \scr@startchapter
+%
% \begin{macro}{\addchaptertocentry}
% \changes{v3.08}{2010/11/01}{Neu}^^A
% \changes{v3.12}{2013/09/24}{Behandlung von \cs{if@chaptertolists} hier}^^A
@@ -3285,57 +3696,49 @@
}
% \end{macrocode}
% \end{macro}^^A \addchaptertocentry
+%
+% \begin{macro}{\@chapter}
+% \changes{v3.18}{2015/05/22}{siehe \cs{scr@dsc@def@style@chapter@command}
+% und \cs{scr@@startchapter}}^^A
+% \begin{macro}{\@makechapterhead}
+% \changes{v3.18}{2015/05/22}{siehe \cs{scr@dsc@def@style@chapter@command}
+% und \cs{scr@makechapterhead}}^^A
+% \begin{macro}{\@@makechapterhead}
+% \changes{v3.18}{2015/05/22}{siehe \cs{scr@dsc@def@style@chapter@command}
+% und \cs{scr@@makechapterhead}}^^A
% \begin{macro}{\@schapter}
+% \changes{v3.18}{2015/05/22}{siehe \cs{scr@dsc@def@style@chapter@command}
+% und \cs{scr@@startschapter}}^^A
% \begin{macro}{\@makeschapterhead}
-% \changes{v2.7b}{2001/01/05}{Kapitel können grundsätzlich mit
-% einer Präambel versehen werden}^^A
-% \changes{v3.15}{2014/12/10}{\cs{nobreak} am Ende entfernt}^^A
+% \changes{v3.18}{2015/05/22}{siehe \cs{scr@dsc@def@style@chapter@command}
+% und \cs{scr@makeschapterhead}}^^A
% \begin{macro}{\@@makeschapterhead}
+% \changes{v3.18}{2015/05/22}{siehe \cs{scr@dsc@def@style@chapter@command}
+% und \cs{scr@@makeschapterhead}}^^A
+% \begin{macro}{\setchapterpreamble}
+% \changes{v2.7b}{2001/01/05}{neu}^^A
+% \changes{v3.18}{2015/05/22}{siehe \cs{scr@dsc@def@style@chapter@command}}^^A
+% \begin{macro}{\chapter@u@preamble}
% \changes{v2.8p}{2001/09/25}{neu (intern)}^^A
-% \changes{v2.9p}{2003/06/28}{\cs{parfillskip} auf \cs{fill} gesetzt}^^A
-% \changes{v2.9q}{2004/03/24}{Klammerung an \cs{@@makechapterhead}^^A
-% angepasst}^^A
-% \changes{v3.15}{2014/12/09}{\cs{raggedchapter} ersetzt
-% \cs{raggedsection}}^^A
-% Die Sternvariante, die um Einiges einfacher ausfällt.
-% \begin{macrocode}
-\newcommand*{\@schapter}[1]{%
- \if@twocolumn
- \if@at@twocolumn
- \@makeschapterhead{#1}%
- \else
- \@topnewpage[\@makeschapterhead{#1}]%
- \fi
- \else
- \@makeschapterhead{#1}%
- \@afterheading
- \fi
-}
-\newcommand*{\@@makeschapterhead}[1]{%
- \@tempskipa=\glueexpr \scr@chapter@beforeskip\relax
- \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
- \chapterheadstartvskip
- {%
- \setlength{\parindent}{\z@}\setlength{\parfillskip}{\fill}%
- \normalfont\sectfont\nobreak\nobreak\usekomafont{chapter}{}%
- \raggedchapter \interlinepenalty \@M \usekomafont{chapter}{#1}\par
- }%
- \nobreak\par\nobreak
- \@tempskipa=\glueexpr \scr@chapter@afterskip\relax
- \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
- \chapterheadendvskip%
-}
-\newcommand*{\@makeschapterhead}[1]{%
- \use@chapter@o@preamble
- \@@makeschapterhead{#1}%
- \use@preamble{chapter@u}%
-}
-% \end{macrocode}
+% \changes{v3.18}{2015/05/22}{siehe \cs{scr@dsc@def@style@chapter@command}}^^A
+% \begin{macro}{\chapter@o@preamble}
+% \changes{v2.8p}{2001/09/25}{neu (intern)}^^A
+% \changes{v3.18}{2015/05/22}{siehe \cs{scr@dsc@def@style@chapter@command}}^^A
+% All diese Anweisungen wurden in früheren Versionen von \KOMAScript{}
+% explizit definiert. Nun werden sie nur noch indirekt über
+% \cs{scr@dsc@def@style@chapter@command} definiert und verwenden dabei andere
+% interne Anweisungen als früher. Deshalb funktionieren ggf. das Patchen mit
+% \textsf{etoolbox}, \textsf{xpatch} und ähnlichen Paketen nicht mehr. Das ist
+% der Preis für die neuen Möglichkeiten.
+% \end{macro}^^A \chapter@o@preamble
+% \end{macro}^^A \chapter@u@preamble
+% \end{macro}^^A \setchapterpreamble
% \end{macro}^^A \@@makeschapterhead
% \end{macro}^^A \@makeschapterhead
% \end{macro}^^A \@schapter
-% \end{macro}^^A \chapter
-%
+% \end{macro}^^A \@@makechapterhead
+% \end{macro}^^A \@makechapterhead
+% \end{macro}^^A \@chapter
%
% \begin{macro}{\addchap}
% \changes{v2.0e}{1994/08/10}{\cs{sectdef} durch \cs{secdef} ersetzt}^^A
@@ -3361,6 +3764,7 @@
% \changes{v3.10}{2011/08/30}{Integration der Erweiterung für das optionale
% Argument der Gliederungsbefehle}^^A
% \changes{v3.13a}{2014/09/11}{Verwendung von \cs{SecDef}}^^A
+% \changes{v3.18}{2015/05/22}{Komplett neu definiert}^^A
% \KOMAScript{} bietet in \textsf{scrbook} und \textsf{scrreprt} den
% zusätzlichen Gliederungsbefehl \cs{addchap}. Es handelt sich dabei
% um einen mit \cs{chapter*} vergleichbaren Befehl, bei dem jedoch der
@@ -3407,56 +3811,33 @@
% \changes{v3.12}{2013/02/26}{Verwendung von \cs{addchapmark}}^^A
% \changes{v3.17}{2015/04/20}{\cs{scr@ds@head} in \cs{addchapmark}
% expandieren}^^A
+% \changes{v3.18}{2015/05/22}{Komplett neu definiert}^^A
% \begin{macro}{\@saddchap}
% \changes{v3.12}{2013/02/26}{Verwendung von \cs{addchapmark}}^^A
+% \changes{v3.18}{2015/05/22}{Komplett neu definiert}^^A
+% Seit \KOMAScript~3.18 wurden die Definitionen noch einmal deutlich
+% vereinfacht. Deshalb wird nun auch nur noch für \cs{addchap*} die neue
+% Anweisung \cs{addchapmark} benötigt. Bei \cs{addchap} geht es hingegen
+% einfach über \cs{chaptermark} innerhalb von \cs{chapter}.
% \begin{macrocode}
\newcommand\addchap{%
- \if@openright\cleardoublepage\else\clearpage\fi
- \thispagestyle{\chapterpagestyle}%
- \global\@topnum\z@
- \@afterindentfalse
- \SecDef\@addchap\@saddchap%
+ \SecDef\@addchap\@saddchap
}%
\newcommand*{\@addchap}{}%
-\def\@addchap[#1]#2{%
- \ifnum \scr@osectarg=\z@
- \@scr@tempswafalse
- \else
- \scr@istest#1=\@nil
- \fi
- \if@scr@tempswa
- \setkeys{KOMAarg.section}{tocentry={#2},head={#2},#1}%
- \else
- \ifcase \scr@osectarg\relax
- \setkeys{KOMAarg.section}{tocentry={#1},head={#1}}%
- \or
- \setkeys{KOMAarg.section}{tocentry={#2},head={#1}}%
- \or
- \setkeys{KOMAarg.section}{tocentry={#1},head={#2}}%
- \or
- \setkeys{KOMAarg.section}{tocentry={#1},head={#1}}%
- \fi
- \fi
- \@schapter{#2}%
- \ifx\scr@ds@tocentry\@empty\else
- \addchaptertocentry{}{\scr@ds@tocentry}%
- \fi
- \ifnum \@nameuse{scr@v@2.96}<\scr@compatibility\relax
- \ifdim \@chapterlistsgap>\z@
- \doforeachtocfile{%
- \iftocfeature{\@currext}{chapteratlist}{%
- \addtocontents{\@currext}{\protect\addvspace{\@chapterlistsgap}}%
- }{}%
- }%
- \@ifundefined{float@addtolists}{}{%
- \scr@float@addtolists@warning
- \float@addtolists{\protect\addvspace{\@chapterlistsgap}}%
- }%
- \fi
- \fi
- \expandafter\addchapmark\expandafter{\scr@ds@head}%
+\long\def\@addchap[#1]#2{%
+ \edef\reserved@a{%
+ \unexpanded{%
+ \chapter[{#1}]{#2}%
+ \c@secnumdepth=
+ }\the\c@secnumdepth\relax
+ }%
+ \c@secnumdepth=\numexpr \chapternumdepth-1\relax
+ \reserved@a
+}
+\newcommand{\@saddchap}[1]{%
+ \chapter*{#1}%
+ \addchapmark{}%
}%
-\newcommand*{\@saddchap}[1]{\@schapter{#1}\addchapmark{}}%
% \end{macrocode}
% In \texttt{hyperref} bis Version 6.71a ist ein dicker Bug. In
% verschiedenen \texttt{def}-Dateien wird dort das \emph{interne}
@@ -3483,9 +3864,9 @@
6.71b}}}
%</book>
% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
+% \end{macro}^^A \@saddchap
+% \end{macro}^^A \@addchap
+% \end{macro}^^A \addchap
%
%
% \begin{macro}{\l@chapter}
@@ -3509,28 +3890,15 @@
% verwendet. Damit kann man dann zumindest einige Änderungen mit
% \cs{DeclareSectionCommand} vornehmen, allerdings noch keine komplette
% Neugestaltung des Eintrags erreichen.
-% \begin{macro}{\chaptertocdepth}
-% \changes{v3.15}{2014/12/22}{neue Anweisung}^^A
-% Die Ebene des Verzeichniseintrags wird tatsächlich verwendet.
-% \begin{macrocode}
-\newcommand*{\chaptertocdepth}{\z@}
-\let\chaptertocdepth\z@
-% \end{macrocode}
-% \end{macro}^^A \chaptertocdepth
% \begin{macro}{\scr@chapter@tocindent}
% \changes{v3.15}{2014/12/02}{neue (interne) Anweisung}^^A
+% \changes{v3.18}{2015/05/20}{indirekt über \cs{DeclareSectionCommand}}^^A
% Der Einzug des Eintrags wird nicht verwendet.
-% \begin{macrocode}
-\newcommand*{\scr@chapter@tocindent}{\z@}
-\let\scr@chapter@tocindent\z@
-% \end{macrocode}
% \end{macro}^^A \scr@chapter@tocindent
% \begin{macro}{\scr@chapter@tocnumwidth}
% \changes{v3.15}{2014/12/02}{neue (interne) Anweisung}^^A
+% \changes{v3.18}{2015/05/20}{indirekt über \cs{DeclareSectionCommand}}^^A
% Die Breite der Nummer des Eintrags wird tatsächlich verwendet.
-% \begin{macrocode}
-\newcommand*{\scr@chapter@tocnumwidth}{1.5em}
-% \end{macrocode}
% \end{macro}
% \begin{option}{chapterentrydots}
% \changes{v3.15}{2014/12/10}{Neu}^^A
@@ -3609,7 +3977,7 @@
% \begin{macrocode}
\newcommand*{\l@chapteratlist}{\l@chapter}
% \end{macrocode}
-% \end{macro}
+% \end{macro}^^A \l@chapteratlist
%
% \begin{Counter}{chapter}
% \begin{macro}{\thechapter}
@@ -3675,6 +4043,9 @@
% \begin{macro}{\chapappifchapterprefix}
% \changes{v2.8o}{2001/09/19}{neu}^^A
% \changes{v2.8o}{2001/09/19}{Argument ist nicht optional}^^A
+% \changes{v3.18}{2015/06/09}{verwendet \cs{IfChapterUsePrefixLine}}^^A
+% \begin{macro}{\IfChapterUsesPrefixLine}
+% \changes{v3.18}{2015/06/09}{neu (intern)}
% \begin{macro}{\chapapp}
% \changes{v2.8}{2001/06/15}{neu}^^A
% Das in \cs{chapterformat} verwendete Makro
@@ -3697,10 +4068,13 @@
obligatory instead of an optional argument. Use that\MessageBreak
new command%
}%
- \if@chapterprefix\chapapp#1\fi
+ \chapappifchapterprefix{#1}%
}
\newcommand*{\chapappifchapterprefix}[1]{%
- \if@chapterprefix\chapapp#1\fi
+ \IfChapterUsesPrefixLine{\chapapp#1}{}%
+}
+\newcommand*{\IfChapterUsesPrefixLine}{%
+ \if@chapterprefix\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
}
\newcommand*{\chapapp}{\@chapapp}
% \end{macrocode}
@@ -3710,8 +4084,9 @@
% \begin{macrocode}
\newcommand*\@chapapp{\chaptername}
% \end{macrocode}
-% \end{macro}^^A \@chapp
+% \end{macro}^^A \@chapapp
% \end{macro}^^A \chapapp
+% \end{macro}^^A \IfChapterUsePrefixLine
% \end{macro}^^A \chapappifchapterprefix
% \end{macro}^^A \chapappifprefix
%
@@ -3739,7 +4114,7 @@
\begingroup
\expandafter\let\csname if@mainmatter\expandafter\endcsname
\csname iffalse\endcsname
- \c@secnumdepth=\m@ne
+ \c@secnumdepth=\numexpr \chapternumdepth-1\relax
\chaptermark{#1}%
\endgroup
}
@@ -3946,6 +4321,7 @@
% \changes{v3.10}{2011/08/30}{Integration der Erweiterung für das optionale
% Argument der Gliederungsbefehle}^^A
% \changes{v3.12}{2013/02/26}{Verwendung von \cs{addsecmark}}^^A
+% \changes{v3.18}{2015/05/22}{komplett neu definiert}^^A
% \begin{macro}{\@saddsec}
% \changes{v3.12}{2013/02/26}{Verwendung von \cs{addsecmark}}^^A
% \changes{v3.17}{2015/04/20}{\cs{scr@ds@head} in \cs{addsecmark}
@@ -3955,35 +4331,27 @@
% \cs{section*} vergleichbaren Befehl, bei dem jedoch der
% Kolumnentitel korrigiert wird und ein Eintrag ins Inhaltsverzeichnis
% erfolgt (nicht in der Stern-Variante).
+%
+% Mit Version~3.18 wurde \cs{addsec} deutlich vereinfacht. Seither verwendet
+% nur noch \cs{@saddsec} die Anweiung \cs{addsecmark}, während \cs{@addsec}
+% direkt über das \cs{sectionmark} von \cs{section} arbeitet.
% \begin{macrocode}
%<*body>
-\newcommand*\addsec{\SecDef\@addsec\@saddsec}
+\newcommand\addsec{\SecDef\@addsec\@saddsec}
\newcommand*{\@addsec}{}
-\def\@addsec[#1]#2{\section*{#2}%
- \ifnum \scr@osectarg=\z@
- \@scr@tempswafalse
- \else
- \scr@istest#1=\@nil
- \fi
- \if@scr@tempswa
- \setkeys{KOMAarg.section}{tocentry={#2},head={#2},#1}%
- \else
- \ifcase \scr@osectarg\relax
- \setkeys{KOMAarg.section}{tocentry={#1},head={#1}}%
- \or
- \setkeys{KOMAarg.section}{tocentry={#2},head={#1}}%
- \or
- \setkeys{KOMAarg.section}{tocentry={#1},head={#2}}%
- \or
- \setkeys{KOMAarg.section}{tocentry={#1},head={#1}}%
- \fi
- \fi
- \ifx\scr@ds@tocentry\@empty\else
- \addsectiontocentry{}{\scr@ds@tocentry}%
- \fi
- \expandafter\addsecmark\expandafter{\scr@ds@head}%
+\def\@addsec[#1]#2{%
+ \edef\reserved@a{%
+ \unexpanded{%
+ \section[{#1}]{#2}%
+ \c@secnumdepth=
+ }\the\c@secnumdepth\relax
+ }%
+ \c@secnumdepth=\numexpr \sectionnumdepth-1\relax
+ \reserved@a
+}
+\newcommand*{\@saddsec}[1]{%
+ \section*{#1}\addsecmark{}%
}
-\newcommand*{\@saddsec}[1]{\section*{#1}\addsecmark{}}
% \end{macrocode}
% \end{macro}^^A \@saddsec
% \end{macro}^^A \@addsec
@@ -4207,7 +4575,7 @@
% \begin{macrocode}
\newcommand*\addsecmark[1]{%
\begingroup
- \c@secnumdepth=\m@ne
+ \c@secnumdepth=\numexpr \sectionnumdepth-1\relax
\sectionmark{#1}%
\endgroup
}
@@ -4291,6 +4659,12 @@
% \end{KOMAfont}
%
%
+% \begin{macro}{\partnumdepth}
+% \changes{v3.12}{2013/12/16}{new read only command}^^A
+% \changes{v3.18}{2015/05/24}{indirekt über \cs{DeclareSectionCommand}}^^A
+% \begin{macro}{\chapternumdepth}
+% \changes{v3.12}{2013/12/16}{new read only command}^^A
+% \changes{v3.18}{2015/05/20}{indirekt über \cs{DeclareSectionCommand}}^^A
% \begin{macro}{\sectionnumdepth}
% \changes{v3.12}{2013/12/16}{new read only command}^^A
% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A
@@ -4309,6 +4683,12 @@
% Diese dürfen nur gelesen, sollten aber nie umdefiniert werden und geben die
% Nummerierungsebene der Gliederungsanweisungen an (nicht zu verwechseln mit
% der Verzeichnisebene der Gliederungsanweisungen).
+% \begin{macro}{\parttocdepth}
+% \changes{v3.15}{2014/12/22}{neue Anweisung}^^A
+% \changes{v3.18}{2015/05/25}{indirekt über \cs{DeclareSectionCommand}}^^A
+% \begin{macro}{\chaptertocdepth}
+% \changes{v3.15}{2014/12/22}{neue Anweisung}^^A
+% \changes{v3.18}{2015/05/20}{indirekt über \cs{DeclareSectionCommand}}^^A
% \begin{macro}{\sectiontocdepth}
% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A
% \begin{macro}{\subsectiontocdepth}
@@ -4319,7 +4699,18 @@
% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A
% \begin{macro}{\subparagraphtocdepth}
% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A
-%
+% Diese dürfen nur gelesen, sollten aber nie umdefiniert werden und geben die
+% Verzeichnisebene der Gliederungsanweisungen an.
+% \begin{macro}{\part}
+% \changes{v3.18}{2015/05/25}{Verwendung von \cs{DeclareSectionCommand}}^^A
+% \begin{macro}{\chapter}
+% \changes{v2.8d}{2001/07/05}{\cs{chapterpagestyle} statt
+% \texttt{plain}}^^A
+% \changes{v3.18}{2015/05/20}{Verwendung von \cs{DeclareSectionCommand}}^^A
+% Als Besonderheit werden für \cs{chapter} nur diejenigen Werte gesetzt, die
+% nicht über Optionen eingestellt werden können und daher vorab deklariert
+% werden müssen. Bei den Anweisungen der unteren Ebenen werden hingegen alle
+% Einstellungen über \cs{DeclareSectionCommand} vorgenommen.
% \begin{macro}{\section}
% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor
% \cs{size@section} aufgerufen}^^A
@@ -4374,6 +4765,24 @@
% Schnittstelle \cs{DeclareSectionCommand} definiert.
% \begin{macrocode}
\DeclareSectionCommand[%
+ style=part,%
+%<article> level=\z@,%
+%<report|book> level=\m@ne,%
+%<report|book> pagestyle=plain,%
+ toclevel=\m@ne,%
+ tocindent=\z@,%
+ tocnumwidth=2em
+]{part}
+%<*book|report>
+\DeclareSectionCommand[%
+ style=chapter,%
+ level=\z@,%
+ pagestyle=plain,%
+ tocindent=\z@,%
+ tocnumwidth=1.5em
+]{chapter}
+%</book|report>
+\DeclareSectionCommand[%
style=section,%
level=1,%
indent=\z@,%
@@ -4441,16 +4850,22 @@
% \end{macro}^^A \subsubsection
% \end{macro}^^A \subsection
% \end{macro}^^A \section
+% \end{macro}^^A \chapter
+% \end{macro}^^A \part
% \end{macro}^^A \subparargraphtocdepth
% \end{macro}^^A \paragraphtocdepth
% \end{macro}^^A \subsubsectiontocdepth
% \end{macro}^^A \subsectiontocdepth
% \end{macro}^^A \sectiontocdepth
+% \end{macro}^^A \chaptertocdepth
+% \end{macro}^^A \parttocdepth
% \end{macro}^^A \subparargraphnumdepth
% \end{macro}^^A \paragraphnumdepth
% \end{macro}^^A \subsubsectionnumdepth
% \end{macro}^^A \subsectionnumdepth
% \end{macro}^^A \sectionnumdepth
+% \end{macro}^^A \chapternumdepth
+% \end{macro}^^A \partnumdepth
%
%
% \subsection{Font und Größeneinstellungen}
@@ -4506,6 +4921,8 @@
% \changes{v3.15}{2014/11/24}{\cs{scr@chapter@beforeskip} und
% \cs{scr@chapter@afterskip} werden verwendet}^^A
% \changes{v3.17}{2015/03/09}{interne Speicherung des Wert}^^A
+% \changes{v3.18}{2015/05/20}{Werte für \cs{scr@chapter@beforeskip}
+% negiert}^^A
% Dies ist eine neue zentrale Option für Überschriften. Dabei ergibt sich
% nun auch das Problem, dass die Gesamtmenge der Überschriften mal
% \emph{headings} (Überschriften), mal \emph{sectioning}
@@ -4559,7 +4976,7 @@
% |beforeskip=0pt| an den oberen Rand zu bekommen.
% \begin{macrocode}
%<*book|report>
- \renewcommand*{\scr@chapter@beforeskip}{3.3\baselineskip+\parskip}%
+ \renewcommand*{\scr@chapter@beforeskip}{-3.3\baselineskip-\parskip}%
\renewcommand*{\scr@chapter@afterskip}{%
1.725\baselineskip \@plus .115\baselineskip \@minus .192\baselineskip
}%
@@ -4587,7 +5004,7 @@
\KOMA@kav@remove{.\KOMAClassFileName}{headings}{standardclasses}%
\KOMA@kav@add{.\KOMAClassFileName}{headings}{normal}%
%<*book|report>
- \renewcommand*{\scr@chapter@beforeskip}{3\baselineskip+\parskip}%
+ \renewcommand*{\scr@chapter@beforeskip}{-3\baselineskip-\parskip}%
\renewcommand*{\scr@chapter@afterskip}{%
1.5\baselineskip \@plus .1\baselineskip \@minus .167\baselineskip
}%
@@ -4621,7 +5038,7 @@
\KOMA@kav@remove{.\KOMAClassFileName}{headings}{standardclasses}%
\KOMA@kav@add{.\KOMAClassFileName}{headings}{small}%
%<*book|report>
- \renewcommand*{\scr@chapter@beforeskip}{2.8\baselineskip+\parskip}%
+ \renewcommand*{\scr@chapter@beforeskip}{-2.8\baselineskip-\parskip}%
\renewcommand*{\scr@chapter@afterskip}{%
1.35\baselineskip \@plus 0.09\baselineskip \@minus .15\baselineskip
}%
@@ -4718,7 +5135,7 @@
\KOMA@kav@remove{.\KOMAClassFileName}{headings}{standardclasses}%
\KOMA@kav@add{.\KOMAClassFileName}{headings}{standardclasses}%
%<*book|report>
- \renewcommand*{\scr@chapter@beforeskip}{50\p@}%
+ \renewcommand*{\scr@chapter@beforeskip}{-50\p@}%
\renewcommand*{\scr@chapter@afterskip}{40\p@}%
\renewcommand*{\scr@chapter@innerskip}{20\p@}%
\renewcommand*{\chapterheadstartvskip}{\vspace{\@tempskipa}}%