% \CheckSum{3673}
% \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 2079 2015-04-20 07:12:08Z kohm $
%<*driver>
% \fi
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\begingroup
  \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
  \filedate$Date: 2015-04-20 09:12:08 +0200 (Mon, 20 Apr 2015) $
  \def\filerevision$#1: #2 ${\gdef\filerevision{#2}}
  \filerevision$Revision: 2079 $
  \edef\reserved@a{%
    \noexpand\endgroup
    \noexpand\ProvidesFile{scrkernel-sections.dtx}%
                          [\filedate\space\filerevision\space
                           KOMA-Script (disposition)]
  }%
\reserved@a
% \iffalse
\documentclass[halfparskip-]{scrdoc}
\usepackage[english,ngerman]{babel}
\usepackage[latin1]{inputenc}
\CodelineIndex
\RecordChanges
\GetFileInfo{scrkernel-sections.dtx}
\title{\KOMAScript{} \partname\ \texttt{\filename}%
  \footnote{Dies ist Version \fileversion\ von Datei
    \texttt{\filename}.}}
\date{\filedate}
\author{Markus Kohm}

\begin{document}
  \maketitle
  \tableofcontents
  \DocInput{\filename}
\end{document}
%</driver>
% \fi
%
% \selectlanguage{ngerman}
%
% \changes{v2.3h}{1996/01/20}{Größenbefehle in den Überschriften
%   variabilisiert}^^A
% \changes{v2.95}{2002/06/26}{erste Version aus der Aufteilung von
%   \texttt{scrclass.dtx}}^^A
% \changes{v3.15}{2014/12/09}{Code in Datei \texttt{scrkernel-section} komplett
%   umsortiert}^^A
%
% \section{Gliederung}
%
% Zur Gliederung gehören neben den üblichen Gliederungsbefehlen
% \cs{chapter} \dots \cs{subparagraph} auch alle Optionen und Befehle,
% die diese Gliederung beeinflussen. Eingeschränkt gehören auch die
% Befehle dazu, die Inhaltsverzeichniseinträge zu den
% Gliederungsbefehlen erzeugen oder unmittelbar formatieren. Diese
% Entscheidung wurde getroffen, weil die Zusammengehörigkeit eher hier
% gesehen wird, als bei den Verzeichnissen selbst.
%
% \StopEventually{\PrintIndex\PrintChanges}
%
% \changes{v2.8e}{2001/07/10}{\cs{@maybeasf} entfernt}
%
% Die Briefklasse hat keine derartige Gliederung. Beim Briefpaket wird die
% Gliederung über die verwendete Klasse bestimmt.
% \iffalse
%<*!letter>
% \fi
%
% \subsection{Vakatseiten}
%
% Bei \textsf{scrbook} und \textsf{scrreprt} gibt es im doppelseitigen Modus
% ggf. Vakatseiten.
%
% \begin{option}{open}
%   \changes{v2.98c}{2008/03/06}{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
% Bei \textsf{scrreprt} und \textsf{scrbook} kann per Option eingestellt
% werden, ob beispielsweise Kapitel nur auf linken oder rechten Seiten
% beginnen dürfen oder auf jeder Seite.
% \begin{macro}{\if@openright}
% \begin{macro}{\@openrighttrue}
% \begin{macro}{\@openrightfalse}
% Der Zustand wird dann in einem Schalter und durch umdefinieren von
% \cs{cleardoublestandardpage} gespeichert. Die Voreinstellungen sind je nach
% Klasse unterschiedlich.
%    \begin{macrocode}
%<*class>
%<*book|report>
%<*prepare>
\newif\if@openright
%<report>\@openrightfalse
%<book>\@openrighttrue
%</prepare>
%    \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
}
%<book>\KOMA@kav@add{.\KOMAClassFileName}{open}{right}
%<report>\KOMA@kav@add{.\KOMAClassFileName}{open}{any}
%<book>\KOMA@kav@add{.\KOMAClassFileName}{headings}{openright}
%<report>\KOMA@kav@add{.\KOMAClassFileName}{headings}{openany}
%    \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}
\KOMA@DeclareStandardOption{openright}{open=right}
\KOMA@DeclareStandardOption{openany}{open=any}
%</option>
%</book|report>
%</class>
%    \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.%
  }%
}
%</prepare>
%    \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
}
\KOMA@kav@add{.\KOMAClassFileName}{numbers}{autoendperiod}
%</option>
%    \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}
%</option>
%    \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>
%<book|report>\setcounter{secnumdepth}{2}
%<article>\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}
\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
  }%
}
%</body>
%</class>
%    \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}%
}
%</prepare>
%</class>
%    \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
%</prepare>
%    \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
}
%</prepare>
%    \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}
\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
% \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}
\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 #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{#3}{#4}{#5}{#6}}%
      {\csname scr@preto@sect@hook\endcsname
        \scr@section@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#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}{#2}{#3}{#4}{#5}{#6}*}%
      {\scr@section@dblarg{\scr@saved@startsection{#1}{#2}{#3}{#4}{#5}{#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}
\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
% 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}
\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
%<trace>\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
  \ifnum #2>\c@secnumdepth
    \let\@svsec\@empty
  \else
    \refstepcounter{#1}%
    \expandafter\@maybeautodot\csname the#1\endcsname
    \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
%<trace>    \ClassInfo{\KOMAClassName}{head=`\scr@ds@head'}%
    \expandafter\csname #1mark\expandafter\endcsname\expandafter{\scr@ds@head}%
%<trace>    \ClassInfo{\KOMAClassName}{tocentry=`\scr@ds@tocentry'}%
    \ifx\scr@ds@tocentry\@empty\else
      \scr@ifundefinedorrelax{add#1tocentry}{%
        \expandafter\global\expandafter\def
        \csname add#1tocentry\endcsname##1##2{%
          \addtocentrydefault{#1}{##1}{##2}%
        }%
      }{}%
      \ifnum #2>\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 #3\relax
        \@svsec #8}%
%<trace>      \ClassInfo{\KOMAClassName}{head=`\scr@ds@head'}%
      \expandafter\csname #1mark\expandafter\endcsname\expandafter{%
        \scr@ds@head}%
%<trace>      \ClassInfo{\KOMAClassName}{tocentry=`\scr@ds@tocentry'}%
      \ifx\scr@ds@tocentry\@empty\else
        \scr@ifundefinedorrelax{add#1tocentry}{%
          \expandafter\global\expandafter\def
          \csname add#1tocentry\endcsname####1####2{%
            \addtocentrydefault{#1}{####1}{####2}%
          }%
        }{}%
        \ifnum #2>\c@secnumdepth
          \csname add#1tocentry\endcsname{}{\scr@ds@tocentry}%
        \else
          \csname add#1tocentry\endcsname{\csname the#1\endcsname}{%
            \scr@ds@tocentry}%
        \fi
      \fi
    }%
  \fi
  \@xsect{#5}%
}
%    \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
% 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}
\BeforeClosingMainAux{%
  \if@autodot\if@filesw\immediate\write\@mainaux{%
      \string\global\string\@altsecnumformattrue}%
  \fi\fi}
%    \end{macrocode}
%
%
% \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}
\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
% 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}
\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}
% 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@style@chapter@options}
% 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{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{font}] Schrifteinstellungen für die Präfixzeile des Elements.
% \end{description}
%    \begin{macrocode}
\DeclareSectionCommandStyleFontOption{chapter}{prefixfont}{}{prefix}
%</book|report>
%    \end{macrocode}
% \end{macro}^^A \scr@dsc@style@chapter@options
%
% \begin{macro}{\scr@dsc@style@part@options}
% Dann für die Optionen des Stils \texttt{part}:
%    \begin{macrocode}
\newcommand*{\scr@dsc@style@part@options}{}
%    \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}
%</book|report>
%    \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}{}{number}
%    \end{macrocode}
% \end{macro}^^A \scr@dsc@style@part@options
%
% \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}{%
%<trace>  \typeout{TRACE:
%<trace>    \string\scr@dsc@style@section@neededoptionstest\space for
%<trace>    \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}{%
%<trace>  \typeout{TRACE:
%<trace>    \string\scr@dsc@style@chapter@neededoptionstest\space for
%<trace>    \scr@dsc@current}%
  \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}%
  }{}%
}
%</book|report>
%    \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 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}
\newcommand*{\scr@dsc@style@part@neededoptionstest}{%
%<trace>  \typeout{TRACE:
%<trace>    \string\scr@dsc@style@part@neededoptionstest\space for
%<trace>    \scr@dsc@current}%
%<*book|report>
  \scr@ifundefinedorrelax{scr@\scr@dsc@current @innerskip}{%
    \scr@declaresectioncommanderror{\scr@dsc@current}{inner part skip}
    {innerskip}%
  }{}%
%</book|report>
  \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 number}{}{%
    \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@start##1}{%
        \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
%<trace>    \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@start\@nameuse{scr@#2@style}}{%
          \ClassWarning{\KOMAClassName}{%
            not defining `\expandafter\string\csname #2\endcsname'
            due\MessageBreak
            to not yet defined section style\MessageBreak
            `\@nameuse{scr@#2@style}'%
          }%
        }{%
          \expandafter\edef\csname #2\endcsname{%
            \expandafter\noexpand
            \csname scr@start\csname scr@#2@style\endcsname\endcsname
            {#2}%
            \expandafter\noexpand\csname #2numdepth\endcsname
            \expandafter\noexpand\csname scr@#2@sectionindent\endcsname
            \expandafter\noexpand\csname scr@#2@beforeskip\endcsname
            \expandafter\noexpand\csname scr@#2@afterskip\endcsname{%
              \noexpand\ifdim\noexpand\glueexpr
              \expandafter\noexpand\csname scr@#2@beforeskip\endcsname
              <\noexpand\z@
                \unexpanded{%
                  \expandafter\ifnum\scr@v@is@gt{2.96}\relax
                    \setlength{\parfillskip}{\z@ plus 1fil}%
                  \fi
                }%
              \noexpand\fi
              \unexpanded{%
                \raggedsection\normalfont\sectfont\nobreak\usekomafont{#2}%
              }%
            }%
          }%
        }%
      \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
        }%
      }{}%
    }%
  }%
}
%    \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
}
%</body>
%</class>
%    \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
  }%
}
%</body>
%</book|report>
%</class>
%    \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
}
%</body>
%</class>
%    \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
}
%</body>
%</book>
%</class>
%    \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}%
%</article>
%<*report|book>
  \setcounter{chapter}{0}%
  \setcounter{section}{0}%
  \gdef\@chapapp{\appendixname}%
  \gdef\thechapter{\@Alph\c@chapter}%
%</report|book>
  \csname appendixmore\endcsname
}
%</body>
%</class>
%    \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}{}
%</prepare>
%</class>
%    \end{macrocode}
% \end{macro}^^A \size@partnumber
% \end{macro}^^A \size@part
%
%
% \begin{macro}{\partnumdepth}
%   \changes{v3.12}{2013/12/16}{new read only command}^^A
% Darf nur gelesen, sollten aber nie umdefiniert werden und gibt die
% Nummerierungsebene der Gliederungsanweisungen an (nicht zu verwechseln mit
% der Verzeichnisebene der Gliederungsanweisungen). Dass sich die Ebene für
% \texttt{article} unterscheidet ist ein zum Feature erklärten Bug, der aus
% Kompatibilitätsgründen von den Standardklassen übernommen wurde. Richtig
% glücklich bin ich damit jedoch nicht!
%    \begin{macrocode}
%<*class>
%<*body>
\newcommand*{\partnumdepth}{%
%<article> \z@
%<report|book> \m@ne
}
%    \end{macrocode}
% \end{macro}^^A \partnumdepth
%
%
% \begin{macro}{\part}
%   \changes{v2.1c}{1995/01/17}{Zeichenkette "`markboth"' durch Befehl
%     \cs{markboth} ersetzt}^^A
%   \changes{v2.2c}{1995/05/25}{Part-Ausgabe auf CJK umgestellt}^^A
%   \changes{v2.3c}{1995/08/06}{alternative Numerierung bei römischer
%     Part-Numerierung}^^A
%   \changes{v2.3d}{1995/08/19}{alternative Numerierung korrigiert}^^A
%   \changes{v2.3g}{1996/01/14}{\cs{hbox} durch \cs{null} ersetzt}^^A
%   \changes{v2.8d}{2001/07/05}{\cs{partpagestyle} statt \texttt{plain}}^^A
%   \changes{v2.8p}{2001/09/27}{Präambel über der Überschrift hinzugefügt}^^A
%   \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont} behebt einen
%     Bug im color Paket}^^A
%   \changes{v3.13a}{2014/09/11}{Verwendung von \cs{SecDef}}^^A
% \begin{macro}{\@part}
%   \changes{v2.4b}{1996/03/29}{\cs{size@partnumer} durch
%     \cs{size@partnumber} ersetzt}^^A
%   \changes{v2.4n}{1997/05/28}{für \textsf{scrartcl} \cs{markboth}
%     zum Löschen der Kolumnentitel durch \cs{sectionmark} ersetzt}^^A
%   \changes{v2.5e}{1998/07/17}{\cs{numberline} verwendet, damit die
%     reservierte Part-Nummern-Breite in \cs{l@part} auch wirklich verwendet
%     wird}^^A
%   \changes{v2.8e}{2001/07/10}{\cs{@maybeautodot} wird aufgerufen}^^A
%   \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor \cs{size@part} und
%     \cs{size@partnumber} aufgerufen}^^A
%   \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}^^A
%   \changes{v2.95}{2002/08/13}{\cs{centering} und \cs{@parskipfalse}%
%     \cs{@parskip@indent} vertauscht}^^A
%   \changes{v2.95}{2004/11/05}{\cs{@parskipfalse} und \cs{@parskip@indent}
%     ersetzt}^^A
%   \changes{v3.08}{2010/11/01}{Verwendung von \cs{addparttocentry}}^^A
%   \changes{v3.10}{2011/08/30}{Integration der Erweiterung für das optionale
%     Argument der Gliederungsbefehle}^^A
%   \changes{v3.10}{2011/08/30}{Wenn \cs{partmark} \cs{@gobble} ist, wird
%     stattdessen \cs{@mkboth}{}{} aufgerufen.}^^A
% \begin{macro}{\@spart}
%   \changes{v2.4n}{1997/05/28}{in der Sternvariante \cs{chaptermark}^^A
%     bzw. \cs{sectionmark} eingefügt, um die Kolumnentitel zu
%     löschen}^^A
%   \changes{v2.6a}{2000/01/20}{zum Löschen der Kolumnentitel wird
%     nun \cs{@mkboth} verwendet}^^A
%   \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}^^A
%   \changes{v2.95}{2002/08/13}{\cs{centering} und
%     \cs{@parskipfalse}\cs{@parskip@indent} vertauscht}^^A
%   \changes{v2.95}{2004/11/05}{\cs{@parskipfalse} und \cs{@parskip@indent}
%     ersetzt}^^A
% \begin{macro}{\@endpart}
%   \changes{v2.3g}{1996/01/14}{\cs{@endpart} wird für
%     \textsf{scrartcl} nicht mehr definiert}^^A
%   \changes{v2.4e}{1996/07/02}{Option \texttt{openany} beachten}^^A
%   \changes{v2.6c}{2000/06/10}{\cs{@endpart} fügt nur noch in
%     beidseitigen Dokumenten bei Verwendung von openright eine
%     Leerseite ein}^^A
%   \changes{v2.8p}{2001/09/27}{\cs{vbox} eingefügt}^^A
%   \changes{v2.8p}{2001/09/27}{\cs{use@preamble} ersetzt
%     \cs{@part@preamble}}^^A
%   \changes{v3.02}{2009/01/01}{Verwendung des neuen
%     \cs{partheademptypage}}^^A
% Der Gliederungsfehl \cs{part} wird wie in den Standardklassen mit
% Hilfe mehrere Hilfsmakros definiert. Wesentliche Unterschiede zu den
% Standardklassen existieren nicht, jedoch sind Schriftgröße,
% Schriftart u.\,ä. flexibler gehalten. Außerdem gibt es die
% Möglichkeit von Präambeln. \emph{Achtung: Die Präambel vor der
% \cs{part}-Überschrift kann ohne Warnung über den oberen Rand
% hinaus reichen!}
% \begin{macro}{\partheadstartvskip}
%   \changes{v2.95a}{2006/07/10}{neue Konfiguratonsmöglichkeit}^^A
%   \changes{v3.15}{2014/11/24}{\textsf{scrartcl} definiert und verwendet
%     \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.
% \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}
\newcommand*{\scr@part@beforeskip}{%
%<article>  4ex
%    \end{macrocode}
% Hinweis: Das |+\baselineskip| wird benötigt, um Kompatibilitätsprobleme mit
% der Umdefinierung von |\chapterheadstartvskip| zu vermeiden.
%    \begin{macrocode}
%<report|book>  \z@ \@plus 1fil + \baselineskip
}
\newcommand*{\partheadstartvskip}{%
%<article>  \addvspace{\@tempskipa}%
%<report|book>  \null\vskip-\baselineskip\vskip\@tempskipa
}
%<book|report>\newcommand*{\scr@part@innerskip}{20\p@}
\newcommand*{\partheadmidvskip}{%
  \par\nobreak
%<book|report>  \vskip\@tempskipa
}
\newcommand*{\scr@part@afterskip}{%
%<article>  3ex
%<report|book>  \z@ \@plus 1fil
}
\newcommand*{\partheadendvskip}{%
%<article>  \vskip\@tempskipa
%<report|book>  \vskip\@tempskipa\newpage
}
\newcommand*{\scr@part@style}{part}
%<*report|book>
\newcommand*{\partheademptypage}{%
  \if@twoside\if@openright
      \null%
      \thispagestyle{empty}%
      \newpage
  \fi\fi
}
%</report|book>
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%    \begin{macrocode}
%<*article>
\newcommand\part{\par
  \@tempskipa=\glueexpr\scr@part@beforeskip\relax
  \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
  \partheadstartvskip%
  \@afterindentfalse
  \SecDef\@part\@spart
}
%</article>
%<*report|book>
\newcommand\part{\if@openright\cleardoublepage\else\clearpage\fi
  \thispagestyle{\partpagestyle}%
  \if@twocolumn
    \onecolumn
    \@tempswatrue
  \else
    \@tempswafalse
  \fi
  \@tempskipa=\glueexpr\scr@part@beforeskip\relax
  \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
  \partheadstartvskip
  \vbox to\z@{\vss\use@preamble{part@o}\strut\par}%
  \vskip-\baselineskip\nobreak%
  \SecDef\@part\@spart
}
%</report|book>
\newcommand*{\@part}{}
\def\@part[#1]#2{%
  \ifnum \scr@osectarg=\z@
    \@scr@tempswafalse
  \else
    \scr@istest#1=\@nil
  \fi
  \if@scr@tempswa
    \setkeys{KOMAarg.section}{tocentry={#2},head={#2},#1}%
  \else
    \ifcase \scr@osectarg\relax
      \setkeys{KOMAarg.section}{tocentry={#1},head={#1}}%
    \or
      \setkeys{KOMAarg.section}{tocentry={#2},head={#1}}%
    \or
      \setkeys{KOMAarg.section}{tocentry={#1},head={#2}}%
    \or
      \setkeys{KOMAarg.section}{tocentry={#1},head={#1}}%
    \fi
  \fi
  \ifnumbered{part}{%
    \refstepcounter{part}%
    \@maybeautodot\thepart%
    \ifx\scr@ds@tocentry\@empty\else
      \addparttocentry{\thepart}{\scr@ds@tocentry}%
    \fi
  }{%
    \ifx\scr@ds@tocentry\@empty\else
      \addparttocentry{}{\scr@ds@tocentry}%
    \fi
  }%
  \begingroup
    \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative
    \raggedpart
    \interlinepenalty \@M
    \normalfont\sectfont\nobreak
    \ifnumbered{part}{%
      \size@partnumber{\partformat}%
%<book|report>      \setlength{\@tempskipa}{\scr@part@innerskip}%
      \partheadmidvskip
    }{}%
    \size@part{#2}\strut
    \ifx\partmark\@gobble
      \@mkboth{}{}\par
    \else
      \expandafter\partmark\expandafter{\scr@ds@head}\par
    \fi
  \endgroup
%<*article>
  \nobreak
  \@tempskipa=\glueexpr\scr@part@afterskip\relax
  \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
  \partheadendvskip
  \@afterheading
%</article>
%<book|report>  \@endpart
}
\newcommand*{\@spart}[1]{%
  \begingroup
    \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative
    \raggedpart
    \interlinepenalty \@M
    \normalfont
    \sectfont\nobreak\size@part{#1}\strut\@mkboth{}{}\par
  \endgroup
%<*article>
  \nobreak
  \@tempskipa=\glueexpr\scr@part@afterskip\relax
  \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
  \partheadendvskip
  \@afterheading
%</article>
%<book|report>  \@endpart
}
%<*book|report>
\newcommand*{\@endpart}{\vbox to\z@{\use@preamble{part@u}\vss}%
  \@tempskipa=\glueexpr\scr@part@afterskip\relax
  \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
  \partheadendvskip
  \partheademptypage
  \if@tempswa
    \twocolumn
  \fi
}
%</book|report>
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\setpartpreamble}
%   \changes{v2.8f}{2001/07/12}{neu}^^A
%   \changes{v2.8p}{2001/09/27}{Verwendung von \cs{use@preamble}}^^A
% \begin{macro}{\part@u@preamble}
%   \changes{v2.8p}{2001/09/27}{neu (intern)}^^A
%   \changes{v2.8p}{2001/09/27}{Ersatz für \cs{part@preamble}}^^A
%   \changes{v3.12a}{2014/02/14}{flaschen (\cs{part@preamble@u}) Namen
%     korrigiert}^^A
% \begin{macro}{\part@o@preamble}
%   \changes{v2.8p}{2001/09/27}{neu (intern)}^^A
%   \changes{v3.12a}{2014/02/14}{flaschen Namen (\cs{part@preamble@o})
%     korrigiert}^^A
% Analog zu den Kapitel gibt es Befehle für eine Teil-Präambel.
%    \begin{macrocode}
%<*book|report>
\newcommand*{\setpartpreamble}{\set@preamble{part}}
\newcommand*{\part@u@preamble}{}
\let\part@u@preamble\relax
\newcommand*{\part@o@preamble}{}
\let\part@o@preamble\relax
%</book|report>
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \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
% \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
% \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
% \begin{macro}{\@saddpart}
%   \changes{v2.8c}{2001/06/29}{neu (intern)}^^A
%    \begin{macrocode}
\newcommand\addpart{%
%<*article>
  \par
  \partheadstartvskip
  \@afterindentfalse
%</article>
%<*report|book>
  \if@openright\cleardoublepage\else\clearpage\fi
  \thispagestyle{\partpagestyle}%
  \if@twocolumn
    \onecolumn
    \@tempswatrue
  \else
    \@tempswafalse
  \fi
  \@tempskipa=\glueexpr\scr@part@beforeskip\relax
  \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
  \partheadstartvskip
  \vbox to\z@{\vss\use@preamble{part@o}\strut\par}%
  \vskip-\baselineskip\nobreak%
%</report|book>
  \SecDef\@addpart\@saddpart
}
\newcommand*{\@addpart}{}
\def\@addpart[#1]#2{%
  \ifnum \scr@osectarg=\z@
    \@scr@tempswafalse
  \else
    \scr@istest#1=\@nil
  \fi
  \if@scr@tempswa
    \setkeys{KOMAarg.section}{tocentry={#2},head={#2},#1}%
  \else
    \ifcase \scr@osectarg\relax
      \setkeys{KOMAarg.section}{tocentry={#1},head={#1}}%
    \or
      \setkeys{KOMAarg.section}{tocentry={#2},head={#1}}%
    \or
      \setkeys{KOMAarg.section}{tocentry={#1},head={#2}}%
    \or
      \setkeys{KOMAarg.section}{tocentry={#1},head={#1}}%
    \fi
  \fi
%    \end{macrocode}
% Notlösung, damit \textsf{hyperref} halbwegs damit klar kommt. Das ist aber
% weit davon entfernt eine echte Lösung zu bringen.
%   \changes{v3.10b}{2012/04/24}{missing \cs{fi} added}^^A
%    \begin{macrocode}
  \csname phantomsection\endcsname
  \ifx\scr@ds@tocentry\@empty\else
    \expandafter\addparttocentry\expandafter{\expandafter}\expandafter{%
      \scr@ds@tocentry}%
  \fi
  \@spart{#2}%
  \expandafter\addpartmark\expandafter{\scr@ds@head}%
}
%    \end{macrocode}
% Da bereits \cs{@spart} den Kolumnentitel mit \cs{@mkboth} löscht, brauchen
% wir hier im Gegensatz zu \cs{@saddchap} das nicht auch noch zu erledigen.
%    \begin{macrocode}
\newcommand*{\@saddpart}{\@spart}
%    \end{macrocode}
%
% \begin{macro}{\partmark}
%   \changes{v2.9r}{2004/07/20}{neu (für \textsf{scrpage2})}^^A
%    \begin{macrocode}
\newcommand*{\partmark}{}
\let\partmark\@gobble
%    \end{macrocode}
% \end{macro}^^A \partmark

% \begin{macro}{\addpartmark}
%   \changes{v3.17}{2015/04/20}{neue Anweisung}^^A
% Analog zu \cs{addchapmark} für \cs{addpart}. Auch dabei gilt, dass
% \cs{if@mainmatter} hier auch von \textsf{scrreprt} definiert wird. Das ist
% Absicht und vereinfacht dem einen oder anderen Paket oder Benutzer
% vielleicht die Arbeit.
%    \begin{macrocode}
\newcommand*\addpartmark[1]{%
  \begingroup
    \expandafter\let\csname if@mainmatter\expandafter\endcsname
    \csname iffalse\endcsname
    \c@secnumdepth=-2
    \partmark{#1}%
  \endgroup
}
%    \end{macrocode}
% \end{macro}^^A \addpartmark
%
% \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}{\parttocdepth}
%   \changes{v3.15}{2014/12/22}{neue Anweisung}^^A
% Die Ebene des Verzeichniseintrags wird tatsächlich verwendet.
%    \begin{macrocode}
\newcommand*{\parttocdepth}{\m@ne}
\let\parttocdepth\m@ne
%    \end{macrocode}
% \end{macro}^^A \parttocdepth
% \begin{macro}{\scr@part@tocindent}
%   \changes{v3.15}{2014/12/02}{neue (interne) Anweisung}^^A
% Wird nicht verwendet aber zwecks besserer Kompatibilität mit
% \cs{DeclareSectionCommand} definiert.
%    \begin{macrocode}
\newcommand*{\scr@part@tocindent}{\z@}
\let\scr@part@tocindent\z@
%    \end{macrocode}
% \end{macro}^^A \scr@part@tocindent
% \begin{macro}{\scr@part@tocnumwidth}
%   \changes{v3.15}{2014/12/02}{neue (interne) Anweisung}^^A
% Die definierte Breite der Nummer für den Eintrag ins Inhaltsverzeichnis.
%    \begin{macrocode}
\newcommand*{\scr@part@tocnumwidth}{2em}
%    \end{macrocode}
% \end{macro}
%    \begin{macrocode}
\newcommand*\l@part[2]{%
  \ifnum \c@tocdepth <\parttocdepth \else
%<article>    \addpenalty{\@secpenalty}%
%<book|report>    \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
%</article>
          \penalty\@highpenalty
%<article>         \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}{\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}{}
%<article>\let\raggedpart\raggedsection
%<report|book>\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{macrocode}
\newcommand*{\scr@fnt@part}{\size@part}
\newcommand*{\scr@fnt@partnumber}{\size@partnumber}
%    \end{macrocode}
% \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}{}
%</body>
%</class>
%    \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.
%
% \begin{option}{chapterprefix}
%   \changes{v2.8}{2001/06/15}{neue Option}^^A
%   \changes{v2.95c}{2006/08/21}{als \textsf{keyval}-Option}^^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>
%<*option>
\newif\if@chapterprefix
\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}%
%</option>
%    \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}
%</option>
%    \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}
%</prepare>
%    \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. Das bedeutet jedoch
% nicht, dass \cs{chapter} mit \cs{DeclareSectionCommand} den Stil von normalen
% Gliederungsbefehlen erhalten kann!
% \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}
%</prepare>
%    \end{macrocode}
% \end{macro}^^A \chapterheadmidvskip
% \end{macro}^^A \chapterheadendvskip
% \end{macro}^^A \chapterheadstartvskip
%
% \begin{macro}{\chapternumdepth}
%   \changes{v3.12}{2013/12/16}{new read only command}^^A
% Darf nur gelesen, sollten aber nie umdefiniert werden und gibt die
% Nummerierungsebene der Gliederungsanweisungen an (nicht zu verwechseln mit
% der Verzeichnisebene der Gliederungsanweisungen):
%    \begin{macrocode}
%<*body>
\newcommand*{\chapternumdepth}{\z@}
%    \end{macrocode}
% \end{macro}^^A \chapternumdepth
%
%
% \begin{macro}{\chapter}
%   \changes{v2.8d}{2001/07/05}{\cs{chapterpagestyle} statt
%     \texttt{plain}}^^A
% \begin{macro}{\@chapter}
%   \changes{v2.8e}{2001/07/10}{\cs{@maybeautodot} wird aufgerufen}^^A
%   \changes{v2.8g}{2001/07/18}{per \cs{float@addtolists} wird nun
%     auch ein vertikaler Abstand in Listen des \texttt{float}-Pakets
%     eingebaut}^^A
%   \changes{v3.00}{2008/07/01}{jetzt auch Kapiteleinträge in andere
%     float-Verzeichnisse mit hyperref}^^A
%   \changes{v3.08}{2010/11/01}{Verwendung von \cs{addchaptertocentry}}^^A
%   \changes{v3.10}{2011/08/30}{Integration der Erweiterung für das optionale
%     Argument der Gliederungsbefehle}^^A
%   \changes{v3.13a}{2014/09/11}{Verwendung von \cs{SecDef}}^^A
% \begin{macro}{\@makechapterhead}
%   \changes{v2.7b}{2001/01/05}{Kapitel können grundsätzlich mit
%     einer Präambel versehen werden}^^A
%   \changes{v2.8p}{2001/09/25}{es gibt verschiedene Arten von Präambeln}^^A
%   \changes{v3.15}{2014/12/10}{\cs{nobreak} am Ende entfernt}^^A
% \begin{macro}{\@@makechapterhead}
%   \changes{v2.8p}{2001/09/25}{neu (intern)}^^A
%   \changes{v2.8q}{2002/04/18}{\cs{raggedsection} wird bei Option
%     \texttt{chapterprefix} auch auf den Präfix angewendet}^^A
%   \changes{v2.9p}{2003/06/28}{\cs{parfillskip} auf \cs{fill} gesetzt}^^A
% Der Gliederungsfehl \cs{chapter}, der nur in den Klassen
% \textsf{scrbook} und \textsf{scrreprt} vorhanden ist, wird wie in
% den Standardklassen mit Hilfe mehrere Hilfsmakros definiert.
% \begin{macro}{\if@at@twocolumn}
%   \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}{\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
% 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}{%
  {%
    \settoheight{\@tempdima}{%
      \@tempskipa=\glueexpr \scr@chapter@beforeskip\relax
      \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
      \vbox{\chapterheadstartvskip}%
    }%
    \settodepth{\@tempdimb}{%
      \@tempskipa=\glueexpr \scr@chapter@beforeskip\relax
      \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
      \vbox{\chapterheadstartvskip}%
    }%
    \addtolength{\@tempdima}{\@tempdimb}%
    \setbox\z@\vbox{%
      \use@preamble{chapter@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 chapter is \the\@tempdimb\space too
          high.\MessageBreak
          Tolerated without warning because of\MessageBreak
          \string\vfuzz\space = \the\vfuzz\space >= \the\@tempdimb
        }%
      \else
      \ClassWarning{\KOMAClassName}{%
        preamble before chapter is \the\@tempdimb\space too
        high.\MessageBreak
        To avoid the overfull \string\vbox\space you may
        redefine\MessageBreak
        \string\chapterheadstartvskip\space at the preamble of
        your\MessageBreak
        document. You may also change
        \string\setchapterpreamble\MessageBreak 
        before the command, which generates the message
        about\MessageBreak
        an overfull \string\vbox
      }%
      \fi
    \fi%
  }%
}
%    \end{macrocode}
% \end{macro}^^A \use@chapter@o@preamble
% Zurück zur Kapiteldefinition:
%    \begin{macrocode}
\newcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi
  \thispagestyle{\chapterpagestyle}%
  \global\@topnum\z@
  \@afterindentfalse
  \SecDef\@chapter\@schapter
}
%    \end{macrocode}
%   \changes{v3.06}{2010/06/02}{einschalten des \texttt{tocbasic}-Features
%     \texttt{chapteratlist} in die Datei \texttt{scrkliof.dtx} verschoben}^^A
% Die Variante ohne Stern:
%    \begin{macrocode}
\newcommand*{\@chapter}{}
\def\@chapter[#1]#2{%
  \ifnum \scr@osectarg=\z@
    \@scr@tempswafalse
  \else
    \scr@istest#1=\@nil
  \fi
  \if@scr@tempswa
    \setkeys{KOMAarg.section}{tocentry={#2},head={#2},#1}%
  \else
    \ifcase \scr@osectarg\relax
      \setkeys{KOMAarg.section}{tocentry={#1},head={#1}}%
    \or
      \setkeys{KOMAarg.section}{tocentry={#2},head={#1}}%
    \or
      \setkeys{KOMAarg.section}{tocentry={#1},head={#2}}%
    \or
      \setkeys{KOMAarg.section}{tocentry={#1},head={#1}}%
    \fi
  \fi
  \ifnumbered{chapter}{%
%<book>    \if@mainmatter
      \refstepcounter{chapter}%
      \@maybeautodot\thechapter
      \typeout{\@chapapp\space\thechapter.}%
      \ifx\scr@ds@tocentry\@empty\else
        \addchaptertocentry{\thechapter}{\scr@ds@tocentry}%
      \fi
%<*book>
    \else
%    \end{macrocode}
% \changes{v3.15}{2014/11/20}{Resetliste des Kapitelzählers ausführen}^^A
%    \begin{macrocode}
      \expandafter\ifnum\scr@v@is@lt{3.15}\relax\else
        \begingroup
          \let\@elt\@stpelt
          \csname cl@chapter\endcsname
        \endgroup
      \fi
      \ifx\scr@ds@tocentry\@empty\else
        \addchaptertocentry{}{\scr@ds@tocentry}%
      \fi
    \fi
%</book>
  }{%
    \ifx\scr@ds@tocentry\@empty\else
      \addchaptertocentry{}{\scr@ds@tocentry}%
    \fi
  }%
  \expandafter\chaptermark\expandafter{\scr@ds@head}%
  \ifdim \@chapterlistsgap>\z@
    \doforeachtocfile{%
      \iftocfeature{\@currext}{chapteratlist}{%
        \addtocontents{\@currext}{\protect\addvspace{\@chapterlistsgap}}%
      }{}%
    }%
    \@ifundefined{float@addtolists}{}{%
      \scr@float@addtolists@warning
      \float@addtolists{\protect\addvspace{\@chapterlistsgap}}%
    }%
  \fi
  \if@twocolumn
    \if@at@twocolumn
      \@makechapterhead{#2}%
    \else
      \@topnewpage[\@makechapterhead{#2}]%
    \fi
  \else
    \@makechapterhead{#2}%
    \@afterheading
  \fi
}
\newcommand*{\@makechapterhead}[1]{%
  \use@chapter@o@preamble
  \@@makechapterhead{#1}%
  \use@preamble{chapter@u}%
}
%    \end{macrocode}
%  \changes{v2.96a}{2006/12/02}{Abstand nach der Präfixzeile nur, wenn eines
%    Präfixzeile ausgegeben wurde}^^A
%  \changes{v2.97b}{2007/03/09}{\cs{endgraf} korrigiert}^^A
%  \changes{v3.15}{2014/11/20}{Generalumbau}^^A
%  \changes{v3.15}{2014/12/09}{\cs{raggedchapter} ersetzt
%    \cs{raggedsection}}^^A
%  \changes{v3.17}{2015/04/03}{Verwendung von \cs{usefontofkomafont} für die
%    initiale Fontumstellung}^^A
%    \begin{macrocode}
\newcommand*{\@@makechapterhead}[1]{%
  \@tempskipa=\glueexpr \scr@chapter@beforeskip\relax
  \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
  \chapterheadstartvskip
  {%
    \setlength{\parindent}{\z@}\setlength{\parfillskip}{\fill}%
    \normalfont\sectfont\nobreak\nobreak\usefontofkomafont{chapter}%
%<book>    \if@mainmatter
     \def\IfUseNumber{\ifnumbered{chapter}}%
%<book>    \else\let\IfUseNumber\@secondoftwo\fi
    \if@chapterprefix
      \raggedchapter
      \let\IfUsePrefixLine\@firstoftwo
      \let\@tempa\@firstofone
    \else
      \let\IfUsePrefixLine\@secondoftwo
      \let\@tempa\@hangfrom
    \fi
    \@tempa{%
      \IfUseNumber{%
        \usekomafont{chapter}{%
          \IfUsePrefixLine{%
            {\usekomafont{chapterprefix}{%
                \chapterformat
                \setlength{\@tempskipa}{\scr@chapter@innerskip}%
                \chapterheadmidvskip
            }}%
          }{%
            \chapterformat
          }%
        }%
      }{}%
    }%
    {%
      \IfUsePrefixLine{}{\raggedchapter}%
      \interlinepenalty \@M 
      \usekomafont{chapter}{#1}\par
    }%
  }%
  \nobreak\par\nobreak
  \@tempskipa=\glueexpr \scr@chapter@afterskip\relax
  \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
  \chapterheadendvskip
}
%    \end{macrocode}
% \end{macro}^^A \@@makechapterhead
% \end{macro}^^A \@makechapterhead
% \end{macro}^^A \@chapter
% \begin{macro}{\setchapterpreamble}
%   \changes{v2.7b}{2001/01/05}{neu}^^A
%   \changes{v2.8p}{2001/09/25}{Verwendung von \cs{set@preamble}}^^A
% \begin{macro}{\chapter@u@preamble}
%   \changes{v2.8p}{2001/09/25}{neu (intern)}^^A
%   \changes{v2.8p}{2001/09/25}{Ersatz für \cs{chapter@preamble}}^^A
% \begin{macro}{\chapter@o@preamble}
%   \changes{v2.8p}{2001/09/25}{neu (intern)}^^A
% Diese Makros werden benötigt, um die Kapitel-Präambel zu setzen
% bzw. zu speichern.
%    \begin{macrocode}
\newcommand*{\setchapterpreamble}{\set@preamble{chapter}}
\newcommand*{\chapter@u@preamble}{}
\let\chapter@u@preamble\relax
\newcommand*{\chapter@o@preamble}{}
\let\chapter@o@preamble\relax
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \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}{\@schapter}
% \begin{macro}{\@makeschapterhead}
%   \changes{v2.7b}{2001/01/05}{Kapitel können grundsätzlich mit
%     einer Präambel versehen werden}^^A
%   \changes{v3.15}{2014/12/10}{\cs{nobreak} am Ende entfernt}^^A
% \begin{macro}{\@@makeschapterhead}
%   \changes{v2.8p}{2001/09/25}{neu (intern)}^^A
%   \changes{v2.9p}{2003/06/28}{\cs{parfillskip} auf \cs{fill} gesetzt}^^A
%   \changes{v2.9q}{2004/03/24}{Klammerung an \cs{@@makechapterhead}^^A
%     angepasst}^^A
%  \changes{v3.15}{2014/12/09}{\cs{raggedchapter} ersetzt
%    \cs{raggedsection}}^^A
% Die Sternvariante, die um Einiges einfacher ausfällt.
%    \begin{macrocode}
\newcommand*{\@schapter}[1]{%
  \if@twocolumn
    \if@at@twocolumn
      \@makeschapterhead{#1}%
    \else
      \@topnewpage[\@makeschapterhead{#1}]%
    \fi
  \else
    \@makeschapterhead{#1}%
    \@afterheading
  \fi
}
\newcommand*{\@@makeschapterhead}[1]{%
  \@tempskipa=\glueexpr \scr@chapter@beforeskip\relax
  \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
  \chapterheadstartvskip
  {%
    \setlength{\parindent}{\z@}\setlength{\parfillskip}{\fill}%
    \normalfont\sectfont\nobreak\nobreak\usekomafont{chapter}{}%
    \raggedchapter \interlinepenalty \@M \usekomafont{chapter}{#1}\par
  }%
  \nobreak\par\nobreak
  \@tempskipa=\glueexpr \scr@chapter@afterskip\relax
  \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
  \chapterheadendvskip%
}
\newcommand*{\@makeschapterhead}[1]{%
  \use@chapter@o@preamble
  \@@makeschapterhead{#1}%
  \use@preamble{chapter@u}%
}
%    \end{macrocode}
% \end{macro}^^A \@@makeschapterhead
% \end{macro}^^A \@makeschapterhead
% \end{macro}^^A \@schapter
% \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
% \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
% \begin{macro}{\@saddchap}
%   \changes{v3.12}{2013/02/26}{Verwendung von \cs{addchapmark}}^^A
%    \begin{macrocode}
\newcommand\addchap{%
  \if@openright\cleardoublepage\else\clearpage\fi
  \thispagestyle{\chapterpagestyle}%
  \global\@topnum\z@
  \@afterindentfalse
  \SecDef\@addchap\@saddchap%
}%
\newcommand*{\@addchap}{}%
\def\@addchap[#1]#2{%
  \ifnum \scr@osectarg=\z@
    \@scr@tempswafalse
  \else
    \scr@istest#1=\@nil
  \fi
  \if@scr@tempswa
    \setkeys{KOMAarg.section}{tocentry={#2},head={#2},#1}%
  \else
    \ifcase \scr@osectarg\relax
      \setkeys{KOMAarg.section}{tocentry={#1},head={#1}}%
    \or
      \setkeys{KOMAarg.section}{tocentry={#2},head={#1}}%
    \or
      \setkeys{KOMAarg.section}{tocentry={#1},head={#2}}%
    \or
      \setkeys{KOMAarg.section}{tocentry={#1},head={#1}}%
    \fi
  \fi
  \@schapter{#2}%
  \ifx\scr@ds@tocentry\@empty\else
    \addchaptertocentry{}{\scr@ds@tocentry}%
  \fi
  \ifnum \@nameuse{scr@v@2.96}<\scr@compatibility\relax
    \ifdim \@chapterlistsgap>\z@
      \doforeachtocfile{%
        \iftocfeature{\@currext}{chapteratlist}{%
          \addtocontents{\@currext}{\protect\addvspace{\@chapterlistsgap}}%
        }{}%
      }%
      \@ifundefined{float@addtolists}{}{%
        \scr@float@addtolists@warning
        \float@addtolists{\protect\addvspace{\@chapterlistsgap}}%
      }%
    \fi
  \fi
  \expandafter\addchapmark\expandafter{\scr@ds@head}%
}%
\newcommand*{\@saddchap}[1]{\@schapter{#1}\addchapmark{}}%
%    \end{macrocode}
% In \texttt{hyperref} bis Version 6.71a ist ein dicker Bug. In
% verschiedenen \texttt{def}-Dateien wird dort das \emph{interne}
% \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}}}
%</book>
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
%
% \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}{\chaptertocdepth}
%   \changes{v3.15}{2014/12/22}{neue Anweisung}^^A
% Die Ebene des Verzeichniseintrags wird tatsächlich verwendet.
%    \begin{macrocode}
\newcommand*{\chaptertocdepth}{\z@}
\let\chaptertocdepth\z@
%    \end{macrocode}
% \end{macro}^^A \chaptertocdepth
% \begin{macro}{\scr@chapter@tocindent}
%   \changes{v3.15}{2014/12/02}{neue (interne) Anweisung}^^A
% Der Einzug des Eintrags wird nicht verwendet.
%    \begin{macrocode}
\newcommand*{\scr@chapter@tocindent}{\z@}
\let\scr@chapter@tocindent\z@
%    \end{macrocode}
% \end{macro}^^A \scr@chapter@tocindent
% \begin{macro}{\scr@chapter@tocnumwidth}
%   \changes{v3.15}{2014/12/02}{neue (interne) Anweisung}^^A
% Die Breite der Nummer des Eintrags wird tatsächlich verwendet.
%    \begin{macrocode}
\newcommand*{\scr@chapter@tocnumwidth}{1.5em}
%    \end{macrocode}
% \end{macro}
% \begin{option}{chapterentrydots}
%   \changes{v3.15}{2014/12/10}{Neu}^^A
% Seit Version~3.15 kann man mit dieser Option Pünktchen zwischen Text und
% Seitenzahl in den Kapiteleinträgen einschalten.
%    \begin{macrocode}
%</body>
%<*option>
\KOMA@ifkey{chapterentrydots}{@chapterentrywithdots}
%</option>
%<*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}
%
% \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
% \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%
  }%
  \if@chapterprefix\chapapp#1\fi
}
\newcommand*{\chapappifchapterprefix}[1]{%
  \if@chapterprefix\chapapp#1\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 \@chapp
% \end{macro}^^A \chapapp
% \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=\m@ne
    \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}
%</body>
%</book|report>
%</class>
%    \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}{}
%</prepare>
%    \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}
%</option>
%    \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}{}
%</body>
%</article>
%    \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
% \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).
%    \begin{macrocode}
%<*body>
\newcommand*\addsec{\SecDef\@addsec\@saddsec}
\newcommand*{\@addsec}{}
\def\@addsec[#1]#2{\section*{#2}%
  \ifnum \scr@osectarg=\z@
    \@scr@tempswafalse
  \else
    \scr@istest#1=\@nil
  \fi
  \if@scr@tempswa
    \setkeys{KOMAarg.section}{tocentry={#2},head={#2},#1}%
  \else
    \ifcase \scr@osectarg\relax
      \setkeys{KOMAarg.section}{tocentry={#1},head={#1}}%
    \or
      \setkeys{KOMAarg.section}{tocentry={#2},head={#1}}%
    \or
      \setkeys{KOMAarg.section}{tocentry={#1},head={#2}}%
    \or
      \setkeys{KOMAarg.section}{tocentry={#1},head={#1}}%
    \fi
  \fi
  \ifx\scr@ds@tocentry\@empty\else
    \addsectiontocentry{}{\scr@ds@tocentry}%
  \fi
  \expandafter\addsecmark\expandafter{\scr@ds@head}%
}
\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
%</book>
  \thechapter.%
%<book>  \fi
  \@arabic\c@section
}
%</book|report>
%<*article>
\newcounter{section}
\renewcommand*{\thesection}{\@arabic\c@section}
%</article>
\newcommand*\sectionmarkformat{\thesection\autodot\enskip}
\newcounter{subsection}[section]
\renewcommand*{\thesubsection}{\thesection.\@arabic\c@subsection}
%<*article>
\newcommand*\subsectionmarkformat{\thesubsection\autodot\enskip}
%</article>
\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=\m@ne
    \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}
%</article>
%    \end{macrocode}
% \end{KOMAfont}
%
%
% \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}{\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
%
% \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=section,%
  level=1,%
  indent=\z@,%
  beforeskip=-3.5ex \@plus -1ex \@minus -.2ex,%
  afterskip=2.3ex \@plus.2ex,%
%<article>  tocindent=0pt,%
%<book|report>  tocindent=1.5em,%
%<article>  tocnumwidth=1.5em%
%<book|report>  tocnumwidth=2.3em%
]{section}
\DeclareSectionCommand[%
  style=section,%
  level=2,%
  indent=\z@,%
  beforeskip=-3.25ex\@plus -1ex \@minus -.2ex,%
  afterskip=1.5ex \@plus .2ex,%
%<article>  tocindent=1.5em,%
%<book|report>  tocindent=3.8em,%
%<article>  tocnumwidth=2.3em%
%<book|report>  tocnumwidth=3.2em%
]{subsection}
\DeclareSectionCommand[%
  style=section,%
  level=3,%
  indent=\z@,%
  beforeskip=-3.25ex\@plus -1ex \@minus -.2ex,%
  afterskip=1.5ex \@plus .2ex,%
%<article>  tocindent=3.8em,%
%<book|report>  tocindent=7.0em,%
%<article>  tocnumwidth=3.2em%
%<book|report>  tocnumwidth=4.1em%
]{subsubsection}
\DeclareSectionCommand[%
  style=section,%
  level=4,%
  indent=\z@,%
  beforeskip=3.25ex \@plus1ex \@minus.2ex,%
  afterskip=-1em,%
%<article>  tocindent=7.0em,%
%<book|report>  tocindent=10em,%
%<article>  tocnumwidth=4.1em%
%<book|report>  tocnumwidth=5em%
]{paragraph}
\DeclareSectionCommand[%
  style=section,%
  level=5,%
  indent=\scr@parindent,%
  beforeskip=3.25ex \@plus1ex \@minus .2ex,%
  afterskip=-1em,%
%<article>  tocindent=10em,%
%<book|report>  tocindent=12em,%
%<article>  tocnumwidth=5em%
%<book|report>  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
%</body>
%</class>
%    \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 \subparargraphtocdepth
% \end{macro}^^A \paragraphtocdepth
% \end{macro}^^A \subsubsectiontocdepth
% \end{macro}^^A \subsectiontocdepth
% \end{macro}^^A \sectiontocdepth
% \end{macro}^^A \subparargraphnumdepth
% \end{macro}^^A \paragraphnumdepth
% \end{macro}^^A \subsubsectionnumdepth
% \end{macro}^^A \subsectionnumdepth
% \end{macro}^^A \sectionnumdepth
%
%
% \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}
%</prepare>
%<*body>
\newcommand*{\scr@fnt@disposition}{\sectfont}
\aliaskomafont{sectioning}{disposition}
%</body>
%    \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
% 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},%
%</book|report>
    {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}%
%</book|report>
      \renewcommand*{\size@part}{\Huge}%
      \renewcommand*{\size@partnumber}{\huge}%
%<book|report>      \renewcommand*{\size@chapter}{\huge}%
%<book|report>      \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}%
%</book|report>
      \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}%
%</book|report>
%<*article>
      \renewcommand*{\size@section}{\large}%
      \renewcommand*{\size@subsection}{\normalsize}%
%</article>
      \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}%
%</book|report>
      \renewcommand*{\size@part}{\LARGE}%
      \renewcommand*{\size@partnumber}{\LARGE}%
%<*book|report>
      \renewcommand*{\size@chapter}{\Large}%
      \renewcommand*{\size@chapterprefix}{\size@chapter}%
      \renewcommand*{\size@section}{\large}%
%</book|report>
%<*article>
      \renewcommand*{\size@section}{\normalsize}%
%</article>
      \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}%
%</book|report>
    \or % openright
%<*book|report>
      \KOMAoptions{open=right}%
%</book|report>
    \or % openleft
%<*book|report>
      \KOMAoptions{open=left}%
%</book|report>
%    \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}%
%</book|report>
    \or % onelinechapter
%<*book|report>
      \KOMAoptions{chapterprefix=false}%
%</book|report>
    \or % twolineappendix
%<*book|report>
      \KOMAoptions{appendixprefix=true}%
%</book|report>
    \or % onelineappend
%<*book|report>
      \KOMAoptions{appendixprefix=false}%
%</book|report>
%    \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}%
%</book|report>
%<*article>
      \renewcommand*{\size@part}{\huge}%
      \renewcommand*{\size@partnumber}{\Large}%
%</article>
      \renewcommand*{\size@section}{\Large}%
      \renewcommand*{\size@subsection}{\large}%
      \renewcommand*{\size@subsubsection}{\normalsize}%
      \renewcommand*{\size@paragraph}{\normalsize}%
      \renewcommand*{\size@subparagraph}{\normalsize}%
      \renewcommand*{\sectfont}{\bfseries}%
%<book|report>    \KOMAoptions{open=right,chapterprefix=true}%
    \fi
  \fi
}
\KOMA@kav@add{.\KOMAClassFileName}{headings}{big}
%<book|report>\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}
%</option>
%</class>
%    \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
%</!letter>
% \fi
%
% \Finale
%
\endinput
%
% end of file `scrkernel-sections.dtx'
%%% Local Variables:
%%% mode: doctex
%%% coding: iso-latin-1
%%% TeX-master: t
%%% End:
