diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/koma-script/scrkernel-sections.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/koma-script/scrkernel-sections.dtx | 899 |
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@,% |