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.dtx899
1 files changed, 702 insertions, 197 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 9892ec260ee..fafd67207d7 100644
--- a/Master/texmf-dist/source/latex/koma-script/scrkernel-sections.dtx
+++ b/Master/texmf-dist/source/latex/koma-script/scrkernel-sections.dtx
@@ -1,8 +1,8 @@
-% \CheckSum{3999}
+% \CheckSum{4507}
% \iffalse meta-comment
% ======================================================================
% scrkernel-sections.dtx
-% Copyright (c) Markus Kohm, 2002-2017
+% Copyright (c) Markus Kohm, 2002-2018
%
% This file is part of the LaTeX2e KOMA-Script bundle.
%
@@ -20,7 +20,7 @@
% This work consists of all files listed in manifest.txt.
% ----------------------------------------------------------------------
% scrkernel-sections.dtx
-% Copyright (c) Markus Kohm, 2002-2017
+% Copyright (c) Markus Kohm, 2002-2018
%
% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz,
% Version 1.3c, verteilt und/oder veraendert werden.
@@ -55,7 +55,7 @@
% Right brace \} Tilde \~}
%
% \iffalse
-%%% From File: $Id: scrkernel-sections.dtx 2954 2018-03-10 21:15:16Z kohm $
+%%% From File: $Id: scrkernel-sections.dtx 3038 2018-10-14 18:31:51Z kohm $
% The runs of run-time file generation:
%<preidentify>%%% (run: preidentify)
% - everything that is needed before selfidentification of resulting files
@@ -78,9 +78,9 @@
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\begingroup
\def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
- \filedate$Date: 2018-03-10 22:15:16 +0100 (Sat, 10 Mar 2018) $
+ \filedate$Date: 2018-10-14 20:31:51 +0200 (Sun, 14 Oct 2018) $
\def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
- \filerevision$Revision: 2954 $
+ \filerevision$Revision: 3038 $
\edef\reserved@a{%
\noexpand\endgroup
\noexpand\ProvidesFile{scrkernel-sections.dtx}%
@@ -545,18 +545,20 @@
%
%
% \begin{macro}{\@startsection}
-% \changes{v3.13a}{2014/09/11}{Vollständige Neudefinition zur Optimierung
-% der Erweiterung für das optionale Argument}^^A
+% \changes{v3.13a}{2014/09/11}{Vollständige Neudefinition zur Optimierung
+% 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}
-% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
-% ersetzt}^^A
+% \changes{v3.13a}{2014/09/11}{Neue interne Anweisung}^^A
+% \changes{v3.18}{2015/05/22}{verwende \cs{numexpr} für Argument 2}
+% \changes{v3.18}{2015/05/22}{verwende \cs{glueexpr} für Argument 3--5}
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \changes{v3.26}{2018/09/18}{\texttt{afterindent}-Einstellung wird
+% beachtet}^^A
% \begin{macro}{\scr@saved@startsection}
-% \changes{v3.13a}{2014/09/11}{Neue interne Anweisung}^^A
-% \changes{v3.20}{2016/04/12}{Tests funktionieren jetzt auch mit
-% \textsf{amsgen}}^^A
+% \changes{v3.13a}{2014/09/11}{Neue interne Anweisung}^^A
+% \changes{v3.20}{2016/04/12}{Tests funktionieren jetzt auch mit
+% \textsf{amsgen}}^^A
% \KOMAScript{} benötigt ein eigenes \cs{@startsection}, weil die
% Funktionalität des \cs{@startsection} aus dem \LaTeX-Kern nicht
% genügt. Bevor allerdings die eigene Definition in Angriff genommen wird,
@@ -569,6 +571,35 @@
% dass dann trotzdem noch die Warnungen funktionieren und nebenbei der Code
% mit etwas Glück sogar ebenfalls. Dazu ist es notwendig, dass die Version von
% \cs{@startsection} gespeichert wird, die \cs{kernel@ifstar} verwendet.
+% \begin{macro}{\startsection@sectionname}
+% \changes{v3.26}{2018/05/14}{Neue Anweisung für Paketautoren}^^A
+% \begin{macro}{\startsection@secnumdepth}
+% \changes{v3.26}{2018/05/14}{Neue Anweisung für Paketautoren}^^A
+% \begin{macro}{\startsection@indent}
+% \changes{v3.26}{2018/05/14}{Neue Anweisung für Paketautoren}^^A
+% \begin{macro}{\startsection@beforeskip}
+% \changes{v3.26}{2018/05/14}{Neue Anweisung für Paketautoren}^^A
+% \begin{macro}{\startsection@afterskip}
+% \changes{v3.26}{2018/05/14}{Neue Anweisung für Paketautoren}^^A
+% \begin{macro}{\if@startsection@runin}
+% \changes{v3.26}{2018/05/14}{Neue Anweisung für Paketautoren}^^A
+% \begin{macro}{\startsection@afterindent}
+% \changes{v3.26}{2018/09/18}{Neue Anweisung für Paketautoren}^^A
+% Ab dem Zeitpunkt des Aufrufs des Hooks \cs{scr@startsection@hook} sind die
+% Makros \cs{startsection@sectionname}, \cs{startsection@secnumdepth},
+% \cs{startsection@indent}, \cs{startsection@beforeskip},
+% \cs{if@startsection@indentafter}, \cs{startsection@afterskip},
+% \cs{if@startsection@runin} und \cs{startsection@afterindent} gültig. Die
+% \cs{\dots indent}- und \cs{\dots skip}-Makros sind dabei skips (oder
+% \cs{glueexpr}) und somit wie Längen verwendbar. Bei den beiden \cs{\dots
+% skip}-Makros handelt es sich bereits um effektive Abstände, es wurden also
+% etwaige Fallunterscheidungen bezüglich des Vorzeichens des Arguments für
+% \cs{scr@startsection} bereits aufgelöst. Das \cs{if\dots}-Makro ist entweder
+% \cs{iftrue} oder \cs{iffalse}. Ein \cs{if@startsection@afterindent}
+% existiert nicht, weil \cs{if@afterindent} zu dem Zeitpunkt bereits gültig
+% ist. Außerhalb von \cs{scr@startsection} ist die Verwendung dieser Macros
+% unzulässig, bzw. das Ergebnis unspezifiziert. Ebenso sind diese Macros als
+% \emph{read-only} zu betrachten!
% \begin{macrocode}
%<*body>
\newcommand*{\scr@saved@startsection}[6]{%
@@ -615,10 +646,47 @@
\if@noskipsec \leavevmode \fi
\par
\@tempskipa \glueexpr #4\relax
- \@afterindenttrue
- \ifdim \@tempskipa <\z@
- \@tempskipa -\@tempskipa \@afterindentfalse
- \fi
+ \@ifundefined{scr@#1@afterindent}{%
+ \def\startsection@afterindent##1##2##3{##3}%
+ }{%
+ \expandafter\let\expandafter\startsection@afterindent
+ \csname scr@#1@afterindent\endcsname
+ }%
+ \startsection@afterindent{\@afterindenttrue}{\@afterindentfalse}{%
+ \@afterindenttrue
+ \ifdim \@tempskipa <\z@
+ \@tempskipa -\@tempskipa \@afterindentfalse
+ \fi
+ }%
+ \def\startsection@sectionname{#1}%
+ \def\startsection@secnumdepth{\numexpr #2\relax}%
+ \def\startsection@indent{\glueexpr #3\relax}%
+ \let\startsection@beforeskip\@tempskipa
+ \@ifundefined{scr@#1@runin}{%
+ \def\scr@sect@runin##1##2##3{##3}%
+ }{%
+ \expandafter\let\expandafter\scr@sect@runin
+ \csname scr@#1@runin\endcsname
+ }%
+ \scr@sect@runin{%
+ \def\startsection@afterskip{\glueexpr #3\relax}%
+ \expandafter\let\csname if@startsection@runin\expandafter\endcsname
+ \csname iftrue\endcsname
+ }{%
+ \def\startsection@afterskip{\glueexpr #3\relax}%
+ \expandafter\let\csname if@startsection@runin\expandafter\endcsname
+ \csname iffalse\endcsname
+ }{%
+ \ifdim \glueexpr #5\relax <\z@
+ \def\startsection@afterskip{\glueexpr (#3)*\m@ne\relax}%
+ \expandafter\let\csname if@startsection@runin\expandafter\endcsname
+ \csname iftrue\endcsname
+ \else
+ \def\startsection@afterskip{\glueexpr #3\relax}%
+ \expandafter\let\csname if@startsection@runin\expandafter\endcsname
+ \csname iffalse\endcsname
+ \fi
+ }%
\csname scr@startsection@hook\endcsname
\if@nobreak
\everypar{}%
@@ -648,11 +716,14 @@
to achieve this. Because of the unexpected definition\MessageBreak
an alternative approach will be used.\MessageBreak
If this fails and if there isn't a new release of\MessageBreak
- KOMA-Scriptt that fixes the problem, please\MessageBreak
+ KOMA-Script that fixes the problem, please\MessageBreak
send a report to the KOMA-Script author.\MessageBreak
Note, that this alternative approach does not\MessageBreak
- execute `\string\scr@startsection@hook', \MessageBreak
- `\string\scr@preto@ssect@hook', or `\string\scr@preto@sect@hook'%
+ execute `\string\scr@startsection@hook',\MessageBreak
+ `\string\scr@preto@ssect@hook', or
+ `\string\scr@preto@sect@hook'\MessageBreak
+ and does always use `runin=bysign' and\MessageBreak
+ `afterindent=bysign'%
}%
\let\scr@saved@startsection\@startsection
\newcommand*{\scr@startsection}[6]{%
@@ -667,6 +738,59 @@
}
\fi
% \end{macrocode}
+% \begin{macro}{\scr@sect@runin}
+% \changes{v3.26}{2018/09/18}{neu (intern)}
+% Diese Hilfsanweisung nimmt die Fallunterscheidung vor, ob eine Spitzmarke
+% oder eine freistehende Überschrift oder abhängig vom Vorzeichen des
+% Abstandes danach eine Spitzmarke oder eine freistehende Überschrift gesetzt
+% werden soll. Die Voreinstellung ist sicherheitshalber letzteres. Diese
+% Voreinstellung wird auch bei jedem Aufruf von \cs{@xsect} erneut
+% erzwungen. Auch in \cs{scr@startsection} wird die Anweisung angepasst.
+% \begin{macrocode}
+\newcommand*{\scr@sect@runin}[3]{#3}
+% \end{macrocode}
+% \end{macro}^^A \scr@sect@runin
+% \begin{macro}{\scr@startsection@ulm@error}
+% \changes{v3.26}{2018/05/14}{Neue interne Anweisung}
+% Ich bin mir bewusst, dass die Fehlerausgabe, die hier definiert wird,
+% vermutlich nie aufgerufen wird, da ein Paketautor hierzu eines der Makros
+% bereits vor dem ersten \cs{scr@startsection}-Befehl verwenden
+% müsste. Trotzdem verwende ich es quasi zwecks Initialisierung.
+% \begin{macrocode}
+\newcommand*{\scr@startsection@ulm@error}[1]{%
+ \ClassError{\KOMAClassName}{%
+ \string#1 undefined outside of \string\scr@startsection
+ }{%
+ A KOMA-Script macro for package authors have been used outside
+ the\MessageBreak
+ specified definition scope.\MessageBreak
+ See `scrkernel-sections.dtx' for more information.%
+ }%
+}
+\newcommand*\startsection@sectionname{%
+ \scr@startsection@ulm@error\startsection@sectionname}
+\newcommand*\startsection@secnumdepth{%
+ \scr@startsection@ulm@error\startsection@secnumdepth}
+\newcommand*\startsection@indent{%
+ \scr@startsection@ulm@error\startsection@indent}
+\newcommand*\startsection@beforeskip{%
+ \scr@startsection@ulm@error\startsection@beforeskip}
+\newcommand*\startsection@afterskip{%
+ \scr@startsection@ulm@error\startsection@afterskip}
+\newcommand*{\if@startsection@runin}{%
+ \scr@startsection@ulm@error\if@startsection@runin}
+\newif\if@startsection@runin
+\newcommand*\startsection@afterindent{%
+ \scr@startsection@ulm@error\startsection@afterindent}
+% \end{macrocode}
+% \end{macro}^^A \scr@startsection@ulm@error
+% \end{macro}^^A \scr@startsection@afterindent
+% \end{macro}^^A \if@startsection@runin
+% \end{macro}^^A \startsection@afterskip
+% \end{macro}^^A \startsection@beforeskip
+% \end{macro}^^A \startsection@indent
+% \end{macro}^^A \startsection@secnumdepth
+% \end{macro}^^A \startsection@sectionname
% \begin{macro}{\At@startsection}
% \changes{v3.14}{2014/09/11}{Neue Anweisung für Paketautoren}^^A
% Mit Hilfe dieser Anweisung kann Code in die Ausführung von \KOMAScript's
@@ -865,8 +989,14 @@
\expandafter\@maybeautodot\csname the#1\endcsname
\protected@edef\@svsec{\@seccntformat{#1}\relax}%
\fi
- \@tempskipa \glueexpr #5\relax\relax
- \ifdim \@tempskipa>\z@
+% \end{macrocode}
+% \changes{v3.26}{2018/09/18}{\cs{scr@sect@runin} beachten}^^A
+% Falls \cs{scr@sect@runin} nicht definiert ist, wird es jetzt höchste Zeit
+% dafür. Und natürlich nutzen wir es dann für die Entscheidung Spitzmarke oder
+% nicht.
+% \begin{macrocode}
+ \ifdim
+ \scr@sect@runin{\z@}{\p@}{\glueexpr #5\relax}>\z@
\begingroup
% \end{macrocode}
% \changes{v3.21}{2016/06/12}{fehlendes \cs{nobreak} ergänzt}^^A
@@ -901,7 +1031,7 @@
\else
% \end{macrocode}
% \changes{v3.21}{2016/06/12}{fehlendes \cs{nobreak} ergänzt}^^A
-% Das Farbänderungen im Schriftargument erlaubt sein sollen und diese aktuelle
+% Da Farbänderungen im Schriftargument erlaubt sein sollen und diese aktuelle
% \cs{penalty}-Werte wieder aufheben, verbiete ich hier einen Umbruch nach
% der Fontänderung.
% \begin{macrocode}
@@ -1044,8 +1174,8 @@
% \end{macro}^^A \scr@sect
%
% \begin{macro}{\@ssect}
-% \changes{v3.19}{2015/07/17}{Vollständige Neudefinition zur Realisierung
-% der Erweiterung für die Formatieurng der Überschrift}^^A
+% \changes{v3.19}{2015/07/17}{Vollständige Neudefinition zur Realisierung
+% der Erweiterung für die Formatieurng der Überschrift}^^A
% Das wird für Überschriften ohne Nummer verwendet. Im Prinzip machen wir hier
% dasselbe wie zuvor.
% \begin{macrocode}
@@ -1082,8 +1212,14 @@
This could result in several error messages}%
\def\scr@s@ct@@nn@m@{\string\scr@s@ct@@nn@m@}%
}{}%
- \@tempskipa #3\relax
- \ifdim \@tempskipa>\z@
+% \end{macrocode}
+% \changes{v3.26}{2018/09/18}{\cs{scr@sect@runin} beachten}^^A
+% Falls \cs{scr@sect@runin} nicht definiert ist, wird es jetzt höchste Zeit
+% dafür. Und natürlich nutzen wir es dann für die Entscheidung Spitzmarke oder
+% nicht.
+% \begin{macrocode}
+ \ifdim
+ \scr@sect@runin{\z@}{\p@}{\glueexpr #3\relax}>\z@
\begingroup
% \end{macrocode}
% \changes{v3.21}{2016/06/12}{fehlendes \cs{nobreak} ergänzt}^^A
@@ -1116,6 +1252,84 @@
%</body>
% \end{macrocode}
% \end{macro}^^A \@ssect
+% \begin{macro}{\@xsect}
+% \changes{v3.26}{2018/09/18}{wird umdefiniert}^^A
+% Wir brauchen zum Einen in \cs{@xsect} einen Fallunterscheidung nach
+% \cs{scr@sect@runin} und zum Anderen muss diese Fallunterscheidung am Ende
+% wieder zurückgesetzt werden.
+% \begin{macrocode}
+%<*body>
+\def\@tempa#1{%
+ \@tempskipa #1\relax
+ \ifdim \@tempskipa>\z@
+ \par \nobreak
+ \vskip \@tempskipa
+ \@afterheading
+ \else
+ \@nobreakfalse
+ \global\@noskipsectrue
+ \everypar{%
+ \if@noskipsec
+ \global\@noskipsecfalse
+ {\setbox\z@\lastbox}%
+ \clubpenalty\@M
+ \begingroup \@svsechd \endgroup
+ \unskip
+ \@tempskipa #1\relax
+ \hskip -\@tempskipa
+ \else
+ \clubpenalty \@clubpenalty
+ \everypar{}%
+ \fi}%
+ \fi
+ \ignorespaces
+}
+\ifx\@xsect\@tempa\else
+ \ClassWarning{\KOMAClassName}{%
+ Unexpected definition of \string\@xsect!\MessageBreak
+ Please send information about this to\MessageBreak
+ the KOMA-Script maintainer!\MessageBreak
+ Maybe LaTeX will be broken by the redefinition\MessageBreak
+ of \string\@xsect\space}%
+\fi
+%<trace>\ClassInfo{\KOMAClassName}{redefining LaTeX kernel macro
+%<trace> \string\@xsect}
+\def\@xsect#1{%
+ \@ifundefined{scr@sect@runin}{%
+ \def\scr@sect@runin##1##2##3{##3}%
+ }%
+ \@tempskipa #1\relax
+ \ifdim \scr@sect@runin{\z@}{\p@}{\@tempskipa}>\z@
+ \par \nobreak
+ \vskip \@tempskipa
+ \@afterheading
+ \else
+ \@nobreakfalse
+ \global\@noskipsectrue
+ \everypar{%
+ \if@noskipsec
+ \global\@noskipsecfalse
+ {\setbox\z@\lastbox}%
+ \clubpenalty\@M
+ \begingroup \@svsechd \endgroup
+ \unskip
+ \@tempskipa #1\relax
+ \ifdim \@tempskipa<\z@
+ \hskip -\@tempskipa
+ \else
+ \hskip \@tempskipa
+ \fi
+ \else
+ \clubpenalty \@clubpenalty
+ \everypar{}%
+ \fi}%
+ \fi
+ \def\scr@sect@runin##1##2##3{##3}%
+ \ignorespaces
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \@xsect
%
% \begin{macro}{\IfUsePrefixLine}
% \changes{v3.18}{2015/06/09}{außerhalb von Gliederungsbefehlsstilen
@@ -1289,7 +1503,7 @@
\noexpand\FamilySetCounterMacro{KOMAarg}{#2}{\noexpand\reserved@a}{##1}
}\reserved@a
\ifx\FamilyKeyState\FamilyKeyStateProcessed
- \expandafter\let\csname #3\scr@dsc@current#4 \endcsname\reserved@a
+ \expandafter\let\csname #3\scr@dsc@current#4\endcsname\reserved@a
\fi
}%
}
@@ -1297,7 +1511,7 @@
% \end{macro}^^A \DeclareSectionCommandStyleNumberOption
% \begin{macro}{\DeclareSectionCommandStyleFontOption}
% \changes{v3.17}{2015/03/23}{neue Anweisung}^^A
-% Definiert eine für die aktuelle Ebene \cs{scr@dsc@current} eine neue
+% Definiert für die aktuelle Ebene \cs{scr@dsc@current} eine neue
% Schrift und speichert das Ergebnis in einem Element, das sich aus
% Argument 3 gefolgt von der aktuellen Ebene gefolgt von Argument 4 ergibt.
% \begin{macrocode}
@@ -1313,31 +1527,92 @@
}
% \end{macrocode}
% \end{macro}^^A \DeclareSectionCommandStyleFontOption
+% \begin{macro}{\DeclareSectionCommandStyleFuzzyOption}
+% \changes{v3.26}{2018/09/18}{neue Anweisung}^^A
+% Definiert für die aktuelle Ebene \cs{scr@dsc@current} eine neue
+% Fuzzy-Auswahl. Eine Fuzzy-Auswahl akzeptiert neben den Werten für
+% boolsche-Schalter noch einen weiteren Wert. Es wird davon eine Anweisung
+% mit drei Argumenten definiert. Abhängig vom Wert wird das erste
+% (\texttt{true}), zweite (\texttt{false}) oder dritte (\emph{sonst}) Argument
+% ausgeführt. Der erlaubte weitere Wert wird als 5. Argument angegeben.
+% \begin{macrocode}
+\newcommand*{\DeclareSectionCommandStyleFuzzyOption}[5]{%
+ \DeclareSectionCommandStyleOption{#1}{#2}{%
+ \FamilySetBool{KOMAarg}{#2}{@tempswa}{##1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \if@tempswa
+ \expandafter\def\csname #3\scr@dsc@current#4\endcsname
+ ####1####2####3{####1}%
+ \else
+ \expandafter\def\csname #3\scr@dsc@current#4\endcsname
+ ####1####2####3{####2}%
+ \fi
+ \else
+ \ifstr{##1}{#5}{%
+ \expandafter\def\csname #3\scr@dsc@current#4\endcsname
+ ####1####2####3{####3}%
+ \FamilyKeyStateProcessed
+ }{}%
+ \fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \DeclareSectionCommandStyleFuzzyOptions
%
% \begin{macro}{\scr@dsc@style@section@options}
-% \changes{v3.17}{2015/03/23}{neue Anweisung (intern)}^^A
+% \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}{}
% \end{macrocode}
-% \begin{description}\item[\texttt{indent}] Linker Einzug der
-% Überschrift\end{description}
+% \begin{description}\item[\texttt{indent}]
+% Linker Einzug der Überschrift
+% \end{description}
% \begin{macrocode}
\DeclareSectionCommandStyleLengthOption{section}
{indent}{scr@}{@sectionindent}
% \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.\end{description}
+% \begin{description}
+% \item[\texttt{afterindent}]
+% \changes{v3.26}{2018/09/18}{neue Option \texttt{afterindent}}^^A
+% Fuzzy-Logik. Ein boolcher Wert gibt an, ob die erste Zeile nach der
+% Überschrift eingezogen werden soll. Als dritter Wert ist \texttt{bysign}
+% möglich. Dann hängt die Entscheidung für den Einzug vom Vorzeichen von
+% \texttt{beforeskip} ab. Ein negativer Wert bedeutet dann, dass der
+% Absatzeinzug nach der Überschrift unterdrückt werden soll.
+% \end{description}
+% \begin{macrocode}
+\DeclareSectionCommandStyleFuzzyOption{section}
+ {afterindent}{scr@}{@afterindent}
+ {bysign}
+% \end{macrocode}
+% \begin{description}\item[\texttt{beforeskip}]
+% Gibt den vertikalen Abstand vor der Übeschrift an. Im Fall von
+% \texttt{afterindent=bysign} wird der Absolutwert verwendet.
+% \end{description}
% \begin{macrocode}
\DeclareSectionCommandStyleLengthOption{section}
{beforeskip}{scr@}{@beforeskip}
% \end{macrocode}
-% \begin{description}\item[\texttt{afterskip}] Wenn der Wert positiv ist,
-% dann ist es der verikale Abstand nach der Überschrift. Ein negativer Wert
-% signalisiert hingegen eine Spitzmarke. Der Absolutwert ist dann der
-% horizontale Abstand nach der Spitzmarke.\end{description}
+% \begin{description}\item[\texttt{runin}]
+% \changes{v3.26}{2018/09/18}{neue Option \texttt{runin}}^^A
+% Fuzzy-Logik. Ein boolscher Wert gibt an, dass die Überschrift als
+% Spitzmarke (\texttt{true}) oder als eigene Zeile (\texttt{false}) gesetzt
+% werden soll. Als dritter Wert ist \texttt{bysign} möglich. Dann hängt
+% Spitzmarke oder nicht vom Vorzeichen von \texttt{afterskip} ab. Spitzmarke
+% gibt es dann bei einem negativen Wert von \texttt{afterskip}.
+% \end{description}
+% \begin{macrocode}
+\DeclareSectionCommandStyleFuzzyOption{section}
+ {runin}{scr@}{@runin}
+ {bysign}
+% \end{macrocode}
+% \begin{description}\item[\texttt{afterskip}] Im Fall einer Spitzmarke (siehe
+% \texttt{runin}) der horizontale Abstand nach der Überschrift. Im Fall einer
+% freistehenden Überschrift der vertikale Abstand nach der Überschrift. Falls
+% die Spitzmarke über das Vorzeichen aktiviert wird, wird immer der Betrag des
+% Wertes verwendet!
+% \end{description}
% \begin{macrocode}
\DeclareSectionCommandStyleLengthOption{section}
{afterskip}{scr@}{@afterskip}
@@ -1397,9 +1672,22 @@
}%
% \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.
+% \item[\texttt{afterindent}]
+% \changes{v3.26}{2018/09/18}{neue Option \texttt{afterindent}}^^A
+% Fuzzy-Logik. Ein boolcher Wert gibt an, ob die erste Zeile nach der
+% Überschrift eingezogen werden soll. Als dritter Wert ist \texttt{bysign}
+% möglich. Dann hängt die Entscheidung für den Einzug vom Vorzeichen von
+% \texttt{beforeskip} ab. Ein negativer Wert bedeutet dann, dass der
+% Absatzeinzug nach der Überschrift unterdrückt werden soll.
+% \end{description}
+% \begin{macrocode}
+\DeclareSectionCommandStyleFuzzyOption{chapter}
+ {afterindent}{scr@}{@afterindent}
+ {bysign}
+% \end{macrocode}
+% \begin{description}\item[\texttt{beforeskip}]
+% Gibt den vertikalen Abstand vor der Übeschrift an. Im Fall von
+% \texttt{afterindent=bysign} wird der Absolutwert verwendet.
% \end{description}
% \begin{macrocode}
\DeclareSectionCommandStyleLengthOption{chapter}
@@ -1477,9 +1765,22 @@
%</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.
+% \item[\texttt{afterindent}]
+% \changes{v3.26}{2018/09/18}{neue Option \texttt{afterindent}}^^A
+% Fuzzy-Logik. Ein boolcher Wert gibt an, ob die erste Zeile nach der
+% Überschrift eingezogen werden soll. Als dritter Wert ist \texttt{bysign}
+% möglich. Dann hängt die Entscheidung für den Einzug vom Vorzeichen von
+% \texttt{beforeskip} ab. Ein negativer Wert bedeutet dann, dass der
+% Absatzeinzug nach der Überschrift unterdrückt werden soll.
+% \end{description}
+% \begin{macrocode}
+\DeclareSectionCommandStyleFuzzyOption{part}
+ {afterindent}{scr@}{@afterindent}
+ {bysign}
+% \end{macrocode}
+% \begin{description}\item[\texttt{beforeskip}]
+% Gibt den vertikalen Abstand vor der Übeschrift an. Im Fall von
+% \texttt{afterindent=bysign} wird der Absolutwert verwendet.
% \end{description}
% \begin{macrocode}
\DeclareSectionCommandStyleLengthOption{part}
@@ -1534,9 +1835,11 @@
% \end{macro}^^A \scr@dsc@def@style@part@command
%
% \begin{macro}{\scr@dsc@style@section@neededoptionstest}
-% \changes{v3.17}{2015/03/24}{Neu (intern)}^^A
-% \changes{v3.24}{2017/04/25}{Voreinstellungen für \texttt{indent} und
-% \texttt{font}}^^A
+% \changes{v3.17}{2015/03/24}{Neu (intern)}^^A
+% \changes{v3.24}{2017/04/25}{Voreinstellungen für \texttt{indent} und
+% \texttt{font}}^^A
+% \changes{v3.26}{2018/09/18}{\texttt{runin} und \texttt{afterindent}
+% beachten}^^A
% Dieses Anweisung überprüft, ob alle notwendigen Eigenschaften für die
% Definition der spezifischen Gliederungsebene im section-Stil bekannt
% sind. Sollte das nicht der Fall sein, meldet sie einen Fehler und sorgt sie
@@ -1561,6 +1864,24 @@
{font}{font}{\normalsize}%
{\newkomafont{\scr@dsc@current}{\normalsize}}%
}%
+ \scr@ifundefinedorrelax{scr@\scr@dsc@current @runin}{%
+ \l@addto@macro\local@endgroup{%
+ \ClassInfo{\KOMAClassName}
+ {using compatibility default `runin=bysign'\MessageBreak
+ for `\expandafter\string\csname \scr@dsc@current\endcsname}%
+ \expandafter\gdef\csname scr@\scr@dsc@current @runin\endcsname
+ ##1##2##3{##3}%
+ }%
+ }{}%
+ \scr@ifundefinedorrelax{scr@\scr@dsc@current @afterindent}{%
+ \l@addto@macro\local@endgroup{%
+ \ClassInfo{\KOMAClassName}
+ {using compatibility default `afterindent=bysign'\MessageBreak
+ for `\expandafter\string\csname \scr@dsc@current\endcsname}%
+ \expandafter\gdef\csname scr@\scr@dsc@current @afterindent\endcsname
+ ##1##2##3{##3}%
+ }%
+ }{}%
}
% \end{macrocode}
% \end{macro}^^A \scr@dsc@style@section@neededoptionstest
@@ -1641,6 +1962,15 @@
{\newkomafont{\scr@dsc@current prefix}{\usekomafont{chapterprefix}}}%
}%
}{}%
+ \scr@ifundefinedorrelax{scr@\scr@dsc@current @afterindent}{%
+ \l@addto@macro\local@endgroup{%
+ \ClassInfo{\KOMAClassName}
+ {using compatibility default `afterindent=bysign'\MessageBreak
+ for `\expandafter\string\csname \scr@dsc@current\endcsname}%
+ \expandafter\gdef\csname scr@\scr@dsc@current @afterindent\endcsname
+ ##1##2##3{##3}%
+ }%
+ }{}%
}
%</book|report>
% \end{macrocode}
@@ -1722,6 +2052,19 @@
{\newkomafont{\scr@dsc@current prefix}{\usekomafont{partprefix}}}%
}%
}{}%
+ \scr@ifundefinedorrelax{scr@\scr@dsc@current @afterindent}{%
+ \l@addto@macro\local@endgroup{%
+ \ClassInfo{\KOMAClassName}{%
+ using compatibility default
+%<article> `afterindent=false'\MessageBreak
+%<book|report> `afterindent=true'\MessageBreak
+ for `\expandafter\string\csname \scr@dsc@current\endcsname}%
+ \expandafter\gdef\csname scr@\scr@dsc@current @afterindent\endcsname
+ ##1##2##3%
+%<article> {##2}%
+%<book|report> {##1}%
+ }%
+ }{}%
}
% \end{macrocode}
% \end{macro}^^A \scr@dsc@style@part@neededoptionstest
@@ -2115,12 +2458,81 @@
\DeclareTOCStyleEntry[\scr@dsc@tocstyle@options]{default}{#2}%
}{}%
% \end{macrocode}
-% \changes{v3.20}{2015/0/07}{\textsf{hyperref} bei den Ebenen der
-% Verzeichniseinträge berücksichtigen}^^A
+% \changes{v3.20}{2015/0/07}{\textsf{hyperref} bei den Ebenen der
+% Verzeichniseinträge berücksichtigen}^^A
+% \changes{v3.26}{2018/06/27}{Einstellungen von \textsl{hyperref}
+% überschreiben}^^A
+% \changes{v3.26}{2018/06/27}{Notfallbehandlung für Lücken in den
+% Bookmark-Ebenen}^^A
% \begin{macrocode}
- \scr@ifundefinedorrelax{toclevel@part}{}{%
+ \if@atdocument
+ \let\reserved@a\@firstofone
+ \else
+ \@ifpackageloaded{hyperref}{%
+ \let\reserved@a\@firstofone
+ }{%
+ \def\reserved@a##1{%
+ \AfterAtEndOfPackage{hyperref}{\AtBeginDocument{##1}}%
+ }%
+ }%
+ \fi
+ \reserved@a{%
\expandafter\let\csname toclevel@#2\expandafter\endcsname
\csname #2tocdepth\endcsname
+ \scr@ifundefinedorrelax{bookmarksetup}{%
+ \scr@ifundefinedorrelax{scr@min@toclevel}{%
+ \expandafter\let\expandafter\scr@min@toclevel
+ \csname toclevel@#2\endcsname
+ }{%
+ \expandafter\ifnum \csname toclevel@#2\endcsname
+ < \numexpr \scr@min@toclevel-1\relax
+ \ClassWarning{\KOMAClassName}{%
+ Trying emergency fix for bookmark level gap,\MessageBreak
+ because toclevel of `#2'
+ (\csname toclevel@#2\endcsname)\MessageBreak
+ is more than 1 lower than currently lowest\MessageBreak
+ known level (\scr@min@toclevel).\MessageBreak
+ Note: This fix can fail and you should load\MessageBreak
+ package `bookmark' to avoid usage of this\MessageBreak
+ fix%
+ }%
+ \expandafter\edef\csname toclevel@#2\endcsname{%
+ \the\numexpr \scr@min@toclevel-1\relax
+ }%
+ \fi
+ \expandafter\ifnum \csname toclevel@#2\endcsname
+ < \scr@min@toclevel\relax
+ \expandafter\let\expandafter\scr@min@toclevel
+ \csname toclevel@#2\endcsname
+ \fi
+ }%
+ \scr@ifundefinedorrelax{scr@max@toclevel}{%
+ \expandafter\let\expandafter\scr@max@toclevel
+ \csname toclevel@#2\endcsname
+ }{%
+ \expandafter\ifnum \csname toclevel@#2\endcsname
+ > \numexpr \scr@max@toclevel+1\relax
+ \ClassWarning{\KOMAClassName}{%
+ Trying emergency fix for bookmark level gap,\MessageBreak
+ because toclevel of `#2'
+ (\csname toclevel@#2\endcsname)\MessageBreak
+ is more than 1 greater than currently highest\MessageBreak
+ known level (\scr@max@toclevel).\MessageBreak
+ Note: This fix can fail and you should load\MessageBreak
+ package `bookmark' to avoid usage of this\MessageBreak
+ fix%
+ }%
+ \expandafter\edef\csname toclevel@#2\endcsname{%
+ \the\numexpr \scr@max@toclevel+1\relax
+ }%
+ \fi
+ \expandafter\ifnum \csname toclevel@#2\endcsname
+ > \scr@max@toclevel\relax
+ \expandafter\let\expandafter\scr@max@toclevel
+ \csname toclevel@#2\endcsname
+ \fi
+ }%
+ }{}%
}%
}%
}%
@@ -2271,7 +2683,8 @@
% \end{macro}^^A \ProvideSectionCommand
%
% \begin{macro}{\DeclareSectionCommands}
-% \changes{v3.15}{2014/12/03}{neue Anweisung}^^A
+% \changes{v3.15}{2014/12/03}{neue Anweisung}^^A
+% \changes{v3.26}{2018/08/29}{\cs{scr@trim@spaces} eingefügt}^^A
% Basierend auf \cs{DeclareSectionCommand} können gleich mehrere
% Gliederungsanweisungen definiert werden. Dabei sorgt Option
% \texttt{increaselevel} dafür, dass die Werte von \texttt{level} und
@@ -2284,6 +2697,7 @@
\def\scr@local@leveloffset{\z@}%
\def\scr@local@tocleveloffset{\z@}%
\@for\reserved@a:=\reserved@a\do{%
+ \scr@trim@spaces\reserved@a
\edef\reserved@a{%
\unexpanded{\DeclareSectionCommand[{#1}]}{\reserved@a}%
}%
@@ -2297,7 +2711,8 @@
% \end{macro}^^A \DeclareSectionCommands
%
% \begin{macro}{\DeclareNewSectionCommands}
-% \changes{v3.15}{2014/12/03}{neue Anweisung}^^A
+% \changes{v3.15}{2014/12/03}{neue Anweisung}^^A
+% \changes{v3.26}{2018/08/29}{\cs{scr@trim@spaces} eingefügt}^^A
% Im Unterschied zu \cs{DeclareNewSectionCommand} führt diese Anweisung die
% Änderung auch dann aus, wenn die Anweisung bereits deklariert war. Eine
% Fehlermeldung wird aber natürlich trotzdem ausgegeben. Dieser Unterschied
@@ -2310,6 +2725,7 @@
\def\scr@local@leveloffset{\z@}%
\def\scr@local@tocleveloffset{\z@}%
\@for\reserved@a:=\reserved@a\do{%
+ \scr@trim@spaces\reserved@a
\@ifundefined{\reserved@a}{}{%
\ClassError{\KOMAClassName}{%
command `\expandafter\string\csname\reserved@a\endcsname` already
@@ -2338,7 +2754,8 @@
% \end{macro}^^A \DeclareNewSectionCommands
%
% \begin{macro}{\RedeclareSectionCommands}
-% \changes{v3.15}{2014/12/03}{neue Anweisung}^^A
+% \changes{v3.15}{2014/12/03}{neue Anweisung}^^A
+% \changes{v3.26}{2018/08/29}{\cs{scr@trim@spaces} eingefügt}^^A
% Im Unterschied zu \cs{RedeclareNewSectionCommands} führt diese Anweisung die
% Änderung auch dann aus, wenn die Anweisung noch nicht deklariert war. Eine
% Fehlermeldung wird aber natürlich trotzdem ausgegeben. Dieser Unterschied
@@ -2351,6 +2768,7 @@
\def\scr@local@leveloffset{\z@}%
\def\scr@local@tocleveloffset{\z@}%
\@for\reserved@a:=\reserved@a\do{%
+ \scr@trim@spaces\reserved@a
\@ifundefined{\reserved@a}{%
\ClassError{\KOMAClassName}{%
command `\expandafter\string\csname\reserved@a\endcsname` not defined%
@@ -2377,9 +2795,10 @@
% \end{macro}^^A \RedeclareSectionCommands
%
% \begin{macro}{\ProvideSectionCommands}
-% \changes{v3.15}{2014/12/03}{neue Anweisung}^^A
-% \changes{v3.17}{2015/03/23}{Umbau, um stilabhängige Optionen zu
-% ermöglichen}^^A
+% \changes{v3.15}{2014/12/03}{neue Anweisung}^^A
+% \changes{v3.17}{2015/03/23}{Umbau, um stilabhängige Optionen zu
+% ermöglichen}^^A
+% \changes{v3.26}{2018/08/29}{\cs{scr@trim@spaces} eingefügt}^^A
% Hier wird es nun wirklich schwierig, weil wir irgendwie dafür sorgen müssen,
% dass Option \texttt{increaselevel} funktioniert, auch wenn gar nichts
% definiert werden darf. Das macht die Geschichte ein wenig auswändig.
@@ -2390,6 +2809,7 @@
\def\scr@local@leveloffset{\z@}%
\def\scr@local@tocleveloffset{\z@}%
\@for\reserved@a:=\reserved@a\do{%
+ \scr@trim@spaces\reserved@a
\@ifundefined{\reserved@a}{%
\edef\reserved@a{%
\unexpanded{\DeclareSectionCommand[{#1}]}{\reserved@a}%
@@ -2429,10 +2849,54 @@
\let\scr@local@tocleveloffset\relax
}
%</body>
-%</class>
% \end{macrocode}
% \end{macro}^^A \ProvideSectionCommands
%
+% \begin{option}{bookmarkpackage}
+% \selectlanguage{english}^^A
+% \changes{v3.26}{2018/06/27}{new option}^^A
+% Package \textsl{hyperref} has problems with bookmark level gaps. So if
+% either the users omits a heading level or defines a heading with a level
+% that distinguish more than one from the previous or following level, there
+% would be a problem. One recommended solution for this would be to use
+% package \textsl{bookmark}. So if we load this package, we can use the same
+% value for bookmark levels and TOC levels even within
+% \textsl{scrartcl}. Nevertheless we allow the user to decide not to use
+% \textsl{bookmark}, but then it is not my fault, if something strange
+% happens.
+% \begin{macrocode}
+%<*option>
+\KOMA@ifkey{bookmarkpackage}{@scr@autoloadbookmarkpackage}
+\@scr@autoloadbookmarkpackagetrue
+\KOMA@kav@add{.\KOMAClassFileName}{bookmarkpackage}{true}
+\AfterAtEndOfPackage{hyperref}{%
+ \AtBeginDocument{%
+ \@ifpackageloaded{bookmark}{}{%
+ \if@scr@autoloadbookmarkpackage
+ \ClassInfo{\KOMAClassName}{%
+ loading recommended package `bookmark'.\MessageBreak
+ Using `bookmark' together with `hyperref' is
+ recommended,\MessageBreak
+ because of handling of possible bookmark level gaps.\MessageBreak
+ You can avoid loading `bookmark' with KOMA-Script
+ option\MessageBreak
+ `bookmarkpackage=false' before \string\begin{document}
+ and\MessageBreak
+ you can avoid this message with
+ `\string\usepackage{bookmark}'\MessageBreak
+ before \string\begin{document}%
+ }%
+ \RequirePackage{bookmark}%
+ \fi
+ }%
+ }%
+}
+%</option>
+%</class>
+% \end{macrocode}
+% \selectlanguage{ngerman}^^A
+% \end{option}^^A bookmarkpackage
+%
%
% \subsection{Definitionen für Präambeln}
%
@@ -2947,14 +3411,15 @@
%
%
% \begin{macro}{\scr@startpart}
-% \changes{v3.18}{2015/05/23}{neue Anweisung (intern)}^^A
+% \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
-% \changes{v3.19}{2015/08/25}{Seitenstil nur ändern wenn definiert und nicht
-% leer}^^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{v3.13a}{2014/09/11}{Verwendung von \cs{SecDef}}^^A
+% \changes{v3.19}{2015/08/25}{Seitenstil nur ändern wenn definiert und nicht
+% leer}^^A
+% \changes{v3.26}{2018/10/14}{Option \texttt{afterindent} wird beachtet}^^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
@@ -2980,10 +3445,18 @@
\@tempswafalse
\fi
%</book|report>
- \@tempskipa=\glueexpr\@nameuse{scr@#1@beforeskip}\relax\relax
- \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
+ \@tempskipa=\glueexpr\@nameuse{scr@#1@beforeskip}\relax
+ \@ifundefined{scr@#1@afterindent}{\@afterindentfalse}{%
+ \csname scr@#1@afterindent\endcsname
+ {\@afterindenttrue}{\@afterindentfalse}{%
+ \@afterindenttrue
+ \ifdim\@tempskipa<\z@
+ \@tempskipa=-\@tempskipa
+ \@afterindentfalse
+ \fi
+ }%
+ }%
\partheadstartvskip
-%<article> \@afterindentfalse
%<*book|report>
\vbox to\z@{\vss\use@preamble{#1@o}\strut\par}%
\vskip-\baselineskip\nobreak
@@ -3146,9 +3619,15 @@
\@tempskipa=\glueexpr\@nameuse{scr@#1@afterskip}\relax\relax
\ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
\partheadendvskip
- \@afterheading
%</article>
%<book|report> \@nameuse{@end#1}%
+% \end{macrocode}
+% \changes{v3.26}{2018/10/14}{Verwendung von \@cs{@afterheading} für
+% \textsf{scrbook} und \textsf{scrreprt}}^^A
+% Ab \KOMAScript{} 3.26 wird hier \cs{@afterheading} für alle Klassen
+% aufgerufen. Damit kann der Einzug nach der Überschrift eingestellt werden.
+% \begin{macrocode}
+ \@afterheading
}
% \end{macrocode}
% \end{macro}^^A \scr@@startpart
@@ -3790,7 +4269,17 @@
}%
}%
\global\@topnum\z@
- \@afterindentfalse
+ \@ifundefined{scr@#1@afterindent}{\@afterindentfalse}{%
+ \csname scr@#1@afterindent\endcsname
+ {\@afterindenttrue}{\@afterindentfalse}{%
+ \@afterindenttrue
+ \@ifundefined{scr@#1@beforeskip}{\@afterindentfalse}{%
+ \ifdim\glueexpr\@nameuse{scr@#1@beforeskip}\relax<\z@
+ \@afterindentfalse
+ \fi
+ }%
+ }%
+ }%
\expandafter\SecDef\csname @#1\expandafter\endcsname\csname @s#1\endcsname
}
% \end{macrocode}
@@ -4039,31 +4528,36 @@
% \end{macro}^^A \scr@makeschapterhead
%
% \begin{macro}{\scr@@makechapterhead}
-% \changes{v3.18}{2015/05/22}{neue Anweisung (intern)}
+% \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
+% \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.
% \changes{v3.22}{2016/12/21}{\cs{@afterindentrue} wird bei positivem
% \texttt{beforeskip} gesetzt}^^A
+% \changes{v3.26}{2018/09/18}{Beachtung von Einstellung
+% \texttt{afterindent}}^^A
% \begin{macrocode}
\@tempskipa=\glueexpr \csname scr@#1@beforeskip\endcsname\relax\relax
- \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\else
- \expandafter\ifnum\scr@v@is@ge{3.22}\@afterindenttrue\fi
- \fi
+ \csname scr@#1@afterindent\endcsname
+ {\@afterindenttrue}{\@afterindentfalse}{%
+ \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\else
+ \expandafter\ifnum\scr@v@is@ge{3.22}\@afterindenttrue\fi
+ \fi
+ }%
\chapterheadstartvskip
% \end{macrocode}
% Dann die eigentliche Überschrift innerhalb einer Gruppe.
@@ -4130,9 +4624,9 @@
\nobreak\par\nobreak
% \end{macrocode}
% Zum Schluss der Absolutwert des Abstandes dahinter.
+% \changes{v3.26}{2018/09/20}{Betragsbildung entfernt}^^A
% \begin{macrocode}
\@tempskipa=\glueexpr \csname scr@#1@afterskip\endcsname\relax\relax
- \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
\chapterheadendvskip
}
% \end{macrocode}
@@ -4143,24 +4637,31 @@
% 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
-% \changes{v3.19}{2015/08/02}{an die Änderungen bei \cs{scr@@makechapterhead}
-% angepasst}^^A
-% \changes{v3.20}{2015/12/23}{\cs{parfillskip} auf \texttt{\cs{z@} plus
-% 1fil} gesetzt}^^A
-% \changes{v3.22}{2016/12/21}{\cs{@afterindentrue} wird bei positivem
-% \texttt{beforeskip} gesetzt}^^A
-% \changes{v3.25}{2017/09/07}{\cs{IfUseNumber} korrigiert}^^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
+%\changes{v3.19}{2015/08/02}{an die Änderungen bei \cs{scr@@makechapterhead}
+% angepasst}^^A
+% \changes{v3.20}{2015/12/23}{\cs{parfillskip} auf \texttt{\cs{z@} plus
+% 1fil} gesetzt}^^A
+% \changes{v3.22}{2016/12/21}{\cs{@afterindentrue} wird bei positivem
+% \texttt{beforeskip} gesetzt}^^A
+% \changes{v3.25}{2017/09/07}{\cs{IfUseNumber} korrigiert}^^A
+% \changes{v3.26}{2018/09/18}{Beachtung von Einstellung
+% \texttt{afterindent}}^^A
+% \changes{v3.26}{2018/09/20}{Betragsbildung für \texttt{afterskip}
+% entfernt}^^A
% \begin{macrocode}
\newcommand*{\scr@@makeschapterhead}[2]{%
\@tempskipa=\glueexpr \csname scr@#1@beforeskip\endcsname\relax\relax
- \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\else
- \expandafter\ifnum\scr@v@is@ge{3.22}\@afterindenttrue\fi
- \fi
+ \csname scr@#1@afterindent\endcsname
+ {\@afterindenttrue}{\@afterindentfalse}{%
+ \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\else
+ \expandafter\ifnum\scr@v@is@ge{3.22}\@afterindenttrue\fi
+ \fi
+ }%
\chapterheadstartvskip
{%
\setlength{\parindent}{\z@}\setlength{\parfillskip}{\z@ plus 1fil}%
@@ -4187,7 +4688,6 @@
}%
\nobreak\par\nobreak
\@tempskipa=\glueexpr \csname scr@#1@afterskip\endcsname\relax\relax
- \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
\chapterheadendvskip
}
% \end{macrocode}
@@ -4898,16 +5398,18 @@
%
%
% \begin{macro}{\minisec}
-% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont}
-% behebt einen Bug im color Paket}^^A
-% \changes{v2.9o}{2003/01/31}{\cs{nobreak} nach dem Gruppenende
-% behebt einen Bug im color Paket}^^A
-% \changes{v2.96a}{2006/11/30}{Standardwert für \cs{parfillskip} (abhängig
-% von Option \texttt{version})}^^A
-% \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak}^^A
-% entfernt}^^A
-% \changes{v3.13a}{2014/08/07}{Absicherung der Abstände bei
-% aufeinanderfolgenden Überschriften entsprechend \cs{@startsection}}^^A
+% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont}
+% behebt einen Bug im color Paket}^^A
+% \changes{v2.9o}{2003/01/31}{\cs{nobreak} nach dem Gruppenende
+% behebt einen Bug im color Paket}^^A
+% \changes{v2.96a}{2006/11/30}{Standardwert für \cs{parfillskip} (abhängig
+% von Option \texttt{version})}^^A
+% \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak}^^A
+% entfernt}^^A
+% \changes{v3.13a}{2014/08/07}{Absicherung der Abstände bei
+% aufeinanderfolgenden Überschriften entsprechend \cs{@startsection}}^^A
+% \changes{v3.26}{2018/05/14}{fehlendes \cs{interlinepenalty}\cs{@M}
+% ergänzt}^^A
% \begin{KOMAfont}{minisec}
% \changes{v2.96a}{2006/12/03}{\texttt{minisec} ist ein eigenes
% Fontelement}^^A
@@ -4933,7 +5435,8 @@
\expandafter\ifnum\scr@v@is@gt{2.96}\relax
\setlength{\parfillskip}{\z@ plus 1fil}\fi
\raggedsection\normalfont\sectfont\nobreak
- \usekomafont{minisec}{\nobreak #1\par\nobreak}}\nobreak%
+ \usekomafont{minisec}{\nobreak\interlinepenalty \@M #1\par\nobreak}%
+ }\nobreak
\@afterheading
}
% \end{macrocode}
@@ -5200,120 +5703,112 @@
%
%
% \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
+% \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
+% \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
+% \changes{v3.12}{2013/12/16}{new read only command}^^A
+% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A
% \begin{macro}{\subsectionnumdepth}
-% \changes{v3.12}{2013/12/16}{new read only command}^^A
-% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A
+% \changes{v3.12}{2013/12/16}{new read only command}^^A
+% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A
% \begin{macro}{\subsubsectionnumdepth}
-% \changes{v3.12}{2013/12/16}{new read only command}^^A
-% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A
+% \changes{v3.12}{2013/12/16}{new read only command}^^A
+% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A
% \begin{macro}{\paragraphnumdepth}
-% \changes{v3.12}{2013/12/16}{new read only command}^^A
-% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A
+% \changes{v3.12}{2013/12/16}{new read only command}^^A
+% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A
% \begin{macro}{\subparagraphnumdepth}
-% \changes{v3.12}{2013/12/16}{new read only command}^^A
-% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A
+% \changes{v3.12}{2013/12/16}{new read only command}^^A
+% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A
% 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
+% \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
+% \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
+% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A
% \begin{macro}{\subsectiontocdepth}
-% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A
+% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A
% \begin{macro}{\subsubsectiontocdepth}
-% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A
+% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A
% \begin{macro}{\paragraphtocdepth}
-% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A
+% \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
+% \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
+% \changes{v3.18}{2015/05/25}{Verwendung von \cs{DeclareSectionCommand}}^^A
+% \changes{v3.26}{2018/06/27}{Definition nach \cs{section} verschoben (wegen
+% bookmark level fix)}^^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
+% \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
-% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont}
-% behebt einen Bug im color Paket}^^A
-% \changes{v2.96a}{2006/11/30}{Standardwert für \cs{parfillskip} (abhängig
-% von Option \texttt{version})}^^A
-% \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak} entfernt}^^A
-% \changes{v3.13a}{2014/09/11}{Verwendung von \cs{scr@startsection}}^^A
-% \changes{v3.15}{2014/11/24}{Verwendung von \cs{DeclareSectionCommand}}^^A
+% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor
+% \cs{size@section} aufgerufen}^^A
+% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont}
+% behebt einen Bug im color Paket}^^A
+% \changes{v2.96a}{2006/11/30}{Standardwert für \cs{parfillskip} (abhängig
+% von Option \texttt{version})}^^A
+% \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak} entfernt}^^A
+% \changes{v3.13a}{2014/09/11}{Verwendung von \cs{scr@startsection}}^^A
+% \changes{v3.15}{2014/11/24}{Verwendung von \cs{DeclareSectionCommand}}^^A
% \begin{macro}{\subsection}
-% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor
-% \cs{size@subsection} aufgerufen}^^A
-% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont}
-% behebt einen Bug im color Paket}^^A
-% \changes{v2.96a}{2006/11/30}{Standardwert für \cs{parfillskip} (abhängig
-% von Option \texttt{version})}^^A
-% \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak} entfernt}^^A
-% \changes{v3.13a}{2014/09/11}{Verwendung von \cs{scr@startsection}}^^A
-% \changes{v3.15}{2014/11/24}{Verwendung von \cs{DeclareSectionCommand}}^^A
+% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor
+% \cs{size@subsection} aufgerufen}^^A
+% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont}
+% behebt einen Bug im color Paket}^^A
+% \changes{v2.96a}{2006/11/30}{Standardwert für \cs{parfillskip} (abhängig
+% von Option \texttt{version})}^^A
+% \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak} entfernt}^^A
+% \changes{v3.13a}{2014/09/11}{Verwendung von \cs{scr@startsection}}^^A
+% \changes{v3.15}{2014/11/24}{Verwendung von \cs{DeclareSectionCommand}}^^A
% \begin{macro}{\subsubsection}
-% \changes{v2.3d}{1995/08/19}{wird bei \texttt{scrartcl} nun
-% ebenfalls numeriert und ins Inhaltsverzeichnis geschrieben}^^A
-% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor
-% \cs{size@subsubsection} aufgerufen}^^A
-% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont}
-% behebt einen Bug im color Paket}^^A
-% \changes{v2.96a}{2006/11/30}{Standardwert für \cs{parfillskip} (abhängig
-% von Option \texttt{version})}^^A
-% \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak} entfernt}^^A
-% \changes{v3.13a}{2014/09/11}{Verwendung von \cs{scr@startsection}}^^A
-% \changes{v3.15}{2014/11/24}{Verwendung von \cs{DeclareSectionCommand}}^^A
+% \changes{v2.3d}{1995/08/19}{wird bei \texttt{scrartcl} nun
+% ebenfalls numeriert und ins Inhaltsverzeichnis geschrieben}^^A
+% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor
+% \cs{size@subsubsection} aufgerufen}^^A
+% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont}
+% behebt einen Bug im color Paket}^^A
+% \changes{v2.96a}{2006/11/30}{Standardwert für \cs{parfillskip} (abhängig
+% von Option \texttt{version})}^^A
+% \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak} entfernt}^^A
+% \changes{v3.13a}{2014/09/11}{Verwendung von \cs{scr@startsection}}^^A
+% \changes{v3.15}{2014/11/24}{Verwendung von \cs{DeclareSectionCommand}}^^A
% \begin{macro}{\paragraph}
-% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor
-% \cs{size@paragraph} aufgerufen}^^A
-% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont}
-% behebt einen Bug im color Paket}^^A
-% \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak} entfernt}^^A
-% \changes{v3.15}{2014/11/24}{Verwendung von \cs{DeclareSectionCommand}}^^A
+% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor
+% \cs{size@paragraph} aufgerufen}^^A
+% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont}
+% behebt einen Bug im color Paket}^^A
+% \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak} entfernt}^^A
+% \changes{v3.15}{2014/11/24}{Verwendung von \cs{DeclareSectionCommand}}^^A
% \begin{macro}{\subparagraph}
-% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor
-% \cs{size@subparagraph} aufgerufen}^^A
-% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont}
-% behebt einen Bug im color Paket}^^A
-% \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak} entfernt}^^A
-% \changes{v3.13a}{2014/09/11}{Verwendung von \cs{scr@startsection}}^^A
-% \changes{v3.15}{2014/11/24}{Verwendung von \cs{DeclareSectionCommand}}^^A
-% \changes{v3.15}{2014/11/24}{\cs{parindent} durch \cs{scr@parindent}
-% ersetzt}^^A
+% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor
+% \cs{size@subparagraph} aufgerufen}^^A
+% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont}
+% behebt einen Bug im color Paket}^^A
+% \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak} entfernt}^^A
+% \changes{v3.13a}{2014/09/11}{Verwendung von \cs{scr@startsection}}^^A
+% \changes{v3.15}{2014/11/24}{Verwendung von \cs{DeclareSectionCommand}}^^A
+% \changes{v3.15}{2014/11/24}{\cs{parindent} durch \cs{scr@parindent}
+% ersetzt}^^A
% Die Standardgliederungsbefehle \cs{section} bis \cs{subparagraph}
% sind seit \KOMAScript{} v3.15 über die von \KOMAScript{} bereitgestellte
% Schnittstelle \cs{DeclareSectionCommand} definiert.
% \begin{macrocode}
-\DeclareSectionCommand[%
- style=part,%
-%<article> level=\z@,%
-%<report|book> level=\m@ne,%
-%<report|book> pagestyle=plain,%
- tocstyle=part,%
- toclevel=\m@ne,%
- tocindent=\z@,%
- tocnumwidth=2em%
-]{part}
%<*book|report>
\DeclareSectionCommand[%
style=chapter,%
@@ -5337,6 +5832,16 @@
%<book|report> tocnumwidth=2.3em%
]{section}
\DeclareSectionCommand[%
+ style=part,%
+%<article> level=\z@,%
+%<report|book> level=\m@ne,%
+%<report|book> pagestyle=plain,%
+ tocstyle=part,%
+ toclevel=\m@ne,%
+ tocindent=\z@,%
+ tocnumwidth=2em%
+]{part}
+\DeclareSectionCommand[%
style=section,%
level=2,%
indent=\z@,%