diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/koma-script/scrksect.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/koma-script/scrksect.dtx | 2077 |
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: |