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