% \CheckSum{1848}
% \iffalse meta-comment
% ======================================================================
% scrksect.dtx
% Copyright (c) Markus Kohm, 2002-2008
%
% 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.3b of the license.
% The latest version of this license is in
%   http://www.latex-project.org/lppl.txt
% and version 1.3b 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.
% ----------------------------------------------------------------------
% scrksect.dtx
% Copyright (c) Markus Kohm, 2002-2008
%
% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz,
% Version 1.3b, verteilt und/oder veraendert werden.
% Die neuste Version dieser Lizenz ist
%   http://www.latex-project.org/lppl.txt
% und Version 1.3b 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: scrksect.dtx
%<*driver>
% \fi
\ProvidesFile{scrksect.dtx}[2008/10/07 v3.00 KOMA-Script (disposition)]
% \iffalse
\documentclass[halfparskip-]{scrdoc}
\usepackage[english,ngerman]{babel}
\usepackage[latin1]{inputenc}
\CodelineIndex
\RecordChanges
\GetFileInfo{scrksect.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.95}{2002/06/26}{%
%   erste Version aus der Aufteilung von \texttt{scrclass.dtx}}
%
% \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.
%
% Briefe haben derzeit keine derartige Gliederung.
%
% \StopEventually{\PrintIndex\PrintChanges}
%
% \iffalse
%<*!letter>
% \fi
%
% \iffalse
%<*option>
% \fi
% \subsection{Optionen für die Gliederung}
%
% \iffalse
%<*class>
%<*book|report>
% \fi
% \begin{option}{open}
%   \changes{v2.98c}{2008/03/06}{Neue Option}
% Bei \textsf{scrreprt} und \textsf{scrbook} kann per Option eingestellt
% werden, ob 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.
%    \begin{macrocode}
\newif\if@openright
%<report>\@openrightfalse
%<book>\@openrighttrue
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%    \begin{macrocode}
\KOMA@key{open}{%
  \KOMA@set@ncmdkey{open}{@tempa}{%
    {any}{0},%
    {right}{1},%
    {left}{2}%
  }{#1}%
  \ifcase \@tempa\relax
    \@openrightfalse
    \renewcommand*{\cleardoublestandardpage}{\cleardoubleoddstandardpage}%
  \or
    \@openrighttrue
    \renewcommand*{\cleardoublestandardpage}{\cleardoubleoddstandardpage}%
  \or
    \@openrighttrue
    \renewcommand*{\cleardoublestandardpage}{\cleardoubleevenstandardpage}%
  \fi
}
%    \end{macrocode}
% \end{option}
% \begin{option}{openright}
%   \changes{v2.98c}{2008/03/05}{obsolet}
% \begin{option}{openany}
%   \changes{v2.98c}{2008/03/05}{obsolet}
%    \begin{macrocode}
\KOMA@DeclareObsoleteOption[\PackageInfoNoLine]{openright}{open=right}
\KOMA@DeclareObsoleteOption[\PackageInfoNoLine]{openany}{open=any}
%    \end{macrocode}
% \end{option}
% \end{option}
% \iffalse
%</book|report>
%% \fi
%
%
% \begin{option}{numbers}
%   \changes{v2.98c}{2008/03/07}{Neue Option}
% 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)}
% 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.
%    \begin{macrocode}
\newcommand*{\scr@dotchangeatdocument}[1]{%
  \ClassError{\KOMAClassName}{%
    change of end dot feature after \string\begin{document}%
  }{%
    You've tried to set `numbers=#1' after \string\begin{document},\MessageBreak
    but this option is only allowed at the document preamble.\MessageBreak
    See KOMA-Script manual for more information about.%
  }%
}
%    \end{macrocode}
% \end{macro}
% Normalerweise wird automatisch entschieden, ob Nummern mit einem
% Punkt enden müssen oder nicht. Um dies abzuschalten, muss nur der
% gewünschte Zustand eingeschaltet und die Umschaltmöglichkeit
% entfernt werden. Die Umschaltung kann jedoch nicht direkt erfolgen, sondern
% erfolgt zeitverzögert in \cs{begin{document}}. Hier wird nur das Makro
% umgeschaltet, das dort verwendet wird.
%    \begin{macrocode}
\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}%
  \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
}
%    \end{macrocode}
% \begin{macro}{\scr@altsecnumhook}
%   \changes{v2.98c}{2008/03/07}{Neu (intern)}
% \begin{macro}{\scr@altsecnumhooktrue}
%   \changes{v2.98c}{2008/03/07}{Neu (intern)}
% \begin{macro}{\scr@altsecnumhookfalse}
%   \changes{v2.98c}{2008/03/07}{Neu (intern)}
% 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}
\newcommand*{\scr@altsecnumhook}{}
\AtBeginDocument{\scr@altsecnumhook}
\newcommand*{\scr@altsecnumhooktrue}{%
  \@altsecnumformattrue\global\let\@altsecnumformatfalse\@altsecnumformattrue
}
\newcommand*{\scr@altsecnumhookfalse}{%
  \@altsecnumformatfalse\global\let\@altsecnumformattrue\@altsecnumformatfalse
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{option}
%
% \begin{option}{pointednumbers}
%   \changes{v2.3h}{1995/01/19}{neue Option}
%   \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}
% \begin{option}{pointlessnumbers}
%   \changes{v2.3h}{1995/01/19}{neue Option}
%   \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}
%    \begin{macrocode}
\KOMA@DeclareObsoleteOption[\PackageWarningNoLine]{pointednumbers}%
                                                  {numbers=enddot}
\KOMA@DeclareObsoleteOption[\PackageWarningNoLine]{pointlessnumbers}%
                                                  {numbers=noenddot}
%    \end{macrocode}
% Übrigens weiß ich, wie blödsinnig die Namen der Optionen sind. Aber
% das ist nun nicht mehr zu ändern.
% \end{option}
% \end{option}
%
%
%  \begin{option}{chapterprefix}
%    \changes{v2.8}{2001/06/15}{neue Option}
%    \changes{v2.95c}{2006/08/21}{als \textsf{keyval}-Option}
%  \begin{option}{nochapterprefix}
%    \changes{v2.8}{2001/06/15}{neue Option}
%    \changes{v2.95c}{2006/08/21}{obsolete Option}
% \iffalse
%<*book|report>
% \fi
% 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}. 
%  \begin{macro}{\if@chapterprefix}
%  \begin{macro}{\@chapterprefixtrue}
%  \begin{macro}{\@chapterprefixfalse}
% 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}
\newif\if@chapterprefix\@chapterprefixfalse
\KOMA@ifkey{chapterprefix}{@chapterprefix}
\KOMA@DeclareObsoleteOption[\PackageWarningNoLine]{nochapterprefix}%
                                                  {chapterprefix=false}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
% \iffalse
%</book|report>
% \fi
%  \end{option}
%  \end{option}
%
%
%  \begin{option}{appendixprefix}
%    \changes{v2.8}{2001/06/15}{neue Option}
%    \changes{v2.95c}{2006/08/21}{als \textsf{keyval}-Option}
%  \begin{option}{noappendixprefix}
%    \changes{v2.8}{2001/06/15}{neue Option}
%    \changes{v2.95c}{2006/08/21}{obsolete Option}
% \iffalse
%<*book|report>
% \fi
% 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}
\KOMA@key{appendixprefix}[true]{%
  \KOMA@set@ifkey{appendixprefix}{@tempswa}{#1}%
  \if@tempswa
    \def\appendixmore{\@chapterprefixtrue}%
  \else
    \def\appendixmore{\@chapterprefixfalse}%
  \fi
}
\KOMA@DeclareObsoleteOption[\PackageWarningNoLine]{noappendixprefix}%
                                                  {appendixprefix=false}
%    \end{macrocode}
% \iffalse
%</book|report>
% \fi
%  \end{option}
%  \end{option}
%
%
% \begin{macro}{\size@part}
%   \changes{v2.8o}{2001/09/14}{neu (intern)}
%   \changes{v2.96a}{2006/12/02}{letztes Element darf ein Argument erwarten,
%     wenn es keine Auswirkung auf den Zeilen abstand hat}
% \begin{macro}{\size@partnumber}
%   \changes{v2.8o}{2001/09/14}{neu (intern)}
%   \changes{v2.96a}{2006/12/02}{letztes Element darf ein Argument erwarten,
%     wenn es keine Auswirkung auf den Zeilen abstand hat}
% \begin{macro}{\size@chapter}
%   \changes{v2.8o}{2001/09/14}{neu (intern)}
%   \changes{v2.96a}{2006/12/02}{letztes Element darf ein Argument erwarten,
%     wenn es keine Auswirkung auf den Zeilen abstand hat}
% \begin{macro}{\size@chapterprefix}
%   \changes{v2.96a}{2006/12/02}{neu (intern)}
% \begin{macro}{\size@section}
%   \changes{v2.8o}{2001/09/14}{neu (intern)}
% \begin{macro}{\size@subsection}
%   \changes{v2.8o}{2001/09/14}{neu (intern)}
% \begin{macro}{\size@subsubsection}
%   \changes{v2.8o}{2001/09/14}{neu (intern)}
% \begin{macro}{\size@paragraph}
%   \changes{v2.8o}{2001/09/14}{neu (intern)}
% \begin{macro}{\size@subparagraph}
%   \changes{v2.8o}{2001/09/14}{neu (intern)}
% Diese Makros werden intern von den Elementen benötigt (siehe unten). Darüber
% hinaus werden sie per Option geändert und sind deshalb vor der
% entsprechenden Option zu definieren.
%    \begin{macrocode}
\newcommand*{\size@part}{}
\newcommand*{\size@partnumber}{}
%<book|report>\newcommand*{\size@chapter}{}
%<book|report>\newcommand*{\size@chapterprefix}{\size@chapter}
\newcommand*{\size@section}{}
\newcommand*{\size@subsection}{}
\newcommand*{\size@subsubsection}{}
\newcommand*{\size@paragraph}{}
\newcommand*{\size@subparagraph}{}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\chapterheadstartvskip}
%  \begin{macro}{\chapterheadendvskip}
% 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.
%    \begin{macrocode}
\newcommand*{\chapterheadstartvskip}{}
\newcommand*{\chapterheadendvskip}{}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
% \begin{option}{headings}
%   \changes{v2.3h}{1996/01/20}{Größe von \cs{chapter} um eine Stufe
%     verringert}
%   \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}
%   \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}  
%   \changes{v2.98c}{2008/03/10}{Neue Option}
% 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}
\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>
  }{#1}%
  \ifcase \@tempa\relax
%    \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!
%    \begin{macrocode}
%<*book|report>
    \renewcommand*{\chapterheadstartvskip}{%
      \vspace*{2.3\baselineskip}%
    }%
    \renewcommand*{\chapterheadendvskip}{%
      \vspace{1.725\baselineskip
        \@plus .115\baselineskip \@minus .192\baselineskip}%
    }%
%</book|report>
    \renewcommand*{\size@part}{\Huge}%
    \renewcommand*{\size@partnumber}{\huge}%
%<book|report>    \renewcommand*{\size@chapter}{\huge}%
    \renewcommand*{\size@section}{\Large}%
    \renewcommand*{\size@subsection}{\large}%
    \renewcommand*{\size@subsubsection}{\normalsize}%
    \renewcommand*{\size@paragraph}{\normalsize}%
    \renewcommand*{\size@subparagraph}{\normalsize}%
  \or
%<*book|report>
    \renewcommand*{\chapterheadstartvskip}{%
      \vspace*{2\baselineskip}%
    }%
    \renewcommand*{\chapterheadendvskip}{%
      \vspace{1.5\baselineskip
        \@plus .1\baselineskip \@minus .167\baselineskip}%
    }%
%</book|report>
    \renewcommand*{\size@part}{\huge}%
    \renewcommand*{\size@partnumber}{\huge}%
%<*book|report>
    \renewcommand*{\size@chapter}{\LARGE}%
    \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
%<*book|report>
    \renewcommand*{\chapterheadstartvskip}{%
      \vspace*{1.8\baselineskip}%
    }%
    \renewcommand*{\chapterheadendvskip}{%
      \vspace{1.35\baselineskip
        \@plus 0.09\baselineskip \@minus .15\baselineskip}%
    }%
%</book|report>
    \renewcommand*{\size@part}{\LARGE}%
    \renewcommand*{\size@partnumber}{\LARGE}%
%<*book|report>
    \renewcommand*{\size@chapter}{\Large}%
    \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
%<*book|report>
    \KOMA@options{open=any}{}%
%</book|report>
  \or
%<*book|report>
    \KOMA@options{open=right}{}%
%</book|report>
  \or
%<*book|report>
    \KOMA@options{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
%<*book|report>
    \KOMA@options{chapterprefix=true}{}%
%</book|report>
  \or
%<*book|report>
    \KOMA@options{chapterprefix=false}{}%
%</book|report>
  \or
%<*book|report>
    \KOMA@options{appendixprefix=true}{}%
%</book|report>
  \or
%<*book|report>
    \KOMA@options{appendixprefix=false}{}%
%</book|report>
  \fi
}
%    \end{macrocode}
% \end{option}
%
% \begin{option}{bigheadings}
%   \changes{v2.3h}{1996/01/20}{neue Option}
%   \changes{v2.4g}{1996/11/04}{die Option heißt nun wirklich so; bei
%     Verwendung des alten, falschen Namens wird ein Fehler
%     ausgegeben}
%   \changes{v2.98c}{2008/03/10}{obsolet}
% \begin{macro}{\@bigheadings}
%   \changes{v2.98c}{2008/03/10}{entfernt}
% \begin{option}{normalheadings}
%   \changes{v2.3h}{1996/01/20}{neue Option}
%   \changes{v2.4g}{1996/11/04}{die Option heißt nun wirklich so; bei
%     Verwendung des alten, falschen Namens wird ein Fehler
%     ausgegeben}
%   \changes{v2.98c}{2008/03/10}{obsolet}
% \begin{macro}{\@normalheadings}
%   \changes{v2.98c}{2008/03/10}{entfernt}
% \begin{option}{smallheadings}
%   \changes{v2.3h}{1996/01/20}{neue Option}
%   \changes{v2.4g}{1996/11/04}{die Option heißt nun wirklich so; bei
%     Verwendung des alten, falschen Namens wird ein Fehler
%     ausgegeben}
%   \changes{v2.98c}{2008/03/10}{obsolet}
% \begin{macro}{\@smallheadings}
%   \changes{v2.98c}{2008/03/10}{entfernt}
%    \begin{macrocode}
\KOMA@DeclareObsoleteOption[\PackageWarningNoLine]{bigheadings}%
                                                  {headings=big}
\KOMA@DeclareObsoleteOption[\PackageWarningNoLine]{normalheadings}%
                                                  {headings=normal}
\KOMA@DeclareObsoleteOption[\PackageWarningNoLine]{smallheadings}%
                                                  {headings=small}
%    \end{macrocode}
%  \end{macro}
%  \end{option}
%  \end{macro}
%  \end{option}
%  \end{macro}
%  \end{option}
%
%
% \iffalse
%</class>
%</option>
%<*body>
% \fi
%
%
% \subsection{Grobeinteilung von Büchern}
% \iffalse
%<*class>
%<*book>
% \fi
%
%  \begin{macro}{\if@mainmatter}
%  \begin{macro}{\@mainmattertrue}
%  \begin{macro}{\@mainmatterfalse}
%    \changes{v2.3a}{1995/07/08}{\cs{if@mainmatter} Anforderung
%      verschoben}
% Ü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}
\newif\if@mainmatter\@mainmattertrue
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
% \begin{macro}{\frontmatter}
%   \changes{v2.4e}{1996/07/02}{Option \texttt{openany} beachten}
%   \changes{v2.5h}{1999/12/29}{Option \texttt{twoside} beachten}
%   \changes{v3.00}{2008/09/27}{\cs{cleardoubleoddpage} statt
%     \cs{cleardoublepage}}
% 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}
% \begin{macro}{\mainmatter}
%   \changes{v2.4e}{1996/07/02}{Option \texttt{openany} beachten}
%   \changes{v2.5h}{1999/12/29}{Option \texttt{twoside} beachten}
%   \changes{v3.00}{2008/09/27}{\cs{cleardoubleoddpage} statt
%     \cs{cleardoublepage}}
% 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}
% \begin{macro}{\backmatter}
%   \changes{v3.00}{2008/09/27}{\cs{cleardoubleoddpage} statt
%     \cs{cleardoublepage}}
% Auch wenn nicht ganz einzusehen ist, warum das anders sein soll,
% wird hier nicht nach der Option \texttt{twoside}, sondern nach
% \texttt{openright} unterschieden.
%    \begin{macrocode}
\newcommand*\backmatter{%
  \if@openright\cleardoubleoddpage\else\clearpage\fi\@mainmatterfalse
}
%    \end{macrocode}
% \end{macro}
% \iffalse
%</book>
% \fi
%
%
% \subsection{Anhang}
%  \begin{macro}{\appendix}
% Wird der Anhang aktiviert, so werden Kapitel zukünftig mit Buchstaben
% nummeriert.
%    \changes{v2.2d}{1995/05/28}{\textsf{scrartcl} benötigt keinen
%      Zähler für \cs{chapter}}
%    \changes{v2.3c}{1995/08/06}{alternative Nummerierung bei
%      Verwendung eines Anhangs}
%    \changes{v2.8}{2001/06/15}{\cs{appendixmore} wird beachtet}
%    \changes{v2.8e}{2001/07/10}{\cs{@altsecnumformattrue} wird nicht
%      länger ausgeführt}
%    \changes{v2.8o}{2001/09/19}{\cs{par} eingefügt}
%    \changes{v2.95}{2006/07/04}{\cs{newcommand*} durch \cs{gdef} ersetzt}
%    \changes{v2.95}{2006/07/04}{Ausführung von \cs{appendixmore} vereinfacht}
%  \begin{macro}{\appendixmore}
% \cs{appendixmore} kann als \emph{hook} verwendet werden.
%    \begin{macrocode}
\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
}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
%
% \subsection{Definitionen für Seitenstile}
%
%  \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}
%<book|report>\newcommand*\chaptermark[1]{}
%    \end{macrocode}
%  \end{macro}
%
%
% \subsection{Der Automatismus für den Punkt in der Nummerierung}
%
% 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.
%
%  \begin{macro}{\if@altsecnumformat}
%    \changes{v2.3c}{1995/08/06}{neuer Schalter}
%  \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}
%  \begin{macro}{\@autodottrue}
%    \changes{v3.00}{2008/10/07}{arbeitet nun gobal}
%  \begin{macro}{\@autodotfalse}
%    \changes{v3.00}{2008/10/07}{arbeitet nun gobal}
% Damit die Umschaltung auch wieder zurück auf Regel~5 automatisch
% erfolgen kann, wird ein zweiter Schalter benötigt.
%    \begin{macrocode}
\newif\if@altsecnumformat\@altsecnumformatfalse
\newif\if@autodot
\renewcommand*{\@autodottrue}{\global\let\if@autodot\iftrue}
\renewcommand*{\@autodotfalse}{\global\let\if@autodot\iffalse}
\@autodotfalse
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \begin{macro}{\@maybeautodot}
%    \changes{v2.8e}{2001/07/10}{neu (intern)}
% 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}
\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)}
%    \changes{v3.00}{2008/10/07}{neuerdings überflüssige \cs{aftergroup}
%      entfernt}
% 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}
%  \end{macro}
%  \begin{macro}{\scr@sect}
%  \begin{macro}{\@sect}
% 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}
\let\scr@sect\@sect
\renewcommand*{\@sect}[1]{\stepcounter{#1}%
  \expandafter\@maybeautodot\csname the#1\endcsname
  \addtocounter{#1}{-1}\scr@sect{#1}%
}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
% Dabei soll die Umstellung 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}
%    \changes{v2.95}{2004/01/15}{es wird erst unmittelbar vor dem Schließen
%      der Haupt-aux-Datei in diese geschrieben}
%    \changes{v2.96a}{2006/12/07}{es wird \cs{immediate} geschrieben}
%    \begin{macrocode}
\BeforeClosingMainAux{%
  \if@autodot\if@filesw\immediate\write\@mainaux{%
      \string\global\string\@altsecnumformattrue}%
  \fi\fi}
%    \end{macrocode}
%
%  \begin{macro}{\autodot}
%    \changes{v2.7}{2001/01/03}{neu}
% Dieses Makro setzt dann den Punkt nach Bedarf.
%    \begin{macrocode}
\newcommand*\autodot{\if@altsecnumformat.\fi}
%    \end{macrocode}
%  \end{macro}
%
%
% \subsection{Zähler für die Gliederungsebenen}
%
%  \begin{Counter}{secnumdepth}
% Dieser Zähler gibt an, bis zu welcher Ebene die
% Gliederungsüberschriften nummeriert werden.
%    \begin{macrocode}
%<book|report>\setcounter{secnumdepth}{2}
%<article>\setcounter{secnumdepth}{3}
%    \end{macrocode}
%  \end{Counter}
%
%  \begin{Counter}{part}
%  \begin{macro}{\thepart}
%  \begin{macro}{\partformat}
%    \changes{v2.3c}{1995/08/06}{Duden Regel 6}
%    \changes{v2.5f}{1999/02/14}{überflüssiges Leerzeichen am Ende
%      entfernt}
%    \changes{v2.7h}{2001/04/22}{verlorenen Backslash in \cs{autodot}
%      wieder eingefügt}
%  \begin{Counter}{chapter}
%  \begin{macro}{\thechapter}
%  \begin{macro}{\chapterformat}
%    \changes{v2.3c}{1995/08/06}{Duden Regel 6}
%    \changes{v2.7}{2000/01/03}{einfaches Leerzeichen durch
%      \cs{enskip} ersetzt}
%    \changes{v2.8}{2001/06/15}{\cs{chapappifprefix} eingefügt}
%    \changes{v2.8o}{2001/09/19}{\cs{chapappifchapterprefix} statt
%      \cs{chapappifprefix}} 
%    \changes{v2.96a}{2006/12/02}{\cs{mbox} eingefügt, um \cs{caps} zu
%      ermöglichen}
%  \begin{macro}{\chaptermarkformat}
%    \changes{v2.3a}{1995/07/08}{Leerraum nach der Kapitelnummer
%      erhöht}
%    \changes{v2.3c}{1995/08/06}{Duden Regel 6}
%    \changes{v2.8}{2001/06/15}{\cs{chapappifprefix} eingefügt}
%    \changes{v2.8o}{2001/09/19}{\cs{chapappifchapterprefix} statt
%      \cs{chapappifprefix}}
%  \begin{Counter}{section}
%  \begin{macro}{\thesection}
%   \changes{v2.97e}{2007/11/23}{Kapitelnummer nur im Hauptteil}
%  \begin{macro}{\sectionmarkformat}
%    \changes{v2.3a}{1995/07/08}{Leerraum nach der Kapitelnummer
%      erhöht}
%    \changes{v2.3c}{1995/08/06}{Duden Regel 6}
%  \begin{Counter}{subsection}
%  \begin{macro}{\thesubsection}
%  \begin{macro}{\subsectionmarkformat}
%    \changes{v2.3a}{1995/07/08}{Leerraum nach der Kapitelnummer
%      erhöht}
%    \changes{v2.3c}{1995/08/06}{Duden Regel 6}
%  \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}
\newcounter{part}
\renewcommand*{\thepart}{\@Roman\c@part}
\newcommand*{\partformat}{\partname~\thepart\autodot}
%<*book|report>
\newcounter{chapter}
\renewcommand*{\thechapter}{\@arabic\c@chapter}
\newcommand*{\chapterformat}{%
  \mbox{\chapappifchapterprefix{~}\thechapter\autodot\enskip}%
}
\newcommand*\chaptermarkformat{\chapappifchapterprefix{\ }%
  \thechapter\autodot\enskip}
\newcounter{section}[chapter]
\renewcommand*\thesection{%
%<*book>
  \ifnum \scr@compatibility>\@nameuse{scr@v@2.97d}\relax
    \if@mainmatter\thechapter.\fi
  \else
%</book>
  \thechapter.%
%<book>  \fi
  \@arabic\c@section
}
\newcommand*\sectionmarkformat{\thesection\autodot\enskip}
%</book|report>
%<*article>
\newcounter{section}
\renewcommand*{\thesection}{\@arabic\c@section}
\newcommand*\sectionmarkformat{\thesection\autodot\enskip}
%</article>
\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}
%    \changes{v2.9p}{2004/01/07}{\cs{protect} eingefügt}
%    \changes{v2.97}{2007/01/24}{Workaround für das blöde \cs{protect}}
%  \begin{macro}{\othersectionlevelsformat}
%    \changes{v2.7}{2000/01/03}{neu}
%    \changes{v2.7}{2000/01/03}{\cs{quad} durch \cs{enskip} ersetzt}
%    \changes{v2.7i}{2001/05/17}{\cs{let} durch \cs{def} ersetzt}
%    \changes{v2.97}{2007/01/24}{statt einem Argument jetzt drei}
% 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]{%
   \protect\othersectionlevelsformat{#1}{%
     \expandafter\aftergroup\noexpand\@gobble}{\csname the#1\endcsname}%
}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{Counter}
%  \end{macro}
%  \end{Counter}
%  \end{macro}
%  \end{Counter}
%  \end{macro}
%  \end{macro}
%  \end{Counter}
%  \end{macro}
%  \end{macro}
%  \end{Counter}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{Counter}
%  \end{macro}
%  \end{macro}
%  \end{Counter}
%
%
% \changes{v2.8e}{2001/07/10}{\cs{@thepart} entfernt}
% \changes{v2.8e}{2001/07/10}{\cs{@maybeasf} entfernt}
%
%
% \subsection{Namen für die Gliederung}
%
%  \begin{macro}{\partname}
%  \begin{macro}{\chaptername}
%  \begin{macro}{\abstractname}
% Diese Makros enthalten die Namen der Gliederungsebenen \cs{part} und
% \cs{chapter}, sowie den Namen der Zusammenfassung:
%    \begin{macrocode}
\newcommand*\partname{Part}
%<book|report>\newcommand*\chaptername{Chapter}
%<report|article>\newcommand*\abstractname{Abstract}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\appendixname}
% Der Name des Anhangs.
%    \begin{macrocode}
\newcommand*\appendixname{Appendix}
%    \end{macrocode}
%  \end{macro}
%
% \iffalse
%<*book|report>
% \fi
%  \begin{macro}{\chapappifprefix}
%    \changes{v2.8}{2001/06/15}{neu}
%    \changes{v2.8o}{2001/09/19}{obsolet}
%  \begin{macro}{\chapappifchapterprefix}
%    \changes{v2.8o}{2001/09/19}{neu}
%    \changes{v2.8o}{2001/09/19}{Argument ist nicht optional}
%  \begin{macro}{\chapapp}
%    \changes{v2.8}{2001/06/15}{neu}
% 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}
%  \end{macro}
%  \end{macro}
%  \end{macro}
% \iffalse
%</book|report>
% \fi
%
% \subsection{Die Gliederungsbefehle}
%
% \changes{v2.3h}{1996/01/20}{Größenbefehle in den Überschriften
%   variabilisiert}
%
%  \begin{macro}{\part}
%    \changes{v2.1c}{1995/01/17}{Zeichenkette "`markboth"' durch
%      Befehl \cs{markboth} ersetzt}
%    \changes{v2.2c}{1995/05/25}{Part-Ausgabe auf CJK umgestellt}
%    \changes{v2.3c}{1995/08/06}{alternative Numerierung bei römischer
%      Part-Numerierung}
%    \changes{v2.3d}{1995/08/19}{alternative Numerierung korrigiert}
%    \changes{v2.3g}{1996/01/14}{\cs{hbox} durch \cs{null} ersetzt}
%    \changes{v2.8d}{2001/07/05}{\cs{partpagestyle} statt
%      \texttt{plain}}
%    \changes{v2.8p}{2001/09/27}{Präambel über der Überschrift
%      hinzugefügt}
%    \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont}
%      behebt einen Bug im color Paket}
%  \begin{macro}{\@part}
%    \changes{v2.4b}{1996/03/29}{\cs{size@partnumer} durch
%      \cs{size@partnumber} ersetzt}
%    \changes{v2.4n}{1997/05/28}{für \textsf{scrartcl} \cs{markboth}
%      zum Löschen der Kolumnentitel durch \cs{sectionmark} ersetzt}
%    \changes{v2.5e}{1998/07/17}{\cs{numberline} verwendet, damit die
%      reservierte Part-Nummern-Breite in \cs{l@part} auch wirklich
%      verwendet wird}
%    \changes{v2.8e}{2001/07/10}{\cs{@maybeautodot} wird aufgerufen}
%    \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor
%      \cs{size@part} und \cs{size@partnumber} aufgerufen} 
%    \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}} 
%    \changes{v2.95}{2002/08/13}{\cs{centering} und \cs{@parskipfalse}%
%      \cs{@parskip@indent} vertauscht}
%    \changes{v2.95}{2004/11/05}{\cs{@parskipfalse} und }
%    \changes{v2.95}{2004/11/05}{\cs{@parskipfalse} und \cs{@parskip@indent}
%      ersetzt}
%  \begin{macro}{\@spart}
%    \changes{v2.4n}{1997/05/28}{in der Sternvariante \cs{chaptermark}
%      bzw. \cs{sectionmark} eingefügt, um die Kolumnentitel zu
%      löschen}
%    \changes{v2.6a}{2000/01/20}{zum Löschen der Kolumnentitel wird
%      nun \cs{@mkboth} verwendet}
%    \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}
%    \changes{v2.95}{2002/08/13}{\cs{centering} und
%      \cs{@parskipfalse}\cs{@parskip@indent} vertauscht}
%    \changes{v2.95}{2004/11/05}{\cs{@parskipfalse} und \cs{@parskip@indent}
%      ersetzt}
%  \begin{macro}{\@endpart}
%    \changes{v2.3g}{1996/01/14}{\cs{@endpart} wird für
%      \textsf{scrartcl} nicht mehr definiert}
%    \changes{v2.4e}{1996/07/02}{Option \texttt{openany} beachten}
%    \changes{v2.6c}{2000/06/10}{\cs{@endpart} fügt nur noch in
%       beidseitigen Dokumenten bei Verwendung von openright eine
%       Leerseite ein}
%    \changes{v2.8p}{2001/09/27}{\cs{vbox} eingefügt}
%    \changes{v2.8p}{2001/09/27}{\cs{use@preamble} ersetzt
%      \cs{@part@preamble}}
% 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}
%  \begin{macro}{\partheadmidvskip}
%    \changes{v2.95a}{2006/07/10}{neue Konfiguratonsmöglichkeit}
%  \begin{macro}{\partheadendvskip}
%    \changes{v2.95a}{2006/07/10}{neue Konfiguratonsmöglichkeit}
% Diese drei Makros werden verwendet, um den Abstand über in und unter der
% Überschrift eines Teils zu definieren. Prinzipiell kann damit auch der
% Umbruch zwischen Nummer und Text entfernt werden.
%    \begin{macrocode}
\newcommand*{\partheadstartvskip}{%
%<article> \addvspace{4ex}%
%<report|book>  \null\vfil
}
\newcommand*{\partheadmidvskip}{%
  \par\nobreak
%<book|report>  \vskip 20\p@
}
\newcommand*{\partheadendvskip}{%
%<article>    \vskip 3ex
%<report|book>  \vfil\newpage
}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%    \begin{macrocode}
%<*article>
\newcommand\part{\par
  \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
  \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{%
%<article>  \ifnum \c@secnumdepth >\m@ne
%<report|book>  \ifnum \c@secnumdepth >-2\relax
    \refstepcounter{part}%
    \@maybeautodot\thepart%
    \addcontentsline{toc}{part}{\protect\numberline{\thepart}#1}%
  \else
    \addcontentsline{toc}{part}{#1}%
  \fi
  \begingroup
    \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative
    \raggedpart
    \interlinepenalty \@M
    \normalfont\sectfont\nobreak
%<article>    \ifnum \c@secnumdepth >\m@ne
%<book|report>    \ifnum \c@secnumdepth >-2\relax
      \size@partnumber{\partformat}%
      \partheadmidvskip
    \fi
    \size@part{#2}\strut%
    \partmark{#1}\par
  \endgroup
%<*article>
  \nobreak
  \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
  \partheadendvskip
  \@afterheading
%</article>
%<book|report>  \@endpart
}
%<*book|report>
\newcommand*{\@endpart}{\vbox to\z@{\use@preamble{part@u}\vss}%
  \partheadendvskip
  \if@twoside\if@openright
      \null%
      \thispagestyle{empty}%
      \newpage
  \fi\fi
  \if@tempswa
    \twocolumn
  \fi
}
%</book|report>
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
%
%  \begin{macro}{\addpart}
%    \changes{v2.8c}{2001/06/29}{neu}
%    \changes{v2.8d}{2001/07/05}{\cs{partpagestyle} statt
%      \texttt{plain}}
%    \changes{v2.95a}{2006/07/10}{support of preamble added}
%  \begin{macro}{\@addpart}
%    \changes{v2.8c}{2001/06/29}{neu (intern)}
%    \changes{v2.8l}{2001/08/17}{erst eintragen, dann ausgeben}
%    \changes{v2.95}{2004/07/20}{kann Kolumnentitel erzeugen}
%    \changes{v3.00}{2008/07/01}{Notlösung für \textsf{hyperref} eingefügt}
%  \begin{macro}{\@saddpart}
%    \changes{v2.8c}{2001/06/29}{neu (intern)}
%    \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
  \partheadstartvskip
  \vbox to\z@{\vss\use@preamble{part@o}\strut\par}%
%</report|book>
  \secdef\@addpart\@saddpart
}
\newcommand*{\@addpart}{}
\def\@addpart[#1]#2{%
%    \end{macrocode}
% Notlösung, damit \textsf{hyperref} halbwegs damit klar kommt. Das ist aber
% weit davon entfernt eine echte Lösung zu bringen.
%    \begin{macrocode}
  \csname phantomsection\endcsname
  \addcontentsline{toc}{part}{#1}\@spart{#2}%
  \ifx\partmark\@gobble\else\@mkboth{#1}{}\fi
}
\newcommand*{\@saddpart}{\@spart}
%    \end{macrocode}
%  \begin{macro}{\partmark}
%    \changes{v2.9r}{2004/07/20}{neu (für \textsf{scrpage2})}
%    \begin{macrocode}
\newcommand*{\partmark}{}
\let\partmark\@gobble
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
%
% \iffalse
%<*report|book>
% \fi
%  \begin{macro}{\chapter}
%    \changes{v2.8d}{2001/07/05}{\cs{chapterpagestyle} statt
%      \texttt{plain}}
%  \begin{macro}{\@chapter}
%    \changes{v2.8e}{2001/07/10}{\cs{@maybeautodot} wird aufgerufen}
%    \changes{v2.8g}{2001/07/18}{per \cs{float@addtolists} wird nun
%      auch ein vertikaler Abstand in Listen des \texttt{float}-Pakets
%      eingebaut}
%    \changes{v3.00}{2008/07/01}{jetzt auch Kapiteleinträge in andere
%      float-Verzeichnisse mit hyperref}
%  \begin{macro}{\@makechapterhead}
%    \changes{v2.7b}{2001/01/05}{Kapitel können grundsätzlich mit
%      einer Präambel versehen werden}
%    \changes{v2.8p}{2001/09/25}{es gibt verschiedene Arten von
%      Präambeln}
%  \begin{macro}{\@@makechapterhead}
%    \changes{v2.8p}{2001/09/25}{neu (intern)}
%    \changes{v2.8q}{2002/04/18}{\cs{raggedsection} wird bei Option
%      \texttt{chapterprefix} auch auf den Präfix angewendet}
%    \changes{v2.9p}{2003/06/28}{\cs{parfillskip} auf \cs{fill} gesetzt}
% 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)}
%  \begin{macro}{\scr@topnewpage}
%    \changes{v2.7b}{2001/01/05}{neu (intern)}
%    \changes{v2.8q}{2001/11/27}{fehlende Klammern ergänzt}
%  \begin{macro}{\@topnewpage}
%    \changes{v2.7b}{2001/01/05}{neu (\LaTeX{} intern)}
%    \changes{v2.7g}{2001/04/17}{vergessenes \cs{long} ergänzt}
% 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}
%  \end{macro}
%  \begin{macro}{\use@chapter@o@preamble}
% 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}{\vbox{\chapterheadstartvskip}}%
    \settodepth{\@tempdimb}{\vbox{\chapterheadstartvskip}}%
    \addtolength{\@tempdima}{\@tempdimb}%
    \setbox0\vbox{\use@preamble{chapter@o}%
      \vskip-\parskip}% 
    \setlength{\@tempdimb}{\ht0}%
    \addtolength{\@tempdimb}{\dp0}%
    \vbox to \z@{%
      \vbox to \@tempdima{\vfill\box0}%
      \vskip-\@tempdima%
      }%
    \ifdim \@tempdimb>\@tempdima%
      \addtolength{\@tempdimb}{-\@tempdima}%
      \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%
    }
}
%    \end{macrocode}
%  \end{macro}
% 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}
% Die Variante ohne Stern:
%    \begin{macrocode}
\setuptoc{lof}{chapteratlist}
\setuptoc{lot}{chapteratlist}
\newcommand*{\@chapter}{}
\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
%<book>    \if@mainmatter
      \refstepcounter{chapter}%
      \@maybeautodot\thechapter
      \typeout{\@chapapp\space\thechapter.}%
      \addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}#1}%
      \if@chaptertolists
        \doforeachtocfile{%
          \iftocfeature{\@currext}{chapteratlist}{%
            \addcontentsline{\@currext}{chapteratlist}{%
              \protect\numberline{\thechapter}#1}%
          }{}%
        }%
        \@ifundefined{float@addtolists}{}{%
          \ClassWarning{\KOMAClassName}{%
            Usage of deprecated \string\float@addtolists!\MessageBreak
            You should use the features of package `tocbasic'\MessageBreak
            instead of \string\float@addtolists.\MessageBreak
            Definition of \string\float@addtolists\space may be removed
            from\MessageBreak
            KOMA-Script soon, so it should not be used
          }%
          \scr@ifundefinedorrelax{@currentHref}{%
            \float@addtolists{%
              \protect\contentsline{chapteratlist}{%
                \protect\numberline{\thechapter}#1}{\thepage}%
            }%
          }{%
            \float@addtolists{%
              \protect\contentsline{chapteratlist}{%
                \protect\numberline{\thechapter}#1}{\thepage}{\@currentHref}%
            }%
          }%
        }%
      \fi
%<*book>
    \else
      \addcontentsline{toc}{chapter}{#1}%
      \if@chaptertolists
        \doforeachtocfile{%
          \iftocfeature{\@currext}{chapteratlist}{%
            \addcontentsline{\@currext}{chapteratlist}{#1}%
          }{}%
        }%
        \@ifundefined{float@addtolists}{}{%
          \ClassWarning{\KOMAClassName}{%
            Usage of deprecated \string\float@addtolists!\MessageBreak
            You should use the features of package `tocbasic'\MessageBreak
            instead of \string\float@addtolists.\MessageBreak
            Definition of \string\float@addtolists\space may be removed
            from\MessageBreak
            KOMA-Script soon, so it should not be used
          }%
          \scr@ifundefinedorrelax{@currentHref}{%
            \float@addtolists{%
              \protect\contentsline{chapteratlist}{#1}{\thepage}%
            }%
          }{%
            \float@addtolists{%
              \protect\contentsline{chapteratlist}{#1}{\thepage}{\@currentHref}%
            }%
          }%
        }%
      \fi
    \fi
%</book>
  \else
    \addcontentsline{toc}{chapter}{#1}%
    \if@chaptertolists
      \doforeachtocfile{%
        \iftocfeature{\@currext}{chapteratlist}{%
          \addcontentsline{\@currext}{chapteratlist}{#1}%
        }{}%
      }%
      \@ifundefined{float@addtolists}{}{%
        \ClassWarning{\KOMAClassName}{%
          Usage of deprecated \string\float@addtolists!\MessageBreak
          You should use the features of package `tocbasic'\MessageBreak
          instead of \string\float@addtolists.\MessageBreak
          Definition of \string\float@addtolists\space may be removed
          from\MessageBreak
          KOMA-Script soon, so it should not be used
        }%
        \scr@ifundefinedorrelax{@currentHref}{%
          \float@addtolists{%
            \protect\contentsline{chapteratlist}{#1}{\thepage}%
          }%
        }{%
          \float@addtolists{%
            \protect\contentsline{chapteratlist}{#1}{\thepage}{\@currentHref}%
          }%
        }%
      }%
    \fi
  \fi
  \chaptermark{#1}%
  \ifdim \@chapterlistsgap>\z@
    \doforeachtocfile{%
      \iftocfeature{\@currext}{chapteratlist}{%
        \addtocontents{\@currext}{\protect\addvspace{\@chapterlistsgap}}%
      }{}%
    }%
    \@ifundefined{float@addtolists}{}{%
      \ClassWarning{\KOMAClassName}{%
        Usage of deprecated \string\float@addtolists!\MessageBreak
        You should use the features of package `tocbasic'\MessageBreak
        instead of \string\float@addtolists.\MessageBreak
        Definition of \string\float@addtolists\space may be removed
        from\MessageBreak
        KOMA-Script soon, so it should not be used
      }%
      \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}\nobreak
}
%    \end{macrocode}
%    \changes{v2.96a}{2006/12/02}{Abstand nach der Präfixzeile nur, wenn eines
%      Präfixzeile ausgegeben wurde}
%    \changes{v2.97b}{2007/03/09}{\cs{endgraf} korrigiert}
%    \begin{macrocode}
\newcommand*{\@@makechapterhead}[1]{\chapterheadstartvskip
  {%
    \setlength{\parindent}{\z@}\setlength{\parfillskip}{\fill}%
    \normalfont\sectfont\nobreak\size@chapter{}%
    \if@chapterprefix
      \let\@tempa\raggedsection
    \else
      \let\@tempa\@hangfrom
    \fi
    \@tempa{\ifnum \c@secnumdepth >\m@ne%
%<book>        \if@mainmatter 
          \if@chapterprefix
            \expandafter\size@chapterprefix
          \else
            \expandafter\size@chapter
          \fi
          {\chapterformat}%
          \if@chapterprefix
            \size@chapterprefix{}\endgraf\nobreak\vskip.5\baselineskip
          \fi
%<book>        \fi
      \fi
    }%
    {\raggedsection \interlinepenalty \@M \size@chapter{#1}\par}}%
  \nobreak\chapterheadendvskip
}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\@schapter}
%  \begin{macro}{\@makeschapterhead}
%    \changes{v2.7b}{2001/01/05}{Kapitel können grundsätzlich mit
%      einer Präambel versehen werden}
%  \begin{macro}{\@@makeschapterhead}
%    \changes{v2.8p}{2001/09/25}{neu (intern)}
%    \changes{v2.9p}{2003/06/28}{\cs{parfillskip} auf \cs{fill} gesetzt}
%    \changes{v2.9q}{2004/03/24}{Klammerung an \cs{@@makechapterhead}
%      angepasst}
% 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]{%
  \chapterheadstartvskip%
  {\normalfont\sectfont\nobreak\size@chapter{}%
    \setlength{\parindent}{\z@}\setlength{\parfillskip}{\fill}%
    \raggedsection \interlinepenalty \@M \size@chapter{#1}\par}%
  \nobreak\chapterheadendvskip%
}
\newcommand*{\@makeschapterhead}[1]{%
  \use@chapter@o@preamble
  \@@makeschapterhead{#1}%
  \use@preamble{chapter@u}\nobreak
}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
%
%  \begin{macro}{\addchap}
%    \changes{v2.0e}{1994/08/10}{\cs{sectdef} durch \cs{secdef}
%      ersetzt}
%    \changes{v2.0e}{1994/08/10}{\cs{addcontensline} durch
%      \cs{addcontentsline} ersetzt}
%    \changes{v2.0e}{1994/08/10}{\cs{@makechapterhead} durch
%      \cs{@makeschapterhead} ersetzt}
%    \changes{v2.0e}{1994/08/10}{\cs{afterheadings} durch
%      \cs{@afterheading} ersetzt}
%    \changes{v2.1a}{1994/10/29}{Argument von \cs{chaptermark}
%      entfernt bei \textsf{scrbook}}
%    \changes{v2.0e}{1994/10/12}{mehrfach \cs{markboth} durch
%      \cs{sectionmark} ersetzt}
%    \changes{v2.2b}{1995/03/20}{\cs{chaptermark} durch \cs{@mkboth}
%      ersetzt}
%    \changes{v2.8d}{2001/07/05}{\cs{chapterpagestyle} statt
%      \texttt{plain}}
%    \changes{v3.00}{2008/07/01}{jetzt auch Kapiteleinträge in andere
%      float-Verzeichnisse mit hyperref}
% \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}
%  \begin{macro}{\@saddchap}
%    \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{\@schapter{#2}%
  \addcontentsline{toc}{chapter}{#1}%
  \if@chaptertolists
    \doforeachtocfile{%
      \iftocfeature{\@currext}{chapteratlist}{%
        \addcontentsline{\@currext}{chapteratlist}{#1}%
      }{}%
    }%
    \@ifundefined{float@addtolists}{}{%
      \ClassWarning{\KOMAClassName}{%
        Usage of deprecated \string\float@addtolists!\MessageBreak
        You should use the features of package `tocbasic'\MessageBreak
        instead of \string\float@addtolists.\MessageBreak
        Definition of \string\float@addtolists\space may be removed
        from\MessageBreak
        KOMA-Script soon, so it should not be used
      }%
      \scr@ifundefinedorrelax{@currentHref}{%
        \float@addtolists{%
          \protect\contentsline{chapteratlist}{#1}{\thepage}%
        }%
      }{%
        \float@addtolists{%
          \protect\contentsline{chapteratlist}{#1}{\thepage}{\@currentHref}%
        }%
      }%
    }%
  \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}{}{%
        \ClassWarning{\KOMAClassName}{%
          Usage of deprecated \string\float@addtolists!\MessageBreak
          You should use the features of package `tocbasic'\MessageBreak
          instead of \string\float@addtolists.\MessageBreak
          Definition of \string\float@addtolists\space may be removed
          from\MessageBreak
          KOMA-Script soon, so it should not be used
        }%
        \float@addtolists{\protect\addvspace{\@chapterlistsgap}}%
      }%
    \fi
  \fi
  \if@twoside\@mkboth{#1}{}\else\@mkboth{}{#1}\fi
}%
\newcommand*{\@saddchap}[1]{\@schapter{#1}\@mkboth{}{}}%
%    \end{macrocode}
% \iffalse
%<*book>
% \fi
% 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}
%    \changes{v2.7f}{2001/04/17}{fehlendes Klammerpaar ergänzt}
%    \changes{v2.8q}{2001/11/17}{\cs{AfterPackage} zur Überprüfung der
%      \textsf{hyperref}-Version verwendet}
%    \begin{macrocode}
\AfterPackage{hyperref}{%
  \@ifpackagelater{hyperref}{2001/02/19}{}{%
    \ClassWarningNoLine{\KOMAClassName}{%
      You are using an old version of hyperref package!\MessageBreak%
      This version has a buggy hack at many drivers\MessageBreak%
      causing \string\addchap\space to behave strange.\MessageBreak%
      Please update hyperref to at least version
      6.71b}}}
%    \end{macrocode}
% \iffalse
%</book>
% \fi
%  \end{macro}
%  \end{macro}
%  \end{macro}
% \iffalse
%</report|book>
% \fi
%
%  \begin{macro}{\addsec}
%    \changes{v2.0e}{1994/10/12}{mehrfach \cs{markboth} durch
%      \cs{sectionmark} ersetzt}
%    \changes{v2.2b}{1995/03/20}{\cs{sectionmark} durch \cs{@mkboth}
%      ersetzt}
%    \changes{v2.3h}{1995/01/21}{jetzt auch bei \textsf{scrbook} und
%      \textsf{scrreprt}}
%    \changes{v2.4g}{1996/11/04}{\cs{section*} vorgezogen, damit
%      dadurch provozierte Seitenumbrüche im Inhaltsverzeichnis
%      berücksichtigt werden}
%    \changes{v2.5d}{1998/01/03}{\cs{@mkboth} bedingt durch
%      \cs{markright} ersetzt}
%    \changes{v2.7a}{2001/01/04}{\cs{addsec} für eine bessere
%      Unterstützung von \textsf{hyperref} geändert}
%  \begin{macro}{\@addsec}
%  \begin{macro}{\@saddsec}
% \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}
\newcommand*\addsec{\secdef\@addsec\@saddsec}
\newcommand*{\@addsec}{}
\def\@addsec[#1]#2{\section*{#2}\addcontentsline{toc}{section}{#1}
%<article>  \if@twoside \@mkboth{#1}{}\else \@mkboth{#1}{#1}\fi
%<report|book>  \if@twoside\ifx\@mkboth\markboth\markright{#1}\fi\fi
}
\newcommand*{\@saddsec}[1]{\section*{#1}\@mkboth{}{}}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\section}
%    \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor
%      \cs{size@section} aufgerufen}
%    \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont}
%      behebt einen Bug im color Paket}
%    \changes{v2.96a}{2006/11/30}{Standardwert für \cs{parfillskip} (abhängig
%      von Option \texttt{version})}
%    \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak} entfernt}
%  \begin{macro}{\subsection}
%    \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor
%      \cs{size@subsection} aufgerufen}
%    \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont}
%      behebt einen Bug im color Paket}
%    \changes{v2.96a}{2006/11/30}{Standardwert für \cs{parfillskip} (abhängig
%      von Option \texttt{version})}
%    \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak} entfernt}
%  \begin{macro}{\subsubsection}
%    \changes{v2.3d}{1995/08/19}{wird bei \texttt{scrartcl} nun
%      ebenfalls numeriert und ins Inhaltsverzeichnis geschrieben}
%    \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor
%      \cs{size@subsubsection} aufgerufen}
%    \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont}
%      behebt einen Bug im color Paket}
%    \changes{v2.96a}{2006/11/30}{Standardwert für \cs{parfillskip} (abhängig
%      von Option \texttt{version})}
%    \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak} entfernt}
%  \begin{macro}{\paragraph}
%    \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor
%      \cs{size@paragraph} aufgerufen}
%    \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont}
%      behebt einen Bug im color Paket}
%    \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak} entfernt}
%  \begin{macro}{\subparagraph}
%    \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor
%      \cs{size@subparagraph} aufgerufen}
%    \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont}
%      behebt einen Bug im color Paket}
%    \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak} entfernt}
% Die Standardgliederungsbefehle \cs{section} bis \cs{subparagraph}
% sind mit der im Kernel dafür vorgesehenen Schnittstelle
% definiert. Im Unterschied zu den Standardklassen erfolgt die
% Formatierung jedoch in \cs{raggedsection} und die Ausgabe in der
% Schriftart \cs{sectfont}. Außerdem sind die Größen veränderbar. In
% letzter Konsequenz sollten hier eigentlich auch die Abstände
% variabilisiert werden. Vielleicht in einer späteren Version.
%    \begin{macrocode}
\newcommand\section{\@startsection{section}{1}{\z@}%
  {-3.5ex \@plus -1ex \@minus -.2ex}%
  {2.3ex \@plus.2ex}%
  {\ifnum \scr@compatibility>\@nameuse{scr@v@2.96}\relax
    \setlength{\parfillskip}{\z@ plus 1fil}\fi
    \raggedsection\normalfont\sectfont\nobreak\size@section}%
}
\newcommand\subsection{\@startsection{subsection}{2}{\z@}%
  {-3.25ex\@plus -1ex \@minus -.2ex}%
  {1.5ex \@plus .2ex}%
  {\ifnum \scr@compatibility>\@nameuse{scr@v@2.96}\relax
    \setlength{\parfillskip}{\z@ plus 1fil}\fi
    \raggedsection\normalfont\sectfont\nobreak\size@subsection
  }%
}
\newcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
  {-3.25ex\@plus -1ex \@minus -.2ex}%
  {1.5ex \@plus .2ex}%
  {\ifnum \scr@compatibility>\@nameuse{scr@v@2.96}\relax
    \setlength{\parfillskip}{\z@ plus 1fil}\fi
    \raggedsection\normalfont\sectfont\nobreak\size@subsubsection
  }%
}
\newcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
  {3.25ex \@plus1ex \@minus.2ex}%
  {-1em}%
  {\raggedsection\normalfont\sectfont\nobreak\size@paragraph}%
}
\newcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
  {3.25ex \@plus1ex \@minus .2ex}%
  {-1em}%
  {\raggedsection\normalfont\sectfont\nobreak\size@subparagraph}%
}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \begin{macro}{\minisec}
%    \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont}
%      behebt einen Bug im color Paket}
%    \changes{v2.9o}{2003/01/31}{\cs{nobreak} nach dem Gruppenende
%      behebt einen Bug im color Paket}
%    \changes{v2.96a}{2006/11/30}{Standardwert für \cs{parfillskip} (abhängig
%      von Option \texttt{version})}
%    \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak} entfernt}
%  \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]{\@afterindentfalse \vskip 1.5ex
  {\parindent \z@
    \ifnum \scr@compatibility>\@nameuse{scr@v@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}
%
%
% \subsection{Schrift und Formatierung}
%
%  \begin{macro}{\raggedsection}
%    \changes{v2.3h}{1996/01/20}{Überschriften werden
%      \cs{raggedsection} gesetzt}
%    \changes{v2.3h}{1996/01/20}{\cs{raggedsection} ist als
%      \cs{raggedright} voreingestellt}
% Dieses Makro gibt an, wie die Überschriften formatiert
% werden. Voreingestellt ist linksbündig.
%    \begin{macrocode}
\newcommand*{\raggedsection}{}
\let\raggedsection\raggedright
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\raggedpart}
%    \changes{v2.95a}{2006/07/10}{neue Konfigurationsmöglichkeit}
% 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{macro}{\sectfont}
%    \changes{v2.8c}{2001/06/29}{\cs{normalcolor} eingefügt}
% 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}
%</class>
\newcommand*\sectfont{\normalcolor\sffamily\bfseries}
%<*class>
%    \end{macrocode}
%  \end{macro}
%
%  \begin{KOMAfont}{partentry}
%    \changes{v2.97c}{2007/06/21}{neues Font-Element}
%    Schrift für den \cs{part}-Eintrag im Inhaltsverzeichnis.
%    \begin{macrocode}
\newkomafont{partentry}{\usekomafont{sectioning}\large}
%    \end{macrocode}
%  \end{KOMAfont}
%
%  \begin{KOMAfont}{partentrypagenumber}
%    \changes{v2.97c}{2007/06/21}{neues Font-Element}
%    Schrift für die Seitenzahl des \cs{part}-Eintrags im Inhaltsverzeichnis
%    abweichend von \texttt{partentry}.
%    \begin{macrocode}
\newkomafont{partentrypagenumber}{}
%    \end{macrocode}
%  \end{KOMAfont}
%
%  \begin{KOMAfont}{chapterentry}
%    \changes{v2.97c}{2007/06/21}{neues Font-Element}
%    Schrift für den \cs{chapter}-Eintrag im Inhaltsverzeichnis.
%    \begin{macrocode}
%<*book|report>
\newkomafont{chapterentry}{\usekomafont{sectioning}}
%    \end{macrocode}
%  \end{KOMAfont}
%
%  \begin{KOMAfont}{chapterentrypagenumber}
%    \changes{v2.97c}{2007/06/21}{neues Font-Element}
%    Schrift für die Seitenzahl des \cs{chapter}-Eintrags im Inhaltsverzeichnis
%    abweichend von \texttt{chapterentry}.
%    \begin{macrocode}
\newkomafont{chapterentrypagenumber}{}
%</book|report>
%    \end{macrocode}
%  \end{KOMAfont}
%
%  \begin{KOMAfont}{sectionentry}
%    \changes{v2.97c}{2007/06/21}{neues Font-Element}
%    Schrift für den \cs{section}-Eintrag im Inhaltsverzeichnis.
%    \begin{macrocode}
%<*article>
\newkomafont{sectionentry}{\usekomafont{sectioning}}
%    \end{macrocode}
%  \end{KOMAfont}
%
%  \begin{KOMAfont}{sectionentrypagenumber}
%    \changes{v2.97c}{2007/06/21}{neues Font-Element}
%    Schrift für die Seitenzahl des \cs{section}-Eintrags im Inhaltsverzeichnis
%    abweichend von \texttt{sectionentry}.
%    \begin{macrocode}
\newkomafont{sectionentrypagenumber}{}
%</article>
%    \end{macrocode}
%  \end{KOMAfont}
%
%  \begin{macro}{\scr@fnt@disposition}
%    \changes{v2.95b}{2006/07/30}{neues Element \texttt{disposition}}
%  \begin{macro}{\scr@fnt@sectioning}
%    \changes{v2.8o}{2001/09/14}{neues Element \texttt{sectioning}}
%    \changes{v2.95b}{2006/07/30}{\texttt{sectioning} ist nun ein Alias für
%      \texttt{disposition}}
%  \begin{macro}{\scr@fnt@part}
%    \changes{v2.8p}{2001/09/23}{neues Element \texttt{part}}
%  \begin{macro}{\scr@fnt@partnumber}
%    \changes{v2.8p}{2001/09/23}{neues Element \texttt{partnumber}}
%  \begin{macro}{\scr@fnt@chapter}
%    \changes{v2.8o}{2001/09/14}{neues Element \texttt{chapter}}
%  \begin{macro}{\scr@fnt@chapterprefix}
%    \changes{v2.96a}{2006/12/02}{neues Element \texttt{chapterprefix}}
%  \begin{macro}{\scr@fnt@section}
%    \changes{v2.8o}{2001/09/14}{neues Element \texttt{section}}
%  \begin{macro}{\scr@fnt@subsection}
%    \changes{v2.8o}{2001/09/14}{neues Element \texttt{subsection}}
%  \begin{macro}{\scr@fnt@subsubsection}
%    \changes{v2.8o}{2001/09/14}{neues Element \texttt{subsubsection}}
%  \begin{macro}{\scr@fnt@paragraph}
%    \changes{v2.8o}{2001/09/14}{neues Element \texttt{paragraph}}
%  \begin{macro}{\scr@fnt@subparagraph}
%    \changes{v2.8o}{2001/09/14}{neues Element \texttt{subparagraph}}
%  \begin{KOMAfont}{minisec}
%    \changes{v2.8o}{2001/09/14}{neuer Ersatz für das Element
%      \texttt{minisec}}
%    \changes{v2.96a}{2007/01/08}{Alias für das Element \texttt{minisec}
%      entfernt, da es nun ein eigenes Element ist}
% Definition der Elemente der Gliederung, deren Schrift geändert
% werden kann:
%    \begin{macrocode}
%</class>
\newcommand*{\scr@fnt@disposition}{\sectfont}
\aliaskomafont{sectioning}{disposition}
%<*class>
\newcommand*{\scr@fnt@part}{\size@part}
\newcommand*{\scr@fnt@partnumber}{\size@partnumber}
%<book|report>\newcommand*{\scr@fnt@chapter}{\size@chapter}
%<book|report>\newcommand*{\scr@fnt@chapterprefix}{\size@chapterprefix}
\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}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
%
% \subsection{Definitionen für Präambeln}
%
% \iffalse
%<*report|book>
% \fi
% 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)}
% 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}
\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)}
% 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)}
%  \begin{macro}{\set@@@preamble}
%    \changes{v2.8p}{2001/09/25}{neu (intern)}
%  \begin{macro}{\set@@@@preamble}
%    \changes{v2.8p}{2001/09/25}{neu (intern)}
%    \changes{v2.8q}{2001/11/27}{fehlende Klammern ergänzt}
% 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 o%
        \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)}
% 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 said `#2' as position option. But you have
        to\MessageBreak
        use only one from `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}%\iffalse\set@preamble@hpos\fi
%  \begin{macro}{\set@preamble@vpos}
%    \changes{v2.8q}{2001/09/25}{neu (intern)}
% 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 said `#2' as position option. But you have
        to\MessageBreak
        use only one from `o' or `u' not two of
        these.\MessageBreak
        If you'll continue only first vpos option will be
        used%
      }%
    \fi
  }%
}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\setchapterpreamble}
%    \changes{v2.7b}{2001/01/05}{neu}
%    \changes{v2.8p}{2001/09/25}{Verwendung von \cs{set@preamble}}
%  \begin{macro}{\chapter@u@preamble}
%    \changes{v2.8p}{2001/09/25}{neu (intern)}
%    \changes{v2.8p}{2001/09/25}{Ersatz für \cs{chapter@preamble}}
%  \begin{macro}{\chapter@o@preamble}
%    \changes{v2.8p}{2001/09/25}{neu (intern)}
% 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}{\setpartpreamble}
%    \changes{v2.8f}{2001/07/12}{neu}
%    \changes{v2.8p}{2001/09/27}{Verwendung von \cs{use@preamble}}
%  \begin{macro}{\part@preamble@u}
%    \changes{v2.8p}{2001/09/27}{neu (intern)}
%    \changes{v2.8p}{2001/09/27}{Ersatz für \cs{part@preamble}}
%  \begin{macro}{\part@preamble@o}
%    \changes{v2.8p}{2001/09/27}{neu (intern)}
% Analog zu den Kapitel gibt es Befehle für eine Teil-Präambel.
%    \begin{macrocode}
\newcommand*{\setpartpreamble}{\set@preamble{part}}
\newcommand*{\part@preamble@u}{}
\let\part@preamble@u\relax
\newcommand*{\part@preamble@o}{}
\let\part@preamble@o\relax
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
% \iffalse
%</report|book>
% \fi
%
% 
% \subsection{Einträge ins Inhaltsverzeichnis}
%
% Die Gliederungsbefehle schreiben auch Einträge ins
% Inhaltsverzeichnis, die dort ebenfalls formatiert werden müssen.
%
% \begin{macro}{\l@part}
%   \changes{v2.97c}{2007/06/21}{\cs{sectfont}\cs{large} durch Verwendung von
%     Element \texttt{partentry} ersetzt}
%   \changes{v2.97c}{2007/06/21}{Element \texttt{partentrypagenumber} wird
%     verwendet}
% Der Eintrag für \cs{part}:
%    \begin{macrocode}
\newcommand*\l@part[2]{%
%<article>  \ifnum \c@tocdepth >\m@ne\relax
%<book|report>  \ifnum \c@tocdepth >-2\relax
%<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}
%    \changes{v2.9k}{2003/01/02}{Anpassung an Option \texttt{tocleft}}
%    \begin{macrocode}
    \setlength{\@tempdima}{2em}%
    \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}
%    \changes{v2.5e}{1998/07/17}{beinhaltet \cs{sectfont} eine
%      Größenangabe, so wird diese überschrieben} 
%    \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}
% 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}
      \ifnum \scr@compatibility>\@nameuse{scr@v@2.96}\relax
      \endgroup
      \penalty20010
      \else
%<*article>
        \if@compatibility
          \global\@nobreaktrue
%    \end{macrocode}
%    \changes{v2.3g}{1996/01/14}{fehlendes Kommentarzeichen ergänzt}
%    \begin{macrocode}
          \everypar{\global\@nobreakfalse\everypar{}}%
        \else
%</article>
          \penalty\@highpenalty
%<article>         \fi
      \endgroup
    \fi
  \fi
}
%    \end{macrocode}
%  \end{macro}
%  \begin{macro}{\l@chapter}
%    \changes{v2.9k}{2003/01/02}{Anpassung an Option \texttt{tocleft}}
%    \changes{v2.96b}{2006/11/30}{Umbruch zwischen \cs{chapter}-Eintrag im
%      Inhaltsverzeichnis und übergeordneten Einträgen verhindern}
%    \changes{v2.96b}{2006/11/30}{Umbruch zwischen \cs{chapter}-Eintrag im
%      Inhaltsverzeichnis und untergeordneten Einträgen verhindern}
%    \changes{v2.97c}{2007/06/21}{\cs{sectfont} durch Verwendung von
%      Element \texttt{chapterentry} ersetzt}
%    \changes{v2.97c}{2007/06/21}{Element \texttt{chapterentrypagenumber} wird
%      verwendet}
%    \changes{v2.97c}{2007/06/21}{weitgehend umgeschrieben, um linksbündige
%      Einträge zu ermöglichen}
% \iffalse
%<*report|book>
% \fi
% Kapiteleinträge gibt es natürlich nicht bei \textsf{scrartcl}.
%    \begin{macrocode}
\newcommand*\l@chapter[2]{%
  \ifnum \c@tocdepth >\m@ne
    \ifnum \lastpenalty<20010
      \addpenalty{-\@highpenalty}%
    \fi
    \vskip 1.0em \@plus\p@
    \setlength\@tempdima{1.5em}%
    \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
      \usekomafont{chapterentry}{#1\nobreak
        \usekomafont{chapterentrypagenumber}{%
%    \end{macrocode}
% Und dann könnte man noch folgendes machen:
%    \begin{verbatim}
%          \if@chapterentrywithdots
%            \leaders\hbox{$\m@th
%              \mkern \@dotsep mu\hbox{.}\mkern \@dotsep
%              mu$}%
%          \fi
%    \end{verbatim}
%    \begin{macrocode}
          \hfill\nobreak
          \hb@xt@\@pnumwidth{\hss#2}}}\par
      \ifnum \scr@compatibility>\@nameuse{scr@v@2.96}\relax
      \endgroup
      \penalty20009
      \else
        \penalty\@highpenalty
      \endgroup
    \fi
  \fi
}
%    \end{macrocode}
% \begin{macro}{\raggedchapterentry}
%   \changes{v2.97c}{2007/06/21}{neue Anweisung}
%   Ausrichtung des Textes der Kapiteleinträge im Inhaltsverzeichnis.
%    \begin{macrocode}
\newcommand*{\raggedchapterentry}{}
%    \end{macrocode}   
% \end{macro}
%
%  \begin{macro}{\l@chapteratlist}
%    \changes{v2.96a}{2006/12/03}{neues Macro}
% 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}
% \iffalse
%</report|book>
% \fi
%  \end{macro}
%  \begin{macro}{\l@section}
%    \changes{v2.9k}{2003/01/02}{Anpassung an Option \texttt{tocleft}}
%    \changes{v2.96b}{2006/11/30}{Umbruch zwischen \cs{section}-Eintrag im
%      Inhaltsverzeichnis und übergeordneten Einträgen verhindern}
%    \changes{v2.96b}{2006/11/30}{Umbruch zwischen \cs{section}-Eintrag im
%      Inhaltsverzeichnis und untergeordneten Einträgen verhindern}
%    \changes{v2.97c}{2007/06/21}{\cs{sectfont} durch Verwendung von
%      Element \texttt{sectionentry} ersetzt}
%    \changes{v2.97c}{2007/06/21}{Element \texttt{sectionentrypagenumber} wird
%      verwendet}
%    \changes{v2.97c}{2007/06/21}{weitgehend umgeschrieben, um linksbündige
%      Einträge zu ermöglichen}
% 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{macrocode}
%<*article>
\newcommand*\l@section[2]{%
  \ifnum \c@tocdepth >\z@
    \ifnum \lastpenalty<20009
      \addpenalty{\@secpenalty}%
    \fi
    \addvspace{1.0em \@plus\p@}%
    \setlength\@tempdima{1.5em}%
     \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
      \usekomafont{sectionentry}{#1\nobreak
        \usekomafont{sectionentrypagenumber}{%
%    \end{macrocode}
% Und dann könnte man noch folgendes machen:
%    \begin{verbatim}
%          \if@sectionentrywithdots
%            \leaders\hbox{$\m@th
%              \mkern \@dotsep mu\hbox{.}\mkern \@dotsep
%              mu$}%
%          \fi
%    \end{verbatim}
%    \begin{macrocode}
          \hfill\nobreak
          \hb@xt@\@pnumwidth{\hss#2}}}\par
    \endgroup
    \ifnum \scr@compatibility>\@nameuse{scr@v@2.96}\relax
      \penalty20008
    \fi
  \fi
}
%    \end{macrocode}   
% \begin{macro}{\raggedsectionentry}
%   \changes{v2.97c}{2007/06/21}{neue Anweisung}
%   Ausrichtung des Textes der Abschnittseinträge im Inhaltsverzeichnis.
%    \begin{macrocode}
\newcommand*{\raggedsectionentry}{}
%    \end{macrocode}   
% \end{macro}
%
%    \begin{macrocode}
%</article>
%<*report|book>
\newcommand*\l@section{\bprot@dottedtocline{1}{1.5em}{2.3em}}
%</report|book>
%    \end{macrocode}
%  \end{macro}
%  \begin{macro}{\l@subsection}
%    \changes{v2.96b}{2006/11/30}{Umbruch zwischen \cs{subsection}-Eintrag im
%      Inhaltsverzeichnis und übergeordneten Einträgen verhindern}
%    \changes{v2.96b}{2006/11/30}{Umbruch zwischen \cs{subsection}-Eintrag im
%      Inhaltsverzeichnis und untergeordneten Einträgen verhindern}
%  \begin{macro}{\l@subsubsection}
%    \changes{v2.96b}{2006/11/30}{Umbruch zwischen \cs{subsubsection}-Eintrag
%      im Inhaltsverzeichnis und übergeordneten Einträgen verhindern}
%    \changes{v2.96b}{2006/11/30}{Umbruch zwischen \cs{subsubsection}-Eintrag
%      im Inhaltsverzeichnis und untergeordneten Einträgen verhindern}
%  \begin{macro}{\l@paragraph}
%    \changes{v2.96b}{2006/11/30}{Umbruch zwischen \cs{paragraph}-Eintrag im
%      Inhaltsverzeichnis und übergeordneten Einträgen verhindern}
%    \changes{v2.96b}{2006/11/30}{Umbruch zwischen \cs{paragraph}-Eintrag im
%      Inhaltsverzeichnis und untergeordneten Einträgen verhindern}
%  \begin{macro}{\l@subparagraph}
%    \changes{v2.96b}{2006/11/30}{Umbruch zwischen \cs{subparagraph}-Eintrag
%      im Inhaltsverzeichnis und übergeordneten Einträgen verhindern}
%    \changes{v2.96b}{2006/11/30}{Umbruch zwischen \cs{subparagraph}-Eintrag
%      im Inhaltsverzeichnis und untergeordneten Einträgen verhindern}
% Die übrigen Ebenen werden normal behandelt.
%    \begin{macrocode}
%<*article>
\newcommand*\l@subsection{\bprot@dottedtocline{2}{1.5em}{2.3em}}
\newcommand*\l@subsubsection{\bprot@dottedtocline{3}{3.8em}{3.2em}}
\newcommand*\l@paragraph{\bprot@dottedtocline{4}{7.0em}{4.1em}}
\newcommand*\l@subparagraph{\bprot@dottedtocline{5}{10em}{5em}}
%</article>
%<*report|book>
\newcommand*\l@subsection{\bprot@dottedtocline{2}{3.8em}{3.2em}}
\newcommand*\l@subsubsection{\bprot@dottedtocline{3}{7.0em}{4.1em}}
\newcommand*\l@paragraph{\bprot@dottedtocline{4}{10em}{5em}}
\newcommand*\l@subparagraph{\bprot@dottedtocline{5}{12em}{6em}}
%</report|book>
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\bprot@dottedtocline}
%    \changes{v2.96a}{2006/11/30}{neu (intern)}
% 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}
\newcommand*{\bprot@dottedtocline}[5]{%
  \ifnum \scr@compatibility>\@nameuse{scr@v@2.96}\relax
    \ifnum #1>\c@tocdepth \else
      \begingroup
        \@tempcnta 20010
        \advance \@tempcnta by -#1
      \ifnum \@tempcnta>\lastpenalty
        \endgroup
        \addpenalty{\@lowpenalty}%
      \else
        \endgroup
      \fi
      \@dottedtocline{#1}{#2}{#3}{#4}{#5}%
      \@tempcnta 20009
      \advance \@tempcnta by -#1
      \penalty\@tempcnta
    \fi
  \else
    \@dottedtocline{#1}{#2}{#3}{#4}{#5}%
  \fi
}
%    \end{macrocode}
%  \end{macro}
%
% \iffalse
%</class>
%</body>
% \fi
%
% \iffalse
%</!letter>
% \fi
%
% \Finale
%
\endinput
%
% end of file `scrksect.dtx'
%%% Local Variables:
%%% mode: doctex
%%% TeX-master: t
%%% End:
