% \CheckSum{3697} % \iffalse meta-comment % ====================================================================== % scrkernel-sections.dtx % Copyright (c) Markus Kohm, 2002-2015 % % This file is part of the LaTeX2e KOMA-Script bundle. % % This work may be distributed and/or modified under the conditions of % the LaTeX Project Public License, version 1.3c of the license. % The latest version of this license is in % http://www.latex-project.org/lppl.txt % and version 1.3c or later is part of all distributions of LaTeX % version 2005/12/01 or later and of this work. % % This work has the LPPL maintenance status "author-maintained". % % The Current Maintainer and author of this work is Markus Kohm. % % This work consists of all files listed in manifest.txt. % ---------------------------------------------------------------------- % scrkernel-sections.dtx % Copyright (c) Markus Kohm, 2002-2015 % % Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, % Version 1.3c, verteilt und/oder veraendert werden. % Die neuste Version dieser Lizenz ist % http://www.latex-project.org/lppl.txt % und Version 1.3c ist Teil aller Verteilungen von LaTeX % Version 2005/12/01 oder spaeter und dieses Werks. % % Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" % (allein durch den Autor verwaltet). % % Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. % % Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. % ====================================================================== % \fi % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z % Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z % Digits \0\1\2\3\4\5\6\7\8\9 % Exclamation \! Double quote \" Hash (number) \# % Dollar \$ Percent \% Ampersand \& % Acute accent \' Left paren \( Right paren \) % Asterisk \* Plus \+ Comma \, % Minus \- Point \. Solidus \/ % Colon \: Semicolon \; Less than \< % Equals \= Greater than \> Question mark \? % Commercial at \@ Left bracket \[ Backslash \\ % Right bracket \] Circumflex \^ Underscore \_ % Grave accent \` Left brace \{ Vertical bar \| % Right brace \} Tilde \~} % % \iffalse %%% From File: $Id: scrkernel-sections.dtx 2131 2015-06-10 18:17:51Z kohm $ % The runs of run-time file generation: %%%% (run: preidentify) % - everything that is needed before selfidentification of resulting files % (unused) %%%% (run: identify) % - everything that is needed for selfidentification of resulting files % (unused) %%%% (run: prepare) % - everything that is needed to define options % % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \begin{macrocode} %<*option> \KOMA@key{open}{% \KOMA@set@ncmdkey{open}{@tempa}{% {any}{0},% {right}{1},% {left}{2}% }{#1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed \KOMA@kav@xreplacevalue{.\KOMAClassFileName}{open}{#1}% \KOMA@kav@remove{.\KOMAClassFileName}{headings}{openany}% \KOMA@kav@remove{.\KOMAClassFileName}{headings}{openright}% \KOMA@kav@remove{.\KOMAClassFileName}{headings}{openleft}% \ifcase \@tempa\relax \KOMA@kav@add{.\KOMAClassFileName}{headings}{openany}% \@openrightfalse \renewcommand*{\cleardoublestandardpage}{\cleardoubleoddstandardpage}% \or \KOMA@kav@add{.\KOMAClassFileName}{headings}{openright}% \@openrighttrue \renewcommand*{\cleardoublestandardpage}{\cleardoubleoddstandardpage}% \or \KOMA@kav@add{.\KOMAClassFileName}{headings}{openleft}% \@openrighttrue \renewcommand*{\cleardoublestandardpage}{\cleardoubleevenstandardpage}% \fi \fi } % % \end{macrocode} % \changes{v3.18}{2015/05/22}{indirekte Initialisierung} % Die Initialisierung erfolgt indirekt über Option \texttt{headings}. % \begin{macrocode} %<*execoption> %\KOMAExecuteOptions{headings=openright} %\KOMAExecuteOptions{headings=openany} % % \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 % \begin{option}{openany} % \changes{v2.98c}{2008/03/05}{obsolet}^^A % \changes{v3.01a}{2008/11/21}{standard statt obsolet}^^A % 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} % % % % \end{macrocode} % \end{option} % \end{option} % % % \subsection{Behandlung von Gliederungsnummern} % % Die Möglichkeit der Nummerierung ist allen Ebenen bis auf \cs{minisec} % gemeinsam. % % \begin{option}{numbers} % \changes{v2.98c}{2008/03/07}{Neue Option}^^A % \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit % \cs{FamilyKeyState}}^^A % \changes{v3.17}{2015/03/09}{interne Speicherung des Wert}^^A % Dies ist die zentrale Option zur Konfiguration der Nummerierung. Dabei geht % es primär um die Gliederungsnummern, es sind jedoch auch davon abgeleitete % Nummern betroffen. % \begin{macro}{\scr@dotchangeatdocument} % \changes{v2.98c}{2008/03/07}{Neu (intern)}^^A % Da die Umschaltung zwischen automatischem Endpunkt, immer Endpunkt und kein % Endpunkt unbedingt \emph{vor} \cs{begin{document}} erfolgen muss, wird eine % Fehlermeldung ausgegeben, falls das jemand zu einem späteren Zeitpunkt % probiert. Umschaltmöglichkeiten sind auf die Klassen beschränkt. % \begin{macrocode} %<*class> %<*prepare> \newcommand*{\scr@dotchangeatdocument}[1]{% \ClassError{\KOMAClassName}{% change of end dot feature after \string\begin{document}% }{% You've tried to set `numbers=#1' after \string\begin{document},\MessageBreak but this option is only allowed at the document preamble.\MessageBreak See KOMA-Script manual for more information about.% }% } % % \end{macrocode} % \end{macro} % Normalerweise wird automatisch entschieden, ob Nummern mit einem % Punkt enden müssen oder nicht. Um dies abzuschalten, muss nur der % gewünschte Zustand eingeschaltet und die Umschaltmöglichkeit % entfernt werden. Die Umschaltung kann jedoch nicht direkt erfolgen, sondern % erfolgt zeitverzögert in \cs{begin{document}}. Hier wird nur das Makro % umgeschaltet, das dort verwendet wird. % \begin{macrocode} %<*option> \KOMA@key{numbers}{% \KOMA@set@ncmdkey{numbers}{@tempa}{% {autoendperiod}{0},{autoenddot}{0},{auto}{0},% {endperiod}{1},{withendperiod}{1},{periodatend}{1},% {enddot}{1},{withenddot}{1},{dotatend}{1},% {noendperiod}{2},{noperiodatend}{2},% {noenddot}{2},{nodotatend}{2}% }{#1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed \KOMA@kav@xreplacevalue{.\KOMAClassFileName}{numbers}{#1}% \ifcase \@tempa\relax \if@atdocument\scr@dotchangeatdocument{#1}\else \let\scr@altsecnumhook\@empty \fi \or \if@atdocument\scr@dotchangeatdocument{#1}\else \let\scr@altsecnumhook\scr@altsecnumhooktrue \fi \or \if@atdocument\scr@dotchangeatdocument{#1}\else \let\scr@altsecnumhook\scr@altsecnumhookfalse \fi \fi \fi } % %\KOMAExecuteOptions{numbers=autoendperiod} % \end{macrocode} % \end{option} % % \begin{option}{pointednumbers} % \changes{v2.3h}{1995/01/19}{neue Option}^^A % \changes{v2.4g}{1996/11/04}{die Option heißt nun wirklich so, % bei \texttt{pointednumber} wird explizit ein Fehler gemeldet} % \changes{v2.4g}{1996/11/04}{\cs{@altsecnumformatfalse} wird % direkt auf \cs{@altsecnumformattrue} gesetzt} % \changes{v2.98c}{2008/03/07}{obsolet}^^A % \changes{v3.01a}{2008/11/20}{deprecated}^^A % \begin{option}{pointlessnumbers} % \changes{v2.3h}{1995/01/19}{neue Option}^^A % \changes{v2.4g}{1996/11/04}{die Option heißt nun wirklich so, % bei \texttt{pointlessnumber} wird explizit ein Fehler gemeldet} % \changes{v2.4g}{1996/11/04}{\cs{@altsecnumformattrue} wird direkt % auf \cs{@altsecnumformatfalse} gesetzt} % \changes{v2.98c}{2008/03/07}{obsolet}^^A % \changes{v3.01a}{2008/11/20}{deprecated}^^A % Diese Optionens sind nun wirklich veraltet und sollten nicht mehr verwendet % werden! % \begin{macrocode} %<*option> \KOMA@DeclareDeprecatedOption{pointednumbers}{numbers=enddot} \KOMA@DeclareDeprecatedOption{pointlessnumbers}{numbers=noenddot} % % \end{macrocode} % Übrigens weiß ich, wie blödsinnig die Namen der Optionen sind. Aber % das ist nun nicht mehr zu ändern. % \end{option} % \end{option} % % \begin{Counter}{secnumdepth} % Dieser Zähler gibt an, bis zu welcher Ebene die Gliederungsüberschriften % nummeriert werden. % \begin{macrocode} %<*body> %\setcounter{secnumdepth}{2} %
\setcounter{secnumdepth}{3} % % \end{macrocode} % \end{Counter} % % % \begin{macro}{\ifnumbered} % \changes{v3.12}{2013/12/16}{new command}^^A % \begin{macro}{\ifunnumbered} % \changes{v3.12}{2013/12/16}{new command}^^A % Test, ob eine Gliederungsebene (\texttt{\#1}) nummeriert wird. Falls das der % 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 }{% \expandafter\ifnum \@nameuse{#1numdepth}>\c@secnumdepth \expandafter\@secondoftwo \else \expandafter\@firstoftwo \fi }% } \newcommand*{\ifunnumbered}[1]{% \scr@ifundefinedorrelax{#1numdepth}{% \@firstoftwo }{% \expandafter\ifnum \@nameuse{#1numdepth}>\c@secnumdepth \expandafter\@firstoftwo \else \expandafter\@secondoftwo \fi }% } % % % \end{macrocode} % \end{macro} % \end{macro} % % % \subsection{\KOMAScript-eigene Befehle zur Definition von % Gliederungsbefehlen} % % Die Funktionalität des \LaTeX-Kerns genügt \KOMAScript{} bei der Definition % von Gliederungsebenen nicht. % % \begin{macro}{\scr@activate@xsection} % \changes{v3.10}{2011/08/30}{neu (intern)}^^A % Hiermit wird die Erweiterung für das optionale Argument der % Gliederungsbefehle eingeschaltet. % \begin{macro}{\scr@osectarg}^^A % Für die nicht per \cs{@startsection} implementierten Befehle geht das % einfach durch Umschaltung von \cs{scr@osectarg}. Bei 0 ist die Aktivierung % nicht aktiv. Bei 1 landet das optionale Argument hingegen im Kopf, bei 2 % im Inhaltsverzeichnis und bei 3 in beiden. Die Voreinstellung ist deshalb % ebenfalls 0. % % Da Option \texttt{headings} darauf zurückgreift, müssen die beiden Makros % bereits vorab definiert werden. % \begin{macrocode} %<*class> %<*prepare> \newcommand*{\scr@osectarg}{0} \newcommand*{\scr@activate@xsection}[1]{% \renewcommand*{\scr@osectarg}{#1}% } % % % \end{macrocode} % \end{macro} % \end{macro} % % % \begin{macro}{\if@altsecnumformat} % \changes{v2.3c}{1995/08/06}{neuer Schalter}^^A % \begin{macro}{\@altsecnumformattrue} % \begin{macro}{\@altsecnumformatfalse} % Dieses Schalter wird für die Umschaltung auf Duden-Regel~6 bei der % Numerierung benötigt. % \begin{macro}{\if@autodot} % \changes{v2.8e}{2001/07/10}{neuer Schalter}^^A % \begin{macro}{\@autodottrue} % \changes{v3.00}{2008/10/07}{arbeitet nun gobal}^^A % \begin{macro}{\@autodotfalse} % \changes{v3.00}{2008/10/07}{arbeitet nun gobal}^^A % Nach Duden 20.~Auflage, Regel~5 wird in der Gliederung kein Punkt gesetzt, % wenn diese rein mit arabischen Zahlen erfolgt. Nach Regel~6 folgt jedoch ein % Punkt, wenn die Gliederung auch römische Zahlen oder Großbuchstaben % enthält. Aus Konsistenzgründen muss der Punkt in diesem Fall immer gesetzt % werden. \KOMAScript{} bietet dafür einen Automatismus. % % Damit die Umschaltung auch wieder zurück auf Regel~5 automatisch erfolgen % kann, wird ein zweiter Schalter benötigt. % \begin{macrocode} %<*class> %<*prepare> \newif\if@altsecnumformat\@altsecnumformatfalse \newif\if@autodot \renewcommand*{\@autodottrue}{\global\let\if@autodot\iftrue} \renewcommand*{\@autodotfalse}{\global\let\if@autodot\iffalse} \@autodotfalse % % \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} % % \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} % \changes{v2.98c}{2008/03/07}{Neu (intern)}^^A % \begin{macro}{\scr@altsecnumhookfalse} % \changes{v2.98c}{2008/03/07}{Neu (intern)}^^A % Es werden drei Hilfsmakros benötigt. Das erste davon wird bei % \cs{begin{document}} ausgeführt (nachdem die \texttt{aux}-Datei gelesen % wurde!) und schaltet den gewünschten Zustand ein. Dazu wird es per Option % ggf. auf die eine oder andere Bedeutung umgeschaltet. Im Auto-Fall ist es % übrigens \cs{@empty}. % \begin{macrocode} %<*prepare> \newcommand*{\scr@altsecnumhook}{} \AtBeginDocument{\scr@altsecnumhook} \newcommand*{\scr@altsecnumhooktrue}{% \@altsecnumformattrue\global\let\@altsecnumformatfalse\@altsecnumformattrue } \newcommand*{\scr@altsecnumhookfalse}{% \@altsecnumformatfalse\global\let\@altsecnumformattrue\@altsecnumformatfalse } % % \end{macrocode} % \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 % Darstellung eines Zählers entschieden. Diese wird dem Makro als Argument % übergeben (\cs{thepart}, \cs{thechapter} etc.). Durch Verwendung einer % Gruppe, werden alle Definitionen lokal gehalten. % \begin{macrocode} %<*body> \newcommand{\@maybeautodot}[1]{\if@autodot\else\begingroup% \expandafter\@@maybeautodot #1\@stop\endgroup\fi } % \end{macrocode} % \begin{macro}{\@@maybeautodot} % \changes{v2.8e}{2001/07/10}{neu (intern)}^^A % \changes{v3.00}{2008/10/07}{neuerdings überflüssige \cs{aftergroup}^^A % entfernt}^^A % Die expandierte Darstellung wird dann auf Darstellungsbefehle für % Zähler gescannt. % \begin{macrocode} \newcommand*{\@@maybeautodot}[1]{% \ifx #1\@stop\let\@@maybeautodot\relax \else \ifx #1\Alph \@autodottrue\fi \ifx #1\alph \@autodottrue\fi \ifx #1\Roman \@autodottrue\fi \ifx #1\roman \@autodottrue\fi \ifx #1\@Alph \@autodottrue\fi \ifx #1\@alph \@autodottrue\fi \ifx #1\@Roman \@autodottrue\fi \ifx #1\@roman \@autodottrue\fi \ifx #1\romannumeral \@autodottrue\fi \fi \@@maybeautodot } % % \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} % % \end{macrocode} % \end{macro} % % % \begin{macro}{\@startsection} % \changes{v3.13a}{2014/09/11}{Vollständige Neudefinition zur Optimierung % der Erweiterung für das optionale Argument}^^A % \begin{macro}{\scr@startsection} % \changes{v3.13a}{2014/09/11}{Neue interne Anweisung}^^A % \changes{v3.18}{2015/05/22}{verwende \cs{numexpr} für Argument 2} % \changes{v3.18}{2015/05/22}{verwende \cs{glueexpr} für Argument 3--5} % \begin{macro}{\scr@saved@startsection} % \changes{v3.13a}{2014/09/11}{Neue interne Anweisung}^^A % \KOMAScript{} benötigt ein eigenes \cs{@startsection}, weil die % Funktionalität des \cs{@startsection} aus dem \LaTeX-Kern nicht % genügt. Bevor allerdings die eigene Definition in Angriff genommen wird, % muss kontrolliert werden, ob die aufgefundene Definition noch den % 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 \@tempskipa #4\relax \@afterindenttrue \ifdim \@tempskipa <\z@ \@tempskipa -\@tempskipa \@afterindentfalse \fi \if@nobreak \everypar{}% \else \addpenalty\@secpenalty\addvspace\@tempskipa \fi \@ifstar {\@ssect{#3}{#4}{#5}{#6}}% {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}% } \ifx\@startsection\scr@saved@startsection \newcommand*{\scr@startsection}[6]{% \if@noskipsec \leavevmode \fi \par \@tempskipa \glueexpr #4\relax \@afterindenttrue \ifdim \@tempskipa <\z@ \@tempskipa -\@tempskipa \@afterindentfalse \fi \csname scr@startsection@hook\endcsname \if@nobreak \everypar{}% \else \addpenalty\@secpenalty\addvspace\@tempskipa \fi \@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 changed.\MessageBreak \KOMAClassName\space needs it's own Definition of `\string\@startsection'\MessageBreak to provide extended features for the optional argument\MessageBreak of `\string\section` etc.\MessageBreak Generally it defines `\string\@startsection` completely new\MessageBreak to achieve this. Because of the unexpected definition\MessageBreak an alternative approach will be used.\MessageBreak If this fails and if there isn't a new release of\MessageBreak KOMA-Scriptt that fixes the problem, please\MessageBreak send a report to the KOMA-Script author.\MessageBreak Note, that this alternative approach does not\MessageBreak execute `\string\scr@startsection@hook', \MessageBreak `\string\scr@preto@ssect@hook', or `\string\scr@preto@sect@hook'% }% \let\scr@saved@startsection\@startsection \newcommand*{\scr@startsection}[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} % \begin{macro}{\At@startsection} % \changes{v3.14}{2014/09/11}{Neue Anweisung für Paketautoren}^^A % Mit Hilfe dieser Anweisung kann Code in die Ausführung von \KOMAScript's % eigenem \cs{scr@startsection} an der Stelle eingefügt werden, an der % \cs{if@afterindent} und \cs{@tempskipa} bereits korrekt eingestellt sind, % aber noch bevor \emph{pentaly} und Abstand gesetzt wurden bzw. \cs{everypar} % gelöscht wurde. % \begin{macrocode} \newcommand*{\At@startsection}[1]{% \@ifundefined{scr@startsection@hook}{\let\scr@startsection@hook\@empty}{}% \l@addto@macro{\scr@startsection@hook}{#1}% } % \end{macrocode} % \end{macro}^^A \At@startsection % \begin{macro}{\Before@ssect} % \changes{v3.14}{2014/09/11}{Neue Anweisung für Paketautoren}^^A % Mit Hilfe dieser Anweisung kann Code in die Ausführung von \KOMAScript's % eigenem \cs{scr@startsection} unmittelbar vor dem Aufruf von \cs{@ssect} % eingefügt werden. % \begin{macrocode} \newcommand*{\Before@ssect}[1]{% \@ifundefined{scr@preto@ssect@hook}{\let\scr@preto@ssect@hook\@empty}{}% \l@addto@macro{\scr@preto@ssect@hook}{#1}% } % \end{macrocode} % \end{macro}^^A \Before@ssect % \begin{macro}{\Before@sect} % \changes{v3.14}{2014/09/11}{Neue Anweisung für Paketautoren}^^A % Mit Hilfe dieser Anweisung kann Code in die Ausführung von \KOMAScript's % eigenem \cs{scr@startsection} unmittelbar vor dem Aufruf von \cs{@sect} % eingefügt werden. % \begin{macrocode} \newcommand*{\Before@sect}[1]{% \@ifundefined{scr@preto@sect@hook}{\let\scr@preto@sect@hook\@empty}{}% \l@addto@macro{\scr@preto@sect@hook}{#1}% } % \end{macrocode} % \end{macro}^^A \Before@sect % \begin{macro}{\scr@section@dblarg} % \changes{v3.13a}{2014/09/11}{Neue interne Anweisung}^^A % \begin{macro}{\scr@section@xdblarg} % \changes{v3.13a}{2014/09/11}{Neue interne Anweisung}^^A % \begin{macrocode} \newcommand{\scr@section@dblarg}[1]{% \kernel@ifnextchar[%] {#1}% {\scr@section@xdblarg{#1}}% } \newcommand{\scr@section@xdblarg}[2]{% \begingroup \edef\reserved@a{% \unexpanded{\endgroup\let\scr@osectarg\z@#1[{#2}]{#2}\def\scr@osectarg}% {\scr@osectarg}}% \reserved@a } % \end{macrocode} % \end{macro}%^^A \scr@section@xdblarg % \end{macro}%^^A \scr@section@dblarg % \end{macro}%^^A \scr@saved@startsection % \end{macro}%^^A \scr@startsection % \begin{macrocode} \renewcommand*{\@startsection}{% \ifnum \scr@osectarg=\z@ \expandafter\scr@saved@startsection \else \expandafter\scr@startsection \fi } % % \end{macrocode} % \end{macro}%^^A \@startsection % % % \begin{macro}{\SecDef} % \changes{v3.13a}{2014/09/11}{neue Anweisung}^^A % \begin{macro}{\secdef} % \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 % % \end{macrocode} % \end{macro}%^^A \secdef % \end{macro}%^^A \SecDef % \begin{macro}{\scr@sect} % \changes{v3.10}{2011/08/30}{entfällt}^^A % \begin{macro}{\@sect} % \changes{v3.10}{2011/08/30}{Vollständige Neudefinition zur Realisierung % der Erweiterung für das optionale Argument}^^A % \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 \else \refstepcounter{#1}% \protected@edef\@svsec{\@seccntformat{#1}\relax}% \fi \@tempskipa #5\relax \ifdim \@tempskipa>\z@ \begingroup #6{% \@hangfrom{\hskip #3\relax\@svsec}% \interlinepenalty \@M #8\@@par}% \endgroup \csname #1mark\endcsname{#7}% \addcontentsline{toc}{#1}{% \ifnum #2>\c@secnumdepth \else \protect\numberline{\csname the#1\endcsname}% \fi #7}% \else \def\@svsechd{% #6{\hskip #3\relax \@svsec #8}% \csname #1mark\endcsname{#7}% \addcontentsline{toc}{#1}{% \ifnum #2>\c@secnumdepth \else \protect\numberline{\csname the#1\endcsname}% \fi #7}}% \fi \@xsect{#5}} \ifx\@sect\@tempa\else \ClassWarning{\KOMAClassName}{% Unexpected definition of \string\@sect!\MessageBreak Please send an information about this to\MessageBreak the KOMA-Script maintainer!\MessageBreak Maybe LaTeX will be broken by the redefinition\MessageBreak of \string\@sect\space}% \fi %\ClassInfo{\KOMAClassName}{redefining LaTeX kernel macro \string\@sect} \def\@sect#1#2#3#4#5#6[#7]#8{% \ifnum \scr@osectarg=\z@ \@scr@tempswafalse \else \scr@istest#7=\@nil \fi \if@scr@tempswa \setkeys{KOMAarg.section}{tocentry={#8},head={#8},#7}% \else \ifcase \scr@osectarg\relax \setkeys{KOMAarg.section}{tocentry={#7},head={#7}}% \or \setkeys{KOMAarg.section}{tocentry={#8},head={#7}}% \or \setkeys{KOMAarg.section}{tocentry={#7},head={#8}}% \or \setkeys{KOMAarg.section}{tocentry={#7},head={#7}}% \fi \fi \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 \glueexpr #5\relax\relax \ifdim \@tempskipa>\z@ \begingroup #6{% \@hangfrom{\hskip \glueexpr #3\relax\@svsec}% \interlinepenalty \@M #8\@@par}% \endgroup % \ClassInfo{\KOMAClassName}{head=`\scr@ds@head'}% \expandafter\csname #1mark\expandafter\endcsname\expandafter{\scr@ds@head}% % \ClassInfo{\KOMAClassName}{tocentry=`\scr@ds@tocentry'}% \ifx\scr@ds@tocentry\@empty\else \scr@ifundefinedorrelax{add#1tocentry}{% \expandafter\global\expandafter\def \csname add#1tocentry\endcsname##1##2{% \addtocentrydefault{#1}{##1}{##2}% }% }{}% \ifnum \numexpr #2\relax>\c@secnumdepth \csname add#1tocentry\endcsname{}{\scr@ds@tocentry}% \else \csname add#1tocentry\endcsname{\csname the#1\endcsname}{% \scr@ds@tocentry}% \fi \fi \else \def\@svsechd{% #6{\hskip \glueexpr #3\relax \@svsec #8}% % \ClassInfo{\KOMAClassName}{head=`\scr@ds@head'}% \expandafter\csname #1mark\expandafter\endcsname \expandafter{\scr@ds@head}% % \ClassInfo{\KOMAClassName}{tocentry=`\scr@ds@tocentry'}% \ifx\scr@ds@tocentry\@empty\else \scr@ifundefinedorrelax{add#1tocentry}{% \expandafter\global\expandafter\def \csname add#1tocentry\endcsname####1####2{% \addtocentrydefault{#1}{####1}{####2}% }% }{}% \ifnum \numexpr #2\relax>\c@secnumdepth \csname add#1tocentry\endcsname{}{\scr@ds@tocentry}% \else \csname add#1tocentry\endcsname{\csname the#1\endcsname}{% \scr@ds@tocentry}% \fi \fi }% \fi \let\IfUsePrefixLine\scr@IfUsePrefixLineWarning \@xsect{\glueexpr #5\relax}% } % \end{macrocode} % \begin{macro}{\scr@ds@tocentry} % \changes{v3.10}{2011/08/30}{neu (intern)}^^A % \begin{macro}{\scr@ds@head} % \changes{v3.10}{2011/08/30}{neu (intern)}^^A % \begin{macro}{\if@scr@tempswa} % \changes{v3.10}{2011/08/30}{neu (intern)}^^A % \begin{macro}{\scr@istest} % \changes{v3.10}{2011/08/30}{neu (intern)}^^A % Für die Realisierung werden noch ein paar Key-Value-Definitionen und ein % paar Hilfsmakros benötigt: % \begin{macrocode} \DefineFamily{KOMAarg} \DefineFamilyMember[.section]{KOMAarg} \DefineFamilyKey[.section]{KOMAarg}{tocentry}{\def\scr@ds@tocentry{#1}} \DefineFamilyKey[.section]{KOMAarg}{head}{\def\scr@ds@head{#1}} \newcommand*\scr@ds@tocentry{} \newcommand*\scr@ds@head{} \newcommand*{\scr@istest}{} \def\scr@istest#1=#2\@nil{% \ifx\relax#2\relax\@scr@tempswafalse\else\@scr@tempswatrue\fi } \newif\if@scr@tempswa % % \end{macrocode} % \end{macro}^^A \scr@istest % \end{macro}^^A \if@scr@tempswa % \end{macro}^^A \scr@ds@head % \end{macro}^^A \scr@ds@tocentry % \end{macro}^^A \@sect % \end{macro}^^A \scr@sect % % \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} %<*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 % % \end{macrocode} % \end{macro}^^A \scr@IfUsePrefixLineWarning % \end{macro}^^A \IfUsePrefixLine % % % \begin{macro}{\raggedsection} % \changes{v2.3h}{1996/01/20}{Überschriften werden \cs{raggedsection}^^A % gesetzt}^^A % \changes{v2.3h}{1996/01/20}{\cs{raggedsection} ist als \cs{raggedright} % voreingestellt}^^A % Dieses Makro gibt an, wie die Überschriften formatiert % werden. Voreingestellt ist linksbündig. Da dies nicht nur die Formatierung % 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 % % \end{macrocode} % \end{macro}^^A \raggedsection % % % \begin{macro}{\DeclareSectionCommand} % \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} % \begin{macro}{\DeclareSectionCommandStyleOption} % \changes{v3.17}{2015/03/23}{neue Anweisung}^^A % Definiert eine neue Option für einen Stil eines Gliederungsbefehls. Das % erste Argument ist der Stil, das zweite der Name der Option, das dritte ist % die Definition. Sollte innerhalb der Definition eine Familie benötigt % werden, so ist \texttt{KOMAarg} zu verwenden. % \begin{macrocode} \newcommand*{\DeclareSectionCommandStyleOption}[3]{% \DeclareSectionCommandDummyOption{#2}% \expandafter\g@addto@macro\csname scr@dsc@style@#1@options\endcsname{% \DefineFamilyKey[.dsc]{KOMAarg}{#2}{#3}% }% } % \end{macrocode} % \begin{macro}{\DeclareSectionCommandDummyOption} % \changes{v3.17}{2015/03/23}{neue Anweisung (intern)}^^A % \begin{macro}{\scr@dsc@dummyoptions} % \changes{v3.17}{2015/03/23}{Neu (intern)}^^A % Definiert eine neue Dummy-Option für einen Stil eines % Gliederungsbefehls. Das einzige Argument ist der Name der Option. Die % Dummy-Optionen werden in \cs{scr@dsc@dummyoptions} gesammelt. % \begin{macrocode} \newcommand*{\DeclareSectionCommandDummyOption}[1]{% \@ifstar {% \g@addto@macro{\scr@dsc@dummyoptions}{% \DefineFamilyKey[.dsc]{KOMAarg}{#1}[]{\FamilyKeyStateProcessed}% }% }{% \g@addto@macro{\scr@dsc@dummyoptions}{% \DefineFamilyKey[.dsc]{KOMAarg}{#1}{\FamilyKeyStateProcessed}% }% }% } \newcommand*{\scr@dsc@dummyoptions}{} % \end{macrocode} % \end{macro}^^A \scr@dsc@dummyoptions % \end{macro}^^A \DeclareSectionCommandDummyOption % \end{macro}^^A \DeclareSectionCommandStyleOption % \begin{macro}{\DeclareSectionCommandStyleLengthOption} % \changes{v3.17}{2015/03/23}{neue Anweisung}^^A % Definiert eine für die aktuelle Ebene \cs{scr@dsc@current} eine neue % Längenoption und speichert das Ergebnis in einem Makro, das sich aus % Argument 3 gefolgt von der aktuellen Ebene gefolgt von Argument 4 ergibt. % \begin{macrocode} \newcommand*{\DeclareSectionCommandStyleLengthOption}[4]{% \DeclareSectionCommandStyleOption{#1}{#2}{% \FamilySetLength{KOMAarg}{#2}{\@tempskipa}{##1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed \ifscr@dsc@expandtopt \expandafter\edef\csname #3\scr@dsc@current#4\endcsname{% \the\@tempskipa}% \else \expandafter\edef\csname #3\scr@dsc@current#4\endcsname{##1}% \fi \fi }% } % \end{macrocode} % \end{macro}^^A \DeclareSectionCommandStyleLengthOption % \begin{macro}{\DeclareSectionCommandStyleNumberOption} % \changes{v3.17}{2015/03/23}{neue Anweisung}^^A % Definiert eine für die aktuelle Ebene \cs{scr@dsc@current} eine neue % Zahlenoption und speichert das Ergebnis in einem Makro, das sich aus % Argument 3 gefolgt von der aktuellen Ebene gefolgt von Argument 4 ergibt. % \begin{macrocode} \newcommand*{\DeclareSectionCommandStyleNumberOption}[4]{% \DeclareSectionCommandStyleOption{#1}{#2}{% \FamilySetCounter{KOMAarg}{#2}{\@tempcnta}{##1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed \expandafter\edef\csname #3\scr@dsc@current#4 \endcsname{\the\@tempcnta}% \fi }% } % \end{macrocode} % \end{macro}^^A \DeclareSectionCommandStyleNumberOption % \begin{macro}{\DeclareSectionCommandStyleFontOption} % \changes{v3.17}{2015/03/23}{neue Anweisung}^^A % Definiert eine für die aktuelle Ebene \cs{scr@dsc@current} eine neue % Schrift und speichert das Ergebnis in einem Element, das sich aus % Argument 3 gefolgt von der aktuellen Ebene gefolgt von Argument 4 ergibt. % \begin{macrocode} \newcommand*{\DeclareSectionCommandStyleFontOption}[4]{% \DeclareSectionCommandStyleOption{#1}{#2}{% \IfExistskomafont{#3\scr@dsc@current#4}{% \setkomafont }{% \newkomafont }{#3\scr@dsc@current#4}{##1}% \FamilyKeyStateProcessed }% } % \end{macrocode} % \end{macro}^^A \DeclareSectionCommandStyleFontOption % Es folgt die Initialisierung zunächst der Dummys für die Optionen, die es % immer gibt. (Erklärung dieser Optionen folgt unten.) % \begin{macrocode} \DeclareSectionCommandDummyOption{style} \DeclareSectionCommandDummyOption{expandtopt}* \DeclareSectionCommandDummyOption{increaselevel} \DeclareSectionCommandDummyOption{level} \DeclareSectionCommandDummyOption{toclevel} \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}{} % \end{macrocode} % \begin{description}\item[\texttt{indent}] Linker Einzug der % Überschrift\end{description} % \begin{macrocode} \DeclareSectionCommandStyleLengthOption{section} {indent}{scr@}{@sectionindent} % \end{macrocode} % \begin{description}\item[\texttt{beforeskip}] Der Absolutwert gibt den % vertikalen Abstand vor der Überschrift an. Negative Werte bedeuten, dass % der Absatzeinzug nach der Überschrift unterdrückt werden % soll.\end{description} % \begin{macrocode} \DeclareSectionCommandStyleLengthOption{section} {beforeskip}{scr@}{@beforeskip} % \end{macrocode} % \begin{description}\item[\texttt{afterskip}] Wenn der Wert positiv ist, % dann ist es der verikale Abstand nach der Überschrift. Ein negativer Wert % signalisiert hingegen eine Spitzmarke. Der Absolutwert ist dann der % horizontale Abstand nach der Spitzmarke.\end{description} % \begin{macrocode} \DeclareSectionCommandStyleLengthOption{section} {afterskip}{scr@}{@afterskip} % \end{macrocode} % \begin{description}\item[\texttt{font}] Schrifteinstellungen für das % Element.\end{description} % \begin{macrocode} \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. % \end{description} % \begin{macrocode} \DeclareSectionCommandStyleLengthOption{chapter} {beforeskip}{scr@}{@beforeskip} % \end{macrocode} % \begin{description} % \item[\texttt{innerskip}] Der Absolutwert gibt den vertikalen Abstand % innerhalb der Überschrift zwischen Präfix-Zeile und Text an. % \end{description} % \begin{macrocode} \DeclareSectionCommandStyleLengthOption{chapter} {innerskip}{scr@}{@innerskip} % \end{macrocode} % \begin{description} % \item[\texttt{afterskip}] Der Absolutwert gibt den vertikalen Abstand nach % der Überschrift an. % \end{description} % \begin{macrocode} \DeclareSectionCommandStyleLengthOption{chapter} {afterskip}{scr@}{@afterskip} % \end{macrocode} % \begin{description} % \item[\texttt{font}] Schrifteinstellungen für das Element. % \end{description} % \begin{macrocode} \DeclareSectionCommandStyleFontOption{chapter}{font}{}{} % \end{macrocode} % \begin{description} % \item[\texttt{prefixfont}] Schrifteinstellungen für die Präfixzeile des % Elements. % \end{description} % \begin{macrocode} \DeclareSectionCommandStyleFontOption{chapter}{prefixfont}{}{prefix} % \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}}% } % % \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 }% % % \end{macrocode} % \begin{description} % \item[\texttt{beforeskip}] Der Absolutwert gibt den vertikalen Abstand vor % der Überschrift an. Negative Werte bedeuten, dass der Absatzeinzug nach % der Überschrift unterdrückt werden soll. % \end{description} % \begin{macrocode} \DeclareSectionCommandStyleLengthOption{part} {beforeskip}{scr@}{@beforeskip} % \end{macrocode} % \begin{description} % \item[\texttt{innerskip}] Der Absolutwert gibt den vertikalen Abstand % innerhalb der Überschrift zwischen Präfix-Zeile und Text an. % \end{description} % \begin{macrocode} %<*book|report> \DeclareSectionCommandStyleLengthOption{part} {innerskip}{scr@}{@innerskip} % % \end{macrocode} % \begin{description} % \item[\texttt{afterskip}] Der Absolutwert gibt den vertikalen Abstand nach % der Überschrift an. % \end{description} % \begin{macrocode} \DeclareSectionCommandStyleLengthOption{part} {afterskip}{scr@}{@afterskip} % \end{macrocode} % \begin{description} % \item[\texttt{font}] Schrifteinstellungen für das Element. % \end{description} % \begin{macrocode} \DeclareSectionCommandStyleFontOption{part}{font}{}{} % \end{macrocode} % \begin{description} % \item[\texttt{font}] Schrifteinstellungen für die Präfixzeile des Elements. % \end{description} % \begin{macrocode} \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}}% % \@namedef{@end#1}{\scr@@endpart{#1}}% % \@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)} % Dieses Anweisung überprüft, ob alle notwendigen Eigenschaften für die % Definition der spezifischen Gliederungsebene im section-Stil bekannt % sind. Sollte das nicht der Fall sein, meldet sie einen Fehler und sorgt sie % mit \cs{aftergroup}\cs{@gobbletwo} dafür, dass die Definition unterbleibt. % \begin{macrocode} \newcommand*{\scr@dsc@style@section@neededoptionstest}{% % \typeout{TRACE: % \string\scr@dsc@style@section@neededoptionstest\space for % \scr@dsc@current}% \scr@ifundefinedorrelax{scr@\scr@dsc@current @sectionindent}{% \scr@declaresectioncommanderror{\scr@dsc@current}{section indent}{indent}% }{}% \scr@ifundefinedorrelax{scr@\scr@dsc@current @beforeskip}{% \scr@declaresectioncommanderror{\scr@dsc@current}{before section skip} {beforeskip}% }{}% \scr@ifundefinedorrelax{scr@\scr@dsc@current @afterskip}{% \scr@declaresectioncommanderror{\scr@dsc@current}{after section skip} {afterskip}% }{}% \IfExistskomafont{\scr@dsc@current}{}{% \scr@declaresectioncommanderror{\scr@dsc@current}{font}{font}% }{}% } % \end{macrocode} % \end{macro}^^A \scr@dsc@style@section@neededoptionstest % % \begin{macro}{\scr@dsc@style@chapter@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 % 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} %<*book|report> \newcommand*{\scr@dsc@style@chapter@neededoptionstest}{% % \typeout{TRACE: % \string\scr@dsc@style@chapter@neededoptionstest\space for % \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}% }{}% \scr@ifundefinedorrelax{scr@\scr@dsc@current @beforeskip}{% \scr@declaresectioncommanderror{\scr@dsc@current}{before chapter skip} {beforeskip}% }{}% \scr@ifundefinedorrelax{scr@\scr@dsc@current @afterskip}{% \scr@declaresectioncommanderror{\scr@dsc@current}{after chaper skip} {afterskip}% }{}% \IfExistskomafont{\scr@dsc@current}{}{% \scr@declaresectioncommanderror{\scr@dsc@current}{font}{font}% }{}% \IfExistskomafont{\scr@dsc@current prefix}{}{% \scr@declaresectioncommanderror{\scr@dsc@current}{prefix line font} {prefixfont}% }{}% } % % \end{macrocode} % \end{macro}^^A \scr@dsc@style@chapter@neededoptionstest % % \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 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} \newcommand*{\scr@dsc@style@part@neededoptionstest}{% % \typeout{TRACE: % \string\scr@dsc@style@part@neededoptionstest\space for % \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}% }{}% % \scr@ifundefinedorrelax{scr@\scr@dsc@current @beforeskip}{% \scr@declaresectioncommanderror{\scr@dsc@current}{before part skip} {beforeskip}% }{}% \scr@ifundefinedorrelax{scr@\scr@dsc@current @afterskip}{% \scr@declaresectioncommanderror{\scr@dsc@current}{after part skip} {afterskip}% }{}% \IfExistskomafont{\scr@dsc@current}{}{% \scr@declaresectioncommanderror{\scr@dsc@current}{font}{font}% }{}% \IfExistskomafont{\scr@dsc@current prefix}{}{% \scr@declaresectioncommanderror{\scr@dsc@current}{number font} {prefixfont}% }{}% } % \end{macrocode} % \end{macro}^^A \scr@dsc@style@part@neededoptionstest % % \begin{macro}{\ifscr@dsc@parametersonly} % \changes{v3.17}{2015/03/24}{neu} % Dieser Schalter wird verwendet, um die Einstellungen entsprechend dem % aktuell gültigen Stil zu ändern, die zugehörige Anweisunge selbst aber nicht % neu zu definieren. Er wird von einem leeren \texttt{style}-Wert lokal % gesetzt. % \begin{macrocode} \newif\ifscr@dsc@parametersonly % \end{macrocode} % \end{macro}^^A \ifscr@dsc@parametersonly % % \begin{macrocode} \newcommand*{\DeclareSectionCommand}[2][]{% \edef\scr@dsc@current{#2}% % \end{macrocode} % Zunächst sind alle für Gliederungsbefehle bekannten Optionen nur % dummy-Optionen. % \begin{macrocode} \scr@dsc@dummyoptions % \end{macrocode} % Die einzige Optionen, die wir direkt auswerten, ist der Stil: % \begin{description}\item[\texttt{style}] Stil der % Gliederungsebene\end{description} % \begin{macrocode} \scr@dsc@parametersonlyfalse \DefineFamilyKey[.dsc]{KOMAarg}{style}{% \ifstr{##1}{}{% \ifscr@dsc@parametersonlytrue \FamilyKeyStateProcessed }{% \scr@ifundefinedorrelax{scr@dsc@def@style@##1@command}{% \FamilyKeyStateUnknownValue }{% \@namedef{scr@\scr@dsc@current @style}{##1}% \FamilyKeyStateProcessed }% }% }% \FamilyExecuteOptions[.dsc]{KOMAarg}{#1}% \begingroup \scr@ifundefinedorrelax{scr@\scr@dsc@current @style}{% \scr@declaresectioncommanderror{\scr@dsc@current} {section command style}{style}% }{}% \endgroup \@firstofone{% % \end{macrocode} % Nach nun der Stil für den Gliederungsbefehl bekannt ist, können wir dessen % Optionen aktivieren: % \begin{macrocode} \scr@dsc@dummyoptions % \typeout{TRACE: style=\@nameuse{scr@\scr@dsc@current @style}}% \@nameuse{scr@dsc@style@\@nameuse{scr@\scr@dsc@current @style}@options}% % \end{macrocode} % Dazu kommen einige Optionen, die es schlicht immer gibt: % \begin{description}\item[\texttt{expandtopt}] Schalter, um die Längen zur % Definitionszeit statt zur Anwendungszeit komplett zu expandieren. Das % bedingt dann aber auch, dass die Längen nicht mehr abhängig von der % aktuellen Schriftgröße sind.\end{description} % \begin{macrocode} \FamilyBoolKey[.dsc]{KOMAarg}{expandtopt}{scr@dsc@expandtopt}% \scr@dsc@expandtoptfalse % \end{macrocode} % \begin{description}\item[\texttt{increaselevel}] Automatische Erhöhung des % Wertes von Option \texttt{level} mit Säumniswert 1. Diese Option wird nur % definiert, wenn \cs{DeclareSectionCommands} verwendet wurde, was an % \cs{scr@local@levelincrease} erkannt wird.\end{description} % \begin{macrocode} \scr@ifundefinedorrelax{scr@local@levelincrease}{% \RelaxFamilyKey[.dsc]{KOMAarg}{increaselevel}% }{% \FamilyCounterMacroKey[.dsc]{KOMAarg}{increaselevel}[1]% {\scr@local@levelincrease}% }% % \end{macrocode} % \begin{description}\item[\texttt{level}] nummerische % Gliederungsebene\end{description} % \begin{macrocode} \scr@ifundefinedorrelax{scr@local@leveloffset}{% \edef\reserved@a{% \noexpand\FamilyCounterMacroKey[.dsc]{KOMAarg}{level}{% \expandafter\noexpand\csname \scr@dsc@current numdepth\endcsname}% }\reserved@a }{% \edef\reserved@a{% \noexpand\DefineFamilyKey[.dsc]{KOMAarg}{level}{% \noexpand\FamilySetCounterMacro{KOMAarg}{level}{% \expandafter\noexpand\csname \scr@dsc@current numdepth\endcsname }% \unexpanded{% {\numexpr ##1+\scr@local@leveloffset\relax}% \edef\scr@local@leveloffset{% \the\numexpr\scr@local@leveloffset+\scr@local@levelincrease\relax }% }% }% }\reserved@a }% % \begin{description}\item[\texttt{counterwithin}] Der Zähler dieser Ebene % soll abhängen vom angegebenen Zähler. % \end{description} % \begin{macrocode} \FamilyStringKey[.dsc]{KOMAarg}{counterwithin}{\scr@local@counterwithin}% \let\scr@local@counterwithin\relax % \end{macrocode} % \begin{description}\item[\texttt{toclevel}] Ebene im Inhaltsverzeichnis % (Voreinstellung ist derselbe Wert wie für level)\end{description} % \begin{macrocode} \scr@ifundefinedorrelax{scr@local@tocleveloffset}{% \edef\reserved@a{% \noexpand\FamilyCounterMacroKey[.dsc]{KOMAarg}{toclevel}{% \expandafter\noexpand\csname \scr@dsc@current tocdepth\endcsname}% }\reserved@a }{% \edef\reserved@a{% \noexpand\DefineFamilyKey[.dsc]{KOMAarg}{toclevel}{% \noexpand\FamilySetCounterMacro{KOMAarg}{toclevel}{% \expandafter\noexpand\csname \scr@dsc@current tocdepth\endcsname }% \unexpanded{% {\numexpr ##1+\scr@local@tocleveloffset\relax}% \edef\scr@local@tocleveloffset{% \the\numexpr\scr@local@tocleveloffset +\scr@local@levelincrease\relax }% }% }% }\reserved@a }% % \end{macrocode} % \begin{description}\item[\texttt{tocindent}] Einzug des % Inhaltsverzeichniseintrags\end{description} % \begin{macrocode} \DefineFamilyKey[.dsc]{KOMAarg}{tocindent}{% \FamilySetLength{KOMAarg}{#2}{\@tempskipa}{##1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed \ifscr@dsc@expandtopt \expandafter\edef\csname scr@\scr@dsc@current @tocindent\endcsname{% \the\@tempskipa}% \else \expandafter\edef\csname scr@\scr@dsc@current @tocindent\endcsname{% ##1}% \fi \fi }% % \end{macrocode} % \begin{description}\item[\texttt{tocnumwidth}] Breite der Nummer des % Inhaltsverzeichniseintrags\end{description} % \begin{macrocode} \DefineFamilyKey[.dsc]{KOMAarg}{tocnumwidth}{% \FamilySetLength{KOMAarg}{#2}{\@tempskipa}{##1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed \ifscr@dsc@expandtopt \expandafter\edef\csname scr@\scr@dsc@current @tocnumwidth\endcsname{% \the\@tempskipa}% \else \expandafter\edef\csname scr@\scr@dsc@current @tocnumwidth\endcsname{% ##1}% \fi \fi }% % \end{macrocode} % Optionen ausführen: % \begin{macrocode} \FamilyExecuteOptions[.dsc]{KOMAarg}{#1}% % \end{macrocode} % Testen, ob alle benötigten Optionen für die (Um-)Definierung des % Gliederungsbefehls gesetzt sind: % \begin{macrocode} \begingroup \scr@ifundefinedorrelax{\scr@dsc@current numdepth}{% \scr@declaresectioncommanderror{\scr@dsc@current}{section level}{level}% }{}% \scr@ifundefinedorrelax{scr@\scr@dsc@current @tocindent}{% \scr@declaresectioncommanderror{\scr@dsc@current}{toc entry indent} {tocindent}% }{}% \scr@ifundefinedorrelax{scr@\scr@dsc@current @tocnumwidth}{% \scr@declaresectioncommanderror{\scr@dsc@current}{toc entry number width}{tocnumwidth}% }{}% \@nameuse{scr@dsc@style@% \@nameuse{scr@\scr@dsc@current @style}% @neededoptionstest}% \endgroup % \end{macrocode} % Wenn alle Informationen für die (Um-)Definierung des Gliederungsbefehls % zusammen sind \dots % \begin{macrocode} \@firstofone{% % \end{macrocode} % Zunächst sicherstellen, dass der Zähler existiert und ggf. dessen % Ausgabe anpassen: % \begin{macrocode} \@ifundefined{c@#2}{\newcounter{#2}}{}% \ifx\scr@local@counterwithin\relax \else\ifx\scr@local@counterwithin\@empty \@namedef{the#2}{\arabic{#2}}% \else \@removefromreset{#2}{\scr@local@counterwithin}% \@addtoreset{#2}{\scr@local@counterwithin}% \expandafter\def\csname the#2\expandafter\endcsname{% \csname the\scr@local@counterwithin\endcsname.\arabic{#2}}% \fi \fi \@ifundefined{#2format}{% \@namedef{#2format}{\csname the#2\endcsname\autodot\enskip}% }{}% % \end{macrocode} % Dann den eigentlichen Gliederungsbefehl definieren: % \begin{macrocode} \ifscr@dsc@parametersonly \ClassInfo{\KOMAClassName}{% not defining `\expandafter\string\csname #2\endcsname' due to\MessageBreak empty section style option% }% \else \scr@ifundefinedorrelax{% scr@dsc@def@style@\@nameuse{scr@#2@style}@command% }{% \ClassWarning{\KOMAClassName}{% not defining `\expandafter\string\csname #2\endcsname' due\MessageBreak to not yet defined section style\MessageBreak `\@nameuse{scr@#2@style}'% }% }{% \@nameuse{scr@dsc@def@style@\@nameuse{scr@#2@style}@command}{#2}% }% \fi % \end{macrocode} % Zu jedem Gliederungsbefehl gehört auch ein Befehl für den Kolumnentitel, der % bei \KOMAScript{} außerdem eine Formatierung des Zählers benötigt. Falls % \textsf{scrlayer} geladen ist, wird das über dessen Befehl % |\DeclareSectionNumberDepth| erledigt, sonst direkt: % \changes{v3.15a}{2015/01/21}{fix: \cs{endskip} statt \cs{enskip}}^^A % \begin{macrocode} \@ifundefined{DeclareSectionNumberDepth}{% \@ifundefined{#2markformat}{% \@namedef{#2markformat}{\csname the#2\endcsname\autodot\enskip}% }{}% \@ifundefined{#2mark}{% \expandafter\let\csname #2mark\endcsname\@gobble }{}% }{% \DeclareSectionNumberDepth{#2}{\csname #2numdepth\endcsname}% }% % \end{macrocode} % Und es gehören Befehle dazu, um einen Eintrag ins Inhaltsverzeichnis zu % schreiben und den Eintrag auch darzustellen: % \begin{macrocode} \scr@ifundefinedorrelax{#2tocdepth}{% \expandafter\let\csname #2tocdepth\expandafter\endcsname \csname #2numdepth\endcsname }{}% \expandafter\providecommand\expandafter*% \csname add#2tocentry\endcsname[2]{% \addtocentrydefault{#2}{##1}{##2}% }% \scr@ifundefinedorrelax{l@#2}{% \expandafter\edef\csname l@#2\endcsname{% \noexpand\bprot@dottedtocline \expandafter\noexpand\csname #2tocdepth\endcsname \expandafter\noexpand\csname scr@#2@tocindent\endcsname \expandafter\noexpand\csname scr@#2@tocnumwidth\endcsname }% }{}% }% }% \let\scr@dsc@current\relax } % \end{macrocode} % \begin{macro}{\scr@declaresectioncommanderror} % \changes{v3.15}{2014/11/21}{neue (interne) Anweisung}^^A % Gibt einen Fehler aus, falls \cs{DeclareSectionCommand} zu wenige Optionen % übergeben wurde. Das erste Argument ist der Name des zu deklarierenden % Befehls, das zweite ist eine textuelle Beschreibung der fehlenden Option und % das dritte ist der Name der fehlenden Option. Als Seiteneffekt sorgt der % Befehl dafür, dass die Deklaration nicht stattfindet. % \begin{macrocode} \newcommand*{\scr@declaresectioncommanderror}[3]{% \ClassError{\KOMAClassName}{% #2 of \expandafter\string\csname #1\endcsname\space unknown% }{% Please use option `#3' to declare the #2.\MessageBreak If you'll continue, declaration will be ignored% }% \aftergroup\@gobbletwo } % \end{macrocode} % \end{macro}^^A \scr@declaresectioncommanderror % \end{macro}^^A \DeclareSectionCommand % % \begin{macro}{\DeclareNewSectionCommand} % \changes{v3.15}{2014/11/21}{neue Anweisung}^^A % Basierend auf |\DeclareSectionCommand| wird eine Gliederungsanweisung % definiert, die zuvor noch nicht existierte. Wichtig zu bemerken ist, dass % die ganzen Hilfsanweisungen bereits existieren dürfen. % \begin{macrocode} \newcommand*{\DeclareNewSectionCommand}[2][]{% \@ifundefined{#2}{% \DeclareSectionCommand[{#1}]{#2}% }{% \ClassError{\KOMAClassName}{% command `\expandafter\string\csname #1\endcsname` already defined% }{% You've tried to define the section command `\expandafter\string\csname #1\endcsname` newly,\MessageBreak but a command, token, box or length with this name already exists.\MessageBreak Maybe you should use one of \string\DeclareSectionCommand, \string\RedeclareSectionCommand,\MessageBreak or \string\ProvideSectionCommand.\MessageBreak If you'll continue, the command will be irgnored.% }% }% } % \end{macrocode} % \end{macro}^^A \DeclareNewSectionCommand % % \begin{macro}{\RedeclareSectionCommand} % \changes{v3.15}{2014/11/21}{neue Anweisung}^^A % Basierend auf |\DeclareSectionCommand| wird eine Gliederungsanweisung % umdefiniert, die zuvor bereits existierte. Wichtig zu bemerken ist, dass % die ganzen Hilfsanweisungen nicht zu exisieren brauchen. % \begin{macrocode} \newcommand*{\RedeclareSectionCommand}[2][]{% \@ifundefined{#2}{% \ClassError{\KOMAClassName}{% command `\expandafter\string\csname #1\endcsname` not defined% }{% You've tried to re-define the section command `\expandafter\string\csname #1\endcsname`,\MessageBreak but a command with this name does not exists.\MessageBreak Maybe you should use one of \string\DeclareSectionCommand, \string\DeclareNewSectionCommand,\MessageBreak or \string\ProvideSectionCommand.\MessageBreak If you'll continue, the command will be irgnored.% }% }{% \DeclareSectionCommand[{#1}]{#2}% }% } % \end{macrocode} % \end{macro}^^A \RedeclareSectionCommand % % \begin{macro}{\ProvideSectionCommand} % \changes{v3.15}{2014/11/21}{neue Anweisung}^^A % Basierend auf |\DeclareSectionCommand| wird eine Gliederungsanweisung % definiert, wenn sie zuvor noch nicht existierte. Wichtig zu bemerken ist, % dass die ganzen Hilfsanweisungen bereits existieren dürfen. % \begin{macrocode} \newcommand*{\ProvideSectionCommand}[2][]{% \@ifundefined{#2}{% \DeclareSectionCommand[{#1}]{#2}% }{% \ClassInfo{\KOMAClassName}{% \string\ProvideSectionCommand{#1} ignored% }% }% } % \end{macrocode} % \end{macro}^^A \ProvideSectionCommand % % \begin{macro}{\DeclareSectionCommands} % \changes{v3.15}{2014/12/03}{neue Anweisung}^^A % Basierend auf \cs{DeclareSectionCommand} können gleich mehrere % Gliederungsanweisungen definiert werden. Dabei sorgt Option % \texttt{increaselevel} dafür, dass die Werte von \texttt{level} und % \texttt{toclevel} automatisch von Befehl zu Befehl um den angegebenen Wert % (Default ist 1) erhöht werden. % \begin{macrocode} \newcommand*{\DeclareSectionCommands}[2][]{% \edef\reserved@a{#2}% \let\scr@local@levelincrease\z@ \let\scr@local@leveloffset\z@ \let\scr@local@tocleveloffset\z@ \@for\reserved@a:=\reserved@a\do{% \edef\reserved@a{% \unexpanded{\DeclareSectionCommand[{#1}]}{\reserved@a}% }% \reserved@a }% \let\scr@local@levelincrease\relax \let\scr@local@leveloffset\relax \let\scr@local@tocleveloffset\relax } % \end{macrocode} % \end{macro}^^A \DeclareSectionCommands % % \begin{macro}{\DeclareNewSectionCommands} % \changes{v3.15}{2014/12/03}{neue Anweisung}^^A % Im Unterschied zu \cs{DeclareNewSectionCommand} führt diese Anweisung die % Änderung auch dann aus, wenn die Anweisung bereits deklariert war. Eine % Fehlermeldung wird aber natürlich trotzdem ausgegeben. Dieser Unterschied % ist jedoch notwendig, weil sonst Option \texttt{increaselevel} für % nachfolgende Befehle nicht mehr korrekt arbeiten würde. % \begin{macrocode} \newcommand*{\DeclareNewSectionCommands}[2][]{% \edef\reserved@a{#2}% \let\scr@local@levelincrease\z@ \let\scr@local@leveloffset\z@ \let\scr@local@tocleveloffset\z@ \@for\reserved@a:=\reserved@a\do{% \@ifundefined{\reserved@a}{}{% \ClassError{\KOMAClassName}{% command `\expandafter\string\csname\reserved@a\endcsname` already defined% }{% You've tried to define the section command `\expandafter\string\csname\reserved@a\endcsname` newly,\MessageBreak but a command, token, box or length with this name already exists.\MessageBreak Maybe you should use one of \string\DeclareSectionCommand, \string\RedeclareSectionCommand,\MessageBreak or \string\ProvideSectionCommand.\MessageBreak Nevertheless, if you'll continue, the command will be defined.% }% }% \edef\reserved@a{% \unexpanded{\DeclareSectionCommand[{#1}]}{\reserved@a}% }% \reserved@a }% \let\scr@local@levelincrease\relax \let\scr@local@leveloffset\relax \let\scr@local@tocleveloffset\relax } % \end{macrocode} % \end{macro}^^A \DeclareNewSectionCommands % % \begin{macro}{\RedeclareSectionCommands} % \changes{v3.15}{2014/12/03}{neue Anweisung}^^A % Im Unterschied zu \cs{RedeclareNewSectionCommands} führt diese Anweisung die % Änderung auch dann aus, wenn die Anweisung noch nicht deklariert war. Eine % Fehlermeldung wird aber natürlich trotzdem ausgegeben. Dieser Unterschied % ist jedoch notwendig, weil sonst Option \texttt{increaselevel} für % nachfolgende Befehle nicht mehr korrekt arbeiten würde. % \begin{macrocode} \newcommand*{\RedeclareSectionCommands}[2][]{% \edef\reserved@a{#2}% \let\scr@local@levelincrease\z@ \let\scr@local@leveloffset\z@ \let\scr@local@tocleveloffset\z@ \@for\reserved@a:=\reserved@a\do{% \@ifundefined{\reserved@a}{% \ClassError{\KOMAClassName}{% command `\expandafter\string\csname\reserved@a\endcsname` not defined% }{% You've tried to re-define the section command `\expandafter\string\csname\reserved@a\endcsname`,\MessageBreak but a command with this name does not exists.\MessageBreak Maybe you should use one of \string\DeclareSectionCommand, \string\DeclareNewSectionCommand,\MessageBreak or \string\ProvideSectionCommand.\MessageBreak Nevertheless, if you'll continue, the command will be defined.% }% }{}% \edef\reserved@a{% \unexpanded{\DeclareSectionCommand[{#1}]}{\reserved@a}% }% \reserved@a }% \let\scr@local@levelincrease\relax \let\scr@local@leveloffset\relax \let\scr@local@tocleveloffset\relax } % \end{macrocode} % \end{macro}^^A \RedeclareSectionCommands % % \begin{macro}{\ProvideSectionCommands} % \changes{v3.15}{2014/12/03}{neue Anweisung}^^A % \changes{v3.17}{2015/03/23}{Umbau, um stilabhängige Optionen zu % ermöglichen}^^A % Hier wird es nun wirklich schwierig, weil wir irgendwie dafür sorgen müssen, % dass Option \texttt{increaselevel} funktioniert, auch wenn gar nichts % definiert werden darf. Das macht die Geschichte ein wenig auswändig. % \begin{macrocode} \newcommand*{\ProvideSectionCommands}[2][]{% \edef\reserved@a{#2}% \let\scr@local@levelincrease\z@ \let\scr@local@leveloffset\z@ \let\scr@local@tocleveloffset\z@ \@for\reserved@a:=\reserved@a\do{% \@ifundefined{\reserved@a}{% \edef\reserved@a{% \unexpanded{\DeclareSectionCommand[{#1}]}{\reserved@a}% }% \reserved@a }{% % \end{macrocode} % Wenn die Anweisung bereits definiert ist, dann müssen wir trotzdem die % Optionen auswerten, wobei allerdings nur die Option \texttt{level} und % \texttt{increaselevel} eine Wirkung haben dürfen. Der Rest wird per % dummy-Optionen erledigt. % \begin{macrocode} \scr@dsc@dummyoptions \FamilyCounterMacroKey[.dsc]{KOMAarg}{increaselevel}[1]% {\scr@local@levelincrease}% \DefineFamilyKey[.dsc]{KOMAarg}{level}{% \FamilySetCounterMacro{KOMAarg}{level}{\reserved@b}{##1}% \edef\scr@local@leveloffset{% \the\numexpr\scr@local@leveloffset+\scr@local@levelincrease\relax }% \edef\scr@local@tocleveloffset{% \the\numexpr\scr@local@tocleveloffset+\scr@local@levelincrease\relax }% }% \FamilyExecuteOptions[.dsc]{KOMAarg}{#1}% }% }% \let\scr@local@levelincrease\relax \let\scr@local@leveloffset\relax \let\scr@local@tocleveloffset\relax } % % % \end{macrocode} % \end{macro}^^A \ProvideSectionCommands % % % \subsection{Definitionen für Präambeln} % % Bei den \KOMAScript-Klassen \textsf{scrbook} und \textsf{scrreprt} % können \cs{part} und \cs{chapter} mit Präambeln versehen werden. Es % wird gleichzeitig eine Präambel über und unter der jeweiligen % Überschrift unterstützt. % % \begin{macro}{\use@preamble} % \changes{v2.8p}{2001/09/25}{neu (intern)}^^A % Dieses Makro dient allgemein zum Setzen einer Präambel (für % Gliederungsüberschriften), wenn eine solche definiert ist. Als % Argument wird der Name der Präambel übergeben, an den automatisch % \texttt{@preamble} angehängt wird. Zum Schluss wird die gespeicherte % Präambel gelöscht. % \begin{macrocode} %<*class> %<*book|report> %<*body> \newcommand*{\use@preamble}[1]{% \@ifundefined{#1@preamble}{}{% \@nameuse{#1@preamble}% \global\expandafter\let\csname#1@preamble\endcsname=\relax }% } % \end{macrocode} % \end{macro} % \begin{macro}{\set@preamble} % \changes{v2.8p}{2001/09/25}{neu (intern)}^^A % Das Makro \cs{set@preamble} dient allgemein der Defintion einer % Präambel (für Gliederungsüberschriften). Als Argument wird der % Name der Gliederungsebene übergeben. Danach folgt ein optionales % Argument, das die Position der Präambel angibt. Darauf folgt ein % weiteres optionales Argument, das die Breite der Präambel % angibt. Ist nur ein optionales Argument angegeben, so ist es die % Position. Es folgt ein obligatorisches Argument mit dem Inhalt der % Präambel. Die Definition der Präambel erfolgt global. % \begin{macro}{\set@@preamble} % \changes{v2.8p}{2001/09/25}{neu (intern)}^^A % \begin{macro}{\set@@@preamble} % \changes{v2.8p}{2001/09/25}{neu (intern)}^^A % \begin{macro}{\set@@@@preamble} % \changes{v2.8p}{2001/09/25}{neu (intern)}^^A % \changes{v2.8q}{2001/11/27}{fehlende Klammern ergänzt}^^A % \changes{v3.12}{2012/10/16}{b mit derselben Funktion wie u erlaubt}^^A % \changes{v3.12a}{2014/02/14}{b korrigiert}^^A % Da mehrere optionale Argumente nach einem obligatorischen Argument % auszuwerten sind, werden diverse Hilfsmakros benötigt. % \begin{macrocode} \newcommand*{\set@preamble}[1]{% % \end{macrocode} % Zunächst wird das erste optionale Argument gesucht. % \begin{macrocode} \@ifnextchar [%] {\set@@preamble{#1}}{\set@@@preamble{#1}[][\hsize]}% } \newcommand*{\set@@preamble}{} \def\set@@preamble#1[#2]{% % \end{macrocode} % Wenn ein optionales Argument existiert, kann es auch ein zweites % geben. Wenn nicht, wird mit der Voreinstellung gearbeitet. % \begin{macrocode} \@ifnextchar [%] {\set@@@preamble{#1}[{#2}]}{\set@@@preamble{#1}[{#2}][\hsize]}% } \newcommand{\set@@@preamble}{} \long\def\set@@@preamble#1[#2][#3]#4{% % \end{macrocode} % Dies ist das Hauptmakro, das die eigentliche Arbeit macht. Es muss % \cs{long} definiert werden, da die Präambel auch aus mehreren % Absätzen bestehen kann. % % Zunächst wird das Positionsargument ausgewertet. Dies geschieht mit % lokalen Hilfsmakros und einer Schleife. Zur Funktion der Schleife % siehe im dokumentierten \LaTeX-Kern. % \begin{macrocode} \begingroup \def\prmbl@pos{#2}\let\prmbl@hpos\relax\let\prmbl@vpos\relax \expandafter \@tfor \expandafter \@tempa \expandafter :\expandafter =\prmbl@pos \do{% \if \@tempa l% \set@preamble@hpos{0}{#2}% \fi% \if \@tempa c% \set@preamble@hpos{1}{#2}% \fi% \if \@tempa r% \set@preamble@hpos{2}{#2}% \fi% \if \@tempa u% \set@preamble@vpos{0}{#2}% \fi% \if \@tempa b% \set@preamble@vpos{0}{#2}% \fi \if \@tempa o% \set@preamble@vpos{1}{#2}% \fi% \if \@tempa t% \set@preamble@vpos{1}{#2}% \fi }% % \end{macrocode} % Wurde keine horizontale oder vertikale Ausrichtung definiert, so % wird nun der Standardwert dafür eingesetzt. % \begin{macrocode} \@ifundefined{prmbl@hpos}{\def\prmbl@hpos{0}}{}% \@ifundefined{prmbl@vpos}{\def\prmbl@vpos{0}}{}% % \end{macrocode} % Nun sind die Positionen ermittelt und es werden abhängig davon % entsprechende Päambelmakros definiert. % \begin{macrocode} \ifcase\prmbl@hpos % \end{macrocode} % Zunächst links unten und oben: % \begin{macrocode} \ifcase\prmbl@vpos \set@@@@preamble{#1@u}{t}{#3}{}{\hfil}{#4}% \else \set@@@@preamble{#1@o}{b}{#3}{}{\hfil}{#4}% \fi \or % \end{macrocode} % Dann zentriert unten und oben: % \begin{macrocode} \ifcase\prmbl@vpos \set@@@@preamble{#1@u}{t}{#3}{\hfil}{\hfil}{#4}% \else \set@@@@preamble{#1@o}{b}{#3}{\hfil}{\hfil}{#4}% \fi \else % \end{macrocode} % Zum Schluss rechts und oben: % \begin{macrocode} \ifcase\prmbl@vpos \set@@@@preamble{#1@u}{t}{#3}{\hfil}{}{#4}% \else \set@@@@preamble{#1@o}{b}{#3}{\hfil}{}{#4}% \fi \fi \endgroup } % \end{macrocode} % Es folgt das Makro, mit dem die Definition tatsächlich % stattfindet. Das erste Argument ist der Name der Präambel, das % zweite die Positionsoption für die verwendete \cs{parbox}, das % dritte ist die Breite der \cs{parbox}, dann zwei Argumente mit der % horizontalen Ausrichtung vor und nach der \cs{parbox} und das % sechste Agument ist schließlich der Inhalt der \cs{parbox}. % \begin{macrocode} \newcommand{\set@@@@preamble}[6]{% \expandafter\gdef\csname #1@preamble\endcsname{% \hbox to\hsize{#4\parbox[{#2}]{#3}{#6\par}#5\par}% }% } % \end{macrocode} % % \begin{macro}{\set@preamble@hpos} % \changes{v2.8q}{2001/09/25}{neu (intern)}^^A % Eines der Hilfsmakros dient dazu, die horizontale Position der % Präambel einzustellen, falls dies nicht bereits erfolgt ist. Ist es % bereits nicht über"-einstimmend erfolgt, wird ein Fehler % ausgegeben. Dieses Makro ist extrem intern und funktioniert nur im % Kontext vor \cs{set@preamble}. % \begin{macrocode} \newcommand*{\set@preamble@hpos}[2]{% \@ifundefined{prbml@hpos}{% \def\prmbl@hpos{#1}% }{% \ifnum \prmbl@hpos=0\relax\else% \ClassError{\KOMAClassName}{% inconsistent hpos options% }{% You've said `#2' as position option. But you have to\MessageBreak use only one of `l', `r', or `c' not two of these.\MessageBreak If you'll continue only first hpos option will be used% }% \fi }% } % \end{macrocode} % \end{macro}^^A \set@preamble@hpos % \begin{macro}{\set@preamble@vpos} % \changes{v2.8q}{2001/09/25}{neu (intern)}^^A % Das Hilfsmakro für die vertikale Position funktioniert in gleicher % Weise. % \begin{macrocode} \newcommand*{\set@preamble@vpos}[2]{% \@ifundefined{prbml@vpos}{% \def\prmbl@vpos{#1}% }{% \ifnum \prmbl@vpos=0\relax\else% \ClassError{\KOMAClassName}{% inconsistent vpos options% }{% You've said `#2' as position option. But you have to\MessageBreak use only one of `t', `o', `b', or `u' not two of these.\MessageBreak If you'll continue only first vpos option will be used% }% \fi }% } % % % % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % % \subsubsection{\KOMAScript-eigene Befehle für Verzeichniseinträge} % Wie schon bei den Gliederungsbefehlen genügt \KOMAScript{} nicht, was der % \LaTeX-Kern für Verzeichniseinträge zu bieten hat. % % \begin{macro}{\bprot@dottedtocline} % \changes{v2.96a}{2006/11/30}{neu (intern)}^^A % Dieses Makro wird benötigt, um die Ebenen unterhalb von \cs{chapter} % bzw. \cs{section} im Inhaltsverzeichnis ebenfalls vor unerwünschten % Umbrüchen zwischen Eintrag und Unterebene zu schützen. % \begin{macrocode} %<*class> %<*body> \newcommand*{\bprot@dottedtocline}[5]{% \expandafter\ifnum\scr@v@is@gt{2.96}\relax \ifnum #1>\c@tocdepth \else \begingroup \@tempcnta 20010 \advance \@tempcnta by -#1 \ifnum \@tempcnta>\lastpenalty \endgroup \addpenalty{\@lowpenalty}% \else \endgroup \fi \@dottedtocline{#1}{#2}{#3}{#4}{#5}% \@tempcnta 20009 \advance \@tempcnta by -#1 \penalty\@tempcnta \fi \else \@dottedtocline{#1}{#2}{#3}{#4}{#5}% \fi } % % % \end{macrocode} % \end{macro} % % % \subsection{Grobeinteilung von Büchern} % % Bei Büchern gibt es teilweise eine Einteilung in Vorderteil, Hauptteil und % Endteil, die nicht wirklich eine Gliederung darstellt, sondern auf % Gliederung, Seitennummerierung etc. Einfluss nimmt. % % \begin{macro}{\if@mainmatter} % \begin{macro}{\@mainmattertrue} % \begin{macro}{\@mainmatterfalse} % \changes{v2.3a}{1995/07/08}{\cs{if@mainmatter} Anforderung verschoben}^^A % Über diesen Schalter wird bei Buchklassen festgelegt, ob wir uns im % Hauptteil des Dokuments befinden oder nicht. Die eigentliche % Umschaltung geschieht mit Hilfe der Befehle \cs{frontmatter}, % \cs{mainmatter}, \cs{backmatter}. Ohne Umschaltung befinden wir uns % bereits im Hauptteil. % \begin{macrocode} %<*class> %<*book> %<*body> \newif\if@mainmatter\@mainmattertrue % \end{macrocode} % \end{macro}^^A \@mainmatterfalse % \end{macro}^^A \@mainmattertrue % \end{macro}^^A \if@mainmatter % % \begin{macro}{\frontmatter} % \changes{v2.4e}{1996/07/02}{Option \texttt{openany} beachten}^^A % \changes{v2.5h}{1999/12/29}{Option \texttt{twoside} beachten}^^A % \changes{v3.00}{2008/09/27}{\cs{cleardoubleoddpage} statt % \cs{cleardoublepage}}^^A % Der Vorspann enthält bei Büchern oftmals Inhaltsverzeichnis, Vorwort % und dergleichen und wird mit kleinen römischen Seitenzahlen % versehen. % \begin{macrocode} \newcommand*\frontmatter{% \if@twoside\cleardoubleoddpage\else\clearpage\fi \@mainmatterfalse\pagenumbering{roman}% } % \end{macrocode} % \end{macro}^^A \frontmatter % \begin{macro}{\mainmatter} % \changes{v2.4e}{1996/07/02}{Option \texttt{openany} beachten}^^A % \changes{v2.5h}{1999/12/29}{Option \texttt{twoside} beachten}^^A % \changes{v3.00}{2008/09/27}{\cs{cleardoubleoddpage} statt % \cs{cleardoublepage}}^^A % Der Hauptteil ist das Fleisch der Bücher. % \begin{macrocode} \newcommand*\mainmatter{% \if@twoside\cleardoubleoddpage\else\clearpage\fi \@mainmattertrue\pagenumbering{arabic}% } % \end{macrocode} % \end{macro}^^A \mainmatter % \begin{macro}{\backmatter} % \changes{v3.00}{2008/09/27}{\cs{cleardoubleoddpage} statt % \cs{cleardoublepage}}^^A % Auch wenn nicht ganz einzusehen ist, warum das anders sein soll, % wird hier nicht nach der Option \texttt{twoside}, sondern nach % \texttt{openright} unterschieden. % \begin{macrocode} \newcommand*\backmatter{% \if@openright\cleardoubleoddpage\else\clearpage\fi\@mainmatterfalse } % % % % \end{macrocode} % \end{macro} % % % \subsection{Anhang} % % Teile gibt es tatsächlich bei allen drei Hauptklassen. % % \begin{macro}{\appendix} % Wird der Anhang aktiviert, so werden Kapitel bzw. Abschnitte zukünftig mit % Buchstaben nummeriert. % \changes{v2.2d}{1995/05/28}{\textsf{scrartcl} benötigt keinen Zähler für % \cs{chapter}}^^A % \changes{v2.3c}{1995/08/06}{alternative Nummerierung bei Verwendung eines % Anhangs}^^A % \changes{v2.8}{2001/06/15}{\cs{appendixmore} wird beachtet}^^A % \changes{v2.8e}{2001/07/10}{\cs{@altsecnumformattrue} wird nicht länger % ausgeführt}^^A % \changes{v2.8o}{2001/09/19}{\cs{par} eingefügt}^^A % \changes{v2.95}{2006/07/04}{\cs{newcommand*} durch \cs{gdef} ersetzt}^^A % \changes{v2.95}{2006/07/04}{Ausführung von \cs{appendixmore}^^A % vereinfacht}^^A % \begin{macro}{\appendixmore} % \cs{appendixmore} kann als \emph{hook} verwendet werden. Derzeit wird dieser % allerdings noch recht stiefmütterlich behandelt und lediglich von Option % \texttt{appendixprefix} definiert. % \begin{macrocode} %<*class> %<*body> \newcommand*\appendix{\par% %<*article> \setcounter{section}{0}% \setcounter{subsection}{0}% \gdef\thesection{\@Alph\c@section}% %
%<*report|book> \setcounter{chapter}{0}% \setcounter{section}{0}% \gdef\@chapapp{\appendixname}% \gdef\thechapter{\@Alph\c@chapter}% % \csname appendixmore\endcsname } % % % \end{macrocode} % \end{macro} % \end{macro} % % % \subsection{Teile} % % \changes{v2.8e}{2001/07/10}{\cs{@thepart} entfernt} % % Teile sind bei den unterschiedlichen Klassen unterschiedlich definiert. % % \begin{macro}{\size@part} % \changes{v2.8o}{2001/09/14}{neu (intern)}^^A % \changes{v2.96a}{2006/12/02}{letztes Element darf ein Argument erwarten, % wenn es keine Auswirkung auf den Zeilen abstand hat}^^A % \begin{macro}{\size@partnumber} % \changes{v2.8o}{2001/09/14}{neu (intern)}^^A % \changes{v2.96a}{2006/12/02}{letztes Element darf ein Argument erwarten, % wenn es keine Auswirkung auf den Zeilen abstand hat}^^A % Hier werden diese Befehle nur vordefiniert. Ihre tatsächliche Einstellung % erfolgt über die (Vor-)Auswahl von Option \texttt{headings}. % \begin{macrocode} %<*class> %<*prepare> \newcommand*{\size@part}{} \newcommand*{\size@partnumber}{} % % \end{macrocode} % \end{macro}^^A \size@partnumber % \end{macro}^^A \size@part % % % \begin{macro}{\partheadstartvskip} % \changes{v2.95a}{2006/07/10}{neue Konfiguratonsmöglichkeit}^^A % \changes{v3.15}{2014/11/24}{\textsf{scrartcl} definiert und verwendet % \cs{scr@part@beforeskip}}^^A % \begin{macro}{\partheadmidvskip} % \changes{v2.95a}{2006/07/10}{neue Konfiguratonsmöglichkeit}^^A % \begin{macro}{\partheadendvskip} % \changes{v2.95a}{2006/07/10}{neue Konfiguratonsmöglichkeit}^^A % \changes{v3.15}{2014/11/24}{\textsf{scrartcl} definiert und verwendet % \cs{scr@part@afterskip}}^^A % \begin{macro}{\parheademptypage} % \changes{v3.02}{2009/01/01}{neue Konfigurationsmöglichkeit}^^A % Diese vier Makros werden verwendet, um den Abstand über in und unter der % Überschrift eines Teils und die leere Rückseite zu definieren. Prinzipiell % 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 % \begin{macro}{\scr@part@sectionafterskip} % \changes{v3.15}{2014/11/24}{neue (interne) Anweisung}^^A % \changes{v3.17}{2015/03/25}{umbenannt in \cs{scr@part@afterskip}}^^A % \begin{macro}{\scr@part@sectionindent} % \changes{v3.15}{2014/11/24}{neue (interne) Anweisung (unbenutzt)}^^A % \changes{v3.17}{2015/03/24}{entfernt}^^A % \end{macro}^^A \scr@part@sectionindent % \end{macro}^^A \scr@part@sectionafterskip % \end{macro}^^A \scr@part@sectionbeforeskip % \begin{macro}{\scr@part@beforeskip} % \changes{v3.17}{2015/03/25}{neu (intern) aus Umdefinierung von % \cs{scr@part@ectionbeforeskip}}^^A % \begin{macro}{\scr@part@innerskip} % \changes{v3.17}{2015/03/24}{neu (intern)}^^A % \begin{macro}{\scr@part@afterskip} % \changes{v3.17}{2015/03/25}{neu (intern) aus Umdefinierung von % \cs{scr@part@ectionbeforeskip}}^^A % \begin{macro}{\scr@part@style} % \changes{v3.15}{2014/11/24}{neue (interne) Anweisung}^^A % Es wird der leere Stil verwendet, mit dem Neudefinitionen von \cs{part} % über \cs{DeclareSectionCommand} verhindert werden. % \begin{macrocode} %<*prepare> \newcommand*{\scr@part@beforeskip}{% %
4ex % \end{macrocode} % Hinweis: Das |+\baselineskip| wird benötigt, um Kompatibilitätsprobleme mit % der Umdefinierung von |\chapterheadstartvskip| zu vermeiden. % \begin{macrocode} % \z@ \@plus 1fil + \baselineskip } %\newcommand*{\scr@part@innerskip}{20\p@} \newcommand*{\scr@part@afterskip}{% %
3ex % \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}{% %
\addvspace{\@tempskipa}% % \null\vskip-\baselineskip\vskip\@tempskipa } \newcommand*{\partheadmidvskip}{% \par\nobreak % \vskip\@tempskipa } \newcommand*{\partheadendvskip}{% %
\vskip\@tempskipa % \vskip\@tempskipa\newpage } %<*report|book> \newcommand*{\partheademptypage}{% \if@twoside\if@openright \null% \thispagestyle{empty}% \newpage \fi\fi } % % % \end{macrocode} % \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} %<*body> \newcommand*{\scr@startpart}[1]{% %
\par %<*book|report> \if@openright\cleardoublepage\else\clearpage\fi \thispagestyle{\@nameuse{#1pagestyle}}% \if@twocolumn \onecolumn \@tempswatrue \else \@tempswafalse \fi % \@tempskipa=\glueexpr\@nameuse{scr@#1@beforeskip}\relax\relax \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi \partheadstartvskip %
\@afterindentfalse %<*book|report> \vbox to\z@{\vss\use@preamble{#1@o}\strut\par}% \vskip-\baselineskip\nobreak % \expandafter\SecDef\csname @#1\expandafter\endcsname\csname @s#1\endcsname } % \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{% % \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#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{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 \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 % \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{#1}{% \usekomafont{#1prefix}{\@nameuse{#1format}}% % \setlength{\@tempskipa}{\@nameuse{scr@#1@innerskip}}% \partheadmidvskip }{}% \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 \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\@nameuse{scr@#1@afterskip}\relax\relax \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi \partheadendvskip \@afterheading %
% \@nameuse{@end#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]{% % \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\usekomafont{#1}{#2}\strut\@mkboth{}{}\par \endgroup %<*article> \nobreak \@tempskipa=\glueexpr\csname scr@#1@afterskip\endcsname\relax\relax \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi \partheadendvskip \@afterheading %
% \@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*{\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 \if@tempswa \twocolumn \fi } % % \end{macrocode} % \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}^^A \hy@insteadofrefstepcounter % % \begin{macro}{\addparttocentry} % \changes{v3.08}{2010/11/01}{Neu}^^A % Seit Version~3.08 wird der Eintrag nicht direkt innerhalb von \cs{part} % per \cs{addcontentsline} erzeugt, sondern indirekt über diese Anweisung. Das % erste Argument ist dabei die (formatierte) Nummer bzw. bei nicht % nummerierten Teilen leer. Das zweite Argument ist der Überschriftstext für % das Verzeichnis. Durch diesen indirekten Weg, kann die Anweisung einfach % umdefiniert werden. Verwendet wird hier die Standardanweisung für % Inhaltsverzeichniseinträge, die in \texttt{scrkliof.dtx} definiert ist: % \begin{macrocode} \newcommand*{\addparttocentry}[2]{% \addtocentrydefault{part}{#1}{#2}% } % \end{macrocode} % \end{macro}^^A \addparttocentry % % % \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 % \changes{v2.95a}{2006/07/10}{support of preamble added}^^A % \changes{v3.11b}{2012/07/29}{missing negativ \cs{vskip} added}^^A % \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 % \changes{v2.95}{2004/07/20}{kann Kolumnentitel erzeugen}^^A % \changes{v3.00}{2008/07/01}{Notlösung für \textsf{hyperref} eingefügt}^^A % \changes{v3.08}{2010/11/02}{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 % \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{% \SecDef\@addpart\@saddpart } \newcommand*{\@addpart}{} \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 } \newcommand{\@saddpart}[1]{% \part*{#1}% \addpartmark{}% } % \end{macrocode} % \end{macro}^^A \@saddpart % \end{macro}^^A \@addpart % \end{macro}^^A \addpart % % % \begin{macro}{\l@part} % \changes{v2.97c}{2007/06/21}{\cs{sectfont}\cs{large} durch Verwendung von % Element \texttt{partentry} ersetzt}^^A % \changes{v2.97c}{2007/06/21}{Element \texttt{partentrypagenumber} wird % verwendet}^^A % \changes{v3.15}{2014/12/23}{Verwendung von \cs{parttocdepth} und % \cs{scr@part@numwidth}}^^A % Der Eintrag für \cs{part}. Es werden einige Hilfsmakros passend zu % \cs{DeclareSectionCommand} definiert. Dadurch können diverse Einstellungen % darüber geändert werden. Es kann jedoch derzeit kein neuer Stil zugewiesen % werden. % \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. % \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. % \end{macro} % \begin{macrocode} \newcommand*\l@part[2]{% \ifnum \c@tocdepth <\parttocdepth \else %
\addpenalty{\@secpenalty}% % \addpenalty{-\@highpenalty}% \addvspace{2.25em \@plus\p@}% % \end{macrocode} % \changes{v2.5e}{1998/07/17}{geänderte part-Formatierung ragte in % den linken Rand}^^A % \changes{v2.9k}{2003/01/02}{Anpassung an Option \texttt{tocleft}}^^A % \begin{macrocode} \setlength{\@tempdima}{\scr@part@tocnumwidth}% \if@tocleft \ifx\toc@l@number\@empty\else \setlength\@tempdima{0\toc@l@number}% \fi \fi \begingroup \parindent \z@ \rightskip \@pnumwidth \parfillskip -\@pnumwidth % \end{macrocode} % \changes{v2.5c}{1997/11/25}{Formatierung bei Zeilenumbruch im % part-Eintrag korrigiert}^^A % \changes{v2.5e}{1998/07/17}{beinhaltet \cs{sectfont} eine % Größenangabe, so wird diese überschrieben}^^A % \begin{macrocode} \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip \usekomafont{partentry}{#1\nobreak \usekomafont{partentrypagenumber}{\hfil\nobreak \hb@xt@\@pnumwidth{\hss#2}}}\par % \end{macrocode} % \changes{v2.96b}{2006/11/30}{Umbruch zwischen \cs{part}-Eintrag im % Inhaltsverzeichnis und untergeordneten Einträgen verhindern}^^A % Aus unerfindlichen Gründen war es bis Version~2.96 erlaubt, dass zwischen % der \cs{part}-Überschrift und der nachfolgenden Überschrift ein Umbruch % stattfinden kann. Ab Version~2.96a gilt das nur noch, wenn die nachfolgende % Überschrift wiederum eine \cs{part}-Überschrift ist. % \begin{macrocode} \expandafter\ifnum\scr@v@is@gt{2.96}\relax \endgroup \penalty20010 \else %<*article> \if@compatibility \global\@nobreaktrue % \end{macrocode} % \changes{v2.3g}{1996/01/14}{fehlendes Kommentarzeichen ergänzt}^^A % \begin{macrocode} \everypar{\global\@nobreakfalse\everypar{}}% \else %
\penalty\@highpenalty %
\fi \endgroup \fi \fi } % \end{macrocode} % \end{macro}^^A \l@part % % % \begin{Counter}{part} % \begin{macro}{\thepart} % \begin{macro}{\partformat} % \changes{v2.3c}{1995/08/06}{Duden Regel 6}^^A % \changes{v2.5f}{1999/02/14}{überflüssiges Leerzeichen am Ende % entfernt}^^A % \changes{v2.7h}{2001/04/22}{verlorenen Backslash in \cs{autodot}^^A % wieder eingefügt}^^A % Jede Gliederungsebene benötigt einen Zähler für die Gliederungsnummer und % eine Darstellung des Zählers (\cs{the\dots}). Desweiteren wird eine % Formatierung des Zählers in den Gliederungsüberschriften % (\texttt{\bslash\dots format}) benötigt. % \begin{macrocode} \newcounter{part} \renewcommand*{\thepart}{\@Roman\c@part} \newcommand*{\partformat}{\partname~\thepart\autodot} % \end{macrocode} % \end{macro}^^A \partformat % \end{macro}^^A \thepart % \end{Counter}{part} % % % \begin{macro}{\partname} % Namen der Gliederungsebenen \cs{part}. % \begin{macrocode} \newcommand*\partname{Part} % \end{macrocode} % \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 % \cs{raggedpart} konfiguriert werden. Die Voreinstellung ist von der % Klasse abhängig. % \begin{macrocode} \newcommand*{\raggedpart}{} %
\let\raggedpart\raggedsection %\let\raggedpart\centering % \end{macrocode} % \end{macro} % % \begin{KOMAfont}{part} % \changes{v2.8p}{2001/09/23}{neues Element \texttt{part}}^^A % \begin{macro}{\scr@fnt@part} % \changes{v2.8p}{2001/09/23}{neues Element \texttt{part}}^^A % \begin{KOMAfont}{partnumber} % \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} % \end{KOMAfont} % % \begin{KOMAfont}{partentry} % \changes{v2.97c}{2007/06/21}{neues Font-Element}^^A % \changes{v3.06}{2010/06/09}{Verwendung von \texttt{sectioning} durch % \texttt{disposition} ersetzt}^^A % Schrift für den \cs{part}-Eintrag im Inhaltsverzeichnis. % \begin{macrocode} \newkomafont{partentry}{\usekomafont{disposition}\large} % \end{macrocode} % \end{KOMAfont} % % \begin{KOMAfont}{partentrypagenumber} % \changes{v2.97c}{2007/06/21}{neues Font-Element}^^A % Schrift für die Seitenzahl des \cs{part}-Eintrags im Inhaltsverzeichnis % abweichend von \texttt{partentry}. % \begin{macrocode} \newkomafont{partentrypagenumber}{} % % % \end{macrocode} % \end{KOMAfont} % % % \subsection{Kapitel} % % Bei den Klassen \texttt{scrbook} und \texttt{scrreprt} gibt es im % 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 % \changes{v3.01a}{2008/11/20}{deprecated}^^A % Normalerweise verwenden \textsf{scrbook} und \textsf{scrreprt} nicht % die enorm großen Überschriften von \textsf{book} und % \textsf{report}, die mit einem Absatz "`Kapitel \emph{Nummer}"' % beginnen. Mit der Option \texttt{chapterprefix} kann dies jetzt % wieder aktiviert werden. Die Option, zur Deaktivierung heißt % entsprechend \textsf{nochapterprefix}. % Um für Spezialanwendungen auch innerhalb des Dokuments eine % Umschaltung zu ermöglichen bzw. für die Optionen % \texttt{appendixprefix} und \texttt{noappendixprefix} erfolgt die % Umschaltung durch einen Schalter. % \begin{macrocode} %<*class> %<*book|report> %\newif\if@chapterprefix %<*option> \KOMA@key{chapterprefix}[true]{% \KOMA@set@ifkey{chapterprefix}{@chapterprefix}{#1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed \KOMA@kav@replacebool{.\KOMAClassFileName}% {chapterprefix}{@chapterprefix}% \KOMA@kav@remove{.\KOMAClassFileName}% {headings}{twolinechapter}% \KOMA@kav@remove{.\KOMAClassFileName}% {headings}{onelinechapter}% \KOMA@kav@xadd{.\KOMAClassFileName}% {headings}{% \if@chapterprefix twolinechapter\else onelinechapter\fi }% \fi } \KOMA@DeclareDeprecatedOption{nochapterprefix}{chapterprefix=false} \KOMA@kav@add{.\KOMAClassFileName}{headings}{onelinechapter}% % % \end{macrocode} % \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 % \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit % \cs{FamilyKeyState}}^^A % \changes{v3.17}{2015/03/09}{interne Speicherung des Wert}^^A % \begin{option}{noappendixprefix} % \changes{v2.8}{2001/06/15}{neue Option}^^A % \changes{v2.95c}{2006/08/21}{obsolete Option}^^A % \changes{v3.01a}{2008/11/20}{deprecated}^^A % Will man abweichend von der Option \texttt{chapterprefix} die großen % Überschriften für den Anhang aktivieren oder deaktivieren, so kann man das % mit dieser Option erreichen. Allerdings setzt diese keinen Schalter, sondern % ein Zusatzmakro, das auch für andere Zwecke genutzt werden kann. Übrigens % ist keine der beiden Einstellungen die Voreinstellung! % \begin{macrocode} %<*option> \KOMA@key{appendixprefix}[true]{% \KOMA@set@ifkey{appendixprefix}{@tempswa}{#1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed \KOMA@kav@xreplacevalue{.\KOMAClassFileName}{appendixprefix}{#1}% \KOMA@kav@remove{.\KOMAClassFileName}{headings}{twolineappendix}% \KOMA@kav@remove{.\KOMAClassFileName}{headings}{onelineappendix}% \if@tempswa \KOMA@kav@add{.\KOMAClassFileName}{headings}{twolineappendix}% \@ifundefined{appendixmore}{% \def\appendixmore{\@chapterprefixtrue}% }{% \l@addto@macro\appendixmore{\@chapterprefixtrue}% }% \else \KOMA@kav@add{.\KOMAClassFileName}{headings}{onelineappendix}% \@ifundefined{appendixmore}{% \def\appendixmore{\@chapterprefixfalse}% }{% \l@addto@macro\appendixmore{\@chapterprefixfalse}% }% \fi \fi } \KOMA@DeclareDeprecatedOption{noappendixprefix}{appendixprefix=false} % % \end{macrocode} % \end{option}^^A noappendixprefix % \end{option}^^A appendixprefix % % % \begin{macro}{\size@chapter} % \changes{v2.8o}{2001/09/14}{neu (intern)}^^A % \changes{v2.96a}{2006/12/02}{letztes Element darf ein Argument erwarten, % wenn es keine Auswirkung auf den Zeilen abstand hat}^^A % \begin{macro}{\size@chapterprefix} % \changes{v2.96a}{2006/12/02}{neu (intern)}^^A % Hier werden diese Befehle nur vordefiniert. Ihre tatsächliche Einstellung % erfolgt über die (Vor-)Auswahl von Option \texttt{headings}. % \begin{macrocode} %<*prepare> \newcommand*{\size@chapter}{} \newcommand*{\size@chapterprefix}{\size@chapter} % % \end{macrocode} % \end{macro} % \end{macro} % % % \begin{macro}{\chapterheadstartvskip} % \changes{v3.15}{2014/11/24}{\cs{scr@chapter@beforeskip} wird % definiert und verwendet}^^A % \begin{macro}{\chapterheadendvskip} % \changes{v3.11c}{2013/02/13}{\cs{chapterheadstartvskip} und % \cs{chapterheadendvskip} haben in \textsf{scrartcl} nichts verloren}^^A % \changes{v3.15}{2014/11/24}{\cs{scr@chapter@afterskip} wird % definiert und verwendet}^^A % \changes{v3.15}{2014/12/10}{\cs{vspace} durch \cs{vskip} ersetzt, damit % \cs{lastskip} korrekt gesetzt ist} % \begin{macro}{\chapterheadmidvskip} % \changes{v3.15}{2014/11/20}{neue Anweisung}^^A % \changes{v3.17}{2015/03/25}{\cs{scr@chapter@innerskip} wird % definiert und verwendet}^^A % Mit diesen Anweisungen wird üblicherweise der Abstand zwischen % oberem Rand des Textbereichs und der Überschrift bzw. der Abstand % zwischen der Überschrift und dem Text des Kapitels gesetzt. Man kann % die Anweisungen aber zusätzlich auch für andere Zwecke % missbrauchen. Das ist der Grund warum diese Makros keine Längen, % sondern komplette Anweisungen enthalten. In der Voreinstellung % enthalten sie jedoch gar nichts. Die tatsächlichen Werte werden % durch die Optionen festgelegt. Dabei wird \cs{chapterheadmidvskip} nur % verwendet, wenn Option \texttt{chapterprefix} aktiv ist. % % Zur Erhöhung der Kompatibilität mit \cs{DeclareSectionCommand} werden % 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 % \cs{scr@chapter@beforeskip}}^^A % \begin{macro}{\scr@chapter@afterskip} % \changes{v3.15}{2014/11/24}{neue (interne) Anweisung}^^A % \changes{v3.17}{2015/03/25}{umbenannt in % \cs{scr@chapter@afterskip}}^^A % \begin{macro}{\scr@chapter@sectionindent} % \changes{v3.15}{2014/11/24}{neue (interne) Anweisung (unbenutzt)}^^A % \changes{v3.17}{2015/04/24}{entfernt}^^A % \end{macro}^^A \scr@chapter@sectionindent % \end{macro}^^A \scr@chapter@afterskip % \end{macro}^^A \scr@chapter@beforeskip % \begin{macro}{\scr@chapter@beforeskip} % \changes{v3.17}{2015/03/25}{Neu (intern) aus Umdefinierung von % \cs{scr@chapter@sectionbeforeskip}}^^A % \begin{macro}{\scr@chapter@innerskip} % \changes{v3.17}{2015/03/25}{Neu (intern)}^^A % \begin{macro}{\scr@chapter@afterskip} % \changes{v3.17}{2015/03/25}{Neu (intern) aus Umdefinierung von % \cs{scr@chapter@sectionafterskip}}^^A % \begin{macro}{\scr@chapter@style} % \changes{v3.15}{2014/11/24}{neue (interne) Anweisung}^^A % Dabei wird der leere Stil verwendet, mit dem Neudefinitionen von \cs{part} % über \cs{DeclareSectionCommand} verhindert werden. Gleichzeitig können % jedoch Einstellungen einiger Werte darüber erfolgen. % \begin{macrocode} %<*prepare> \newcommand*{\scr@chapter@beforeskip}{\z@} \let\scr@chapter@beforeskip\z@ \newcommand*{\scr@chapter@afterskip}{\z@} \let\scr@chapter@afterskip\z@ \newcommand*{\scr@chapter@innerskip}{\z@} \let\scr@chapter@sectionindent\z@ \newcommand*{\scr@chapter@style}{chapter} % \end{macrocode} % \end{macro}^^A \scr@chapter@style % \end{macro}^^A \scr@chapter@sectionindent % \end{macro}^^A \scr@chapter@beforeskip % \end{macro}^^A \scr@chapter@afterskip % \begin{macrocode} \newcommand*{\chapterheadstartvskip}{\vspace{\@tempskipa}} \newcommand*{\chapterheadendvskip}{\vskip\@tempskipa} \newcommand*{\chapterheadmidvskip}{\par\nobreak\vskip\@tempskipa} % % \end{macrocode} % \end{macro}^^A \chapterheadmidvskip % \end{macro}^^A \chapterheadendvskip % \end{macro}^^A \chapterheadstartvskip % % % \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*{\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} % % \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}{% % \if@mainmatter \@tempswatrue % \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 % \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 % \changes{v2.8q}{2001/11/27}{fehlende Klammern ergänzt}^^A % \begin{macro}{\@topnewpage} % \changes{v2.7b}{2001/01/05}{neu (\LaTeX{} intern)}^^A % \changes{v2.7g}{2001/04/17}{vergessenes \cs{long} ergänzt}^^A % \changes{v3.01}{2008/11/13}{Verwendung von % \cs{scr@float@addtolists@warning} (aus \texttt{scrkliof.dtx})}^^A % Interessant ist dabei die Erweiterung, daß jedes Kapitel mit einer % Präambel versehen werden kann. Diese wird im zweispaltigen Satz wie % die Überschrift selbst einspaltig gesetzt. Intern wird dies für % die Preambel des Index und der Bibliography verwendet. Dabei % entsteht aber wiederum das Problem, dass der Indexkopf innerhalb von % \cs{twocolumn} ausgegeben wird andererseits aber innerhalb von % \cs{chapter} das Makro \cs{@topnewpage} verwendet wird. Damit würde % dann also \cs{@topnewpage} innerhalb von \cs{@topnewpage} % aufgerufen. Das ist jedoch nicht erlaubt. Als muss der Aufruf von % \cs{@topnewpage} in \cs{@chapter} und \cs{@schapter} verhindert % werden, wenn wir uns bereits in \cs{@topnewpage} befinden. Eine % Möglichkeit dafür wäre, einen Schalter in den Index-Kopf % einzubauen. Ich wähle hingegen die Methode, \cs{@topnewpage} % entsprechend umzudefinieren. Damit kann dann auch der Anwender % \cs{@chapter} innerhalb des optionalen Arguments von \cs{twocolumn} % verwenden. Ein Schalter wird allerdings trotzdem gebraucht. % \begin{macrocode} \newif\if@at@twocolumn \newcommand*\scr@topnewpage{} \let\scr@topnewpage\@topnewpage \long\def\@topnewpage[#1]{% \@at@twocolumntrue\scr@topnewpage[{#1}]\@at@twocolumnfalse } % \end{macrocode} % \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}% % \if@mainmatter \def\IfUseNumber{\ifnumbered{#1}}% % \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}[1]{% {% \settoheight{\@tempdima}{% \@tempskipa=\glueexpr \csname scr@#1@beforeskip\endcsname\relax\relax \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi \vbox{\chapterheadstartvskip}% }% \settodepth{\@tempdimb}{% \@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{#1@o}% }% \setlength{\@tempdimb}{\ht0}% \addtolength{\@tempdimb}{\dp0}% \vbox to \z@{% \vskip-\baselineskip \vbox to \@tempdima{% \vfill \box\z@ }% \vss }\vskip-\parskip\vskip-\baselineskip \ifdim \@tempdimb>\@tempdima% \addtolength{\@tempdimb}{-\@tempdima}% \ifdim\@tempdimb<\vfuzz \ClassInfo{\KOMAClassName}{% 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 #1 is \the\@tempdimb\space to high.\MessageBreak To avoid the overfull \string\vbox\space you may 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 }% \fi \fi% }% } % \end{macrocode} % \end{macro}^^A \use@chapter@o@preamble % \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 % \changes{v3.12}{2013/09/24}{Verwendung von \cs{addxcontentsline}}^^A % Seit Version~3.08 wird der Eintrag nicht direkt innerhalb von \cs{chapter} % per \cs{addcontentsline} erzeugt, sondern indirekt über diese Anweisung. Das % erste Argument ist dabei die (formatierte) Nummer bzw. bei nicht % nummerierten Kapiteln leer. Das zweite Argument ist der Überschriftstext für % das Verzeichnis. Durch diesen indirekten Weg, kann die Anweisung einfach % umdefiniert werden. Verwendet wird hier die Standardanweisung für % Inhaltsverzeichniseinträge, die in \texttt{scrkliof.dtx} definiert ist: % \begin{macrocode} \newcommand*{\addchaptertocentry}[2]{% \addtocentrydefault{chapter}{#1}{#2}% \if@chaptertolists \doforeachtocfile{% \iftocfeature{\@currext}{chapteratlist}{% \addxcontentsline{\@currext}{chapteratlist}[{#1}]{#2}% }{}% }% \@ifundefined{float@addtolists}{}{\scr@float@addtolists@warning}% \fi } % \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{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{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 \@@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 % \changes{v2.0e}{1994/08/10}{\cs{addcontensline} durch % \cs{addcontentsline} ersetzt}^^A % \changes{v2.0e}{1994/08/10}{\cs{@makechapterhead} durch % \cs{@makeschapterhead} ersetzt}^^A % \changes{v2.0e}{1994/08/10}{\cs{afterheadings} durch % \cs{@afterheading} ersetzt}^^A % \changes{v2.1a}{1994/10/29}{Argument von \cs{chaptermark}^^A % entfernt bei \textsf{scrbook}}^^A % \changes{v2.0e}{1994/10/12}{mehrfach \cs{markboth} durch % \cs{sectionmark} ersetzt}^^A % \changes{v2.2b}{1995/03/20}{\cs{chaptermark} durch \cs{@mkboth} % ersetzt}^^A % \changes{v2.8d}{2001/07/05}{\cs{chapterpagestyle} statt % \texttt{plain}}^^A % \changes{v3.00}{2008/07/01}{jetzt auch Kapiteleinträge in andere % float-Verzeichnisse mit hyperref}^^A % \changes{v3.01}{2008/11/13}{Verwendung von % \cs{scr@float@addtolists@warning} (aus \texttt{scrkliof.dtx})}^^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 % \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 % Kolumnentitel korrigiert wird und ein Eintrag ins Inhaltsverzeichnis % erfolgt (nicht in der Stern-Variante). % % Die Definition von \cs{addcap} sah bis zu Version 2.7 so aus: % \begin{verbatim} % \newcommand\addchap{\if@openright\cleardoublepage\else\clearpage\fi % \thispagestyle{plain}% % \global\@topnum\z@ % \@afterindentfalse % \secdef\@addchap\@saddchap} % \def\@addchap[#1]#2{\typeout{#2} % \addcontentsline{toc}{chapter}{#1} % \if@twoside\@mkboth{#1}{}\else\@mkboth{}{#1}\fi % \addtocontents{lof}{\protect\addvspace{10\p@}}% % \addtocontents{lot}{\protect\addvspace{10\p@}}% % \if@twocolumn % \@topnewpage[\@makeschapterhead{#2}]% % \else % \@makeschapterhead{#2}% % \@afterheading % \fi} % \def\@saddchap#1{\@mkboth{}{} % \if@twocolumn % \@topnewpage[\@makeschapterhead{#1}]% % \else % \@makeschapterhead{#1}% % \@afterheading % \fi} % \end{verbatim}\vspace{-\baselineskip} % Dies führte jedoch zu Problemen im Zusammenhang mit % \textsf{hyperref}, da hierbei keine korrekten Links erzeugt % werden. Mit dem \texttt{hypertex}-Treiber von \textsf{hyperref} % bis Version 6.71a werden auch in der neuen Implementierung keine % korrekten Links erzeugt. Dies ist jedoch ein Bug in jenem % Treiber. Mit neuen Versionen tritt das Problem nicht mehr auf. % Deshalb wurde der Code wie folgt vereinfacht. Von wesentlicher % Bedeutung ist dabei der Aufruf von \cs{chapter*}, da in % \texttt{hpdftex.def} das interne Makro \cs{@schapter} so umdefiniert % wird, dass ein korrekter Link erzeugt wird. % \begin{macro}{\@addchap} % \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{% \SecDef\@addchap\@saddchap }% \newcommand*{\@addchap}{}% \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{}% }% % \end{macrocode} % In \texttt{hyperref} bis Version 6.71a ist ein dicker Bug. In % verschiedenen \texttt{def}-Dateien wird dort das \emph{interne} % \KOMAScript-Makro \cs{@addchap} umdefiniert, ohne sicherzustellen, % dass das Makro auch noch so aussieht, wie man das erwartet hat. Die % sauberste Lösung wäre sicher gewesen dort \cs{@addchap} nur zu % ergänzen, so wie man das auch bei \cs{@schapter} gemacht hatte. Ab % Version 6.71b ist dieser Bug behoben. Damit ich nicht eines Fehlers % verdächtigt werde, wird ggf. eine entsprechende Meldung ausgegeben. % \changes{v2.7e}{2001/04/16}{fehlende, schließende Klammer % ergänzt}^^A % \changes{v2.7f}{2001/04/17}{fehlendes Klammerpaar ergänzt}^^A % \changes{v2.8q}{2001/11/17}{\cs{AfterPackage} zur Überprüfung der % \textsf{hyperref}-Version verwendet} % \begin{macrocode} %<*book> \AfterPackage{hyperref}{% \@ifpackagelater{hyperref}{2001/02/19}{}{% \ClassWarningNoLine{\KOMAClassName}{% You are using an old version of hyperref package!\MessageBreak% This version has a buggy hack at many drivers\MessageBreak% causing \string\addchap\space to behave strange.\MessageBreak% Please update hyperref to at least version 6.71b}}} % % \end{macrocode} % \end{macro}^^A \@saddchap % \end{macro}^^A \@addchap % \end{macro}^^A \addchap % % % \begin{macro}{\l@chapter} % \changes{v2.9k}{2003/01/02}{Anpassung an Option \texttt{tocleft}}^^A % \changes{v2.96b}{2006/11/30}{Umbruch zwischen \cs{chapter}-Eintrag im % Inhaltsverzeichnis und übergeordneten Einträgen verhindern}^^A % \changes{v2.96b}{2006/11/30}{Umbruch zwischen \cs{chapter}-Eintrag im % Inhaltsverzeichnis und untergeordneten Einträgen verhindern}^^A % \changes{v2.97c}{2007/06/21}{\cs{sectfont} durch Verwendung von % Element \texttt{chapterentry} ersetzt}^^A % \changes{v2.97c}{2007/06/21}{Element \texttt{chapterentrypagenumber} wird % verwendet}^^A % \changes{v2.97c}{2007/06/21}{weitgehend umgeschrieben, um linksbündige % Einträge zu ermöglichen}^^A % \changes{v3.15}{2014/12/22}{Verwendung von \cs{chaptertocdepth} und % \cs{scr@chapter@tocnumwidth}}^^A % \changes{v3.15}{2014/12/10}{Verwendung von \cs{addvspace} statt \cs{vskip} % für den Abstand am Anfang}^^A % Für die Definition des Kapiteleintrags ins Inhaltsverzeichnis werden einige % Parameter von \cs{DeclareSectionCommand} definiert und teilweise % verwendet. Damit kann man dann zumindest einige Änderungen mit % \cs{DeclareSectionCommand} vornehmen, allerdings noch keine komplette % Neugestaltung des Eintrags erreichen. % \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. % \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. % \end{macro} % \begin{option}{chapterentrydots} % \changes{v3.15}{2014/12/10}{Neu}^^A % Seit Version~3.15 kann man mit dieser Option Pünktchen zwischen Text und % Seitenzahl in den Kapiteleinträgen einschalten. % \begin{macrocode} % %<*option> \KOMA@ifkey{chapterentrydots}{@chapterentrywithdots} % %<*body> % \end{macrocode} % \end{option}^^A chapterentrydots % \begin{macrocode} \newcommand*\l@chapter[2]{% \ifnum \c@tocdepth <\chaptertocdepth \else \ifnum \lastpenalty<20010 \addpenalty{-\@highpenalty}% \fi \expandafter\ifnum\scr@v@is@lt{3.15}% \vskip 1.0em \@plus\p@ \else \addvspace{1.0em \@plus\p@}% \fi \setlength\@tempdima{\scr@chapter@tocnumwidth}% \if@tocleft \ifx\toc@l@number\@empty\else \setlength\@tempdima{0\toc@l@number}% \fi \fi \begingroup \raggedchapterentry \parindent \z@ \advance\rightskip \@pnumwidth \parfillskip -\@pnumwidth \interlinepenalty\@M \leavevmode \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip \edef\@pnumwidth{\the\dimexpr\@pnumwidth\relax}% \usekomafont{chapterentry}{#1\nobreak \usekomafont{chapterentrypagenumber}{% % \end{macrocode} % \changes{v3.15}{2014/10/12}{optionale Pünktchen im Eintrag}^^A % \begin{macrocode} {\usekomafont{chapterentrydots}{% \if@chapterentrywithdots \leaders\hbox{$\m@th \mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$}% \fi \hfill}}\nobreak \hb@xt@\@pnumwidth{\hss#2}}}\par \expandafter\ifnum\scr@v@is@gt{2.96}\relax \endgroup \penalty20009 \else \penalty\@highpenalty \endgroup \fi \fi } % \end{macrocode} % \begin{macro}{\raggedchapterentry} % \changes{v2.97c}{2007/06/21}{neue Anweisung}^^A % Ausrichtung des Textes der Kapiteleinträge im Inhaltsverzeichnis. % \begin{macrocode} \newcommand*{\raggedchapterentry}{} % \end{macrocode} % \end{macro}^^A \raggedchapterentry % \end{macro}^^A \l@chapter % % \begin{macro}{\l@chapteratlist} % \changes{v2.96a}{2006/12/03}{neues Macro}^^A % Dieses Makro wird ggf. für die Kapiteleinträge in den Listen der % Gleitumgebungen verwendet. Zunächst einmal wird hier dasselbe verwendet, wie % für die Kapiteleinträge ins Inhaltsverzeichnis. % \begin{macrocode} \newcommand*{\l@chapteratlist}{\l@chapter} % \end{macrocode} % \end{macro}^^A \l@chapteratlist % % \begin{Counter}{chapter} % \begin{macro}{\thechapter} % \begin{macro}{\chapterformat} % \changes{v2.3c}{1995/08/06}{Duden Regel 6}^^A % \changes{v2.7}{2000/01/03}{einfaches Leerzeichen durch \cs{enskip}^^A % ersetzt}^^A % \changes{v2.8}{2001/06/15}{\cs{chapappifprefix} eingefügt}^^A % \changes{v2.8o}{2001/09/19}{\cs{chapappifchapterprefix} statt % \cs{chapappifprefix}} ^^A % \changes{v2.96a}{2006/12/02}{\cs{mbox} eingefügt, um \cs{caps} zu % ermöglichen}^^A % \changes{v3.17}{2015/03/08}{\cs{enskip} not in prefix line mode}^^A % \begin{macro}{\chaptermarkformat} % \changes{v2.3a}{1995/07/08}{Leerraum nach der Kapitelnummer erhöht}^^A % \changes{v2.3c}{1995/08/06}{Duden Regel 6}^^A % \changes{v2.8}{2001/06/15}{\cs{chapappifprefix} eingefügt}^^A % \changes{v2.8o}{2001/09/19}{\cs{chapappifchapterprefix} statt % \cs{chapappifprefix}}^^A % \changes{v3.03a}{2009/04/03}{Tilde durch \cs{nobreakspace} ersetzt, um die % Kompatibilität mit Spanisch zu verbessern}^^A % Jede Gliederungsebene benötigt einen Zähler für die % Gliederungsnummer und eine Darstellung des Zählers % (\cs{the\dots}). Desweiteren wird eine Formatierung des Zählers in % den Gliederungsüberschriften (\texttt{\bslash\dots format}) und eine % Formatierung des Zählers in der Kopfzeile % (\texttt{\bslash\dots markformat}) benötigt. % \begin{macrocode} \newcounter{chapter} \renewcommand*{\thechapter}{\@arabic\c@chapter} \newcommand*{\chapterformat}{% \mbox{\chapappifchapterprefix{\nobreakspace}\thechapter\autodot \IfUsePrefixLine{}{\enskip}}% } \newcommand*\chaptermarkformat{\chapappifchapterprefix{\ }% \thechapter\autodot\enskip} % \end{macrocode} % \end{macro}^^A \chaptermarkformat % \end{macro}^^A \chapterformat % \end{macro}^^A \thechapter % \end{Counter}^^A chapter % % % \begin{macro}{\chaptername} % Name der Gliederungsebenen \cs{chapter}. % \begin{macrocode} \newcommand*\chaptername{Chapter} % \end{macrocode} % \end{macro}^^A \chaptername % % % \begin{macro}{\appendixname} % Der Name des Anhangs. % \begin{macrocode} \newcommand*\appendixname{Appendix} % \end{macrocode} % \end{macro}^^A \appendixname % % % \begin{macro}{\chapappifprefix} % \changes{v2.8}{2001/06/15}{neu}^^A % \changes{v2.8o}{2001/09/19}{obsolet}^^A % \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 % \cs{chapappifchapterprefix} setzt abhängig von \cs{if@chapterprefix} % noch das Makro \cs{chapapp} gefolgt vom obliatorischen Argument. % \cs{chapapp} macht \cs{@chapapp} auf Anwenderebene verfügbar. Der % Vorteil des neuen \cs{chapappifchapterprefix} gegenüber dem alten % \cs{chapappifprefix} ist, dass nun beim Umdefinieren von % \cs{chapterformat} und \cs{chaptermarkformat} wieder % \cs{renewcommand} verwendet werden kann und beim Umschalten in den % Anhang die Kopfzeile korrekt ist, weil das Makro nun nicht mehr % geschützt ist, sondern direkt expandiert. % \begin{macrocode} \newcommand*{\chapappifprefix}[1][]{% \ClassWarning{\KOMAClassName}{% Please don't use obsolete command \string\chapappifprefix.\MessageBreak The new command \string\chapappifchapterprefix\space has an\MessageBreak obligatory instead of an optional argument. Use that\MessageBreak new command% }% \chapappifchapterprefix{#1}% } \newcommand*{\chapappifchapterprefix}[1]{% \IfChapterUsesPrefixLine{\chapapp#1}{}% } \newcommand*{\IfChapterUsesPrefixLine}{% \if@chapterprefix\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi } \newcommand*{\chapapp}{\@chapapp} % \end{macrocode} % \begin{macro}{\@chapapp} % Dieses Makro enthält den Kapitelname (\cs{chaptername}), der sich im % Anhang üblicherweise ändert (\cs{appendixname}). % \begin{macrocode} \newcommand*\@chapapp{\chaptername} % \end{macrocode} % \end{macro}^^A \@chapapp % \end{macro}^^A \chapapp % \end{macro}^^A \IfChapterUsePrefixLine % \end{macro}^^A \chapappifchapterprefix % \end{macro}^^A \chapappifprefix % % % \begin{macro}{\chaptermark} % Da \cs{chapter} nicht mit Hilfe von \cs{@startsection} definiert % wird, wird auch \cs{chaptermark} nicht automatisch definiert. Es % wird aber in den Seitenstilen benötigt bzw. umdefiniert. Also hier % vorsorglich eine Dummy-Definition: % \begin{macrocode} \newcommand*\chaptermark[1]{} % \end{macrocode} % \end{macro} % % \begin{macro}{\addchapmark} % \changes{v3.12}{2013/03/26}{neue Anweisung}^^A % Für \cs{addchapmark} gilt dies hingegen nicht. Das wird nicht von den Stilen % definiert, sondern direkt mit der gewünschten Definition % initialisiert. Bitte nicht davon verwirren lassen, 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*\addchapmark[1]{% \begingroup \expandafter\let\csname if@mainmatter\expandafter\endcsname \csname iffalse\endcsname \c@secnumdepth=\numexpr \chapternumdepth-1\relax \chaptermark{#1}% \endgroup } % \end{macrocode} % \end{macro}^^A \addchapmark % % % \begin{macro}{\raggedchapter} % \changes{v3.15}{2014/12/09}{neu}^^A % Da das doch recht häufig gewünscht wird, kann man die Ausrichtung der % Kapitelüberschrift auch getrennt von der Ausrichtung der übrigen % Überschriften einstellen. % \begin{macrocode} \newcommand*{\raggedchapter}{\raggedsection} % \end{macrocode} % \end{macro} % % % \begin{KOMAfont}{chapter} % \changes{v2.8o}{2001/09/14}{neues Element \texttt{chapter}}^^A % \begin{macro}{\scr@fnt@chapter} % \changes{v2.8o}{2001/09/14}{neues Element \texttt{chapter}}^^A % \begin{KOMAfont}{chapterprefix} % \changes{v2.96a}{2006/12/02}{neues Element \texttt{chapterprefix}}^^A % \begin{macro}{\scr@fnt@chapterprefix} % \changes{v2.96a}{2006/12/02}{neues Element \texttt{chapterprefix}}^^A % \begin{macrocode} \newcommand*{\scr@fnt@chapter}{\size@chapter} \newcommand*{\scr@fnt@chapterprefix}{\size@chapterprefix} % \end{macrocode} % \end{macro}^^A \scr@fnt@chapterprefix % \end{KOMAfont} chapterprefix % \end{macro}^^A \scr@fnt@chapter % \end{KOMAfont}^^A chapter % % \begin{KOMAfont}{chapterentry} % \changes{v2.97c}{2007/06/21}{neues Font-Element}^^A % \changes{v3.06}{2010/06/09}{Verwendung von \texttt{sectioning} durch % \texttt{disposition} ersetzt}^^A % Schrift für den \cs{chapter}-Eintrag im Inhaltsverzeichnis. % \begin{macrocode} \newkomafont{chapterentry}{\usekomafont{disposition}} % \end{macrocode} % \end{KOMAfont} % % \begin{KOMAfont}{chapterentrypagenumber} % \changes{v2.97c}{2007/06/21}{neues Font-Element}^^A % Schrift für die Seitenzahl des \cs{chapter}-Eintrags im Inhaltsverzeichnis % abweichend von \texttt{chapterentry}. % \begin{macrocode} \newkomafont{chapterentrypagenumber}{} % \end{macrocode} % \end{KOMAfont} % % \begin{KOMAfont}{chapterentrydots} % \changes{v3.15}{2014/12/10}{neues Font-Element}^^A % Schrift für die optionalen Pünktchen des \cs{chapter}-Eintrags im % Inhaltsverzeichnis abweichend von \texttt{chapterentrypagenumber}. % \begin{macrocode} \newkomafont{chapterentrydots}{\normalfont} % % % % \end{macrocode} % \end{KOMAfont} % % % \subsection{Abschnitte und Untergliederungen} % % Alle Ebenen ab \cs{section} ähneln sich so sehr, dass sie gemeinsam % behandelt werden. Lediglich bei \textsf{scrartl} gibt es für \cs{section} % selbst noch ein paar Besonderheiten. % % \begin{macro}{\size@section} % \changes{v2.8o}{2001/09/14}{neu (intern)}^^A % \begin{macro}{\size@subsection} % \changes{v2.8o}{2001/09/14}{neu (intern)}^^A % \begin{macro}{\size@subsubsection} % \changes{v2.8o}{2001/09/14}{neu (intern)}^^A % \begin{macro}{\size@paragraph} % \changes{v2.8o}{2001/09/14}{neu (intern)}^^A % \begin{macro}{\size@subparagraph} % \changes{v2.8o}{2001/09/14}{neu (intern)}^^A % Hier werden diese Befehle nur vordefiniert. Ihre tatsächliche Einstellung % erfolgt über die (Vor-)Auswahl von Option \texttt{headings}. % \begin{macrocode} %<*class> %<*prepare> \newcommand*{\size@section}{} \newcommand*{\size@subsection}{} \newcommand*{\size@subsubsection}{} \newcommand*{\size@paragraph}{} \newcommand*{\size@subparagraph}{} % % \end{macrocode} % \end{macro}^^A \size@subparagraph % \end{macro}^^A \size@paragraph % \end{macro}^^A \size@subsubsection % \end{macro}^^A \size@subsection % \end{macro}^^A \size@section % % % \begin{macro}{\l@section} % \changes{v2.9k}{2003/01/02}{Anpassung an Option \texttt{tocleft}}^^A % \changes{v2.96b}{2006/11/30}{Umbruch zwischen \cs{section}-Eintrag im % Inhaltsverzeichnis und übergeordneten Einträgen verhindern}^^A % \changes{v2.96b}{2006/11/30}{Umbruch zwischen \cs{section}-Eintrag im % Inhaltsverzeichnis und untergeordneten Einträgen verhindern}^^A % \changes{v2.97c}{2007/06/21}{\cs{sectfont} durch Verwendung von % Element \texttt{sectionentry} ersetzt}^^A % \changes{v2.97c}{2007/06/21}{Element \texttt{sectionentrypagenumber} wird % verwendet}^^A % \changes{v2.97c}{2007/06/21}{weitgehend umgeschrieben, um linksbündige % Einträge zu ermöglichen}^^A % \changes{v3.15}{2014/11/24}{\cs{sectiontocdepth}, % \cs{scr@section@tocindent} und \cs{scr@section@tocnumwidth} werden % verwendet}^^A % Bei der Artikel-Klasse folgt die Formatierung für % \cs{section}-Einträge, an Stelle der Einträge für \cs{chapter} % der Buch- oder der Bericht-Klasse. Bei diesen handelt es sich hier % stattdessen um eine normale Ebene. % \begin{option}{chapterentrydots} % \changes{v3.15}{2014/12/10}{Neu}^^A % Seit Version~3.15 kann man mit dieser Option Pünktchen zwischen Text und % Seitenzahl in den Kapiteleinträgen einschalten. % \begin{macrocode} %<*article> %<*option> \KOMA@ifkey{sectionentrydots}{@sectionentrywithdots} % % \end{macrocode} % \end{option}^^A chapterentrydots % \begin{macrocode} %<*body> \newcommand*\l@section[2]{% \ifnum \c@tocdepth <\sectiontocdepth\else \ifnum \lastpenalty<20009 \addpenalty{\@secpenalty}% \fi \addvspace{1.0em \@plus\p@}% \setlength\@tempdima{\dimexpr\scr@section@tocnumwidth}% \if@tocleft \ifx\toc@l@number\@empty\else \setlength\@tempdima{0\toc@l@number}% \fi \fi \begingroup \raggedsectionentry \parindent \z@ \advance\rightskip \@pnumwidth \parfillskip -\@pnumwidth \interlinepenalty\@M \leavevmode \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip \edef\@pnumwidth{\the\dimexpr\@pnumwidth\relax}% \usekomafont{sectionentry}{#1\nobreak \usekomafont{sectionentrypagenumber}{% % \end{macrocode} % \changes{v3.15}{2014/10/12}{optionale Pünktchen im Eintrag}^^A % \begin{macrocode} {\usekomafont{sectionentrydots}{% \if@sectionentrywithdots \leaders\hbox{$\m@th \mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$}% \fi \hfill}}\nobreak \hb@xt@\@pnumwidth{\hss#2}}}\par \endgroup \expandafter\ifnum\scr@v@is@gt{2.96}\relax \penalty20008 \fi \fi } % \end{macrocode} % \begin{macro}{\raggedsectionentry} % \changes{v2.97c}{2007/06/21}{neue Anweisung}^^A % Ausrichtung des Textes der Abschnittseinträge im Inhaltsverzeichnis. % \begin{macrocode} \newcommand*{\raggedsectionentry}{} % %
% \end{macrocode} % \end{macro} % \end{macro} % % % \begin{macro}{\addsec} % \changes{v2.0e}{1994/10/12}{mehrfach \cs{markboth} durch % \cs{sectionmark} ersetzt}^^A % \changes{v2.2b}{1995/03/20}{\cs{sectionmark} durch \cs{@mkboth} % ersetzt}^^A % \changes{v2.3h}{1995/01/21}{jetzt auch bei \textsf{scrbook} und % \textsf{scrreprt}}^^A % \changes{v2.4g}{1996/11/04}{\cs{section*} vorgezogen, damit % dadurch provozierte Seitenumbrüche im Inhaltsverzeichnis % berücksichtigt werden}^^A % \changes{v2.5d}{1998/01/03}{\cs{@mkboth} bedingt durch % \cs{markright} ersetzt}^^A % \changes{v2.7a}{2001/01/04}{\cs{addsec} für eine bessere % Unterstützung von \textsf{hyperref} geändert}^^A % \changes{v3.13a}{2014/09/11}{Verwendung von \cs{SecDef}}^^A % \begin{macro}{\@addsec} % \changes{v3.10}{2011/08/30}{Verwendung von \cs{addsectiontocentry}}^^A % \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} % expandieren}^^A % \KOMAScript{} bietet in allen drei Hauptklassen den zusätzlichen % Gliederungsbefehl \cs{addsec}. Es handelt sich dabei um einen mit % \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}{} \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{}% } % \end{macrocode} % \end{macro}^^A \@saddsec % \end{macro}^^A \@addsec % \end{macro}^^A \addsec % % % \begin{macro}{\minisec} % \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont} % behebt einen Bug im color Paket}^^A % \changes{v2.9o}{2003/01/31}{\cs{nobreak} nach dem Gruppenende % behebt einen Bug im color Paket}^^A % \changes{v2.96a}{2006/11/30}{Standardwert für \cs{parfillskip} (abhängig % von Option \texttt{version})}^^A % \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak}^^A % entfernt}^^A % \changes{v3.13a}{2014/08/07}{Absicherung der Abstände bei % aufeinanderfolgenden Überschriften entsprechend \cs{@startsection}}^^A % \begin{KOMAfont}{minisec} % \changes{v2.96a}{2006/12/03}{\texttt{minisec} ist ein eigenes % Fontelement} % In \KOMAScript{} gibt es diese zusätzliche Gliederungsebene, die % immer ohne Nummer und ohne Eintrag ins Inhaltsverzeichnis erfolgt. % \begin{macrocode} \newkomafont{minisec}{} \newcommand\minisec[1]{% \expandafter\ifnum\scr@v@is@lt{3.13a}\relax \@afterindentfalse \vskip 1.5ex \else \if@noskipsec \leavevmode \fi \par \@afterindentfalse \if@nobreak \everypar{}% \else \addpenalty\@secpenalty\addvspace{1.5ex}% \fi \fi {\parindent \z@ \expandafter\ifnum\scr@v@is@gt{2.96}\relax \setlength{\parfillskip}{\z@ plus 1fil}\fi \raggedsection\normalfont\sectfont\nobreak \usekomafont{minisec}#1\par\nobreak}\nobreak% \@afterheading } % \end{macrocode} % \end{KOMAfont} % \end{macro} % % % \begin{macro}{\addsectiontocentry} % \changes{v3.10}{2011/08/30}{Neu}^^A % Entsprechend \cs{addparttocentry} und \cs{addchaptertocentry}. % \begin{macrocode} \newcommand*{\addsectiontocentry}[2]{% \addtocentrydefault{section}{#1}{#2}% } % \end{macrocode} % \end{macro} % % \begin{macro}{\addsubsectiontocentry} % \changes{v3.10}{2011/08/30}{Neu}^^A % Entsprechend \cs{addparttocentry} usw. % \begin{macrocode} \newcommand*{\addsubsectiontocentry}[2]{% \addtocentrydefault{subsection}{#1}{#2}% } % \end{macrocode} % \end{macro} % % \begin{macro}{\addparagraphtocentry} % \changes{v3.10}{2011/08/30}{Neu}^^A % Entsprechend \cs{addparttocentry} usw. % \begin{macrocode} \newcommand*{\addparagraphtocentry}[2]{% \addtocentrydefault{paragraph}{#1}{#2}% } % \end{macrocode} % \end{macro} % % \begin{macro}{\addsubparagraphtocentry} % \changes{v3.10}{2011/08/30}{Neu}^^A % Entsprechend \cs{addparttocentry} usw. % \begin{macrocode} \newcommand*{\addsubparagraphtocentry}[2]{% \addtocentrydefault{subparagraph}{#1}{#2}% } % \end{macrocode} % \end{macro} % % % \begin{Counter}{section} % \begin{macro}{\thesection} % \changes{v2.97e}{2007/11/23}{Kapitelnummer nur im Hauptteil}^^A % \changes{v3.03b}{2009/06/09}{\cs{relax} im Kompatibilitätstest durch ein % Leerzeichen ersetzt, obwohl das die Wartbarkeit verschlechtert, aber % \textsf{hyperref} hat mit dem \cs{relax} ein nicht dokumentieres Problem} % \begin{macro}{\sectionmarkformat} % \changes{v2.3a}{1995/07/08}{Leerraum nach der Kapitelnummer % erhöht}^^A % \changes{v2.3c}{1995/08/06}{Duden Regel 6}^^A % \begin{Counter}{subsection} % \begin{macro}{\thesubsection} % \begin{macro}{\subsectionmarkformat} % \changes{v2.3a}{1995/07/08}{Leerraum nach der Kapitelnummer % erhöht}^^A % \changes{v2.3c}{1995/08/06}{Duden Regel 6}^^A % \begin{Counter}{subsubsection} % \begin{macro}{\thesubsubsection} % \begin{Counter}{paragraph} % \begin{macro}{\theparagraph} % \begin{Counter}{subparagraph} % \begin{macro}{\thesubparagraph} % Jede Gliederungsebene benötigt einen Zähler für die % Gliederungsnummer und eine Darstellung des Zählers % (\cs{the\dots}). Desweiteren wird eine Formatierung des Zählers in % den Gliederungsüberschriften (\texttt{\bslash\dots format}) und eine % Formatierung des Zählers in der Kopfzeile % (\texttt{\bslash\dots markformat}) benötigt. % \begin{macrocode} %<*book|report> \newcounter{section}[chapter] \renewcommand*\thesection{% %<*book> \ifnum \scr@compatibility>\@nameuse{scr@v@2.97d} % the space before this % comment should be \relax but hyperref has a % not documented problem with \relax \if@mainmatter\thechapter.\fi \else % \thechapter.% % \fi \@arabic\c@section } % %<*article> \newcounter{section} \renewcommand*{\thesection}{\@arabic\c@section} %
\newcommand*\sectionmarkformat{\thesection\autodot\enskip} \newcounter{subsection}[section] \renewcommand*{\thesubsection}{\thesection.\@arabic\c@subsection} %<*article> \newcommand*\subsectionmarkformat{\thesubsection\autodot\enskip} %
\newcounter{subsubsection}[subsection] \renewcommand*{\thesubsubsection}{% \thesubsection.\@arabic\c@subsubsection } \newcounter{paragraph}[subsubsection] \renewcommand*{\theparagraph}{\thesubsubsection.\@arabic\c@paragraph} \newcounter{subparagraph}[paragraph] \renewcommand*{\thesubparagraph}{% \theparagraph.\@arabic\c@subparagraph } % \end{macrocode} % \begin{macro}{\@seccntformat} % \changes{v2.3c}{1995/08/06}{CJK erweitert}^^A % \changes{v2.9p}{2004/01/07}{\cs{protect} eingefügt}^^A % \changes{v2.97}{2007/01/24}{Workaround für das blöde \cs{protect}}^^A % \changes{v3.17}{2015/02/23}{verwendet \cs{\dots format}, wenn es % existiert}^^A % \changes{v3.17}{2015/03/31}{verwendet \cs{protect} für \cs{\dots % format}}^^A % \begin{macro}{\othersectionlevelsformat} % \changes{v2.7}{2000/01/03}{neu}^^A % \changes{v2.7}{2000/01/03}{\cs{quad} durch \cs{enskip} ersetzt}^^A % \changes{v2.7i}{2001/05/17}{\cs{let} durch \cs{def} ersetzt}^^A % \changes{v2.97}{2007/01/24}{statt einem Argument jetzt drei}^^A % Bei den Ebenen ab \cs{section} erfolgt die Formatierung der % Gliederungnummer in der Überschrift mit einer gemeinsamen % Anweisung. Die interne Anweisung \cs{@seccntformat} wird dabei von % \LaTeX-Kern verwendet und muss umdefiniert werden, um eine % entsprechende Anweisung auf Anwenderebene verfügbar zu haben. % Ab Version 2.9p wurde in \cs{@seccntformat} ein \cs{protect} vor % \cs{othersectionlevelsformat} eingefügt. Damit wurde es für den Benutzer % deutlich einfacher, die Anweisung \cs{othersectionlevelsformat} % umzudefinieren. Dafür war dadurch aber \cs{the\dots} nicht mehr % expandiert. Das wiederum gab Probleme, wenn \cs{@seccntformat} für den % \cs{mark}-Mechanismus genutzt wurde. Deshalb hat % \cs{othersectionlevelsformat} ab Version 2.97 drei Argumente statt nur % eines. Das zweite Argument sollte vom Anwender ignoriert werden, es % existiert nur, um die Kompatibitlität Umdefinitionen zu erhalten, bei denen % \cs{othersectionlevelsformat} nur ein Argument besitzt. Das dritte Argument % ist die \cs{the\dots}-Anweisung. Das zweite Argument funktioniert so, das es % das dritte Argument frisst, falls \cs{othersectionlevelsformat} nur ein % Argument liest. % \begin{macrocode} \newcommand*{\othersectionlevelsformat}[3]{#3\autodot\enskip} \renewcommand*{\@seccntformat}[1]{% \expandafter\ifnum\scr@v@is@lt{3.17}\relax \protect\othersectionlevelsformat{#1}{% \expandafter\aftergroup\noexpand\@gobble}{\csname the#1\endcsname}% \else \scr@ifundefinedorrelax{#1format}{% \protect\othersectionlevelsformat{#1}{% \expandafter\aftergroup\noexpand\@gobble}{\csname the#1\endcsname}% }{\expandafter\protect\csname #1format\endcsname}% \fi } % \end{macrocode} % \end{macro}^^A \othersectonlevelsformat % \end{macro}^^A \@seccntformat % \end{macro}^^A \thesubparagraph % \end{Counter}^^A subparagraph % \end{macro}^^A \theparagraph % \end{Counter}^^A paragraph % \end{macro}^^A \thesubsubsection % \end{Counter}^^A subsubsection % \end{macro}^^A \subsectionformat % \end{macro}^^A \thesubsection % \end{Counter}^^A subsection % \end{macro}^^A \sectionformat % \end{macro}^^A \thesection % \end{Counter}^^A section % % % \begin{macro}{\addsecmark} % \changes{v3.12}{2013/03/26}{neue Anweisung}^^A % \cs{addsecmark} wird nicht von den Seitenstilen definiert, sondern direkt % mit der gewünschten Definition initialisiert. % \begin{macrocode} \newcommand*\addsecmark[1]{% \begingroup \c@secnumdepth=\numexpr \sectionnumdepth-1\relax \sectionmark{#1}% \endgroup } % \end{macrocode} % \end{macro}^^A \addsecmark % % \begin{KOMAfont}{section} % \changes{v2.8o}{2001/09/14}{neues Element \texttt{section}}^^A % \begin{macro}{\scr@fnt@section} % \changes{v2.8o}{2001/09/14}{neues Element \texttt{section}}^^A % \begin{KOMAfont}{subsection} % \changes{v2.8o}{2001/09/14}{neues Element \texttt{subsection}}^^A % \begin{macro}{\scr@fnt@subsection} % \changes{v2.8o}{2001/09/14}{neues Element \texttt{subsection}}^^A % \begin{KOMAfont}{subsubsection} % \changes{v2.8o}{2001/09/14}{neues Element \texttt{subsubsection}}^^A % \begin{macro}{\scr@fnt@subsubsection} % \changes{v2.8o}{2001/09/14}{neues Element \texttt{subsubsection}}^^A % \begin{KOMAfont}{paragraph} % \changes{v2.8o}{2001/09/14}{neues Element \texttt{paragraph}}^^A % \begin{macro}{\scr@fnt@paragraph} % \changes{v2.8o}{2001/09/14}{neues Element \texttt{paragraph}}^^A % \begin{KOMAfont}{subparagraph} % \changes{v2.8o}{2001/09/14}{neues Element \texttt{subparagraph}}^^A % \begin{macro}{\scr@fnt@subparagraph} % \changes{v2.8o}{2001/09/14}{neues Element \texttt{subparagraph}}^^A % \begin{KOMAfont}{minisec} % \changes{v2.8o}{2001/09/14}{neuer Ersatz für das Element % \texttt{minisec}}^^A % \changes{v2.96a}{2007/01/08}{Alias für das Element \texttt{minisec}^^A % entfernt, da es nun ein eigenes Element ist}^^A % Definition der Elemente der Gliederung, deren Schrift geändert % werden kann. % \begin{macrocode} \newcommand*{\scr@fnt@section}{\size@section} \newcommand*{\scr@fnt@subsection}{\size@subsection} \newcommand*{\scr@fnt@subsubsection}{\size@subsubsection} \newcommand*{\scr@fnt@paragraph}{\size@paragraph} \newcommand*{\scr@fnt@subparagraph}{\size@subparagraph} % \end{macrocode} % \end{KOMAfont}^^A minisec % \end{macro} % \end{KOMAfont} % \end{macro} % \end{KOMAfont} % \end{macro} % \end{KOMAfont} % \end{macro} % \end{KOMAfont} % \end{macro} % \end{KOMAfont} % % \begin{KOMAfont}{sectionentry} % \changes{v2.97c}{2007/06/21}{neues Font-Element}^^A % \changes{v3.06}{2010/06/09}{Verwendung von \texttt{sectioning} durch % \texttt{disposition} ersetzt}^^A % Schrift für den \cs{section}-Eintrag im Inhaltsverzeichnis. % \begin{macrocode} %<*article> \newkomafont{sectionentry}{\usekomafont{disposition}} % \end{macrocode} % \end{KOMAfont} % % \begin{KOMAfont}{sectionentrypagenumber} % \changes{v2.97c}{2007/06/21}{neues Font-Element}^^A % Schrift für die Seitenzahl des \cs{section}-Eintrags im Inhaltsverzeichnis % abweichend von \texttt{sectionentry}. % \begin{macrocode} \newkomafont{sectionentrypagenumber}{} % \end{macrocode} % \end{KOMAfont} % % \begin{KOMAfont}{sectionentrydots} % \changes{v3.15}{2014/12/10}{neues Font-Element}^^A % Schrift für die optionalen Pünktchen des \cs{section}-Eintrags im % Inhaltsverzeichnis abweichend von \texttt{sectionentrypagenumber}. % \begin{macrocode} \newkomafont{sectionentrydots}{\normalfont} %
% \end{macrocode} % \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 % \begin{macro}{\subsectionnumdepth} % \changes{v3.12}{2013/12/16}{new read only command}^^A % \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A % \begin{macro}{\subsubsectionnumdepth} % \changes{v3.12}{2013/12/16}{new read only command}^^A % \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A % \begin{macro}{\paragraphnumdepth} % \changes{v3.12}{2013/12/16}{new read only command}^^A % \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A % \begin{macro}{\subparagraphnumdepth} % \changes{v3.12}{2013/12/16}{new read only command}^^A % \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A % 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} % \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A % \begin{macro}{\subsubsectiontocdepth} % \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A % \begin{macro}{\paragraphtocdepth} % \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 % \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont} % behebt einen Bug im color Paket}^^A % \changes{v2.96a}{2006/11/30}{Standardwert für \cs{parfillskip} (abhängig % von Option \texttt{version})}^^A % \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak} entfernt}^^A % \changes{v3.13a}{2014/09/11}{Verwendung von \cs{scr@startsection}}^^A % \changes{v3.15}{2014/11/24}{Verwendung von \cs{DeclareSectionCommand}}^^A % \begin{macro}{\subsection} % \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor % \cs{size@subsection} aufgerufen}^^A % \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont} % behebt einen Bug im color Paket}^^A % \changes{v2.96a}{2006/11/30}{Standardwert für \cs{parfillskip} (abhängig % von Option \texttt{version})}^^A % \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak} entfernt}^^A % \changes{v3.13a}{2014/09/11}{Verwendung von \cs{scr@startsection}}^^A % \changes{v3.15}{2014/11/24}{Verwendung von \cs{DeclareSectionCommand}}^^A % \begin{macro}{\subsubsection} % \changes{v2.3d}{1995/08/19}{wird bei \texttt{scrartcl} nun % ebenfalls numeriert und ins Inhaltsverzeichnis geschrieben}^^A % \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor % \cs{size@subsubsection} aufgerufen}^^A % \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont} % behebt einen Bug im color Paket}^^A % \changes{v2.96a}{2006/11/30}{Standardwert für \cs{parfillskip} (abhängig % von Option \texttt{version})}^^A % \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak} entfernt}^^A % \changes{v3.13a}{2014/09/11}{Verwendung von \cs{scr@startsection}}^^A % \changes{v3.15}{2014/11/24}{Verwendung von \cs{DeclareSectionCommand}}^^A % \begin{macro}{\paragraph} % \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor % \cs{size@paragraph} aufgerufen}^^A % \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont} % behebt einen Bug im color Paket}^^A % \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak} entfernt}^^A % \changes{v3.15}{2014/11/24}{Verwendung von \cs{DeclareSectionCommand}}^^A % \begin{macro}{\subparagraph} % \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor % \cs{size@subparagraph} aufgerufen}^^A % \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont} % behebt einen Bug im color Paket}^^A % \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak} entfernt}^^A % \changes{v3.13a}{2014/09/11}{Verwendung von \cs{scr@startsection}}^^A % \changes{v3.15}{2014/11/24}{Verwendung von \cs{DeclareSectionCommand}}^^A % \changes{v3.15}{2014/11/24}{\cs{parindent} durch \cs{scr@parindent} % ersetzt}^^A % Die Standardgliederungsbefehle \cs{section} bis \cs{subparagraph} % sind seit \KOMAScript{} v3.15 über die von \KOMAScript{} bereitgestellte % Schnittstelle \cs{DeclareSectionCommand} definiert. % \begin{macrocode} \DeclareSectionCommand[% style=part,% %
level=\z@,% % level=\m@ne,% % 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} % \DeclareSectionCommand[% style=section,% level=1,% indent=\z@,% beforeskip=-3.5ex \@plus -1ex \@minus -.2ex,% afterskip=2.3ex \@plus.2ex,% %
tocindent=0pt,% % tocindent=1.5em,% %
tocnumwidth=1.5em% % tocnumwidth=2.3em% ]{section} \DeclareSectionCommand[% style=section,% level=2,% indent=\z@,% beforeskip=-3.25ex\@plus -1ex \@minus -.2ex,% afterskip=1.5ex \@plus .2ex,% %
tocindent=1.5em,% % tocindent=3.8em,% %
tocnumwidth=2.3em% % tocnumwidth=3.2em% ]{subsection} \DeclareSectionCommand[% style=section,% level=3,% indent=\z@,% beforeskip=-3.25ex\@plus -1ex \@minus -.2ex,% afterskip=1.5ex \@plus .2ex,% %
tocindent=3.8em,% % tocindent=7.0em,% %
tocnumwidth=3.2em% % tocnumwidth=4.1em% ]{subsubsection} \DeclareSectionCommand[% style=section,% level=4,% indent=\z@,% beforeskip=3.25ex \@plus1ex \@minus.2ex,% afterskip=-1em,% %
tocindent=7.0em,% % tocindent=10em,% %
tocnumwidth=4.1em% % tocnumwidth=5em% ]{paragraph} \DeclareSectionCommand[% style=section,% level=5,% indent=\scr@parindent,% beforeskip=3.25ex \@plus1ex \@minus .2ex,% afterskip=-1em,% %
tocindent=10em,% % tocindent=12em,% %
tocnumwidth=5em% % tocnumwidth=6em% ]{subparagraph} \expandafter\ifnum\scr@v@is@lt{3.15}\relax \let\scr@subparagraph@sectionindent\parindent \else \def\scr@subparagraph@sectionindent{\scr@parindent}% \fi % % % \end{macrocode} % \end{macro}^^A \subparagraph % \end{macro}^^A \paragraph % \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} % % Die Einstellungen für die einzelnen Ebenen werden bei den Definitonen der % Ebenen vorgenommen. Hier gibt es nur Einstellungen, die nicht einer % einzelnen Ebene zugeordnet sind. % % \begin{KOMAfont}{disposition} % \changes{v2.95b}{2006/07/30}{neues Element \texttt{disposition}}^^A % \begin{KOMAfont}{sectioning} % \begin{macro}{\scr@fnt@disposition} % \changes{v2.95b}{2006/07/30}{neues Element \texttt{disposition}}^^A % \begin{macro}{\sectfont} % \changes{v2.8c}{2001/06/29}{\cs{normalcolor} eingefügt}^^A % \changes{v3.12}{2013/11/11}{wird wegen Option % \texttt{headings!=standardclasses} früher definiert}^^A % Dies Schriftart nicht nur für die Gliederungsbefehle. Dieses Makro % ist als intern zu betrachten. Der Anwender sollte stattdessen das % entsprtechende Fontelement verwenden. % \begin{macrocode} %<*prepare> \newcommand*{\sectfont}{\normalcolor\sffamily\bfseries} % %<*body> \newcommand*{\scr@fnt@disposition}{\sectfont} \aliaskomafont{sectioning}{disposition} % % \end{macrocode} % \end{macro}^^A \sectfont % \end{macro}^^A \scr@fnt@disposition % \end{KOMAfont}^^A sectioning % \end{KOMAfont}^^A disposition % % % \begin{option}{headings} % \changes{v2.3h}{1996/01/20}{Größe von \cs{chapter} um eine Stufe % verringert}^^A % \changes{v2.3h}{1996/01/20}{Verwendung von \cs{chapterheadstartvskip} und % \cs{chapterheadendvskip} an Stelle von festen vertikalen Abständen am % Anfang und am Ende eines Kapitels}^^A % \changes{v2.7c}{2000/01/19}{vertikale Abstände nach der Kapitelüberschrift % geringfügig verändert und mit Leim versehen, um mit \cs{flushbottom} zu % besseren Ergebnissen zu gelangen}^^A % \changes{v2.98c}{2008/03/10}{Neue Option}^^A % \changes{v3.10}{2011/08/30}{Integration der Erweiterung für das optionale % Argument der Gliederungsbefehle}^^A % \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit % \cs{FamilyKeyState}}^^A % \changes{v3.12}{2013/08/26}{\cs{KOMA@options} durch \cs{KOMAoptions} % ersetzt}^^A % \changes{v3.12}{2013/11/11}{neuer Wert \texttt{standardclasses}}^^A % \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} % (Abschnittseinteilung) und mal \emph{disposition} (Gliederung) genannt % wird. Es wäre gut gewesen, sich bei Zeiten Gedanken darüber zu machen, wie % man das am besten einheitlich nennt. % \begin{macrocode} %<*class> %<*option> \KOMA@key{headings}{% \KOMA@set@ncmdkey{headings}{@tempa}{% {big}{0},% {normal}{1},% {small}{2},% %<*book|report> {openany}{3},% {openright}{4},% {openleft}{5},% {twolinechapter}{6},{chapterprefix}{6},{chapterwithprefix}{6},% {chapterwithprefixline}{6},% {onelinechapter}{7},{nochapterprefix}{7},{chapterwithoutprefix}{7},% {chapterwithoutprefixline}{7},% {twolineappendix}{8},{appendixprefix}{8},{appendixwithprefix}{8},% {appendixwithprefixline}{8},% {onelineappendix}{9},{noappendixprefix}{9},{appendixwithoutprefix}{9},% {appendixwithoutprefixline}{9},% % {optiontotocandhead}{10},{optiontoheadandtoc}{10},% {optiontotoc}{11},% {optiontohead}{12},% {standardclasses}{13}% }{#1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed \ifcase \@tempa\relax% big \KOMA@kav@remove{.\KOMAClassFileName}{headings}{big}% \KOMA@kav@remove{.\KOMAClassFileName}{headings}{normal}% \KOMA@kav@remove{.\KOMAClassFileName}{headings}{small}% \KOMA@kav@remove{.\KOMAClassFileName}{headings}{standardclasses}% \KOMA@kav@add{.\KOMAClassFileName}{headings}{big}% % \end{macrocode} % Als erstes kümmern wir uns um die drei Größenabstufungen für die % Überschriften, die \KOMAScript{} bietet, und zwar in der Reihenfolge % \texttt{big}, \texttt{normal}, \texttt{small}. Es sei darauf hingewiesen, % dass die Verwendung dieser Option alle Änderungen an % \cs{chapterheadstartvskip} oder \cs{chapterheadendvskip} oder den % Font-Elementen für die einzelnen Überschriften aufhebt macht! % % Hinweis: Es wurde |+\baselineskip+\parskip| hinzugefügt, um % Kompatibilitätsprobleme zu vermeiden. Die entsprechenden Werte werden in der % Präambel aber wieder abgezogen, um Überschriften wirklich mit % |beforeskip=0pt| an den oberen Rand zu bekommen. % \begin{macrocode} %<*book|report> \renewcommand*{\scr@chapter@beforeskip}{-3.3\baselineskip-\parskip}% \renewcommand*{\scr@chapter@afterskip}{% 1.725\baselineskip \@plus .115\baselineskip \@minus .192\baselineskip }% \renewcommand*{\scr@chapter@innerskip}{.5\baselineskip}% \renewcommand*{\chapterheadstartvskip}{\vspace{\@tempskipa}}% \renewcommand*{\chapterheadendvskip}{% \expandafter\ifnum\scr@v@is@lt{3.15}\vspace\@tempskipa \else\vskip\@tempskipa\fi }% \renewcommand*{\chapterheadmidvskip}{\par\nobreak\vskip\@tempskipa}% % \renewcommand*{\size@part}{\Huge}% \renewcommand*{\size@partnumber}{\huge}% % \renewcommand*{\size@chapter}{\huge}% % \renewcommand*{\size@chapterprefix}{\size@chapter}% \renewcommand*{\size@section}{\Large}% \renewcommand*{\size@subsection}{\large}% \renewcommand*{\size@subsubsection}{\normalsize}% \renewcommand*{\size@paragraph}{\normalsize}% \renewcommand*{\size@subparagraph}{\normalsize}% \or % normal \KOMA@kav@remove{.\KOMAClassFileName}{headings}{big}% \KOMA@kav@remove{.\KOMAClassFileName}{headings}{normal}% \KOMA@kav@remove{.\KOMAClassFileName}{headings}{small}% \KOMA@kav@remove{.\KOMAClassFileName}{headings}{standardclasses}% \KOMA@kav@add{.\KOMAClassFileName}{headings}{normal}% %<*book|report> \renewcommand*{\scr@chapter@beforeskip}{-3\baselineskip-\parskip}% \renewcommand*{\scr@chapter@afterskip}{% 1.5\baselineskip \@plus .1\baselineskip \@minus .167\baselineskip }% \renewcommand*{\scr@chapter@innerskip}{.5\baselineskip}% \renewcommand*{\chapterheadstartvskip}{\vspace{\@tempskipa}}% \renewcommand*{\chapterheadendvskip}{% \expandafter\ifnum\scr@v@is@lt{3.15}\vspace\@tempskipa \else\vskip\@tempskipa\fi }% \renewcommand*{\chapterheadmidvskip}{\par\nobreak\vskip\@tempskipa}% % \renewcommand*{\size@part}{\huge}% \renewcommand*{\size@partnumber}{\huge}% %<*book|report> \renewcommand*{\size@chapter}{\LARGE}% \renewcommand*{\size@chapterprefix}{\size@chapter}% \renewcommand*{\size@section}{\Large}% \renewcommand*{\size@subsection}{\large}% % %<*article> \renewcommand*{\size@section}{\large}% \renewcommand*{\size@subsection}{\normalsize}% %
\renewcommand*{\size@subsubsection}{\normalsize}% \renewcommand*{\size@paragraph}{\normalsize}% \renewcommand*{\size@subparagraph}{\normalsize}% \or % small \KOMA@kav@remove{.\KOMAClassFileName}{headings}{big}% \KOMA@kav@remove{.\KOMAClassFileName}{headings}{normal}% \KOMA@kav@remove{.\KOMAClassFileName}{headings}{small}% \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@afterskip}{% 1.35\baselineskip \@plus 0.09\baselineskip \@minus .15\baselineskip }% \renewcommand*{\scr@chapter@innerskip}{.5\baselineskip}% \renewcommand*{\chapterheadstartvskip}{\vspace{\@tempskipa}}% \renewcommand*{\chapterheadendvskip}{% \expandafter\ifnum\scr@v@is@lt{3.15}\vspace\@tempskipa \else\vskip\@tempskipa\fi }% \renewcommand*{\chapterheadmidvskip}{\par\nobreak\vskip\@tempskipa}% %
\renewcommand*{\size@part}{\LARGE}% \renewcommand*{\size@partnumber}{\LARGE}% %<*book|report> \renewcommand*{\size@chapter}{\Large}% \renewcommand*{\size@chapterprefix}{\size@chapter}% \renewcommand*{\size@section}{\large}% % %<*article> \renewcommand*{\size@section}{\normalsize}% %
\renewcommand*{\size@subsection}{\normalsize}% \renewcommand*{\size@subsubsection}{\normalsize}% \renewcommand*{\size@paragraph}{\normalsize}% \renewcommand*{\size@subparagraph}{\normalsize}% % \end{macrocode} % Für \textsf{scrbook} und \textsf{scrreprt} gibt es dann noch die % Möglichkeit, auch hierüber die Optionen \texttt{open=any}, % \texttt{open=right} und \texttt{open=left} zu setzen. % \begin{macrocode} \or % openany %<*book|report> \KOMAoptions{open=any}% %
\or % openright %<*book|report> \KOMAoptions{open=right}% % \or % openleft %<*book|report> \KOMAoptions{open=left}% % % \end{macrocode} % Für \textsf{scrbook} und \textsf{scrreprt} gibt es dann noch die % Möglichkeit, auch hierüber die Optionen \texttt{chapterprefix} und % \texttt{appendixprefix} zu setzen. % \begin{macrocode} \or % twolinechapter %<*book|report> \KOMAoptions{chapterprefix=true}% % \or % onelinechapter %<*book|report> \KOMAoptions{chapterprefix=false}% % \or % twolineappendix %<*book|report> \KOMAoptions{appendixprefix=true}% % \or % onelineappend %<*book|report> \KOMAoptions{appendixprefix=false}% % % \end{macrocode} % Ab Version~3.10 wird über diese Option auch noch die Erweiterung für das % optionale Argument der Gliederungsüberschriften aktiviert und gesteuert. % \begin{macrocode} \or % optiontotocandhead \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotocandhead}% \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotoc}% \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontohead}% \KOMA@kav@add{.\KOMAClassFileName}{headings}{optiontotocandhead}% \scr@activate@xsection{3}% \or % optiontotoc \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotocandhead}% \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotoc}% \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontohead}% \KOMA@kav@add{.\KOMAClassFileName}{headings}{optiontotoc}% \scr@activate@xsection{2}% \or % optiontohead \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotocandhead}% \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotoc}% \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontohead}% \KOMA@kav@add{.\KOMAClassFileName}{headings}{optiontohead}% \scr@activate@xsection{1}% % \end{macrocode} % Ab Version~3.12 gibt es noch die Möglichkeit, die Überschriftengrößen der % Standardklassen zu emulieren. % \begin{macrocode} \or % standardclasses \KOMA@kav@remove{.\KOMAClassFileName}{headings}{big}% \KOMA@kav@remove{.\KOMAClassFileName}{headings}{normal}% \KOMA@kav@remove{.\KOMAClassFileName}{headings}{small}% \KOMA@kav@remove{.\KOMAClassFileName}{headings}{standardclasses}% \KOMA@kav@add{.\KOMAClassFileName}{headings}{standardclasses}% %<*book|report> \renewcommand*{\scr@chapter@beforeskip}{-50\p@}% \renewcommand*{\scr@chapter@afterskip}{40\p@}% \renewcommand*{\scr@chapter@innerskip}{20\p@}% \renewcommand*{\chapterheadstartvskip}{\vspace{\@tempskipa}}% \renewcommand*{\chapterheadendvskip}{\vskip\@tempskipa}% \renewcommand*{\chapterheadmidvskip}{\par\nobreak\vskip\@tempskipa}% \renewcommand*{\size@part}{\Huge}% \renewcommand*{\size@partnumber}{\huge}% \renewcommand*{\size@chapter}{\Huge}% \renewcommand*{\size@chapterprefix}{\huge}% % %<*article> \renewcommand*{\size@part}{\huge}% \renewcommand*{\size@partnumber}{\Large}% %
\renewcommand*{\size@section}{\Large}% \renewcommand*{\size@subsection}{\large}% \renewcommand*{\size@subsubsection}{\normalsize}% \renewcommand*{\size@paragraph}{\normalsize}% \renewcommand*{\size@subparagraph}{\normalsize}% \renewcommand*{\sectfont}{\bfseries}% % \KOMAoptions{open=right,chapterprefix=true}% \fi \fi } \KOMA@kav@add{.\KOMAClassFileName}{headings}{big} %\KOMA@kav@add{.\KOMAClassFileName}{headings}{onelinechapter} % \end{macrocode} % \end{option}^^A headings % % \begin{option}{bigheadings} % \changes{v2.3h}{1996/01/20}{neue Option}^^A % \changes{v2.4g}{1996/11/04}{die Option heißt nun wirklich so; bei % Verwendung des alten, falschen Namens wird ein Fehler % ausgegeben}^^A % \changes{v2.98c}{2008/03/10}{obsolet}^^A % \changes{v3.01a}{2008/11/20}{deprecated}^^A % \begin{macro}{\@bigheadings} % \changes{v2.98c}{2008/03/10}{entfernt}^^A % \begin{option}{normalheadings} % \changes{v2.3h}{1996/01/20}{neue Option}^^A % \changes{v2.4g}{1996/11/04}{die Option heißt nun wirklich so; bei % Verwendung des alten, falschen Namens wird ein Fehler % ausgegeben}^^A % \changes{v2.98c}{2008/03/10}{obsolet}^^A % \changes{v3.01a}{2008/11/20}{deprecated}^^A % \begin{macro}{\@normalheadings} % \changes{v2.98c}{2008/03/10}{entfernt}^^A % \begin{option}{smallheadings} % \changes{v2.3h}{1996/01/20}{neue Option}^^A % \changes{v2.4g}{1996/11/04}{die Option heißt nun wirklich so; bei % Verwendung des alten, falschen Namens wird ein Fehler % ausgegeben}^^A % \changes{v2.98c}{2008/03/10}{obsolet}^^A % \changes{v3.01a}{2008/11/20}{deprecated}^^A % \begin{macro}{\@smallheadings} % \changes{v2.98c}{2008/03/10}{entfernt}^^A % \begin{macrocode} \KOMA@DeclareDeprecatedOption{bigheadings}{headings=big} \KOMA@DeclareDeprecatedOption{normalheadings}{headings=normal} \KOMA@DeclareDeprecatedOption{smallheadings}{headings=small} % % % \end{macrocode} % \end{macro}^^A \@smallheadings % \end{option}^^A smallheadings % \end{macro}^^A \@normalheadings % \end{option}^^A normalheadings % \end{macro}^^A \@bigheadings % \end{option}^^A bigheadings % % % \iffalse % % \fi % % \Finale % \endinput % % end of file `scrkernel-sections.dtx' %%% Local Variables: %%% mode: doctex %%% coding: iso-latin-1 %%% TeX-master: t %%% End: