summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/koma-script/scrksect.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/koma-script/scrksect.dtx')
-rw-r--r--Master/texmf-dist/source/latex/koma-script/scrksect.dtx2077
1 files changed, 2077 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/koma-script/scrksect.dtx b/Master/texmf-dist/source/latex/koma-script/scrksect.dtx
new file mode 100644
index 00000000000..752ca68b130
--- /dev/null
+++ b/Master/texmf-dist/source/latex/koma-script/scrksect.dtx
@@ -0,0 +1,2077 @@
+% \CheckSum{1465}
+% \iffalse meta-comment
+% ======================================================================
+% scrksect.dtx
+% Copyright (c) Markus Kohm, 2002-2006
+%
+% 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-2006
+%
+% 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}[2006/07/30 v2.95b 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}
+%
+% \begin{option}{openright}
+% \begin{option}{openany}
+% \iffalse
+%<*book|report>
+% \fi
+% Bei \textsf{scrreprt} und \textsf{scrbook} kann per Option
+% eingestellt werden, ob Kapitel nur auf 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 gespeichert.
+% \begin{macrocode}
+\newif\if@openright
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macrocode}
+\DeclareOption{openright}{\@openrighttrue}
+\DeclareOption{openany}{\@openrightfalse}
+% \end{macrocode}
+% \iffalse
+%</book|report>
+% \fi
+% \end{option}
+% \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}
+% \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}
+% 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. Dies kann jedoch erst am Ende der Klasse
+% geschehen.
+% \begin{macrocode}
+\DeclareOption{pointednumbers}{%
+ \AtEndOfClass{\@altsecnumformattrue
+ \global\let\@altsecnumformatfalse\@altsecnumformattrue}%
+}
+\DeclareOption{pointednumber}{%
+ \AtEndOfClass{\@altsecnumformattrue
+ \global\let\@altsecnumformatfalse\@altsecnumformattrue}%
+ \ClassError{\KOMAClassName}{%
+ undefined option `pointednumber' instead of `pointednumbers'%
+ }{%
+ You've used the class-option `pointednumber'.\MessageBreak
+ This name was an implementation-error at versions from 2.3h till
+ 2.4f.\MessageBreak
+ The correct name is `pointednumbers'.
+ Change this at your document.\MessageBreak
+ If you'll continue, the option `pointednumbers' will be used%
+ }%
+}
+\DeclareOption{pointlessnumbers}{%
+ \AtEndOfClass{\@altsecnumformatfalse
+ \global\let\@altsecnumformattrue\@altsecnumformatfalse}%
+}
+\DeclareOption{pointlessnumber}{%
+ \AtEndOfClass{\@altsecnumformatfalse
+ \global\let\@altsecnumformattrue\@altsecnumformatfalse}%
+ \ClassError{\KOMAClassName}{%
+ undefined option `pointlessnumber' instead of `pointlessnumbers'%
+ }{%
+ You've used the class-option `pointlessnumber'.\MessageBreak
+ This name was an implementation-error at versions from 2.3h till
+ 2.4f.\MessageBreak
+ The correct name is `pointlessnumbers'.
+ Change this at your document.\MessageBreak
+ If you'll continue, the option `pointlessnumbers' will be used%
+ }%
+}
+% \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}{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}
+% \begin{macro}{\@bigheadings}
+% \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}
+% \begin{macro}{\@normalheadings}
+% \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}
+% \begin{macro}{\@smallheadings}
+% Es kann zwischen verschiedenen Überschriftgrößen umgeschaltet
+% werden, wobei die ursprüngliche Größe als groß gilt und
+% voreingestellt wird.
+% \changes{v2.3h}{1996/01/20}{Größse 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}
+% \begin{macrocode}
+\newcommand\@bigheadings{%
+ \AtEndOfClass{%
+%<*book|report>
+ \renewcommand*{\chapterheadstartvskip}{%
+ \vspace*{2.3\baselineskip}%
+ }%
+ \renewcommand*{\chapterheadendvskip}{%
+ \vspace{1.725\baselineskip
+ \@plus .115\baselineskip \@minus .192\baselineskip}%
+ }%
+%</book|report>
+ \let\size@part\Huge
+ \let\size@partnumber\huge
+%<book|report> \let\size@chapter\huge
+ \let\size@section\Large
+ \let\size@subsection\large
+ \let\size@subsubsection\normalsize
+ \let\size@paragraph\normalsize
+ \let\size@subparagraph\normalsize
+ }%
+}
+\DeclareOption{bigheadings}{\@bigheadings}
+\DeclareOption{bigheading}{%
+ \@bigheadings
+ \ClassError{\KOMAClassName}{%
+ undefined option `bigheading' instead of `bigheadings'%
+ }{%
+ You've used the old option name `bigheading'!\MessageBreak
+ The correct name of the option is `bigheadings'.\MessageBreak
+ The old name was an implementation error from\MessageBreak
+ version 2.3h till 2.4f.\MessageBreak
+ You should change this at your document!\MessageBreak
+ If you'll continue, option `bigheadings' will be used%
+ }%
+}
+\newcommand\@normalheadings{%
+ \AtEndOfClass{%
+%<*book|report>
+ \renewcommand*{\chapterheadstartvskip}{%
+ \vspace*{2\baselineskip}%
+ }%
+ \renewcommand*{\chapterheadendvskip}{%
+ \vspace{1.5\baselineskip
+ \@plus .1\baselineskip \@minus .167\baselineskip}%
+ }%
+%</book|report>
+ \let\size@part\huge
+ \let\size@partnumber\huge
+%<*book|report>
+ \let\size@chapter\LARGE
+ \let\size@section\Large
+ \let\size@subsection\large
+%</book|report>
+%<*article>
+ \let\size@section\large
+ \let\size@subsection\normalsize
+%</article>
+ \let\size@subsubsection\normalsize
+ \let\size@paragraph\normalsize
+ \let\size@subparagraph\normalsize
+ }%
+}
+\DeclareOption{normalheadings}{\@normalheadings}
+\DeclareOption{normalheading}{%
+ \@normalheadings
+ \ClassError{\KOMAClassName}{%
+ undefined option `normalheading' instead of `normalheadings'%
+ }{%
+ You've used the old option name `normalheading'!\MessageBreak
+ The correct name of the option is `normalheadings'.\MessageBreak
+ The old name was an implementation error from\MessageBreak
+ version 2.3h till 2.4f.\MessageBreak
+ You should change this at your document!\MessageBreak
+ If you'll continue, option `normalheadings' will be used%
+ }%
+}
+\newcommand\@smallheadings{%
+ \AtEndOfClass{
+%<*book|report>
+ \renewcommand*{\chapterheadstartvskip}{%
+ \vspace*{1.8\baselineskip}%
+ }%
+ \renewcommand*{\chapterheadendvskip}{%
+ \vspace{1.35\baselineskip
+ \@plus 0.09\baselineskip \@minus .15\baselineskip}%
+ }%
+%</book|report>
+ \let\size@part\LARGE
+ \let\size@partnumber\LARGE
+%<*book|report>
+ \let\size@chapter\Large
+ \let\size@section\large
+%</book|report>
+%<*article>
+ \let\size@section\normalsize
+%</article>
+ \let\size@subsection\normalsize
+ \let\size@subsubsection\normalsize
+ \let\size@paragraph\normalsize
+ \let\size@subparagraph\normalsize
+ }%
+}
+\DeclareOption{smallheadings}{\@smallheadings}
+\DeclareOption{smallheading}{%
+ \@smallheadings
+ \ClassError{\KOMAClassName}{%
+ undefined option `smallheading' instead of `smallheadings'%
+ }{%
+ You've used the old option name `smallheading'!\MessageBreak
+ The correct name of the option is `smallheadings'.\MessageBreak
+ The old name was an implementation error from\MessageBreak
+ version 2.3h till 2.4f.\MessageBreak
+ You should change this at your document!\MessageBreak
+ If you'll continue, option `smallheadings' will be used%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+% \end{macro}
+% \end{option}
+% \end{macro}
+% \end{option}
+%
+%
+% \begin{option}{chapterprefix}
+% \changes{v2.8}{2001/06/15}{neue Option}
+% \begin{option}{nochapterprefix}
+% \changes{v2.8}{2001/06/15}{neue 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
+\DeclareOption{chapterprefix}{\@chapterprefixtrue}
+\DeclareOption{nochapterprefix}{\@chapterprefixfalse}
+% \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}
+% \begin{option}{noappendixprefix}
+% \changes{v2.8}{2001/06/15}{neue Option}
+% \iffalse
+%<*book|report>
+% \fi
+% Will man abweichend von den Optionen \texttt{chapterprefix} und
+% \texttt{nochapterprefix} 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 Optionen die Voreinstellung!
+% \begin{macrocode}
+\DeclareOption{appendixprefix}{%
+ \def\appendixmore{\@chapterprefixtrue}%
+}
+\DeclareOption{noappendixprefix}{%
+ \def\appendixmore{\@chapterprefixfalse}%
+}
+% \end{macrocode}
+% \iffalse
+%</book|report>
+% \fi
+% \end{option}
+% \end{option}
+%
+%
+% \iffalse
+%</option>
+%<*body>
+% \fi
+%
+%
+% \subsection{Grobeinteilung von Büchern}
+% \iffalse
+%<*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}
+% 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\cleardoublepage\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}
+% Der Hauptteil ist das Fleisch der Bücher.
+% \begin{macrocode}
+\newcommand*\mainmatter{%
+ \if@twoside\cleardoublepage\else\clearpage\fi
+ \@mainmattertrue\pagenumbering{arabic}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\backmatter}
+% 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\cleardoublepage\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}
+% \begin{macro}{\@autodotfalse}
+% 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\@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)}
+% 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 \aftergroup\@autodottrue\fi
+ \ifx #1\alph \aftergroup\@autodottrue\fi
+ \ifx #1\Roman \aftergroup\@autodottrue\fi
+ \ifx #1\roman \aftergroup\@autodottrue\fi
+ \ifx #1\@Alph \aftergroup\@autodottrue\fi
+ \ifx #1\@alph \aftergroup\@autodottrue\fi
+ \ifx #1\@Roman \aftergroup\@autodottrue\fi
+ \ifx #1\@roman \aftergroup\@autodottrue\fi
+ \ifx #1\romannumeral \aftergroup\@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}
+% \begin{macrocode}
+\BeforeClosingMainAux{%
+ \if@autodot\if@filesw\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}}
+% \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}
+% \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}{%
+ \chapappifchapterprefix{\ }\thechapter\autodot\enskip
+}
+\newcommand*\chaptermarkformat{\chapappifchapterprefix{\ }%
+ \thechapter\autodot\enskip}
+\newcounter{section}[chapter]
+\renewcommand*\thesection{\thechapter.\@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"ugt}
+% \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}
+% 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.
+% \begin{macrocode}
+\newcommand*{\othersectionlevelsformat}[1]{%
+ \csname the#1\endcsname\autodot\enskip}
+\renewcommand*{\@seccntformat}{\protect\othersectionlevelsformat}
+% \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}
+% \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{\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}
+% \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}
+% \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}
+% 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}
+\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}%
+%<book> \else
+%<book> \addcontentsline{toc}{chapter}{#1}%
+%<book> \fi
+ \else
+ \addcontentsline{toc}{chapter}{#1}%
+ \fi
+ \chaptermark{#1}%
+ \addtocontents{lof}{\protect\addvspace{10\p@}}%
+ \addtocontents{lot}{\protect\addvspace{10\p@}}%
+ \@ifundefined{float@addtolists}{}{%
+ \float@addtolists{\protect\addvspace{10\p@}}%
+ }%
+ \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
+}
+\newcommand*{\@@makechapterhead}[1]{\chapterheadstartvskip
+ {\normalfont\sectfont\size@chapter
+ \setlength{\parindent}{\z@}\setlength{\parfillskip}{\fill}%
+ \if@chapterprefix
+ \let\@tempa\raggedsection
+ \else
+ \let\@tempa\@hangfrom
+ \fi
+ \@tempa{\ifnum \c@secnumdepth >\m@ne%
+%<book> \if@mainmatter
+ \chapterformat
+%<book> \fi
+ \fi
+ }%
+ \if@chapterprefix\par\nobreak\vskip.5\baselineskip\fi
+ {\raggedsection \interlinepenalty \@M #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\size@chapter
+ \setlength{\parindent}{\z@}\setlength{\parfillskip}{\fill}%
+ \raggedsection \interlinepenalty \@M #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}}
+% \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@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}
+% \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}
+% \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}
+% \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}
+% \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}
+% 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}%
+ {\raggedsection\normalfont\sectfont\nobreak\size@section\nobreak}%
+}
+\newcommand\subsection{\@startsection{subsection}{2}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus .2ex}%
+ {\raggedsection\normalfont\sectfont\nobreak\size@subsection\nobreak
+ }%
+}
+\newcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus .2ex}%
+ {\raggedsection\normalfont\sectfont\nobreak\size@subsubsection
+ \nobreak
+ }%
+}
+\newcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
+ {3.25ex \@plus1ex \@minus.2ex}%
+ {-1em}%
+ {\raggedsection\normalfont\sectfont\nobreak\size@paragraph\nobreak}%
+}
+\newcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
+ {3.25ex \@plus1ex \@minus .2ex}%
+ {-1em}%
+ {\raggedsection\normalfont\sectfont\nobreak\size@subparagraph
+ \nobreak
+ }%
+}
+% \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}
+% In \KOMAScript{} gibt es diese zusätzliche Gliederungsebene, die
+% immer ohne Nummer und ihne Eintrag ins Inhaltsverzeichnis erfolgt.
+% \begin{macrocode}
+\newcommand\minisec[1]{\@afterindentfalse \vskip 1.5ex
+ {\parindent \z@
+ \raggedsection\normalfont\sectfont\nobreak#1\par\nobreak}\nobreak%
+ \@afterheading
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Schrift und Formatierung}
+%
+% \begin{macro}{\sectionragged}
+% \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}
+\newcommand*\sectfont{\normalcolor\sffamily\bfseries}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\size@part}
+% \changes{v2.8o}{2001/09/14}{neu (intern)}
+% \begin{macro}{\size@partnumber}
+% \changes{v2.8o}{2001/09/14}{neu (intern)}
+% \begin{macro}{\size@chapter}
+% \changes{v2.8o}{2001/09/14}{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).
+% \begin{macrocode}
+\newcommand*{\size@part}{}
+\newcommand*{\size@partnumber}{}
+%<book|report>\newcommand*{\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}
+%
+% \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@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}}
+% Definition der Elemente der Gliederung, deren Schrift geändert
+% werden kann:
+% \begin{macrocode}
+\newcommand*{\scr@fnt@disposition}{\sectfont}
+\newcommand*{\scr@fnt@part}{\size@part}
+\newcommand*{\scr@fnt@partnumber}{\size@partnumber}
+%<book|report>\newcommand*{\scr@fnt@chapter}{\size@chapter}
+\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}
+\aliaskomafont{minisec}{disposition}
+\aliaskomafont{sectioning}{disposition}
+% \end{macrocode}
+% \end{KOMAfont}
+% \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}
+% Der Eintrag für \cs{part}:
+% \begin{macrocode}
+\newcommand*\l@part[2]{%
+ \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\sectfont\large
+ \advance\leftskip\@tempdima
+ \hskip -\leftskip
+ #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
+%<*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
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\l@chapter}
+% \changes{v2.9k}{2003/01/02}{Anpassung an Option \texttt{tocleft}}
+% \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
+ \addpenalty{-\@highpenalty}%
+ \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
+ \parindent \z@ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ \leavevmode \sectfont
+ \advance\leftskip\@tempdima
+ \hskip -\leftskip
+ #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
+ \penalty\@highpenalty
+ \endgroup
+ \fi
+}
+% \end{macrocode}
+% \iffalse
+%</report|book>
+% \fi
+% \end{macro}
+% \begin{macro}{\l@section}
+% \changes{v2.9k}{2003/01/02}{Anpassung an Option \texttt{tocleft}}
+% 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@
+ \addpenalty{\@secpenalty}%
+ \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
+ \parindent \z@ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ \leavevmode \sectfont
+ \advance\leftskip\@tempdima
+ \hskip -\leftskip
+ #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
+ \endgroup
+ \fi
+}
+%</article>
+%<*report|book>
+\newcommand*\l@section{\@dottedtocline{1}{1.5em}{2.3em}}
+%</report|book>
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\l@subsection}
+% \begin{macro}{\l@subsubsection}
+% \begin{macro}{\l@paragraph}
+% \begin{macro}{\l@subparagraph}
+% Die übrigen Ebenen werden normal behandelt.
+% \begin{macrocode}
+%<*article>
+\newcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}}
+\newcommand*\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
+\newcommand*\l@paragraph{\@dottedtocline{4}{7.0em}{4.1em}}
+\newcommand*\l@subparagraph{\@dottedtocline{5}{10em}{5em}}
+%</article>
+%<*report|book>
+\newcommand*\l@subsection{\@dottedtocline{2}{3.8em}{3.2em}}
+\newcommand*\l@subsubsection{\@dottedtocline{3}{7.0em}{4.1em}}
+\newcommand*\l@paragraph{\@dottedtocline{4}{10em}{5em}}
+\newcommand*\l@subparagraph{\@dottedtocline{5}{12em}{6em}}
+%</report|book>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \iffalse
+%</body>
+% \fi
+%
+% \iffalse
+%</!letter>
+% \fi
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrksect.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End: