You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
6790 lines
262 KiB
6790 lines
262 KiB
% \iffalse meta-comment
|
|
% ======================================================================
|
|
% scrkernel-sections.dtx
|
|
% Copyright (c) Markus Kohm, 2002-2020
|
|
%
|
|
% This file is part of the LaTeX2e KOMA-Script bundle.
|
|
%
|
|
% This work may be distributed and/or modified under the conditions of
|
|
% the LaTeX Project Public License, version 1.3c of the license.
|
|
% The latest version of this license is in
|
|
% http://www.latex-project.org/lppl.txt
|
|
% and version 1.3c or later is part of all distributions of LaTeX
|
|
% version 2005/12/01 or later and of this work.
|
|
%
|
|
% This work has the LPPL maintenance status "author-maintained".
|
|
%
|
|
% The Current Maintainer and author of this work is Markus Kohm.
|
|
%
|
|
% This work consists of all files listed in manifest.txt.
|
|
% ----------------------------------------------------------------------
|
|
% scrkernel-sections.dtx
|
|
% Copyright (c) Markus Kohm, 2002-2020
|
|
%
|
|
% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz,
|
|
% Version 1.3c, verteilt und/oder veraendert werden.
|
|
% Die neuste Version dieser Lizenz ist
|
|
% http://www.latex-project.org/lppl.txt
|
|
% und Version 1.3c ist Teil aller Verteilungen von LaTeX
|
|
% Version 2005/12/01 oder spaeter und dieses Werks.
|
|
%
|
|
% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained"
|
|
% (allein durch den Autor verwaltet).
|
|
%
|
|
% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm.
|
|
%
|
|
% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien.
|
|
% ======================================================================
|
|
% \fi
|
|
%
|
|
% \CharacterTable
|
|
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
|
|
% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
|
|
% Digits \0\1\2\3\4\5\6\7\8\9
|
|
% Exclamation \! Double quote \" Hash (number) \#
|
|
% Dollar \$ Percent \% Ampersand \&
|
|
% Acute accent \' Left paren \( Right paren \)
|
|
% Asterisk \* Plus \+ Comma \,
|
|
% Minus \- Point \. Solidus \/
|
|
% Colon \: Semicolon \; Less than \<
|
|
% Equals \= Greater than \> Question mark \?
|
|
% Commercial at \@ Left bracket \[ Backslash \\
|
|
% Right bracket \] Circumflex \^ Underscore \_
|
|
% Grave accent \` Left brace \{ Vertical bar \|
|
|
% Right brace \} Tilde \~}
|
|
%
|
|
% \iffalse
|
|
%%% From File: $Id: scrkernel-sections.dtx 3507 2020-06-11 14:57:03Z kohm $
|
|
% The runs of run-time file generation:
|
|
%<preidentify>%%% (run: preidentify)
|
|
% - everything that is needed before selfidentification of resulting files
|
|
% (unused)
|
|
%<identify>%%% (run: identify)
|
|
% - everything that is needed for selfidentification of resulting files
|
|
% (unused)
|
|
%<prepare>%%% (run: prepare)
|
|
% - everything that is needed to define options
|
|
%<option>%%% (run: option)
|
|
% - definition of options
|
|
%<execoption>%%% (run: execoption)
|
|
% - initial option executions up to \KOMAProcessOptions
|
|
%<body>%%% (run: body)
|
|
% - everything, that should be done after \KOMAProcessOptions
|
|
%<exit>%%% (run: exit)
|
|
% - everything, that should be done immediately before leaving the file
|
|
%<*dtx>
|
|
% \fi
|
|
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
|
|
\begingroup
|
|
\def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
|
|
\filedate$Date: 2020-06-11 16:57:03 +0200 (Thu, 11 Jun 2020) $
|
|
\def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
|
|
\filerevision$Revision: 3507 $
|
|
\edef\reserved@a{%
|
|
\noexpand\endgroup
|
|
\noexpand\ProvidesFile{scrkernel-sections.dtx}%
|
|
[\filedate\space\filerevision\space
|
|
KOMA-Script source (disposition)]
|
|
}%
|
|
\reserved@a
|
|
% \iffalse
|
|
\documentclass[parskip=half-]{scrdoc}
|
|
\usepackage[english,ngerman]{babel}
|
|
\CodelineIndex
|
|
\RecordChanges
|
|
\GetFileInfo{scrkernel-sections.dtx}
|
|
\title{\KOMAScript{} \partname\ \texttt{\filename}%
|
|
\footnote{Dies ist Version \fileversion\ von Datei
|
|
\texttt{\filename}.}}
|
|
\date{\filedate}
|
|
\author{Markus Kohm}
|
|
|
|
\begin{document}
|
|
\maketitle
|
|
\tableofcontents
|
|
\DocInput{\filename}
|
|
\end{document}
|
|
%</dtx>
|
|
% \fi
|
|
%
|
|
% \selectlanguage{ngerman}
|
|
%
|
|
% \changes{v2.3h}{1996/01/20}{Größenbefehle in den Überschriften
|
|
% variabilisiert}%^^A
|
|
% \changes{v2.95}{2002/06/26}{erste Version aus der Aufteilung von
|
|
% \texttt{scrclass.dtx}}%^^A
|
|
% \changes{v3.15}{2014/12/09}{Code in Datei \texttt{scrkernel-section} komplett
|
|
% umsortiert}%^^A
|
|
%
|
|
% \section{Gliederung}
|
|
%
|
|
% Zur Gliederung gehören neben den üblichen Gliederungsbefehlen
|
|
% \cs{chapter} \dots \cs{subparagraph} auch alle Optionen und Befehle,
|
|
% die diese Gliederung beeinflussen. Eingeschränkt gehören auch die
|
|
% Befehle dazu, die Inhaltsverzeichniseinträge zu den
|
|
% Gliederungsbefehlen erzeugen oder unmittelbar formatieren. Diese
|
|
% Entscheidung wurde getroffen, weil die Zusammengehörigkeit eher hier
|
|
% gesehen wird, als bei den Verzeichnissen selbst.
|
|
%
|
|
% \StopEventually{\PrintIndex\PrintChanges}
|
|
%
|
|
% \changes{v2.8e}{2001/07/10}{\cs{@maybeasf} entfernt}
|
|
%
|
|
% Die Briefklasse hat keine derartige Gliederung. Beim Briefpaket wird die
|
|
% Gliederung über die verwendete Klasse bestimmt.
|
|
% \iffalse
|
|
%<*!letter>
|
|
% \fi
|
|
%
|
|
% \subsection{Vakatseiten}
|
|
%
|
|
% Bei \textsf{scrbook} und \textsf{scrreprt} gibt es im doppelseitigen Modus
|
|
% ggf. Vakatseiten.
|
|
%
|
|
% \begin{option}{open}
|
|
% \changes{v2.98c}{2008/03/06}{Neue Option}%^^A
|
|
% \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit
|
|
% \cs{FamilyKeyState}}%^^A
|
|
% \changes{v3.17}{2015/03/09}{interne Speicherung des Wert}%^^A
|
|
% Bei \textsf{scrreprt} und \textsf{scrbook} kann per Option eingestellt
|
|
% werden, ob beispielsweise Kapitel nur auf linken oder rechten Seiten
|
|
% beginnen dürfen oder auf jeder Seite.
|
|
% \begin{macro}{\if@openright}
|
|
% \begin{macro}{\@openrighttrue}
|
|
% \begin{macro}{\@openrightfalse}
|
|
% Der Zustand wird dann in einem Schalter und durch umdefinieren von
|
|
% \cs{cleardoublestandardpage} gespeichert. Die Voreinstellungen sind je nach
|
|
% Klasse unterschiedlich.
|
|
% \begin{macrocode}
|
|
%<*class>
|
|
%<*book|report>
|
|
%<*prepare>
|
|
\newif\if@openright
|
|
%<report>\@openrightfalse
|
|
%<book>\@openrighttrue
|
|
%</prepare>
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \begin{macrocode}
|
|
%<*option>
|
|
\KOMA@key{open}{%
|
|
\KOMA@set@ncmdkey{open}{@tempa}{%
|
|
{any}{0},%
|
|
{right}{1},%
|
|
{left}{2}%
|
|
}{#1}%
|
|
\ifx\FamilyKeyState\FamilyKeyStateProcessed
|
|
\KOMA@kav@xreplacevalue{.\KOMAClassFileName}{open}{#1}%
|
|
\KOMA@kav@remove{.\KOMAClassFileName}{headings}{openany}%
|
|
\KOMA@kav@remove{.\KOMAClassFileName}{headings}{openright}%
|
|
\KOMA@kav@remove{.\KOMAClassFileName}{headings}{openleft}%
|
|
\ifcase \@tempa\relax
|
|
\KOMA@kav@add{.\KOMAClassFileName}{headings}{openany}%
|
|
\@openrightfalse
|
|
\renewcommand*{\cleardoublestandardpage}{\cleardoubleoddstandardpage}%
|
|
\or
|
|
\KOMA@kav@add{.\KOMAClassFileName}{headings}{openright}%
|
|
\@openrighttrue
|
|
\renewcommand*{\cleardoublestandardpage}{\cleardoubleoddstandardpage}%
|
|
\or
|
|
\KOMA@kav@add{.\KOMAClassFileName}{headings}{openleft}%
|
|
\@openrighttrue
|
|
\renewcommand*{\cleardoublestandardpage}{\cleardoubleevenstandardpage}%
|
|
\fi
|
|
\fi
|
|
}
|
|
%</option>
|
|
% \end{macrocode}
|
|
% \changes{v3.18}{2015/05/22}{indirekte Initialisierung}
|
|
% Die Initialisierung erfolgt indirekt über Option \texttt{headings}.
|
|
% \begin{macrocode}
|
|
%<*execoption>
|
|
%<book>\KOMAExecuteOptions{headings=openright}
|
|
%<report>\KOMAExecuteOptions{headings=openany}
|
|
%</execoption>
|
|
% \end{macrocode}
|
|
% \end{option}
|
|
%
|
|
% \begin{option}{openright}
|
|
% \changes{v2.98c}{2008/03/05}{obsolet}%^^A
|
|
% \changes{v3.01a}{2008/11/21}{standard statt obsolet}%^^A
|
|
% \begin{option}{openany}
|
|
% \changes{v2.98c}{2008/03/05}{obsolet}%^^A
|
|
% \changes{v3.01a}{2008/11/21}{standard statt obsolet}%^^A
|
|
% Zusätzlich gibt es einige Standardoptionen, die natürlich auch mit
|
|
% \KOMAScript{} funktionieren sollen.
|
|
% \begin{macrocode}
|
|
%<*option>
|
|
\KOMA@DeclareStandardOption{openright}{open=right}
|
|
\KOMA@DeclareStandardOption{openany}{open=any}
|
|
%</option>
|
|
%</book|report>
|
|
%</class>
|
|
% \end{macrocode}
|
|
% \end{option}
|
|
% \end{option}
|
|
%
|
|
%
|
|
% \subsection{Behandlung von Gliederungsnummern}
|
|
%
|
|
% Die Möglichkeit der Nummerierung ist allen Ebenen bis auf \cs{minisec}
|
|
% gemeinsam.
|
|
%
|
|
% \begin{option}{numbers}
|
|
% \changes{v2.98c}{2008/03/07}{Neue Option}%^^A
|
|
% \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit
|
|
% \cs{FamilyKeyState}}%^^A
|
|
% \changes{v3.17}{2015/03/09}{interne Speicherung des Wert}%^^A
|
|
% Dies ist die zentrale Option zur Konfiguration der Nummerierung. Dabei geht
|
|
% es primär um die Gliederungsnummern, es sind jedoch auch davon abgeleitete
|
|
% Nummern betroffen.
|
|
% \begin{macro}{\scr@dotchangeatdocument}
|
|
% \changes{v2.98c}{2008/03/07}{Neu (intern)}%^^A
|
|
% Da die Umschaltung zwischen automatischem Endpunkt, immer Endpunkt und kein
|
|
% Endpunkt unbedingt \emph{vor} \cs{begin{document}} erfolgen muss, wird eine
|
|
% Fehlermeldung ausgegeben, falls das jemand zu einem späteren Zeitpunkt
|
|
% probiert. Umschaltmöglichkeiten sind auf die Klassen beschränkt.
|
|
% \begin{macrocode}
|
|
%<*class>
|
|
%<*prepare>
|
|
\newcommand*{\scr@dotchangeatdocument}[1]{%
|
|
\ClassError{\KOMAClassName}{%
|
|
change of end dot feature after \string\begin{document}%
|
|
}{%
|
|
You've tried to set `numbers=#1' after \string\begin{document},\MessageBreak
|
|
but this option is only allowed at the document preamble.\MessageBreak
|
|
See KOMA-Script manual for more information about.%
|
|
}%
|
|
}
|
|
%</prepare>
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% Normalerweise wird automatisch entschieden, ob Nummern mit einem
|
|
% Punkt enden müssen oder nicht. Um dies abzuschalten, muss nur der
|
|
% gewünschte Zustand eingeschaltet und die Umschaltmöglichkeit
|
|
% entfernt werden. Die Umschaltung kann jedoch nicht direkt erfolgen, sondern
|
|
% erfolgt zeitverzögert in \cs{begin{document}}. Hier wird nur das Makro
|
|
% umgeschaltet, das dort verwendet wird.
|
|
% \begin{macrocode}
|
|
%<*option>
|
|
\KOMA@key{numbers}{%
|
|
\KOMA@set@ncmdkey{numbers}{@tempa}{%
|
|
{autoendperiod}{0},{autoenddot}{0},{auto}{0},%
|
|
{endperiod}{1},{withendperiod}{1},{periodatend}{1},%
|
|
{enddot}{1},{withenddot}{1},{dotatend}{1},%
|
|
{noendperiod}{2},{noperiodatend}{2},%
|
|
{noenddot}{2},{nodotatend}{2}%
|
|
}{#1}%
|
|
\ifx\FamilyKeyState\FamilyKeyStateProcessed
|
|
\KOMA@kav@xreplacevalue{.\KOMAClassFileName}{numbers}{#1}%
|
|
\ifcase \@tempa\relax
|
|
\if@atdocument\scr@dotchangeatdocument{#1}\else
|
|
\let\scr@altsecnumhook\@empty
|
|
\fi
|
|
\or
|
|
\if@atdocument\scr@dotchangeatdocument{#1}\else
|
|
\let\scr@altsecnumhook\scr@altsecnumhooktrue
|
|
\fi
|
|
\or
|
|
\if@atdocument\scr@dotchangeatdocument{#1}\else
|
|
\let\scr@altsecnumhook\scr@altsecnumhookfalse
|
|
\fi
|
|
\fi
|
|
\fi
|
|
}
|
|
%</option>
|
|
%<execoption>\KOMAExecuteOptions{numbers=autoendperiod}
|
|
% \end{macrocode}
|
|
% \end{option}
|
|
%
|
|
% \begin{option}{pointednumbers}
|
|
% \changes{v2.3h}{1995/01/19}{neue Option}%^^A
|
|
% \changes{v2.4g}{1996/11/04}{die Option heißt nun wirklich so,
|
|
% bei \texttt{pointednumber} wird explizit ein Fehler gemeldet}
|
|
% \changes{v2.4g}{1996/11/04}{\cs{@altsecnumformatfalse} wird
|
|
% direkt auf \cs{@altsecnumformattrue} gesetzt}
|
|
% \changes{v2.98c}{2008/03/07}{obsolet}%^^A
|
|
% \changes{v3.01a}{2008/11/20}{deprecated}%^^A
|
|
% \begin{option}{pointlessnumbers}
|
|
% \changes{v2.3h}{1995/01/19}{neue Option}%^^A
|
|
% \changes{v2.4g}{1996/11/04}{die Option heißt nun wirklich so,
|
|
% bei \texttt{pointlessnumber} wird explizit ein Fehler gemeldet}
|
|
% \changes{v2.4g}{1996/11/04}{\cs{@altsecnumformattrue} wird direkt
|
|
% auf \cs{@altsecnumformatfalse} gesetzt}
|
|
% \changes{v2.98c}{2008/03/07}{obsolet}%^^A
|
|
% \changes{v3.01a}{2008/11/20}{deprecated}%^^A
|
|
% Diese Optionens sind nun wirklich veraltet und sollten nicht mehr verwendet
|
|
% werden!
|
|
% \begin{macrocode}
|
|
%<*option>
|
|
\KOMA@DeclareDeprecatedOption{pointednumbers}{numbers=enddot}
|
|
\KOMA@DeclareDeprecatedOption{pointlessnumbers}{numbers=noenddot}
|
|
%</option>
|
|
% \end{macrocode}
|
|
% Übrigens weiß ich, wie blödsinnig die Namen der Optionen sind. Aber
|
|
% das ist nun nicht mehr zu ändern.
|
|
% \end{option}
|
|
% \end{option}
|
|
%
|
|
% \begin{Counter}{secnumdepth}
|
|
% Dieser Zähler gibt an, bis zu welcher Ebene die Gliederungsüberschriften
|
|
% nummeriert werden.
|
|
% \begin{macrocode}
|
|
%<*body>
|
|
%<book|report>\setcounter{secnumdepth}{2}
|
|
%<article>\setcounter{secnumdepth}{3}
|
|
%</body>
|
|
% \end{macrocode}
|
|
% \end{Counter}
|
|
%
|
|
%
|
|
% \begin{macro}{\ifnumbered}
|
|
% \changes{v3.12}{2013/12/16}{new command}%^^A
|
|
% \changes{v3.28}{2019/11/19}{renamed to \cs{Ifnumbered}}%^^A
|
|
% \begin{macro}{\Ifnumbered}
|
|
% \changes{v3.28}{2019/11/19}{renamed from \cs{ifnumbered}}%^^A
|
|
% \begin{macro}{\ifunnumbered}
|
|
% \changes{v3.12}{2013/12/16}{new command}%^^A
|
|
% \changes{v3.28}{2019/11/19}{renamed to \cs{Ifunnumbered}}%^^A
|
|
% \begin{macro}{\Ifunnumbered}
|
|
% \changes{v3.28}{2019/11/19}{renamed from \cs{ifunnumbered}}%^^A
|
|
% Test, ob eine Gliederungsebene (\texttt{\#1}) nummeriert wird. Falls das der
|
|
% Fall ist, wird das zweite Argument verwendet, sonst das dritte. Bei
|
|
% \cs{ifunnumbered} ist die Logik genau vertauscht.
|
|
% \begin{macrocode}
|
|
%<*body>
|
|
\providecommand*{\ifnumbered}{%
|
|
\ClassWarning{\KOMAClassName}{Usage of deprecated command
|
|
`\string\ifnumbered'.\MessageBreak
|
|
The command has been renamed because of a\MessageBreak
|
|
recommendation of The LaTeX Project Team.\MessageBreak
|
|
Please replace `\string\ifnumbered' by `\string\Ifnumbered'%
|
|
}%
|
|
\Ifnumbered
|
|
}
|
|
\newcommand*{\Ifnumbered}[1]{%
|
|
\if@currentusenumber
|
|
\scr@ifundefinedorrelax{#1numdepth}{%
|
|
\expandafter\@secondoftwo
|
|
}{%
|
|
\expandafter\ifnum \@nameuse{#1numdepth}>\c@secnumdepth
|
|
\expandafter\expandafter\expandafter\@secondoftwo
|
|
\else
|
|
\expandafter\expandafter\expandafter\@firstoftwo
|
|
\fi
|
|
}%
|
|
\else
|
|
\expandafter\@secondoftwo
|
|
\fi
|
|
}
|
|
\providecommand*{\ifunnumbered}{%
|
|
\ClassWarning{\KOMAClassName}{Usage of deprecated command
|
|
`\string\ifunnumbered'.\MessageBreak
|
|
The command has been renamed because of a\MessageBreak
|
|
recommendation of The LaTeX Project Team.\MessageBreak
|
|
Please replace `\string\ifunnumbered' by `\string\Ifunnumbered'%
|
|
}%
|
|
\Ifunnumbered
|
|
}
|
|
\newcommand*{\Ifunnumbered}[1]{%
|
|
\Ifnumbered{#1}{\@secondoftwo}{\@firstoftwo}%
|
|
}
|
|
%</body>
|
|
%</class>
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
%
|
|
% \subsection{\KOMAScript-eigene Befehle zur Definition von
|
|
% Gliederungsbefehlen}
|
|
%
|
|
% Die Funktionalität des \LaTeX-Kerns genügt \KOMAScript{} bei der Definition
|
|
% von Gliederungsebenen nicht.
|
|
%
|
|
% \begin{macro}{\scr@activate@xsection}
|
|
% \changes{v3.10}{2011/08/30}{neu (intern)}%^^A
|
|
% Hiermit wird die Erweiterung für das optionale Argument der
|
|
% Gliederungsbefehle eingeschaltet.
|
|
% \begin{macro}{\scr@osectarg}%^^A
|
|
% Für die nicht per \cs{@startsection} implementierten Befehle geht das
|
|
% einfach durch Umschaltung von \cs{scr@osectarg}. Bei 0 ist die Aktivierung
|
|
% nicht aktiv. Bei 1 landet das optionale Argument hingegen im Kopf, bei 2
|
|
% im Inhaltsverzeichnis und bei 3 in beiden. Die Voreinstellung ist deshalb
|
|
% ebenfalls 0.
|
|
%
|
|
% Da Option \texttt{headings} darauf zurückgreift, müssen die beiden Makros
|
|
% bereits vorab definiert werden.
|
|
% \begin{macrocode}
|
|
%<*class>
|
|
%<*prepare>
|
|
\newcommand*{\scr@osectarg}{0}
|
|
\newcommand*{\scr@activate@xsection}[1]{%
|
|
\renewcommand*{\scr@osectarg}{#1}%
|
|
}
|
|
%</prepare>
|
|
%</class>
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
%
|
|
% \begin{macro}{\if@altsecnumformat}
|
|
% \changes{v2.3c}{1995/08/06}{neuer Schalter}%^^A
|
|
% \begin{macro}{\@altsecnumformattrue}
|
|
% \begin{macro}{\@altsecnumformatfalse}
|
|
% Dieses Schalter wird für die Umschaltung auf Duden-Regel~6 bei der
|
|
% Numerierung benötigt.
|
|
% \begin{macro}{\if@autodot}
|
|
% \changes{v2.8e}{2001/07/10}{neuer Schalter}%^^A
|
|
% \begin{macro}{\@autodottrue}
|
|
% \changes{v3.00}{2008/10/07}{arbeitet nun gobal}%^^A
|
|
% \begin{macro}{\@autodotfalse}
|
|
% \changes{v3.00}{2008/10/07}{arbeitet nun gobal}%^^A
|
|
% Nach Duden 20.~Auflage, Regel~5 wird in der Gliederung kein Punkt gesetzt,
|
|
% wenn diese rein mit arabischen Zahlen erfolgt. Nach Regel~6 folgt jedoch ein
|
|
% Punkt, wenn die Gliederung auch römische Zahlen oder Großbuchstaben
|
|
% enthält. Aus Konsistenzgründen muss der Punkt in diesem Fall immer gesetzt
|
|
% werden. \KOMAScript{} bietet dafür einen Automatismus.
|
|
%
|
|
% Damit die Umschaltung auch wieder zurück auf Regel~5 automatisch erfolgen
|
|
% kann, wird ein zweiter Schalter benötigt.
|
|
% \begin{macrocode}
|
|
%<*class>
|
|
%<*prepare>
|
|
\newif\if@altsecnumformat\@altsecnumformatfalse
|
|
\newif\if@autodot
|
|
\renewcommand*{\@autodottrue}{\global\let\if@autodot\iftrue}
|
|
\renewcommand*{\@autodotfalse}{\global\let\if@autodot\iffalse}
|
|
\@autodotfalse
|
|
%</prepare>
|
|
% \end{macrocode}
|
|
% Dabei soll die Umstellung des Punktes beim zweiten TeX-Lauf bereits am
|
|
% Anfang aktiv sein. Deshalb wird die Information am Ende in die aux-Datei
|
|
% geschrieben.
|
|
% \changes{v2.9k}{2003/01/12}{es wird direkt in \cs{@mainaux} geschrieben}%^^A
|
|
% \changes{v2.95}{2004/01/15}{es wird erst unmittelbar vor dem Schließen
|
|
% der Haupt-aux-Datei in diese geschrieben}%^^A
|
|
% \changes{v2.96a}{2006/12/07}{es wird \cs{immediate} geschrieben}%^^A
|
|
% \changes{v3.20}{2016/03/25}{es wird \cs{csname}\dots\cs{endcsname}
|
|
% verwendet}%^^A
|
|
% \begin{macrocode}
|
|
%<*body>
|
|
\BeforeClosingMainAux{%
|
|
\if@autodot\if@filesw\immediate\write\@mainaux{%
|
|
\string\global\string\csname\space @altsecnumformattrue\string\endcsname}%
|
|
\fi\fi}
|
|
%</body>
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \@autodotfalse
|
|
% \end{macro}%^^A \@autodottrue
|
|
% \end{macro}%^^A \if@autodot
|
|
% \end{macro}%^^A \@altsecnumformatfalse
|
|
% \end{macro}%^^A \@altsecnumformattrue
|
|
% \end{macro}%^^A \if@altsecnumformat
|
|
%
|
|
% \begin{macro}{\scr@altsecnumhook}
|
|
% \changes{v2.98c}{2008/03/07}{Neu (intern)}%^^A
|
|
% \begin{macro}{\scr@altsecnumhooktrue}
|
|
% \changes{v2.98c}{2008/03/07}{Neu (intern)}%^^A
|
|
% \begin{macro}{\scr@altsecnumhookfalse}
|
|
% \changes{v2.98c}{2008/03/07}{Neu (intern)}%^^A
|
|
% Es werden drei Hilfsmakros benötigt. Das erste davon wird bei
|
|
% \cs{begin{document}} ausgeführt (nachdem die \texttt{aux}-Datei gelesen
|
|
% wurde!) und schaltet den gewünschten Zustand ein. Dazu wird es per Option
|
|
% ggf. auf die eine oder andere Bedeutung umgeschaltet. Im Auto-Fall ist es
|
|
% übrigens \cs{@empty}.
|
|
% \begin{macrocode}
|
|
%<*prepare>
|
|
\newcommand*{\scr@altsecnumhook}{}
|
|
\AtBeginDocument{\scr@altsecnumhook}
|
|
\newcommand*{\scr@altsecnumhooktrue}{%
|
|
\@altsecnumformattrue\global\let\@altsecnumformatfalse\@altsecnumformattrue
|
|
}
|
|
\newcommand*{\scr@altsecnumhookfalse}{%
|
|
\@altsecnumformatfalse\global\let\@altsecnumformattrue\@altsecnumformatfalse
|
|
}
|
|
%</prepare>
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@altsecnumhooktrue
|
|
% \end{macro}%^^A \scr@altsecnumhookfalse
|
|
% \end{macro}%^^A \scr@altsecnumhook
|
|
%
|
|
% \begin{macro}{\@maybeautodot}
|
|
% \changes{v2.8e}{2001/07/10}{neu (intern)}%^^A
|
|
% Ob der automatische Punkt aktiviert werden muss, wird aufgrund der
|
|
% Darstellung eines Zählers entschieden. Diese wird dem Makro als Argument
|
|
% übergeben (\cs{thepart}, \cs{thechapter} etc.). Durch Verwendung einer
|
|
% Gruppe, werden alle Definitionen lokal gehalten.
|
|
% \begin{macrocode}
|
|
%<*body>
|
|
\newcommand{\@maybeautodot}[1]{\if@autodot\else\begingroup%
|
|
\expandafter\@@maybeautodot #1\@stop\endgroup\fi
|
|
}
|
|
% \end{macrocode}
|
|
% \begin{macro}{\@@maybeautodot}
|
|
% \changes{v2.8e}{2001/07/10}{neu (intern)}%^^A
|
|
% \changes{v3.00}{2008/10/07}{neuerdings überflüssige \cs{aftergroup}%^^A
|
|
% entfernt}%^^A
|
|
% Die expandierte Darstellung wird dann auf Darstellungsbefehle für
|
|
% Zähler gescannt.
|
|
% \begin{macrocode}
|
|
\newcommand*{\@@maybeautodot}[1]{%
|
|
\ifx #1\@stop\let\@@maybeautodot\relax
|
|
\else
|
|
\ifx #1\Alph \@autodottrue\fi
|
|
\ifx #1\alph \@autodottrue\fi
|
|
\ifx #1\Roman \@autodottrue\fi
|
|
\ifx #1\roman \@autodottrue\fi
|
|
\ifx #1\@Alph \@autodottrue\fi
|
|
\ifx #1\@alph \@autodottrue\fi
|
|
\ifx #1\@Roman \@autodottrue\fi
|
|
\ifx #1\@roman \@autodottrue\fi
|
|
\ifx #1\romannumeral \@autodottrue\fi
|
|
\fi
|
|
\@@maybeautodot
|
|
}
|
|
%</body>
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \@@maybeautodot
|
|
% \end{macro}%^^A \@maybeautodot
|
|
%
|
|
% \begin{macro}{\autodot}
|
|
% \changes{v2.7}{2001/01/03}{neu}%^^A
|
|
% Dieses Makro setzt dann den Punkt nach Bedarf.
|
|
% \begin{macrocode}
|
|
%<*body>
|
|
\newcommand*\autodot{\if@altsecnumformat.\fi}
|
|
%</body>
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
%
|
|
% \begin{macro}{\@startsection}
|
|
% \changes{v3.13a}{2014/09/11}{Vollständige Neudefinition zur Optimierung
|
|
% der Erweiterung für das optionale Argument}%^^A
|
|
% \begin{macro}{\scr@startsection}
|
|
% \changes{v3.13a}{2014/09/11}{Neue interne Anweisung}%^^A
|
|
% \changes{v3.18}{2015/05/22}{verwende \cs{numexpr} für Argument 2}
|
|
% \changes{v3.18}{2015/05/22}{verwende \cs{glueexpr} für Argument 3--5}
|
|
% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
|
|
% ersetzt}%^^A
|
|
% \changes{v3.26}{2018/09/18}{\texttt{afterindent}-Einstellung wird
|
|
% beachtet}%^^A
|
|
% \begin{macro}{\scr@saved@startsection}
|
|
% \changes{v3.13a}{2014/09/11}{Neue interne Anweisung}%^^A
|
|
% \changes{v3.20}{2016/04/12}{Tests funktionieren jetzt auch mit
|
|
% \textsf{amsgen}}%^^A
|
|
% \KOMAScript{} benötigt ein eigenes \cs{@startsection}, weil die
|
|
% Funktionalität des \cs{@startsection} aus dem \LaTeX-Kern nicht
|
|
% genügt. Bevor allerdings die eigene Definition in Angriff genommen wird,
|
|
% muss kontrolliert werden, ob die aufgefundene Definition noch den
|
|
% Erwartungen entspricht. Alles andere wäre ein deutlicher Hinweis, dass
|
|
% eventuell in \KOMAScript{} ebenfalls eine Anpassung vorzunehmen wäre.
|
|
% Da es offenbar Leute gibt, die bei der Umdefinierung von \cs{section}
|
|
% etc. mit Hilfe von \cs{@startsection} Leerzeichen zwischen die Argumente
|
|
% packen und gleichzeitig \textsf{amsgen} verwenden, sorgen wir hier dafür,
|
|
% dass dann trotzdem noch die Warnungen funktionieren und nebenbei der Code
|
|
% mit etwas Glück sogar ebenfalls. Dazu ist es notwendig, dass die Version von
|
|
% \cs{@startsection} gespeichert wird, die \cs{kernel@ifstar} verwendet.
|
|
% \begin{macro}{\startsection@sectionname}
|
|
% \changes{v3.26}{2018/05/14}{Neue Anweisung für Paketautoren}%^^A
|
|
% \begin{macro}{\startsection@secnumdepth}
|
|
% \changes{v3.26}{2018/05/14}{Neue Anweisung für Paketautoren}%^^A
|
|
% \begin{macro}{\startsection@indent}
|
|
% \changes{v3.26}{2018/05/14}{Neue Anweisung für Paketautoren}%^^A
|
|
% \begin{macro}{\startsection@beforeskip}
|
|
% \changes{v3.26}{2018/05/14}{Neue Anweisung für Paketautoren}%^^A
|
|
% \begin{macro}{\startsection@afterskip}
|
|
% \changes{v3.26}{2018/05/14}{Neue Anweisung für Paketautoren}%^^A
|
|
% \begin{macro}{\if@startsection@runin}
|
|
% \changes{v3.26}{2018/05/14}{Neue Anweisung für Paketautoren}%^^A
|
|
% \begin{macro}{\startsection@afterindent}
|
|
% \changes{v3.26}{2018/09/18}{Neue Anweisung für Paketautoren}%^^A
|
|
% Ab dem Zeitpunkt des Aufrufs des Do-Hooks
|
|
% \texttt{heading/postinit} sind die Makros
|
|
% \cs{startsection@sectionname}, \cs{startsection@secnumdepth},
|
|
% \cs{startsection@indent}, \cs{startsection@beforeskip},
|
|
% \cs{if@startsection@indentafter}, \cs{startsection@afterskip},
|
|
% \cs{if@startsection@runin} und \cs{startsection@afterindent} gültig. Die
|
|
% \cs{\dots indent}- und \cs{\dots skip}-Makros sind dabei skips (oder
|
|
% \cs{glueexpr}) und somit wie Längen verwendbar. Bei den beiden \cs{\dots
|
|
% skip}-Makros handelt es sich bereits um effektive Abstände, es wurden also
|
|
% etwaige Fallunterscheidungen bezüglich des Vorzeichens des Arguments für
|
|
% \cs{scr@startsection} bereits aufgelöst. Das \cs{if\dots}-Makro ist entweder
|
|
% \cs{iftrue} oder \cs{iffalse}. Ein \cs{if@startsection@afterindent}
|
|
% existiert nicht, weil \cs{if@afterindent} zu dem Zeitpunkt bereits gültig
|
|
% ist. Außerhalb von \cs{scr@startsection} ist die Verwendung dieser Macros
|
|
% unzulässig, bzw. das Ergebnis unspezifiziert. Ebenso sind diese Macros als
|
|
% \emph{read-only} zu betrachten!
|
|
%^^A TODO: Der ganze Test hier ist eigentlich Unfug. Beim Laden
|
|
%^^A der Klasse sollte die Kern-Anweisung noch unverändert sein, da Pakete
|
|
%^^A normalerweise erst danach zum Zuge kommen und sie umdefinieren
|
|
%^^A können. Also müsste eigentlich \cs{AtBeginDocument} getestet werden. Ich
|
|
%^^A werde mir das gelegentlich noch einmal vornehmen müssen.
|
|
% \begin{macrocode}
|
|
%<*body>
|
|
\newcommand*{\scr@saved@startsection}[6]{%
|
|
\if@noskipsec \leavevmode \fi
|
|
\par
|
|
\@tempskipa #4\relax
|
|
\@afterindenttrue
|
|
\ifdim \@tempskipa <\z@
|
|
\@tempskipa -\@tempskipa \@afterindentfalse
|
|
\fi
|
|
\if@nobreak
|
|
\everypar{}%
|
|
\else
|
|
\addpenalty\@secpenalty\addvspace\@tempskipa
|
|
\fi
|
|
\kernel@ifstar
|
|
{\@ssect{#3}{#4}{#5}{#6}}%
|
|
{\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}%
|
|
}
|
|
\def\reserved@a#1#2#3#4#5#6{%
|
|
\if@noskipsec \leavevmode \fi
|
|
\par
|
|
\@tempskipa #4\relax
|
|
\@afterindenttrue
|
|
\ifdim \@tempskipa <\z@
|
|
\@tempskipa -\@tempskipa \@afterindentfalse
|
|
\fi
|
|
\if@nobreak
|
|
\everypar{}%
|
|
\else
|
|
\addpenalty\@secpenalty\addvspace\@tempskipa
|
|
\fi
|
|
\@ifstar
|
|
{\@ssect{#3}{#4}{#5}{#6}}%
|
|
{\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}%
|
|
}
|
|
\ifcase \ifx\@startsection\scr@saved@startsection 0
|
|
\else
|
|
\ifx\@startsection\reserved@a 0
|
|
\else 1
|
|
\fi
|
|
\fi
|
|
\newcommand*{\scr@startsection}[6]{%
|
|
\ExecuteDoHook{heading/preinit/#1}%
|
|
\if@noskipsec \leavevmode \fi
|
|
\par
|
|
\@tempskipa \glueexpr #4\relax
|
|
\@ifundefined{scr@#1@afterindent}{%
|
|
\def\startsection@afterindent##1##2##3{##3}%
|
|
}{%
|
|
\expandafter\let\expandafter\startsection@afterindent
|
|
\csname scr@#1@afterindent\endcsname
|
|
}%
|
|
\startsection@afterindent{\@afterindenttrue}{\@afterindentfalse}{%
|
|
\@afterindenttrue
|
|
\ifdim \@tempskipa <\z@
|
|
\@tempskipa -\@tempskipa \@afterindentfalse
|
|
\fi
|
|
}%
|
|
\def\startsection@sectionname{#1}%
|
|
\def\startsection@secnumdepth{\numexpr #2\relax}%
|
|
\def\startsection@indent{\glueexpr #3\relax}%
|
|
\let\startsection@beforeskip\@tempskipa
|
|
\@ifundefined{scr@#1@runin}{%
|
|
\def\scr@sect@runin##1##2##3{##3}%
|
|
}{%
|
|
\expandafter\let\expandafter\scr@sect@runin
|
|
\csname scr@#1@runin\endcsname
|
|
}%
|
|
\scr@sect@runin{%
|
|
\def\startsection@afterskip{\glueexpr #3\relax}%
|
|
\expandafter\let\csname if@startsection@runin\expandafter\endcsname
|
|
\csname iftrue\endcsname
|
|
}{%
|
|
\def\startsection@afterskip{\glueexpr #3\relax}%
|
|
\expandafter\let\csname if@startsection@runin\expandafter\endcsname
|
|
\csname iffalse\endcsname
|
|
}{%
|
|
\ifdim \glueexpr #5\relax <\z@
|
|
\def\startsection@afterskip{\glueexpr (#3)*\m@ne\relax}%
|
|
\expandafter\let\csname if@startsection@runin\expandafter\endcsname
|
|
\csname iftrue\endcsname
|
|
\else
|
|
\def\startsection@afterskip{\glueexpr #3\relax}%
|
|
\expandafter\let\csname if@startsection@runin\expandafter\endcsname
|
|
\csname iffalse\endcsname
|
|
\fi
|
|
}%
|
|
\ExecuteDoHook{heading/postinit/#1}%
|
|
\if@nobreak
|
|
\everypar{}%
|
|
\else
|
|
\addpenalty\@secpenalty\addvspace\@tempskipa
|
|
\fi
|
|
\kernel@ifstar {%
|
|
\ExecuteDoHook{heading/branch/star/#1}%
|
|
\def\scr@s@ct@@nn@m@{#1}%
|
|
\@ssect{\glueexpr #3\relax}{\glueexpr #4\relax}{\glueexpr #5\relax}{#6}%
|
|
}{%
|
|
\ExecuteDoHook{heading/branch/nostar/#1}%
|
|
\scr@section@dblarg{%
|
|
\@sect{#1}{\numexpr #2\relax}{\glueexpr #3\relax}{\glueexpr #4\relax}%
|
|
{\glueexpr #5\relax}{#6}%
|
|
}%
|
|
}%
|
|
}
|
|
\else
|
|
\ClassWarningNoLine{\KOMAClassName}{`\string\@startsection' has been
|
|
changed.\MessageBreak
|
|
\KOMAClassName\space needs it's own definition of
|
|
`\string\@startsection'\MessageBreak
|
|
to provide extended features for the optional argument\MessageBreak
|
|
of `\string\section' etc.\MessageBreak
|
|
Generally it defines `\string\@startsection' completely new\MessageBreak
|
|
to achieve this. Because of the unexpected definition\MessageBreak
|
|
an alternative approach will be used.\MessageBreak
|
|
If this fails and if there isn't a new release of\MessageBreak
|
|
KOMA-Script that fixes the problem, please\MessageBreak
|
|
send a report to the KOMA-Script author.\MessageBreak
|
|
Note, that this alternative approach does not\MessageBreak
|
|
execute the elements of do-hooks:\MessageBreak
|
|
\space\space- `heading/postinit',\MessageBreak
|
|
\space\space- `heading/branch/star',\MessageBreak
|
|
\space\space- `heading/branch/nostar',\MessageBreak
|
|
and does always use `runin=bysign' and\MessageBreak
|
|
`afterindent=bysign'%
|
|
}%
|
|
\let\scr@saved@startsection\@startsection
|
|
\newcommand*{\scr@startsection}[6]{%
|
|
\ExecuteDoHook{heading/preinit/#1}%
|
|
\kernel@ifstar {%
|
|
\scr@saved@startsection{#1}{\numexpr #2\relax}{\glueexpr #3\relax}%
|
|
{\glueexpr #4\relax}{\glueexpr #5\relax}{#6}*%
|
|
}{%
|
|
\scr@section@dblarg{%
|
|
\scr@saved@startsection{#1}{\numexpr #2\relax}{\glueexpr #3\relax}%
|
|
{\glueexpr #4\relax}{\glueexpr #5\relax}{#6}}%
|
|
}%
|
|
}
|
|
\fi
|
|
% \end{macrocode}
|
|
% \begin{macro}{\scr@sect@runin}
|
|
% \changes{v3.26}{2018/09/18}{neu (intern)}
|
|
% Diese Hilfsanweisung nimmt die Fallunterscheidung vor, ob eine Spitzmarke
|
|
% oder eine freistehende Überschrift oder abhängig vom Vorzeichen des
|
|
% Abstandes danach eine Spitzmarke oder eine freistehende Überschrift gesetzt
|
|
% werden soll. Die Voreinstellung ist sicherheitshalber letzteres. Diese
|
|
% Voreinstellung wird auch bei jedem Aufruf von \cs{@xsect} erneut
|
|
% erzwungen. Auch in \cs{scr@startsection} wird die Anweisung angepasst.
|
|
% \begin{macrocode}
|
|
\newcommand*{\scr@sect@runin}[3]{#3}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@sect@runin
|
|
% \begin{macro}{\scr@startsection@ulm@error}
|
|
% \changes{v3.26}{2018/05/14}{Neue interne Anweisung}
|
|
% Ich bin mir bewusst, dass die Fehlerausgabe, die hier definiert wird,
|
|
% vermutlich nie aufgerufen wird, da ein Paketautor hierzu eines der Makros
|
|
% bereits vor dem ersten \cs{scr@startsection}-Befehl verwenden
|
|
% müsste. Trotzdem verwende ich es quasi zwecks Initialisierung.
|
|
% \begin{macrocode}
|
|
\newcommand*{\scr@startsection@ulm@error}[1]{%
|
|
\ClassError{\KOMAClassName}{%
|
|
\string#1 undefined outside of \string\scr@startsection
|
|
}{%
|
|
A KOMA-Script macro for package authors have been used outside
|
|
the\MessageBreak
|
|
specified definition scope.\MessageBreak
|
|
See `scrkernel-sections.dtx' for more information.%
|
|
}%
|
|
}
|
|
\newcommand*\startsection@sectionname{%
|
|
\scr@startsection@ulm@error\startsection@sectionname}
|
|
\newcommand*\startsection@secnumdepth{%
|
|
\scr@startsection@ulm@error\startsection@secnumdepth}
|
|
\newcommand*\startsection@indent{%
|
|
\scr@startsection@ulm@error\startsection@indent}
|
|
\newcommand*\startsection@beforeskip{%
|
|
\scr@startsection@ulm@error\startsection@beforeskip}
|
|
\newcommand*\startsection@afterskip{%
|
|
\scr@startsection@ulm@error\startsection@afterskip}
|
|
\newcommand*{\if@startsection@runin}{%
|
|
\scr@startsection@ulm@error\if@startsection@runin}
|
|
\newif\if@startsection@runin
|
|
\newcommand*\startsection@afterindent{%
|
|
\scr@startsection@ulm@error\startsection@afterindent}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@startsection@ulm@error
|
|
% \end{macro}%^^A \scr@startsection@afterindent
|
|
% \end{macro}%^^A \if@startsection@runin
|
|
% \end{macro}%^^A \startsection@afterskip
|
|
% \end{macro}%^^A \startsection@beforeskip
|
|
% \end{macro}%^^A \startsection@indent
|
|
% \end{macro}%^^A \startsection@secnumdepth
|
|
% \end{macro}%^^A \startsection@sectionname
|
|
% \begin{macro}{\At@startsection}
|
|
% \changes{v3.14}{2014/09/11}{Neue Anweisung für Paketautoren}%^^A
|
|
% \changes{v3.27}{2019/02/04}{Umgestellt auf \cs{AddtoDoHook}}%^^A
|
|
% \changes{v3.27}{2019/02/04}{deprecated}%^^A
|
|
% Mit Hilfe dieser Anweisung kann Code in die Ausführung von \KOMAScript's
|
|
% eigenem \cs{scr@startsection} an der Stelle eingefügt werden, an der
|
|
% \cs{if@afterindent} und \cs{@tempskipa} bereits korrekt eingestellt sind,
|
|
% aber noch bevor \emph{pentaly} und Abstand gesetzt wurden bzw. \cs{everypar}
|
|
% gelöscht wurde.
|
|
% \begin{macrocode}
|
|
\newcommand*{\At@startsection}[1]{%
|
|
\ClassInfo{\KOMAClassName}{%
|
|
Usage of deprecated command `\string\At@startsection'
|
|
mapped to\MessageBreak
|
|
`\string\AddtoDoHook{heading/postinit}
|
|
{...\string\@gobble}'%
|
|
}%
|
|
\AddtoDoHook{heading/postinit}{\scr@doonlyifstyleofargis{#1}{section}}%
|
|
}
|
|
% \end{macrocode}
|
|
% \begin{macro}{\scr@doonlyifstyleofargis}
|
|
% \changes{v3.27}{2019/02/04}{neu (intern)}
|
|
% Hilfsmakro für \cs{At@startsection}, \cs{Before@sect} und \cs{Before@@sect}.
|
|
% \begin{macrocode}
|
|
\newcommand*{\scr@doonlyifstyleofargis}[3]{%
|
|
\IfSectionCommandStyleIs{#3}{#2}{#1}{}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@doonlyifstyleofargis
|
|
% \end{macro}%^^A \At@startsection
|
|
% \begin{macro}{\Before@ssect}
|
|
% \changes{v3.14}{2014/09/11}{Neue Anweisung für Paketautoren}%^^A
|
|
% \changes{v3.27}{2019/02/04}{Umgestellt auf \cs{AddtoDoHook}}%^^A
|
|
% \changes{v3.27}{2019/02/04}{deprecated}%^^A
|
|
% Mit Hilfe dieser Anweisung kann Code in die Ausführung von \KOMAScript's
|
|
% eigenem \cs{scr@startsection} unmittelbar vor dem Aufruf von \cs{@ssect}
|
|
% eingefügt werden.
|
|
% \begin{macrocode}
|
|
\newcommand*{\Before@ssect}[1]{%
|
|
\ClassInfo{\KOMAClassName}{%
|
|
Usage of deprecated command `\string\Before@ssect'
|
|
mapped to\MessageBreak
|
|
`\string\AddtoDoHook{heading/branch/star}%
|
|
{...\string\@gobble}'%
|
|
}%
|
|
\AddtoDoHook{heading/branch/star}{\scr@onlyifstyleofargis{#1}{section}}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \Before@ssect
|
|
% \begin{macro}{\Before@sect}
|
|
% \changes{v3.14}{2014/09/11}{Neue Anweisung für Paketautoren}%^^A
|
|
% \changes{v3.27}{2019/02/04}{Umgestellt auf \cs{AddtoDoHook}}%^^A
|
|
% \changes{v3.27}{2019/02/04}{deprecated}%^^A
|
|
% Mit Hilfe dieser Anweisung kann Code in die Ausführung von \KOMAScript's
|
|
% eigenem \cs{scr@startsection} unmittelbar vor dem Aufruf von \cs{@sect}
|
|
% eingefügt werden.
|
|
% \begin{macrocode}
|
|
\newcommand*{\Before@sect}[1]{%
|
|
\ClassInfo{\KOMAClassName}{%
|
|
Usage of deprecated command `\string\Before@sect'
|
|
mapped to\MessageBreak
|
|
`\string\AddtoDoHook{heading/branch/nostar}%
|
|
{...\string\@gobble}'%
|
|
}%
|
|
\AddtoDoHook{heading/branch/nostar}{\scr@onlyifstyleofargis{#1}{section}}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \Before@sect
|
|
% \begin{macro}{\scr@section@dblarg}
|
|
% \changes{v3.13a}{2014/09/11}{Neue interne Anweisung}%^^A
|
|
% \begin{macro}{\scr@section@xdblarg}
|
|
% \changes{v3.13a}{2014/09/11}{Neue interne Anweisung}%^^A
|
|
% \begin{macrocode}
|
|
\newcommand{\scr@section@dblarg}[1]{%
|
|
\kernel@ifnextchar[%]
|
|
{#1}%
|
|
{\scr@section@xdblarg{#1}}%
|
|
}
|
|
\newcommand{\scr@section@xdblarg}[2]{%
|
|
\begingroup
|
|
\edef\reserved@a{%
|
|
\unexpanded{\endgroup\let\scr@osectarg\z@#1[{#2}]{#2}\def\scr@osectarg}%
|
|
{\scr@osectarg}}%
|
|
\reserved@a
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@section@xdblarg
|
|
% \end{macro}%^^A \scr@section@dblarg
|
|
% \end{macro}%^^A \scr@saved@startsection
|
|
% \end{macro}%^^A \scr@startsection
|
|
% \begin{macrocode}
|
|
\renewcommand*{\@startsection}{%
|
|
\ifnum \scr@osectarg=\z@
|
|
\expandafter\scr@saved@startsection
|
|
\else
|
|
\expandafter\scr@startsection
|
|
\fi
|
|
}
|
|
%</body>
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \@startsection
|
|
%
|
|
% \begin{macro}{\UseNumberUsageError}
|
|
% \changes{v3.27}{2019/02/02}{Neu}
|
|
% \begin{macro}{\IfUseNumber}
|
|
% \changes{v3.27}{2019/02/02}{Explizite Fehlermeldung bei Verwendung außerhalb
|
|
% von Überschriften}%^^A
|
|
% Diese Anweisung ist nur innerhalb von Überschriften definiert. Wird sie
|
|
% außerhalb verwendet, so gibt sie einen entsprechenden Fehler aus.
|
|
% \begin{macrocode}
|
|
%<*body>
|
|
\newcommand*{\UseNumberUsageError}[2]{%
|
|
\ClassError{\KOMAClassName}{%
|
|
\string\IfUseNumber\space not allowed%
|
|
}{%
|
|
You cannot use \string\IfUseNumber\space outside a heading.\MessageBreak
|
|
If you'd continue, I'll ignore both arguments, because I do not
|
|
know\MessageBreak
|
|
whether to use the first or the second argument.%
|
|
}%
|
|
}
|
|
\newcommand*{\IfUseNumber}[2]{}%
|
|
\let\IfUseNumber\UseNumberUsageError
|
|
%</body>
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\SecDef}
|
|
% \changes{v3.13a}{2014/09/11}{neue Anweisung}%^^A
|
|
% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
|
|
% ersetzt}%^^A
|
|
% \begin{macro}{\secdef}
|
|
% \changes{v3.13a}{2014/09/11}{Vollständige Neudefinition zur Optimierung
|
|
% der Erweiterung für das optionale Argument}%^^A
|
|
% \begin{macrocode}
|
|
%<*body>
|
|
\newcommand*{\SecDef}[2]{\kernel@ifstar{#2}{\scr@section@dblarg{#1}}}
|
|
\CheckCommand*{\secdef}[2]{\@ifstar{#2}{\@dblarg{#1}}}
|
|
\let\secdef\SecDef
|
|
%</body>
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \secdef
|
|
% \end{macro}%^^A \SecDef
|
|
% \begin{macro}{\scr@sect}
|
|
% \changes{v3.10}{2011/08/30}{entfällt}%^^A
|
|
% \end{macro}%^^A \scr@sect
|
|
% \begin{macro}{\@sect}
|
|
% \changes{v3.10}{2011/08/30}{Vollständige Neudefinition zur Realisierung
|
|
% der Erweiterung für das optionale Argument}%^^A
|
|
% \changes{v3.10}{2011/08/30}{Verwendung von
|
|
% \cs{csname}\texttt{add\#1tocentry}\cs{endcsname}
|
|
% bzw. \cs{addtocentrydefault}}%^^A
|
|
% \changes{v3.18}{2015/05/20}{definiert \cs{IfUsePrefixLine} intern}%^^A
|
|
% \changes{v3.18}{2015/05/22}{Verwendung von \cs{numexpr} für Argument 2}%^^A
|
|
% \changes{v3.18}{2015/05/22}{Verwendung von \cs{gluexpr} für Argument
|
|
% 3--5}%^^A
|
|
% \changes{v3.19}{2015/07/17}{Verwendung von \cs{sectionlinesformat} und
|
|
% \cs{sectioncatchphraseformat}}%^^A
|
|
% \changes{v3.27}{2019/07/08}{neue Option \texttt{nonumber}}%^^A
|
|
% \changes{v3.30}{2020/02/25}{unerwünschtes Leerzeichen am Ende der Warnung
|
|
% entfernt}%^^A
|
|
% \begin{macro}{\scr@latex@sect}
|
|
% \changes{v3.27}{2019/07/24}{Neu (intern für \textsf{scrhack})}%^^A
|
|
% Damit auch alle mit \cs{@startsection} definierten Gliederungsebenen
|
|
% bei der Entscheidung berücksichtigt werden, muss ein internes Makro
|
|
% des \LaTeX-Kerns erweitert werden. Für die Ebenen \cs{part} und
|
|
% \cs{chapter} wird der Test direkt in der Definition der Befehle
|
|
% erledigt.
|
|
% \begin{macrocode}
|
|
%<*body>
|
|
\def\scr@latex@sect#1#2#3#4#5#6[#7]#8{%
|
|
\ifnum #2>\c@secnumdepth
|
|
\let\@svsec\@empty
|
|
\else
|
|
\refstepcounter{#1}%
|
|
\protected@edef\@svsec{\@seccntformat{#1}\relax}%
|
|
\fi
|
|
\@tempskipa #5\relax
|
|
\ifdim \@tempskipa>\z@
|
|
\begingroup
|
|
#6{%
|
|
\@hangfrom{\hskip #3\relax\@svsec}%
|
|
\interlinepenalty \@M #8\@@par}%
|
|
\endgroup
|
|
\csname #1mark\endcsname{#7}%
|
|
\addcontentsline{toc}{#1}{%
|
|
\ifnum #2>\c@secnumdepth \else
|
|
\protect\numberline{\csname the#1\endcsname}%
|
|
\fi
|
|
#7}%
|
|
\else
|
|
\def\@svsechd{%
|
|
#6{\hskip #3\relax
|
|
\@svsec #8}%
|
|
\csname #1mark\endcsname{#7}%
|
|
\addcontentsline{toc}{#1}{%
|
|
\ifnum #2>\c@secnumdepth \else
|
|
\protect\numberline{\csname the#1\endcsname}%
|
|
\fi
|
|
#7}}%
|
|
\fi
|
|
\@xsect{#5}}
|
|
\ifx\@sect\scr@latex@sect\else
|
|
\let\scr@latex@sect\@sect
|
|
\ClassWarning{\KOMAClassName}{%
|
|
Unexpected definition of \string\@sect!\MessageBreak
|
|
Please send information about this to\MessageBreak
|
|
the KOMA-Script maintainer!\MessageBreak
|
|
Maybe LaTeX will be broken by the redefinition\MessageBreak
|
|
of \string\@sect}%
|
|
\fi
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@latex@sect
|
|
% \begin{macrocode}
|
|
%<trace>\ClassInfo{\KOMAClassName}{redefining LaTeX kernel macro \string\@sect}
|
|
\def\@sect#1#2#3#4#5#6[#7]#8{%
|
|
\ifnum \scr@osectarg=\z@
|
|
\@scr@tempswafalse
|
|
\else
|
|
\scr@istest#7=\@nil
|
|
\fi
|
|
\@currentusenumbertrue
|
|
\if@scr@tempswa
|
|
\setkeys{KOMAarg.section}{tocentry={#8},head={#8},reference={#8},#7}%
|
|
\else
|
|
\ifcase \scr@osectarg\relax
|
|
\setkeys{KOMAarg.section}{tocentry={#7},head={#7},reference={#7}}%
|
|
\or
|
|
\setkeys{KOMAarg.section}{tocentry={#8},head={#7},reference={#8}}%
|
|
\or
|
|
\setkeys{KOMAarg.section}{tocentry={#7},head={#8},reference={#7}}%
|
|
\or
|
|
\setkeys{KOMAarg.section}{tocentry={#7},head={#7},reference={#7}}%
|
|
\fi
|
|
\fi
|
|
% \end{macrocode}
|
|
% \changes{v3.23}{2017/02/04}{support for \textsf{minitoc}}%^^A
|
|
% \changes{v3.23}{2017/03/24}{usage of \cs{ext@figure} and \cs{ext@table}
|
|
% instead of \texttt{lof} and \texttt{lot}}%^^A
|
|
% Add the \texttt{xsect} entries to \texttt{lof} and \texttt{lot}. Note, that
|
|
% the original \cs{starsection} tests of \textsf{minitoc} has a bug and so
|
|
% does not work. And the original code of \textsf{minitoc} has hard coded
|
|
% \texttt{lot} and \texttt{lof} instead of \cs{ext@figure} and
|
|
% \cs{ext@table}. This is a fixed one:
|
|
% \begin{macrocode}
|
|
\scr@ifundefinedorrelax{scr@mt@saved@sect}{}{%
|
|
\expandafter\ifx\csname #1\endcsname\section
|
|
\addcontentsline{\ext@figure}{xsect}{\@currenttocentry}%
|
|
\addcontentsline{\ext@table}{xsect}{\@currenttocentry}%
|
|
\fi
|
|
\expandafter\ifx\csname #1\endcsname\starsection\relax
|
|
\addcontentsline{\ext@figure}{xsect}{\@currenttocentry}%
|
|
\addcontentsline{\ext@table}{xsect}{\@currenttocentry}%
|
|
\fi
|
|
}%
|
|
\let\IfUsePrefixLine\@secondoftwo
|
|
\ifcase
|
|
\if@currentusenumber
|
|
\ifnum \numexpr #2\relax>\c@secnumdepth \z@\else \@ne\fi
|
|
\else
|
|
\z@
|
|
\fi
|
|
\let\@svsec\@empty
|
|
% \end{macrocode}
|
|
% \selectlanguage{english}%
|
|
% \changes{v3.31}{2020/06/02}{execute counter reset list}%^^A
|
|
% Even for not numbered sections, the reset list für the section counter has
|
|
% to be executed.
|
|
% \begin{macrocode}
|
|
\expandafter\ifnum\scr@v@is@lt{3.31}\relax\else
|
|
\begingroup
|
|
\let\@elt\@stpelt
|
|
\csname cl@#1\endcsname
|
|
\endgroup
|
|
\fi
|
|
% \end{macrocode}
|
|
% \changes{v3.31}{2020/06/02}{\cs{hy@insteadofrefstepcounter} added}%^^A
|
|
% At this point we have to make sure, that the \textsf{hyperref} code for not
|
|
% increasing a counter is executed.
|
|
% \selectlanguage{ngerman}%
|
|
% \begin{macrocode}
|
|
\hy@insteadofrefstepcounter{#1}%
|
|
\else
|
|
\refstepcounter{#1}%
|
|
\expandafter\@maybeautodot\csname the#1\endcsname
|
|
\protected@edef\@svsec{\@seccntformat{#1}\relax}%
|
|
\fi
|
|
% \end{macrocode}
|
|
% \changes{v3.26}{2018/09/18}{\cs{scr@sect@runin} beachten}%^^A
|
|
% Falls \cs{scr@sect@runin} nicht definiert ist, wird es jetzt höchste Zeit
|
|
% dafür. Und natürlich nutzen wir es dann für die Entscheidung Spitzmarke oder
|
|
% nicht.
|
|
% \changes{v3.27}{2019/02/02}{\cs{IfUseNumber} lokal definiert}%^^A
|
|
% \begin{macrocode}
|
|
\ifdim
|
|
\scr@sect@runin{\z@}{\p@}{\glueexpr #5\relax}>\z@
|
|
\begingroup
|
|
\ifx\@svsec\@empty
|
|
\let\IfUseNumber\@secondoftwo
|
|
\else
|
|
\let\IfUseNumber\@firstoftwo
|
|
\fi
|
|
% \end{macrocode}
|
|
% \changes{v3.21}{2016/06/12}{fehlendes \cs{nobreak} ergänzt}%^^A
|
|
% Das Farbänderungen im Schriftargument erlaubt sein sollen und diese aktuelle
|
|
% \cs{penalty}-Werte wieder aufheben, verbiete ich hier einen Umbruch nach
|
|
% der Fontänderung.
|
|
% \changes{v3.27}{2019/02/02}{\cs{scr@do@at} hinzugefügt}%^^A
|
|
% \begin{macrocode}
|
|
\ExecuteDoHook{heading/begingroup/#1}%
|
|
#6{\nobreak\interlinepenalty \@M
|
|
\sectionlinesformat{#1}{\glueexpr #3\relax}\@svsec{#8}\@@par}%
|
|
\ExecuteDoHook{heading/endgroup/#1}%
|
|
\endgroup
|
|
%<*trace>
|
|
\ClassInfo{\KOMAClassName}{%
|
|
head=`\detokenize\expandafter{\@currentheadentry}'\MessageBreak
|
|
tocentry=`\detokenize\expandafter{\@currenttocentry}'\MessageBreak
|
|
reference=`\detokenize\expandafter{\@currentlabelname}'}%
|
|
%</trace>
|
|
\expandafter\csname #1mark\expandafter\endcsname\expandafter{\@currentheadentry}%
|
|
\ifx\@currenttocentry\@empty\else
|
|
\scr@ifundefinedorrelax{add#1tocentry}{%
|
|
\expandafter\gdef\csname add#1tocentry\endcsname##1##2{%
|
|
\addtocentrydefault{#1}{##1}{##2}%
|
|
}%
|
|
}{}%
|
|
\ifcase
|
|
\if@currentusenumber
|
|
\ifnum \numexpr #2\relax>\c@secnumdepth \z@\else \@ne\fi
|
|
\else
|
|
\z@
|
|
\fi
|
|
\csname add#1tocentry\endcsname{}{\@currenttocentry}%
|
|
\else
|
|
% \end{macrocode}
|
|
% \selectlanguage{english}%
|
|
% \changes{v3.31}{2020/06/06}{use \cs{\dots tocformat}}%
|
|
%^^ATODO: move \cs{autodot} to the definition of \cs{\dots tocformat}
|
|
% \selectlanguage{ngerman}%
|
|
% \begin{macrocode}
|
|
\@ifundefined{#1tocformat}{%
|
|
\expandafter\gdef\csname #1tocformat\endcsname
|
|
{\csname the#1\endcsname}%
|
|
}{}%
|
|
\csname add#1tocentry\endcsname{\csname #1tocformat\endcsname}{%
|
|
\@currenttocentry}%
|
|
\fi
|
|
\fi
|
|
\else
|
|
% \end{macrocode}
|
|
% \changes{v3.21}{2016/06/12}{fehlendes \cs{nobreak} ergänzt}%^^A
|
|
% \changes{v3.27}{2019/02/02}{\cs{ExecuteDoHook} eingefügt}%^^A
|
|
% Da Farbänderungen im Schriftargument erlaubt sein sollen und diese aktuelle
|
|
% \cs{penalty}-Werte wieder aufheben, verbiete ich hier einen Umbruch nach
|
|
% der Fontänderung.
|
|
% \begin{macrocode}
|
|
\def\@svsechd{%
|
|
\ifx\@svsec\@empty
|
|
\let\IfUseNumber\@secondoftwo
|
|
\else
|
|
\let\IfUseNumber\@firstoftwo
|
|
\fi
|
|
\ExecuteDoHook{heading/begingroup/#1}%
|
|
#6{\nobreak\sectioncatchphraseformat{#1}{\glueexpr #3\relax}\@svsec{#8}}%
|
|
%<*trace>
|
|
\ClassInfo{\KOMAClassName}{%
|
|
head=`\detokenize\expandafter{\@currentheadentry}'\MessageBreak
|
|
tocentry=`\detokenize\expandafter{\@currenttocentry}'\MessageBreak
|
|
reference=`\detokenize\expandafter{\@currentlabelname}'}%
|
|
%</trace>
|
|
\expandafter\csname #1mark\expandafter\endcsname
|
|
\expandafter{\@currentheadentry}%
|
|
\ifx\@currenttocentry\@empty\else
|
|
\scr@ifundefinedorrelax{add#1tocentry}{%
|
|
\expandafter\gdef\csname add#1tocentry\endcsname####1####2{%
|
|
\addtocentrydefault{#1}{####1}{####2}%
|
|
}%
|
|
}{}%
|
|
\ifcase
|
|
\if@currentusenumber
|
|
\ifnum \numexpr #2\relax>\c@secnumdepth \z@\else \@ne\fi
|
|
\else
|
|
\z@
|
|
\fi
|
|
\csname add#1tocentry\endcsname{}{\@currenttocentry}%
|
|
\else
|
|
% \end{macrocode}
|
|
% \selectlanguage{english}%
|
|
% \changes{v3.31}{2020/06/06}{use \cs{\dots tocformat}}%
|
|
%^^ATODO: move \cs{autodot} to the definition of \cs{\dots tocformat}
|
|
% \selectlanguage{ngerman}%
|
|
% \begin{macrocode}
|
|
\@ifundefined{#1tocformat}{%
|
|
\expandafter\gdef\csname #1tocformat\endcsname
|
|
{\csname the#1\endcsname}%
|
|
}{}%
|
|
\csname add#1tocentry\endcsname{\csname #1tocformat\endcsname}{%
|
|
\@currenttocentry}%
|
|
\fi
|
|
\fi
|
|
\ExecuteDoHook{heading/endgroup/#1}%
|
|
}%
|
|
\fi
|
|
\let\IfUsePrefixLine\scr@IfUsePrefixLineWarning
|
|
\@xsect{\glueexpr #5\relax}%
|
|
}
|
|
% \end{macrocode}
|
|
% \begin{macro}{\scr@ds@tocentry}
|
|
% \changes{v3.10}{2011/08/30}{neu (intern)}%^^A
|
|
% \begin{macro}{\@currenttocentry}
|
|
% \changes{v3.22}{2016/07/12}{\cs{scr@ds@tocentry} (semi-intern)
|
|
% umbenannt}%^^A
|
|
% \begin{macro}{\scr@ds@head}
|
|
% \changes{v3.10}{2011/08/30}{neu (intern)}%^^A
|
|
% \begin{macro}{\@currentheadentry}
|
|
% \changes{v3.22}{2016/07/12}{\cs{scr@ds@head} (semi-intern)
|
|
% umbenannt}%^^A
|
|
% \begin{macro}{\@currentlabelname}
|
|
% \changes{v3.22}{2016/07/12}{neu (semi-intern)}
|
|
% \begin{macro}{\if@scr@tempswa}
|
|
% \changes{v3.10}{2011/08/30}{neu (intern)}%^^A
|
|
% \begin{macro}{\if@currentusenumber}
|
|
% \changes{v3.27}{2019/07/08}{neu (semi-intern)}%^^A
|
|
% \begin{macro}{\scr@istest}
|
|
% \changes{v3.10}{2011/08/30}{neu (intern)}%^^A
|
|
% Für die Realisierung werden noch ein paar Key-Value-Definitionen und ein
|
|
% paar Hilfsmakros benötigt:
|
|
% \begin{macrocode}
|
|
\DefineFamily{KOMAarg}
|
|
\DefineFamilyMember[.section]{KOMAarg}
|
|
\providecommand*\@currenttocentry{}
|
|
\providecommand*\@currentheadentry{}
|
|
\providecommand*\@currentlabelname{}
|
|
\FamilyStringKey[.section]{KOMAarg}{tocentry}{\@currenttocentry}
|
|
\FamilyStringKey[.section]{KOMAarg}{head}{\@currentheadentry}
|
|
\DefineFamilyKey[.section]{KOMAarg}{reference}{%
|
|
\scr@ifundefinedorrelax{NR@gettitle}{%
|
|
\scr@ifundefinedorrelax{GetTitleString}{%
|
|
\def\@currentlabelname{#1}%
|
|
}{%
|
|
\GetTitleString{#1}%
|
|
\let\@currentlabelname\GetTitleStringResult
|
|
}%
|
|
}{%
|
|
\NR@gettitle{#1}%
|
|
}%
|
|
\scr@ifundefinedorrelax{TR@gettitle}{}{%
|
|
\expandafter\TR@gettitle\expandafter{\@currentlabelname}%
|
|
}%
|
|
\scr@ifundefinedorrelax{ztitlerefsetup}{}{%
|
|
\ztitlerefsetup{title=\@currentlabelname}%
|
|
}%
|
|
\FamilyKeyStateProcessed
|
|
}
|
|
\FamilyInverseBoolKey[.section]{KOMAarg}{nonumber}{@currentusenumber}
|
|
\newcommand*{\scr@istest}{}
|
|
\def\scr@istest#1=#2\@nil{%
|
|
\ifx\relax#2\relax\@scr@tempswafalse\else\@scr@tempswatrue\fi
|
|
}
|
|
\newif\if@scr@tempswa
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@istest
|
|
% \end{macro}%^^A \if@currentusenumber
|
|
% \end{macro}%^^A \if@scr@tempswa
|
|
% \end{macro}%^^A \@currentlabelname
|
|
% \end{macro}%^^A \@currentheadentry
|
|
% \end{macro}%^^A \scr@ds@head
|
|
% \end{macro}%^^A \@currenttocentry
|
|
% \end{macro}%^^A \scr@ds@tocentry
|
|
% \begin{macro}{\sectionlinesformat}
|
|
% \changes{v3.19}{2015/07/17}{neue Anweisung}%^^A
|
|
% Diese Anweisung definiert das Format der eigentlichen Überschriften im Stil
|
|
% \texttt{section}, wenn mit Überschriftenzeilen gearbeitet
|
|
% wird. Fonteinstellungen sind zu diesem Zeitpunkt bereits erfolgt. Die
|
|
% Argumente sind:
|
|
% \begin{description}
|
|
% \item[\meta{Ebene} --] der Name der Gliederungebene
|
|
% \item[\meta{Einzug} --] ein eventuell zu verwendender horizontaler
|
|
% Einzug.
|
|
% \item[\meta{Gliederungsnummer} --] die bereits fertig formatierte
|
|
% Gliederungsnummer oder leer, falls keine Gliederungsnummer auszugeben ist.
|
|
% \item[\meta{Text} --] der Text der Überschrift.
|
|
% \end{description}
|
|
% Der Anwender ist selbst verantwortlich, dass innerhalb der Überschrift kein
|
|
% Seitenumbruch erfolgen kann. Nach der Überschrift wird jedoch zwangsweise
|
|
% ein \cs{@@par} ausgeführt, so dass sichergestellt ist, dass mit einem
|
|
% internen Absatz abgeschlossen wird.
|
|
% \begin{macrocode}
|
|
\newcommand{\sectionlinesformat}[4]{%
|
|
\@hangfrom{\hskip #2#3}{#4}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \sectionlinesformat
|
|
% \begin{macro}{\sectioncatchphraseformat}
|
|
% \changes{v3.19}{2015/07/17}{neue Anweisung}%^^A
|
|
% Diese Anweisung definiert das Format der eigentlichen Überschriften im
|
|
% Stil \texttt{section}, wenn mit Spitzmarken gearbeitet
|
|
% wird. Fonteinstellungen sind zu diesem Zeitpunkt bereits erfolgt. Die
|
|
% Argumente sind:
|
|
% \begin{description}
|
|
% \item[\meta{Ebene} --] der Name der Gliederungebene
|
|
% \item[\meta{Einzug} --] ein eventuell zu verwendender horizontaler
|
|
% Einzug.
|
|
% \item[\meta{Gliederungsnummer} --] die bereits fertig formatierte
|
|
% Gliederungsnummer oder leer, falls keine Gliederungsnummer auszugeben
|
|
% ist.
|
|
% \item[\meta{Text} --] der Text der Überschrift.
|
|
% \end{description}
|
|
% Der Anwender ist selbst verantwortlich, dass innerhalb der Überschrift kein
|
|
% Seitenumbruch erfolgen kann.
|
|
% \begin{macrocode}
|
|
\newcommand{\sectioncatchphraseformat}[4]{%
|
|
\hskip #2#3#4%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \sectioncatchphraseformat
|
|
% \end{macro}%^^A \@sect
|
|
%
|
|
% \begin{macro}{\@ssect}
|
|
% \changes{v3.19}{2015/07/17}{Vollständige Neudefinition zur Realisierung
|
|
% der Erweiterung für die Formatieurng der Überschrift}%^^A
|
|
% \begin{macro}{\scr@latex@ssect}
|
|
% \changes{v3.27}{2019/07/24}{Neu (intern für \textsf{scrhack})}%^^A
|
|
% \changes{v3.30}{2020/02/25}{unerwünschtes Leerzeichen am Ende der Warnung
|
|
% entfernt}%^^A
|
|
% Das wird für Überschriften ohne Nummer verwendet. Im Prinzip machen wir hier
|
|
% dasselbe wie zuvor.
|
|
% \begin{macrocode}
|
|
\def\scr@latex@ssect#1#2#3#4#5{%
|
|
\@tempskipa #3\relax
|
|
\ifdim \@tempskipa>\z@
|
|
\begingroup
|
|
#4{%
|
|
\@hangfrom{\hskip #1}%
|
|
\interlinepenalty \@M #5\@@par}%
|
|
\endgroup
|
|
\else
|
|
\def\@svsechd{#4{\hskip #1\relax #5}}%
|
|
\fi
|
|
\@xsect{#3}}
|
|
\ifx\@ssect\scr@latex@ssect
|
|
\else
|
|
\let\scr@latex@ssect\@ssect
|
|
\ClassWarning{\KOMAClassName}{%
|
|
Unexpected definition of \string\@ssect!\MessageBreak
|
|
Please send information about this to\MessageBreak
|
|
the KOMA-Script maintainer!\MessageBreak
|
|
Maybe LaTeX will be broken by the redefinition\MessageBreak
|
|
of \string\@ssect}%
|
|
\fi
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@latex@ssect
|
|
% \begin{macrocode}
|
|
%<trace>\ClassInfo{\KOMAClassName}{redefining LaTeX kernel macro
|
|
%<trace> \string\@ssect}
|
|
\def\@ssect#1#2#3#4#5{%
|
|
\scr@ifundefinedorrelax{scr@s@ct@@nn@m@}{%
|
|
\ClassWarning{\KOMAClassName}{Incompatible usage of
|
|
\string\@ssect\space detected.\MessageBreak
|
|
You've used the KOMA-Script implementation of
|
|
\string\@ssect\MessageBreak
|
|
from within a non compatible caller, that does not\MessageBreak
|
|
\string\scr@s@ct@@nn@m@\space locally.\MessageBreak
|
|
This could result in several error messages}%
|
|
\def\scr@s@ct@@nn@m@{\string\scr@s@ct@@nn@m@}%
|
|
}{%
|
|
% \end{macrocode}
|
|
% \selectlanguage{english}%
|
|
% \changes{v3.31}{2020/06/02}{execute counter reset list}%^^A
|
|
% Even for not numbered sections, the reset list für the corresponding section
|
|
% counter has to be executed.
|
|
% \selectlanguage{ngerman}%
|
|
% \begin{macrocode}
|
|
\expandafter\ifnum\scr@v@is@lt{3.31}\relax\else
|
|
\begingroup
|
|
\let\@elt\@stpelt
|
|
\csname cl@\scr@s@ct@@nn@m@\endcsname
|
|
\endgroup
|
|
\fi
|
|
}%
|
|
% \end{macrocode}
|
|
% \changes{v3.26}{2018/09/18}{\cs{scr@sect@runin} beachten}%^^A
|
|
% Falls \cs{scr@sect@runin} nicht definiert ist, wird es jetzt höchste Zeit
|
|
% dafür. Und natürlich nutzen wir es dann für die Entscheidung Spitzmarke oder
|
|
% nicht.
|
|
% \changes{v3.27}{2019/02/02}{\cs{IfUseNumber} lokal definiert}%^^A
|
|
% \begin{macrocode}
|
|
\ifdim
|
|
\scr@sect@runin{\z@}{\p@}{\glueexpr #3\relax}>\z@
|
|
\begingroup
|
|
\let\IfUseNumber\@secondoftwo
|
|
% \end{macrocode}
|
|
% \changes{v3.21}{2016/06/12}{fehlendes \cs{nobreak} ergänzt}%^^A
|
|
% \changes{v3.27}{2019/02/02}{\cs{ExecuteDoHook} eingefügt}%^^A
|
|
% Das Farbänderungen im Schriftargument erlaubt sein sollen und diese aktuelle
|
|
% \cs{penalty}-Werte wieder aufheben, verbiete ich hier einen Umbruch nach
|
|
% der Fontänderung.
|
|
% \begin{macrocode}
|
|
\edef\reserved@a{%
|
|
\noexpand\ExecuteDoHook{heading/begingroup/\scr@s@ct@@nn@m@}%
|
|
}\reserved@a
|
|
#4{\nobreak\interlinepenalty \@M
|
|
\expandafter\sectionlinesformat\expandafter{\scr@s@ct@@nn@m@}%
|
|
{\glueexpr #1\relax}\@empty{#5}\@@par}%
|
|
\edef\reserved@a{%
|
|
\noexpand\ExecuteDoHook{heading/endgroup/\scr@s@ct@@nn@m@}%
|
|
}\reserved@a
|
|
\endgroup
|
|
\else
|
|
\edef\@svsechd{%
|
|
\unexpanded{\let\IfUseNumber\@secondoftwo}%
|
|
\noexpand\ExecuteDoHook{heading/begingroup/\scr@s@ct@@nn@m@}%
|
|
\unexpanded{#4}{%
|
|
% \end{macrocode}
|
|
% \changes{v3.21}{2016/06/12}{fehlendes \cs{nobreak} ergänzt}%^^A
|
|
% Das Farbänderungen im Schriftargument erlaubt sein sollen und diese aktuelle
|
|
% \cs{penalty}-Werte wieder aufheben, verbiete ich hier einen Umbruch nach
|
|
% der Fontänderung.
|
|
% \begin{macrocode}
|
|
\noexpand\nobreak
|
|
\noexpand\sectioncatchphraseformat{\scr@s@ct@@nn@m@}%
|
|
\unexpanded{{\glueexpr #1\relax}\@empty{#5}}%
|
|
}%
|
|
\noexpand\ExecuteDoHook{heading/endgroup/\scr@s@ct@@nn@m@}%
|
|
}%
|
|
\fi
|
|
\let\scr@s@ct@@nn@m@\relax
|
|
\@xsect{\glueexpr #3\relax}%
|
|
}
|
|
%</body>
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \@ssect
|
|
% \begin{macro}{\@xsect}
|
|
% \changes{v3.26}{2018/09/18}{wird umdefiniert}%^^A
|
|
% \changes{v3.30}{2020/02/25}{unerwünschtes Leerzeichen am Ende der Warnung
|
|
% entfernt}%^^A
|
|
% \begin{macro}{\scr@latex@xsect}
|
|
% \changes{v3.27}{2019/07/24}{Neu (intern für \textsf{scrhack})}%^^A
|
|
% Wir brauchen zum Einen in \cs{@xsect} einen Fallunterscheidung nach
|
|
% \cs{scr@sect@runin} und zum Anderen muss diese Fallunterscheidung am Ende
|
|
% wieder zurückgesetzt werden.
|
|
% \begin{macrocode}
|
|
%<*body>
|
|
\def\scr@latex@xsect#1{%
|
|
\@tempskipa #1\relax
|
|
\ifdim \@tempskipa>\z@
|
|
\par \nobreak
|
|
\vskip \@tempskipa
|
|
\@afterheading
|
|
\else
|
|
\@nobreakfalse
|
|
\global\@noskipsectrue
|
|
\everypar{%
|
|
\if@noskipsec
|
|
\global\@noskipsecfalse
|
|
{\setbox\z@\lastbox}%
|
|
\clubpenalty\@M
|
|
\begingroup \@svsechd \endgroup
|
|
\unskip
|
|
\@tempskipa #1\relax
|
|
\hskip -\@tempskipa
|
|
\else
|
|
\clubpenalty \@clubpenalty
|
|
\everypar{}%
|
|
\fi}%
|
|
\fi
|
|
\ignorespaces
|
|
}
|
|
\ifx\@xsect\scr@latex@xsect\else
|
|
\let\scr@latex@xsect\@xsect
|
|
\ClassWarning{\KOMAClassName}{%
|
|
Unexpected definition of \string\@xsect!\MessageBreak
|
|
Please send information about this to\MessageBreak
|
|
the KOMA-Script maintainer!\MessageBreak
|
|
Maybe LaTeX will be broken by the redefinition\MessageBreak
|
|
of \string\@xsect}%
|
|
\fi
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@latex@xsect
|
|
% \begin{macrocode}
|
|
%<trace>\ClassInfo{\KOMAClassName}{redefining LaTeX kernel macro
|
|
%<trace> \string\@xsect}
|
|
\def\@xsect#1{%
|
|
\@ifundefined{scr@sect@runin}{%
|
|
\def\scr@sect@runin##1##2##3{##3}%
|
|
}%
|
|
\@tempskipa #1\relax
|
|
\ifdim \scr@sect@runin{\z@}{\p@}{\@tempskipa}>\z@
|
|
\par \nobreak
|
|
\vskip \@tempskipa
|
|
\@afterheading
|
|
\else
|
|
\@nobreakfalse
|
|
\global\@noskipsectrue
|
|
\everypar{%
|
|
\if@noskipsec
|
|
\global\@noskipsecfalse
|
|
{\setbox\z@\lastbox}%
|
|
\clubpenalty\@M
|
|
\begingroup \@svsechd \endgroup
|
|
\unskip
|
|
\@tempskipa #1\relax
|
|
\ifdim \@tempskipa<\z@
|
|
\hskip -\@tempskipa
|
|
\else
|
|
\hskip \@tempskipa
|
|
\fi
|
|
\else
|
|
\clubpenalty \@clubpenalty
|
|
\everypar{}%
|
|
\fi}%
|
|
\fi
|
|
\def\scr@sect@runin##1##2##3{##3}%
|
|
\ignorespaces
|
|
}
|
|
%</body>
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \@xsect
|
|
%
|
|
% \begin{macro}{\IfUsePrefixLine}
|
|
% \changes{v3.18}{2015/06/09}{außerhalb von Gliederungsbefehlsstilen
|
|
% definiert}%^^A
|
|
% Eigentlich ist diese Anweisung nur innerhalb von Gliederungsbefehlen
|
|
% sinnvoll und wurde bis \KOMAScript{} 3.17c auch nur dort definiert. Dann gab
|
|
% es aber Leute, die \cs{chapterformat} missbraucht haben und gleich meldete
|
|
% sich jemand, die nicht verstehen konnte, warum die Anweisung dann einen
|
|
% Fehler produzieren muss. Wenn man den Code nicht verstanden hat, dann ist
|
|
% das nämlich so. Deshalb gebe ich jetzt eine Warnung aus, dass die Verwendung
|
|
% nicht unbedingt zu dem Resultat führt, das erwartet wird.
|
|
% \begin{macro}{\scr@IfUsePrefixLineWarning}
|
|
% \changes{v3.18}{2015/06/09}{neu (intern)}
|
|
% \begin{macrocode}
|
|
%<*body>
|
|
\newcommand*{\scr@IfUsePrefixLineWarning}[2]{%
|
|
\ClassWarning{\KOMAClassName}{%
|
|
Usage of \string\IfUsePrefixLine\space outside
|
|
section command\MessageBreak
|
|
style makes no sense, because the behaviour not only\MessageBreak
|
|
depends on class options but also on the run-time\MessageBreak
|
|
section command style.\MessageBreak
|
|
Neither the then-code nor the else-code will be\MessageBreak
|
|
executed.\MessageBreak
|
|
You may change this and avoid the warning by LOCALLY\MessageBreak
|
|
setting \string\IfUsePrefixLine\space to either
|
|
\string\@firstoftwo\space or\MessageBreak
|
|
\string\@secondoftwo\space before using it%
|
|
}%
|
|
}
|
|
\newcommand*{\IfUsePrefixLine}[2]{}
|
|
\let\IfUsePrefixLine\scr@IfUsePrefixLineWarning
|
|
%</body>
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@IfUsePrefixLineWarning
|
|
% \end{macro}%^^A \IfUsePrefixLine
|
|
%
|
|
%
|
|
% \begin{macro}{\raggedsection}
|
|
% \changes{v2.3h}{1996/01/20}{Überschriften werden \cs{raggedsection}%^^A
|
|
% gesetzt}%^^A
|
|
% \changes{v2.3h}{1996/01/20}{\cs{raggedsection} ist als \cs{raggedright}
|
|
% voreingestellt}%^^A
|
|
% Dieses Makro gibt an, wie die Überschriften formatiert
|
|
% werden. Voreingestellt ist linksbündig. Da dies nicht nur die Formatierung
|
|
% von \cs{section} (und darunter), sondern auch die Voreinstellung für die
|
|
% höheren Ebenen ist, wird die Definition hier vorgezogen.
|
|
% \begin{macrocode}
|
|
%<*body>
|
|
\newcommand*{\raggedsection}{}
|
|
\let\raggedsection\raggedright
|
|
%</body>
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \raggedsection
|
|
%
|
|
%
|
|
% \begin{macro}{\DeclareSectionCommand}
|
|
% \changes{v3.15}{2014/11/21}{neue Anweisung}%^^A
|
|
% \changes{v3.17}{2015/03/23}{Komplettumbau, um stilabhängige Optionen zu
|
|
% ermöglichen}%^^A
|
|
% \changes{v3.18}{2015/05/22}{\cs{scr@dsc@def@style@\dots @command}
|
|
% definiert alle Stil abhängigen Anweisungen}%^^A
|
|
% \changes{v3.20}{2015/10/03}{\cs{DeclareTOCStyleEntry}
|
|
% definiert die Verzeichnisstil abhängigen Anweisungen}%^^A
|
|
% Definition neuer oder Umdefinition existierender Gliederungsbefehle. Ebenso
|
|
% wird ein Verzeichniseintrag erzeugt, falls ein solcher noch nicht
|
|
% existiert. Die Deklaration geschieht über diverse Optionen:
|
|
%^^A (Achtung: Unbedingt daran denken, die Optionen in
|
|
%^^A \cs{ProvideSectionCommands} ebenfalls zu definieren!!!)
|
|
% \begin{macrocode}
|
|
%<*body>
|
|
\DefineFamily{KOMAarg}
|
|
\DefineFamilyMember[.dsc]{KOMAarg}
|
|
% \end{macrocode}
|
|
% \begin{macro}{\DeclareSectionCommandStyleOption}
|
|
% \changes{v3.17}{2015/03/23}{neue Anweisung}%^^A
|
|
% Definiert eine neue Option für einen Stil eines Gliederungsbefehls. Das
|
|
% erste Argument ist der Stil, das zweite der Name der Option, das dritte ist
|
|
% die Definition. Sollte innerhalb der Definition eine Familie benötigt
|
|
% werden, so ist \texttt{KOMAarg} zu verwenden.
|
|
% \begin{macrocode}
|
|
\newcommand*{\DeclareSectionCommandStyleOption}[3]{%
|
|
\AddToSectionCommandOptionsDoList{#2}%
|
|
\expandafter\g@addto@macro\csname scr@dsc@style@#1@options\endcsname{%
|
|
\DefineFamilyKey[.dsc]{KOMAarg}{#2}{#3}%
|
|
}%
|
|
}
|
|
% \end{macrocode}
|
|
% \begin{macro}{\DeclareSectionCommandDummyOption}
|
|
% \changes{v3.17}{2015/03/23}{neue Anweisung (intern)}%^^A
|
|
% \changes{v3.20}{2015/11/18}{wird nicht mehr benötigt}%^^A
|
|
% \end{macro}%^^A \DeclareSectionCommandDummyOption
|
|
% \begin{macro}{\AddToSectionCommandOptionsDoList}
|
|
% \changes{v3.20}{2015/11/18}{neu}
|
|
% \begin{macro}{\@AddToSectionCommandOptionsDoList}
|
|
% \changes{v3.20}{2015/11/18}{neu (intern)}
|
|
% \begin{macro}{\scr@dsc@doopts}
|
|
% \changes{v3.20}{2015/11/18}{neu (intern)}
|
|
% Registriert eine neue Gliederungsbefehlsoption, indem sie der internen Liste
|
|
% der Gliederungsbefehlsoptionen hinzugefügt wird.
|
|
% \begin{macrocode}
|
|
\newcommand*{\AddToSectionCommandOptionsDoList}[1]{%
|
|
\kernel@ifnextchar [%]
|
|
{\@AddToSectionCommandOptionListWithDefault{#1}}%
|
|
{\l@addto@macro\scr@dsc@doopts{\do{#1}}}%
|
|
}
|
|
\newcommand*{\@AddToSectionCommandOptionListWithDefault}{}
|
|
\def\@AddToSectionCommandOptionListWithDefault#1[#2]{%
|
|
\l@addto@macro\scr@dsc@doopts{\do[{#2}]{#1}}
|
|
}%
|
|
\newcommand*{\scr@dsc@doopts}{}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@dsc@dooptions
|
|
% \end{macro}%^^A \@AddToSectionCommandOptionsListWithDefault
|
|
% \end{macro}%^^A \AddToSectionCommandOptionsDoList
|
|
% \begin{macro}{\RelaxSectionCommandOptions}
|
|
% \changes{v3.20}{2015/11/18}{neu}
|
|
% Diese Option macht alle Gliederungsbefehlsoptionen ungültig.
|
|
% \begin{macrocode}
|
|
\newcommand*{\RelaxSectionCommandOptions}{%
|
|
\begingroup
|
|
\def\do@endgroup{\endgroup}%
|
|
\def\do{%
|
|
\kernel@ifnextchar [%]
|
|
{\@do}%
|
|
{\@do[]}%
|
|
}%
|
|
\def\@do[##1]##2{%
|
|
\l@addto@macro\do@endgroup{\RelaxFamilyKey[.dsc]{KOMAarg}{##2}}%
|
|
}%
|
|
\scr@dsc@doopts
|
|
\do@endgroup
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \RelaxSectionCommandOptions
|
|
% \end{macro}%^^A \DeclareSectionCommandStyleOption
|
|
% \begin{macro}{\DeclareSectionCommandStyleLengthOption}
|
|
% \changes{v3.17}{2015/03/23}{neue Anweisung}%^^A
|
|
% \changes{v3.20}{2016/04/25}{Argument wird ggf. expandiert}%^^A
|
|
% Definiert eine für die aktuelle Ebene \cs{scr@dsc@current} eine neue
|
|
% Längenoption und speichert das Ergebnis in einem Makro, das sich aus
|
|
% Argument 3 gefolgt von der aktuellen Ebene gefolgt von Argument 4 ergibt.
|
|
% \begin{macrocode}
|
|
\newcommand*{\DeclareSectionCommandStyleLengthOption}[4]{%
|
|
\DeclareSectionCommandStyleOption{#1}{#2}{%
|
|
\protected@edef\reserved@a{%
|
|
\noexpand\FamilySetLength{KOMAarg}{#2}{\noexpand\@tempskipa}{##1}%
|
|
}\reserved@a
|
|
\ifx\FamilyKeyState\FamilyKeyStateProcessed
|
|
\ifscr@dsc@expandtopt
|
|
\expandafter\edef\csname #3\scr@dsc@current#4\endcsname{%
|
|
\the\@tempskipa}%
|
|
\else
|
|
\expandafter\edef\csname #3\scr@dsc@current#4\endcsname{##1}%
|
|
\fi
|
|
\fi
|
|
}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \DeclareSectionCommandStyleLengthOption
|
|
% \begin{macro}{\DeclareSectionCommandStyleNumberOption}
|
|
% \changes{v3.17}{2015/03/23}{neue Anweisung}%^^A
|
|
% \changes{v3.20}{2016/04/25}{Argument wird expandiert}%^^A
|
|
% Definiert eine für die aktuelle Ebene \cs{scr@dsc@current} eine neue
|
|
% Zahlenoption und speichert das Ergebnis in einem Makro, das sich aus
|
|
% Argument 3 gefolgt von der aktuellen Ebene gefolgt von Argument 4 ergibt.
|
|
% \begin{macrocode}
|
|
\newcommand*{\DeclareSectionCommandStyleNumberOption}[4]{%
|
|
\DeclareSectionCommandStyleOption{#1}{#2}{%
|
|
\protected@edef\reserved@a{%
|
|
\noexpand\FamilySetCounterMacro{KOMAarg}{#2}{\noexpand\reserved@a}{##1}
|
|
}\reserved@a
|
|
\ifx\FamilyKeyState\FamilyKeyStateProcessed
|
|
\expandafter\let\csname #3\scr@dsc@current#4\endcsname\reserved@a
|
|
\fi
|
|
}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \DeclareSectionCommandStyleNumberOption
|
|
% \begin{macro}{\DeclareSectionCommandStyleFontOption}
|
|
% \changes{v3.17}{2015/03/23}{neue Anweisung}%^^A
|
|
% Definiert für die aktuelle Ebene \cs{scr@dsc@current} eine neue
|
|
% Schrift und speichert das Ergebnis in einem Element, das sich aus
|
|
% Argument 3 gefolgt von der aktuellen Ebene gefolgt von Argument 4 ergibt.
|
|
% \begin{macrocode}
|
|
\newcommand*{\DeclareSectionCommandStyleFontOption}[4]{%
|
|
\DeclareSectionCommandStyleOption{#1}{#2}{%
|
|
\IfExistskomafont{#3\scr@dsc@current#4}{%
|
|
\setkomafont
|
|
}{%
|
|
\newkomafont
|
|
}{#3\scr@dsc@current#4}{##1}%
|
|
\FamilyKeyStateProcessed
|
|
}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \DeclareSectionCommandStyleFontOption
|
|
% \begin{macro}{\DeclareSectionCommandStyleFuzzyOption}
|
|
% \changes{v3.26}{2018/09/18}{neue Anweisung}%^^A
|
|
% \changes{v3.28}{2019/11/18}{\cs{ifstr} umbenannt in \cs{Ifstr}}%^^A
|
|
% Definiert für die aktuelle Ebene \cs{scr@dsc@current} eine neue
|
|
% Fuzzy-Auswahl. Eine Fuzzy-Auswahl akzeptiert neben den Werten für
|
|
% boolsche-Schalter noch einen weiteren Wert. Es wird davon eine Anweisung
|
|
% mit drei Argumenten definiert. Abhängig vom Wert wird das erste
|
|
% (\texttt{true}), zweite (\texttt{false}) oder dritte (\emph{sonst}) Argument
|
|
% ausgeführt. Der erlaubte weitere Wert wird als 5. Argument angegeben.
|
|
% \begin{macrocode}
|
|
\newcommand*{\DeclareSectionCommandStyleFuzzyOption}[5]{%
|
|
\DeclareSectionCommandStyleOption{#1}{#2}{%
|
|
\FamilySetBool{KOMAarg}{#2}{@tempswa}{##1}%
|
|
\ifx\FamilyKeyState\FamilyKeyStateProcessed
|
|
\if@tempswa
|
|
\expandafter\def\csname #3\scr@dsc@current#4\endcsname
|
|
####1####2####3{####1}%
|
|
\else
|
|
\expandafter\def\csname #3\scr@dsc@current#4\endcsname
|
|
####1####2####3{####2}%
|
|
\fi
|
|
\else
|
|
\Ifstr{##1}{#5}{%
|
|
\expandafter\def\csname #3\scr@dsc@current#4\endcsname
|
|
####1####2####3{####3}%
|
|
\FamilyKeyStateProcessed
|
|
}{}%
|
|
\fi
|
|
}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \DeclareSectionCommandStyleFuzzyOptions
|
|
%
|
|
% \begin{macro}{\scr@dsc@style@section@options}
|
|
% \changes{v3.17}{2015/03/23}{neue Anweisung (intern)}%^^A
|
|
% Dann für die Optionen des Stils \texttt{section}:
|
|
% \begin{macrocode}
|
|
\newcommand*{\scr@dsc@style@section@options}{}
|
|
% \end{macrocode}
|
|
% \begin{description}\item[\texttt{indent}]
|
|
% Linker Einzug der Überschrift
|
|
% \end{description}
|
|
% \begin{macrocode}
|
|
\DeclareSectionCommandStyleLengthOption{section}
|
|
{indent}{scr@}{@sectionindent}
|
|
% \end{macrocode}
|
|
% \begin{description}
|
|
% \item[\texttt{afterindent}]
|
|
% \changes{v3.26}{2018/09/18}{neue Option \texttt{afterindent}}%^^A
|
|
% Fuzzy-Logik. Ein boolcher Wert gibt an, ob die erste Zeile nach der
|
|
% Überschrift eingezogen werden soll. Als dritter Wert ist \texttt{bysign}
|
|
% möglich. Dann hängt die Entscheidung für den Einzug vom Vorzeichen von
|
|
% \texttt{beforeskip} ab. Ein negativer Wert bedeutet dann, dass der
|
|
% Absatzeinzug nach der Überschrift unterdrückt werden soll.
|
|
% \end{description}
|
|
% \begin{macrocode}
|
|
\DeclareSectionCommandStyleFuzzyOption{section}
|
|
{afterindent}{scr@}{@afterindent}
|
|
{bysign}
|
|
% \end{macrocode}
|
|
% \begin{description}\item[\texttt{beforeskip}]
|
|
% Gibt den vertikalen Abstand vor der Übeschrift an. Im Fall von
|
|
% \texttt{afterindent=bysign} wird der Absolutwert verwendet.
|
|
% \end{description}
|
|
% \begin{macrocode}
|
|
\DeclareSectionCommandStyleLengthOption{section}
|
|
{beforeskip}{scr@}{@beforeskip}
|
|
% \end{macrocode}
|
|
% \begin{description}\item[\texttt{runin}]
|
|
% \changes{v3.26}{2018/09/18}{neue Option \texttt{runin}}%^^A
|
|
% Fuzzy-Logik. Ein boolscher Wert gibt an, dass die Überschrift als
|
|
% Spitzmarke (\texttt{true}) oder als eigene Zeile (\texttt{false}) gesetzt
|
|
% werden soll. Als dritter Wert ist \texttt{bysign} möglich. Dann hängt
|
|
% Spitzmarke oder nicht vom Vorzeichen von \texttt{afterskip} ab. Spitzmarke
|
|
% gibt es dann bei einem negativen Wert von \texttt{afterskip}.
|
|
% \end{description}
|
|
% \begin{macrocode}
|
|
\DeclareSectionCommandStyleFuzzyOption{section}
|
|
{runin}{scr@}{@runin}
|
|
{bysign}
|
|
% \end{macrocode}
|
|
% \begin{description}\item[\texttt{afterskip}] Im Fall einer Spitzmarke (siehe
|
|
% \texttt{runin}) der horizontale Abstand nach der Überschrift. Im Fall einer
|
|
% freistehenden Überschrift der vertikale Abstand nach der Überschrift. Falls
|
|
% die Spitzmarke über das Vorzeichen aktiviert wird, wird immer der Betrag des
|
|
% Wertes verwendet!
|
|
% \end{description}
|
|
% \begin{macrocode}
|
|
\DeclareSectionCommandStyleLengthOption{section}
|
|
{afterskip}{scr@}{@afterskip}
|
|
% \end{macrocode}
|
|
% \begin{description}\item[\texttt{font}] Schrifteinstellungen für das
|
|
% Element.\end{description}
|
|
% \begin{macrocode}
|
|
\DeclareSectionCommandStyleFontOption{section}{font}{}{}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@dsc@style@section@options
|
|
% \begin{macro}{\scr@dsc@def@style@section@command}
|
|
% \changes{v3.18}{2015/05/21}{neue Anweisung (intern)}%^^A
|
|
% \changes{v3.20}{2016/01/19}{korrekte Spitzmarkenprüfung für
|
|
% \cs{parfillskip}-Änderung}%^^A
|
|
% Diese Anweisung left fest, wie ein Gliederungsbefehl für den Stil
|
|
% \texttt{section} zu definieren ist. Das einzige Argument ist dabei der
|
|
% \meta{Name} der Gliederungsebene, beispielsweise \texttt{section},
|
|
% \texttt{subsection} etc. Hier ist es recht einfach, da lediglich
|
|
% \cs{\meta{Name}} per \cs{scr@startsection} definiert werden muss.
|
|
% \begin{macrocode}
|
|
\newcommand*{\scr@dsc@def@style@section@command}[1]{%
|
|
\@namedef{#1}{%
|
|
\scr@startsection{#1}%
|
|
{\csname #1numdepth\endcsname}%
|
|
{\csname scr@#1@sectionindent\endcsname}%
|
|
{\csname scr@#1@beforeskip\endcsname}%
|
|
{\csname scr@#1@afterskip\endcsname}%
|
|
{%
|
|
\ifdim\glueexpr\csname scr@#1@afterskip\endcsname >\z@
|
|
\expandafter\ifnum\scr@v@is@gt{2.96}\relax
|
|
\setlength{\parfillskip}{\z@ plus 1fil}%
|
|
\fi
|
|
\fi
|
|
\raggedsection\normalfont\sectfont\nobreak
|
|
\usekomafont{#1}%
|
|
}%
|
|
}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@dsc@def@style@section@command
|
|
%
|
|
% \begin{macro}{\scr@dsc@style@chapter@options}
|
|
% \changes{v3.17}{2015/03/23}{neue Anweisung (intern)}%^^A
|
|
% Dann für die Optionen des Stils \texttt{chapter}:
|
|
% \begin{macrocode}
|
|
%<*book|report>
|
|
\newcommand*{\scr@dsc@style@chapter@options}{}
|
|
% \end{macrocode}
|
|
% \begin{description}
|
|
% \item[\texttt{pagestyle}] Seitenstil für die Anfangsseite der
|
|
% Gliederungsebene.
|
|
% \end{description}
|
|
% \begin{macrocode}
|
|
\DeclareSectionCommandStyleOption{chapter}{pagestyle}{%
|
|
\@namedef{\scr@dsc@current pagestyle}{#1}%
|
|
\FamilyKeyStateProcessed
|
|
}%
|
|
% \end{macrocode}
|
|
% \begin{description}
|
|
% \item[\texttt{afterindent}]
|
|
% \changes{v3.26}{2018/09/18}{neue Option \texttt{afterindent}}%^^A
|
|
% Fuzzy-Logik. Ein boolcher Wert gibt an, ob die erste Zeile nach der
|
|
% Überschrift eingezogen werden soll. Als dritter Wert ist \texttt{bysign}
|
|
% möglich. Dann hängt die Entscheidung für den Einzug vom Vorzeichen von
|
|
% \texttt{beforeskip} ab. Ein negativer Wert bedeutet dann, dass der
|
|
% Absatzeinzug nach der Überschrift unterdrückt werden soll.
|
|
% \end{description}
|
|
% \begin{macrocode}
|
|
\DeclareSectionCommandStyleFuzzyOption{chapter}
|
|
{afterindent}{scr@}{@afterindent}
|
|
{bysign}
|
|
% \end{macrocode}
|
|
% \begin{description}\item[\texttt{beforeskip}]
|
|
% Gibt den vertikalen Abstand vor der Übeschrift an. Im Fall von
|
|
% \texttt{afterindent=bysign} wird der Absolutwert verwendet.
|
|
% \end{description}
|
|
% \begin{macrocode}
|
|
\DeclareSectionCommandStyleLengthOption{chapter}
|
|
{beforeskip}{scr@}{@beforeskip}
|
|
% \end{macrocode}
|
|
% \begin{description}
|
|
% \item[\texttt{innerskip}] Der Absolutwert gibt den vertikalen Abstand
|
|
% innerhalb der Überschrift zwischen Präfix-Zeile und Text an.
|
|
% \end{description}
|
|
% \begin{macrocode}
|
|
\DeclareSectionCommandStyleLengthOption{chapter}
|
|
{innerskip}{scr@}{@innerskip}
|
|
% \end{macrocode}
|
|
% \begin{description}
|
|
% \item[\texttt{afterskip}] Der Absolutwert gibt den vertikalen Abstand nach
|
|
% der Überschrift an.
|
|
% \end{description}
|
|
% \begin{macrocode}
|
|
\DeclareSectionCommandStyleLengthOption{chapter}
|
|
{afterskip}{scr@}{@afterskip}
|
|
% \end{macrocode}
|
|
% \begin{description}
|
|
% \item[\texttt{font}] Schrifteinstellungen für das Element.
|
|
% \end{description}
|
|
% \begin{macrocode}
|
|
\DeclareSectionCommandStyleFontOption{chapter}{font}{}{}
|
|
% \end{macrocode}
|
|
% \begin{description}
|
|
% \item[\texttt{prefixfont}] Schrifteinstellungen für die Präfixzeile des
|
|
% Elements.
|
|
% \end{description}
|
|
% \begin{macrocode}
|
|
\DeclareSectionCommandStyleFontOption{chapter}{prefixfont}{}{prefix}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@dsc@style@chapter@options
|
|
% \begin{macro}{\scr@dsc@def@style@chapter@command}
|
|
% \changes{v3.18}{2015/05/22}{neue Anweisung (intern)}
|
|
% Diese Anweisung left fest, wie ein Gliederungsbefehl für den Stil
|
|
% \texttt{chapter} zu definieren ist. Das einzige Argument ist dabei der
|
|
% \meta{Name} der Gliederungsebene, normalerweise \texttt{chapter}.
|
|
% Das ist etwas komplizierter als bei \cs{scr@dsc@def@style@section@command},
|
|
% da hier eine ganze Reihe von miteinander verschachtelten Anweisungen zu
|
|
% definieren sind.
|
|
% \begin{macrocode}
|
|
\newcommand*{\scr@dsc@def@style@chapter@command}[1]{%
|
|
\@namedef{#1}{\scr@startchapter{#1}}%
|
|
\@namedef{@#1}{\scr@@startchapter{#1}}%
|
|
\@namedef{@s#1}{\scr@@startschapter{#1}}%
|
|
\@namedef{@make#1head}{\scr@makechapterhead{#1}}%
|
|
\@namedef{@makes#1head}{\scr@makeschapterhead{#1}}%
|
|
\@namedef{@@make#1head}{\scr@@makechapterhead{#1}}%
|
|
\@namedef{@@makes#1head}{\scr@@makeschapterhead{#1}}%
|
|
\@namedef{set#1preamble}{\set@preamble{#1}}%
|
|
}
|
|
%</book|report>
|
|
% \end{macrocode}
|
|
% \begin{macro}{\scr@dsc@style@chapter@subcommands}
|
|
% \selectlanguage{english}%^^A
|
|
% \changes{v3.30}{2020/04/08}{new (internal)}
|
|
% Internal name list of additional commands to be defined for style
|
|
% \texttt{part} commands.
|
|
% \begin{macrocode}
|
|
\newcommand*{\scr@dsc@style@chapter@subcommands}[1]{%
|
|
@#1,@s#1,@make#1head,@makes#1head,@@make#1head,@@makes#1head,set#1preamble%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@dsc@style@chapter@subcommands
|
|
% \end{macro}%^^A \scr@dsc@def@style@chapter@command
|
|
%
|
|
% \begin{macro}{\scr@dsc@style@part@options}
|
|
% \changes{v3.17}{2015/03/23}{neue Anweisung (intern)}%^^A
|
|
% Dann für die Optionen des Stils \texttt{part}:
|
|
% \begin{macrocode}
|
|
\newcommand*{\scr@dsc@style@part@options}{}
|
|
% \end{macrocode}
|
|
% \begin{description}
|
|
% \item[\texttt{pagestyle}] Seitenstil für die Anfangsseite der
|
|
% Gliederungsebene.
|
|
% \end{description}
|
|
% \begin{macrocode}
|
|
%<*report|book>
|
|
\DeclareSectionCommandStyleOption{part}{pagestyle}{%
|
|
\@namedef{\scr@dsc@current pagestyle}{#1}%
|
|
\FamilyKeyStateProcessed
|
|
}%
|
|
%</report|book>
|
|
% \end{macrocode}
|
|
% \begin{description}
|
|
% \item[\texttt{afterindent}]
|
|
% \changes{v3.26}{2018/09/18}{neue Option \texttt{afterindent}}%^^A
|
|
% Fuzzy-Logik. Ein boolcher Wert gibt an, ob die erste Zeile nach der
|
|
% Überschrift eingezogen werden soll. Als dritter Wert ist \texttt{bysign}
|
|
% möglich. Dann hängt die Entscheidung für den Einzug vom Vorzeichen von
|
|
% \texttt{beforeskip} ab. Ein negativer Wert bedeutet dann, dass der
|
|
% Absatzeinzug nach der Überschrift unterdrückt werden soll.
|
|
% \end{description}
|
|
% \begin{macrocode}
|
|
\DeclareSectionCommandStyleFuzzyOption{part}
|
|
{afterindent}{scr@}{@afterindent}
|
|
{bysign}
|
|
% \end{macrocode}
|
|
% \begin{description}\item[\texttt{beforeskip}]
|
|
% Gibt den vertikalen Abstand vor der Übeschrift an. Im Fall von
|
|
% \texttt{afterindent=bysign} wird der Absolutwert verwendet.
|
|
% \end{description}
|
|
% \begin{macrocode}
|
|
\DeclareSectionCommandStyleLengthOption{part}
|
|
{beforeskip}{scr@}{@beforeskip}
|
|
% \end{macrocode}
|
|
% \begin{description}
|
|
% \item[\texttt{innerskip}] Der Absolutwert gibt den vertikalen Abstand
|
|
% innerhalb der Überschrift zwischen Präfix-Zeile und Text an.
|
|
% \end{description}
|
|
% \begin{macrocode}
|
|
%<*book|report>
|
|
\DeclareSectionCommandStyleLengthOption{part}
|
|
{innerskip}{scr@}{@innerskip}
|
|
%</book|report>
|
|
% \end{macrocode}
|
|
% \begin{description}
|
|
% \item[\texttt{afterskip}] Der Absolutwert gibt den vertikalen Abstand nach
|
|
% der Überschrift an.
|
|
% \end{description}
|
|
% \begin{macrocode}
|
|
\DeclareSectionCommandStyleLengthOption{part}
|
|
{afterskip}{scr@}{@afterskip}
|
|
% \end{macrocode}
|
|
% \begin{description}
|
|
% \item[\texttt{font}] Schrifteinstellungen für das Element.
|
|
% \end{description}
|
|
% \begin{macrocode}
|
|
\DeclareSectionCommandStyleFontOption{part}{font}{}{}
|
|
% \end{macrocode}
|
|
% \begin{description}
|
|
% \item[\texttt{font}] Schrifteinstellungen für die Präfixzeile des Elements.
|
|
% \end{description}
|
|
% \begin{macrocode}
|
|
\DeclareSectionCommandStyleFontOption{part}{prefixfont}{}{prefix}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@dsc@style@part@options
|
|
% \begin{macro}{\scr@dsc@def@style@part@ommand}
|
|
% \changes{v3.18}{2015/05/23}{neue Anweisung (intern)}
|
|
% Diese Anweisung legt fest, wie ein Gliederungsbefehl für den Stil
|
|
% \texttt{part} zu definieren ist. Das einzige Argument ist dabei der
|
|
% \meta{Name} der Gliederungsebene, normalerweise \texttt{part}.
|
|
% Das ist ganz ähnlich wie bei \cs{scr@dsc@def@style@chapter@command}.
|
|
% \begin{macrocode}
|
|
\newcommand*{\scr@dsc@def@style@part@command}[1]{%
|
|
\@namedef{#1}{\scr@startpart{#1}}%
|
|
\@namedef{@#1}{\scr@@startpart{#1}}%
|
|
\@namedef{@s#1}{\scr@@startspart{#1}}%
|
|
%<book|report> \@namedef{@end#1}{\scr@@endpart{#1}}%
|
|
%<book|report> \@namedef{set#1preamble}{\set@preamble{#1}}%
|
|
}
|
|
% \end{macrocode}
|
|
% \begin{macro}{\scr@dsc@style@part@subcommands}
|
|
% \selectlanguage{english}%^^A
|
|
% \changes{v3.30}{2020/04/08}{new (internal)}
|
|
% Internal name list of additional commands to be defined for style
|
|
% \texttt{part} commands.
|
|
% \begin{macrocode}
|
|
\newcommand*{\scr@dsc@style@part@subcommands}[1]{%
|
|
@#1,@s#1,@end#1,set#1preamble%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@dsc@style@part@subcommands
|
|
% \end{macro}%^^A \scr@dsc@def@style@part@command
|
|
%
|
|
% \begin{macro}{\scr@dsc@style@section@neededoptionstest}
|
|
% \changes{v3.17}{2015/03/24}{Neu (intern)}%^^A
|
|
% \changes{v3.24}{2017/04/25}{Voreinstellungen für \texttt{indent} und
|
|
% \texttt{font}}%^^A
|
|
% \changes{v3.26}{2018/09/18}{\texttt{runin} und \texttt{afterindent}
|
|
% beachten}%^^A
|
|
% Dieses Anweisung überprüft, ob alle notwendigen Eigenschaften für die
|
|
% Definition der spezifischen Gliederungsebene im section-Stil bekannt
|
|
% sind. Sollte das nicht der Fall sein, meldet sie einen Fehler und sorgt sie
|
|
% mit \cs{aftergroup}\cs{@gobbletwo} dafür, dass die Definition unterbleibt.
|
|
% \begin{macrocode}
|
|
\newcommand*{\scr@dsc@style@section@neededoptionstest}{%
|
|
\scr@ifundefinedorrelax{scr@\scr@dsc@current @sectionindent}{%
|
|
\scr@declaresectioncommandwarning{\scr@dsc@current}%
|
|
{section indent}{indent}{0pt}%
|
|
{\@namedef{scr@\scr@dsc@current @sectionindent}{0pt}}%
|
|
}{}%
|
|
\scr@ifundefinedorrelax{scr@\scr@dsc@current @beforeskip}{%
|
|
\scr@declaresectioncommanderror{\scr@dsc@current}%
|
|
{before section skip}{beforeskip}%
|
|
}{}%
|
|
\scr@ifundefinedorrelax{scr@\scr@dsc@current @afterskip}{%
|
|
\scr@declaresectioncommanderror{\scr@dsc@current}%
|
|
{after section skip}{afterskip}%
|
|
}{}%
|
|
\IfExistskomafont{\scr@dsc@current}{}{%
|
|
\scr@declaresectioncommandwarning{\scr@dsc@current}%
|
|
{font}{font}{\normalsize}%
|
|
{\newkomafont{\scr@dsc@current}{\normalsize}}%
|
|
}%
|
|
\scr@ifundefinedorrelax{scr@\scr@dsc@current @runin}{%
|
|
\l@addto@macro\local@endgroup{%
|
|
\ClassInfo{\KOMAClassName}
|
|
{using compatibility default `runin=bysign'\MessageBreak
|
|
for `\expandafter\string\csname \scr@dsc@current\endcsname}%
|
|
\expandafter\gdef\csname scr@\scr@dsc@current @runin\endcsname
|
|
##1##2##3{##3}%
|
|
}%
|
|
}{}%
|
|
\scr@ifundefinedorrelax{scr@\scr@dsc@current @afterindent}{%
|
|
\l@addto@macro\local@endgroup{%
|
|
\ClassInfo{\KOMAClassName}
|
|
{using compatibility default `afterindent=bysign'\MessageBreak
|
|
for `\expandafter\string\csname \scr@dsc@current\endcsname}%
|
|
\expandafter\gdef\csname scr@\scr@dsc@current @afterindent\endcsname
|
|
##1##2##3{##3}%
|
|
}%
|
|
}{}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@dsc@style@section@neededoptionstest
|
|
%
|
|
% \begin{macro}{\scr@dsc@style@chapter@neededoptionstest}
|
|
% \changes{v3.17}{2015/03/24}{Neu (intern)}%^^A
|
|
% \changes{v3.24}{2017/04/25}{Voreinstellungen für alle außer auf Ebene
|
|
% \texttt{chapter}}%^^A
|
|
% \changes{v3.28}{2019/11/18}{\cs{ifstr} umbenannt in \cs{Ifstr}}%^^A
|
|
% Dieses Anweisung überprüft, ob alle notwendigen Eigenschaften für die
|
|
% Definition der spezifischen Gliederungsebene im chapter-Stil bekannt
|
|
% sind. Sollte das nicht der Fall sein, meldet sie einen Fehler und sorgt sie
|
|
% mit \cs{aftergroup}\cs{@gobbletwo} dafür, dass die Definition unterbleibt.
|
|
% \begin{macrocode}
|
|
%<*book|report>
|
|
\newcommand*{\scr@dsc@style@chapter@neededoptionstest}{%
|
|
\scr@ifundefinedorrelax{\scr@dsc@current pagestyle}{%
|
|
\Ifstr{\scr@dsc@current}{chapter}{%
|
|
\scr@declaresectioncommanderror{\scr@dsc@current}%
|
|
{initial page style}{pagestyle}%
|
|
}{%
|
|
\scr@declaresectioncommandwarning{\scr@dsc@current}%
|
|
{initial page style}{pagestyle}%
|
|
{\chapterpagestyle}%
|
|
{\@namedef{\scr@dsc@current pagestyle}{\chapterpagestyle}}%
|
|
}%
|
|
}{}%
|
|
\scr@ifundefinedorrelax{scr@\scr@dsc@current @innerskip}{%
|
|
\Ifstr{\scr@dsc@current}{chapter}{%
|
|
\scr@declaresectioncommanderror{\scr@dsc@current}%
|
|
{inner chapter skip}{innerskip}%
|
|
}{%
|
|
\scr@declaresectioncommandwarning{\scr@dsc@current}%
|
|
{inner chapter skip}{innerskip}%
|
|
{\scr@chapter@innerskip}%
|
|
{\@namedef{scr@\scr@dsc@current @innerskip}{\scr@chapter@innerskip}}%
|
|
}%
|
|
}{}%
|
|
\scr@ifundefinedorrelax{scr@\scr@dsc@current @beforeskip}{%
|
|
\Ifstr{\scr@dsc@current}{chapter}{%
|
|
\scr@declaresectioncommanderror{\scr@dsc@current}%
|
|
{before chapter skip}{beforeskip}%
|
|
}{%
|
|
\scr@declaresectioncommandwarning{\scr@dsc@current}%
|
|
{before chapter skip}{beforeskip}%
|
|
{\scr@chapter@beforeskip}%
|
|
{\@namedef{scr@\scr@dsc@current @beforeskip}{\scr@chapter@beforeskip}}%
|
|
}%
|
|
}{}%
|
|
\scr@ifundefinedorrelax{scr@\scr@dsc@current @afterskip}{%
|
|
\Ifstr{\scr@dsc@current}{chapter}{%
|
|
\scr@declaresectioncommanderror{\scr@dsc@current}%
|
|
{after chaper skip}{afterskip}%
|
|
}{%
|
|
\scr@declaresectioncommandwarning{\scr@dsc@current}%
|
|
{after chaper skip}{afterskip}%
|
|
{\scr@chapter@afterskip}%
|
|
{\@namedef{scr@\scr@dsc@current @afterskip}{\scr@chapter@afterskip}}%
|
|
}%
|
|
}{}%
|
|
\IfExistskomafont{\scr@dsc@current}{}{%
|
|
\Ifstr{\scr@dsc@current}{chapter}{%
|
|
\scr@declaresectioncommanderror{\scr@dsc@current}{font}{font}%
|
|
}{%
|
|
\scr@declaresectioncommandwarning{\scr@dsc@current}%
|
|
{font}{font}%
|
|
{\usekomafont{chapter}}%
|
|
{\newkomafont{\scr@dsc@current}{\usekomafont{chapter}}}%
|
|
}%
|
|
}%
|
|
\IfExistskomafont{\scr@dsc@current prefix}{}{%
|
|
\Ifstr{\scr@dsc@current}{chapter}{%
|
|
\scr@declaresectioncommanderror{\scr@dsc@current}%
|
|
{prefix line font}{prefixfont}%
|
|
}{%
|
|
\scr@declaresectioncommandwarning{\scr@dsc@current}%
|
|
{prefix line font}{prefixfont}%
|
|
{\usekomafont{chapterprefix}}%
|
|
{\newkomafont{\scr@dsc@current prefix}{\usekomafont{chapterprefix}}}%
|
|
}%
|
|
}{}%
|
|
\scr@ifundefinedorrelax{scr@\scr@dsc@current @afterindent}{%
|
|
\l@addto@macro\local@endgroup{%
|
|
\ClassInfo{\KOMAClassName}
|
|
{using compatibility default `afterindent=bysign'\MessageBreak
|
|
for `\expandafter\string\csname \scr@dsc@current\endcsname}%
|
|
\expandafter\gdef\csname scr@\scr@dsc@current @afterindent\endcsname
|
|
##1##2##3{##3}%
|
|
}%
|
|
}{}%
|
|
}
|
|
%</book|report>
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@dsc@style@chapter@neededoptionstest
|
|
%
|
|
% \begin{macro}{\scr@dsc@style@part@neededoptionstest}
|
|
% \changes{v3.17}{2015/03/24}{Neu (intern)}
|
|
% \changes{v3.24}{2017/04/25}{Voreinstellungen für alle außer auf Ebene
|
|
% \texttt{part}}%^^A
|
|
% \changes{v3.28}{2019/11/18}{\cs{ifstr} umbenannt in \cs{Ifstr}}%^^A
|
|
% Dieses Anweisung überprüft, ob alle notwendigen Eigenschaften für die
|
|
% Definition der spezifischen Gliederungsebene im part-Stil bekannt
|
|
% sind. Sollte das nicht der Fall sein, meldet sie einen Fehler und sorgt sie
|
|
% mit \cs{aftergroup}\cs{@gobbletwo} dafür, dass die Definition unterbleibt.
|
|
% \begin{macrocode}
|
|
\newcommand*{\scr@dsc@style@part@neededoptionstest}{%
|
|
%<*book|report>
|
|
\scr@ifundefinedorrelax{\scr@dsc@current pagestyle}{%
|
|
\Ifstr{\scr@dsc@current}{part}{%
|
|
\scr@declaresectioncommanderror{\scr@dsc@current}%
|
|
{initial page style}{pagestyle}%
|
|
}{%
|
|
\scr@declaresectioncommandwarning{\scr@dsc@current}%
|
|
{initial page style}{pagestyle}%
|
|
{\partpagestyle}%
|
|
{\@namedef{\scr@dsc@current pagestyle}{\partpagestyle}}%
|
|
}%
|
|
}{}%
|
|
\scr@ifundefinedorrelax{scr@\scr@dsc@current @innerskip}{%
|
|
\Ifstr{\scr@dsc@current}{part}{%
|
|
\scr@declaresectioncommanderror{\scr@dsc@current}%
|
|
{inner part skip}{innerskip}%
|
|
}{%
|
|
\scr@declaresectioncommandwarning{\scr@dsc@current}%
|
|
{inner part skip}{innerskip}%
|
|
{\scr@part@innerskip}%
|
|
{\@namedef{scr@\scr@dsc@current @innerskip}{\scr@part@innerskip}}%
|
|
}%
|
|
}{}%
|
|
%</book|report>
|
|
\scr@ifundefinedorrelax{scr@\scr@dsc@current @beforeskip}{%
|
|
\Ifstr{\scr@dsc@current}{part}{%
|
|
\scr@declaresectioncommanderror{\scr@dsc@current}%
|
|
{before part skip}{beforeskip}%
|
|
}{%
|
|
\scr@declaresectioncommandwarning{\scr@dsc@current}%
|
|
{before part skip}{beforeskip}%
|
|
{\scr@part@beforeskip}%
|
|
{\@namedef{scr@\scr@dsc@current @beforeskip}{\scr@part@beforeskip}}%
|
|
}%
|
|
}{}%
|
|
\scr@ifundefinedorrelax{scr@\scr@dsc@current @afterskip}{%
|
|
\Ifstr{\scr@dsc@current}{part}{%
|
|
\scr@declaresectioncommanderror{\scr@dsc@current}%
|
|
{after part skip}{afterskip}%
|
|
}{%
|
|
\scr@declaresectioncommandwarning{\scr@dsc@current}%
|
|
{after part skip}{afterskip}%
|
|
{\scr@part@afterskip}%
|
|
{\@namedef{scr@\scr@dsc@current @afterskip}{\scr@part@afterskip}}%
|
|
}%
|
|
}{}%
|
|
\IfExistskomafont{\scr@dsc@current}{}{%
|
|
\Ifstr{\scr@dsc@current}{part}{%
|
|
\scr@declaresectioncommanderror{\scr@dsc@current}{font}{font}%
|
|
}{%
|
|
\scr@declaresectioncommandwarning{\scr@dsc@current}{font}{font}%
|
|
{\usekomafont{part}}%
|
|
{\newkomafont{\scr@dsc@current}{\usekomafont{part}}}%
|
|
}%
|
|
}{}%
|
|
\IfExistskomafont{\scr@dsc@current prefix}{}{%
|
|
\Ifstr{\scr@dsc@current}{part}{%
|
|
\scr@declaresectioncommanderror{\scr@dsc@current}%
|
|
{number font}{prefixfont}%
|
|
}{%
|
|
\scr@declaresectioncommandwarning{\scr@dsc@current}%
|
|
{number font}{prefixfont}%
|
|
{\usekomafont{partprefix}}%
|
|
{\newkomafont{\scr@dsc@current prefix}{\usekomafont{partprefix}}}%
|
|
}%
|
|
}{}%
|
|
\scr@ifundefinedorrelax{scr@\scr@dsc@current @afterindent}{%
|
|
\l@addto@macro\local@endgroup{%
|
|
\ClassInfo{\KOMAClassName}{%
|
|
using compatibility default
|
|
%<article> `afterindent=false'\MessageBreak
|
|
%<book|report> `afterindent=true'\MessageBreak
|
|
for `\expandafter\string\csname \scr@dsc@current\endcsname}%
|
|
\expandafter\gdef\csname scr@\scr@dsc@current @afterindent\endcsname
|
|
##1##2##3%
|
|
%<article> {##2}%
|
|
%<book|report> {##1}%
|
|
}%
|
|
}{}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@dsc@style@part@neededoptionstest
|
|
%
|
|
% \begin{macro}{\ifscr@dsc@parametersonly}
|
|
% \changes{v3.17}{2015/03/24}{neu}%^^A
|
|
% \changes{v3.20}{2015/11/18}{es gibt keine Dummy-Optionen mehr}%^^A
|
|
% Dieser Schalter wird verwendet, um die Einstellungen entsprechend dem
|
|
% aktuell gültigen Stil zu ändern, die zugehörige Anweisung selbst aber nicht
|
|
% neu zu definieren. Er wird von einem leeren \texttt{style}-Wert lokal
|
|
% gesetzt.
|
|
% \begin{macrocode}
|
|
\newif\ifscr@dsc@parametersonly
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \ifscr@dsc@parametersonly
|
|
%
|
|
% \begin{macrocode}
|
|
\newcommand*{\DeclareSectionCommand}[2][]{%
|
|
\edef\scr@dsc@current{#2}%
|
|
% \end{macrocode}
|
|
% Im ersten Durchlauf werden nur die Stil-Optionen ausgewertet:
|
|
% \begin{description}
|
|
% \item[\texttt{style}] Stil der Gliederungsebene
|
|
% \end{description}
|
|
% \begin{macrocode}
|
|
\scr@dsc@parametersonlyfalse
|
|
\DefineFamilyKey[.dsc]{KOMAarg}{style}{%
|
|
\IfArgIsEmpty{##1}{%
|
|
\scr@dsc@parametersonlytrue
|
|
\FamilyKeyStateProcessed
|
|
}{%
|
|
\scr@ifundefinedorrelax{scr@dsc@def@style@##1@command}{%
|
|
\FamilyKeyStateUnknownValue
|
|
}{%
|
|
\@namedef{scr@\scr@dsc@current @style}{##1}%
|
|
\FamilyKeyStateProcessed
|
|
}%
|
|
}%
|
|
}%
|
|
% \end{macrocode}
|
|
% \begin{description}
|
|
% \item[\texttt{tocstyle}]
|
|
% \changes{v3.20}{2015/11/12}{Option \texttt{tocstyle} frühzeitig
|
|
% auswerten}%^^A
|
|
% \changes{v3.27}{2019/10/02}{Präfix für die Speicherung des
|
|
% Verzeichnisstils geändert}%^^A
|
|
% Verzeichnis-Eintrags-Stil, damit auch für diesen anschließend die Optionen
|
|
% definiert bzw. aktiviert werden können. Zu beachten ist hier, dass ab
|
|
% \textsf{tocbasic} 3.27 der Stil korrekter Weise in \cs{scr@tso@\meta{level
|
|
% name}@style} statt in \cs{scr@dte@\meta{level name}@style} gespeichert
|
|
% wird. Zur Sicherheit werden hier beide Makros behandelt.
|
|
% \end{description}
|
|
% \begin{macrocode}
|
|
\DefineFamilyKey[.dsc]{KOMAarg}{tocstyle}{%
|
|
\IfArgIsEmpty{##1}{%
|
|
\@ifundefined{scr@dte@\scr@dsc@current @style}{}{%
|
|
\expandafter\let\csname scr@dte@\scr@dsc@current @style\endcsname
|
|
\relax
|
|
}%
|
|
\expandafter\let\csname scr@tso@\scr@dsc@current @style\endcsname
|
|
\relax
|
|
\FamilyKeyStateProcessed
|
|
}{%
|
|
%<trace> \typeout{TRACE: option tocstyle=##1}%
|
|
%<trace> \typeout{TRACE: command=\scr@dsc@current}%
|
|
\scr@ifundefinedorrelax{scr@dte@def@l@##1}{%
|
|
%<trace> \typeout{TRACE: style not defined}%
|
|
\FamilyKeyStateUnknownValue
|
|
}{%
|
|
%<trace> \typeout{TRACE: style defined}%
|
|
\@namedef{scr@dte@\scr@dsc@current @style}{##1}%
|
|
\@namedef{scr@tso@\scr@dsc@current @style}{##1}%
|
|
\FamilyKeyStateProcessed
|
|
}%
|
|
}%
|
|
}%
|
|
% \end{macrocode}
|
|
% \begin{description}
|
|
% \item[\texttt{@else@}]
|
|
% \changes{v3.20}{2015/11/18}{Option \texttt{tocstyle} frühzeitig
|
|
% auswerten}%^^A
|
|
% Damit keine anderen Optionen ausgewertet werden müssen aber auch nicht als
|
|
% unbekannte Optionen einen Fehler erzeugen, wird diese Spezialoption
|
|
% definiert, die einfach nur \cs{FamilyKeyStateProcessed} setzt.
|
|
% \end{description}
|
|
% \begin{macrocode}
|
|
\DefineFamilyKey[.dsc]{KOMAarg}{@else@}{%
|
|
%<*trace>
|
|
\typeout{TRACE: ignoring option `@else@=\detokenize{##1}'}%
|
|
\typeout{TRACE:
|
|
\string\scr@key@atlist=`\detokenize\expandafter{\scr@key@atlist}'}%
|
|
\typeout{TRACE:
|
|
\string\scr@key@name=`\detokenize\expandafter{\scr@key@name}'}%
|
|
\typeout{TRACE:
|
|
\string\scr@key@value=`\detokenize\expandafter{\scr@key@value}'}%
|
|
%</trace>
|
|
\FamilyKeyStateProcessed
|
|
}%
|
|
\FamilyExecuteOptions[.dsc]{KOMAarg}{#1}%
|
|
% \end{macrocode}
|
|
% \changes{v3.20}{2015/11/18}{Rüchnahme der Optionen nach dem ersten
|
|
% Durchgang}%^^A
|
|
% Nach dem ersten Druchgang müssen alle Optionen wieder zurückgenommen
|
|
% werden.
|
|
% \begin{macrocode}
|
|
\RelaxFamilyKey[.dsc]{KOMAarg}{@else@}%
|
|
\RelaxFamilyKey[.dsc]{KOMAarg}{tocstyle}%
|
|
\RelaxFamilyKey[.dsc]{KOMAarg}{style}%
|
|
\begingroup
|
|
\scr@ifundefinedorrelax{scr@\scr@dsc@current @style}{%
|
|
\scr@declaresectioncommanderror{\scr@dsc@current}
|
|
{section command style}{style}%
|
|
}{}%
|
|
\endgroup
|
|
\@firstofone{%
|
|
% \end{macrocode}
|
|
% \changes{v3.20}{2015/11/12}{keine Dummy-Optionen für den echten Lauf}%^^A
|
|
% Nachdem nun der Stil für den Gliederungsbefehl bekannt ist, können wir
|
|
% dessen Optionen aktivieren:
|
|
% \begin{macrocode}
|
|
%<trace> \typeout{TRACE: style=\@nameuse{scr@\scr@dsc@current @style}}%
|
|
\@nameuse{scr@dsc@style@\@nameuse{scr@\scr@dsc@current @style}@options}%
|
|
% \end{macrocode}
|
|
% Außerdem muss der Verzeichniseintrags-Stils initialisiert werden:
|
|
% \begin{macrocode}
|
|
%<trace> \typeout{TRACE: tocstyle=%
|
|
%<trace> \@nameuse{scr@tso@\scr@dsc@current @style}}%
|
|
\scr@ifundefinedorrelax{scr@tso@\scr@dsc@current @style}{%
|
|
\scr@ifundefinedorrelax{l@\scr@dsc@current}{%
|
|
\@namedef{scr@tso@\scr@dsc@current @style}{default}%
|
|
}{}%
|
|
}{}%
|
|
% \end{macrocode}
|
|
% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
|
|
% \cs{kernel@ifnextchar}}%^^A
|
|
% \changes{v3.21}{2016/06/12}{erlaube auch \texttt{tocentry} an Stelle von
|
|
% \texttt{toc} als Präfix}%^^A
|
|
% An dieser Stelle müssen die Optionen des Verzeichniseintrags auf Optionen
|
|
% der Gliederungsebene abgebildet werden. Dazu erhalten sie in der
|
|
% Gliederungebene den Präfix \texttt{toc}. Das bedeutet gleichzeitig, dass es
|
|
% keine Verzeichniseintragsoption Namens \texttt{style} geben kann und dass
|
|
% Gliederungsoptionen nicht mit \texttt{toc} beginnen dürfen.
|
|
% \begin{macrocode}
|
|
\let\scr@dsc@tocstyle@options\@empty
|
|
\let\scr@dsc@extra@relax@opts\@empty
|
|
\scr@ifundefinedorrelax{scr@tso@\scr@dsc@current @style}{%
|
|
\expandafter\let
|
|
\csname scr@tso@\scr@dsc@current @style\expandafter\endcsname
|
|
\csname scr@dte@\scr@dsc@current @style\endcsname
|
|
}{}%
|
|
\scr@ifundefinedorrelax{scr@tso@\scr@dsc@current @style}{}{%
|
|
\begingroup
|
|
\def\scr@dte@current{#2}%
|
|
\edef\reserved@a{%
|
|
\noexpand\@ExecuteTOCEntryStyleInitCode{%
|
|
\@nameuse{scr@tso@\scr@dsc@current @style}%
|
|
}{\scr@dsc@current}%
|
|
}\reserved@a
|
|
\def\do@endgroup{\endgroup}%
|
|
\def\do##1{%
|
|
\l@addto@macro\do@endgroup{%
|
|
\l@addto@macro\scr@dsc@extra@relax@opts{%
|
|
\RelaxFamilyKey[.dsc]{KOMAarg}{toc##1}%
|
|
\RelaxFamilyKey[.dsc]{KOMAarg}{tocentry##1}%
|
|
}%
|
|
}%
|
|
\kernel@ifnextchar[%]
|
|
{\@dodefault{##1}}%
|
|
{\@donodefault{##1}}%
|
|
}%
|
|
\def\@donodefault##1{%
|
|
\l@addto@macro\do@endgroup{%
|
|
\DefineFamilyKey[.dsc]{KOMAarg}{toc##1}{%
|
|
\l@addto@macro{\scr@dsc@tocstyle@options}{##1={####1},}%
|
|
\FamilyKeyStateProcessed
|
|
}%
|
|
\DefineFamilyKey[.dsc]{KOMAarg}{tocentry##1}{%
|
|
\l@addto@macro{\scr@dsc@tocstyle@options}{##1={####1},}%
|
|
\FamilyKeyStateProcessed
|
|
}%
|
|
}%
|
|
}%
|
|
\def\@dodefault##1[##2]{%
|
|
\l@addto@macro\do@endgroup{%
|
|
\DefineFamilyKey[.dsc]{KOMAarg}{toc##1}[##2]{%
|
|
\l@addto@macro{\scr@dsc@tocstyle@options}{##1={####1},}%
|
|
\FamilyKeyStateProcessed
|
|
}%
|
|
\DefineFamilyKey[.dsc]{KOMAarg}{tocentry##1}[##2]{%
|
|
\l@addto@macro{\scr@dsc@tocstyle@options}{##1={####1},}%
|
|
\FamilyKeyStateProcessed
|
|
}%
|
|
}%
|
|
}%
|
|
\scr@dte@doopts
|
|
\do@endgroup
|
|
}%
|
|
% \end{macrocode}
|
|
% Die Optionen für die Stile von Verzeichniseintrag und Gliederungsebene
|
|
% werden nicht erneut benötigt, müssten aber natürlich erneut verarbeitet
|
|
% werden.
|
|
% \begin{macrocode}
|
|
\DefineFamilyKey[.dsc]{KOMAarg}{style}{\FamilyKeyStateProcessed}%
|
|
\DefineFamilyKey[.dsc]{KOMAarg}{tocstyle}{\FamilyKeyStateProcessed}%
|
|
% \end{macrocode}
|
|
% Dazu kommen einige Optionen, die es schlicht immer gibt:
|
|
% \begin{description}\item[\texttt{expandtopt}] Schalter, um die Längen zur
|
|
% Definitionszeit statt zur Anwendungszeit komplett zu expandieren. Das
|
|
% bedingt dann aber auch, dass die Längen nicht mehr abhängig von der
|
|
% aktuellen Schriftgröße sind.\end{description}
|
|
% \begin{macrocode}
|
|
\FamilyBoolKey[.dsc]{KOMAarg}{expandtopt}{scr@dsc@expandtopt}%
|
|
\scr@dsc@expandtoptfalse
|
|
% \end{macrocode}
|
|
% \begin{description}\item[\texttt{increaselevel}] Automatische Erhöhung des
|
|
% Wertes von Option \texttt{level} mit Säumniswert 1. Diese Option wird nur
|
|
% definiert, wenn \cs{DeclareSectionCommands} verwendet wurde, was an
|
|
% \cs{scr@local@levelincrease} erkannt wird.\end{description}
|
|
% \begin{macrocode}
|
|
\scr@ifundefinedorrelax{scr@local@levelincrease}{%
|
|
\RelaxFamilyKey[.dsc]{KOMAarg}{increaselevel}%
|
|
}{%
|
|
\FamilyCounterMacroKey[.dsc]{KOMAarg}{increaselevel}[1]%
|
|
{\scr@local@levelincrease}%
|
|
}%
|
|
% \end{macrocode}
|
|
% \begin{description}\item[\texttt{level}] nummerische
|
|
% Gliederungsebene\end{description}
|
|
% \begin{macrocode}
|
|
\scr@ifundefinedorrelax{scr@local@leveloffset}{%
|
|
\edef\reserved@a{%
|
|
\noexpand\FamilyCounterMacroKey[.dsc]{KOMAarg}{level}{%
|
|
\expandafter\noexpand\csname \scr@dsc@current numdepth\endcsname}%
|
|
}\reserved@a
|
|
}{%
|
|
\edef\reserved@a{%
|
|
\noexpand\DefineFamilyKey[.dsc]{KOMAarg}{level}{%
|
|
\noexpand\FamilySetCounterMacro{KOMAarg}{level}{%
|
|
\expandafter\noexpand\csname \scr@dsc@current numdepth\endcsname
|
|
}%
|
|
\unexpanded{%
|
|
{\numexpr ##1+\scr@local@leveloffset\relax}%
|
|
\edef\scr@local@leveloffset{%
|
|
\the\numexpr\scr@local@leveloffset+\scr@local@levelincrease\relax
|
|
}%
|
|
}%
|
|
}%
|
|
}\reserved@a
|
|
}%
|
|
% \end{macrocode}
|
|
% \changes{v3.19}{2015/09/09}{neue Eigenschaft \texttt{counterwithout}}
|
|
% \begin{description}\item[\texttt{counterwithout}] Der Zähler dieser Ebene
|
|
% soll nicht länger abhängen vom angegebenen Zähler.
|
|
% \end{description}
|
|
% \begin{macrocode}
|
|
\FamilyStringKey[.dsc]{KOMAarg}{counterwithout}{\scr@local@counterwithout}%
|
|
\let\scr@local@counterwithout\relax
|
|
% \end{macrocode}
|
|
% \begin{description}\item[\texttt{counterwithin}] Der Zähler dieser Ebene
|
|
% soll abhängen vom angegebenen Zähler.
|
|
% \end{description}
|
|
% \begin{macrocode}
|
|
\FamilyStringKey[.dsc]{KOMAarg}{counterwithin}{\scr@local@counterwithin}%
|
|
\let\scr@local@counterwithin\relax
|
|
% \end{macrocode}
|
|
% \begin{description}
|
|
% \item[\texttt{toclevel}] Ebene im Inhaltsverzeichnis (Voreinstellung ist
|
|
% derselbe Wert wie für level); diese Option gibt es nur, wenn der
|
|
% Verzeichnisstil sie unterstützt (was jeder Verzeichnisstil
|
|
% sollte); wenn allerdings ein Offset dafür definiert ist, dann wird die
|
|
% Option nicht einfach an den Stil weitergereicht, muss also noch einmal
|
|
% umdefiniert werden.
|
|
% \end{description}
|
|
% \begin{macrocode}
|
|
\scr@ifundefinedorrelax{scr@local@tocleveloffset}{}{%
|
|
\scr@ifundefinedorrelax{KV@KOMAarg.dsc@toclevel}{%
|
|
}{%
|
|
\DefineFamilyKey[.dsc]{KOMAarg}{toclevel}{%
|
|
\edef\reserved@a{%
|
|
\noexpand\l@addto@macro{\noexpand\scr@dsc@tocstyle@options}{%
|
|
level=\the\numexpr ##1+\scr@local@tocleveloffset\relax,%
|
|
}%
|
|
}\reserved@a
|
|
\edef\scr@local@tocleveloffset{%
|
|
\the\numexpr\scr@local@tocleveloffset+\scr@local@levelincrease\relax
|
|
}%
|
|
\FamilyKeyStateProcessed
|
|
}%
|
|
}%
|
|
}%
|
|
% \end{macrocode}
|
|
% \changes{v3.20}{2015/11/12}{Optionen werden nur temporär definiert}%^^A
|
|
% Optionen ausführen und anschließend wieder freigeben.
|
|
% \begin{macrocode}
|
|
\FamilyExecuteOptions[.dsc]{KOMAarg}{#1}%
|
|
\scr@dsc@extra@relax@opts
|
|
\let\scr@dsc@extra@relax@opts\relax
|
|
\RelaxSectionCommandOptions
|
|
\RelaxFamilyKey[.dsc]{KOMAarg}{style}%
|
|
\RelaxFamilyKey[.dsc]{KOMAarg}{tocstyle}%
|
|
\RelaxFamilyKey[.dsc]{KOMAarg}{expandtopt}%
|
|
\scr@ifundefinedorrelax{scr@local@levelincrease}{}{%
|
|
\RelaxFamilyKey[.dsc]{KOMAarg}{increaselevel}%
|
|
}%
|
|
\RelaxFamilyKey[.dsc]{KOMAarg}{level}%
|
|
\RelaxFamilyKey[.dsc]{KOMAarg}{counterwithin}%
|
|
% \end{macrocode}
|
|
% Testen, ob alle benötigten Optionen für die (Um-)Definierung des
|
|
% Gliederungsbefehls gesetzt sind,
|
|
% \changes{v3.27}{2019/02/07}{\texttt{level} darf nicht -\cs{maxdimen}
|
|
% sein}%^^A
|
|
% wobei \texttt{level} nicht -\cs{maxdimen} ist:
|
|
% \begin{macrocode}
|
|
\begingroup
|
|
\def\local@endgroup{\endgroup}%
|
|
\scr@ifundefinedorrelax{\scr@dsc@current numdepth}{%
|
|
\scr@declaresectioncommanderror{\scr@dsc@current}{section level}{level}%
|
|
}{%
|
|
\expandafter\ifnum \csname #2numdepth\endcsname>-\maxdimen
|
|
\@nameuse{scr@dsc@style@%
|
|
\@nameuse{scr@\scr@dsc@current @style}%
|
|
@neededoptionstest}%
|
|
\else
|
|
\ClassError{\KOMAClassName}{%
|
|
`level' must be > -\the\numexpr\maxdimen\relax
|
|
}{%
|
|
KOMA-Script internally sets `secnumdepth' to
|
|
-\the\numexpr\maxdimen\relax\space
|
|
to locally switch of\MessageBreak
|
|
the numbering, i.e., inside running heads.\MessageBreak
|
|
Because of this, you can define section commands with\MessageBreak
|
|
`level' greater than -\the\numexpr\maxdimen\relax\space only.%
|
|
}%
|
|
\let\local@endgroup\endgroup
|
|
\aftergroup\@gobbletwo
|
|
\fi
|
|
}%
|
|
\local@endgroup
|
|
% \end{macrocode}
|
|
% Wenn alle Informationen für die (Um-)Definierung des Gliederungsbefehls
|
|
% zusammen sind \dots
|
|
% \begin{macrocode}
|
|
\@firstofone{%
|
|
% \end{macrocode}
|
|
% Zunächst sicherstellen, dass der Zähler existiert und ggf. dessen
|
|
% Ausgabe anpassen:
|
|
% \changes{v3.20}{2015/10/15}{fehlendes \cs{expandafter} ergänzt}%^^A
|
|
% \begin{macrocode}
|
|
\@ifundefined{c@#2}{\newcounter{#2}}{}%
|
|
\ifx\scr@local@counterwithout\relax
|
|
\else\ifx\scr@local@counterwithout\@empty
|
|
\else
|
|
\@removefromreset{#2}{\scr@local@counterwithout}%
|
|
\fi
|
|
\@namedef{the#2}{\arabic{#2}}%
|
|
\fi
|
|
\ifx\scr@local@counterwithin\relax
|
|
\else\ifx\scr@local@counterwithin\@empty
|
|
\@namedef{the#2}{\arabic{#2}}%
|
|
\else
|
|
\@removefromreset{#2}{\scr@local@counterwithin}%
|
|
\@addtoreset{#2}{\scr@local@counterwithin}%
|
|
\expandafter\def\csname the#2\expandafter\endcsname\expandafter{%
|
|
\csname the\scr@local@counterwithin\endcsname.\arabic{#2}}%
|
|
\fi
|
|
\fi
|
|
\@ifundefined{#2format}{%
|
|
\@namedef{#2format}{\csname the#2\endcsname\autodot\enskip}%
|
|
}{}%
|
|
% \end{macrocode}
|
|
% Dann den eigentlichen Gliederungsbefehl definieren:
|
|
% \begin{macrocode}
|
|
\ifscr@dsc@parametersonly
|
|
\ClassInfo{\KOMAClassName}{%
|
|
not defining `\expandafter\string\csname #2\endcsname' due
|
|
to\MessageBreak
|
|
empty section style option%
|
|
}%
|
|
\else
|
|
\scr@ifundefinedorrelax{%
|
|
scr@dsc@def@style@\@nameuse{scr@#2@style}@command%
|
|
}{%
|
|
\ClassWarning{\KOMAClassName}{%
|
|
not defining `\expandafter\string\csname #2\endcsname'
|
|
due\MessageBreak
|
|
to not yet defined section style\MessageBreak
|
|
`\@nameuse{scr@#2@style}'%
|
|
}%
|
|
}{%
|
|
\@nameuse{scr@dsc@def@style@\@nameuse{scr@#2@style}@command}{#2}%
|
|
}%
|
|
\fi
|
|
% \end{macrocode}
|
|
% Zu jedem Gliederungsbefehl gehört auch ein Befehl für den Kolumnentitel, der
|
|
% bei \KOMAScript{} außerdem eine Formatierung des Zählers benötigt. Falls
|
|
% \textsf{scrlayer} geladen ist, wird das über dessen Befehl
|
|
% |\DeclareSectionNumberDepth| erledigt, sonst direkt:
|
|
% \changes{v3.15a}{2015/01/21}{fix: \cs{endskip} statt \cs{enskip}}%^^A
|
|
% \begin{macrocode}
|
|
\@ifundefined{DeclareSectionNumberDepth}{%
|
|
\@ifundefined{#2markformat}{%
|
|
\@namedef{#2markformat}{\csname the#2\endcsname\autodot\enskip}%
|
|
}{}%
|
|
\@ifundefined{#2mark}{%
|
|
\expandafter\let\csname #2mark\endcsname\@gobble
|
|
}{}%
|
|
}{%
|
|
\DeclareSectionNumberDepth{#2}{\csname #2numdepth\endcsname}%
|
|
}%
|
|
% \end{macrocode}
|
|
% Und es gehören Befehle dazu, um einen Eintrag ins Inhaltsverzeichnis zu
|
|
% schreiben und den Eintrag auch darzustellen:
|
|
% \begin{macrocode}
|
|
\expandafter\providecommand\expandafter*%
|
|
\csname add#2tocentry\endcsname[2]{%
|
|
\addtocentrydefault{#2}{##1}{##2}%
|
|
}%
|
|
\scr@ifundefinedorrelax{scr@tso@#2@style}{%
|
|
\expandafter\let\csname scr@tso@#2@style\expandafter\endcsname
|
|
\csname scr@dte@#2@style\endcsname
|
|
}{}%
|
|
\scr@ifundefinedorrelax{scr@tso@#2@style}{%
|
|
}{%
|
|
\DeclareTOCStyleEntry[\scr@dsc@tocstyle@options]{%
|
|
\@nameuse{scr@tso@#2@style}%
|
|
}{#2}%
|
|
}%
|
|
\scr@ifundefinedorrelax{l@#2}{%
|
|
\DeclareTOCStyleEntry[\scr@dsc@tocstyle@options]{default}{#2}%
|
|
}{}%
|
|
% \end{macrocode}
|
|
% \changes{v3.20}{2015/0/07}{\textsf{hyperref} bei den Ebenen der
|
|
% Verzeichniseinträge berücksichtigen}%^^A
|
|
% \changes{v3.26}{2018/06/27}{Einstellungen von \textsl{hyperref}
|
|
% überschreiben}%^^A
|
|
% \changes{v3.26}{2018/06/27}{Notfallbehandlung für Lücken in den
|
|
% Bookmark-Ebenen}%^^A
|
|
% \begin{macrocode}
|
|
\if@atdocument
|
|
\let\reserved@a\@firstofone
|
|
\else
|
|
\@ifpackageloaded{hyperref}{%
|
|
\let\reserved@a\@firstofone
|
|
}{%
|
|
\def\reserved@a##1{%
|
|
\AfterAtEndOfPackage{hyperref}{\AtBeginDocument{##1}}%
|
|
}%
|
|
}%
|
|
\fi
|
|
\reserved@a{%
|
|
\expandafter\let\csname toclevel@#2\expandafter\endcsname
|
|
\csname #2tocdepth\endcsname
|
|
\scr@ifundefinedorrelax{bookmarksetup}{%
|
|
\scr@ifundefinedorrelax{scr@min@toclevel}{%
|
|
\expandafter\let\expandafter\scr@min@toclevel
|
|
\csname toclevel@#2\endcsname
|
|
}{%
|
|
\expandafter\ifnum \csname toclevel@#2\endcsname
|
|
< \numexpr \scr@min@toclevel-1\relax
|
|
\ClassWarning{\KOMAClassName}{%
|
|
Trying emergency fix for bookmark level gap,\MessageBreak
|
|
because toclevel of `#2'
|
|
(\csname toclevel@#2\endcsname)\MessageBreak
|
|
is more than 1 lower than currently lowest\MessageBreak
|
|
known level (\scr@min@toclevel).\MessageBreak
|
|
Note: This fix can fail and you should load\MessageBreak
|
|
package `bookmark' to avoid usage of this\MessageBreak
|
|
fix%
|
|
}%
|
|
\expandafter\edef\csname toclevel@#2\endcsname{%
|
|
\the\numexpr \scr@min@toclevel-1\relax
|
|
}%
|
|
\fi
|
|
\expandafter\ifnum \csname toclevel@#2\endcsname
|
|
< \scr@min@toclevel\relax
|
|
\expandafter\let\expandafter\scr@min@toclevel
|
|
\csname toclevel@#2\endcsname
|
|
\fi
|
|
}%
|
|
\scr@ifundefinedorrelax{scr@max@toclevel}{%
|
|
\expandafter\let\expandafter\scr@max@toclevel
|
|
\csname toclevel@#2\endcsname
|
|
}{%
|
|
\expandafter\ifnum \csname toclevel@#2\endcsname
|
|
> \numexpr \scr@max@toclevel+1\relax
|
|
\ClassWarning{\KOMAClassName}{%
|
|
Trying emergency fix for bookmark level gap,\MessageBreak
|
|
because toclevel of `#2'
|
|
(\csname toclevel@#2\endcsname)\MessageBreak
|
|
is more than 1 greater than currently highest\MessageBreak
|
|
known level (\scr@max@toclevel).\MessageBreak
|
|
Note: This fix can fail and you should load\MessageBreak
|
|
package `bookmark' to avoid usage of this\MessageBreak
|
|
fix%
|
|
}%
|
|
\expandafter\edef\csname toclevel@#2\endcsname{%
|
|
\the\numexpr \scr@max@toclevel+1\relax
|
|
}%
|
|
\fi
|
|
\expandafter\ifnum \csname toclevel@#2\endcsname
|
|
> \scr@max@toclevel\relax
|
|
\expandafter\let\expandafter\scr@max@toclevel
|
|
\csname toclevel@#2\endcsname
|
|
\fi
|
|
}%
|
|
}{}%
|
|
}%
|
|
}%
|
|
}%
|
|
\let\scr@dsc@current\relax
|
|
}
|
|
% \end{macrocode}
|
|
% \begin{macro}{\scr@declaresectioncommanderror}
|
|
% \changes{v3.15}{2014/11/21}{neue (interne) Anweisung}%^^A
|
|
% Gibt einen Fehler aus, falls \cs{DeclareSectionCommand} zu wenige Optionen
|
|
% übergeben wurde. Das erste Argument ist der Name des zu deklarierenden
|
|
% Befehls, das zweite ist eine textuelle Beschreibung der fehlenden Option und
|
|
% das dritte ist der Name der fehlenden Option. Als Seiteneffekt sorgt der
|
|
% Befehl dafür, dass die Deklaration nicht stattfindet.
|
|
% \begin{macrocode}
|
|
\newcommand*{\scr@declaresectioncommanderror}[3]{%
|
|
\ClassError{\KOMAClassName}{%
|
|
#2 of \expandafter\string\csname #1\endcsname\space unknown%
|
|
}{%
|
|
Please use option `#3' to declare the #2.\MessageBreak
|
|
If you'll continue, declaration will be ignored%
|
|
}%
|
|
\let\local@endgroup\endgroup
|
|
\aftergroup\@gobbletwo
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@declaresectioncommanderror
|
|
% \begin{macro}{\scr@declaresectioncommandwarning}
|
|
% \changes{v3.24}{2017/04/25}{neue (interne) Anweisung}%^^A
|
|
% In einigen Fällen genügt es hingegen eine Warnung oder Info für fehlende
|
|
% Optionen auszugeben und einen Defaultwert zu verwenden. Das erste Argument
|
|
% ist auch hier der Name des zu deklarierenden Befehls, das zweite eine
|
|
% textuelle Beschreibung der fehlenden Option und das dritte der Name der
|
|
% fehlenden Option. Das vierte ist der Defaultwert, der ersatzweise verwendet
|
|
% wird. Der Befehl hat wie \cs{scr@declaresectioncommanderror} einen
|
|
% Seiteneffekt. In diesem Fall wird \cs{local@endgroup} um das fünfte Argument
|
|
% erweitert.
|
|
% \begin{macrocode}
|
|
\newcommand*{\scr@declaresectioncommandwarning}[5]{%
|
|
\ClassInfo{\KOMAClassName}{%
|
|
#2 of \expandafter\string\csname #1\endcsname\space unknown.\MessageBreak
|
|
You should use option `#3' if you\MessageBreak
|
|
do not want to use the default value\MessageBreak
|
|
`\detokenize{#4}'%
|
|
}%
|
|
\l@addto@macro\local@endgroup{#5}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@declaresectioncommandwarning
|
|
% \end{macro}%^^A \DeclareSectionCommand
|
|
%
|
|
% \begin{macro}{\DeclareNewSectionCommand}
|
|
% \changes{v3.15}{2014/11/21}{neue Anweisung}%^^A
|
|
% \changes{v3.25}{2018/03/10}{zusätzliche Tests und Fehlermeldungen bei
|
|
% \cs{the\dots}, \cs{\dots mark}, \cs{\dots format},
|
|
% \cs{\dots markformat}}%^^A
|
|
% \changes{v3.30}{2020/04/08}{unerwünschte Leerzeichen eliminiert}%^^A
|
|
% Basierend auf |\DeclareSectionCommand| wird eine Gliederungsanweisung
|
|
% definiert, die zuvor noch nicht existierte. Wichtig zu bemerken ist, dass
|
|
% die ganzen Hilfsanweisungen bereits existieren dürfen.
|
|
% \begin{macrocode}
|
|
\newcommand*{\DeclareNewSectionCommand}[2][]{%
|
|
\@ifundefined{#2}{%
|
|
\@tempswatrue
|
|
\let\reserved@b\@empty
|
|
\@for \reserved@a:=the#2,#2mark,#2format,#2markformat\do{%
|
|
\expandafter\scr@ifundefinedorrelax\expandafter{\reserved@a}{}{%
|
|
\@tempswafalse
|
|
\edef\reserved@b{\expandafter\string\csname \reserved@a\endcsname}%
|
|
}%
|
|
}%
|
|
\if@tempswa
|
|
% \end{macrocode}
|
|
% \changes{v3.30}{2020/04/08}{erweiterte Neuheitsprüfung}%^^A
|
|
% Es wird der Stil benötigt, um zu ermitteln, ob die Unterbefehle für diesen
|
|
% Stil möglicherweise bereits definiert sind.
|
|
% \begin{macrocode}
|
|
\expandafter\let\expandafter\scr@dsc@current
|
|
\csname scr@tso@##2@style\endcsname
|
|
\DefineFamilyKey[.dsc]{KOMAarg}{style}{%
|
|
\edef\scr@dsc@current{##1}%
|
|
\FamilyKeyStateProcessed
|
|
}%
|
|
\DefineFamilyKey[.dsc]{KOMAarg}{@else@}{\FamilyKeyStateProcessed}%
|
|
\FamilyExecuteOptions[.dsc]{KOMAarg}{#1}%
|
|
\RelaxFamilyKey[.dsc]{KOMAarg}{@else@}%
|
|
\RelaxFamilyKey[.dsc]{KOMAarg}{style}%
|
|
\@tempswatrue
|
|
% \end{macrocode}
|
|
% Wenn der Stil definiert ist und Unterbefehle kennt, diese ebenfalls testen.
|
|
% \begin{macrocode}
|
|
\@ifundefined{scr@dsc@current}{}{%
|
|
\scr@ifundefinedorrelax{scr@dsc@style@\scr@dsc@current @subcommands}{%
|
|
}{%
|
|
\edef\reserved@b{%
|
|
\csname scr@dsc@style@\scr@dsc@current @subcommands\endcsname{#2}%
|
|
}%
|
|
\expandafter\@for\expandafter\reserved@a\expandafter:\expandafter=%
|
|
\reserved@b\do{%
|
|
\expandafter\scr@ifundefinedorrelax\expandafter{\reserved@a}{}{%
|
|
\@tempswafalse
|
|
\edef\reserved@b{%
|
|
\expandafter\string\csname \reserved@a\endcsname}%
|
|
}%
|
|
}%
|
|
}
|
|
}%
|
|
\let\scr@dsc@current\relax
|
|
\fi
|
|
\if@tempswa
|
|
\DeclareSectionCommand[{#1}]{#2}%
|
|
\else
|
|
\ClassError{\KOMAClassName}{%
|
|
command `\reserved@b' already defined%
|
|
}{%
|
|
You've tried to define the section command `\expandafter\string\csname
|
|
#2\endcsname' newly.\MessageBreak
|
|
Such a section command needs an additional new command
|
|
`\reserved@b',\MessageBreak
|
|
but this already exists. So you cannot define
|
|
`\expandafter\string\csname #2\endcsname' newly.\MessageBreak
|
|
Maybe you should use one of \string\DeclareSectionCommand,
|
|
\string\RedeclareSectionCommand,\MessageBreak
|
|
or \string\ProvideSectionCommand.\MessageBreak
|
|
If you'll continue, the command will be ignored.%
|
|
}%
|
|
\fi
|
|
}{%
|
|
\ClassError{\KOMAClassName}{%
|
|
command `\expandafter\string\csname #2\endcsname' already defined%
|
|
}{%
|
|
You've tried to define the section command `\expandafter\string\csname
|
|
#2\endcsname' newly,\MessageBreak
|
|
but a command or something else with this name already
|
|
exists.\MessageBreak
|
|
Maybe you should use one of \string\DeclareSectionCommand,
|
|
\string\RedeclareSectionCommand,\MessageBreak
|
|
or \string\ProvideSectionCommand.\MessageBreak
|
|
If you'll continue, the command will be ignored.%
|
|
}%
|
|
}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \DeclareNewSectionCommand
|
|
%
|
|
% \begin{macro}{\RedeclareSectionCommand}
|
|
% \changes{v3.15}{2014/11/21}{neue Anweisung}%^^A
|
|
% Basierend auf |\DeclareSectionCommand| wird eine Gliederungsanweisung
|
|
% umdefiniert, die zuvor bereits existierte. Wichtig zu bemerken ist, dass
|
|
% die ganzen Hilfsanweisungen nicht zu exisieren brauchen.
|
|
% \begin{macrocode}
|
|
\newcommand*{\RedeclareSectionCommand}[2][]{%
|
|
\@ifundefined{#2}{%
|
|
\ClassError{\KOMAClassName}{%
|
|
command `\expandafter\string\csname #2\endcsname' not defined%
|
|
}{%
|
|
You've tried to re-define the section command `\expandafter\string\csname
|
|
#2\endcsname',\MessageBreak
|
|
but a command with this name does not exists.\MessageBreak
|
|
Maybe you should use one of \string\DeclareSectionCommand,
|
|
\string\DeclareNewSectionCommand,\MessageBreak
|
|
or \string\ProvideSectionCommand.\MessageBreak
|
|
If you'll continue, the command will be irgnored.%
|
|
}%
|
|
}{%
|
|
\DeclareSectionCommand[{#1}]{#2}%
|
|
}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \RedeclareSectionCommand
|
|
%
|
|
% \begin{macro}{\ProvideSectionCommand}
|
|
% \changes{v3.15}{2014/11/21}{neue Anweisung}%^^A
|
|
% Basierend auf |\DeclareSectionCommand| wird eine Gliederungsanweisung
|
|
% definiert, wenn sie zuvor noch nicht existierte. Wichtig zu bemerken ist,
|
|
% dass die ganzen Hilfsanweisungen bereits existieren dürfen.
|
|
% \begin{macrocode}
|
|
\newcommand*{\ProvideSectionCommand}[2][]{%
|
|
\@ifundefined{#2}{%
|
|
\DeclareSectionCommand[{#1}]{#2}%
|
|
}{%
|
|
\ClassInfo{\KOMAClassName}{%
|
|
\string\ProvideSectionCommand{#1} ignored%
|
|
}%
|
|
}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \ProvideSectionCommand
|
|
%
|
|
% \begin{macro}{\DeclareSectionCommands}
|
|
% \changes{v3.15}{2014/12/03}{neue Anweisung}%^^A
|
|
% \changes{v3.26}{2018/08/29}{\cs{scr@trim@spaces} eingefügt}%^^A
|
|
% Basierend auf \cs{DeclareSectionCommand} können gleich mehrere
|
|
% Gliederungsanweisungen definiert werden. Dabei sorgt Option
|
|
% \texttt{increaselevel} dafür, dass die Werte von \texttt{level} und
|
|
% \texttt{toclevel} automatisch von Befehl zu Befehl um den angegebenen Wert
|
|
% (Default ist 1) erhöht werden.
|
|
% \begin{macrocode}
|
|
\newcommand*{\DeclareSectionCommands}[2][]{%
|
|
\edef\reserved@a{#2}%
|
|
\def\scr@local@levelincrease{\z@}%
|
|
\def\scr@local@leveloffset{\z@}%
|
|
\def\scr@local@tocleveloffset{\z@}%
|
|
\@for\reserved@a:=\reserved@a\do{%
|
|
\scr@trim@spaces\reserved@a
|
|
\edef\reserved@a{%
|
|
\unexpanded{\DeclareSectionCommand[{#1}]}{\reserved@a}%
|
|
}%
|
|
\reserved@a
|
|
}%
|
|
\let\scr@local@levelincrease\relax
|
|
\let\scr@local@leveloffset\relax
|
|
\let\scr@local@tocleveloffset\relax
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \DeclareSectionCommands
|
|
%
|
|
% \begin{macro}{\DeclareNewSectionCommands}
|
|
% \changes{v3.15}{2014/12/03}{neue Anweisung}%^^A
|
|
% \changes{v3.26}{2018/08/29}{\cs{scr@trim@spaces} eingefügt}%^^A
|
|
% Im Unterschied zu \cs{DeclareNewSectionCommand} führt diese Anweisung die
|
|
% Änderung auch dann aus, wenn die Anweisung bereits deklariert war. Eine
|
|
% Fehlermeldung wird aber natürlich trotzdem ausgegeben. Dieser Unterschied
|
|
% ist jedoch notwendig, weil sonst Option \texttt{increaselevel} für
|
|
% nachfolgende Befehle nicht mehr korrekt arbeiten würde.
|
|
% \begin{macrocode}
|
|
\newcommand*{\DeclareNewSectionCommands}[2][]{%
|
|
\edef\reserved@a{#2}%
|
|
\def\scr@local@levelincrease{\z@}%
|
|
\def\scr@local@leveloffset{\z@}%
|
|
\def\scr@local@tocleveloffset{\z@}%
|
|
\@for\reserved@a:=\reserved@a\do{%
|
|
\scr@trim@spaces\reserved@a
|
|
\@ifundefined{\reserved@a}{}{%
|
|
\ClassError{\KOMAClassName}{%
|
|
command `\expandafter\string\csname\reserved@a\endcsname' already
|
|
defined%
|
|
}{%
|
|
You've tried to define the section command
|
|
`\expandafter\string\csname\reserved@a\endcsname' newly,\MessageBreak
|
|
but a command, token, box or length with this name already
|
|
exists.\MessageBreak
|
|
Maybe you should use one of \string\DeclareSectionCommand,
|
|
\string\RedeclareSectionCommand,\MessageBreak
|
|
or \string\ProvideSectionCommand.\MessageBreak
|
|
Nevertheless, if you'll continue, the command will be defined.%
|
|
}%
|
|
}%
|
|
\edef\reserved@a{%
|
|
\unexpanded{\DeclareSectionCommand[{#1}]}{\reserved@a}%
|
|
}%
|
|
\reserved@a
|
|
}%
|
|
\let\scr@local@levelincrease\relax
|
|
\let\scr@local@leveloffset\relax
|
|
\let\scr@local@tocleveloffset\relax
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \DeclareNewSectionCommands
|
|
%
|
|
% \begin{macro}{\RedeclareSectionCommands}
|
|
% \changes{v3.15}{2014/12/03}{neue Anweisung}%^^A
|
|
% \changes{v3.26}{2018/08/29}{\cs{scr@trim@spaces} eingefügt}%^^A
|
|
% Im Unterschied zu \cs{RedeclareNewSectionCommands} führt diese Anweisung die
|
|
% Änderung auch dann aus, wenn die Anweisung noch nicht deklariert war. Eine
|
|
% Fehlermeldung wird aber natürlich trotzdem ausgegeben. Dieser Unterschied
|
|
% ist jedoch notwendig, weil sonst Option \texttt{increaselevel} für
|
|
% nachfolgende Befehle nicht mehr korrekt arbeiten würde.
|
|
% \begin{macrocode}
|
|
\newcommand*{\RedeclareSectionCommands}[2][]{%
|
|
\edef\reserved@a{#2}%
|
|
\def\scr@local@levelincrease{\z@}%
|
|
\def\scr@local@leveloffset{\z@}%
|
|
\def\scr@local@tocleveloffset{\z@}%
|
|
\@for\reserved@a:=\reserved@a\do{%
|
|
\scr@trim@spaces\reserved@a
|
|
\@ifundefined{\reserved@a}{%
|
|
\ClassError{\KOMAClassName}{%
|
|
command `\expandafter\string\csname\reserved@a\endcsname' not defined%
|
|
}{%
|
|
You've tried to re-define the section command
|
|
`\expandafter\string\csname\reserved@a\endcsname',\MessageBreak
|
|
but a command with this name does not exists.\MessageBreak
|
|
Maybe you should use one of \string\DeclareSectionCommand,
|
|
\string\DeclareNewSectionCommand,\MessageBreak
|
|
or \string\ProvideSectionCommand.\MessageBreak
|
|
Nevertheless, if you'll continue, the command will be defined.%
|
|
}%
|
|
}{}%
|
|
\edef\reserved@a{%
|
|
\unexpanded{\DeclareSectionCommand[{#1}]}{\reserved@a}%
|
|
}%
|
|
\reserved@a
|
|
}%
|
|
\let\scr@local@levelincrease\relax
|
|
\let\scr@local@leveloffset\relax
|
|
\let\scr@local@tocleveloffset\relax
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \RedeclareSectionCommands
|
|
%
|
|
% \begin{macro}{\ProvideSectionCommands}
|
|
% \changes{v3.15}{2014/12/03}{neue Anweisung}%^^A
|
|
% \changes{v3.17}{2015/03/23}{Umbau, um stilabhängige Optionen zu
|
|
% ermöglichen}%^^A
|
|
% \changes{v3.26}{2018/08/29}{\cs{scr@trim@spaces} eingefügt}%^^A
|
|
% Hier wird es nun wirklich schwierig, weil wir irgendwie dafür sorgen müssen,
|
|
% dass Option \texttt{increaselevel} funktioniert, auch wenn gar nichts
|
|
% definiert werden darf. Das macht die Geschichte ein wenig auswändig.
|
|
% \begin{macrocode}
|
|
\newcommand*{\ProvideSectionCommands}[2][]{%
|
|
\edef\reserved@a{#2}%
|
|
\def\scr@local@levelincrease{\z@}%
|
|
\def\scr@local@leveloffset{\z@}%
|
|
\def\scr@local@tocleveloffset{\z@}%
|
|
\@for\reserved@a:=\reserved@a\do{%
|
|
\scr@trim@spaces\reserved@a
|
|
\@ifundefined{\reserved@a}{%
|
|
\edef\reserved@a{%
|
|
\unexpanded{\DeclareSectionCommand[{#1}]}{\reserved@a}%
|
|
}%
|
|
\reserved@a
|
|
}{%
|
|
% \end{macrocode}
|
|
% Wenn die Anweisung bereits definiert ist, dann müssen wir trotzdem die
|
|
% Optionen auswerten, wobei allerdings nur die Option \texttt{level} und
|
|
% \texttt{increaselevel} eine Wirkung haben dürfen. Der Rest wird per
|
|
% \texttt{@else}-Optionen erledigt.
|
|
% \begin{macrocode}
|
|
\DefineFamilyKey[.dsc]{KOMAarg}{@else@}{\FamilyKeyStateProcessed}%
|
|
\FamilyCounterMacroKey[.dsc]{KOMAarg}{increaselevel}[1]%
|
|
{\scr@local@levelincrease}%
|
|
\DefineFamilyKey[.dsc]{KOMAarg}{level}{%
|
|
\FamilySetCounterMacro{KOMAarg}{level}{\reserved@b}{##1}%
|
|
\edef\scr@local@leveloffset{%
|
|
\the\numexpr\scr@local@leveloffset+\scr@local@levelincrease\relax
|
|
}%
|
|
}%
|
|
\DefineFamilyKey[.dsc]{KOMAarg}{toclevel}{%
|
|
\FamilySetCounterMacro{KOMAarg}{toclevel}{\reserved@b}{##1}%
|
|
\edef\scr@local@tocleveloffset{%
|
|
\the\numexpr\scr@local@tocleveloffset+\scr@local@levelincrease\relax
|
|
}%
|
|
}%
|
|
\FamilyExecuteOptions[.dsc]{KOMAarg}{#1}%
|
|
\RelaxFamilyKey[.dsc]{KOMAarg}{toclevel}%
|
|
\RelaxFamilyKey[.dsc]{KOMAarg}{level}%
|
|
\RelaxFamilyKey[.dsc]{KOMAarg}{increaselevel}%
|
|
\RelaxFamilyKey[.dsc]{KOMAarg}{@else@}%
|
|
}%
|
|
}%
|
|
\let\scr@local@levelincrease\relax
|
|
\let\scr@local@leveloffset\relax
|
|
\let\scr@local@tocleveloffset\relax
|
|
}
|
|
%</body>
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \ProvideSectionCommands
|
|
%
|
|
% \begin{macro}{\IfSectionCommandStyleIs}
|
|
% \selectlanguage{english}%^^A
|
|
% \changes{v3.27}{2019/02/04}{new}%^^A
|
|
% Test whether ot not the section command of argument 1 has the style of
|
|
% argument 2. If so: use argument 3, of not: use argument 4.
|
|
% \begin{macrocode}
|
|
%<*body>
|
|
\newcommand*{\IfSectionCommandStyleIs}[2]{%
|
|
\scr@ifundefinedorrelax{#1}{%
|
|
\ClassError{\KOMAClassName}{%
|
|
\expandafter\string\csname #1\endcsname\space not defined}{%
|
|
You cannot compare the section command style of an undefined command.}%
|
|
}{%
|
|
\scr@ifundefinedorrelax{scr@#1@style}{%
|
|
\ClassError{\KOMAClassName}{%
|
|
\expandafter\string\csname #1\endcsname\space not a valid section
|
|
command%
|
|
}{%
|
|
You cannot detect the section command style of a command, that
|
|
has\MessageBreak
|
|
never been defined as a section command by KOMA-Script.%
|
|
}%
|
|
}%
|
|
}%
|
|
\scr@ifundefinedorrelax{scr@dsc@def@style@#2@command}{%
|
|
\ClassError{\KOMAClassName}{%
|
|
unknown section command style `#2'%
|
|
}{}%
|
|
}%
|
|
\Ifstr{\@nameuse{scr@#1@style}}{#2}%
|
|
}
|
|
%</body>
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \begin{option}{bookmarkpackage}
|
|
% \selectlanguage{english}%^^A
|
|
% \changes{v3.26}{2018/06/27}{new option}%^^A
|
|
% Package \textsf{hyperref} has problems with bookmark level gaps. So if
|
|
% either the users omits a heading level or defines a heading with a level
|
|
% that distinguish more than one from the previous or following level, there
|
|
% would be a problem. One recommended solution for this would be to use
|
|
% package \textsf{bookmark}. So if we load this package, we can use the same
|
|
% value for bookmark levels and TOC levels even within
|
|
% \textsf{scrartcl}. Nevertheless we allow the user to decide not to use
|
|
% \textsf{bookmark}, but then it is not my fault, if something strange
|
|
% happens.
|
|
% \begin{macrocode}
|
|
%<*option>
|
|
\KOMA@ifkey{bookmarkpackage}{@scr@autoloadbookmarkpackage}
|
|
\@scr@autoloadbookmarkpackagetrue
|
|
\KOMA@kav@add{.\KOMAClassFileName}{bookmarkpackage}{true}
|
|
\AfterAtEndOfPackage{hyperref}{%
|
|
\AtBeginDocument{%
|
|
\@ifpackageloaded{bookmark}{}{%
|
|
\if@scr@autoloadbookmarkpackage
|
|
% \end{macrocode}
|
|
% \changes{v3.27}{2019/06/26}{try to translate \textsf{hyperref} driver to
|
|
% \textsf{bookmark} driver option}%^^A
|
|
% The name of the \textsf{hyperref} driver is in \cs{Hy@driver}. But
|
|
% \textsf{bookmark} does not provide the same drivers, so we try to translate
|
|
% the curreny known \textsf{hyperref} drivers to \textsf{bookmark}
|
|
% drivers. Also we do not load \textsf{bookmark} with a driver option but
|
|
% define \textsf{bookmark}'s \cs{BookmarkDriverDefault}.
|
|
% \begin{macrocode}
|
|
\scr@ifundefinedorrelax{Hy@driver}{%
|
|
\ClassWarning{\KOMAClassName}{%
|
|
`hyperref' loaded but `\string\Hy@driver' undefined.\MessageBreak
|
|
This should not happen!\MessageBreak
|
|
Maybe `hyperref' not loaded or unknown version?%
|
|
}%
|
|
}{%
|
|
% \end{macrocode}
|
|
% \changes{v3.28}{2019/11/18}{\cs{ifstr} umbenannt in \cs{Ifstr}}%^^A
|
|
% Note: \texttt{hpdftex}, \texttt{hluatex}, \texttt{hxetex} and \texttt{hvtex}
|
|
% do not need to be translated, because they are autodetected by
|
|
% \textsf{bookmark} as well. \texttt{hypertex}, \texttt{hdviwindo},
|
|
% \texttt{htex4ht} and \texttt{latex2html} are not known by \textsf{bookmark},
|
|
% so we stay with the default (usually \texttt{dvips}).
|
|
% \begin{macrocode}
|
|
\Ifstr{\Hy@driver}{hdvips}{%
|
|
\providecommand*{\BookmarkDriverDefault}{dvips}%
|
|
}{%
|
|
\Ifstr{\Hy@driver}{hdvipdfm}{%
|
|
\providecommand*{\BookmarkDriverDefault}{dvipdfm}%
|
|
}{%
|
|
\Ifstr{\Hy@driver}{hdvipson}{%
|
|
\providecommand*{\BookmarkDriverDefault}{dvipsone}%
|
|
}{%
|
|
\Ifstr{\Hy@driver}{htexture}{%
|
|
\providecommand*{\BookmarkDriverDefault}{textures}%
|
|
}{%
|
|
}%
|
|
}%
|
|
}%
|
|
}%
|
|
}%
|
|
\ClassInfo{\KOMAClassName}{%
|
|
loading recommended package `bookmark'.\MessageBreak
|
|
Using `bookmark' together with `hyperref' is
|
|
recommended,\MessageBreak
|
|
because of handling of possible bookmark level gaps.\MessageBreak
|
|
You can avoid loading `bookmark' with KOMA-Script
|
|
option\MessageBreak
|
|
`bookmarkpackage=false' before \string\begin{document}
|
|
and\MessageBreak
|
|
you can avoid this message adding:\MessageBreak
|
|
\space\space\string\usepackage
|
|
\scr@ifundefinedorrelax{BookmarkDriverDefault}{}{%
|
|
[\BookmarkDriverDefault]%
|
|
}{bookmark}\MessageBreak
|
|
before \string\begin{document}%
|
|
}%
|
|
\RequirePackage{bookmark}%
|
|
% \end{macrocode}
|
|
% \changes{v3.26b}{2019/01/17}{workaround for \cs{@beginmainauxhook} added}%^^A
|
|
% Sometimes \textsf{auxhook} is not able to recognize that it cannot use a
|
|
% patch of \cs{document} to execute \cs{@beginmainauxhook} if it is loaded via
|
|
% \cs{AtBeginDocument}. In this case we do it here.
|
|
% \begin{macrocode}
|
|
\ifx\@beginmainauxhook\relax
|
|
\else
|
|
\if@filesw
|
|
\ClassWarning{\KOMAClassName}{%
|
|
seems someone has broken package `auxhook'.\MessageBreak
|
|
Usually this happens, if `auxhook' is loaded or used\MessageBreak
|
|
implicitly or explicitly by patching
|
|
\string\document%
|
|
\scr@ifundefinedorrelax{AtEndPreamble}{}{%
|
|
\MessageBreak
|
|
or via etoolbox command \string\AtEndPreamble%
|
|
}.\MessageBreak
|
|
Trying an emergency workaround.\MessageBreak
|
|
You can avoid this warning adding:\MessageBreak
|
|
\space\space\string\usepackage{auxhook}\MessageBreak
|
|
before \string\begin{document}%
|
|
}%
|
|
\@beginmainauxhook
|
|
\fi
|
|
\fi
|
|
\fi
|
|
}%
|
|
}%
|
|
}
|
|
%</option>
|
|
%</class>
|
|
% \end{macrocode}
|
|
% \selectlanguage{ngerman}%^^A
|
|
% \end{option}%^^A bookmarkpackage
|
|
%
|
|
%
|
|
% \subsection{Definitionen für Präambeln}
|
|
%
|
|
% Bei den \KOMAScript-Klassen \textsf{scrbook} und \textsf{scrreprt}
|
|
% können \cs{part} und \cs{chapter} mit Präambeln versehen werden. Es
|
|
% wird gleichzeitig eine Präambel über und unter der jeweiligen
|
|
% Überschrift unterstützt.
|
|
%
|
|
% \begin{macro}{\use@preamble}
|
|
% \changes{v2.8p}{2001/09/25}{neu (intern)}%^^A
|
|
% Dieses Makro dient allgemein zum Setzen einer Präambel (für
|
|
% Gliederungsüberschriften), wenn eine solche definiert ist. Als
|
|
% Argument wird der Name der Präambel übergeben, an den automatisch
|
|
% \texttt{@preamble} angehängt wird. Zum Schluss wird die gespeicherte
|
|
% Präambel gelöscht.
|
|
% \begin{macrocode}
|
|
%<*class>
|
|
%<*book|report>
|
|
%<*body>
|
|
\newcommand*{\use@preamble}[1]{%
|
|
\@ifundefined{#1@preamble}{}{%
|
|
\@nameuse{#1@preamble}%
|
|
\global\expandafter\let\csname#1@preamble\endcsname=\relax
|
|
}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \begin{macro}{\set@preamble}
|
|
% \changes{v2.8p}{2001/09/25}{neu (intern)}%^^A
|
|
% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
|
|
% \cs{kernel@ifnextchar}}%^^A
|
|
% Das Makro \cs{set@preamble} dient allgemein der Defintion einer
|
|
% Präambel (für Gliederungsüberschriften). Als Argument wird der
|
|
% Name der Gliederungsebene übergeben. Danach folgt ein optionales
|
|
% Argument, das die Position der Präambel angibt. Darauf folgt ein
|
|
% weiteres optionales Argument, das die Breite der Präambel
|
|
% angibt. Ist nur ein optionales Argument angegeben, so ist es die
|
|
% Position. Es folgt ein obligatorisches Argument mit dem Inhalt der
|
|
% Präambel. Die Definition der Präambel erfolgt global.
|
|
% \begin{macro}{\set@@preamble}
|
|
% \changes{v2.8p}{2001/09/25}{neu (intern)}%^^A
|
|
% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
|
|
% \cs{kernel@ifnextchar}}%^^A
|
|
% \begin{macro}{\set@@@preamble}
|
|
% \changes{v2.8p}{2001/09/25}{neu (intern)}%^^A
|
|
% \begin{macro}{\set@@@@preamble}
|
|
% \changes{v2.8p}{2001/09/25}{neu (intern)}%^^A
|
|
% \changes{v2.8q}{2001/11/27}{fehlende Klammern ergänzt}%^^A
|
|
% \changes{v3.12}{2012/10/16}{b mit derselben Funktion wie u erlaubt}%^^A
|
|
% \changes{v3.12a}{2014/02/14}{b korrigiert}%^^A
|
|
% Da mehrere optionale Argumente nach einem obligatorischen Argument
|
|
% auszuwerten sind, werden diverse Hilfsmakros benötigt.
|
|
% \begin{macrocode}
|
|
\newcommand*{\set@preamble}[1]{%
|
|
% \end{macrocode}
|
|
% Zunächst wird das erste optionale Argument gesucht.
|
|
% \begin{macrocode}
|
|
\kernel@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}
|
|
\kernel@ifnextchar [%]
|
|
{\set@@@preamble{#1}[{#2}]}{\set@@@preamble{#1}[{#2}][\hsize]}%
|
|
}
|
|
\newcommand{\set@@@preamble}{}
|
|
\long\def\set@@@preamble#1[#2][#3]#4{%
|
|
% \end{macrocode}
|
|
% Dies ist das Hauptmakro, das die eigentliche Arbeit macht. Es muss
|
|
% \cs{long} definiert werden, da die Präambel auch aus mehreren
|
|
% Absätzen bestehen kann.
|
|
%
|
|
% Zunächst wird das Positionsargument ausgewertet. Dies geschieht mit
|
|
% lokalen Hilfsmakros und einer Schleife. Zur Funktion der Schleife
|
|
% siehe im dokumentierten \LaTeX-Kern.
|
|
% \begin{macrocode}
|
|
\begingroup
|
|
\def\prmbl@pos{#2}\let\prmbl@hpos\relax\let\prmbl@vpos\relax
|
|
\expandafter \@tfor \expandafter \@tempa
|
|
\expandafter :\expandafter =\prmbl@pos
|
|
\do{%
|
|
\if \@tempa l%
|
|
\set@preamble@hpos{0}{#2}%
|
|
\fi%
|
|
\if \@tempa c%
|
|
\set@preamble@hpos{1}{#2}%
|
|
\fi%
|
|
\if \@tempa r%
|
|
\set@preamble@hpos{2}{#2}%
|
|
\fi%
|
|
\if \@tempa u%
|
|
\set@preamble@vpos{0}{#2}%
|
|
\fi%
|
|
\if \@tempa b%
|
|
\set@preamble@vpos{0}{#2}%
|
|
\fi
|
|
\if \@tempa o%
|
|
\set@preamble@vpos{1}{#2}%
|
|
\fi%
|
|
\if \@tempa t%
|
|
\set@preamble@vpos{1}{#2}%
|
|
\fi
|
|
}%
|
|
% \end{macrocode}
|
|
% Wurde keine horizontale oder vertikale Ausrichtung definiert, so
|
|
% wird nun der Standardwert dafür eingesetzt.
|
|
% \begin{macrocode}
|
|
\@ifundefined{prmbl@hpos}{\def\prmbl@hpos{0}}{}%
|
|
\@ifundefined{prmbl@vpos}{\def\prmbl@vpos{0}}{}%
|
|
% \end{macrocode}
|
|
% Nun sind die Positionen ermittelt und es werden abhängig davon
|
|
% entsprechende Päambelmakros definiert.
|
|
% \begin{macrocode}
|
|
\ifcase\prmbl@hpos
|
|
% \end{macrocode}
|
|
% Zunächst links unten und oben:
|
|
% \begin{macrocode}
|
|
\ifcase\prmbl@vpos
|
|
\set@@@@preamble{#1@u}{t}{#3}{}{\hfil}{#4}%
|
|
\else
|
|
\set@@@@preamble{#1@o}{b}{#3}{}{\hfil}{#4}%
|
|
\fi
|
|
\or
|
|
% \end{macrocode}
|
|
% Dann zentriert unten und oben:
|
|
% \begin{macrocode}
|
|
\ifcase\prmbl@vpos
|
|
\set@@@@preamble{#1@u}{t}{#3}{\hfil}{\hfil}{#4}%
|
|
\else
|
|
\set@@@@preamble{#1@o}{b}{#3}{\hfil}{\hfil}{#4}%
|
|
\fi
|
|
\else
|
|
% \end{macrocode}
|
|
% Zum Schluss rechts und oben:
|
|
% \begin{macrocode}
|
|
\ifcase\prmbl@vpos
|
|
\set@@@@preamble{#1@u}{t}{#3}{\hfil}{}{#4}%
|
|
\else
|
|
\set@@@@preamble{#1@o}{b}{#3}{\hfil}{}{#4}%
|
|
\fi
|
|
\fi
|
|
\endgroup
|
|
}
|
|
% \end{macrocode}
|
|
% Es folgt das Makro, mit dem die Definition tatsächlich
|
|
% stattfindet. Das erste Argument ist der Name der Präambel, das
|
|
% zweite die Positionsoption für die verwendete \cs{parbox}, das
|
|
% dritte ist die Breite der \cs{parbox}, dann zwei Argumente mit der
|
|
% horizontalen Ausrichtung vor und nach der \cs{parbox} und das
|
|
% sechste Agument ist schließlich der Inhalt der \cs{parbox}.
|
|
% \begin{macrocode}
|
|
\newcommand{\set@@@@preamble}[6]{%
|
|
\expandafter\gdef\csname #1@preamble\endcsname{%
|
|
\hbox to\hsize{#4\parbox[{#2}]{#3}{#6\par}#5\par}%
|
|
}%
|
|
}
|
|
% \end{macrocode}
|
|
%
|
|
% \begin{macro}{\set@preamble@hpos}
|
|
% \changes{v2.8q}{2001/09/25}{neu (intern)}%^^A
|
|
% Eines der Hilfsmakros dient dazu, die horizontale Position der
|
|
% Präambel einzustellen, falls dies nicht bereits erfolgt ist. Ist es
|
|
% bereits nicht über"-einstimmend erfolgt, wird ein Fehler
|
|
% ausgegeben. Dieses Makro ist extrem intern und funktioniert nur im
|
|
% Kontext vor \cs{set@preamble}.
|
|
% \begin{macrocode}
|
|
\newcommand*{\set@preamble@hpos}[2]{%
|
|
\@ifundefined{prbml@hpos}{%
|
|
\def\prmbl@hpos{#1}%
|
|
}{%
|
|
\ifnum \prmbl@hpos=0\relax\else%
|
|
\ClassError{\KOMAClassName}{%
|
|
inconsistent hpos options%
|
|
}{%
|
|
You've said `#2' as position option. But you have
|
|
to\MessageBreak
|
|
use only one of `l', `r', or `c' not two of
|
|
these.\MessageBreak
|
|
If you'll continue only first hpos option will be
|
|
used%
|
|
}%
|
|
\fi
|
|
}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \set@preamble@hpos
|
|
% \begin{macro}{\set@preamble@vpos}
|
|
% \changes{v2.8q}{2001/09/25}{neu (intern)}%^^A
|
|
% Das Hilfsmakro für die vertikale Position funktioniert in gleicher
|
|
% Weise.
|
|
% \begin{macrocode}
|
|
\newcommand*{\set@preamble@vpos}[2]{%
|
|
\@ifundefined{prbml@vpos}{%
|
|
\def\prmbl@vpos{#1}%
|
|
}{%
|
|
\ifnum \prmbl@vpos=0\relax\else%
|
|
\ClassError{\KOMAClassName}{%
|
|
inconsistent vpos options%
|
|
}{%
|
|
You've said `#2' as position option. But you have
|
|
to\MessageBreak
|
|
use only one of `t', `o', `b', or `u' not two of
|
|
these.\MessageBreak
|
|
If you'll continue only first vpos option will be
|
|
used%
|
|
}%
|
|
\fi
|
|
}%
|
|
}
|
|
%</body>
|
|
%</book|report>
|
|
%</class>
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
%
|
|
% \subsubsection{\KOMAScript-eigene Befehle für Verzeichniseinträge}
|
|
% Wie schon bei den Gliederungsbefehlen genügt \KOMAScript{} nicht, was der
|
|
% \LaTeX-Kern für Verzeichniseinträge zu bieten hat.
|
|
%
|
|
% \begin{macro}{\bprot@dottedtocline}
|
|
% \changes{v2.96a}{2006/11/30}{neu (intern)}%^^A
|
|
% \changes{v3.27}{2019/02/25}{veraltet}%^^A
|
|
% Dieses Makro wird benötigt, um die Ebenen unterhalb von \cs{chapter}
|
|
% bzw. \cs{section} im Inhaltsverzeichnis ebenfalls vor unerwünschten
|
|
% Umbrüchen zwischen Eintrag und Unterebene zu schützen.
|
|
% \begin{macrocode}
|
|
%<*class>
|
|
%<*body>
|
|
\newcommand*{\bprot@dottedtocline}[5]{%
|
|
\expandafter\ifnum\scr@v@is@gt{2.96}\relax
|
|
\ClassWarning{\KOMAClassName}{%
|
|
usage of `\string\bprot@dottedtocline' is deprecated.\MessageBreak
|
|
Maybe an old auxiliary file has been used.\MessageBreak
|
|
Note, this command will be removed from\MessageBreak
|
|
KOMA-Script soon. So if this warning message\MessageBreak
|
|
persists after one more LaTeX run, you should\MessageBreak
|
|
redeclare the corresponding ToC entries using\MessageBreak
|
|
\string\DeclareTOCStyleEntry[\MessageBreak
|
|
\space\space level=\detokenize{#1},\MessageBreak
|
|
\space\space indent=\detokenize{#2},\MessageBreak
|
|
\space\space numwidth=\detokenize{#3}]{default}{...},\MessageBreak
|
|
where `...' is the name of the ToC level.\MessageBreak
|
|
Note, in future usage of `\string\bprot@dottedtocline'\MessageBreak
|
|
could result in an error%
|
|
}%
|
|
\ifnum #1>\c@tocdepth \else
|
|
\ifnum \lastpenalty<\numexpr 20010-#1\relax
|
|
\addpenalty{\@lowpenalty}%
|
|
\fi
|
|
\@dottedtocline{#1}{#2}{#3}{#4}{#5}%
|
|
\penalty \numexpr 20009-#1\relax
|
|
\fi
|
|
\else
|
|
\@dottedtocline{#1}{#2}{#3}{#4}{#5}%
|
|
\fi
|
|
}
|
|
%</body>
|
|
%</class>
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
%
|
|
% \subsection{Grobeinteilung von Büchern}
|
|
%
|
|
% Bei Büchern gibt es teilweise eine Einteilung in Vorderteil, Hauptteil und
|
|
% Endteil, die nicht wirklich eine Gliederung darstellt, sondern auf
|
|
% Gliederung, Seitennummerierung etc. Einfluss nimmt.
|
|
%
|
|
% \begin{macro}{\if@mainmatter}
|
|
% \begin{macro}{\@mainmattertrue}
|
|
% \begin{macro}{\@mainmatterfalse}
|
|
% \changes{v2.3a}{1995/07/08}{\cs{if@mainmatter} Anforderung verschoben}%^^A
|
|
% Über diesen Schalter wird bei Buchklassen festgelegt, ob wir uns im
|
|
% Hauptteil des Dokuments befinden oder nicht. Die eigentliche
|
|
% Umschaltung geschieht mit Hilfe der Befehle \cs{frontmatter},
|
|
% \cs{mainmatter}, \cs{backmatter}. Ohne Umschaltung befinden wir uns
|
|
% bereits im Hauptteil.
|
|
% \begin{macrocode}
|
|
%<*class>
|
|
%<*book>
|
|
%<*body>
|
|
\newif\if@mainmatter\@mainmattertrue
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \@mainmatterfalse
|
|
% \end{macro}%^^A \@mainmattertrue
|
|
% \end{macro}%^^A \if@mainmatter
|
|
%
|
|
% \begin{macro}{\frontmatter}
|
|
% \changes{v2.4e}{1996/07/02}{Option \texttt{openany} beachten}%^^A
|
|
% \changes{v2.5h}{1999/12/29}{Option \texttt{twoside} beachten}%^^A
|
|
% \changes{v3.00}{2008/09/27}{\cs{cleardoubleoddpage} statt
|
|
% \cs{cleardoublepage}}%^^A
|
|
% Der Vorspann enthält bei Büchern oftmals Inhaltsverzeichnis, Vorwort
|
|
% und dergleichen und wird mit kleinen römischen Seitenzahlen
|
|
% versehen.
|
|
% \begin{macrocode}
|
|
\newcommand*\frontmatter{%
|
|
\if@twoside\cleardoubleoddpage\else\clearpage\fi
|
|
\@mainmatterfalse\pagenumbering{roman}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \frontmatter
|
|
% \begin{macro}{\mainmatter}
|
|
% \changes{v2.4e}{1996/07/02}{Option \texttt{openany} beachten}%^^A
|
|
% \changes{v2.5h}{1999/12/29}{Option \texttt{twoside} beachten}%^^A
|
|
% \changes{v3.00}{2008/09/27}{\cs{cleardoubleoddpage} statt
|
|
% \cs{cleardoublepage}}%^^A
|
|
% Der Hauptteil ist das Fleisch der Bücher.
|
|
% \begin{macrocode}
|
|
\newcommand*\mainmatter{%
|
|
\if@twoside\cleardoubleoddpage\else\clearpage\fi
|
|
\@mainmattertrue\pagenumbering{arabic}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \mainmatter
|
|
% \begin{macro}{\backmatter}
|
|
% \changes{v3.00}{2008/09/27}{\cs{cleardoubleoddpage} statt
|
|
% \cs{cleardoublepage}}%^^A
|
|
% Auch wenn nicht ganz einzusehen ist, warum das anders sein soll,
|
|
% wird hier nicht nach der Option \texttt{twoside}, sondern nach
|
|
% \texttt{openright} unterschieden.
|
|
% \begin{macrocode}
|
|
\newcommand*\backmatter{%
|
|
\if@openright\cleardoubleoddpage\else\clearpage\fi\@mainmatterfalse
|
|
}
|
|
%</body>
|
|
%</book>
|
|
%</class>
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
%
|
|
% \subsection{Anhang}
|
|
%
|
|
% Teile gibt es tatsächlich bei allen drei Hauptklassen.
|
|
%
|
|
% \begin{macro}{\appendix}
|
|
% Wird der Anhang aktiviert, so werden Kapitel bzw. Abschnitte zukünftig mit
|
|
% Buchstaben nummeriert.
|
|
% \changes{v2.2d}{1995/05/28}{\textsf{scrartcl} benötigt keinen Zähler für
|
|
% \cs{chapter}}%^^A
|
|
% \changes{v2.3c}{1995/08/06}{alternative Nummerierung bei Verwendung eines
|
|
% Anhangs}%^^A
|
|
% \changes{v2.8}{2001/06/15}{\cs{appendixmore} wird beachtet}%^^A
|
|
% \changes{v2.8e}{2001/07/10}{\cs{@altsecnumformattrue} wird nicht länger
|
|
% ausgeführt}%^^A
|
|
% \changes{v2.8o}{2001/09/19}{\cs{par} eingefügt}%^^A
|
|
% \changes{v2.95}{2006/07/04}{\cs{newcommand*} durch \cs{gdef} ersetzt}%^^A
|
|
% \changes{v2.95}{2006/07/04}{Ausführung von \cs{appendixmore}%^^A
|
|
% vereinfacht}%^^A
|
|
% \changes{v3.20}{2016/12/05}{neue eindeutige Warnung}
|
|
% \changes{v3.28}{2019/11/18}{\cs{ifstr} umbenannt in \cs{Ifstr}}%^^A
|
|
% \begin{macro}{\appendixmore}
|
|
% \cs{appendixmore} kann als \emph{hook} verwendet werden. Derzeit wird dieser
|
|
% allerdings noch recht stiefmütterlich behandelt und lediglich von Option
|
|
% \texttt{appendixprefix} definiert.
|
|
% \begin{macrocode}
|
|
%<*class>
|
|
%<*body>
|
|
\newcommand*\appendix{%
|
|
\Ifstr{\@currenvir}{appendix}{%
|
|
\ClassWarning{\KOMAClassName}{%
|
|
You are using
|
|
`\string\begin{appendix}...\string\end{appendix}'.\MessageBreak
|
|
You should note, that `\string\appendix' is a mostly
|
|
globally\MessageBreak
|
|
working command not an enviroment with only local\MessageBreak
|
|
effects. Therefore `\string\end{appendix}' will neither\MessageBreak
|
|
switch back to normal section numbering nor finish\MessageBreak
|
|
every other effect of `\string\begin{appendix}'.\MessageBreak
|
|
Nevertheless, some effects may end with\MessageBreak
|
|
`\string\end{appendix}' and the document may become\MessageBreak
|
|
inconsistent.\MessageBreak
|
|
Because of this, you should remove `\string\end{appendix}'\MessageBreak
|
|
and replace `\string\begin{appendix}' by command\MessageBreak
|
|
`\string\appendix'%
|
|
}%
|
|
}{}%
|
|
\par%
|
|
%<*article>
|
|
\setcounter{section}{0}%
|
|
\setcounter{subsection}{0}%
|
|
\gdef\thesection{\@Alph\c@section}%
|
|
%</article>
|
|
%<*report|book>
|
|
\setcounter{chapter}{0}%
|
|
\setcounter{section}{0}%
|
|
\gdef\@chapapp{\appendixname}%
|
|
\gdef\thechapter{\@Alph\c@chapter}%
|
|
%</report|book>
|
|
\csname appendixmore\endcsname
|
|
}
|
|
%</body>
|
|
%</class>
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
%
|
|
% \subsection{Teile}
|
|
%
|
|
% \changes{v2.8e}{2001/07/10}{\cs{@thepart} entfernt}
|
|
%
|
|
% Teile sind bei den unterschiedlichen Klassen unterschiedlich definiert.
|
|
%
|
|
% \begin{macro}{\size@part}
|
|
% \changes{v2.8o}{2001/09/14}{neu (intern)}%^^A
|
|
% \changes{v2.96a}{2006/12/02}{letztes Element darf ein Argument erwarten,
|
|
% wenn es keine Auswirkung auf den Zeilen abstand hat}%^^A
|
|
% \begin{macro}{\size@partnumber}
|
|
% \changes{v2.8o}{2001/09/14}{neu (intern)}%^^A
|
|
% \changes{v2.96a}{2006/12/02}{letztes Element darf ein Argument erwarten,
|
|
% wenn es keine Auswirkung auf den Zeilen abstand hat}%^^A
|
|
% Hier werden diese Befehle nur vordefiniert. Ihre tatsächliche Einstellung
|
|
% erfolgt über die (Vor-)Auswahl von Option \texttt{headings}.
|
|
% \begin{macrocode}
|
|
%<*class>
|
|
%<*prepare>
|
|
\newcommand*{\size@part}{}
|
|
\newcommand*{\size@partnumber}{}
|
|
%</prepare>
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \size@partnumber
|
|
% \end{macro}%^^A \size@part
|
|
%
|
|
%
|
|
% \begin{macro}{\partheadstartvskip}
|
|
% \changes{v2.95a}{2006/07/10}{neue Konfiguratonsmöglichkeit}%^^A
|
|
% \changes{v3.15}{2014/11/24}{\textsf{scrartcl} definiert und verwendet
|
|
% \cs{scr@part@beforeskip}}%^^A
|
|
% \begin{macro}{\partheadmidvskip}
|
|
% \changes{v2.95a}{2006/07/10}{neue Konfiguratonsmöglichkeit}%^^A
|
|
% \begin{macro}{\partheadendvskip}
|
|
% \changes{v2.95a}{2006/07/10}{neue Konfiguratonsmöglichkeit}%^^A
|
|
% \changes{v3.15}{2014/11/24}{\textsf{scrartcl} definiert und verwendet
|
|
% \cs{scr@part@afterskip}}%^^A
|
|
% \begin{macro}{\parheademptypage}
|
|
% \changes{v3.02}{2009/01/01}{neue Konfigurationsmöglichkeit}%^^A
|
|
% Diese vier Makros werden verwendet, um den Abstand über in und unter der
|
|
% Überschrift eines Teils und die leere Rückseite zu definieren. Prinzipiell
|
|
% kann damit auch der Umbruch zwischen Nummer und Text entfernt werden.
|
|
% Da die Größe nicht über Option \texttt{headings} beeinflusst werden kann,
|
|
% müssen diese Hilfsmakros nicht bereits vor den Optionen definiert werden.
|
|
%
|
|
% Zur Erhöhung der Kompatibilität mit \cs{DeclareSectionCommand} werden
|
|
% zunächst einige Hilfsanweisung definiert und verwendet.
|
|
% \begin{macro}{\scr@part@sectionbeforeskip}
|
|
% \changes{v3.15}{2014/11/24}{neue (interne) Anweisung}%^^A
|
|
% \changes{v3.17}{2015/03/25}{umbenannt in \cs{scr@part@beforeskip}}%^^A
|
|
% \begin{macro}{\scr@part@sectionafterskip}
|
|
% \changes{v3.15}{2014/11/24}{neue (interne) Anweisung}%^^A
|
|
% \changes{v3.17}{2015/03/25}{umbenannt in \cs{scr@part@afterskip}}%^^A
|
|
% \begin{macro}{\scr@part@sectionindent}
|
|
% \changes{v3.15}{2014/11/24}{neue (interne) Anweisung (unbenutzt)}%^^A
|
|
% \changes{v3.17}{2015/03/24}{entfernt}%^^A
|
|
% \end{macro}%^^A \scr@part@sectionindent
|
|
% \end{macro}%^^A \scr@part@sectionafterskip
|
|
% \end{macro}%^^A \scr@part@sectionbeforeskip
|
|
% \begin{macro}{\scr@part@beforeskip}
|
|
% \changes{v3.17}{2015/03/25}{neu (intern) aus Umdefinierung von
|
|
% \cs{scr@part@ectionbeforeskip}}%^^A
|
|
% \begin{macro}{\scr@part@innerskip}
|
|
% \changes{v3.17}{2015/03/24}{neu (intern)}%^^A
|
|
% \begin{macro}{\scr@part@afterskip}
|
|
% \changes{v3.17}{2015/03/25}{neu (intern) aus Umdefinierung von
|
|
% \cs{scr@part@ectionbeforeskip}}%^^A
|
|
% \begin{macro}{\scr@part@style}
|
|
% \changes{v3.15}{2014/11/24}{neue (interne) Anweisung}%^^A
|
|
% Es wird der leere Stil verwendet, mit dem Neudefinitionen von \cs{part}
|
|
% über \cs{DeclareSectionCommand} verhindert werden.
|
|
% \begin{macrocode}
|
|
%<*prepare>
|
|
\newcommand*{\scr@part@beforeskip}{%
|
|
%<article> 4ex
|
|
% \end{macrocode}
|
|
% Hinweis: Das |+\baselineskip| wird benötigt, um Kompatibilitätsprobleme mit
|
|
% der Umdefinierung von |\chapterheadstartvskip| zu vermeiden.
|
|
% \begin{macrocode}
|
|
%<report|book> \z@ \@plus 1fil + \baselineskip
|
|
}
|
|
%<book|report>\newcommand*{\scr@part@innerskip}{20\p@}
|
|
\newcommand*{\scr@part@afterskip}{%
|
|
%<article> 3ex
|
|
%<report|book> \z@ \@plus 1fil
|
|
}
|
|
\newcommand*{\scr@part@style}{part}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@part@style
|
|
% \end{macro}%^^A \scr@part@afterskip
|
|
% \end{macro}%^^A \scr@part@innerskip
|
|
% \end{macro}%^^A \scr@part@beforeskip
|
|
% \begin{macrocode}
|
|
\newcommand*{\partheadstartvskip}{%
|
|
%<article> \addvspace{\@tempskipa}%
|
|
%<report|book> \null\vskip-\baselineskip\vskip\@tempskipa
|
|
}
|
|
\newcommand*{\partheadmidvskip}{%
|
|
\par\nobreak
|
|
%<book|report> \vskip\@tempskipa
|
|
}
|
|
\newcommand*{\partheadendvskip}{%
|
|
%<article> \vskip\@tempskipa
|
|
%<report|book> \vskip\@tempskipa\newpage
|
|
}
|
|
%<*report|book>
|
|
\newcommand*{\partheademptypage}{%
|
|
\if@twoside\if@openright
|
|
\null%
|
|
\thispagestyle{empty}%
|
|
\newpage
|
|
\fi\fi
|
|
}
|
|
%</report|book>
|
|
%</prepare>
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \partheademptypage
|
|
% \end{macro}%^^A \partheadendvskip
|
|
% \end{macro}%^^A \partheadmidvskip
|
|
% \end{macro}%^^A \partheadstartvskip
|
|
%
|
|
%
|
|
% \begin{macro}{\scr@startpart}
|
|
% \changes{v3.18}{2015/05/23}{neue Anweisung (intern)}%^^A
|
|
% Diese Anweisung ist von der ursprünglichen Definition von \cs{part}
|
|
% abgeleitet und erbt deren ChangeLog-Einträge.
|
|
% \changes{v2.8d}{2001/07/05}{\cs{partpagestyle} statt \texttt{plain}}%^^A
|
|
% \changes{v2.8p}{2001/09/27}{Präambel über der Überschrift hinzugefügt}%^^A
|
|
% \changes{v3.13a}{2014/09/11}{Verwendung von \cs{SecDef}}%^^A
|
|
% \changes{v3.19}{2015/08/25}{Seitenstil nur ändern wenn definiert und nicht
|
|
% leer}%^^A
|
|
% \changes{v3.26}{2018/10/14}{Option \texttt{afterindent} wird beachtet}%^^A
|
|
% \changes{v3.28}{2019/11/18}{\cs{ifstr} umbenannt in \cs{Ifstr}}%^^A
|
|
% Die Anweisung definiert den Gliederungsüberschriften-Stil
|
|
% \texttt{part}. Dazu bekommt sie als einziges explizites Argument den
|
|
% \meta{Namen} der Gliederungsüberschrift. Weitere Argumente wie ein
|
|
% optionaler Stern oder ein optionales Argument für Inhaltsverzeichnis und
|
|
% Kolumnentitel sowie ein obligatorisches Argument für den Text der
|
|
% Überschrift sind implizit, das heißt, sie werden erst im weiteren Verlauf
|
|
% von Unter-Macros eingelesen und verarbeitet.
|
|
% \begin{macrocode}
|
|
%<*body>
|
|
\newcommand*{\scr@startpart}[1]{%
|
|
\ExecuteDoHook{heading/preinit/#1}%
|
|
%<article> \par
|
|
%<*book|report>
|
|
\if@openright\cleardoublepage\else\clearpage\fi
|
|
\scr@ifundefinedorrelax{#1pagestyle}{}{%
|
|
\Ifstr{#1pagestyle}{}{}{%
|
|
\thispagestyle{\@nameuse{#1pagestyle}}%
|
|
}%
|
|
}%
|
|
\if@twocolumn
|
|
\onecolumn
|
|
\@tempswatrue
|
|
\else
|
|
\@tempswafalse
|
|
\fi
|
|
%</book|report>
|
|
\@tempskipa=\glueexpr\@nameuse{scr@#1@beforeskip}\relax
|
|
\@ifundefined{scr@#1@afterindent}{\@afterindentfalse}{%
|
|
\csname scr@#1@afterindent\endcsname
|
|
{\@afterindenttrue}{\@afterindentfalse}{%
|
|
\@afterindenttrue
|
|
\ifdim\@tempskipa<\z@
|
|
\@tempskipa=-\@tempskipa
|
|
\@afterindentfalse
|
|
\fi
|
|
}%
|
|
}%
|
|
\ExecuteDoHook{heading/postinit/#1}%
|
|
\partheadstartvskip
|
|
%<*book|report>
|
|
\vbox to\z@{\vss\use@preamble{#1@o}\strut\par}%
|
|
\vskip-\baselineskip\nobreak
|
|
%</book|report>
|
|
\expandafter\SecDef\csname @#1\expandafter\endcsname\csname @s#1\endcsname
|
|
}
|
|
% \end{macrocode}
|
|
%
|
|
% \begin{macro}{\scr@@startpart}
|
|
% \changes{v3.18}{2015/05/23}{neue Anweisung (intern)}%^^A
|
|
% Diese Anweisung ist von der ursprünglichen Definition von \cs{@part}
|
|
% abgeleitet und erbt deren ChangeLog-Einträge.
|
|
% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}%^^A
|
|
% \changes{v2.95}{2002/08/13}{\cs{centering} und \cs{@parskipfalse}%
|
|
% \cs{@parskip@indent} vertauscht}%^^A
|
|
% \changes{v2.95}{2004/11/05}{\cs{@parskipfalse} und \cs{@parskip@indent}
|
|
% ersetzt}%^^A
|
|
% \changes{v3.27}{2019/07/08}{neue Option \texttt{nonumber}}%^^A
|
|
% Die Anweisung macht die eigentliche Arbeit für den Fall einer
|
|
% Gliederungsanweisung ohne Stern. Das erste obligatorische Argument ist der
|
|
% \meta{Name} der Gliederungsanweisung. Das zweite eigentlich optionale
|
|
% Argument, das hier jedoch zwingend ist, ist der \meta{Spezial-Text} für
|
|
% Kolumnentitel und Inhaltsverzeichnis. Das dritte obligatorische Argument
|
|
% ist der \meta{Text} für die Überschrift.
|
|
% \begin{macrocode}
|
|
\newcommand{\scr@@startpart}{}
|
|
\long\def\scr@@startpart#1[#2]#3{%
|
|
\ExecuteDoHook{heading/branch/nostar/#1}%
|
|
% \end{macrocode}
|
|
% \changes{v3.10}{2011/08/30}{Integration der Erweiterung für das optionale
|
|
% Argument der Gliederungsbefehle}%^^A
|
|
% Für das erweitere optionale Argument muss hier eine key-value-Auswertung
|
|
% erfolgen, falls das erweitere optionale Argument aktiviert ist:
|
|
% \begin{macrocode}
|
|
\ifnum \scr@osectarg=\z@
|
|
\@scr@tempswafalse
|
|
\else
|
|
\scr@istest#2=\@nil
|
|
\fi
|
|
\@currentusenumbertrue
|
|
\if@scr@tempswa
|
|
\setkeys{KOMAarg.section}{tocentry={#3},head={#3},reference={#3},#2}%
|
|
\else
|
|
\ifcase \scr@osectarg\relax
|
|
\setkeys{KOMAarg.section}{tocentry={#2},head={#2},reference={#2}}%
|
|
\or
|
|
\setkeys{KOMAarg.section}{tocentry={#3},head={#2},reference={#3}}%
|
|
\or
|
|
\setkeys{KOMAarg.section}{tocentry={#2},head={#3},reference={#2}}%
|
|
\or
|
|
\setkeys{KOMAarg.section}{tocentry={#2},head={#2},reference={#2}}%
|
|
\fi
|
|
\fi
|
|
% \end{macrocode}
|
|
% Als nächstes muss für nummerierte Überschriften dieser Ebene sowohl der
|
|
% Zähler erhöht also auch ein nummerierter Eintrag ins Inhaltsverzeichnis
|
|
% erstellt werden.
|
|
% \changes{v2.8e}{2001/07/10}{\cs{@maybeautodot} wird aufgerufen}%^^A
|
|
% \changes{v3.08}{2010/11/01}{Verwendung von \cs{addparttocentry}}%^^A
|
|
% \changes{v3.18}{2015/05/20}{Verwendung von \cs{add\meta{Name}tocentry} in
|
|
% \cs{typeout}}%^^A
|
|
% \changes{v3.28}{2019/11/19}{\cs{ifnumbered} umbenannt in
|
|
% \cs{Ifnumbered}}%^^A
|
|
% \changes{v3.31}{2020/06/02}{\cs{@maybeautodot}\cs{thepart} entfernt}%^^A
|
|
% \begin{macrocode}
|
|
\Ifnumbered{#1}{%
|
|
\refstepcounter{#1}%
|
|
\expandafter\@maybeautodot\csname the#1\endcsname
|
|
\typeout{#1 \csname the#1\endcsname.}%
|
|
\ifx\@currenttocentry\@empty\else
|
|
% \end{macrocode}
|
|
% \selectlanguage{english}%
|
|
% \changes{v3.31}{2020/06/06}{use \cs{\dots tocformat}}%
|
|
%^^ATODO: move \cs{autodot} to the definition of \cs{\dots tocformat}
|
|
% \selectlanguage{ngerman}%
|
|
% \begin{macrocode}
|
|
\@ifundefined{#1tocformat}{%
|
|
\expandafter\gdef\csname #1tocformat\endcsname
|
|
{\csname the#1\endcsname}%
|
|
}{}%
|
|
\scr@ifundefinedorrelax{add#1tocentry}{%
|
|
\addtocentrydefault{#1}%
|
|
}{%
|
|
\@nameuse{add#1tocentry}%
|
|
}{\csname\@ifundefined{#1tocformat}{the#1}{#1tocformat}\endcsname}%
|
|
{\@currenttocentry}%
|
|
\fi
|
|
}{%
|
|
% \end{macrocode}
|
|
% \changes{v3.18}{2015/05/23}{Resetliste auch bei nicht nummerierten
|
|
% Überschriften abarbeiten}%^^A
|
|
% Für alle nicht nummerieten Überschriften dieser Ebene trotzdem die
|
|
% Resetliste des Zählers ausführen und ggf. einen Verzeichniseintrag
|
|
% erstellen.
|
|
% \begin{macrocode}
|
|
\expandafter\ifnum\scr@v@is@lt{3.18}\relax\else
|
|
\begingroup
|
|
\let\@elt\@stpelt
|
|
\csname cl@#1\endcsname
|
|
\endgroup
|
|
\fi
|
|
\typeout{#1 without number}%
|
|
\ifx\@currenttocentry\@empty\else
|
|
% \end{macrocode}
|
|
% An dieser Stelle muss ggf. der \textsf{hyperref}-Hook für nicht nummerierte
|
|
% Inhaltsverzeichniseinträge ausgeführt werden.
|
|
% \changes{v3.08}{2010/11/01}{Verwendung von \cs{addparttocentry}}%^^A
|
|
% \changes{v3.18}{2015/05/23}{\cs{addparttocentry} verallgemeinert}%^^A
|
|
% \begin{macrocode}
|
|
\hy@insteadofrefstepcounter{#1}%
|
|
\scr@ifundefinedorrelax{add#1tocentry}{%
|
|
\addtocentrydefault{#1}%
|
|
}{%
|
|
\@nameuse{add#1tocentry}%
|
|
}{}{\@currenttocentry}%
|
|
\fi
|
|
}%
|
|
% \end{macrocode}
|
|
% Es folgt das eigentliche Setzen der Überschrift. Übrigens ist der ganze Code
|
|
% oben bei \cs{scr@@startchapter} praktisch identisch. Lediglich das
|
|
% Abarbeiten der Resetliste gibt es dort bereits seit Version~3.15. In
|
|
% \cs{scr@@startchapter} wird an dieser Stelle dann \cs{@make\dots head}
|
|
% ausgeführt. Das könnte man eigentlich irgendwann hier genauso machen.
|
|
% \changes{v2.2c}{1995/05/25}{Part-Ausgabe auf CJK umgestellt}%^^A
|
|
% \changes{v2.4b}{1996/03/29}{\cs{size@partnumer} durch
|
|
% \cs{size@partnumber} ersetzt}%^^A
|
|
% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor \cs{size@part} und
|
|
% \cs{size@partnumber} aufgerufen}%^^A
|
|
% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont} behebt einen
|
|
% Bug im color Paket}%^^A
|
|
% \changes{v3.18}{2015/05/23}{\cs{size@\dots} durch \cs{usekomafont}
|
|
% ersetzt}%^^A
|
|
% \changes{v3.21}{2016/06/12}{fehlendes \cs{nobreak} ergänzt}%^^A
|
|
% \changes{v3.25}{2017/09/07}{\cs{IfUseNumber} definiert}%^^A
|
|
% \changes{v3.25}{2017/09/07}{\cs{sectfont} durch \cs{usekomafont}
|
|
% ersetzt}%^^A
|
|
% \changes{v3.25}{2017/09/07}{Umstellung auf
|
|
% \cs{partlineswithprefixformat}}%^^A
|
|
% \changes{v3.25}{2018/02/12}{Verwendung des korrekten Font-Elements}%^^A
|
|
% \changes{v3.28}{2019/11/19}{\cs{ifnumbered} umbenannt in
|
|
% \cs{Ifnumbered}}%^^A
|
|
% \begin{macrocode}
|
|
\begingroup
|
|
\def\IfUseNumber{\Ifnumbered{#1}}%
|
|
\ExecuteDoHook{heading/begingroup/#1}%
|
|
\setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative
|
|
\raggedpart
|
|
\normalfont\usekomafont{disposition}{\nobreak
|
|
\IfUseNumber{%
|
|
\partlineswithprefixformat{#1}{%
|
|
\usekomafont{#1prefix}{\nobreak\@nameuse{#1format}}%
|
|
%<book|report> \setlength{\@tempskipa}{\@nameuse{scr@#1@innerskip}}%
|
|
\partheadmidvskip
|
|
}{%
|
|
\usekomafont{#1}{\nobreak\interlinepenalty \@M#3\strut\@@par}%
|
|
}%
|
|
}{%
|
|
\partlineswithprefixformat{#1}{}{%
|
|
\usekomafont{#1}{\nobreak\interlinepenalty \@M#3\strut\@@par}%
|
|
}
|
|
}%
|
|
% \end{macrocode}
|
|
% \changes{v3.10}{2011/08/30}{Wenn \cs{partmark} \cs{@gobble} ist, wird
|
|
% stattdessen \cs{@mkboth}{}{} aufgerufen.}%^^A
|
|
% Und noch den Kolumnentitel setzen.
|
|
% \begin{macrocode}
|
|
\expandafter\ifx\csname #1mark\endcsname\@gobble
|
|
\@mkboth{}{}%
|
|
\else
|
|
\csname #1mark\expandafter\endcsname\expandafter{\@currentheadentry}%
|
|
\fi
|
|
}%
|
|
\ExecuteDoHook{heading/endgroup/#1}%
|
|
\endgroup
|
|
% \end{macrocode}
|
|
% Ganz zum Schluss muss noch einmal ein Abstand eingefügt werden.
|
|
% \begin{macrocode}
|
|
%<*article>
|
|
\nobreak
|
|
\@tempskipa=\glueexpr\@nameuse{scr@#1@afterskip}\relax\relax
|
|
\ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
|
|
\partheadendvskip
|
|
%</article>
|
|
%<book|report> \@nameuse{@end#1}%
|
|
% \end{macrocode}
|
|
% \changes{v3.26}{2018/10/14}{Verwendung von \@cs{@afterheading} für
|
|
% \textsf{scrbook} und \textsf{scrreprt}}%^^A
|
|
% Ab \KOMAScript{} 3.26 wird hier \cs{@afterheading} für alle Klassen
|
|
% aufgerufen. Damit kann der Einzug nach der Überschrift eingestellt werden.
|
|
% \begin{macrocode}
|
|
\@afterheading
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@@startpart
|
|
%
|
|
% \begin{macro}{\scr@@startspart}
|
|
% \changes{v3.18}{2015/05/23}{neue Anweisung (intern)}%^^A
|
|
% Diese Anweisung ist von der ursprünglichen Definition von \cs{@spart}
|
|
% abgeleitet und erbt deren ChangeLog-Einträge.
|
|
% \changes{v2.4n}{1997/05/28}{in der Sternvariante \cs{chaptermark}%^^A
|
|
% bzw. \cs{sectionmark} eingefügt, um die Kolumnentitel zu
|
|
% löschen}%^^A
|
|
% \changes{v2.6a}{2000/01/20}{zum Löschen der Kolumnentitel wird
|
|
% nun \cs{@mkboth} verwendet}%^^A
|
|
% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}%^^A
|
|
% \changes{v2.95}{2002/08/13}{\cs{centering} und
|
|
% \cs{@parskipfalse}\cs{@parskip@indent} vertauscht}%^^A
|
|
% \changes{v2.95}{2004/11/05}{\cs{@parskipfalse} und \cs{@parskip@indent}
|
|
% ersetzt}%^^A
|
|
% Die Anweisung macht die eigentliche Arbeit für den Fall einer
|
|
% Gliederungsanweisung mit Stern. Das erste obligatorische Argument ist der
|
|
% \meta{Name} der Gliederungsanweisung. Das zweite obligatorische Argument
|
|
% ist der \meta{Text} für die Überschrift.
|
|
% \begin{macrocode}
|
|
\newcommand{\scr@@startspart}[2]{%
|
|
\ExecuteDoHook{heading/branch/star/#1}%
|
|
% \end{macrocode}
|
|
% Für Leute, die unbedingt nach der Sternversion noch ein \cs{addcontentsline}
|
|
% anfügen wollen, muss hier ebenfalls der \textsf{hyperref}-Hook ausgeführt
|
|
% werden. Allerdings passiert das hier entsprechend dem Vorgehen von
|
|
% \textsf{hyperref} selbst in einer Gruppe, in der zusätzlich \cs{@mkboth} zu
|
|
% \cs{@gobbletwo} gemacht wird, auch wenn ich absolut nicht versehe, was das
|
|
% soll.
|
|
% \begin{macrocode}
|
|
\begingroup
|
|
\let\@mkboth\@gobbletwo
|
|
\hy@insteadofrefstepcounter{#1}%
|
|
\endgroup
|
|
% \end{macrocode}
|
|
% Erst dann erfolgt die tatsächliche Ausgabe der Überschrift.
|
|
% \changes{v3.21}{2016/06/12}{fehlendes \cs{nobreak} ergänzt}%^^A
|
|
% \changes{v3.25}{2017/09/07}{\cs{IfUseNumber} definiert}%^^A
|
|
% \changes{v3.25}{2017/09/07}{\cs{sectfont} durch \cs{usekomafont}
|
|
% ersetzt}%^^A
|
|
% \changes{v3.25}{2017/09/07}{Umstellung auf
|
|
% \cs{partlineswithprefixformat}}%^^A
|
|
% \begin{macrocode}
|
|
\begingroup
|
|
\let\IfUseNumber\@secondoftwo
|
|
\ExecuteDoHook{heading/begingroup/#1}%
|
|
\setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative
|
|
\raggedpart
|
|
\normalfont\usekomafont{disposition}{%
|
|
\nobreak
|
|
\partlineswithprefixformat{#1}{}{%
|
|
\usekomafont{#1}{\nobreak\interlinepenalty \@M#2\strut\@@par}%
|
|
}%
|
|
\@mkboth{}{}%
|
|
}%
|
|
\ExecuteDoHook{heading/endgroup/#1}%
|
|
\endgroup
|
|
%<*article>
|
|
\nobreak
|
|
\@tempskipa=\glueexpr\csname scr@#1@afterskip\endcsname\relax\relax
|
|
\ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
|
|
\partheadendvskip
|
|
\@afterheading
|
|
%</article>
|
|
%<book|report> \@nameuse{@end#1}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@@startspart
|
|
%
|
|
% \begin{macro}{\partlineswithprefixformat}
|
|
% \changes{v3.25}{2017/09/07}{neu}
|
|
% Diese Anweisung definiert das Format der eigentlichen Überschriften im Stil
|
|
% \texttt{part}. Fonteinstellungen sind zu diesem Zeitpunkt bereits erfolgt
|
|
% order Teil der Argumente. Die Argumente sind:
|
|
% \begin{description}
|
|
% \item[\meta{Befehlsname} --] der Name der Gliederungsebene, normalerweise
|
|
% \texttt{chapter}.
|
|
% \item[\meta{Gliederungsnummer} --] die bereits fertig formatierte
|
|
% Gliederungsnummer einschließlich des nachfolgenden vertikalen Abstands
|
|
% oder leer, falls keine Gliederungsnummer auszugeben ist.
|
|
% \item[\meta{Text} --] der Text der Überschrift.
|
|
% \end{description}
|
|
% Der Anwender ist selbst verantwortlich, dass innerhalb der Überschrift kein
|
|
% Seitenumbruch erfolgen kann. Nach der Überschrift wird jedoch zwangsweise
|
|
% ein \cs{@@par} ausgeführt, so dass sichergestellt ist, dass mit einem
|
|
% internen Absatz abgeschlossen wird.
|
|
% \begin{macrocode}
|
|
\newcommand{\partlineswithprefixformat}[3]{%
|
|
#2#3%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \partlineswithprefixformat
|
|
%
|
|
% \begin{macro}{\scr@@endpart}
|
|
% \changes{v3.18}{2015/05/23}{neue Anweisung (intern)}%^^A
|
|
% Diese Anweisung ist von der ursprünglichen Definition von \cs{@spart}
|
|
% abgeleitet und erbt deren ChangeLog-Einträge.
|
|
% \changes{v2.3g}{1996/01/14}{\cs{@endpart} wird für
|
|
% \textsf{scrartcl} nicht mehr definiert}%^^A
|
|
% \changes{v2.4e}{1996/07/02}{Option \texttt{openany} beachten}%^^A
|
|
% \changes{v2.6c}{2000/06/10}{\cs{@endpart} fügt nur noch in
|
|
% beidseitigen Dokumenten bei Verwendung von \texttt{openright} eine
|
|
% Leerseite ein}%^^A
|
|
% \changes{v2.8p}{2001/09/27}{\cs{vbox} eingefügt}%^^A
|
|
% \changes{v2.8p}{2001/09/27}{\cs{use@preamble} ersetzt
|
|
% \cs{@part@preamble}}%^^A
|
|
% \changes{v3.02}{2009/01/01}{Verwendung des neuen
|
|
% \cs{partheademptypage}}%^^A
|
|
% Die Anweisung wird bei \textsf{scrbook} und \textsf{screprt} verwendet, um
|
|
% die Überschrift abzuschließen. \textsf{scrartcl} hat keine solche Anweisung.
|
|
% Da einzige Argument ist der \meta{Name} der Gliederungsanweisung.
|
|
% \begin{macrocode}
|
|
%<*book|report>
|
|
\newcommand*{\scr@@endpart}[1]{%
|
|
\vbox to\z@{\use@preamble{#1@u}\vss}%
|
|
\@tempskipa=\glueexpr\csname scr@#1@afterskip\endcsname\relax\relax
|
|
\ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
|
|
\partheadendvskip
|
|
\partheademptypage
|
|
\if@tempswa
|
|
\twocolumn
|
|
\fi
|
|
}
|
|
%</book|report>
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@@endpart
|
|
% \end{macro}%^^A \scr@startpart
|
|
%
|
|
%
|
|
% \begin{macro}{\hy@insteadofrefstepcounter}
|
|
% \changes{v3.18}{2015/05/22}{neu (intern und \textsf{hyperref})}%^^A
|
|
% \begin{macro}{\scr@chapter@before@hyperref@patch}
|
|
% \changes{v3.27}{2019/07/24}{neu (intern für \textsf{scrhack})}%^^A
|
|
% \begin{macro}{\scr@chapter@after@hyperref@patch}
|
|
% \changes{v3.27}{2019/07/24}{neu (intern für \textsf{scrhack})}%^^A
|
|
% Normalerweise führt \textsf{hyperref} via \cs{refstepcounter}
|
|
% Initialisierungen für ein nachfolgendes \cs{addcontentsline} durch. Wenn
|
|
% allerdings eine nicht nummerierte Überschrift ins Inhaltsverzeichnis
|
|
% eingetragen wird, dann fehlt das vorherige \cs{refstepcounter}. Statt
|
|
% \cs{@chapter}, \cs{@schapter}, \cs{@part}, \cs{@spart} etc. direkt zu
|
|
% patchen, erscheint es mir sinnvoller einen Hook dafür zu definieren, der
|
|
% dann von \textsf{hyperref} entsprechend definiert werden kann. Solange
|
|
% \textsf{hyperref} das nicht macht, versuche ich mich selbst daran und kann
|
|
% nur hoffen, dass es funktioniert. Dabei verwende ich im Gegensatz zu
|
|
% \textsf{hyperref} für \cs{Hy@MakeCurrentHrefAuto} kein \cs{Hy@chapapp}, weil
|
|
% ja \cs{autoref} für nicht nummerierte Überschriften ohnehin sinnlos
|
|
% ist. Stattdessen verwende ich den Gliederungsbefehl.
|
|
% \begin{macrocode}
|
|
\newcommand*{\hy@insteadofrefstepcounter}[1]{}
|
|
\let\hy@insteadofrefstepcounter\@gobble
|
|
\newcommand*{\scr@chapter@before@hyperref@patch}{%
|
|
\let\scr@orig@chapter\@chapter
|
|
\let\scr@orig@schapter\@schapter
|
|
\let\scr@orig@addchap\@addchap
|
|
}
|
|
\BeforePackage{hyperref}{\scr@chapter@before@hyperref@patch}
|
|
\newcommand*{\scr@chapter@after@hyperref@patch}{%
|
|
\let\@chapter\scr@orig@chapter
|
|
\let\@schapter\scr@orig@schapter
|
|
\let\@addchap\scr@orig@addchap
|
|
\ifx\hy@insteadofrefstepcounter\@gobble
|
|
\renewcommand*{\hy@insteadofrefstepcounter}[1]{%
|
|
\Hy@MakeCurrentHrefAuto{##1*}%
|
|
\Hy@raisedlink{%
|
|
\hyper@anchorstart{\@currentHref}\hyper@anchorend
|
|
}%
|
|
}%
|
|
\fi
|
|
}
|
|
\AfterPackage!{hyperref}{\scr@chapter@after@hyperref@patch}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@after@hyperref@patch
|
|
% \end{macro}%^^A \scr@before@hyperref@patch
|
|
% \end{macro}%^^A \hy@insteadofrefstepcounter
|
|
%
|
|
% \begin{macro}{\addparttocentry}
|
|
% \changes{v3.08}{2010/11/01}{Neu}%^^A
|
|
% Seit Version~3.08 wird der Eintrag nicht direkt innerhalb von \cs{part}
|
|
% per \cs{addcontentsline} erzeugt, sondern indirekt über diese Anweisung. Das
|
|
% erste Argument ist dabei die (formatierte) Nummer bzw. bei nicht
|
|
% nummerierten Teilen leer. Das zweite Argument ist der Überschriftstext für
|
|
% das Verzeichnis. Durch diesen indirekten Weg, kann die Anweisung einfach
|
|
% umdefiniert werden. Verwendet wird hier die Standardanweisung für
|
|
% Inhaltsverzeichniseinträge, die in \texttt{scrkliof.dtx} definiert ist:
|
|
% \begin{macrocode}
|
|
\newcommand*{\addparttocentry}[2]{%
|
|
\addtocentrydefault{part}{#1}{#2}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \addparttocentry
|
|
%
|
|
%
|
|
% \begin{macro}{\part}
|
|
% \changes{v3.18}{2015/05/23}{siehe \cs{scr@dsc@def@style@part@command} und
|
|
% \cs{scr@startpart}}%^^A
|
|
% \begin{macro}{\@part}
|
|
% \changes{v3.18}{2015/05/23}{siehe \cs{scr@dsc@def@style@part@command} und
|
|
% \cs{scr@@startpart}}%^^A
|
|
% \begin{macro}{\@spart}
|
|
% \changes{v3.18}{2015/05/23}{siehe \cs{scr@dsc@def@style@part@command} und
|
|
% \cs{scr@@startspart}}%^^A
|
|
% \begin{macro}{\@endpart}
|
|
% \changes{v3.18}{2015/05/23}{siehe \cs{scr@dsc@def@style@part@command} und
|
|
% \cs{scr@@endpart}}%^^A
|
|
% \begin{macro}{\setpartpreamble}
|
|
% \changes{v2.8f}{2001/07/12}{neu}%^^A
|
|
% \changes{v2.8p}{2001/09/27}{Verwendung von \cs{use@preamble}}%^^A
|
|
% \changes{v3.18}{2015/05/23}{siehe \cs{scr@dsc@def@style@part@command} und
|
|
% \cs{scr@@endpart}}%^^A
|
|
% \begin{macro}{\part@u@preamble}
|
|
% \changes{v2.8p}{2001/09/27}{neu (intern)}%^^A
|
|
% \changes{v2.8p}{2001/09/27}{Ersatz für \cs{part@preamble}}%^^A
|
|
% \changes{v3.12a}{2014/02/14}{flaschen (\cs{part@preamble@u}) Namen
|
|
% korrigiert}%^^A
|
|
% \changes{v3.18}{2015/05/23}{siehe \cs{scr@dsc@def@style@part@command} und
|
|
% \cs{scr@@endpart}}%^^A
|
|
% \begin{macro}{\part@o@preamble}
|
|
% \changes{v2.8p}{2001/09/27}{neu (intern)}%^^A
|
|
% \changes{v3.12a}{2014/02/14}{flaschen Namen (\cs{part@preamble@o})
|
|
% korrigiert}%^^A
|
|
% \changes{v3.18}{2015/05/23}{siehe \cs{scr@dsc@def@style@part@command} und
|
|
% \cs{scr@@endpart}}%^^A
|
|
% Diese Anweisungen werden indirekt über \cs{DeclareSectionCommand} und
|
|
% \cs{scr@dsc@def@style@part@command} bzw. \cs{setpartpreamble} definiert.
|
|
% \end{macro}%^^A \setpartpreamble
|
|
% \end{macro}%^^A \part@u@preamble
|
|
% \end{macro}%^^A \part@o@preamble
|
|
% \end{macro}%^^A \@endpart
|
|
% \end{macro}%^^A \@spart
|
|
% \end{macro}%^^A \@part
|
|
% \end{macro}%^^A \part
|
|
%
|
|
% \begin{macro}{\addpart}
|
|
% \changes{v2.8c}{2001/06/29}{neu}%^^A
|
|
% \changes{v2.8d}{2001/07/05}{\cs{partpagestyle} statt \texttt{plain}}%^^A
|
|
% \changes{v2.95a}{2006/07/10}{support of preamble added}%^^A
|
|
% \changes{v3.11b}{2012/07/29}{missing negativ \cs{vskip} added}%^^A
|
|
% \changes{v3.13a}{2014/09/11}{Verwendung von \cs{SecDef}}%^^A
|
|
% \changes{v3.15a}{2015/01/22}{Anpassung an geänderte Abstandsbehandlung bei
|
|
% \cs{part} und \cs{@spart}}%^^A
|
|
% \changes{v3.18}{2015/05/25}{Komplett neu definiert}%^^A
|
|
% \begin{macro}{\@addpart}
|
|
% \changes{v2.8c}{2001/06/29}{neu (intern)}%^^A
|
|
% \changes{v2.8l}{2001/08/17}{erst eintragen, dann ausgeben}%^^A
|
|
% \changes{v2.95}{2004/07/20}{kann Kolumnentitel erzeugen}%^^A
|
|
% \changes{v3.00}{2008/07/01}{Notlösung für \textsf{hyperref} eingefügt}%^^A
|
|
% \changes{v3.08}{2010/11/02}{Verwendung von \cs{addparttocentry}}%^^A
|
|
% \changes{v3.10}{2011/08/30}{Integration der Erweiterung für das optionale
|
|
% Argument der Gliederungsbefehle}%^^A
|
|
% \changes{v3.10}{2011/08/30}{Wenn \cs{partmark} \cs{@gobble} ist, wird
|
|
% \cs{@mkboth}{}{} aufgerufen.}%^^A
|
|
% \changes{v3.17}{2015/04/20}{Es wird \cs{addpartmark} verwendet und auch
|
|
% nie \cs{@mkboth}{}{} aufgerufen.}%^^A
|
|
% \changes{v3.18}{2015/05/25}{Komplett neu definiert}%^^A
|
|
% \begin{macro}{\@saddpart}
|
|
% \changes{v2.8c}{2001/06/29}{neu (intern)}%^^A
|
|
% \changes{v3.18}{2015/05/25}{Komplett neu definiert}%^^A
|
|
% \begin{macrocode}
|
|
\newcommand\addpart{%
|
|
\SecDef\@addpart\@saddpart
|
|
}
|
|
\newcommand*{\@addpart}{}
|
|
\long\def\@addpart[#1]#2{%
|
|
\edef\reserved@a{%
|
|
\unexpanded{%
|
|
\part[{#1}]{#2}%
|
|
\c@secnumdepth=
|
|
}\the\c@secnumdepth\relax
|
|
}%
|
|
\c@secnumdepth=\numexpr \partnumdepth-1\relax
|
|
\reserved@a
|
|
}
|
|
\newcommand{\@saddpart}[1]{%
|
|
\part*{#1}%
|
|
\addpartmark{}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \@saddpart
|
|
% \end{macro}%^^A \@addpart
|
|
% \end{macro}%^^A \addpart
|
|
%
|
|
%
|
|
% \begin{macro}{\l@part}
|
|
% \changes{v2.97c}{2007/06/21}{\cs{sectfont}\cs{large} durch Verwendung von
|
|
% Element \texttt{partentry} ersetzt}%^^A
|
|
% \changes{v2.97c}{2007/06/21}{Element \texttt{partentrypagenumber} wird
|
|
% verwendet}%^^A
|
|
% \changes{v3.15}{2014/12/23}{Verwendung von \cs{parttocdepth} und
|
|
% \cs{scr@part@numwidth}}%^^A
|
|
% \changes{v3.20}{2015/10/06}{Überführung in Verzeichnisstil}%^^A
|
|
% Der Eintrag für \cs{part}. Es werden einige Hilfsmakros passend zu
|
|
% \cs{DeclareSectionCommand} definiert. Dadurch können diverse Einstellungen
|
|
% darüber geändert werden. Es kann jedoch derzeit kein neuer Stil zugewiesen
|
|
% werden.
|
|
% \begin{macro}{\scr@part@tocindent}
|
|
% \changes{v3.15}{2014/12/02}{neue (interne) Anweisung}%^^A
|
|
% \changes{v3.18}{2015/06/09}{indirekt über \cs{DeclareSectionCommand}}%^^A
|
|
% \changes{v3.20}{2015/11/06}{wird nun auch verwendet}%^^A
|
|
% Der Einzug des Eintrags noch vor der Nummer.
|
|
% \end{macro}%^^A \scr@part@tocindent
|
|
% \begin{macro}{\scr@part@tocnumwidth}
|
|
% \changes{v3.15}{2014/12/02}{neue (interne) Anweisung}%^^A
|
|
% \changes{v3.18}{2015/06/09}{indirekt über \cs{DeclareSectionCommand}}%^^A
|
|
% Die definierte Breite der Nummer für den Eintrag ins Inhaltsverzeichnis.
|
|
% \end{macro}
|
|
% \end{macro}%^^A \l@part
|
|
%
|
|
%
|
|
% \begin{Counter}{part}
|
|
% \begin{macro}{\thepart}
|
|
% \begin{macro}{\partformat}
|
|
% \changes{v2.3c}{1995/08/06}{Duden Regel 6}%^^A
|
|
% \changes{v2.5f}{1999/02/14}{überflüssiges Leerzeichen am Ende
|
|
% entfernt}%^^A
|
|
% \changes{v2.7h}{2001/04/22}{verlorenen Backslash in \cs{autodot}%^^A
|
|
% wieder eingefügt}%^^A
|
|
% Jede Gliederungsebene benötigt einen Zähler für die Gliederungsnummer und
|
|
% eine Darstellung des Zählers (\cs{the\dots}). Desweiteren wird eine
|
|
% Formatierung des Zählers in den Gliederungsüberschriften
|
|
% (\texttt{\bslash\dots format}) benötigt.
|
|
% \begin{macrocode}
|
|
\newcounter{part}
|
|
\renewcommand*{\thepart}{\@Roman\c@part}
|
|
\newcommand*{\partformat}{\partname~\thepart\autodot}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \partformat
|
|
% \end{macro}%^^A \thepart
|
|
% \end{Counter}{part}
|
|
%
|
|
%
|
|
% \begin{macro}{\partname}
|
|
% Namen der Gliederungsebenen \cs{part}.
|
|
% \begin{macrocode}
|
|
\newcommand*\partname{Part}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \partname
|
|
%
|
|
%
|
|
% \begin{macro}{\partmark}
|
|
% \changes{v2.9r}{2004/07/20}{neu (für \textsf{scrpage2})}%^^A
|
|
% \changes{v3.18}{2015/05/24}{Voreinstellung von \cs{@gobble} zu
|
|
% \cs{@mkboth{}{}} geändert}
|
|
% \begin{macrocode}
|
|
\newcommand*{\partmark}[1]{\@mkboth{}{}}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \partmark
|
|
%
|
|
% \begin{macro}{\addpartmark}
|
|
% \changes{v3.17}{2015/04/20}{neue Anweisung}%^^A
|
|
% \changes{v3.18}{2015/05/24}{abhängig von \cs{partnumdepth}}%^^A
|
|
% Analog zu \cs{addchapmark} für \cs{addpart}. Auch dabei gilt, dass
|
|
% \cs{if@mainmatter} hier auch von \textsf{scrreprt} definiert wird. Das ist
|
|
% Absicht und vereinfacht dem einen oder anderen Paket oder Benutzer
|
|
% vielleicht die Arbeit.
|
|
% \begin{macrocode}
|
|
\newcommand*\addpartmark[1]{%
|
|
\begingroup
|
|
\expandafter\let\csname if@mainmatter\expandafter\endcsname
|
|
\csname iffalse\endcsname
|
|
\c@secnumdepth=\numexpr \partnumdepth-1\relax
|
|
\partmark{#1}%
|
|
\endgroup
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \addpartmark
|
|
%
|
|
%
|
|
% \begin{macro}{\raggedpart}
|
|
% \changes{v2.95a}{2006/07/10}{neue Konfigurationsmöglichkeit}%^^A
|
|
% Die Ausrichtung der Überschrift von \cs{part} kann davon abweichend über
|
|
% \cs{raggedpart} konfiguriert werden. Die Voreinstellung ist von der
|
|
% Klasse abhängig.
|
|
% \begin{macrocode}
|
|
\newcommand*{\raggedpart}{}
|
|
%<article>\let\raggedpart\raggedsection
|
|
%<report|book>\let\raggedpart\centering
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \begin{KOMAfont}{part}
|
|
% \changes{v2.8p}{2001/09/23}{neues Element \texttt{part}}%^^A
|
|
% \begin{macro}{\scr@fnt@part}
|
|
% \changes{v2.8p}{2001/09/23}{neues Element \texttt{part}}%^^A
|
|
% \begin{KOMAfont}{partnumber}
|
|
% \changes{v2.8p}{2001/09/23}{neues Element \texttt{partnumber}}%^^A
|
|
% \begin{macro}{\scr@fnt@partnumber}
|
|
% \changes{v2.8p}{2001/09/23}{neues Element \texttt{partnumber}}%^^A
|
|
% \begin{KOMAfont}{partprefix}
|
|
% \changes{v3.18}{2015/06/10}{neues Alias-Element \texttt{partprefix}}%^^A
|
|
% \begin{macrocode}
|
|
\newcommand*{\scr@fnt@part}{\size@part}
|
|
\newcommand*{\scr@fnt@partnumber}{\size@partnumber}
|
|
\aliaskomafont{partprefix}{partnumber}
|
|
% \end{macrocode}
|
|
% \end{KOMAfont}
|
|
% \end{macro}
|
|
% \end{KOMAfont}
|
|
% \end{macro}
|
|
% \end{KOMAfont}
|
|
%
|
|
% \begin{KOMAfont}{partentry}
|
|
% \changes{v2.97c}{2007/06/21}{neues Font-Element}%^^A
|
|
% \changes{v3.06}{2010/06/09}{Verwendung von \texttt{sectioning} durch
|
|
% \texttt{disposition} ersetzt}%^^A
|
|
% Schrift für den \cs{part}-Eintrag im Inhaltsverzeichnis.
|
|
% \begin{macrocode}
|
|
\newkomafont{partentry}{\usekomafont{disposition}\large}
|
|
% \end{macrocode}
|
|
% \end{KOMAfont}
|
|
%
|
|
% \begin{KOMAfont}{partentrypagenumber}
|
|
% \changes{v2.97c}{2007/06/21}{neues Font-Element}%^^A
|
|
% Schrift für die Seitenzahl des \cs{part}-Eintrags im Inhaltsverzeichnis
|
|
% abweichend von \texttt{partentry}.
|
|
% \begin{macrocode}
|
|
\newkomafont{partentrypagenumber}{}
|
|
%</body>
|
|
%</class>
|
|
% \end{macrocode}
|
|
% \end{KOMAfont}
|
|
%
|
|
%
|
|
% \subsection{Kapitel}
|
|
%
|
|
% Bei den Klassen \texttt{scrbook} und \texttt{scrreprt} gibt es im
|
|
% Unterschied zu \texttt{scrartcl} auch noch die Kapitelebene. Für die
|
|
% Definition des Kapitelstils mittels \cs{DeclareSectionCommand} werden neben
|
|
% den Optionen und \cs{scr@dsc@def@style@chapter@command} noch diverse
|
|
% Anweisungen benötigt. Diese sind allesamt von der ursprünglichen Definition
|
|
% für Kapitel abgeleitet. Eine Besonderheit ist dabei, dass \textsf{hyperref}
|
|
% dem neuen Code durch (inkompatible) Umdefinierung von \cs{@schapter} und
|
|
% \cs{@chapter} in die Quere kommt. Das gilt es also zusätzlich zu verhindern
|
|
% und dennoch \cs{hyperref} zu berücksichtigen. Dies gelingt am einfachsten
|
|
% durch einen neuen Hook, den \cs{hyperref} zukünftig gerne selbst passend
|
|
% umdefinieren kann. Wer sonst noch an \cs{@chapter} und \cs{@schaper}
|
|
% herumdoktert und dabei \KOMAScript{} aus dem Tritt bringt, ist selbst
|
|
% schuld.
|
|
%
|
|
% \begin{option}{chapterprefix}
|
|
% \changes{v2.8}{2001/06/15}{neue Option}%^^A
|
|
% \changes{v2.95c}{2006/08/21}{als \textsf{keyval}-Option}%^^A
|
|
% \changes{v3.18}{2015/05/22}{die Option bezieht sich allgemein auf den
|
|
% Gliederungsstil}%^^A
|
|
% \begin{option}{nochapterprefix}
|
|
% \changes{v2.8}{2001/06/15}{neue Option}%^^A
|
|
% \changes{v2.95c}{2006/08/21}{obsolete Option}%^^A
|
|
% \changes{v3.01a}{2008/11/20}{deprecated}%^^A
|
|
% Normalerweise verwenden \textsf{scrbook} und \textsf{scrreprt} nicht
|
|
% die enorm großen Überschriften von \textsf{book} und
|
|
% \textsf{report}, die mit einem Absatz "`Kapitel \emph{Nummer}"'
|
|
% beginnen. Mit der Option \texttt{chapterprefix} kann dies jetzt
|
|
% wieder aktiviert werden. Die Option, zur Deaktivierung heißt
|
|
% entsprechend \textsf{nochapterprefix}.
|
|
% Um für Spezialanwendungen auch innerhalb des Dokuments eine
|
|
% Umschaltung zu ermöglichen bzw. für die Optionen
|
|
% \texttt{appendixprefix} und \texttt{noappendixprefix} erfolgt die
|
|
% Umschaltung durch einen Schalter.
|
|
% \begin{macrocode}
|
|
%<*class>
|
|
%<*book|report>
|
|
%<prepare>\newif\if@chapterprefix
|
|
%<*option>
|
|
\KOMA@key{chapterprefix}[true]{%
|
|
\KOMA@set@ifkey{chapterprefix}{@chapterprefix}{#1}%
|
|
\ifx\FamilyKeyState\FamilyKeyStateProcessed
|
|
\KOMA@kav@replacebool{.\KOMAClassFileName}%
|
|
{chapterprefix}{@chapterprefix}%
|
|
\KOMA@kav@remove{.\KOMAClassFileName}%
|
|
{headings}{twolinechapter}%
|
|
\KOMA@kav@remove{.\KOMAClassFileName}%
|
|
{headings}{onelinechapter}%
|
|
\KOMA@kav@xadd{.\KOMAClassFileName}%
|
|
{headings}{%
|
|
\if@chapterprefix twolinechapter\else onelinechapter\fi
|
|
}%
|
|
\fi
|
|
}
|
|
\KOMA@DeclareDeprecatedOption{nochapterprefix}{chapterprefix=false}
|
|
\KOMA@kav@add{.\KOMAClassFileName}{headings}{onelinechapter}%
|
|
%</option>
|
|
% \end{macrocode}
|
|
% \end{option}
|
|
% \end{option}
|
|
%
|
|
% \begin{option}{appendixprefix}
|
|
% \changes{v2.8}{2001/06/15}{neue Option}%^^A
|
|
% \changes{v2.95c}{2006/08/21}{als \textsf{keyval}-Option}%^^A
|
|
% \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit
|
|
% \cs{FamilyKeyState}}%^^A
|
|
% \changes{v3.17}{2015/03/09}{interne Speicherung des Wert}%^^A
|
|
% \begin{option}{noappendixprefix}
|
|
% \changes{v2.8}{2001/06/15}{neue Option}%^^A
|
|
% \changes{v2.95c}{2006/08/21}{obsolete Option}%^^A
|
|
% \changes{v3.01a}{2008/11/20}{deprecated}%^^A
|
|
% Will man abweichend von der Option \texttt{chapterprefix} die großen
|
|
% Überschriften für den Anhang aktivieren oder deaktivieren, so kann man das
|
|
% mit dieser Option erreichen. Allerdings setzt diese keinen Schalter, sondern
|
|
% ein Zusatzmakro, das auch für andere Zwecke genutzt werden kann. Übrigens
|
|
% ist keine der beiden Einstellungen die Voreinstellung!
|
|
% \begin{macrocode}
|
|
%<*option>
|
|
\KOMA@key{appendixprefix}[true]{%
|
|
\KOMA@set@ifkey{appendixprefix}{@tempswa}{#1}%
|
|
\ifx\FamilyKeyState\FamilyKeyStateProcessed
|
|
\KOMA@kav@xreplacevalue{.\KOMAClassFileName}{appendixprefix}{#1}%
|
|
\KOMA@kav@remove{.\KOMAClassFileName}{headings}{twolineappendix}%
|
|
\KOMA@kav@remove{.\KOMAClassFileName}{headings}{onelineappendix}%
|
|
\if@tempswa
|
|
\KOMA@kav@add{.\KOMAClassFileName}{headings}{twolineappendix}%
|
|
\@ifundefined{appendixmore}{%
|
|
\def\appendixmore{\@chapterprefixtrue}%
|
|
}{%
|
|
\l@addto@macro\appendixmore{\@chapterprefixtrue}%
|
|
}%
|
|
\else
|
|
\KOMA@kav@add{.\KOMAClassFileName}{headings}{onelineappendix}%
|
|
\@ifundefined{appendixmore}{%
|
|
\def\appendixmore{\@chapterprefixfalse}%
|
|
}{%
|
|
\l@addto@macro\appendixmore{\@chapterprefixfalse}%
|
|
}%
|
|
\fi
|
|
\fi
|
|
}
|
|
\KOMA@DeclareDeprecatedOption{noappendixprefix}{appendixprefix=false}
|
|
%</option>
|
|
% \end{macrocode}
|
|
% \end{option}%^^A noappendixprefix
|
|
% \end{option}%^^A appendixprefix
|
|
%
|
|
%
|
|
% \begin{macro}{\size@chapter}
|
|
% \changes{v2.8o}{2001/09/14}{neu (intern)}%^^A
|
|
% \changes{v2.96a}{2006/12/02}{letztes Element darf ein Argument erwarten,
|
|
% wenn es keine Auswirkung auf den Zeilen abstand hat}%^^A
|
|
% \begin{macro}{\size@chapterprefix}
|
|
% \changes{v2.96a}{2006/12/02}{neu (intern)}%^^A
|
|
% Hier werden diese Befehle nur vordefiniert. Ihre tatsächliche Einstellung
|
|
% erfolgt über die (Vor-)Auswahl von Option \texttt{headings}.
|
|
% \begin{macrocode}
|
|
%<*prepare>
|
|
\newcommand*{\size@chapter}{}
|
|
\newcommand*{\size@chapterprefix}{\size@chapter}
|
|
%</prepare>
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
%
|
|
% \begin{macro}{\chapterheadstartvskip}
|
|
% \changes{v3.15}{2014/11/24}{\cs{scr@chapter@beforeskip} wird
|
|
% definiert und verwendet}%^^A
|
|
% \begin{macro}{\chapterheadendvskip}
|
|
% \changes{v3.11c}{2013/02/13}{\cs{chapterheadstartvskip} und
|
|
% \cs{chapterheadendvskip} haben in \textsf{scrartcl} nichts verloren}%^^A
|
|
% \changes{v3.15}{2014/11/24}{\cs{scr@chapter@afterskip} wird
|
|
% definiert und verwendet}%^^A
|
|
% \changes{v3.15}{2014/12/10}{\cs{vspace} durch \cs{vskip} ersetzt, damit
|
|
% \cs{lastskip} korrekt gesetzt ist}
|
|
% \begin{macro}{\chapterheadmidvskip}
|
|
% \changes{v3.15}{2014/11/20}{neue Anweisung}%^^A
|
|
% \changes{v3.17}{2015/03/25}{\cs{scr@chapter@innerskip} wird
|
|
% definiert und verwendet}%^^A
|
|
% Mit diesen Anweisungen wird üblicherweise der Abstand zwischen
|
|
% oberem Rand des Textbereichs und der Überschrift bzw. der Abstand
|
|
% zwischen der Überschrift und dem Text des Kapitels gesetzt. Man kann
|
|
% die Anweisungen aber zusätzlich auch für andere Zwecke
|
|
% missbrauchen. Das ist der Grund warum diese Makros keine Längen,
|
|
% sondern komplette Anweisungen enthalten. In der Voreinstellung
|
|
% enthalten sie jedoch gar nichts. Die tatsächlichen Werte werden
|
|
% durch die Optionen festgelegt. Dabei wird \cs{chapterheadmidvskip} nur
|
|
% verwendet, wenn Option \texttt{chapterprefix} aktiv ist.
|
|
%
|
|
% Zur Erhöhung der Kompatibilität mit \cs{DeclareSectionCommand} werden
|
|
% zunächst einige Hilfsanweisung definiert und verwendet.
|
|
% \begin{macro}{\scr@chapter@beforeskip}
|
|
% \changes{v3.15}{2014/11/24}{neue (interne) Anweisung}%^^A
|
|
% \changes{v3.17}{2015/03/25}{umbenannt in
|
|
% \cs{scr@chapter@beforeskip}}%^^A
|
|
% \begin{macro}{\scr@chapter@afterskip}
|
|
% \changes{v3.15}{2014/11/24}{neue (interne) Anweisung}%^^A
|
|
% \changes{v3.17}{2015/03/25}{umbenannt in
|
|
% \cs{scr@chapter@afterskip}}%^^A
|
|
% \begin{macro}{\scr@chapter@sectionindent}
|
|
% \changes{v3.15}{2014/11/24}{neue (interne) Anweisung (unbenutzt)}%^^A
|
|
% \changes{v3.17}{2015/04/24}{entfernt}%^^A
|
|
% \end{macro}%^^A \scr@chapter@sectionindent
|
|
% \end{macro}%^^A \scr@chapter@afterskip
|
|
% \end{macro}%^^A \scr@chapter@beforeskip
|
|
% \begin{macro}{\scr@chapter@beforeskip}
|
|
% \changes{v3.17}{2015/03/25}{Neu (intern) aus Umdefinierung von
|
|
% \cs{scr@chapter@sectionbeforeskip}}%^^A
|
|
% \begin{macro}{\scr@chapter@innerskip}
|
|
% \changes{v3.17}{2015/03/25}{Neu (intern)}%^^A
|
|
% \begin{macro}{\scr@chapter@afterskip}
|
|
% \changes{v3.17}{2015/03/25}{Neu (intern) aus Umdefinierung von
|
|
% \cs{scr@chapter@sectionafterskip}}%^^A
|
|
% \begin{macro}{\scr@chapter@style}
|
|
% \changes{v3.15}{2014/11/24}{neue (interne) Anweisung}%^^A
|
|
% Dabei wird der leere Stil verwendet, mit dem Neudefinitionen von \cs{part}
|
|
% über \cs{DeclareSectionCommand} verhindert werden. Gleichzeitig können
|
|
% jedoch Einstellungen einiger Werte darüber erfolgen.
|
|
% \begin{macrocode}
|
|
%<*prepare>
|
|
\newcommand*{\scr@chapter@beforeskip}{\z@}
|
|
\let\scr@chapter@beforeskip\z@
|
|
\newcommand*{\scr@chapter@afterskip}{\z@}
|
|
\let\scr@chapter@afterskip\z@
|
|
\newcommand*{\scr@chapter@innerskip}{\z@}
|
|
\let\scr@chapter@innerskip\z@
|
|
\newcommand*{\scr@chapter@style}{chapter}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@chapter@style
|
|
% \end{macro}%^^A \scr@chapter@innerskip
|
|
% \end{macro}%^^A \scr@chapter@beforeskip
|
|
% \end{macro}%^^A \scr@chapter@afterskip
|
|
% \begin{macrocode}
|
|
\newcommand*{\chapterheadstartvskip}{\vspace{\@tempskipa}}
|
|
\newcommand*{\chapterheadendvskip}{\vskip\@tempskipa}
|
|
\newcommand*{\chapterheadmidvskip}{\par\nobreak\vskip\@tempskipa}
|
|
%</prepare>
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \chapterheadmidvskip
|
|
% \end{macro}%^^A \chapterheadendvskip
|
|
% \end{macro}%^^A \chapterheadstartvskip
|
|
%
|
|
%
|
|
% \begin{macro}{\scr@startchapter}
|
|
% \changes{v3.18}{2015/05/22}{neue Anweisung (für Paketautoren)}
|
|
% \changes{v3.19}{2015/08/25}{Seitenstil nur ändern wenn definiert und nicht
|
|
% leer}%^^A
|
|
% Diese Anweisung legt fest, wie der konkrete Aufruf für Überschriften des
|
|
% Stils \texttt{chapter} lautet. Einziges Argument ist dabei der Name der
|
|
% Gliederungsebene, beispielsweise \texttt{chapter}. Alle anderen benötigten
|
|
% Werte ergeben sich aus den Einstellungen für die Gliederungsebene. Beim
|
|
% tatsächlichen Aufruf wird dann daran wie üblich noch optional noch entweder
|
|
% ein Stern oder ein Argument für Kolumnentitel und Inhaltsverzeichniseintrag
|
|
% und der Text der Überschrift angehängt. Diese Anweisung wurde von der
|
|
% ursprünglichen Definition von \cs{chapter} abgeleitet.
|
|
% \begin{macrocode}
|
|
%<*body>
|
|
\newcommand*{\scr@startchapter}[1]{%
|
|
\ExecuteDoHook{heading/preinit/#1}%
|
|
\if@openright\cleardoublepage\else\clearpage\fi
|
|
\scr@ifundefinedorrelax{#1pagestyle}{}{%
|
|
\Ifstr{#1pagestyle}{}{}{%
|
|
\thispagestyle{\@nameuse{#1pagestyle}}%
|
|
}%
|
|
}%
|
|
\global\@topnum\z@
|
|
\@ifundefined{scr@#1@afterindent}{\@afterindentfalse}{%
|
|
\csname scr@#1@afterindent\endcsname
|
|
{\@afterindenttrue}{\@afterindentfalse}{%
|
|
\@afterindenttrue
|
|
\@ifundefined{scr@#1@beforeskip}{\@afterindentfalse}{%
|
|
\ifdim\glueexpr\@nameuse{scr@#1@beforeskip}\relax<\z@
|
|
\@afterindentfalse
|
|
\fi
|
|
}%
|
|
}%
|
|
}%
|
|
\ExecuteDoHook{heading/postinit/#1}%
|
|
\expandafter\SecDef\csname @#1\expandafter\endcsname\csname @s#1\endcsname
|
|
}
|
|
% \end{macrocode}
|
|
%
|
|
% \begin{macro}{\scr@@startchapter}
|
|
% \changes{v3.18}{2015/05/22}{neue Anweisung (intern)}
|
|
% Diese Anweisung nimmt die Rolle des ursprüngliche \cs{@chapter} ein und
|
|
% erbst damit auch die ganzen noch relevanten ChangeLog-Einträge dieser
|
|
% Anweisung.
|
|
% \begin{macrocode}
|
|
\newcommand*{\scr@@startchapter}{}
|
|
\def\scr@@startchapter#1[#2]#3{%
|
|
\ExecuteDoHook{heading/branch/nostar/#1}%
|
|
% \end{macrocode}
|
|
% \changes{v3.10}{2011/08/30}{Integration der Erweiterung für das optionale
|
|
% Argument der Gliederungsbefehle}%^^A
|
|
% \changes{v3.27}{2019/07/08}{neue Option \texttt{nonumber}}%^^A
|
|
% Für das erweitere optionale Argument muss hier eine key-value-Auswertung
|
|
% erfolgen, falls das erweitere optionale Argument aktiviert ist:
|
|
% \begin{macrocode}
|
|
\ifnum \scr@osectarg=\z@
|
|
\@scr@tempswafalse
|
|
\else
|
|
\scr@istest#2=\@nil
|
|
\fi
|
|
\@currentusenumbertrue
|
|
\if@scr@tempswa
|
|
\setkeys{KOMAarg.section}{tocentry={#3},head={#3},reference={#3},#2}%
|
|
\else
|
|
\ifcase \scr@osectarg\relax
|
|
\setkeys{KOMAarg.section}{tocentry={#2},head={#2},reference={#2}}%
|
|
\or
|
|
\setkeys{KOMAarg.section}{tocentry={#3},head={#2},reference={#3}}%
|
|
\or
|
|
\setkeys{KOMAarg.section}{tocentry={#2},head={#3},reference={#2}}%
|
|
\or
|
|
\setkeys{KOMAarg.section}{tocentry={#2},head={#2},reference={#2}}%
|
|
\fi
|
|
\fi
|
|
% \end{macrocode}
|
|
% Als nächstes muss für nummerierte Überschriften dieser Ebene sowohl der
|
|
% Zähler erhöht also auch ein nummerierter Eintrag ins Inhaltsverzeichnis
|
|
% erstellt werden.
|
|
% \changes{v2.8e}{2001/07/10}{\cs{@maybeautodot} wird aufgerufen}%^^A
|
|
% \changes{v3.08}{2010/11/01}{Verwendung von \cs{addchaptertocentry}}%^^A
|
|
% \changes{v3.18}{2015/05/20}{Verwendung von \cs{add\meta{Name}tocentry}}%^^A
|
|
% \changes{v3.18}{2015/05/22}{Verwendung von \meta{Name} statt \cs{@chapapp}
|
|
% in \cs{typeout}}%^^A
|
|
% \changes{v3.28}{2019/11/19}{\cs{ifnumbered} umbenannt in
|
|
% \cs{Ifnumbered}}%^^A
|
|
% \begin{macrocode}
|
|
\Ifnumbered{#1}{%
|
|
%<book> \if@mainmatter
|
|
\@tempswatrue
|
|
%<book> \else\@tempswafalse\fi
|
|
}{\@tempswafalse}%
|
|
\if@tempswa
|
|
\refstepcounter{#1}%
|
|
\expandafter\@maybeautodot\csname the#1\endcsname
|
|
\typeout{#1 \csname the#1\endcsname.}%
|
|
\ifx\@currenttocentry\@empty\else
|
|
% \end{macrocode}
|
|
% \selectlanguage{english}%
|
|
% \changes{v3.31}{2020/06/06}{use \cs{\dots tocformat}}%
|
|
%^^ATODO: move \cs{autodot} to the definition of \cs{\dots tocformat}
|
|
% \selectlanguage{ngerman}%
|
|
% \begin{macrocode}
|
|
\@ifundefined{#1tocformat}{%
|
|
\expandafter\gdef\csname #1tocformat\endcsname
|
|
{\csname the#1\endcsname}%
|
|
}{}%
|
|
\scr@ifundefinedorrelax{add#1tocentry}{%
|
|
\addtocentrydefault{#1}%
|
|
}{%
|
|
\@nameuse{add#1tocentry}%
|
|
}{\csname\@ifundefined{#1tocformat}{the#1}{#1tocformat}\endcsname}%
|
|
{\@currenttocentry}%
|
|
\fi
|
|
% \end{macrocode}
|
|
% Für alle nicht nummerieten Überschriften dieser Ebene trotzdem die
|
|
% Resetliste des Zählers ausführen und ggf. einen Verzeichniseintrag
|
|
% erstellen.
|
|
% \begin{macrocode}
|
|
\else
|
|
\expandafter\ifnum\scr@v@is@lt{3.15}\relax\else
|
|
\begingroup
|
|
\let\@elt\@stpelt
|
|
\csname cl@#1\endcsname
|
|
\endgroup
|
|
\fi
|
|
\typeout{#1 without number}%
|
|
\ifx\@currenttocentry\@empty\else
|
|
% \end{macrocode}
|
|
% An dieser Stelle muss ggf. der \textsf{hyperref}-Hook für nicht nummerierte
|
|
% Inhaltsverzeichniseinträge ausgeführt werden.
|
|
% \begin{macrocode}
|
|
\hy@insteadofrefstepcounter{#1}%
|
|
\scr@ifundefinedorrelax{add#1tocentry}{%
|
|
\addtocentrydefault{#1}%
|
|
}{%
|
|
\@nameuse{add#1tocentry}%
|
|
}{}{\@currenttocentry}%
|
|
\fi
|
|
\fi
|
|
% \end{macrocode}
|
|
% Jetzt kommt der Kolumnentitel an die Reihe.
|
|
% \begin{macrocode}
|
|
\csname #1mark\expandafter\endcsname\expandafter{\@currentheadentry}%
|
|
% \end{macrocode}
|
|
% Und die Abstände in die andere Verzeichnisse.
|
|
% \changes{v2.8g}{2001/07/18}{per \cs{float@addtolists} wird nun
|
|
% auch ein vertikaler Abstand in Listen des \texttt{float}-Pakets
|
|
% eingebaut}%^^A
|
|
% \changes{v3.00}{2008/07/01}{jetzt auch Kapiteleinträge in andere
|
|
% float-Verzeichnisse mit hyperref}%^^A
|
|
% \changes{v3.28}{2019/11/19}{\cs{iftocfeature} replaced by
|
|
% \cs{Iftocfeature}}%^^A
|
|
% \begin{macrocode}
|
|
\ifdim \@chapterlistsgap>\z@
|
|
\doforeachtocfile{%
|
|
\Iftocfeature{\@currext}{chapteratlist}{%
|
|
\addtocontents{\@currext}{\protect\addvspace{\@chapterlistsgap}}%
|
|
}{}%
|
|
}%
|
|
\@ifundefined{float@addtolists}{}{%
|
|
\scr@float@addtolists@warning
|
|
\float@addtolists{\protect\addvspace{\@chapterlistsgap}}%
|
|
}%
|
|
\fi
|
|
% \end{macrocode}
|
|
% Jetzt kommt die eigentliche Überschrift. An dieser Stelle wird ab
|
|
% Version~3.18 nicht mehr stur \cs{@makecshapterhead} verwendet, sondern eine
|
|
% Anweisung, die vom Namen der Gliederungsüberschrift abhängig ist.
|
|
% \changes{v3.18}{2015/05/22}{\cs{@makechapterhead} durch
|
|
% \cs{@make\meta{Name}head} ersetzt}%^^A
|
|
% \begin{macrocode}
|
|
\if@twocolumn
|
|
\if@at@twocolumn
|
|
\@nameuse{@make#1head}{#3}%
|
|
\else
|
|
\@topnewpage[\@nameuse{@make#1head}{#3}]%
|
|
\fi
|
|
\else
|
|
\@nameuse{@make#1head}{#3}%
|
|
\fi
|
|
% \end{macrocode}
|
|
% Und das Ganze endet schließlich mit:
|
|
% \changes{v3.18}{2015/05/21}{\cs{@afterheading} in jedem Fall}%^^A
|
|
% \begin{macrocode}
|
|
\@afterheading
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@@startchapter
|
|
%
|
|
% \begin{macro}{\scr@@startschapter}
|
|
% \changes{v3.18}{2015/05/22}{neue Anweisung (intern)}
|
|
% Diese Anweisung nimmt die Rolle des ursprüngliche \cs{@schapter} ein sie ist
|
|
% sehr viel einfacher gestrickt als \cs{scr@@startchapter}.
|
|
% \begin{macrocode}
|
|
\newcommand*{\scr@@startschapter}[2]{%
|
|
\ExecuteDoHook{heading/branch/star/#1}%
|
|
% \end{macrocode}
|
|
% Für Leute, die unbedingt nach der Sternversion noch ein \cs{addcontentsline}
|
|
% anfügen wollen, muss hier ebenfalls der \textsf{hyperref}-Hook ausgeführt
|
|
% werden. Allerdings passiert das hier entsprechend dem Vorgehen von
|
|
% \textsf{hyperref} selbst in einer Gruppe, in der zusätzlich \cs{@mkboth} zu
|
|
% \cs{@gobbletwo} gemacht wird, auch wenn ich absolut nicht versehe, was das
|
|
% soll.
|
|
% \begin{macrocode}
|
|
\begingroup
|
|
\let\@mkboth\@gobbletwo
|
|
\hy@insteadofrefstepcounter{#1}%
|
|
\endgroup
|
|
% \end{macrocode}
|
|
% Dann wird die eigentliche Überschrift ausgegeben.
|
|
% \begin{macrocode}
|
|
\if@twocolumn
|
|
\if@at@twocolumn
|
|
\@nameuse{@makes#1head}{#2}%
|
|
\else
|
|
\@topnewpage[\@nameuse{@makes#1head}{#2}]%
|
|
\fi
|
|
\else
|
|
\@nameuse{@makes#1head}{#2}%
|
|
\fi
|
|
% \end{macrocode}
|
|
% Und das Ganze endet schließlich mit:
|
|
% \changes{v3.18}{2015/05/21}{\cs{@afterheading} in jedem Fall}%^^A
|
|
% \begin{macrocode}
|
|
\@afterheading
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@@startschapter
|
|
%
|
|
%% \begin{macro}{\if@at@twocolumn}
|
|
% \changes{v2.7b}{2001/01/05}{neu (intern)}%^^A
|
|
% \begin{macro}{\scr@topnewpage}
|
|
% \changes{v2.7b}{2001/01/05}{neu (intern)}%^^A
|
|
% \changes{v2.8q}{2001/11/27}{fehlende Klammern ergänzt}%^^A
|
|
% \begin{macro}{\@topnewpage}
|
|
% \changes{v2.7b}{2001/01/05}{neu (\LaTeX{} intern)}%^^A
|
|
% \changes{v2.7g}{2001/04/17}{vergessenes \cs{long} ergänzt}%^^A
|
|
% \changes{v3.01}{2008/11/13}{Verwendung von
|
|
% \cs{scr@float@addtolists@warning} (aus \texttt{scrkliof.dtx})}%^^A
|
|
% Interessant ist dabei die Erweiterung, daß jedes Kapitel mit einer
|
|
% Präambel versehen werden kann. Diese wird im zweispaltigen Satz wie
|
|
% die Überschrift selbst einspaltig gesetzt. Intern wird dies für
|
|
% die Preambel des Index und der Bibliography verwendet. Dabei
|
|
% entsteht aber wiederum das Problem, dass der Indexkopf innerhalb von
|
|
% \cs{twocolumn} ausgegeben wird andererseits aber innerhalb von
|
|
% \cs{chapter} das Makro \cs{@topnewpage} verwendet wird. Damit würde
|
|
% dann also \cs{@topnewpage} innerhalb von \cs{@topnewpage}
|
|
% aufgerufen. Das ist jedoch nicht erlaubt. Als muss der Aufruf von
|
|
% \cs{@topnewpage} in \cs{@chapter} und \cs{@schapter} verhindert
|
|
% werden, wenn wir uns bereits in \cs{@topnewpage} befinden. Eine
|
|
% Möglichkeit dafür wäre, einen Schalter in den Index-Kopf
|
|
% einzubauen. Ich wähle hingegen die Methode, \cs{@topnewpage}
|
|
% entsprechend umzudefinieren. Damit kann dann auch der Anwender
|
|
% \cs{@chapter} innerhalb des optionalen Arguments von \cs{twocolumn}
|
|
% verwenden. Ein Schalter wird allerdings trotzdem gebraucht.
|
|
% \begin{macrocode}
|
|
\newif\if@at@twocolumn
|
|
\newcommand*\scr@topnewpage{}
|
|
\let\scr@topnewpage\@topnewpage
|
|
\long\def\@topnewpage[#1]{%
|
|
\@at@twocolumntrue\scr@topnewpage[{#1}]\@at@twocolumnfalse
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \@topnewpage
|
|
% \end{macro}%^^A \scr@topnewpage
|
|
% \end{macro}%^^A \if@at@twocolumn
|
|
%
|
|
% \begin{macro}{\scr@makechapterhead}
|
|
% \changes{v3.18}{2015/05/22}{neue Anweisung (intern)}
|
|
% Diese Anweisung nimmt die Rolle des ursprüngliche \cs{@makechapterhead}
|
|
% ein. Mit dem neuen Mechanismus könnte man auf diesen zusätzlichen Schritt
|
|
% verzichten. Aus Gründen der Kompatibilität wurde er aber übernommen. Daher
|
|
% übernimmt sie auch die ChangeLog-Einträge der alten Anweisung.
|
|
% \changes{v2.7b}{2001/01/05}{Kapitel können grundsätzlich mit einer
|
|
% Präambel versehen werden}%^^A
|
|
% \changes{v2.8p}{2001/09/25}{es gibt verschiedene Arten von Präambeln}%^^A
|
|
% \changes{v3.15}{2014/12/10}{\cs{nobreak} am Ende entfernt}%^^A
|
|
% \begin{macrocode}
|
|
\newcommand*{\scr@makechapterhead}[2]{%
|
|
\use@chapter@o@preamble{#1}%
|
|
\@nameuse{@@make#1head}{#2}%
|
|
\use@preamble{#1@u}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@makechapterhead
|
|
%
|
|
% \begin{macro}{\scr@makeschapterhead}
|
|
% \changes{v3.18}{2015/05/22}{neue Anweisung (intern)}
|
|
% Diese Anweisung nimmt die Rolle des ursprüngliche \cs{@makeschapterhead}
|
|
% ein. Mit dem neuen Mechanismus könnte man auf diesen zusätzlichen Schritt
|
|
% verzichten. Aus Gründen der Kompatibilität wurde er aber übernommen. Daher
|
|
% übernimmt sie auch die ChangeLog-Einträge der alten Anweisung.
|
|
% \begin{macrocode}
|
|
\newcommand*{\scr@makeschapterhead}[2]{%
|
|
\use@chapter@o@preamble{#1}%
|
|
\@nameuse{@@makes#1head}{#2}%
|
|
\use@preamble{#1@u}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@makeschapterhead
|
|
%
|
|
% \begin{macro}{\scr@@makechapterhead}
|
|
% \changes{v3.18}{2015/05/22}{neue Anweisung (intern)}
|
|
% Diese Anweisung nimmt die Rolle des ursprüngliche \cs{@@makechapterhead}
|
|
% ein. Daher übernimmt sie auch die ChangeLog-Einträge der alten Anweisung.
|
|
% \changes{v2.8q}{2002/04/18}{\cs{raggedsection} wird bei Option
|
|
% \texttt{chapterprefix} auch auf den Präfix angewendet}%^^A
|
|
% \changes{v2.9p}{2003/06/28}{\cs{parfillskip} auf \cs{fill} gesetzt}%^^A
|
|
% \changes{v2.96a}{2006/12/02}{Abstand nach der Präfixzeile nur, wenn eines
|
|
% Präfixzeile ausgegeben wurde}%^^A
|
|
% \changes{v2.97b}{2007/03/09}{\cs{endgraf} korrigiert}%^^A
|
|
% \changes{v3.15}{2014/11/20}{Generalumbau}%^^A
|
|
% \changes{v3.15}{2014/12/09}{\cs{raggedchapter} ersetzt
|
|
% \cs{raggedsection}}%^^A
|
|
% \changes{v3.17}{2015/04/03}{Verwendung von \cs{usefontofkomafont} für die
|
|
% initiale Fontumstellung}%^^A
|
|
% \begin{macrocode}
|
|
\newcommand*{\scr@@makechapterhead}[2]{%
|
|
% \end{macrocode}
|
|
% Der Absolutwert des Abstandes davor wird eingefügt.
|
|
% \changes{v3.22}{2016/12/21}{\cs{@afterindentrue} wird bei positivem
|
|
% \texttt{beforeskip} gesetzt}%^^A
|
|
% \changes{v3.26}{2018/09/18}{Beachtung von Einstellung
|
|
% \texttt{afterindent}}%^^A
|
|
% \begin{macrocode}
|
|
\@tempskipa=\glueexpr \csname scr@#1@beforeskip\endcsname\relax\relax
|
|
\csname scr@#1@afterindent\endcsname
|
|
{\@afterindenttrue}{\@afterindentfalse}{%
|
|
\ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\else
|
|
\expandafter\ifnum\scr@v@is@ge{3.22}\@afterindenttrue\fi
|
|
\fi
|
|
}%
|
|
\chapterheadstartvskip
|
|
% \end{macrocode}
|
|
% Dann die eigentliche Überschrift innerhalb einer Gruppe.
|
|
% \changes{v3.20}{2015/12/23}{\cs{parfillskip} auf \texttt{\cs{z@} plus
|
|
% 1fil} gesetzt}%^^A
|
|
% \changes{v3.27}{2019/02/02}{Setzen von \cs{parindent} und \cs{parfillskip}
|
|
% verschoben}%^^A
|
|
% \begin{macrocode}
|
|
{%
|
|
% \end{macrocode}
|
|
% \changes{v3.19}{2015/08/02}{Verwendung von \cs{chapterlinesformat} und
|
|
% \cs{chapterlineswithprefixformat}}%^^A
|
|
% \changes{v3.19}{2015/08/02}{Verwendung von Element \texttt{disposition} an
|
|
% Stelle von Befehl \cs{sectfont}}%^^A
|
|
% \changes{v3.19a}{2015/10/03}{Bug durch vergessene Definition von
|
|
% \cs{IfUseNumber} behoben}%^^A
|
|
% \changes{v3.27}{2019/02/02}{\cs{ExecuteDoHook} eingefügt}%^^A
|
|
% \changes{v3.28}{2019/11/19}{\cs{ifnumbered} umbenannt in
|
|
% \cs{Ifnumbered}}%^^A
|
|
% Ab Version~3.19 wurde der Code weitgehend umgebaut, um die Befehle
|
|
% \cs{chapterlinesformat} für die hängende Version und
|
|
% \cs{chapterlinesandprefixformat} für die Version mit Präfixzeile zu
|
|
% verwenden. Dadurch entfällt dann auch die Verwendung von
|
|
% \cs{usefontofkomafont}. Ich bin mir bewusst, dass dadurch diverse Hacks
|
|
% bezüglich der Kapitelüberschriften nicht mehr funktionieren. Dafür kann man
|
|
% diese Hacks nun durch saubere Lösungen ersetzen.
|
|
% \begin{macrocode}
|
|
\def\IfUseNumber{\Ifnumbered{#1}}%
|
|
%<book> \if@mainmatter\else\let\IfUseNumber\@secondoftwo\fi
|
|
\ExecuteDoHook{heading/begingroup/#1}%
|
|
\if@chapterprefix
|
|
\let\IfUsePrefixLine\@firstoftwo
|
|
\else
|
|
\let\IfUsePrefixLine\@secondoftwo
|
|
\fi
|
|
\setlength{\parindent}{\z@}\setlength{\parfillskip}{\z@ plus 1fil}%
|
|
\normalfont\usekomafont{disposition}{%
|
|
\usekomafont{#1}{%
|
|
\settoheight{\@tempskipa}{%
|
|
{\usekomafont{#1prefix}{%
|
|
\vrule \@width\z@ \@height\csname scr@#1@innerskip\endcsname}}%
|
|
}%
|
|
\raggedchapter
|
|
\IfUseNumber{%
|
|
\IfUsePrefixLine{%
|
|
\chapterlineswithprefixformat{#1}%
|
|
{{\usekomafont{#1prefix}{\csname #1format\endcsname%
|
|
\setlength{\@tempskipa}{\csname scr@#1@innerskip\endcsname}%
|
|
\chapterheadmidvskip}}}%
|
|
{\interlinepenalty \@M#2\@@par}%
|
|
}{%
|
|
\chapterlinesformat{#1}%
|
|
{\csname #1format\endcsname}%
|
|
{\interlinepenalty \@M#2\@@par}%
|
|
}%
|
|
}{%
|
|
\IfUsePrefixLine{%
|
|
\chapterlineswithprefixformat{#1}%
|
|
{}%
|
|
{\interlinepenalty \@M#2\@@par}%
|
|
}{%
|
|
\chapterlinesformat{#1}%
|
|
{}%
|
|
{\interlinepenalty \@M#2\@@par}%
|
|
}%
|
|
}%
|
|
}%
|
|
}%
|
|
\ExecuteDoHook{heading/endgroup/#1}%
|
|
}%
|
|
\nobreak\par\nobreak
|
|
% \end{macrocode}
|
|
% Zum Schluss der Absolutwert des Abstandes dahinter.
|
|
% \changes{v3.26}{2018/09/20}{Betragsbildung entfernt}%^^A
|
|
% \begin{macrocode}
|
|
\@tempskipa=\glueexpr \csname scr@#1@afterskip\endcsname\relax\relax
|
|
\chapterheadendvskip
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@@makechapterhead
|
|
%
|
|
% \begin{macro}{\scr@@makeschapterhead}
|
|
% \changes{v3.18}{2015/05/22}{neue Anweisung (intern)}
|
|
% Diese Anweisung nimmt die Rolle des ursprüngliche \cs{@@makechapterhead}
|
|
% ein. Sie ist um einiges einfacher als \cs{scr@@makechapterhead} orientiert
|
|
% sich aber prinzipiell daran.
|
|
% \changes{v2.9p}{2003/06/28}{\cs{parfillskip} auf \cs{fill} gesetzt}%^^A
|
|
% \changes{v2.9q}{2004/03/24}{Klammerung an \cs{@@makechapterhead}%^^A
|
|
% angepasst}%^^A
|
|
% \changes{v3.15}{2014/12/09}{\cs{raggedchapter} ersetzt
|
|
% \cs{raggedsection}}%^^A
|
|
% \changes{v3.19}{2015/08/02}{an die Änderungen bei \cs{scr@@makechapterhead}
|
|
% angepasst}%^^A
|
|
% \changes{v3.20}{2015/12/23}{\cs{parfillskip} auf \texttt{\cs{z@} plus
|
|
% 1fil} gesetzt}%^^A
|
|
% \changes{v3.22}{2016/12/21}{\cs{@afterindentrue} wird bei positivem
|
|
% \texttt{beforeskip} gesetzt}%^^A
|
|
% \changes{v3.25}{2017/09/07}{\cs{IfUseNumber} korrigiert}%^^A
|
|
% \changes{v3.26}{2018/09/18}{Beachtung von Einstellung
|
|
% \texttt{afterindent}}%^^A
|
|
% \changes{v3.26}{2018/09/20}{Betragsbildung für \texttt{afterskip}
|
|
% entfernt}%^^A
|
|
% \begin{macrocode}
|
|
\newcommand*{\scr@@makeschapterhead}[2]{%
|
|
\@tempskipa=\glueexpr \csname scr@#1@beforeskip\endcsname\relax\relax
|
|
\csname scr@#1@afterindent\endcsname
|
|
{\@afterindenttrue}{\@afterindentfalse}{%
|
|
\ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\else
|
|
\expandafter\ifnum\scr@v@is@ge{3.22}\@afterindenttrue\fi
|
|
\fi
|
|
}%
|
|
\chapterheadstartvskip
|
|
{%
|
|
\let\IfUseNumber\@secondoftwo
|
|
\ExecuteDoHook{heading/begingroup/#1}%
|
|
\if@chapterprefix
|
|
\let\IfUsePrefixLine\@firstoftwo
|
|
\else
|
|
\let\IfUsePrefixLine\@secondoftwo
|
|
\fi
|
|
\setlength{\parindent}{\z@}\setlength{\parfillskip}{\z@ plus 1fil}%
|
|
\normalfont\usekomafont{disposition}{%
|
|
\usekomafont{#1}{%
|
|
\raggedchapter
|
|
\IfUsePrefixLine{%
|
|
\chapterlineswithprefixformat{#1}%
|
|
{}%
|
|
{\interlinepenalty \@M#2\@@par}%
|
|
}{%
|
|
\chapterlinesformat{#1}%
|
|
{}%
|
|
{\interlinepenalty \@M#2\@@par}%
|
|
}%
|
|
}%
|
|
}%
|
|
\ExecuteDoHook{heading/endgroup/#1}%
|
|
}%
|
|
\nobreak\par\nobreak
|
|
\@tempskipa=\glueexpr \csname scr@#1@afterskip\endcsname\relax\relax
|
|
\chapterheadendvskip
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@@makeschapterhead
|
|
%
|
|
% \begin{macro}{\chapterlinesformat}
|
|
% \changes{v3.19}{2015/08/02}{neue Anweisung}
|
|
% \begin{macro}{\chapterlineswithprefixformat}
|
|
% \changes{v3.19}{2015/08/02}{neue Anweisung}
|
|
% Diese Anweisung definiert das Format der eigentlichen Überschriften im Stil
|
|
% \texttt{chapter}, wenn mit Überschriftenzeilen gearbeitet
|
|
% wird. Fonteinstellungen sind zu diesem Zeitpunkt bereits erfolgt. Die
|
|
% Argumente sind:
|
|
% \begin{description}
|
|
% \item[\meta{Befehlsname} --] der Name der Gliederungsebene, normalerweise
|
|
% \texttt{chapter}.
|
|
% \item[\meta{Gliederungsnummer} --] die bereits fertig formatierte
|
|
% Gliederungsnummer (bei \cs{chapterlineswithprefixformat} einschließlich
|
|
% des nachfolgenden vertikalen Abstands) oder leer, falls keine
|
|
% Gliederungsnummer auszugeben ist.
|
|
% \item[\meta{Text} --] der Text der Überschrift.
|
|
% \end{description}
|
|
% Der Anwender ist selbst verantwortlich, dass innerhalb der Überschrift kein
|
|
% Seitenumbruch erfolgen kann. Nach der Überschrift wird jedoch zwangsweise
|
|
% ein \cs{@@par} ausgeführt, so dass sichergestellt ist, dass mit einem
|
|
% internen Absatz abgeschlossen wird.
|
|
% \begin{macrocode}
|
|
\newcommand{\chapterlinesformat}[3]{%
|
|
\@hangfrom{#2}{#3}%
|
|
}
|
|
\newcommand{\chapterlineswithprefixformat}[3]{%
|
|
#2#3%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \chapterlineswithprefixformat
|
|
% \end{macro}%^^A \chapterlinesformat
|
|
%
|
|
% \begin{macro}{\use@chapter@o@preamble}
|
|
% \changes{v3.15}{2014/12/08}{Anpassung an geänderte Abstandsbehandlung}%^^A
|
|
% \changes{v3.15a}{2015/02/02}{Korrektur, zur Verhinderung falscher
|
|
% \texttt{overfull \cs{vbox}} Meldungen}%^^A
|
|
% \changes{v3.18}{2015/05/20}{Verwendung befehlsabhängiger Abstände und
|
|
% Warnungen}%^^A
|
|
% \changes{v3.18}{2015/05/22}{Bekommt ein Argument und setzt die Prämabel
|
|
% der Anweisung nicht des Stils}%^^A
|
|
% Das Makro wird benötigt, weil das Setzen der oberen Präambel etwas
|
|
% mehr Aufwand bedeutet. Die Anweisung spart Platz, da sie zweimal
|
|
% verwendet wird.
|
|
% \begin{macrocode}
|
|
\newcommand*{\use@chapter@o@preamble}[1]{%
|
|
{%
|
|
\settoheight{\@tempdima}{%
|
|
\@tempskipa=\glueexpr \csname scr@#1@beforeskip\endcsname\relax\relax
|
|
\ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
|
|
\vbox{\chapterheadstartvskip}%
|
|
}%
|
|
\settodepth{\@tempdimb}{%
|
|
\@tempskipa=\glueexpr \csname scr@#1@beforeskip\endcsname\relax\relax
|
|
\ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
|
|
\vbox{\chapterheadstartvskip}%
|
|
}%
|
|
\addtolength{\@tempdima}{\@tempdimb}%
|
|
\setbox\z@\vbox{%
|
|
\use@preamble{#1@o}%
|
|
}%
|
|
\setlength{\@tempdimb}{\ht0}%
|
|
\addtolength{\@tempdimb}{\dp0}%
|
|
\vbox to \z@{%
|
|
\vskip-\baselineskip
|
|
\vbox to \@tempdima{%
|
|
\vfill
|
|
\box\z@
|
|
}%
|
|
\vss
|
|
}\vskip-\parskip\vskip-\baselineskip
|
|
\ifdim \@tempdimb>\@tempdima%
|
|
\addtolength{\@tempdimb}{-\@tempdima}%
|
|
\ifdim\@tempdimb<\vfuzz
|
|
\ClassInfo{\KOMAClassName}{%
|
|
preamble before #1 is \the\@tempdimb\space to high.\MessageBreak
|
|
Tolerated without warning because of\MessageBreak
|
|
\string\vfuzz\space = \the\vfuzz\space >= \the\@tempdimb
|
|
}%
|
|
\else
|
|
\ClassWarning{\KOMAClassName}{%
|
|
preamble before #1 is \the\@tempdimb\space to high.\MessageBreak
|
|
To avoid the overfull \string\vbox\space you may
|
|
change\MessageBreak
|
|
the `beforeskip' value using
|
|
\string\RedeclareSectionCommand\MessageBreak
|
|
at the preamble of your document.\MessageBreak
|
|
You may also change \string\setchapterpreamble\MessageBreak
|
|
before the command, which generates the message
|
|
about\MessageBreak
|
|
an overfull \string\vbox
|
|
}%
|
|
\fi
|
|
\fi%
|
|
}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \use@chapter@o@preamble
|
|
% \end{macro}%^^A \scr@startchapter
|
|
%
|
|
% \begin{macro}{\addchaptertocentry}
|
|
% \changes{v3.08}{2010/11/01}{Neu}%^^A
|
|
% \changes{v3.12}{2013/09/24}{Behandlung von \cs{if@chaptertolists} hier}%^^A
|
|
% \changes{v3.12}{2013/09/24}{Verwendung von \cs{addxcontentsline}}%^^A
|
|
% \changes{v3.28}{2019/11/19}{\cs{iftocfeature} replaced by
|
|
% \cs{Iftocfeature}}%^^A
|
|
% Seit Version~3.08 wird der Eintrag nicht direkt innerhalb von \cs{chapter}
|
|
% per \cs{addcontentsline} erzeugt, sondern indirekt über diese Anweisung. Das
|
|
% erste Argument ist dabei die (formatierte) Nummer bzw. bei nicht
|
|
% nummerierten Kapiteln leer. Das zweite Argument ist der Überschriftstext für
|
|
% das Verzeichnis. Durch diesen indirekten Weg, kann die Anweisung einfach
|
|
% umdefiniert werden. Verwendet wird hier die Standardanweisung für
|
|
% Inhaltsverzeichniseinträge, die in \texttt{scrkliof.dtx} definiert ist:
|
|
% \begin{macrocode}
|
|
\newcommand*{\addchaptertocentry}[2]{%
|
|
\addtocentrydefault{chapter}{#1}{#2}%
|
|
\if@chaptertolists
|
|
\doforeachtocfile{%
|
|
\Iftocfeature{\@currext}{chapteratlist}{%
|
|
\addxcontentsline{\@currext}{chapteratlist}[{#1}]{#2}%
|
|
}{}%
|
|
}%
|
|
\@ifundefined{float@addtolists}{}{\scr@float@addtolists@warning}%
|
|
\fi
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \addchaptertocentry
|
|
%
|
|
% \begin{macro}{\@chapter}
|
|
% \changes{v3.18}{2015/05/22}{siehe \cs{scr@dsc@def@style@chapter@command}
|
|
% und \cs{scr@@startchapter}}%^^A
|
|
% \begin{macro}{\@makechapterhead}
|
|
% \changes{v3.18}{2015/05/22}{siehe \cs{scr@dsc@def@style@chapter@command}
|
|
% und \cs{scr@makechapterhead}}%^^A
|
|
% \begin{macro}{\@@makechapterhead}
|
|
% \changes{v3.18}{2015/05/22}{siehe \cs{scr@dsc@def@style@chapter@command}
|
|
% und \cs{scr@@makechapterhead}}%^^A
|
|
% \begin{macro}{\@schapter}
|
|
% \changes{v3.18}{2015/05/22}{siehe \cs{scr@dsc@def@style@chapter@command}
|
|
% und \cs{scr@@startschapter}}%^^A
|
|
% \begin{macro}{\@makeschapterhead}
|
|
% \changes{v3.18}{2015/05/22}{siehe \cs{scr@dsc@def@style@chapter@command}
|
|
% und \cs{scr@makeschapterhead}}%^^A
|
|
% \begin{macro}{\@@makeschapterhead}
|
|
% \changes{v3.18}{2015/05/22}{siehe \cs{scr@dsc@def@style@chapter@command}
|
|
% und \cs{scr@@makeschapterhead}}%^^A
|
|
% \begin{macro}{\setchapterpreamble}
|
|
% \changes{v2.7b}{2001/01/05}{neu}%^^A
|
|
% \changes{v3.18}{2015/05/22}{siehe \cs{scr@dsc@def@style@chapter@command}}%^^A
|
|
% \begin{macro}{\chapter@u@preamble}
|
|
% \changes{v2.8p}{2001/09/25}{neu (intern)}%^^A
|
|
% \changes{v3.18}{2015/05/22}{siehe \cs{scr@dsc@def@style@chapter@command}}%^^A
|
|
% \begin{macro}{\chapter@o@preamble}
|
|
% \changes{v2.8p}{2001/09/25}{neu (intern)}%^^A
|
|
% \changes{v3.18}{2015/05/22}{siehe \cs{scr@dsc@def@style@chapter@command}}%^^A
|
|
% All diese Anweisungen wurden in früheren Versionen von \KOMAScript{}
|
|
% explizit definiert. Nun werden sie nur noch indirekt über
|
|
% \cs{scr@dsc@def@style@chapter@command} definiert und verwenden dabei andere
|
|
% interne Anweisungen als früher. Deshalb funktionieren ggf. das Patchen mit
|
|
% \textsf{etoolbox}, \textsf{xpatch} und ähnlichen Paketen nicht mehr. Das ist
|
|
% der Preis für die neuen Möglichkeiten.
|
|
% \end{macro}%^^A \chapter@o@preamble
|
|
% \end{macro}%^^A \chapter@u@preamble
|
|
% \end{macro}%^^A \setchapterpreamble
|
|
% \end{macro}%^^A \@@makeschapterhead
|
|
% \end{macro}%^^A \@makeschapterhead
|
|
% \end{macro}%^^A \@schapter
|
|
% \end{macro}%^^A \@@makechapterhead
|
|
% \end{macro}%^^A \@makechapterhead
|
|
% \end{macro}%^^A \@chapter
|
|
%
|
|
% \begin{macro}{\addchap}
|
|
% \changes{v2.0e}{1994/08/10}{\cs{sectdef} durch \cs{secdef} ersetzt}%^^A
|
|
% \changes{v2.0e}{1994/08/10}{\cs{addcontensline} durch
|
|
% \cs{addcontentsline} ersetzt}%^^A
|
|
% \changes{v2.0e}{1994/08/10}{\cs{@makechapterhead} durch
|
|
% \cs{@makeschapterhead} ersetzt}%^^A
|
|
% \changes{v2.0e}{1994/08/10}{\cs{afterheadings} durch
|
|
% \cs{@afterheading} ersetzt}%^^A
|
|
% \changes{v2.1a}{1994/10/29}{Argument von \cs{chaptermark}%^^A
|
|
% entfernt bei \textsf{scrbook}}%^^A
|
|
% \changes{v2.0e}{1994/10/12}{mehrfach \cs{markboth} durch
|
|
% \cs{sectionmark} ersetzt}%^^A
|
|
% \changes{v2.2b}{1995/03/20}{\cs{chaptermark} durch \cs{@mkboth}
|
|
% ersetzt}%^^A
|
|
% \changes{v2.8d}{2001/07/05}{\cs{chapterpagestyle} statt
|
|
% \texttt{plain}}%^^A
|
|
% \changes{v3.00}{2008/07/01}{jetzt auch Kapiteleinträge in andere
|
|
% float-Verzeichnisse mit hyperref}%^^A
|
|
% \changes{v3.01}{2008/11/13}{Verwendung von
|
|
% \cs{scr@float@addtolists@warning} (aus \texttt{scrkliof.dtx})}%^^A
|
|
% \changes{v3.08}{2010/11/01}{Verwendung von \cs{addchaptertocentry}}%^^A
|
|
% \changes{v3.10}{2011/08/30}{Integration der Erweiterung für das optionale
|
|
% Argument der Gliederungsbefehle}%^^A
|
|
% \changes{v3.13a}{2014/09/11}{Verwendung von \cs{SecDef}}%^^A
|
|
% \changes{v3.18}{2015/05/22}{Komplett neu definiert}%^^A
|
|
% \KOMAScript{} bietet in \textsf{scrbook} und \textsf{scrreprt} den
|
|
% zusätzlichen Gliederungsbefehl \cs{addchap}. Es handelt sich dabei
|
|
% um einen mit \cs{chapter*} vergleichbaren Befehl, bei dem jedoch der
|
|
% Kolumnentitel korrigiert wird und ein Eintrag ins Inhaltsverzeichnis
|
|
% erfolgt (nicht in der Stern-Variante).
|
|
%
|
|
% Die Definition von \cs{addcap} sah bis zu Version 2.7 so aus:
|
|
% \begin{verbatim}
|
|
% \newcommand\addchap{\if@openright\cleardoublepage\else\clearpage\fi
|
|
% \thispagestyle{plain}%
|
|
% \global\@topnum\z@
|
|
% \@afterindentfalse
|
|
% \secdef\@addchap\@saddchap}
|
|
% \def\@addchap[#1]#2{\typeout{#2}
|
|
% \addcontentsline{toc}{chapter}{#1}
|
|
% \if@twoside\@mkboth{#1}{}\else\@mkboth{}{#1}\fi
|
|
% \addtocontents{lof}{\protect\addvspace{10\p@}}%
|
|
% \addtocontents{lot}{\protect\addvspace{10\p@}}%
|
|
% \if@twocolumn
|
|
% \@topnewpage[\@makeschapterhead{#2}]%
|
|
% \else
|
|
% \@makeschapterhead{#2}%
|
|
% \@afterheading
|
|
% \fi}
|
|
% \def\@saddchap#1{\@mkboth{}{}
|
|
% \if@twocolumn
|
|
% \@topnewpage[\@makeschapterhead{#1}]%
|
|
% \else
|
|
% \@makeschapterhead{#1}%
|
|
% \@afterheading
|
|
% \fi}
|
|
% \end{verbatim}\vspace{-\baselineskip}
|
|
% Dies führte jedoch zu Problemen im Zusammenhang mit
|
|
% \textsf{hyperref}, da hierbei keine korrekten Links erzeugt
|
|
% werden. Mit dem \texttt{hypertex}-Treiber von \textsf{hyperref}
|
|
% bis Version 6.71a werden auch in der neuen Implementierung keine
|
|
% korrekten Links erzeugt. Dies ist jedoch ein Bug in jenem
|
|
% Treiber. Mit neuen Versionen tritt das Problem nicht mehr auf.
|
|
% Deshalb wurde der Code wie folgt vereinfacht. Von wesentlicher
|
|
% Bedeutung ist dabei der Aufruf von \cs{chapter*}, da in
|
|
% \texttt{hpdftex.def} das interne Makro \cs{@schapter} so umdefiniert
|
|
% wird, dass ein korrekter Link erzeugt wird.
|
|
% \begin{macro}{\@addchap}
|
|
% \changes{v3.12}{2013/02/26}{Verwendung von \cs{addchapmark}}%^^A
|
|
% \changes{v3.17}{2015/04/20}{\cs{scr@ds@head} in \cs{addchapmark}
|
|
% expandieren}%^^A
|
|
% \changes{v3.18}{2015/05/22}{Komplett neu definiert}%^^A
|
|
% \begin{macro}{\@saddchap}
|
|
% \changes{v3.12}{2013/02/26}{Verwendung von \cs{addchapmark}}%^^A
|
|
% \changes{v3.18}{2015/05/22}{Komplett neu definiert}%^^A
|
|
% Seit \KOMAScript~3.18 wurden die Definitionen noch einmal deutlich
|
|
% vereinfacht. Deshalb wird nun auch nur noch für \cs{addchap*} die neue
|
|
% Anweisung \cs{addchapmark} benötigt. Bei \cs{addchap} geht es hingegen
|
|
% einfach über \cs{chaptermark} innerhalb von \cs{chapter}.
|
|
% \begin{macrocode}
|
|
\newcommand\addchap{%
|
|
\SecDef\@addchap\@saddchap
|
|
}%
|
|
\newcommand*{\@addchap}{}%
|
|
\long\def\@addchap[#1]#2{%
|
|
\edef\reserved@a{%
|
|
\unexpanded{%
|
|
\chapter[{#1}]{#2}%
|
|
\c@secnumdepth=
|
|
}\the\c@secnumdepth\relax
|
|
}%
|
|
\c@secnumdepth=\numexpr \chapternumdepth-1\relax
|
|
\reserved@a
|
|
}
|
|
\newcommand{\@saddchap}[1]{%
|
|
\chapter*{#1}%
|
|
\addchapmark{}%
|
|
}%
|
|
% \end{macrocode}
|
|
% In \texttt{hyperref} bis Version 6.71a ist ein dicker Bug. In
|
|
% verschiedenen \texttt{def}-Dateien wird dort das \emph{interne}
|
|
% \KOMAScript-Makro \cs{@addchap} umdefiniert, ohne sicherzustellen,
|
|
% dass das Makro auch noch so aussieht, wie man das erwartet hat. Die
|
|
% sauberste Lösung wäre sicher gewesen dort \cs{@addchap} nur zu
|
|
% ergänzen, so wie man das auch bei \cs{@schapter} gemacht hatte. Ab
|
|
% Version 6.71b ist dieser Bug behoben. Damit ich nicht eines Fehlers
|
|
% verdächtigt werde, wird ggf. eine entsprechende Meldung ausgegeben.
|
|
% \changes{v2.7e}{2001/04/16}{fehlende, schließende Klammer
|
|
% ergänzt}%^^A
|
|
% \changes{v2.7f}{2001/04/17}{fehlendes Klammerpaar ergänzt}%^^A
|
|
% \changes{v2.8q}{2001/11/17}{\cs{AfterPackage} zur Überprüfung der
|
|
% \textsf{hyperref}-Version verwendet}%^^A
|
|
% \changes{v3.27a}{2019/11/11}{Meldung korrigiert}%^^A
|
|
% \begin{macrocode}
|
|
%<*book>
|
|
\AfterPackage{hyperref}{%
|
|
\@ifpackagelater{hyperref}{2001/02/19}{}{%
|
|
\ClassWarningNoLine{\KOMAClassName}{%
|
|
You are using an old version of the hyperref package!\MessageBreak%
|
|
This version has a buggy hack in many drivers,\MessageBreak%
|
|
causing \string\addchap\space to behave strangely.\MessageBreak%
|
|
Please update hyperref to at least version 6.71b%
|
|
}%
|
|
}%
|
|
}
|
|
%</book>
|
|
%</body>
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \@saddchap
|
|
% \end{macro}%^^A \@addchap
|
|
% \end{macro}%^^A \addchap
|
|
%
|
|
%
|
|
% \begin{macro}{\l@chapter}
|
|
% \changes{v2.9k}{2003/01/02}{Anpassung an Option \texttt{tocleft}}%^^A
|
|
% \changes{v2.96b}{2006/11/30}{Umbruch zwischen \cs{chapter}-Eintrag im
|
|
% Inhaltsverzeichnis und übergeordneten Einträgen verhindern}%^^A
|
|
% \changes{v2.96b}{2006/11/30}{Umbruch zwischen \cs{chapter}-Eintrag im
|
|
% Inhaltsverzeichnis und untergeordneten Einträgen verhindern}%^^A
|
|
% \changes{v2.97c}{2007/06/21}{\cs{sectfont} durch Verwendung von
|
|
% Element \texttt{chapterentry} ersetzt}%^^A
|
|
% \changes{v2.97c}{2007/06/21}{Element \texttt{chapterentrypagenumber} wird
|
|
% verwendet}%^^A
|
|
% \changes{v2.97c}{2007/06/21}{weitgehend umgeschrieben, um linksbündige
|
|
% Einträge zu ermöglichen}%^^A
|
|
% \changes{v3.15}{2014/12/22}{Verwendung von \cs{chaptertocdepth} und
|
|
% \cs{scr@chapter@tocnumwidth}}%^^A
|
|
% \changes{v3.15}{2014/12/10}{Verwendung von \cs{addvspace} statt \cs{vskip}
|
|
% für den Abstand am Anfang}%^^A
|
|
% \changes{v3.20}{2015/10/06}{überführt in Verzeichnisstil}%^^A
|
|
% Für die Definition des Kapiteleintrags ins Inhaltsverzeichnis werden einige
|
|
% Parameter von \cs{DeclareSectionCommand} definiert und teilweise
|
|
% verwendet. Damit kann man dann zumindest einige Änderungen mit
|
|
% \cs{DeclareSectionCommand} vornehmen, allerdings noch keine komplette
|
|
% Neugestaltung des Eintrags erreichen.
|
|
% \begin{macro}{\scr@chapter@tocindent}
|
|
% \changes{v3.15}{2014/12/02}{neue (interne) Anweisung}%^^A
|
|
% \changes{v3.18}{2015/05/20}{indirekt über \cs{DeclareSectionCommand}}%^^A
|
|
% \changes{v3.20}{2015/11/06}{wird nun auch verwendet}%^^A
|
|
% Der Einzug des Eintrags noch vor der Nummer.
|
|
% \end{macro}%^^A \scr@chapter@tocindent
|
|
% \begin{macro}{\scr@chapter@tocnumwidth}
|
|
% \changes{v3.15}{2014/12/02}{neue (interne) Anweisung}%^^A
|
|
% \changes{v3.18}{2015/05/20}{indirekt über \cs{DeclareSectionCommand}}%^^A
|
|
% Die Breite der Nummer des Eintrags wird tatsächlich verwendet.
|
|
% \end{macro}
|
|
% \begin{option}{chapterentrydots}
|
|
% \changes{v3.15}{2014/12/10}{Neu}%^^A
|
|
% Seit Version~3.15 kann man mit dieser Option Pünktchen zwischen Text und
|
|
% Seitenzahl in den Kapiteleinträgen einschalten.
|
|
% \begin{macrocode}
|
|
%<*option>
|
|
\KOMA@ifkey{chapterentrydots}{@chapterentrywithdots}
|
|
%</option>
|
|
% \end{macrocode}
|
|
% \end{option}%^^A chapterentrydots
|
|
% \begin{macro}{\raggedchapterentry}
|
|
% \changes{v2.97c}{2007/06/21}{neue Anweisung}%^^A
|
|
% \changes{v3.20}{2016/02/23}{wird nicht mehr verwendet}%^^A
|
|
% \changes{v3.21}{2016/06/06}{siehe \texttt{scrkernel-tocstyle.dtx},
|
|
% Stil \texttt{tocline}, Eigenschaft \texttt{raggedentrytext}}%^^A
|
|
% Ausrichtung des Textes der Kapiteleinträge im Inhaltsverzeichnis.
|
|
% \begin{macrocode}
|
|
%<*body>
|
|
\newcommand*{\raggedchapterentry}{}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \raggedchapterentry
|
|
% \end{macro}%^^A \l@chapter
|
|
%
|
|
% \begin{macro}{\l@chapteratlist}
|
|
% \changes{v2.96a}{2006/12/03}{neues Macro}%^^A
|
|
% Dieses Makro wird ggf. für die Kapiteleinträge in den Listen der
|
|
% Gleitumgebungen verwendet. Zunächst einmal wird hier dasselbe verwendet, wie
|
|
% für die Kapiteleinträge ins Inhaltsverzeichnis.
|
|
% \begin{macrocode}
|
|
\newcommand*{\l@chapteratlist}{\l@chapter}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \l@chapteratlist
|
|
%
|
|
% \begin{Counter}{chapter}
|
|
% \begin{macro}{\thechapter}
|
|
% \begin{macro}{\chapterformat}
|
|
% \changes{v2.3c}{1995/08/06}{Duden Regel 6}%^^A
|
|
% \changes{v2.7}{2000/01/03}{einfaches Leerzeichen durch \cs{enskip}%^^A
|
|
% ersetzt}%^^A
|
|
% \changes{v2.8}{2001/06/15}{\cs{chapappifprefix} eingefügt}%^^A
|
|
% \changes{v2.8o}{2001/09/19}{\cs{chapappifchapterprefix} statt
|
|
% \cs{chapappifprefix}} ^^A
|
|
% \changes{v2.96a}{2006/12/02}{\cs{mbox} eingefügt, um \cs{caps} zu
|
|
% ermöglichen}%^^A
|
|
% \changes{v3.17}{2015/03/08}{\cs{enskip} not in prefix line mode}%^^A
|
|
% \begin{macro}{\chaptermarkformat}
|
|
% \changes{v2.3a}{1995/07/08}{Leerraum nach der Kapitelnummer erhöht}%^^A
|
|
% \changes{v2.3c}{1995/08/06}{Duden Regel 6}%^^A
|
|
% \changes{v2.8}{2001/06/15}{\cs{chapappifprefix} eingefügt}%^^A
|
|
% \changes{v2.8o}{2001/09/19}{\cs{chapappifchapterprefix} statt
|
|
% \cs{chapappifprefix}}%^^A
|
|
% \changes{v3.03a}{2009/04/03}{Tilde durch \cs{nobreakspace} ersetzt, um die
|
|
% Kompatibilität mit Spanisch zu verbessern}%^^A
|
|
% Jede Gliederungsebene benötigt einen Zähler für die
|
|
% Gliederungsnummer und eine Darstellung des Zählers
|
|
% (\cs{the\dots}). Desweiteren wird eine Formatierung des Zählers in
|
|
% den Gliederungsüberschriften (\texttt{\bslash\dots format}) und eine
|
|
% Formatierung des Zählers in der Kopfzeile
|
|
% (\texttt{\bslash\dots markformat}) benötigt.
|
|
% \begin{macrocode}
|
|
\newcounter{chapter}
|
|
\renewcommand*{\thechapter}{\@arabic\c@chapter}
|
|
\newcommand*{\chapterformat}{%
|
|
\mbox{\chapappifchapterprefix{\nobreakspace}\thechapter\autodot
|
|
\IfUsePrefixLine{}{\enskip}}%
|
|
}
|
|
\newcommand*\chaptermarkformat{\chapappifchapterprefix{\ }%
|
|
\thechapter\autodot\enskip}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \chaptermarkformat
|
|
% \end{macro}%^^A \chapterformat
|
|
% \end{macro}%^^A \thechapter
|
|
% \end{Counter}%^^A chapter
|
|
%
|
|
%
|
|
% \begin{macro}{\chaptername}
|
|
% Name der Gliederungsebenen \cs{chapter}.
|
|
% \begin{macrocode}
|
|
\newcommand*\chaptername{Chapter}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \chaptername
|
|
%
|
|
%
|
|
% \begin{macro}{\appendixname}
|
|
% Der Name des Anhangs.
|
|
% \begin{macrocode}
|
|
\newcommand*\appendixname{Appendix}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \appendixname
|
|
%
|
|
%
|
|
% \begin{macro}{\chapappifprefix}
|
|
% \changes{v2.8}{2001/06/15}{neu}%^^A
|
|
% \changes{v2.8o}{2001/09/19}{obsolet}%^^A
|
|
% \begin{macro}{\chapappifchapterprefix}
|
|
% \changes{v2.8o}{2001/09/19}{neu}%^^A
|
|
% \changes{v2.8o}{2001/09/19}{Argument ist nicht optional}%^^A
|
|
% \changes{v3.18}{2015/06/09}{verwendet \cs{IfChapterUsePrefixLine}}%^^A
|
|
% \begin{macro}{\IfChapterUsesPrefixLine}
|
|
% \changes{v3.18}{2015/06/09}{neu (intern)}
|
|
% \begin{macro}{\chapapp}
|
|
% \changes{v2.8}{2001/06/15}{neu}%^^A
|
|
% Das in \cs{chapterformat} verwendete Makro
|
|
% \cs{chapappifchapterprefix} setzt abhängig von \cs{if@chapterprefix}
|
|
% noch das Makro \cs{chapapp} gefolgt vom obliatorischen Argument.
|
|
% \cs{chapapp} macht \cs{@chapapp} auf Anwenderebene verfügbar. Der
|
|
% Vorteil des neuen \cs{chapappifchapterprefix} gegenüber dem alten
|
|
% \cs{chapappifprefix} ist, dass nun beim Umdefinieren von
|
|
% \cs{chapterformat} und \cs{chaptermarkformat} wieder
|
|
% \cs{renewcommand} verwendet werden kann und beim Umschalten in den
|
|
% Anhang die Kopfzeile korrekt ist, weil das Makro nun nicht mehr
|
|
% geschützt ist, sondern direkt expandiert.
|
|
% \begin{macrocode}
|
|
\newcommand*{\chapappifprefix}[1][]{%
|
|
\ClassWarning{\KOMAClassName}{%
|
|
Please don't use obsolete command
|
|
\string\chapappifprefix.\MessageBreak
|
|
The new command \string\chapappifchapterprefix\space has
|
|
an\MessageBreak
|
|
obligatory instead of an optional argument. Use that\MessageBreak
|
|
new command%
|
|
}%
|
|
\chapappifchapterprefix{#1}%
|
|
}
|
|
\newcommand*{\chapappifchapterprefix}[1]{%
|
|
\IfChapterUsesPrefixLine{\chapapp#1}{}%
|
|
}
|
|
\newcommand*{\IfChapterUsesPrefixLine}{%
|
|
\if@chapterprefix\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
|
|
}
|
|
\newcommand*{\chapapp}{\@chapapp}
|
|
% \end{macrocode}
|
|
% \begin{macro}{\@chapapp}
|
|
% Dieses Makro enthält den Kapitelname (\cs{chaptername}), der sich im
|
|
% Anhang üblicherweise ändert (\cs{appendixname}).
|
|
% \begin{macrocode}
|
|
\newcommand*\@chapapp{\chaptername}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \@chapapp
|
|
% \end{macro}%^^A \chapapp
|
|
% \end{macro}%^^A \IfChapterUsePrefixLine
|
|
% \end{macro}%^^A \chapappifchapterprefix
|
|
% \end{macro}%^^A \chapappifprefix
|
|
%
|
|
%
|
|
% \begin{macro}{\chaptermark}
|
|
% Da \cs{chapter} nicht mit Hilfe von \cs{@startsection} definiert
|
|
% wird, wird auch \cs{chaptermark} nicht automatisch definiert. Es
|
|
% wird aber in den Seitenstilen benötigt bzw. umdefiniert. Also hier
|
|
% vorsorglich eine Dummy-Definition:
|
|
% \begin{macrocode}
|
|
\newcommand*\chaptermark[1]{}
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\addchapmark}
|
|
% \changes{v3.12}{2013/03/26}{neue Anweisung}%^^A
|
|
% Für \cs{addchapmark} gilt dies hingegen nicht. Das wird nicht von den Stilen
|
|
% definiert, sondern direkt mit der gewünschten Definition
|
|
% initialisiert. Bitte nicht davon verwirren lassen, dass \cs{if@mainmatter}
|
|
% hier auch von \textsf{scrreprt} definiert wird. Das ist Absicht und
|
|
% vereinfacht dem einen oder anderen Paket oder Benutzer vielleicht die
|
|
% Arbeit.
|
|
% \begin{macrocode}
|
|
\newcommand*\addchapmark[1]{%
|
|
\begingroup
|
|
\expandafter\let\csname if@mainmatter\expandafter\endcsname
|
|
\csname iffalse\endcsname
|
|
\c@secnumdepth=\numexpr \chapternumdepth-1\relax
|
|
\chaptermark{#1}%
|
|
\endgroup
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \addchapmark
|
|
%
|
|
%
|
|
% \begin{macro}{\raggedchapter}
|
|
% \changes{v3.15}{2014/12/09}{neu}%^^A
|
|
% Da das doch recht häufig gewünscht wird, kann man die Ausrichtung der
|
|
% Kapitelüberschrift auch getrennt von der Ausrichtung der übrigen
|
|
% Überschriften einstellen.
|
|
% \begin{macrocode}
|
|
\newcommand*{\raggedchapter}{\raggedsection}
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
%
|
|
% \begin{KOMAfont}{chapter}
|
|
% \changes{v2.8o}{2001/09/14}{neues Element \texttt{chapter}}%^^A
|
|
% \begin{macro}{\scr@fnt@chapter}
|
|
% \changes{v2.8o}{2001/09/14}{neues Element \texttt{chapter}}%^^A
|
|
% \begin{KOMAfont}{chapterprefix}
|
|
% \changes{v2.96a}{2006/12/02}{neues Element \texttt{chapterprefix}}%^^A
|
|
% \begin{macro}{\scr@fnt@chapterprefix}
|
|
% \changes{v2.96a}{2006/12/02}{neues Element \texttt{chapterprefix}}%^^A
|
|
% \begin{macrocode}
|
|
\newcommand*{\scr@fnt@chapter}{\size@chapter}
|
|
\newcommand*{\scr@fnt@chapterprefix}{\size@chapterprefix}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \scr@fnt@chapterprefix
|
|
% \end{KOMAfont} chapterprefix
|
|
% \end{macro}%^^A \scr@fnt@chapter
|
|
% \end{KOMAfont}%^^A chapter
|
|
%
|
|
% \begin{KOMAfont}{chapterentry}
|
|
% \changes{v2.97c}{2007/06/21}{neues Font-Element}%^^A
|
|
% \changes{v3.06}{2010/06/09}{Verwendung von \texttt{sectioning} durch
|
|
% \texttt{disposition} ersetzt}%^^A
|
|
% Schrift für den \cs{chapter}-Eintrag im Inhaltsverzeichnis.
|
|
% \begin{macrocode}
|
|
\newkomafont{chapterentry}{\usekomafont{disposition}}
|
|
% \end{macrocode}
|
|
% \end{KOMAfont}
|
|
%
|
|
% \begin{KOMAfont}{chapterentrypagenumber}
|
|
% \changes{v2.97c}{2007/06/21}{neues Font-Element}%^^A
|
|
% Schrift für die Seitenzahl des \cs{chapter}-Eintrags im Inhaltsverzeichnis
|
|
% abweichend von \texttt{chapterentry}.
|
|
% \begin{macrocode}
|
|
\newkomafont{chapterentrypagenumber}{}
|
|
% \end{macrocode}
|
|
% \end{KOMAfont}
|
|
%
|
|
% \begin{KOMAfont}{chapterentrydots}
|
|
% \changes{v3.15}{2014/12/10}{neues Font-Element}%^^A
|
|
% \changes{v3.27}{2019/10/28}{überflüssiges \cs{normalfont} entfernt}%^^A
|
|
% Schrift für die optionalen Pünktchen des \cs{chapter}-Eintrags im
|
|
% Inhaltsverzeichnis abweichend von \texttt{chapterentry} und
|
|
% \cs{normalfont}\cs{normalsize}.
|
|
% \begin{macrocode}
|
|
\newkomafont{chapterentrydots}{}
|
|
%</body>
|
|
%</book|report>
|
|
%</class>
|
|
% \end{macrocode}
|
|
% \end{KOMAfont}
|
|
%
|
|
%
|
|
% \subsection{Abschnitte und Untergliederungen}
|
|
%
|
|
% Alle Ebenen ab \cs{section} ähneln sich so sehr, dass sie gemeinsam
|
|
% behandelt werden. Lediglich bei \textsf{scrartl} gibt es für \cs{section}
|
|
% selbst noch ein paar Besonderheiten.
|
|
%
|
|
% \begin{macro}{\size@section}
|
|
% \changes{v2.8o}{2001/09/14}{neu (intern)}%^^A
|
|
% \begin{macro}{\size@subsection}
|
|
% \changes{v2.8o}{2001/09/14}{neu (intern)}%^^A
|
|
% \begin{macro}{\size@subsubsection}
|
|
% \changes{v2.8o}{2001/09/14}{neu (intern)}%^^A
|
|
% \begin{macro}{\size@paragraph}
|
|
% \changes{v2.8o}{2001/09/14}{neu (intern)}%^^A
|
|
% \begin{macro}{\size@subparagraph}
|
|
% \changes{v2.8o}{2001/09/14}{neu (intern)}%^^A
|
|
% Hier werden diese Befehle nur vordefiniert. Ihre tatsächliche Einstellung
|
|
% erfolgt über die (Vor-)Auswahl von Option \texttt{headings}.
|
|
% \begin{macrocode}
|
|
%<*class>
|
|
%<*prepare>
|
|
\newcommand*{\size@section}{}
|
|
\newcommand*{\size@subsection}{}
|
|
\newcommand*{\size@subsubsection}{}
|
|
\newcommand*{\size@paragraph}{}
|
|
\newcommand*{\size@subparagraph}{}
|
|
%</prepare>
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \size@subparagraph
|
|
% \end{macro}%^^A \size@paragraph
|
|
% \end{macro}%^^A \size@subsubsection
|
|
% \end{macro}%^^A \size@subsection
|
|
% \end{macro}%^^A \size@section
|
|
%
|
|
%
|
|
% \begin{macro}{\l@section}
|
|
% \changes{v2.9k}{2003/01/02}{Anpassung an Option \texttt{tocleft}}%^^A
|
|
% \changes{v2.96b}{2006/11/30}{Umbruch zwischen \cs{section}-Eintrag im
|
|
% Inhaltsverzeichnis und übergeordneten Einträgen verhindern}%^^A
|
|
% \changes{v2.96b}{2006/11/30}{Umbruch zwischen \cs{section}-Eintrag im
|
|
% Inhaltsverzeichnis und untergeordneten Einträgen verhindern}%^^A
|
|
% \changes{v2.97c}{2007/06/21}{\cs{sectfont} durch Verwendung von
|
|
% Element \texttt{sectionentry} ersetzt}%^^A
|
|
% \changes{v2.97c}{2007/06/21}{Element \texttt{sectionentrypagenumber} wird
|
|
% verwendet}%^^A
|
|
% \changes{v2.97c}{2007/06/21}{weitgehend umgeschrieben, um linksbündige
|
|
% Einträge zu ermöglichen}%^^A
|
|
% \changes{v3.15}{2014/11/24}{\cs{sectiontocdepth},
|
|
% \cs{scr@section@tocindent} und \cs{scr@section@tocnumwidth} werden
|
|
% verwendet}%^^A
|
|
% \changes{v3.20}{2015/10/06}{Überführung in Verzeichnisstil}%^^A
|
|
% Bei der Artikel-Klasse folgt die Formatierung für
|
|
% \cs{section}-Einträge, an Stelle der Einträge für \cs{chapter}
|
|
% der Buch- oder der Bericht-Klasse. Bei diesen handelt es sich hier
|
|
% stattdessen um eine normale Ebene.
|
|
% \begin{option}{sectionentrydots}
|
|
% \changes{v3.15}{2014/12/10}{Neu}%^^A
|
|
% Seit Version~3.15 kann man mit dieser Option Pünktchen zwischen Text und
|
|
% Seitenzahl in den Kapiteleinträgen einschalten.
|
|
% \begin{macrocode}
|
|
%<*article>
|
|
%<*option>
|
|
\KOMA@ifkey{sectionentrydots}{@sectionentrywithdots}
|
|
%</option>
|
|
% \end{macrocode}
|
|
% \end{option}%^^A sectionentrydots
|
|
% \begin{macro}{\raggedsectionentry}
|
|
% \changes{v2.97c}{2007/06/21}{neue Anweisung}%^^A
|
|
% \changes{v3.20}{2016/02/23}{nicht mehr verwendet}%^^A
|
|
% Ausrichtung des Textes der Abschnittseinträge im Inhaltsverzeichnis.
|
|
% \begin{macrocode}
|
|
%<*body>
|
|
\newcommand*{\raggedsectionentry}{}
|
|
%</body>
|
|
%</article>
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \raggedsectionentry
|
|
% \end{macro}%^^A \l@section
|
|
%
|
|
%
|
|
% \begin{macro}{\addsec}
|
|
% \changes{v2.0e}{1994/10/12}{mehrfach \cs{markboth} durch
|
|
% \cs{sectionmark} ersetzt}%^^A
|
|
% \changes{v2.2b}{1995/03/20}{\cs{sectionmark} durch \cs{@mkboth}
|
|
% ersetzt}%^^A
|
|
% \changes{v2.3h}{1995/01/21}{jetzt auch bei \textsf{scrbook} und
|
|
% \textsf{scrreprt}}%^^A
|
|
% \changes{v2.4g}{1996/11/04}{\cs{section*} vorgezogen, damit
|
|
% dadurch provozierte Seitenumbrüche im Inhaltsverzeichnis
|
|
% berücksichtigt werden}%^^A
|
|
% \changes{v2.5d}{1998/01/03}{\cs{@mkboth} bedingt durch
|
|
% \cs{markright} ersetzt}%^^A
|
|
% \changes{v2.7a}{2001/01/04}{\cs{addsec} für eine bessere
|
|
% Unterstützung von \textsf{hyperref} geändert}%^^A
|
|
% \changes{v3.13a}{2014/09/11}{Verwendung von \cs{SecDef}}%^^A
|
|
% \begin{macro}{\@addsec}
|
|
% \changes{v3.10}{2011/08/30}{Verwendung von \cs{addsectiontocentry}}%^^A
|
|
% \changes{v3.10}{2011/08/30}{Integration der Erweiterung für das optionale
|
|
% Argument der Gliederungsbefehle}%^^A
|
|
% \changes{v3.12}{2013/02/26}{Verwendung von \cs{addsecmark}}%^^A
|
|
% \changes{v3.18}{2015/05/22}{komplett neu definiert}%^^A
|
|
% \begin{macro}{\@saddsec}
|
|
% \changes{v3.12}{2013/02/26}{Verwendung von \cs{addsecmark}}%^^A
|
|
% \changes{v3.17}{2015/04/20}{\cs{scr@ds@head} in \cs{addsecmark}
|
|
% expandieren}%^^A
|
|
% \KOMAScript{} bietet in allen drei Hauptklassen den zusätzlichen
|
|
% Gliederungsbefehl \cs{addsec}. Es handelt sich dabei um einen mit
|
|
% \cs{section*} vergleichbaren Befehl, bei dem jedoch der
|
|
% Kolumnentitel korrigiert wird und ein Eintrag ins Inhaltsverzeichnis
|
|
% erfolgt (nicht in der Stern-Variante).
|
|
%
|
|
% Mit Version~3.18 wurde \cs{addsec} deutlich vereinfacht. Seither verwendet
|
|
% nur noch \cs{@saddsec} die Anweiung \cs{addsecmark}, während \cs{@addsec}
|
|
% direkt über das \cs{sectionmark} von \cs{section} arbeitet.
|
|
% \begin{macrocode}
|
|
%<*body>
|
|
\newcommand\addsec{\SecDef\@addsec\@saddsec}
|
|
\newcommand*{\@addsec}{}
|
|
\def\@addsec[#1]#2{%
|
|
\edef\reserved@a{%
|
|
\unexpanded{%
|
|
\section[{#1}]{#2}%
|
|
\c@secnumdepth=
|
|
}\the\c@secnumdepth\relax
|
|
}%
|
|
\c@secnumdepth=\numexpr \sectionnumdepth-1\relax
|
|
\reserved@a
|
|
}
|
|
\newcommand*{\@saddsec}[1]{%
|
|
\section*{#1}\addsecmark{}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \@saddsec
|
|
% \end{macro}%^^A \@addsec
|
|
% \end{macro}%^^A \addsec
|
|
%
|
|
%
|
|
% \begin{macro}{\minisec}
|
|
% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont}
|
|
% behebt einen Bug im color Paket}%^^A
|
|
% \changes{v2.9o}{2003/01/31}{\cs{nobreak} nach dem Gruppenende
|
|
% behebt einen Bug im color Paket}%^^A
|
|
% \changes{v2.96a}{2006/11/30}{Standardwert für \cs{parfillskip} (abhängig
|
|
% von Option \texttt{version})}%^^A
|
|
% \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak}%^^A
|
|
% entfernt}%^^A
|
|
% \changes{v3.13a}{2014/08/07}{Absicherung der Abstände bei
|
|
% aufeinanderfolgenden Überschriften entsprechend \cs{@startsection}}%^^A
|
|
% \changes{v3.26}{2018/05/14}{fehlendes \cs{interlinepenalty}\cs{@M}
|
|
% ergänzt}%^^A
|
|
% \begin{KOMAfont}{minisec}
|
|
% \changes{v2.96a}{2006/12/03}{\texttt{minisec} ist ein eigenes
|
|
% Fontelement}%^^A
|
|
% \changes{v3.21}{2016/06/12}{fehlendes \cs{nobreak} ergänzt}%^^A
|
|
% In \KOMAScript{} gibt es diese zusätzliche Gliederungsebene, die
|
|
% immer ohne Nummer und ohne Eintrag ins Inhaltsverzeichnis erfolgt.
|
|
% \begin{macrocode}
|
|
\newkomafont{minisec}{}
|
|
\newcommand\minisec[1]{%
|
|
\expandafter\ifnum\scr@v@is@lt{3.13a}\relax
|
|
\@afterindentfalse \vskip 1.5ex
|
|
\else
|
|
\if@noskipsec \leavevmode \fi
|
|
\par
|
|
\@afterindentfalse
|
|
\if@nobreak
|
|
\everypar{}%
|
|
\else
|
|
\addpenalty\@secpenalty\addvspace{1.5ex}%
|
|
\fi
|
|
\fi
|
|
{\parindent \z@
|
|
\expandafter\ifnum\scr@v@is@gt{2.96}\relax
|
|
\setlength{\parfillskip}{\z@ plus 1fil}\fi
|
|
\raggedsection\normalfont\sectfont\nobreak
|
|
\usekomafont{minisec}{\nobreak\interlinepenalty \@M #1\par\nobreak}%
|
|
}\nobreak
|
|
\@afterheading
|
|
}
|
|
% \end{macrocode}
|
|
% \end{KOMAfont}
|
|
% \end{macro}
|
|
%
|
|
%
|
|
% \begin{macro}{\addsectiontocentry}
|
|
% \changes{v3.10}{2011/08/30}{Neu}%^^A
|
|
% Entsprechend \cs{addparttocentry} und \cs{addchaptertocentry}.
|
|
% \begin{macrocode}
|
|
\newcommand*{\addsectiontocentry}[2]{%
|
|
\addtocentrydefault{section}{#1}{#2}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\addsubsectiontocentry}
|
|
% \changes{v3.10}{2011/08/30}{Neu}%^^A
|
|
% Entsprechend \cs{addparttocentry} usw.
|
|
% \begin{macrocode}
|
|
\newcommand*{\addsubsectiontocentry}[2]{%
|
|
\addtocentrydefault{subsection}{#1}{#2}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\addparagraphtocentry}
|
|
% \changes{v3.10}{2011/08/30}{Neu}%^^A
|
|
% Entsprechend \cs{addparttocentry} usw.
|
|
% \begin{macrocode}
|
|
\newcommand*{\addparagraphtocentry}[2]{%
|
|
\addtocentrydefault{paragraph}{#1}{#2}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\addsubparagraphtocentry}
|
|
% \changes{v3.10}{2011/08/30}{Neu}%^^A
|
|
% Entsprechend \cs{addparttocentry} usw.
|
|
% \begin{macrocode}
|
|
\newcommand*{\addsubparagraphtocentry}[2]{%
|
|
\addtocentrydefault{subparagraph}{#1}{#2}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
%
|
|
% \begin{Counter}{section}
|
|
% \begin{macro}{\thesection}
|
|
% \changes{v2.97e}{2007/11/23}{Kapitelnummer nur im Hauptteil}%^^A
|
|
% \changes{v3.03b}{2009/06/09}{\cs{relax} im Kompatibilitätstest durch ein
|
|
% Leerzeichen ersetzt, obwohl das die Wartbarkeit verschlechtert, aber
|
|
% \textsf{hyperref} hat mit dem \cs{relax} ein nicht dokumentieres
|
|
% Problem}%^^A
|
|
% \changes{v3.27}{2019/06/26}{Umstellung auf \cs{scr@v@is@gt}}%^^A
|
|
% \begin{macro}{\sectionmarkformat}
|
|
% \changes{v2.3a}{1995/07/08}{Leerraum nach der Kapitelnummer
|
|
% erhöht}%^^A
|
|
% \changes{v2.3c}{1995/08/06}{Duden Regel 6}%^^A
|
|
% \begin{Counter}{subsection}
|
|
% \begin{macro}{\thesubsection}
|
|
% \begin{macro}{\subsectionmarkformat}
|
|
% \changes{v2.3a}{1995/07/08}{Leerraum nach der Kapitelnummer
|
|
% erhöht}%^^A
|
|
% \changes{v2.3c}{1995/08/06}{Duden Regel 6}%^^A
|
|
% \begin{Counter}{subsubsection}
|
|
% \begin{macro}{\thesubsubsection}
|
|
% \begin{Counter}{paragraph}
|
|
% \begin{macro}{\theparagraph}
|
|
% \begin{Counter}{subparagraph}
|
|
% \begin{macro}{\thesubparagraph}
|
|
% Jede Gliederungsebene benötigt einen Zähler für die
|
|
% Gliederungsnummer und eine Darstellung des Zählers
|
|
% (\cs{the\dots}). Desweiteren wird eine Formatierung des Zählers in
|
|
% den Gliederungsüberschriften (\texttt{\bslash\dots format}) und eine
|
|
% Formatierung des Zählers in der Kopfzeile
|
|
% (\texttt{\bslash\dots markformat}) benötigt.
|
|
% \begin{macrocode}
|
|
%<*book|report>
|
|
\newcounter{section}[chapter]
|
|
\renewcommand*\thesection{%
|
|
%<*book>
|
|
\expandafter\ifnum\scr@v@is@gt{2.97d}%
|
|
\if@mainmatter\thechapter.\fi
|
|
\else
|
|
%</book>
|
|
\thechapter.%
|
|
%<book> \fi
|
|
\@arabic\c@section
|
|
}
|
|
%</book|report>
|
|
%<*article>
|
|
\newcounter{section}
|
|
\renewcommand*{\thesection}{\@arabic\c@section}
|
|
%</article>
|
|
\newcommand*\sectionmarkformat{\thesection\autodot\enskip}
|
|
\newcounter{subsection}[section]
|
|
\renewcommand*{\thesubsection}{\thesection.\@arabic\c@subsection}
|
|
%<*article>
|
|
\newcommand*\subsectionmarkformat{\thesubsection\autodot\enskip}
|
|
%</article>
|
|
\newcounter{subsubsection}[subsection]
|
|
\renewcommand*{\thesubsubsection}{%
|
|
\thesubsection.\@arabic\c@subsubsection
|
|
}
|
|
\newcounter{paragraph}[subsubsection]
|
|
\renewcommand*{\theparagraph}{\thesubsubsection.\@arabic\c@paragraph}
|
|
\newcounter{subparagraph}[paragraph]
|
|
\renewcommand*{\thesubparagraph}{%
|
|
\theparagraph.\@arabic\c@subparagraph
|
|
}
|
|
% \end{macrocode}
|
|
% \begin{macro}{\@seccntformat}
|
|
% \changes{v2.3c}{1995/08/06}{CJK erweitert}%^^A
|
|
% \changes{v2.9p}{2004/01/07}{\cs{protect} eingefügt}%^^A
|
|
% \changes{v2.97}{2007/01/24}{Workaround für das blöde \cs{protect}}%^^A
|
|
% \changes{v3.17}{2015/02/23}{verwendet \cs{\dots format}, wenn es
|
|
% existiert}%^^A
|
|
% \changes{v3.17}{2015/03/31}{verwendet \cs{protect} für \cs{\dots
|
|
% format}}%^^A
|
|
% \begin{macro}{\othersectionlevelsformat}
|
|
% \changes{v2.7}{2000/01/03}{neu}%^^A
|
|
% \changes{v2.7}{2000/01/03}{\cs{quad} durch \cs{enskip} ersetzt}%^^A
|
|
% \changes{v2.7i}{2001/05/17}{\cs{let} durch \cs{def} ersetzt}%^^A
|
|
% \changes{v2.97}{2007/01/24}{statt einem Argument jetzt drei}%^^A
|
|
% Bei den Ebenen ab \cs{section} erfolgt die Formatierung der
|
|
% Gliederungnummer in der Überschrift mit einer gemeinsamen
|
|
% Anweisung. Die interne Anweisung \cs{@seccntformat} wird dabei von
|
|
% \LaTeX-Kern verwendet und muss umdefiniert werden, um eine
|
|
% entsprechende Anweisung auf Anwenderebene verfügbar zu haben.
|
|
% Ab Version 2.9p wurde in \cs{@seccntformat} ein \cs{protect} vor
|
|
% \cs{othersectionlevelsformat} eingefügt. Damit wurde es für den Benutzer
|
|
% deutlich einfacher, die Anweisung \cs{othersectionlevelsformat}
|
|
% umzudefinieren. Dafür war dadurch aber \cs{the\dots} nicht mehr
|
|
% expandiert. Das wiederum gab Probleme, wenn \cs{@seccntformat} für den
|
|
% \cs{mark}-Mechanismus genutzt wurde. Deshalb hat
|
|
% \cs{othersectionlevelsformat} ab Version 2.97 drei Argumente statt nur
|
|
% eines. Das zweite Argument sollte vom Anwender ignoriert werden, es
|
|
% existiert nur, um die Kompatibitlität Umdefinitionen zu erhalten, bei denen
|
|
% \cs{othersectionlevelsformat} nur ein Argument besitzt. Das dritte Argument
|
|
% ist die \cs{the\dots}-Anweisung. Das zweite Argument funktioniert so, das es
|
|
% das dritte Argument frisst, falls \cs{othersectionlevelsformat} nur ein
|
|
% Argument liest.
|
|
% \begin{macrocode}
|
|
\newcommand*{\othersectionlevelsformat}[3]{#3\autodot\enskip}
|
|
\renewcommand*{\@seccntformat}[1]{%
|
|
\expandafter\ifnum\scr@v@is@lt{3.17}\relax
|
|
\protect\othersectionlevelsformat{#1}{%
|
|
\expandafter\aftergroup\noexpand\@gobble}{\csname the#1\endcsname}%
|
|
\else
|
|
\scr@ifundefinedorrelax{#1format}{%
|
|
\protect\othersectionlevelsformat{#1}{%
|
|
\expandafter\aftergroup\noexpand\@gobble}{\csname the#1\endcsname}%
|
|
}{\expandafter\protect\csname #1format\endcsname}%
|
|
\fi
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \othersectonlevelsformat
|
|
% \end{macro}%^^A \@seccntformat
|
|
% \end{macro}%^^A \thesubparagraph
|
|
% \end{Counter}%^^A subparagraph
|
|
% \end{macro}%^^A \theparagraph
|
|
% \end{Counter}%^^A paragraph
|
|
% \end{macro}%^^A \thesubsubsection
|
|
% \end{Counter}%^^A subsubsection
|
|
% \end{macro}%^^A \subsectionformat
|
|
% \end{macro}%^^A \thesubsection
|
|
% \end{Counter}%^^A subsection
|
|
% \end{macro}%^^A \sectionformat
|
|
% \end{macro}%^^A \thesection
|
|
% \end{Counter}%^^A section
|
|
%
|
|
%
|
|
% \begin{macro}{\addsecmark}
|
|
% \changes{v3.12}{2013/03/26}{neue Anweisung}%^^A
|
|
% \cs{addsecmark} wird nicht von den Seitenstilen definiert, sondern direkt
|
|
% mit der gewünschten Definition initialisiert.
|
|
% \begin{macrocode}
|
|
\newcommand*\addsecmark[1]{%
|
|
\begingroup
|
|
\c@secnumdepth=\numexpr \sectionnumdepth-1\relax
|
|
\sectionmark{#1}%
|
|
\endgroup
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \addsecmark
|
|
%
|
|
% \begin{KOMAfont}{section}
|
|
% \changes{v2.8o}{2001/09/14}{neues Element \texttt{section}}%^^A
|
|
% \begin{macro}{\scr@fnt@section}
|
|
% \changes{v2.8o}{2001/09/14}{neues Element \texttt{section}}%^^A
|
|
% \begin{KOMAfont}{subsection}
|
|
% \changes{v2.8o}{2001/09/14}{neues Element \texttt{subsection}}%^^A
|
|
% \begin{macro}{\scr@fnt@subsection}
|
|
% \changes{v2.8o}{2001/09/14}{neues Element \texttt{subsection}}%^^A
|
|
% \begin{KOMAfont}{subsubsection}
|
|
% \changes{v2.8o}{2001/09/14}{neues Element \texttt{subsubsection}}%^^A
|
|
% \begin{macro}{\scr@fnt@subsubsection}
|
|
% \changes{v2.8o}{2001/09/14}{neues Element \texttt{subsubsection}}%^^A
|
|
% \begin{KOMAfont}{paragraph}
|
|
% \changes{v2.8o}{2001/09/14}{neues Element \texttt{paragraph}}%^^A
|
|
% \begin{macro}{\scr@fnt@paragraph}
|
|
% \changes{v2.8o}{2001/09/14}{neues Element \texttt{paragraph}}%^^A
|
|
% \begin{KOMAfont}{subparagraph}
|
|
% \changes{v2.8o}{2001/09/14}{neues Element \texttt{subparagraph}}%^^A
|
|
% \begin{macro}{\scr@fnt@subparagraph}
|
|
% \changes{v2.8o}{2001/09/14}{neues Element \texttt{subparagraph}}%^^A
|
|
% \begin{KOMAfont}{minisec}
|
|
% \changes{v2.8o}{2001/09/14}{neuer Ersatz für das Element
|
|
% \texttt{minisec}}%^^A
|
|
% \changes{v2.96a}{2007/01/08}{Alias für das Element \texttt{minisec}%^^A
|
|
% entfernt, da es nun ein eigenes Element ist}%^^A
|
|
% Definition der Elemente der Gliederung, deren Schrift geändert
|
|
% werden kann.
|
|
% \begin{macrocode}
|
|
\newcommand*{\scr@fnt@section}{\size@section}
|
|
\newcommand*{\scr@fnt@subsection}{\size@subsection}
|
|
\newcommand*{\scr@fnt@subsubsection}{\size@subsubsection}
|
|
\newcommand*{\scr@fnt@paragraph}{\size@paragraph}
|
|
\newcommand*{\scr@fnt@subparagraph}{\size@subparagraph}
|
|
% \end{macrocode}
|
|
% \end{KOMAfont}%^^A minisec
|
|
% \end{macro}
|
|
% \end{KOMAfont}
|
|
% \end{macro}
|
|
% \end{KOMAfont}
|
|
% \end{macro}
|
|
% \end{KOMAfont}
|
|
% \end{macro}
|
|
% \end{KOMAfont}
|
|
% \end{macro}
|
|
% \end{KOMAfont}
|
|
%
|
|
% \begin{KOMAfont}{sectionentry}
|
|
% \changes{v2.97c}{2007/06/21}{neues Font-Element}%^^A
|
|
% \changes{v3.06}{2010/06/09}{Verwendung von \texttt{sectioning} durch
|
|
% \texttt{disposition} ersetzt}%^^A
|
|
% Schrift für den \cs{section}-Eintrag im Inhaltsverzeichnis.
|
|
% \begin{macrocode}
|
|
%<*article>
|
|
\newkomafont{sectionentry}{\usekomafont{disposition}}
|
|
% \end{macrocode}
|
|
% \end{KOMAfont}
|
|
%
|
|
% \begin{KOMAfont}{sectionentrypagenumber}
|
|
% \changes{v2.97c}{2007/06/21}{neues Font-Element}%^^A
|
|
% Schrift für die Seitenzahl des \cs{section}-Eintrags im Inhaltsverzeichnis
|
|
% abweichend von \texttt{sectionentry}.
|
|
% \begin{macrocode}
|
|
\newkomafont{sectionentrypagenumber}{}
|
|
% \end{macrocode}
|
|
% \end{KOMAfont}
|
|
%
|
|
% \begin{KOMAfont}{sectionentrydots}
|
|
% \changes{v3.15}{2014/12/10}{neues Font-Element}%^^A
|
|
% \changes{v3.27}{2019/10/28}{überflüssiges \cs{normalfont} entfernt}%^^A
|
|
% Schrift für die optionalen Pünktchen des \cs{section}-Eintrags im
|
|
% Inhaltsverzeichnis abweichend von \texttt{sectionentry} und
|
|
% \cs{normalfont}\cs{normalsize}.
|
|
% \begin{macrocode}
|
|
\newkomafont{sectionentrydots}{}
|
|
%</article>
|
|
% \end{macrocode}
|
|
% \end{KOMAfont}
|
|
%
|
|
%
|
|
% \begin{macro}{\partnumdepth}
|
|
% \changes{v3.12}{2013/12/16}{new read only command}%^^A
|
|
% \changes{v3.18}{2015/05/24}{indirekt über \cs{DeclareSectionCommand}}%^^A
|
|
% \begin{macro}{\chapternumdepth}
|
|
% \changes{v3.12}{2013/12/16}{new read only command}%^^A
|
|
% \changes{v3.18}{2015/05/20}{indirekt über \cs{DeclareSectionCommand}}%^^A
|
|
% \begin{macro}{\sectionnumdepth}
|
|
% \changes{v3.12}{2013/12/16}{new read only command}%^^A
|
|
% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}%^^A
|
|
% \begin{macro}{\subsectionnumdepth}
|
|
% \changes{v3.12}{2013/12/16}{new read only command}%^^A
|
|
% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}%^^A
|
|
% \begin{macro}{\subsubsectionnumdepth}
|
|
% \changes{v3.12}{2013/12/16}{new read only command}%^^A
|
|
% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}%^^A
|
|
% \begin{macro}{\paragraphnumdepth}
|
|
% \changes{v3.12}{2013/12/16}{new read only command}%^^A
|
|
% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}%^^A
|
|
% \begin{macro}{\subparagraphnumdepth}
|
|
% \changes{v3.12}{2013/12/16}{new read only command}%^^A
|
|
% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}%^^A
|
|
% Diese dürfen nur gelesen, sollten aber nie umdefiniert werden und geben die
|
|
% Nummerierungsebene der Gliederungsanweisungen an (nicht zu verwechseln mit
|
|
% der Verzeichnisebene der Gliederungsanweisungen).
|
|
% \begin{macro}{\parttocdepth}
|
|
% \changes{v3.15}{2014/12/22}{neue Anweisung}%^^A
|
|
% \changes{v3.18}{2015/05/25}{indirekt über \cs{DeclareSectionCommand}}%^^A
|
|
% \begin{macro}{\chaptertocdepth}
|
|
% \changes{v3.15}{2014/12/22}{neue Anweisung}%^^A
|
|
% \changes{v3.18}{2015/05/20}{indirekt über \cs{DeclareSectionCommand}}%^^A
|
|
% \begin{macro}{\sectiontocdepth}
|
|
% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}%^^A
|
|
% \begin{macro}{\subsectiontocdepth}
|
|
% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}%^^A
|
|
% \begin{macro}{\subsubsectiontocdepth}
|
|
% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}%^^A
|
|
% \begin{macro}{\paragraphtocdepth}
|
|
% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}%^^A
|
|
% \begin{macro}{\subparagraphtocdepth}
|
|
% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}%^^A
|
|
% Diese dürfen nur gelesen, sollten aber nie umdefiniert werden und geben die
|
|
% Verzeichnisebene der Gliederungsanweisungen an.
|
|
% \begin{macro}{\part}
|
|
% \changes{v3.18}{2015/05/25}{Verwendung von \cs{DeclareSectionCommand}}%^^A
|
|
% \changes{v3.26}{2018/06/27}{Definition nach \cs{section} verschoben (wegen
|
|
% bookmark level fix)}%^^A
|
|
% \begin{macro}{\chapter}
|
|
% \changes{v2.8d}{2001/07/05}{\cs{chapterpagestyle} statt
|
|
% \texttt{plain}}%^^A
|
|
% \changes{v3.18}{2015/05/20}{Verwendung von \cs{DeclareSectionCommand}}%^^A
|
|
% Als Besonderheit werden für \cs{chapter} nur diejenigen Werte gesetzt, die
|
|
% nicht über Optionen eingestellt werden können und daher vorab deklariert
|
|
% werden müssen. Bei den Anweisungen der unteren Ebenen werden hingegen alle
|
|
% Einstellungen über \cs{DeclareSectionCommand} vorgenommen.
|
|
% \begin{macro}{\section}
|
|
% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor
|
|
% \cs{size@section} aufgerufen}%^^A
|
|
% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont}
|
|
% behebt einen Bug im color Paket}%^^A
|
|
% \changes{v2.96a}{2006/11/30}{Standardwert für \cs{parfillskip} (abhängig
|
|
% von Option \texttt{version})}%^^A
|
|
% \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak} entfernt}%^^A
|
|
% \changes{v3.13a}{2014/09/11}{Verwendung von \cs{scr@startsection}}%^^A
|
|
% \changes{v3.15}{2014/11/24}{Verwendung von \cs{DeclareSectionCommand}}%^^A
|
|
% \begin{macro}{\subsection}
|
|
% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor
|
|
% \cs{size@subsection} aufgerufen}%^^A
|
|
% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont}
|
|
% behebt einen Bug im color Paket}%^^A
|
|
% \changes{v2.96a}{2006/11/30}{Standardwert für \cs{parfillskip} (abhängig
|
|
% von Option \texttt{version})}%^^A
|
|
% \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak} entfernt}%^^A
|
|
% \changes{v3.13a}{2014/09/11}{Verwendung von \cs{scr@startsection}}%^^A
|
|
% \changes{v3.15}{2014/11/24}{Verwendung von \cs{DeclareSectionCommand}}%^^A
|
|
% \begin{macro}{\subsubsection}
|
|
% \changes{v2.3d}{1995/08/19}{wird bei \texttt{scrartcl} nun
|
|
% ebenfalls numeriert und ins Inhaltsverzeichnis geschrieben}%^^A
|
|
% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor
|
|
% \cs{size@subsubsection} aufgerufen}%^^A
|
|
% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont}
|
|
% behebt einen Bug im color Paket}%^^A
|
|
% \changes{v2.96a}{2006/11/30}{Standardwert für \cs{parfillskip} (abhängig
|
|
% von Option \texttt{version})}%^^A
|
|
% \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak} entfernt}%^^A
|
|
% \changes{v3.13a}{2014/09/11}{Verwendung von \cs{scr@startsection}}%^^A
|
|
% \changes{v3.15}{2014/11/24}{Verwendung von \cs{DeclareSectionCommand}}%^^A
|
|
% \begin{macro}{\paragraph}
|
|
% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor
|
|
% \cs{size@paragraph} aufgerufen}%^^A
|
|
% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont}
|
|
% behebt einen Bug im color Paket}%^^A
|
|
% \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak} entfernt}%^^A
|
|
% \changes{v3.15}{2014/11/24}{Verwendung von \cs{DeclareSectionCommand}}%^^A
|
|
% \begin{macro}{\subparagraph}
|
|
% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor
|
|
% \cs{size@subparagraph} aufgerufen}%^^A
|
|
% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont}
|
|
% behebt einen Bug im color Paket}%^^A
|
|
% \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak} entfernt}%^^A
|
|
% \changes{v3.13a}{2014/09/11}{Verwendung von \cs{scr@startsection}}%^^A
|
|
% \changes{v3.15}{2014/11/24}{Verwendung von \cs{DeclareSectionCommand}}%^^A
|
|
% \changes{v3.15}{2014/11/24}{\cs{parindent} durch \cs{scr@parindent}
|
|
% ersetzt}%^^A
|
|
% Die Standardgliederungsbefehle \cs{section} bis \cs{subparagraph}
|
|
% sind seit \KOMAScript{} v3.15 über die von \KOMAScript{} bereitgestellte
|
|
% Schnittstelle \cs{DeclareSectionCommand} definiert.
|
|
% \begin{macrocode}
|
|
%<*book|report>
|
|
\DeclareSectionCommand[%
|
|
style=chapter,%
|
|
level=\z@,%
|
|
pagestyle=plain,%
|
|
tocstyle=chapter,%
|
|
tocindent=\z@,%
|
|
tocnumwidth=1.5em%
|
|
]{chapter}
|
|
%</book|report>
|
|
\DeclareSectionCommand[%
|
|
style=section,%
|
|
level=1,%
|
|
indent=\z@,%
|
|
beforeskip=-3.5ex \@plus -1ex \@minus -.2ex,%
|
|
afterskip=2.3ex \@plus.2ex,%
|
|
tocstyle=section,%
|
|
%<book|report> tocindentfollows=chapter,%
|
|
%<article> tocindent=0pt,%
|
|
%<book|report> tocindent=1.5em,%
|
|
%<article> tocnumwidth=1.5em%
|
|
%<book|report> tocnumwidth=2.3em%
|
|
]{section}
|
|
\DeclareSectionCommand[%
|
|
style=part,%
|
|
%<article> level=\z@,%
|
|
%<report|book> level=\m@ne,%
|
|
%<report|book> pagestyle=plain,%
|
|
tocstyle=part,%
|
|
toclevel=\m@ne,%
|
|
tocindent=\z@,%
|
|
tocnumwidth=2em%
|
|
]{part}
|
|
\DeclareSectionCommand[%
|
|
style=section,%
|
|
level=2,%
|
|
indent=\z@,%
|
|
beforeskip=-3.25ex\@plus -1ex \@minus -.2ex,%
|
|
afterskip=1.5ex \@plus .2ex,%
|
|
%<article> tocstyle=subsection,%
|
|
%<book|report> tocstyle=section,%
|
|
%<article> tocindent=1.5em,%
|
|
%<book|report> tocindent=3.8em,%
|
|
%<article> tocnumwidth=2.3em%
|
|
%<book|report> tocnumwidth=3.2em%
|
|
]{subsection}
|
|
\DeclareSectionCommand[%
|
|
style=section,%
|
|
level=3,%
|
|
indent=\z@,%
|
|
beforeskip=-3.25ex\@plus -1ex \@minus -.2ex,%
|
|
afterskip=1.5ex \@plus .2ex,%
|
|
%<article> tocstyle=subsection,%
|
|
%<book|report> tocstyle=section,%
|
|
%<article> tocindent=3.8em,%
|
|
%<book|report> tocindent=7.0em,%
|
|
%<article> tocnumwidth=3.2em%
|
|
%<book|report> tocnumwidth=4.1em%
|
|
]{subsubsection}
|
|
\DeclareSectionCommand[%
|
|
style=section,%
|
|
level=4,%
|
|
indent=\z@,%
|
|
beforeskip=3.25ex \@plus1ex \@minus.2ex,%
|
|
afterskip=-1em,%
|
|
%<article> tocstyle=subsection,%
|
|
tocindentfollows=subsubsection,%
|
|
%<book|report> tocstyle=section,%
|
|
%<article> tocindent=7.0em,%
|
|
%<book|report> tocindent=10em,%
|
|
%<article> tocnumwidth=4.1em%
|
|
%<book|report> tocnumwidth=5em%
|
|
]{paragraph}
|
|
\DeclareSectionCommand[%
|
|
style=section,%
|
|
level=5,%
|
|
indent=\scr@parindent,%
|
|
beforeskip=3.25ex \@plus1ex \@minus .2ex,%
|
|
afterskip=-1em,%
|
|
%<article> tocstyle=subsection,%
|
|
%<book|report> tocstyle=section,%
|
|
%<article> tocindent=10em,%
|
|
%<book|report> tocindent=12em,%
|
|
%<article> tocnumwidth=5em%
|
|
%<book|report> tocnumwidth=6em%
|
|
]{subparagraph}
|
|
\expandafter\ifnum\scr@v@is@lt{3.15}\relax
|
|
\let\scr@subparagraph@sectionindent\parindent
|
|
\else
|
|
\def\scr@subparagraph@sectionindent{\scr@parindent}%
|
|
\fi
|
|
%</body>
|
|
%</class>
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \subparagraph
|
|
% \end{macro}%^^A \paragraph
|
|
% \end{macro}%^^A \subsubsection
|
|
% \end{macro}%^^A \subsection
|
|
% \end{macro}%^^A \section
|
|
% \end{macro}%^^A \chapter
|
|
% \end{macro}%^^A \part
|
|
% \end{macro}%^^A \subparargraphtocdepth
|
|
% \end{macro}%^^A \paragraphtocdepth
|
|
% \end{macro}%^^A \subsubsectiontocdepth
|
|
% \end{macro}%^^A \subsectiontocdepth
|
|
% \end{macro}%^^A \sectiontocdepth
|
|
% \end{macro}%^^A \chaptertocdepth
|
|
% \end{macro}%^^A \parttocdepth
|
|
% \end{macro}%^^A \subparargraphnumdepth
|
|
% \end{macro}%^^A \paragraphnumdepth
|
|
% \end{macro}%^^A \subsubsectionnumdepth
|
|
% \end{macro}%^^A \subsectionnumdepth
|
|
% \end{macro}%^^A \sectionnumdepth
|
|
% \end{macro}%^^A \chapternumdepth
|
|
% \end{macro}%^^A \partnumdepth
|
|
%
|
|
%
|
|
% \subsection{Font und Größeneinstellungen}
|
|
%
|
|
% Die Einstellungen für die einzelnen Ebenen werden bei den Definitonen der
|
|
% Ebenen vorgenommen. Hier gibt es nur Einstellungen, die nicht einer
|
|
% einzelnen Ebene zugeordnet sind.
|
|
%
|
|
% \begin{KOMAfont}{disposition}
|
|
% \changes{v2.95b}{2006/07/30}{neues Element \texttt{disposition}}%^^A
|
|
% \begin{KOMAfont}{sectioning}
|
|
% \begin{macro}{\scr@fnt@disposition}
|
|
% \changes{v2.95b}{2006/07/30}{neues Element \texttt{disposition}}%^^A
|
|
% \begin{macro}{\sectfont}
|
|
% \changes{v2.8c}{2001/06/29}{\cs{normalcolor} eingefügt}%^^A
|
|
% \changes{v3.12}{2013/11/11}{wird wegen Option
|
|
% \texttt{headings!=standardclasses} früher definiert}%^^A
|
|
% \changes{v3.20}{2016/01/29}{\cs{sffamily} durch \cs{@gr@gsffamily}
|
|
% ersetzt}%^^A
|
|
% Dies Schriftart nicht nur für die Gliederungsbefehle. Dieses Makro
|
|
% ist als intern zu betrachten. Der Anwender sollte stattdessen das
|
|
% entsprtechende Fontelement verwenden.
|
|
% \begin{macrocode}
|
|
%<*prepare>
|
|
\newcommand*{\sectfont}{\normalcolor\@gr@gsffamily\bfseries}
|
|
%</prepare>
|
|
%<*body>
|
|
\newcommand*{\scr@fnt@disposition}{\sectfont}
|
|
\aliaskomafont{sectioning}{disposition}
|
|
%</body>
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \sectfont
|
|
% \end{macro}%^^A \scr@fnt@disposition
|
|
% \end{KOMAfont}%^^A sectioning
|
|
% \end{KOMAfont}%^^A disposition
|
|
%
|
|
%
|
|
% \begin{option}{headings}
|
|
% \changes{v2.3h}{1996/01/20}{Größe von \cs{chapter} um eine Stufe
|
|
% verringert}%^^A
|
|
% \changes{v2.3h}{1996/01/20}{Verwendung von \cs{chapterheadstartvskip} und
|
|
% \cs{chapterheadendvskip} an Stelle von festen vertikalen Abständen am
|
|
% Anfang und am Ende eines Kapitels}%^^A
|
|
% \changes{v2.7c}{2000/01/19}{vertikale Abstände nach der Kapitelüberschrift
|
|
% geringfügig verändert und mit Leim versehen, um mit \cs{flushbottom} zu
|
|
% besseren Ergebnissen zu gelangen}%^^A
|
|
% \changes{v2.98c}{2008/03/10}{Neue Option}%^^A
|
|
% \changes{v3.10}{2011/08/30}{Integration der Erweiterung für das optionale
|
|
% Argument der Gliederungsbefehle}%^^A
|
|
% \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit
|
|
% \cs{FamilyKeyState}}%^^A
|
|
% \changes{v3.12}{2013/08/26}{\cs{KOMA@options} durch \cs{KOMAoptions}
|
|
% ersetzt}%^^A
|
|
% \changes{v3.12}{2013/11/11}{neuer Wert \texttt{standardclasses}}%^^A
|
|
% \changes{v3.15}{2014/11/24}{\cs{scr@chapter@beforeskip} und
|
|
% \cs{scr@chapter@afterskip} werden verwendet}%^^A
|
|
% \changes{v3.17}{2015/03/09}{interne Speicherung des Wert}%^^A
|
|
% \changes{v3.18}{2015/05/20}{Werte für \cs{scr@chapter@beforeskip}
|
|
% negiert}%^^A
|
|
% Dies ist eine neue zentrale Option für Überschriften. Dabei ergibt sich
|
|
% nun auch das Problem, dass die Gesamtmenge der Überschriften mal
|
|
% \emph{headings} (Überschriften), mal \emph{sectioning}
|
|
% (Abschnittseinteilung) und mal \emph{disposition} (Gliederung) genannt
|
|
% wird. Es wäre gut gewesen, sich bei Zeiten Gedanken darüber zu machen, wie
|
|
% man das am besten einheitlich nennt.
|
|
% \begin{macrocode}
|
|
%<*class>
|
|
%<*option>
|
|
\KOMA@key{headings}{%
|
|
\KOMA@set@ncmdkey{headings}{@tempa}{%
|
|
{big}{0},%
|
|
{normal}{1},%
|
|
{small}{2},%
|
|
%<*book|report>
|
|
{openany}{3},%
|
|
{openright}{4},%
|
|
{openleft}{5},%
|
|
{twolinechapter}{6},{chapterprefix}{6},{chapterwithprefix}{6},%
|
|
{chapterwithprefixline}{6},%
|
|
{onelinechapter}{7},{nochapterprefix}{7},{chapterwithoutprefix}{7},%
|
|
{chapterwithoutprefixline}{7},%
|
|
{twolineappendix}{8},{appendixprefix}{8},{appendixwithprefix}{8},%
|
|
{appendixwithprefixline}{8},%
|
|
{onelineappendix}{9},{noappendixprefix}{9},{appendixwithoutprefix}{9},%
|
|
{appendixwithoutprefixline}{9},%
|
|
%</book|report>
|
|
{optiontotocandhead}{10},{optiontoheadandtoc}{10},%
|
|
{optiontotoc}{11},%
|
|
{optiontohead}{12},%
|
|
{standardclasses}{13}%
|
|
}{#1}%
|
|
\ifx\FamilyKeyState\FamilyKeyStateProcessed
|
|
\ifcase \@tempa\relax% big
|
|
\KOMA@kav@remove{.\KOMAClassFileName}{headings}{big}%
|
|
\KOMA@kav@remove{.\KOMAClassFileName}{headings}{normal}%
|
|
\KOMA@kav@remove{.\KOMAClassFileName}{headings}{small}%
|
|
\KOMA@kav@remove{.\KOMAClassFileName}{headings}{standardclasses}%
|
|
\KOMA@kav@add{.\KOMAClassFileName}{headings}{big}%
|
|
% \end{macrocode}
|
|
% Als erstes kümmern wir uns um die drei Größenabstufungen für die
|
|
% Überschriften, die \KOMAScript{} bietet, und zwar in der Reihenfolge
|
|
% \texttt{big}, \texttt{normal}, \texttt{small}. Es sei darauf hingewiesen,
|
|
% dass die Verwendung dieser Option alle Änderungen an
|
|
% \cs{chapterheadstartvskip} oder \cs{chapterheadendvskip} oder den
|
|
% Font-Elementen für die einzelnen Überschriften aufhebt macht!
|
|
%
|
|
% Hinweis: Es wurde |+\baselineskip+\parskip| hinzugefügt, um
|
|
% Kompatibilitätsprobleme zu vermeiden. Die entsprechenden Werte werden in der
|
|
% Präambel aber wieder abgezogen, um Überschriften wirklich mit
|
|
% |beforeskip=0pt| an den oberen Rand zu bekommen.
|
|
% \begin{macrocode}
|
|
%<*book|report>
|
|
\renewcommand*{\scr@chapter@beforeskip}{-3.3\baselineskip-\parskip}%
|
|
\renewcommand*{\scr@chapter@afterskip}{%
|
|
1.725\baselineskip \@plus .115\baselineskip \@minus .192\baselineskip
|
|
}%
|
|
\renewcommand*{\scr@chapter@innerskip}{.5\baselineskip}%
|
|
\renewcommand*{\chapterheadstartvskip}{\vspace{\@tempskipa}}%
|
|
\renewcommand*{\chapterheadendvskip}{%
|
|
\expandafter\ifnum\scr@v@is@lt{3.15}\vspace\@tempskipa
|
|
\else\vskip\@tempskipa\fi
|
|
}%
|
|
\renewcommand*{\chapterheadmidvskip}{\par\nobreak\vskip\@tempskipa}%
|
|
%</book|report>
|
|
\renewcommand*{\size@part}{\Huge}%
|
|
\renewcommand*{\size@partnumber}{\huge}%
|
|
%<book|report> \renewcommand*{\size@chapter}{\huge}%
|
|
%<book|report> \renewcommand*{\size@chapterprefix}{\size@chapter}%
|
|
\renewcommand*{\size@section}{\Large}%
|
|
\renewcommand*{\size@subsection}{\large}%
|
|
\renewcommand*{\size@subsubsection}{\normalsize}%
|
|
\renewcommand*{\size@paragraph}{\normalsize}%
|
|
\renewcommand*{\size@subparagraph}{\normalsize}%
|
|
\or % normal
|
|
\KOMA@kav@remove{.\KOMAClassFileName}{headings}{big}%
|
|
\KOMA@kav@remove{.\KOMAClassFileName}{headings}{normal}%
|
|
\KOMA@kav@remove{.\KOMAClassFileName}{headings}{small}%
|
|
\KOMA@kav@remove{.\KOMAClassFileName}{headings}{standardclasses}%
|
|
\KOMA@kav@add{.\KOMAClassFileName}{headings}{normal}%
|
|
%<*book|report>
|
|
\renewcommand*{\scr@chapter@beforeskip}{-3\baselineskip-\parskip}%
|
|
\renewcommand*{\scr@chapter@afterskip}{%
|
|
1.5\baselineskip \@plus .1\baselineskip \@minus .167\baselineskip
|
|
}%
|
|
\renewcommand*{\scr@chapter@innerskip}{.5\baselineskip}%
|
|
\renewcommand*{\chapterheadstartvskip}{\vspace{\@tempskipa}}%
|
|
\renewcommand*{\chapterheadendvskip}{%
|
|
\expandafter\ifnum\scr@v@is@lt{3.15}\vspace\@tempskipa
|
|
\else\vskip\@tempskipa\fi
|
|
}%
|
|
\renewcommand*{\chapterheadmidvskip}{\par\nobreak\vskip\@tempskipa}%
|
|
%</book|report>
|
|
\renewcommand*{\size@part}{\huge}%
|
|
\renewcommand*{\size@partnumber}{\huge}%
|
|
%<*book|report>
|
|
\renewcommand*{\size@chapter}{\LARGE}%
|
|
\renewcommand*{\size@chapterprefix}{\size@chapter}%
|
|
\renewcommand*{\size@section}{\Large}%
|
|
\renewcommand*{\size@subsection}{\large}%
|
|
%</book|report>
|
|
%<*article>
|
|
\renewcommand*{\size@section}{\large}%
|
|
\renewcommand*{\size@subsection}{\normalsize}%
|
|
%</article>
|
|
\renewcommand*{\size@subsubsection}{\normalsize}%
|
|
\renewcommand*{\size@paragraph}{\normalsize}%
|
|
\renewcommand*{\size@subparagraph}{\normalsize}%
|
|
\or % small
|
|
\KOMA@kav@remove{.\KOMAClassFileName}{headings}{big}%
|
|
\KOMA@kav@remove{.\KOMAClassFileName}{headings}{normal}%
|
|
\KOMA@kav@remove{.\KOMAClassFileName}{headings}{small}%
|
|
\KOMA@kav@remove{.\KOMAClassFileName}{headings}{standardclasses}%
|
|
\KOMA@kav@add{.\KOMAClassFileName}{headings}{small}%
|
|
%<*book|report>
|
|
\renewcommand*{\scr@chapter@beforeskip}{-2.8\baselineskip-\parskip}%
|
|
\renewcommand*{\scr@chapter@afterskip}{%
|
|
1.35\baselineskip \@plus 0.09\baselineskip \@minus .15\baselineskip
|
|
}%
|
|
\renewcommand*{\scr@chapter@innerskip}{.5\baselineskip}%
|
|
\renewcommand*{\chapterheadstartvskip}{\vspace{\@tempskipa}}%
|
|
\renewcommand*{\chapterheadendvskip}{%
|
|
\expandafter\ifnum\scr@v@is@lt{3.15}\vspace\@tempskipa
|
|
\else\vskip\@tempskipa\fi
|
|
}%
|
|
\renewcommand*{\chapterheadmidvskip}{\par\nobreak\vskip\@tempskipa}%
|
|
%</book|report>
|
|
\renewcommand*{\size@part}{\LARGE}%
|
|
\renewcommand*{\size@partnumber}{\LARGE}%
|
|
%<*book|report>
|
|
\renewcommand*{\size@chapter}{\Large}%
|
|
\renewcommand*{\size@chapterprefix}{\size@chapter}%
|
|
\renewcommand*{\size@section}{\large}%
|
|
%</book|report>
|
|
%<*article>
|
|
\renewcommand*{\size@section}{\normalsize}%
|
|
%</article>
|
|
\renewcommand*{\size@subsection}{\normalsize}%
|
|
\renewcommand*{\size@subsubsection}{\normalsize}%
|
|
\renewcommand*{\size@paragraph}{\normalsize}%
|
|
\renewcommand*{\size@subparagraph}{\normalsize}%
|
|
% \end{macrocode}
|
|
% Für \textsf{scrbook} und \textsf{scrreprt} gibt es dann noch die
|
|
% Möglichkeit, auch hierüber die Optionen \texttt{open=any},
|
|
% \texttt{open=right} und \texttt{open=left} zu setzen.
|
|
% \begin{macrocode}
|
|
\or % openany
|
|
%<*book|report>
|
|
\KOMAoptions{open=any}%
|
|
%</book|report>
|
|
\or % openright
|
|
%<*book|report>
|
|
\KOMAoptions{open=right}%
|
|
%</book|report>
|
|
\or % openleft
|
|
%<*book|report>
|
|
\KOMAoptions{open=left}%
|
|
%</book|report>
|
|
% \end{macrocode}
|
|
% Für \textsf{scrbook} und \textsf{scrreprt} gibt es dann noch die
|
|
% Möglichkeit, auch hierüber die Optionen \texttt{chapterprefix} und
|
|
% \texttt{appendixprefix} zu setzen.
|
|
% \begin{macrocode}
|
|
\or % twolinechapter
|
|
%<*book|report>
|
|
\KOMAoptions{chapterprefix=true}%
|
|
%</book|report>
|
|
\or % onelinechapter
|
|
%<*book|report>
|
|
\KOMAoptions{chapterprefix=false}%
|
|
%</book|report>
|
|
\or % twolineappendix
|
|
%<*book|report>
|
|
\KOMAoptions{appendixprefix=true}%
|
|
%</book|report>
|
|
\or % onelineappend
|
|
%<*book|report>
|
|
\KOMAoptions{appendixprefix=false}%
|
|
%</book|report>
|
|
% \end{macrocode}
|
|
% Ab Version~3.10 wird über diese Option auch noch die Erweiterung für das
|
|
% optionale Argument der Gliederungsüberschriften aktiviert und gesteuert.
|
|
% \begin{macrocode}
|
|
\or % optiontotocandhead
|
|
\KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotocandhead}%
|
|
\KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotoc}%
|
|
\KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontohead}%
|
|
\KOMA@kav@add{.\KOMAClassFileName}{headings}{optiontotocandhead}%
|
|
\scr@activate@xsection{3}%
|
|
\or % optiontotoc
|
|
\KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotocandhead}%
|
|
\KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotoc}%
|
|
\KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontohead}%
|
|
\KOMA@kav@add{.\KOMAClassFileName}{headings}{optiontotoc}%
|
|
\scr@activate@xsection{2}%
|
|
\or % optiontohead
|
|
\KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotocandhead}%
|
|
\KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotoc}%
|
|
\KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontohead}%
|
|
\KOMA@kav@add{.\KOMAClassFileName}{headings}{optiontohead}%
|
|
\scr@activate@xsection{1}%
|
|
% \end{macrocode}
|
|
% Ab Version~3.12 gibt es noch die Möglichkeit, die Überschriftengrößen der
|
|
% Standardklassen zu emulieren.
|
|
% \begin{macrocode}
|
|
\or % standardclasses
|
|
\KOMA@kav@remove{.\KOMAClassFileName}{headings}{big}%
|
|
\KOMA@kav@remove{.\KOMAClassFileName}{headings}{normal}%
|
|
\KOMA@kav@remove{.\KOMAClassFileName}{headings}{small}%
|
|
\KOMA@kav@remove{.\KOMAClassFileName}{headings}{standardclasses}%
|
|
\KOMA@kav@add{.\KOMAClassFileName}{headings}{standardclasses}%
|
|
%<*book|report>
|
|
\renewcommand*{\scr@chapter@beforeskip}{-50\p@}%
|
|
\renewcommand*{\scr@chapter@afterskip}{40\p@}%
|
|
\renewcommand*{\scr@chapter@innerskip}{20\p@}%
|
|
\renewcommand*{\chapterheadstartvskip}{\vspace{\@tempskipa}}%
|
|
\renewcommand*{\chapterheadendvskip}{\vskip\@tempskipa}%
|
|
\renewcommand*{\chapterheadmidvskip}{\par\nobreak\vskip\@tempskipa}%
|
|
\renewcommand*{\size@part}{\Huge}%
|
|
\renewcommand*{\size@partnumber}{\huge}%
|
|
\renewcommand*{\size@chapter}{\Huge}%
|
|
\renewcommand*{\size@chapterprefix}{\huge}%
|
|
%</book|report>
|
|
%<*article>
|
|
\renewcommand*{\size@part}{\huge}%
|
|
\renewcommand*{\size@partnumber}{\Large}%
|
|
%</article>
|
|
\renewcommand*{\size@section}{\Large}%
|
|
\renewcommand*{\size@subsection}{\large}%
|
|
\renewcommand*{\size@subsubsection}{\normalsize}%
|
|
\renewcommand*{\size@paragraph}{\normalsize}%
|
|
\renewcommand*{\size@subparagraph}{\normalsize}%
|
|
\renewcommand*{\sectfont}{\bfseries}%
|
|
%<book|report> \KOMAoptions{open=right,chapterprefix=true}%
|
|
\fi
|
|
\fi
|
|
}
|
|
\KOMA@kav@add{.\KOMAClassFileName}{headings}{big}
|
|
%<book|report>\KOMA@kav@add{.\KOMAClassFileName}{headings}{onelinechapter}
|
|
% \end{macrocode}
|
|
% \end{option}%^^A headings
|
|
%
|
|
% \begin{option}{bigheadings}
|
|
% \changes{v2.3h}{1996/01/20}{neue Option}%^^A
|
|
% \changes{v2.4g}{1996/11/04}{die Option heißt nun wirklich so; bei
|
|
% Verwendung des alten, falschen Namens wird ein Fehler
|
|
% ausgegeben}%^^A
|
|
% \changes{v2.98c}{2008/03/10}{obsolet}%^^A
|
|
% \changes{v3.01a}{2008/11/20}{deprecated}%^^A
|
|
% \begin{macro}{\@bigheadings}
|
|
% \changes{v2.98c}{2008/03/10}{entfernt}%^^A
|
|
% \begin{option}{normalheadings}
|
|
% \changes{v2.3h}{1996/01/20}{neue Option}%^^A
|
|
% \changes{v2.4g}{1996/11/04}{die Option heißt nun wirklich so; bei
|
|
% Verwendung des alten, falschen Namens wird ein Fehler
|
|
% ausgegeben}%^^A
|
|
% \changes{v2.98c}{2008/03/10}{obsolet}%^^A
|
|
% \changes{v3.01a}{2008/11/20}{deprecated}%^^A
|
|
% \begin{macro}{\@normalheadings}
|
|
% \changes{v2.98c}{2008/03/10}{entfernt}%^^A
|
|
% \begin{option}{smallheadings}
|
|
% \changes{v2.3h}{1996/01/20}{neue Option}%^^A
|
|
% \changes{v2.4g}{1996/11/04}{die Option heißt nun wirklich so; bei
|
|
% Verwendung des alten, falschen Namens wird ein Fehler
|
|
% ausgegeben}%^^A
|
|
% \changes{v2.98c}{2008/03/10}{obsolet}%^^A
|
|
% \changes{v3.01a}{2008/11/20}{deprecated}%^^A
|
|
% \begin{macro}{\@smallheadings}
|
|
% \changes{v2.98c}{2008/03/10}{entfernt}%^^A
|
|
% \begin{macrocode}
|
|
\KOMA@DeclareDeprecatedOption{bigheadings}{headings=big}
|
|
\KOMA@DeclareDeprecatedOption{normalheadings}{headings=normal}
|
|
\KOMA@DeclareDeprecatedOption{smallheadings}{headings=small}
|
|
%</option>
|
|
%</class>
|
|
% \end{macrocode}
|
|
% \end{macro}%^^A \@smallheadings
|
|
% \end{option}%^^A smallheadings
|
|
% \end{macro}%^^A \@normalheadings
|
|
% \end{option}%^^A normalheadings
|
|
% \end{macro}%^^A \@bigheadings
|
|
% \end{option}%^^A bigheadings
|
|
%
|
|
%
|
|
% \iffalse
|
|
%</!letter>
|
|
% \fi
|
|
%
|
|
% \Finale
|
|
%
|
|
\endinput
|
|
%
|
|
% end of file `scrkernel-sections.dtx'
|
|
%%% Local Variables:
|
|
%%% mode: doctex
|
|
%%% coding: utf-8
|
|
%%% TeX-master: t
|
|
%%% End:
|
|
|