diff options
Diffstat (limited to 'macros/latex/contrib/koma-script/doc/scrbookreportarticle-experts-de.tex')
-rw-r--r-- | macros/latex/contrib/koma-script/doc/scrbookreportarticle-experts-de.tex | 2110 |
1 files changed, 2110 insertions, 0 deletions
diff --git a/macros/latex/contrib/koma-script/doc/scrbookreportarticle-experts-de.tex b/macros/latex/contrib/koma-script/doc/scrbookreportarticle-experts-de.tex new file mode 100644 index 0000000000..08c0ee03e0 --- /dev/null +++ b/macros/latex/contrib/koma-script/doc/scrbookreportarticle-experts-de.tex @@ -0,0 +1,2110 @@ +% ====================================================================== +% scrbookreportarticle-experts-de.tex +% Copyright (c) Markus Kohm, 2001-2022 +% +% 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.md. +% ====================================================================== +% +% Chapter about scrbook, scrreprt, and scrartcl of the KOMA-Script guide +% expert part +% Maintained by Markus Kohm +% +% ============================================================================ + +\KOMAProvidesFile{scrbookreportarticle-experts-de.tex}% + [$Date: 2022-06-05 12:40:11 +0200 (So, 05. Jun 2022) $ + KOMA-Script guide (chapter: scrbook, scrreprt, scrartcl for + experts)] + +\chapter[{Zusätzliche Informationen zu den Hauptklassen und + \Package{scrextend}}]{Zusätzliche + Informationen zu den Hauptklassen + \Class{scrbook}, \Class{scrreprt} und + \Class{scrartcl} sowie dem + Paket \Package{scrextend}} +\labelbase{maincls-experts} + +\BeginIndexGroup% +\BeginIndex{Class}{scrartcl}% +\BeginIndex{Class}{scrbook}% +\BeginIndex{Class}{scrreprt}% +\BeginIndex{Package}{scrextend}% +In diesem Kapitel finden Sie zusätzliche Informationen zu den +\KOMAScript-Klassen \Class{scrbook}, \Class{scrreprt} und \Class{scrartcl} und +einigen Anweisungen, die auch in \Package{scrextend} vorhanden sind. +\iffree{Einige Teile des Kapitels sind dabei dem \KOMAScript-Buch + \cite{book:komascript} vorbehalten. Dies sollte kein Problem sein, denn + der}{Der} normale Anwender, der die Klassen einfach nur verwenden will, wird +diese Informationen eher selten benötigen. Ein Teil der Informationen richtet +sich an Anwender, die ausgefallene Aufgaben lösen oder eigene Klassen +schreiben wollen, die auf einer \KOMAScript-Klasse basieren. Da sich die +entsprechenden Erklärungen ausdrücklich nicht an \LaTeX-Anfänger richten, sind +sie teilweise deutlich kürzer gefasst und setzen ein vertieftes Wissen über +\LaTeX{} voraus. Anderes existiert nur aus Gründen der Kompatibilität zu den +Standardklassen\iffree{ oder früheren Versionen von \KOMAScript}{}.\iffree{}{ + Teile, die nur aus Gründen der Kompatibilität zu früheren Versionen von + \KOMAScript{} existieren, sind in serifenloser Schrift gesetzt und sollten + nicht mehr verwendet werden.} + +\LoadNonFree{scrbookreportarticle-experts}{0} + +\section{Ergänzungen zu Benutzeranweisungen} +\seclabel{addInfos} + +\LoadNonFree{scrbookreportarticle-experts}{1} + +\iffree{\LoadCommonFile{footnotes-experts}}{} + +\section{Zusammenspiel von \KOMAScript{} und anderen Paketen} +\seclabel{coexistence} + +\LoadNonFree{scrbookreportarticle-experts}{2} + + +\section{Erkennung von \KOMAScript-Klassen} +\seclabel{identify} + +Für Paketautoren besteht manchmal die Notwendigkeit, eine \KOMAScript-Klasse +zu erkennen. Für Anwender besteht diese Notwendigkeit dagegen eher +nicht. Bezüglich der verwendeten \KOMAScript-Version sei auf +\DescRef{scrbase.cmd.KOMAScriptVersion} in \autoref{sec:scrbase.identify}, +\DescPageRef{scrbase.cmd.KOMAScriptVersion} verwiesen. + +\begin{Declaration} + \Macro{KOMAClassName} + \Macro{ClassName} +\end{Declaration} +In \Macro{KOMAClassName} ist der Name der aktuell verwendeten +\KOMAScript-Klasse abgelegt. Will man also wissen, ob eine \KOMAScript-Klasse +verwendet wird, so kann man einfach mit \Macro{@ifundefined} auf diese +Anweisung testen. Tests auf eine konkrete \KOMAScript-Klasse, beispielsweise +mit \DescRef{scrbase.cmd.Ifstr}, sind ebenfalls möglich. Demgegenüber gibt +\Macro{ClassName} Auskunft, welche Standardklasse durch diese +\KOMAScript-Klasse ersetzt wird.% +\iffalse% Umbruchkorrektur +\par +Es\textnote{Achtung!} sei in diesem Zusammenhang darauf hingewiesen, dass +dagegen die Existenz von +\DescRef{scrlogo.cmd.KOMAScript}\IndexCmd{KOMAScript} nicht als Indiz für die +Verwendung einer \KOMAScript-Klasse dienen kann. Zum einen definieren alle +\KOMAScript-Pakete diese Anweisung, zum anderen können auch andere Pakete es +für sinnvoll erachten, das \KOMAScript-Piktogramm unter diesem Namen zu +definieren.% +\fi% +\EndIndexGroup + + +\section{Einträge ins Inhaltsverzeichnis} +\seclabel{toc} + +\KOMAScript-Klassen bieten erweiterte Möglichkeiten zur Erstellung und +Manipulation von Einträgen in das Inhaltsverzeichnis. Einige davon basieren +auf der Verwendung von \Package{tocbasic} (siehe +\autoref{sec:tocbasic.tocstyle} ab +\autopageref{sec:tocbasic.tocstyle}). Andere sind direkt in den Klassen +implementiert. + + +\begin{Declaration} + \Macro{raggedchapterentry} +\end{Declaration} +Bei früheren\ChangedAt{v3.21}{\Class{scrbook}\and \Class{scrreprt}} Version +von \KOMAScript{} gab es die Möglichkeit, das Makro \Macro{raggedchapterentry} +als \Macro{raggedright} zu definieren, um den Text der Kapiteleinträge ins +Inhaltsverzeichnis im linksbündigen Flattersatz zu setzen. Offiziell existiert +diese Möglichkeit seit \KOMAScript-Version~3.21 nicht mehr. + +Tatsächlich ist aber die Eigenschaft \PValue{raggedentrytext} für den +Eintrags-Stil \PValue{tocline} im Paket +\hyperref[cha:tocbasic]{\Package{tocbasic}}\IndexPackage{tocbasic} so +implementiert, dass sie das Makro \Macro{ragged\PName{Eintragsebene}entry} +entweder auf \Macro{relax} oder auf \Macro{raggedright} setzt. Bei der +Auswertung der Eigenschaft wird dann getestet, ob das entsprechende Makro +entweder \Macro{raggedright} ist oder als \Macro{raggedright} definiert +ist. In beiden Fällen wird Flattersatz verwendet. In allen anderen Fällen wird +kein Flattersatz verwendet. + +Da schon früher dokumentiert war, dass \Macro{raggedchapterentry} nicht +als etwas anderes als \Macro{raggedright} definiert werden sollte, ist damit +Kompatibilität zum dokumentierten Verhalten früherer Versionen erreicht. Wie +in früheren Versionen gewarnt, führen andere Definitionen von +\Macro{raggedchapterentry} -- nun aber auch von \Macro{raggedsectionentry} und +entsprechend für die anderen Eintragsebenen -- möglicherweise zu unerwarteten +Ergebnissen. + +Empfohlen wird, eventuell gewünschten Flattersatz für Verzeichniseinträge +stattdessen über die genannte Eigenschaft des Verzeichniseintragsstils +\PValue{tocline} zu wählen.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{addtocentrydefault}\Parameter{Ebene}\Parameter{Nummer}% + \Parameter{Überschrift} +\end{Declaration} +Die\ChangedAt{v3.08}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} \KOMAScript-Klassen verwenden +\Macro{addcontentsline}\IndexCmd{addcontentsline}% +\important{\Macro{addcontentsline}} nicht direkt, um Einträge ins +Inhaltsverzeichnis vorzunehmen. Stattdessen wird \Macro{addtocentrydefault} +mit ganz ähnlichen Argumenten aufgerufen. Die Anweisung kann sowohl für +nummerierte als auch für nicht nummerierte Einträge verwendet werden. Dabei +gibt \PName{Ebene} die Gliederungsebene in Textform an, also \PValue{part}, +\PValue{chapter}, \PValue{section}, \PValue{subsection}, +\PValue{subsubsection}, \PValue{paragraph} oder \PValue{subparagraph}. Die +formatierte Gliederungsnummer wird über das zweite Argument \PName{Nummer} +übergeben. Dieses Argument darf auch leer sein. Der Text des Eintrags wird mit +\PName{Überschrift} angegeben. Zerbrechliche Befehle in +diesem Argument sind mit +\Macro{protect}\IndexCmd{protect}\important{\Macro{protect}} zu schützen. + +Für das Argument \PName{Nummer} gilt noch eine Besonderheit. Ist das Argument +leer, so signalisiert dies, dass ein nicht nummerierter Eintrag erzeugt werden +soll. In der Voreinstellung wird dies mit +\begin{quote}\small\raggedright + \Macro{addcontentsline}\PParameter{toc}\Parameter{Ebene}% + \PParameter{\%\\ + \quad\Macro{protect}\DescRef{tocbasic.cmd.nonumberline} + \PName{Überschrift}\%\\ + } +\end{quote} +erreicht. Ist das Argument jedoch nicht leer, so soll ein nummerierter Eintrag +erzeugt werden und \PName{Nummer} ist die vorformatierte Gliederungsnummer. In +der Voreinstellung verwendet \KOMAScript{} dann: +\begin{quote}\small\raggedright + \Macro{addcontentsline}\PParameter{toc}\Parameter{Ebene}% + \PParameter{\%\\ + \quad\Macro{protect}\DescRef{tocbasic.cmd.numberline}\Parameter{Nummer}% + \PName{Überschrift}\%\\ + } +\end{quote} +\iffalse zur Erzeugung dieses Eintrags.\fi + +Paketautoren und Autoren von Wrapper-Klassen können diese Anweisung +umdefinieren, um Einfluss auf die Einträge zu nehmen. So\textnote{Beispiel} +wäre beispielsweise denkbar, mit +\begin{lstcode} + \renewcommand{\addtocentrydefault}[3]{% + \IfArgIsEmpty{#3}{% + }{% + \IfArgIsEmpty{#2}{% + \addcontentsline{toc}{#1}{\protect\nonumberline#3}% + }{% + \addcontentsline{toc}{#1}{\protect\numberline{#2}#3}% + }% + }% + }% +\end{lstcode} +dafür\IndexCmd{IfArgIsEmpty} zu sorgen, dass Einträge mit leerer +\PName{Überschrift} erst gar nicht vorgenommen werden. Eine solche Änderung +ist in der Praxis jedoch nicht notwendig, da die Unterdrückung leerer Einträge +bereits auf andere Weise in die \KOMAScript-Klassen eingebaut ist. Siehe +hierzu auch die Erklärung zu den Gliederungsbefehlen in +\autoref{sec:maincls.structure} ab \DescPageRef{maincls.cmd.part}.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{addparttocentry}\Parameter{Nummer}\Parameter{Überschrift} + \Macro{addchaptertocentry}\Parameter{Nummer}\Parameter{Überschrift} + \Macro{addsectiontocentry}\Parameter{Nummer}\Parameter{Überschrift} + \Macro{addsubsectiontocentry}\Parameter{Nummer}\Parameter{Überschrift} + \Macro{addsubsubsectiontocentry}\Parameter{Nummer}\Parameter{Überschrift} + \Macro{addparagraphtocentry}\Parameter{Nummer}\Parameter{Überschrift} + \Macro{addsubparagraphtocentry}\Parameter{Nummer}\Parameter{Überschrift} +\end{Declaration}% +Auch \ChangedAt{v3.08}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} die oben dokumentierte Anweisung +\DescRef{\LabelBase.cmd.addtocentrydefault}\IndexCmd{addtocentrydefault}% +\important{\DescRef{\LabelBase.cmd.addtocentrydefault}} wird von den +\KOMAScript-Klassen nur dann direkt aufgerufen, wenn für die angegebene +\PName{Ebene} keine direkte Anweisung definiert oder diese +\Macro{relax}\IndexCmd{relax}\important{\Macro{relax}} ist. In der +Voreinstellung sind die angegebenen Anweisungen alle so definiert, dass sie +ihre \PName{Ebene} und die Argumente direkt an +\DescRef{\LabelBase.cmd.addtocentrydefault} weitergeben.% +% +\EndIndexGroup + + +\section{Schrifteinstellungen} +\seclabel{fonts} + +\KOMAScript-Klassen verfügen nicht nur über erweiterte Möglichkeiten zur +Auswahl der Grundschriftgröße. Sie erlauben auch die Definition von Elementen +mit eigenen Schrifteinstellungen, sowie deren Manipulation und dedizierter +Anwendung. + +\LoadNonFree{scrbookreportarticle-experts}{5} + +\begin{Declaration} + \Macro{newkomafont}\OParameter{Warnung}\Parameter{Element} + \Parameter{Voreinstellung} + \Macro{aliaskomafont}\Parameter{Aliasname}\Parameter{Element} +\end{Declaration} +Experten können mit \Macro{newkomafont} eine \PName{Voreinstellung} für die +Schrift eines \PName{Element}s definieren. Anschließend kann diese +Voreinstellung mit den Anweisungen \DescRef{maincls.cmd.setkomafont} und +\DescRef{maincls.cmd.addtokomafont} (siehe \autoref{sec:maincls.textmarkup}, +\DescPageRef{maincls.cmd.setkomafont}) verändert werden. Natürlich wird diese +Schrift damit noch lange nicht verwendet. Der Experte muss selbst Sorge dafür +tragen, dass er an den entsprechenden Stellen die Anweisung +\DescRef{maincls.cmd.usekomafont}% +\important{\DescRef{maincls.cmd.usekomafont}}\IndexCmd{usekomafont} (siehe +\DescPageRef{maincls.cmd.usekomafont}) für dieses Element in seine +Definitionen einbaut. Der Aufruf von \Macro{newkomafont} für ein bereits +existierendes Element führt zu Fehlermeldungen. + +Das optionale Argument \PName{Warnung} definiert eine Warnmeldung. Diese wird +bei den \KOMAScript-Klassen per \Macro{ClassWarning} oder beim Paket +\Package{scrextend} per \Macro{PackageWarning} immer dann ausgegeben, wenn die +Voreinstellung für das Element verändert wird. Als Urheber der +Warnung wird das Paket +\Package{scrkbase}\IndexPackage{scrkbase}\important{\Package{scrkbase}} +angegeben. + +Mit \Macro{aliaskomafont} kann für ein bereits existierendes \PName{Element} +ein \PName{Aliasname} definiert werden. \KOMAScript{} informiert den Benutzer +in der \File{log}-Datei über den Namen des tatsächlichen Elements, wenn dieser +den \PName{Aliasname} verwendet. \PName{Aliasname}n\textnote{Tipp!} können +beispielsweise dann eingesetzt werden, wenn der Entwickler sich später einen +besseren Namen für ein Element überlegt und der alte Name aus +Kompatibilitätsgründen weiter verwendbar bleiben soll. Außerdem kann damit die +Benutzerfreundlichkeit erhöht werden, indem einem Element all die Namen als +Alias zugeordnet werden, die unterschiedliche Benutzer intuitiv wählen +würden. \KOMAScript{} selbst macht von dieser Möglichkeit regen Gebrauch. +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{addtokomafontrelaxlist}\Parameter{Makro} + \Macro{addtokomafontonearglist}\Parameter{Makro} + \Macro{addtokomafontgobblelist}\Parameter{Makro} +\end{Declaration} +Wie bereits in \autoref{part:forAuthors} der Anleitung erklärt, dürfen in den +Schrifteinstellungen der Elemente nur Befehle zur Wahl der Größe, Familie, +Codierung, Strichstärke, Form und Farbe enthalten sein. Dabei erfolgt schon +die Änderung der Farbe bei \LaTeX{} nicht transparent und kann damit +unerwünschte Effekte hervorrufen, wenn man \DescRef{maincls.cmd.usekomafont} +an ungünstiger Stelle verwendet. + +Nun neigen Anwender dazu, in die Schrifteinstellungen auch ganz andere, +teilweise sehr kritische Dinge zu packen, beispielsweise ein +\Macro{MakeUppercase} ganz am Ende der Einstellung. Bei der internen +Verwendung der Schrifteinstellungen wurde daher möglichst so vorgegangen, dass +viele dieser eigentlich verbotenen Einstellungen trotzdem keinen Schaden +anrichten und es meist sogar funktioniert, wenn der letzte Befehl in der +Schrifteinstellung ein Argument erwartet, also beispielsweise \Macro{textbf} +anstelle von \Macro{bfseries} verwendet wird. Eine Garantie gibt es dafür +jedoch nicht. + +In Einzelfällen war es innerhalb von \KOMAScript{} notwendig, die Umschaltung +wirklich auf Schrifteinstellungen zu beschränken. Dies erfolgt dann +beispielsweise mit +\DescRef{maincls.cmd.usefontofkomafont}\IndexCmd{usefontofkomafont}% +\IndexCmd{usesizeofkomafont}\IndexCmd{useencodingofkomafont}% +\IndexCmd{usefamilyofkomafont}\IndexCmd{useseriesofkomafont}% +\IndexCmd{useshapeofkomafont} statt \DescRef{maincls.cmd.usekomafont} (siehe +\autoref{sec:maincls.textmarkup}, +\DescPageRef{maincls.cmd.usefontofkomafont}). + +Die Anweisung \DescRef{maincls.cmd.usefontofkomafont} und ihre Geschwister +haben allerdings ihre Grenzen. Deshalb darf die vermeintliche Schrifteinstellung +eines Elements keinesfalls ein voll expandierbares Argument erwarten. Genau +das ist aber beispielsweise bei \Macro{MakeUppercase} der +Fall. Daher\ChangedAt{v3.17}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} verwaltet \KOMAScript{} eine interne Liste von Makros, die +innerhalb von \DescRef{maincls.cmd.usefontofkomafont} und ihren Geschwistern +zu \Macro{relax} werden sollen. In der Voreinstellung ist das seit +\KOMAScript~3.24\ChangedAt{v3.24}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} nur noch \Macro{normalcolor}. + +Es ist zu beachten, dass das angegebene \PName{Makro} wirklich stur auf +\Macro{relax} gesetzt wird. Irgendwelche Argumente innerhalb der +Schrifteinstellung werden also gegebenenfalls lokal ausgeführt. Daher dürfen +Anweisungen wie \Macro{setlength} keinesfalls zu dieser Liste hinzugefügt +werden. Für alle Fehler, die durch die Verwendung von +\Macro{addtokomafontrelaxlist} entstehen, ist der Anwender selbst +verantwortlich. Außerdem sollte diese Möglichkeit nicht als Legitimation dafür +missverstanden werden, den Schrifteinstellungen alle möglichen Anweisungen +hinzuzufügen! + +Für\ChangedAt{v3.24}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} Befehle, deren erstes Argument noch ohne zusätzliche +Gruppe ausgeführt werden soll, gibt es +\Macro{addtokomafontonearglist}. Das angegebene \PName{Makro} wird dabei auf +\Macro{@firstofone} gesetzt. In der Voreinstellung wird dies für +\Macro{MakeUppercase} und \Macro{MakeLowercase} verwendet. + +Soll\ChangedAt{v3.19}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} hingegen ein \PName{Makro} innerhalb von +\DescRef{maincls.cmd.usefontofkomafont} und ihren Geschwistern zusammen mit +seinem ersten Argument ignoriert werden, so ist stattdessen +\Macro{addtokomafontgobblelist} zu verwenden. Ein Beispiel dafür ist die +Anweisung \Macro{color}, die einschließlich des Namens der Farbe ignoriert +werden muss und deshalb bereits in der Voreinstellung Teil dieser Liste ist. + +Es ist zu beachten, dass sich die hier genannten Voreinstellungen in +zukünftigen Versionen ändern können. Wenn Sie bestimmte Befehle in einer der +Listen zwingend benötigen, sollten Sie diese also selbst explizit hinzufügen.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{IfExistskomafont}\Parameter{Element}\Parameter{Dann-Code}% + \Parameter{Sonst-Code} + \Macro{IfIsAliaskomafont}\Parameter{Element}\Parameter{Dann-Code}% + \Parameter{Sonst-Code} +\end{Declaration} +Da\ChangedAt{v3.15}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}\and \Class{scrlttr2}} die Schrift mancher Elemente erst ab +bestimmten Versionen von \KOMAScript{} geändert werden kann, ist es manchmal +sinnvoll, vorher testen zu können, ob ein \PName{Element} mit dieser +Möglichkeit überhaupt existiert. Die Anweisung \Macro{IfExistskomafont} führt +den \PName{Dann-Code} genau dann aus, wenn das \PName{Element} über +\DescRef{\LabelBase.cmd.newkomafont} oder +\DescRef{\LabelBase.cmd.aliaskomafont} definiert wurde und daher auch mit +\DescRef{maincls.cmd.setkomafont} oder \DescRef{maincls.cmd.addtokomafont} +geändert und mit den \Macro{use\dots komafont}-Anweisungen abgefragt werden +kann. Anderenfalls wird der \PName{Sonst-Code} ausgeführt. + +Im Unterschied dazu führt +\Macro{IfIsAliaskomafont}\ChangedAt{v3.25}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}\and \Class{scrlttr2}} den +\PName{Dann-Code} nur aus, wenn \PName{Element} über +\DescRef{\LabelBase.cmd.aliaskomafont} als Alias für ein anderes Element +definiert wurde. Sowohl für nicht definierte Elemente als auch für mit +\DescRef{\LabelBase.cmd.newkomafont} definierte Elemente wird hingegen der +\PName{Sonst-Code} ausgeführt.% +\EndIndexGroup + + +\section{Absatzmarkierung} +\seclabel{parskip} + +Nicht nur, aber insbesondere aufgrund der erweiterten Möglichkeiten der +Absatzmarkierung bei den \KOMAScript-Klassen sollte auf die direkte Änderung +der Standardlängen \Length{parskip}\IndexLength{parskip}, +\Length{parindent}\IndexLength{parskip} und +\Length{parfillskip}\IndexLength{parskip} weitgehend verzichtet werden. + +\begin{Declaration} + \Macro{setparsizes}\Parameter{Einzug}\Parameter{Abstand} + \Parameter{Endzeilenleerraum} +\end{Declaration} +\KOMAScript{} bietet mit dieser Anweisung die Möglichkeit, sowohl den +Absatzeinzug als auch den Absatzabstand und den Freiraum am Ende der letzten +Zeile des Absatzes einzustellen. Diese Anweisung ist immer dann zu verwenden, +wenn die Änderungen auch bei Einstellung +\OptionValueRef{\LabelBase}{parskip}{relative} beachtet werden +sollen. \KOMAScript{}\textnote{Beispiel} selbst verwendet sie beispielsweise +in der Form +\begin{lstcode} + \setparsizes{0pt}{0pt}{0pt plus 1fil} +\end{lstcode} +um sowohl den Einzug als auch den Abstand abzuschalten und am Ende des +Absatzes beliebigen Freiraum zu erlauben. Eine solche Maßnahme ist sinnvoll, +wenn ein Absatz nur aus einer Box besteht, die ohne Abstand nach oben oder +unten gesetzt werden soll und die gesamte Spaltenbreite einnimmt. Soll +demgegenüber die Box nur die gesamte Breite einnehmen, jedoch mit der +aktuellen Einstellung bezüglich des Absatzabstandes gesetzt werden, so ist +\begin{lstcode} + \setlength{\parfillskip}{0pt plus 1fil} +\end{lstcode} +vorzuziehen. + +Eine\ChangedAt{v3.17}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} Neuberechnung\IndexCmd{activateareas} oder Reaktivierung +der Einstellungen für den Satzspiegel und die Ränder (siehe +\autoref{cha:typearea}) führt seit \KOMAScript~3.17 übrigens immer auch zu +einer Neueinstellung der via \Macro{setparsizes} gesetzten Werte, falls die +Werte nicht zwischenzeitlich geändert wurden. Dies sollte ein Grund mehr sein, +nicht an \KOMAScript{} vorbei die Einstellungen zu ändern. Die Neuberechnung +wird bei einer Kompatibilitätseinstellung zu einer früheren Version (siehe +\autoref{sec:maincls.compatibilityOptions}, +\DescPageRef{maincls.option.version}, Option +\DescRef{maincls.option.version}% +\IndexOption{version}\important{\OptionValueRef{maincls}{version}{3.17}}) +deaktiviert.% +% +\EndIndexGroup + +\section{Zähler} +\seclabel{counter} + +Zähler sind bei \LaTeX{} eine durchaus komplexere Angelegenheit, als dies auf +den ersten Blick erscheinen mag. Das gilt insbesondere, wenn die +Referenzierung von Zählern über \Macro{refstepcounter}, \Macro{label} und +\Macro{ref} mit betrachtet wird. + +\LoadNonFree{scrbookreportarticle-experts}{3} + +\section{Gliederung} +\seclabel{sections} + +Die \KOMAScript-Klassen bieten weitreichende Möglichkeiten, um Einfluss auf +die Gliederungsebenen und die zugehörigen Überschriften zu nehmen. Selbst die +Definition neuer Ebenen ist damit möglich. + +\begin{Declaration} + \Macro{DeclareSectionCommand}\OParameter{Einstellungen}\Parameter{Name} + \Macro{DeclareNewSectionCommand}\OParameter{Einstellungen}\Parameter{Name} + \Macro{RedeclareSectionCommand}\OParameter{Einstellungen}\Parameter{Name} + \Macro{ProvideSectionCommand}\OParameter{Einstellungen}\Parameter{Name} +\end{Declaration} +Diese\ChangedAt{v3.15}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} Anweisungen dienen dazu, einen neuen Gliederungsbefehl +\Macro{\PName{Name}} zu definieren beziehungsweise einen vorhandenen +Gliederungsbefehl \Macro{\PName{Name}} zu verändern. Dazu werden über das +optionale Argument \PName{Einstellungen} vorgenommen. Die +\PName{Einstellungen} sind dabei eine durch Komma separierte Liste von +\PName{Schlüssel}=\PName{Wert}-Zuweisungen. Neben den vom Stil der Überschrift +unabhängigen Eigenschaften, die +\autoref{tab:maincls-experts.declaresection.keys}, +\autopageref{tab:maincls-experts.declaresection.keys} zu entnehmen sind, gibt +es auch Eigenschaften, die vom jeweiligen Stil abhängig sind. Derzeit stehen +die folgenden Stile zur Verfügung: +\begin{description}\setkomafont{descriptionlabel}{} +\item[\PValue{part}] \ChangedAt{v3.18}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}}ist der + Stil\textnote{Gliederungsstil + \PValue{part}}\Index{Gliederung>Stil>~\PValue{part}} für + Teileüberschriften. Dieser Stil wird in der Voreinstellung für + \DescRef{maincls.cmd.part}\IndexCmd{part} und indirekt für + \DescRef{maincls.cmd.addpart}\IndexCmd{addpart} verwendet. Neue + Überschriften in diesem Stil können definiert werden, haben dann aber nicht + automatisch auch eine \Macro{add\dots}-Variante. Für die Konfiguration der + vorhandenen oder neuer Überschriften stehen zusätzlich die Eigenschaften aus + \autoref{tab:maincls-experts.declarepartstyle.keys}, + \autopageref{tab:maincls-experts.declarepartstyle.keys} zur + Verfügung. Die\textnote{Achtung!} Anweisung \DescRef{maincls.cmd.addpart} + wird ebenso wie die Sternformen automatisch zusammen mit + \DescRef{maincls.cmd.part} umkonfiguriert und kann nicht unabhängig davon + verändert werden. +\item[\PValue{chapter}] \ChangedAt{v3.18}{\Class{scrbook}\and + \Class{scrreprt}}ist der Stil\textnote{Gliederungsstil + \PValue{chapter}}\Index{Gliederung>Stil>~\PValue{chapter}} für + Kapitelüberschriften. Dieser Stil wird in der Voreinstellung für + \DescRef{maincls.cmd.chapter}\IndexCmd{chapter} und indirekt für + \DescRef{maincls.cmd.addchap}\IndexCmd{addchap} verwendet. Neue + Überschriften in diesem Stil können definiert werden, haben dann aber nicht + automatisch auch eine \Macro{add\dots}-Variante. Für die Konfiguration der + vorhandenen oder neuer Überschriften stehen zusätzlich die Eigenschaften aus + \autoref{tab:maincls-experts.declarechapterstyle.keys}, + \autopageref{tab:maincls-experts.declarechapterstyle.keys} zur + Verfügung. Die\textnote{Achtung!} Anweisung \DescRef{maincls.cmd.addchap} + wird ebenso wie die Sternformen automatisch zusammen mit + \DescRef{maincls.cmd.chapter} umkonfiguriert und kann nicht unabhängig davon + verändert werden. Es ist zu beachten, dass dieser Stil von + \Class{scrartcl}\OnlyAt{\Class{scrbook}\and \Class{scrreprt}} nicht + bereitgestellt wird. +\item[\PValue{section}] ist der Stil\textnote{Gliederungsstil + \PValue{section}}\Index{Gliederung>Stil>~\PValue{section}} für + Abschnittsüberschriften und tieferer Ebenen. Dieser Stil wird derzeit sowohl + für \DescRef{maincls.cmd.section}\IndexCmd{section}, + \DescRef{maincls.cmd.subsection}\IndexCmd{subsection}, + \DescRef{maincls.cmd.subsubsection}\IndexCmd{subsubsection} als auch + \DescRef{maincls.cmd.paragraph}\IndexCmd{paragraph} und + \DescRef{maincls.cmd.subparagraph}\IndexCmd{subparagraph} verwendet. Neue + Überschriften in diesem Stil können definiert werden. Für die Konfiguration + der vorhandenen oder neuer Überschriften stehen zusätzlich die Eigenschaften + aus \autoref{tab:maincls-experts.declaresectionstyle.keys}, + \autopageref{tab:maincls-experts.declaresectionstyle.keys} zur + Verfügung. Bei\ChangedAt{v3.24}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} der Neudefinition sind die \PName{Schlüssel} + \PValue{style}, \PValue{afterskip}, \PValue{beforeskip} und \PValue{level} + zwingend. Die \PName{Schlüssel} + \PValue{afterindent}\ChangedAt{v3.26}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}}, \PValue{font}, \PValue{indent} und + \PValue{runin} sind empfohlen. \PValue{tocindent} und \PValue{tocnumwidth} + können abhängig vom Namen der Gliederungsebene ebenfalls zwingend sein. Das + gilt auch, falls ein Befehl, der bisher kein Gliederungsbefehl war, mit + \Macro{RedeclareSectionCommand} zu einem Gliederungsbefehl umdefiniert + wird. Die\textnote{Achtung!} Anweisung \Macro{addsec} wird ebenso wie die + Sternformen zusammen mit \DescRef{maincls.cmd.section} umkonfiguriert und + kann nicht unabhängig davon verändert werden. +\end{description} + +\BeginIndexGroup% +\BeginIndex{FontElement}{\PName{Gliederungsebene}}% +\BeginIndex{FontElement}{\PName{Gliederungsebene}prefix}% +Bei der Definition eines Gliederungsbefehls wird ein gleichnamiges +Element\textnote{Elemente}% +\Index{Element=\UseIndex {gen}\protect\GuideFontElement} % Getrickst! +angelegt, falls es noch nicht existiert. Bei \PValue{chapter} und +\PValue{part} werden ebenso Elemente für die Präfixzeile erzeugt. Die +Schrifteinstellung der Elemente kann mit \DescRef{maincls.cmd.setkomafont} und +\DescRef{maincls.cmd.addtokomafont} (siehe \autoref{sec:maincls.textmarkup}, +\DescPageRef{maincls.cmd.setkomafont}) geändert werden.% +\EndIndexGroup + +\begin{table} + \caption[{Stil unabhängige Eigenschaften bei der Konfiguration von + Gliederungsbefehlen}]% + {Mögliche vom Stil der Überschrift unabhängige + \PName{Schlüssel} und \PName{Werte} für die \PName{Eigenschaften} bei der + Konfiguration von Gliederungsbefehlen}% + \label{tab:maincls-experts.declaresection.keys}% + \begin{tabularx}{\linewidth}{llX} + \toprule + \PName{Schlüssel} + & \PName{Wert} + & Bedeutung \\ + \midrule + \PValue{counterwithin} + & \PName{Zählername} + & Der zur Gliederungsebene gehörende Zähler soll vom als Wert angegebenen + Zähler abhängig sein. Wird \PName{Zählername} über \Macro{stepcounter} + oder \Macro{refstepcounter} erhöht, so wird der zur Gliederungsebene + gehörende Zähler auf 0 zurückgesetzt. Darüber hinaus wird + \Macro{the\PName{Zählername}}, gefolgt von einem Punkt in der Ausgabe + des zur Gliederungsebene gehörenden Zählers vorangestellt.\\ + \PValue{counterwithout}% + \ChangedAt{v3.19}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + & \PName{Zählername} + & Hebt eine früher vorgenommene \PValue{counterwithin}-Einstellung auf und + ist daher nur bei Änderung vorhandener Gliederungsbefehle sinnvoll.\\ + \PValue{expandtopt} + & \PName{Schalter} + & Ist dieser Schalter aktiv, so werden alle in den \PName{Einstellungen} + nachfolgend angegebenen Werte für Längen vollständig expandiert, + ausgewertet und in \texttt{pt} umgerechnet gespeichert. Ist der + Schalter nicht aktiv, so werden alle nachfolgend angegebenen + Werte für Längen nur testweise expandiert und ausgewertet, aber + lediglich expandiert gespeichert. Es werden die Werte für einfache + Schalter aus \autoref{tab:truefalseswitch}, + \autopageref{tab:truefalseswitch} verstanden.\\ + \PValue{level} + & \PName{Ganzzahl} + & Numerischer Wert der Gliederungsebene (siehe Zähler + \DescRef{maincls.counter.secnumdepth}, \autoref{sec:maincls.structure}, + \DescPageRef{maincls.counter.secnumdepth}); der Wert sollte eindeutig + sein und ist für neue Ebenen zwingend.\\ + \PValue{style} + & \PName{Name} + & Legt den Stil der Überschrift fest und ist für neue Ebenen zwingend.\\ + \PValue{tocstyle}% + \ChangedAt{v3.20}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + & \PName{Name} + & Legt den Stil des zur Überschrift gehörenden Verzeichniseintrags fest. + Es können alle bisher definierten Verzeichniseintragsstile (siehe + \autoref{sec:tocbasic.tocstyle}) verwendet werden. Ein leerer + \PName{Name} verhindert die Umdefinierung des Befehls + \Macro{l@\dots} für die Verzeichniseinträge.\\ + \PValue{toc\PName{Option}}% + \ChangedAt{v3.20}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + & \PName{Wert} + & Weitere Optionen in Abhängigkeit vom via \Option{tocstyle} gewählten + Verzeichniseintragsstil. Siehe dazu \autoref{sec:tocbasic.tocstyle} ab + \autopageref{sec:tocbasic.tocstyle}. Für die von + \hyperref[cha:tocbasic]{\Package{tocbasic}} vordefinierten + Verzeichniseintragsstile finden sich die als \PName{Option} verwendbaren + Attribute in \autoref{tab:tocbasic.tocstyle.attributes}, ab + \autopageref{tab:tocbasic.tocstyle.attributes}.\\ + % \PValue{tocindent} + % & \PName{Länge} + % & Der horizontale Einzug des zum Gliederungsbefehls gehörenden + % Eintrags ins Inhaltsverzeichnis, falls ein solcher abhängig von + % \DescRef{maincls.counter.tocdepth} (siehe \autoref{sec:maincls.toc}, + % \DescPageRef{maincls.counter.tocdepth}) erzeugt wird.\\ + % \PValue{toclevel} + % & \PName{Ganzzahl} + % & Die Ebene des zum Gliederungsbefehl gehörenden Eintrags ins + % Inhaltsverzeichnis, falls diese von \PValue{level} abweichen soll + % (siehe auch \DescRef{maincls.counter.tocdepth} in + % \autoref{sec:maincls.toc}, \DescPageRef{maincls.counter.tocdepth}). \\ + % PValue{tocnumwidth} + % & \PName{Länge} + % & Die Breite, die für die Gliederungsnummer im zum Gliederungsbefehl + % gehörenden Eintrag ins Inhaltsverzeichnis reserviert wird.\\ + \bottomrule + \end{tabularx} +\end{table} + +\begin{table} + \caption[{Eigenschaften des Stils \PValue{part} bei der Konfiguration von + Gliederungsbefehlen}]{Zusätzliche \PName{Schlüssel} und \PName{Werte} für + die \PName{Eigenschaften} bei der Konfiguration von Gliederungsbefehlen des + Stils \PValue{part}\Index{Gliederung>Stil>~\PValue{part}}}% + \label{tab:maincls-experts.declarepartstyle.keys}% + \begin{tabularx}{\linewidth}{llX} + \toprule + \PName{Schlüssel} + & \PName{Wert} + & Bedeutung \\ + \midrule + \PValue{afterindent}% + \ChangedAt{v3.26}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + & \PName{Schalter} + & Es wird bestimmt, ob auf die erste Zeile nach der + Überschrift der aktuelle Absatzeinzug angewendet + wird. Bei der Einstellung \PValue{bysign} bestimmt das Vorzeichen von + \PValue{beforeskip} das Verhalten. Ein negativer Wert für + \PValue{beforeskip} bewirkt dann, dass der Absatzeinzug entfällt. Mit + den Werten für einfache Schalter (siehe \autoref{tab:truefalseswitch}, + \autopageref{tab:truefalseswitch}) kann die Anwendung des aktuellen + Absatzeinzugs explizit aktiviert oder deaktiviert werden. Aus + Kompatibilitätsgründen ist die Voreinstellung + für \Class{scrartcl} \PValue{false}, für \Class{scrbook} und + \Class{scrreprt} \PValue{true}.\\ + \PValue{afterskip} + & \PName{Länge} + & Der Betrag gibt den vertikalen Abstand nach der Überschrift an.\\ + \PValue{beforeskip} + & \PName{Länge} + & Gibt den vertikalen Abstand vor der Überschrift an. Ist + \OptionValue{afterindent}{bysign}, so wird für den Abstand der Betrag + von \PName{Länge} verwendet. Es wird also trotzdem ein positiver + Abstand eingefügt. Negative Werte bedeuten in diesem Fall, dass ein + Absatzeinzug nach der Überschrift entfällt.\\ + \PValue{font} + & \PName{Befehle} + & Die Schrifteinstellungen, die zusätzlich zum Element + \DescRef{maincls.fontelement.disposition} bei der Ausgabe des + Textes der Überschrift verwendet werden sollen. Hier sind alle + \PName{Befehle} erlaubt, die auch über \DescRef{maincls.cmd.setkomafont} + und \DescRef{maincls.cmd.addtokomafont} für das Element des + Gliederungsbefehls erlaubt sind.\\ + \PValue{innerskip} + & \PName{Länge} + & %\OnlyAt{\Class{scrbook}\and \Class{scrreprt}}% + Der vertikale Abstand zwischen Präfixzeile und Text der Überschrift bei + \Class{scrbook} und \Class{scrreprt}.\\ + \PValue{pagestyle} + & \PName{Seitenstil} + & %\OnlyAt{\Class{scrbook}\and \Class{scrreprt}}% + Der Name des Seitenstils, der für die Seite mit der Überschrift + verwendet werden soll. Es findet keine Überprüfung statt, ob der + angegebene \PName{Seitenstil} gültig ist. Fehlerhafte Angaben führen + daher zu Fehlermeldungen bei Verwendung des Gliederungsbefehls. Diese + Möglichkeit existiert nur bei \Class{scrbook} und \Class{scrreprt}. \\ + \PValue{prefixfont} + & \PName{Befehle} + & Die Schrifteinstellungen, die zusätzlich zum Element + \DescRef{maincls.fontelement.disposition} ab der Ausgabe einer + Präfixzeile oder Nummer in der Überschrift verwendet werden sollen. Hier + sind alle \PName{Befehle} erlaubt, die + auch über \DescRef{maincls.cmd.setkomafont} und + \DescRef{maincls.cmd.addtokomafont} für das Element der Präfixzeile des + Gliederungsbefehls erlaubt sind.\\ + \bottomrule + \end{tabularx} +\end{table} + +\begin{table} + \caption[{Eigenschaften des Stils \PValue{chapter} bei der Konfiguration von + Gliederungsbefehlen}]{Zusätzliche \PName{Schlüssel} und \PName{Werte} für + die \PName{Eigenschaften} bei der Konfiguration von Gliederungsbefehlen des + Stils \PValue{chapter}\Index{Gliederung>Stil>~\PValue{chapter}}}% + \label{tab:maincls-experts.declarechapterstyle.keys}% + \begin{tabularx}{\linewidth}{llX} + \toprule + \PName{Schlüssel} & \PName{Wert} & Bedeutung \\ + \midrule + \PValue{afterindent}% + \ChangedAt{v3.26}{\Class{scrbook}\and \Class{scrreprt}}% + & \PName{Schalter} + & Es wird bestimmt, ob auf die erste Zeile nach der Überschrift der + aktuelle Absatzeinzug angewendet wird. Bei der Voreinstellung + \PValue{bysign} bestimmt das Vorzeichen von \PValue{beforeskip} das + Verhalten. Ein negativer Wert für \PValue{beforeskip} bewirkt dann, dass + der Absatzeinzug entfällt. Mit den Werten für einfache Schalter (siehe + \autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch}) kann + die Anwendung des aktuellen Absatzeinzugs explizit aktiviert oder + deaktiviert werden.\\ + \PValue{afterskip}% + \ChangedAt{v3.26}{\Class{scrbook}\and \Class{scrreprt}}% + & \PName{Länge} + & Gibt den vertikalen Abstand nach der Überschrift an.\\ + \PValue{beforeskip} + & \PName{Länge} + & Gibt den vertikalen Abstand vor der Überschrift an. Ist + \OptionValue{afterindent}{bysign}, so wird für den Abstand der Betrag + von \PName{Länge} verwendet. Es wird also trotzdem ein positiver + Abstand eingefügt. Negative Werte bedeuten in diesem Fall, dass ein + Absatzeinzug nach der Überschrift entfällt.\\ + \PValue{font} + & \PName{Befehle} + & Die Schrifteinstellungen, die zusätzlich zum Element + \DescRef{maincls.fontelement.disposition} bei der Ausgabe der + Überschrift verwendet werden sollen. Hier sind alle \PName{Befehle} + erlaubt, die auch über \DescRef{maincls.cmd.setkomafont} und + \DescRef{maincls.cmd.addtokomafont} für das Element des + Gliederungsbefehls erlaubt sind.\\ + \PValue{innerskip} + & \PName{Länge} + & Der vertikale Abstand zwischen Präfixzeile und Text der + Überschrift, falls eine Präfixzeile verwendet wird.\\ + \PValue{pagestyle} + & \PName{Seitenstil} + & Der Name des Seitenstils, der für die Seite mit der Überschrift + verwendet werden soll. Es findet keine Überprüfung statt, ob der + angegebene \PName{Seitenstil} gültig ist. Fehlerhafte Angaben führen + daher zu Fehlermeldungen bei Verwendung des Gliederungsbefehls.\\ + \PValue{prefixfont} + & \PName{Befehle} + & Die Schrifteinstellungen, die zusätzlich zum Element + \DescRef{maincls.fontelement.disposition} und dem Element des + Gliederungsbefehls bei der Ausgabe einer Präfixzeile in der Überschrift + verwendet werden sollen. Hier sind alle \PName{Befehle} erlaubt, die + auch über \DescRef{maincls.cmd.setkomafont} und + \DescRef{maincls.cmd.addtokomafont}für das Element der Präfixzeile des + Gliederungsbefehls erlaubt sind.\\ + \bottomrule + \end{tabularx} +\end{table} + +\begin{table} + \caption[{Eigenschaften des Stils \PValue{section} bei der Konfiguration von + Gliederungsbefehlen}]{Zusätzliche \PName{Schlüssel} und \PName{Werte} für + die \PName{Eigenschaften} bei der Konfiguration von Gliederungsbefehlen des + Stils \PValue{section}\Index{Gliederung>Stil>~\PValue{section}}}% + \label{tab:maincls-experts.declaresectionstyle.keys}% + \begin{tabularx}{\linewidth}{llX} + \toprule + \PName{Schlüssel} & \PName{Wert} & Bedeutung \\ + \midrule + \PValue{afterindent}% + \ChangedAt{v3.26}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + & \PName{Schalter} + & Es wird bestimmt, ob auf die erste Zeile nach einer frei stehenden + Überschrift (siehe \PValue{runin}) der aktuelle Absatzeinzug angewendet + wird. Bei der Voreinstellung \PValue{bysign} bestimmt das Vorzeichen von + \PValue{beforeskip} das Verhalten. Ein negativer Wert für + \PValue{beforeskip} bewirkt dann, dass der Absatzeinzug entfällt. Mit + den Werten für einfache Schalter (siehe \autoref{tab:truefalseswitch}, + \autopageref{tab:truefalseswitch}) kann die Anwendung des aktuellen + Absatzeinzugs explizit aktiviert oder deaktiviert werden.\\ + \PValue{afterskip} + & \PName{Länge} + & Im Fall einer Spitzmarke (siehe \PValue{runin}) ist der Betrag der + \PName{Länge} der horizontale Abstand nach der Überschrift. Es + wird in diesem Fall also immer ein positiver Abstand eingefügt. Im Fall + einer frei stehenden Überschrift ist \PName{Länge} der vertikale Abstand + nach der Überschrift. Ist \OptionValue{runin}{bysign}, so + führt ein positiver Wert zu einer frei stehenden Überschrift, während + ein negativer Wert oder Null zu einer Spitzmarke führt.\\ + \PValue{beforeskip} + & \PName{Länge} + & Gibt den vertikalen Abstand vor der Überschrift an. Ist + \OptionValue{afterindent}{bysign}, so wird für den Abstand der Betrag + von \PName{Länge} verwendet. Es wird also trotzdem ein positiver + Abstand eingefügt. Negative Werte bedeuten in diesem Fall, dass ein + Absatzeinzug nach der Überschrift entfällt.\\ + \PValue{font} + & \PName{Befehle} + & Die Schrifteinstellungen, die zusätzlich zum Element + \DescRef{maincls.fontelement.disposition} bei der Ausgabe der + Überschrift verwendet werden sollen. Hier sind alle \PName{Befehle} + erlaubt, die auch über \DescRef{maincls.cmd.setkomafont} und + \DescRef{maincls.cmd.addtokomafont} für das Element des + Gliederungsbefehls erlaubt sind.\\ + \PValue{indent} + & \PName{Länge} + & Einzug vom linken Rand vor der Ausgabe der Nummer und des Textes + der Überschrift.\\ + \PValue{runin}% + \ChangedAt{v3.26}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}}% + & \PName{Schalter} + & Es wird bestimmt, ob die Überschrift als Spitzmarke\iffree{ (am + Zeilenanfang)}{} oder frei stehend gesetzt wird. \iffree{}{Bei einer + Spitzmarke schließt sich der nachfolgende Text direkt an die + Überschrift an, während bei einer frei stehenden Überschrift erst noch + ein Absatz und ein vertikaler Abstand (siehe \PValue{afterskip}) + folgen. }% + Bei der Voreinstellung \PValue{bysign} bestimmt das Vorzeichen von + \PValue{afterskip} das Verhalten. Ein positiver Wert für + \PValue{afterskip} bewirkt dann eine frei stehende Überschrift. + Darüber hinaus kann mit den Werten für einfache Schalter (siehe + \autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch}) + eine Spitzmarke explizit aktiviert oder deaktiviert werden.\\ + \bottomrule + \end{tabularx} +\end{table} + +\Macro{DeclareNewSectionCommand}\textnote{Neudefinition} dient der Definition +eines neuen Gliederungsbefehls. Ist derselbe \PName{Name} von \TeX{} bereits +anderweitig belegt, so wird ein Fehler ausgegeben und es findet keine +Umdefinierung statt. + +\Macro{ProvideSectionCommand}\textnote{bedingte Definition} verhält sich +ähnlich, gibt aber keine Fehlermeldung aus, wenn der Gliederungsbefehl bereits +existiert. Es findet dann nur keine Umdefinierung statt. + +\Macro{RedeclareSectionCommand}\textnote{Änderung} kann hingegen nur verwendet +werden, um eine existierende Anweisung zu einem Gliederungsbefehl mit den +angegebenen \PName{Eigenschaften} zu ändern. Dabei wird nicht überprüft, ob +\Macro{\PName{Name}} bereits zuvor ein Gliederungsbefehl war. Es muss nur ein +von \TeX{} bereits belegter \PName{Name} sein. + +Bei \Macro{DeclareSectionCommand}\textnote{unbedingte Definition} findet +keinerlei Überprüfung statt, ob \PName{Name} von \TeX{} bereits anderweitig +belegt ist. Stattdessen wird der Gliederungsbefehl \Macro{\PName{Name}} +unbedingt entsprechend der angegebenen \PName{Eigenschaften} definiert. + +Zu jeder Gliederungsanweisung gehört außerdem ein Zähler: \PName{Name}, der +bei Bedarf von allen vier Befehlen mit \Macro{newcounter} neu angelegt +wird. Dasselbe gilt für die Ausgabe des Zählers: \Macro{the\PName{Name}}, die +Formatierung des Zählers: \Macro{\PName{Name}format}, die Anweisung zur +Erstellung eines Kolumnentitels: \Macro{\PName{Name}mark}, die dabei +verwendete Formatierung des Zählers: \Macro{\PName{Name}markformat}, die oben +erwähnten Elemente: \FontElement{\PName{Name}} und gegebenenfalls +\FontElement{\PName{Name}prefix}, die numerische Gliederungsebene: +\Macro{\PName{Name}numdepth}. Die Anweisung \Macro{\PName{Name}mark} wird +gegebenenfalls so vordefiniert, dass kein Kolumnentitel erzeugt wird. Die +Ausgabe des Zählers, \Macro{the\PName{Name}}, wird als arabische Zahl +vordefiniert. Wird über den \PName{Schlüssel} \PValue{counterwithin} der +Zähler als von einem anderen Zähler abhängig definiert, so wird in der Ausgabe +dieser andere Zähler mit einem Punkt getrennt vorangestellt. + +Neben\ChangedAt[2016/03]{v3.20}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} dem Gliederungsbefehl selbst wird auch ein Befehl für +einen Eintrag ins Inhaltsverzeichnis definiert. Dafür wird auf das Paket +\hyperref[cha:tocbasic]{\Package{tocbasic}}% +\important{\hyperref[cha:tocbasic]{\Package{tocbasic}}}\IndexPackage{tocbasic} +zurückgegriffen. Der Stil des Verzeichniseintrags wird über die Eigenschaft +\PValue{tocstyle} festgelegt. Wird hier mit \OptionValue{tocstyle}{} oder +\OptionValue{tocstyle}{\{\}} ein leerer \PName{Name} angegeben, so erfolgt +keine Umdefinierung des Befehls für den Verzeichniseintrag. Das ist +beispielsweise dann wichtig, wenn Sie ein zusätzliches Paket zur Modifikation +des Inhaltsverzeichnisses verwenden. Fehlt die Eigenschaft \PValue{tocstyle}, +so wird bei der Umdefinierung der bisherige Stil erneut verwendet. + +Unterschiedliche\ChangedAt[2016/03]{v3.20}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}} Stile für Verzeichniseinträge haben +unterschiedliche zusätzliche Eigenschaften. Diese können, mit dem Präfix +\PValue{toc} versehen, direkt mit angegeben werden. So kann beispielsweise die +Ebene des Verzeichniseintrags, die bei allen von den \KOMAScript-Klassen und +\hyperref[cha:tocbasic]{\Package{tocbasic}} definierten Stilen als Eigenschaft +\PValue{level} bekannt ist, mit \PValue{toclevel} gesetzt werden, der Einzug +des Eintrags, \PValue{indent}, über \PValue{tocindent} und die für die Nummer +reservierte Breite, \PValue{numwidth}, mit \PValue{tocnumwidth}. Für weitere +Eigenschaften der Verzeichniseinträge siehe \autoref{sec:tocbasic.tocstyle} ab +Seite \autopageref{sec:tocbasic.tocstyle}. + +\begin{Example} + Aus unerfindlichen Gründen sollen die Überschriften von + \DescRef{maincls.cmd.paragraph} nicht mehr als Spitzmarken, sondern als + Überschriften ähnlich \DescRef{maincls.cmd.subsubsection} umdefiniert + werden. Dabei soll über der Überschrift ein kleiner Abstand von 10\,pt und + unter der Überschrift kein zusätzlicher Abstand eingefügt werden. Das wäre + bereits mit +\begin{lstcode} + \RedeclareSectionCommand[% + beforeskip=-10pt,% + afterskip=1sp% + ]{paragraph} +\end{lstcode} + möglich. Durch den negativen Wert bei \PValue{beforeskip} wird der vertikale + Abstand über der Überschrift erzeugt und gleichzeitig der Einzug des ersten + Abschnitts nach der Überschrift abgeschaltet. Obwohl eigentlich nach der + Überschrift kein vertikaler Abstand gewünscht wird, wurde als Wert hier + 1\,sp angegeben. Der Grund ist einfach: Einen Wert von 0\,pt betrachtet + \TeX{} nicht als positiven Wert und \Macro{RedeclareSectionCommand} erzeugt + damit unter Berücksichtigung der Voreinstellung \OptionValue{runin}{bysign} + eine Überschrift in Form einer Spitzmarke. Der kleinste positive Wert + ist 1\,sp. Natürlich könnte man stattdessen auch explizit die Verwendung von + Spitzmarken aktivieren und dann wirklich einen Wert von 0\,pt einstellen: +\begin{lstcode} + \RedeclareSectionCommand[% + beforeskip=-10pt,% + runin=true,% + afterskip=0pt% + ]{paragraph} +\end{lstcode} + + In der Regel ist es für den vertikalen Ausgleich (siehe + \DescRef{maincls.cmd.flushbottom}, \autoref{sec:maincls.typearea}, + \DescPageRef{maincls.cmd.flushbottom}) besser, wenn man die Abstände + mit etwas Spielraum, dem sogenannten Leim, versieht: +\begin{lstcode} + \RedeclareSectionCommand[% + beforeskip=-10pt plus -2pt minus -1pt,% + runin=true,% + afterskip=0pt% + ]{paragraph} +\end{lstcode} + Dabei ist zu beachten, dass natürlich auch der Leim bei der Anwendung als + vertikaler Abstand das Vorzeichen wechselt, also bei \PValue{beforeskip} im + Beispiel negativ angegeben wird. Auch diese Überlegung kann man sich jedoch + sparen, indem man den Erstzeileneinzug nach der Überschrift nicht über das + Vorzeichen von \Option{beforeskip} steuert, sondern über + \Option{afterindent}: +\begin{lstcode} + \RedeclareSectionCommand[% + afterindent=false,% + beforeskip=10pt plus 2pt minus 1pt,% + runin=true,% + afterskip=0pt% + ]{paragraph} +\end{lstcode} +\end{Example} + +Dass im Beispiel nur die Schlüssel verwendet werden mussten, deren Einstellung +geändert werden soll, liegt daran, dass seit \KOMAScript{} 3.15 +\DescRef{maincls.cmd.paragraph} intern bereits mit +\Macro{DeclareSectionCommand} definiert wird. Alle anderen Einstellungen +aus der Originaldefinition bleiben so enthalten. Bei +\Class{scrartcl}\OnlyAt{scrartcl} entspräche dies der Definition: +\begin{lstcode} + \DeclareSectionCommand[% + level=4, + indent=0pt, + afterindent=bysign, + runin=bysign, + beforeskip=3.25ex plus 1ex minus .2ex, + afterskip=-1em, + font={}, + tocindent=7em, + tocnumwidth=4.1em, + counterwithin=subsubsection + ]{paragraph} +\end{lstcode} + +% Umbruchkorrektur: Tabelle verschoben +\begin{table} + %\centering + \KOMAoptions{captions=topbeside}% + \setcapindent{0pt}% + % \caption + \begin{captionbeside} + [{Voreinstellungen für die Kapitelüberschriften von \Class{scrbook} + und \Class{scrreprt} in Abhängigkeit von Option + \DescRef{maincls.option.headings}}] + {\hskip 0pt plus .5em + Voreinstellungen für die Kapitelüberschriften von \Class{scrbook} + und \Class{scrreprt} in Abhängigkeit von Option + \DescRef{maincls.option.headings}% + \label{tab:maincls.chapter.skips}} + [l] + \begin{tabular}[t]{ll} + \multicolumn{2}{@{}l}{\bfseries Mit \OptionValueRef{maincls}{headings}{big}:}\\ + \toprule + Einstellung & voreingestellter Wert \\ + \midrule + \PValue{afterskip} + & \PValue{1.725\Length{baselineskip} plus .115\Length{baselineskip}} \\ + & \PValue{\phantom{1.725\Length{baselineskip}} + minus .192\Length{baselineskip}} \\ + \PValue{beforeskip} + & \PValue{-3.3\Length{baselineskip}-\Length{parskip}} \\ + \PValue{font} & \Macro{huge} \\ + \bottomrule\\ + \multicolumn{2}{@{}l}{\bfseries Mit \OptionValueRef{maincls}{headings}{normal}:}\\ + \toprule + Einstellung & voreingestellter Wert \\ + \midrule + \PValue{afterskip} + & \PValue{1.5\Length{baselineskip} plus .1\Length{baselineskip}} \\ + & \PValue{\phantom{1.5\Length{baselineskip}} + minus .167\Length{baselineskip}} \\ + \PValue{beforeskip} + & \PValue{-3\Length{baselineskip}-\Length{parskip}} \\ + \PValue{font} & \Macro{LARGE} \\ + \bottomrule\\ + \multicolumn{2}{@{}l}{\bfseries Mit \OptionValueRef{maincls}{headings}{small}:}\\ + \toprule + Einstellung & voreingestellter Wert \\ + \midrule + \PValue{afterskip} + & \PValue{1.35\Length{baselineskip} plus .09\Length{baselineskip}} \\ + & \PValue{\phantom{1.35\Length{baselineskip}} + minus .15\Length{baselineskip}} \\ + \PValue{beforeskip} + & \PValue{-2.8\Length{baselineskip}-\Length{parskip}} \\ + \PValue{font} & \Macro{Large} \\ + \bottomrule + \end{tabular} + \end{captionbeside} +\end{table} + +Die Werte für \Class{scrreprt} und \Class{scrbook}\OnlyAt{\Class{scrbook}\and + \Class{scrreprt}} weichen teilweise ab. Für \DescRef{maincls.cmd.chapter} +sind einige Einstellungen für die Überschriften von Option +\DescRef{maincls.option.headings} (siehe \autoref{sec:maincls.structure}, +\DescPageRef{maincls.option.headings}) abhängig. Diese abhängigen +Einstellungen sind in \autoref{tab:maincls.chapter.skips} zu finden. Eine +Übersicht über alle Voreinstellungen bietet +\autoref{tab:maincls.section.defaults}. Es ist zu beachten, dass dabei +\PValue{1ex} und \Length{baselineskip} von der voreingestellten Größe der +Überschrift beziehungsweise des Inhaltsverzeichniseintrags abhängig +sind. Weitere Voreinstellungen\ChangedAt[2016/03]{v3.20}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}} für die Stile der Verzeichniseinträge +sind \autoref{sec:tocbasic.tocstyle}% +\important{\hyperref[cha:tocbasic]{\Package{tocbasic}}} ab +\autopageref{sec:tocbasic.tocstyle} zu entnehmen. + +Das in den Einstellungen für \DescRef{maincls.cmd.subparagraph} verwendete +interne Makro \Macro{scr@parindent} ist übrigens, der per Option +\DescRef{maincls.option.parskip} oder Befehl +\DescRef{maincls-experts.cmd.setparsizes} eingestellte Absatzeinzug.% +% Umbruchkorrektur: longtable verschoben +% begin{table} +% \centering + \begin{longtable}{@{}p{\columnwidth}@{}} + \caption{Voreinstellungen für die Formatierung der Überschriften von + \Class{scrbook} und \Class{scrreprt}}% + \label{tab:maincls.section.defaults}\\ + \endfirsthead + \caption[]{Voreinstellungen für die Formatierung der Überschriften von + \Class{scrbook} und + \Class{scrreprt} \emph{(Fortsetzung)}}\\ + \addlinespace[-\normalbaselineskip] \endhead + \raggedleft\dots\\ + \endfoot \endlastfoot + \DescRef{maincls.cmd.part}: \\* + \begin{tabularx}{\linewidth}{ll} + \toprule + Einstellung & voreingestellter Wert \\ + \midrule + \PValue{afterskip} & \PValue{0pt plus 1fil} \\ + \PValue{beforeskip} & \PValue{0pt plus 1fil + \Length{baselineskip}} \\ + \PValue{font} & siehe \DescRef{maincls.fontelement.part}, + \autoref{tab:maincls.structureElementsFont}, + \autopageref{tab:maincls.structureElementsFont} \\ + \PValue{innerskip} & \PValue{20pt} \\ + \PValue{level} & -1 \\ + \PValue{prefixfont} & siehe + \DescRef{maincls.fontelement.partnumber}, + \autoref{tab:maincls.structureElementsFont}, + \autopageref{tab:maincls.structureElementsFont} \\ + \PValue{tocindent} & \PValue{0pt} \\ + \PValue{toclevel} & -1 \\ + \PValue{tocnumwidth} & \PValue{2em} \\ + \PValue{tocstyle} & \PValue{part} \\ + \bottomrule + \end{tabularx} \\ + \addlinespace[\normalbaselineskip] + \DescRef{maincls.cmd.chapter}: \\* + \begin{tabularx}{\linewidth}{ll} + \toprule + Einstellung & voreingestellter Wert \\ + \midrule + \PValue{afterskip} & siehe \autoref{tab:maincls.chapter.skips} \\ + \PValue{beforeskip} & siehe \autoref{tab:maincls.chapter.skips} \\ + \PValue{font} & siehe \DescRef{maincls.fontelement.chapter}, + \autoref{tab:maincls.structureElementsFont}, + \autopageref{tab:maincls.structureElementsFont} \\ + \PValue{innerskip} & \PValue{0.5\Length{baselineskip}} \\ + \PValue{level} & 0 \\ + \PValue{prefixfont} & siehe + \DescRef{maincls.fontelement.chapterprefix}, + \autoref{tab:maincls.structureElementsFont}, + \autopageref{tab:maincls.structureElementsFont} \\ + \PValue{tocindent} & \PValue{0pt} \\ + \PValue{toclevel} & 0 \\ + \PValue{tocnumwidth} & \PValue{1.5em} \\ + \PValue{tocstyle} & \PValue{chapter} \\ + \bottomrule + \end{tabularx} \\ + \addlinespace[\normalbaselineskip] + \DescRef{maincls.cmd.section}: \\* + \begin{tabularx}{\linewidth}{ll} + \toprule + Einstellung & voreingestellter Wert \\ + \midrule + \PValue{afterskip} & \PValue{2.3ex plus .2ex} \\ + \PValue{beforeskip} & \PValue{-3.5ex plus -1ex minus -.2ex} \\ + \PValue{font} & siehe \DescRef{maincls.fontelement.section}, + \autoref{tab:maincls.structureElementsFont}, + \autopageref{tab:maincls.structureElementsFont} \\ + \PValue{indent} & \PValue{0pt} \\ + \PValue{level} & 1 \\ + \PValue{tocindent} & \PValue{1.5em}\\ + \PValue{toclevel} & 1 \\ + \PValue{tocnumwidth} & \PValue{2.3em}\\ + \PValue{tocstyle} & \PValue{section} \\ + \bottomrule + \end{tabularx} \\ + \addlinespace[\normalbaselineskip] + \DescRef{maincls.cmd.subsection}: \\* + \begin{tabularx}{\linewidth}{ll} + \toprule + Einstellung & voreingestellter Wert \\ + \midrule\nopagebreak + \PValue{afterskip} & \PValue{1.5ex plus .2ex} \\ + \PValue{beforeskip} & \PValue{-3.25ex plus -1ex minus -.2ex} \\ + \PValue{font} & siehe + \DescRef{maincls.fontelement.subsection}, + \autoref{tab:maincls.structureElementsFont}, + \autopageref{tab:maincls.structureElementsFont} \\ + \PValue{indent} & \PValue{0pt} \\ + \PValue{level} & 2 \\ + \PValue{tocindent} & \PValue{3.8em}\\ + \PValue{toclevel} & 2 \\ + \PValue{tocnumwidth} & \PValue{3.2em}\\ + \PValue{tocstyle} & \PValue{section} \\ + \bottomrule + \end{tabularx} \\ + \addlinespace[\normalbaselineskip] + \DescRef{maincls.cmd.subsubsection}: \\* + \begin{tabularx}{\linewidth}{ll} + \toprule + Einstellung & voreingestellter Wert \\ + \midrule\nopagebreak + \PValue{afterskip} & \PValue{1.5ex plus .2ex} \\ + \PValue{beforeskip} & \PValue{-3.25ex plus -1ex minus -.2ex} \\ + \PValue{font} & siehe + \DescRef{maincls.fontelement.subsubsection}, + \autoref{tab:maincls.structureElementsFont}, + \autopageref{tab:maincls.structureElementsFont} \\ + \PValue{indent} & \PValue{0pt} \\ + \PValue{level} & 3 \\ + \PValue{tocindent} & \PValue{7.0em}\\ + \PValue{toclevel} & 3 \\ + \PValue{tocnumwidth} & \PValue{4.1em}\\ + \PValue{tocstyle} & \PValue{section} \\ + \bottomrule + \end{tabularx} \\ + \addlinespace[\normalbaselineskip] + \DescRef{maincls.cmd.paragraph}: \\* + \begin{tabularx}{\linewidth}{ll} + \toprule + Einstellung & voreingestellter Wert \\ + \midrule\nopagebreak + \PValue{afterskip} & \PValue{-1em} \\ + \PValue{beforeskip} & \PValue{3.25ex plus 1ex minus .2ex} \\ + \PValue{font} & siehe + \DescRef{maincls.fontelement.paragraph}, + \autoref{tab:maincls.structureElementsFont}, + \autopageref{tab:maincls.structureElementsFont} \\ + \PValue{indent} & \PValue{0pt} \\ + \PValue{level} & 4 \\ + \PValue{tocindent} & \PValue{10em}\\ + \PValue{toclevel} & 4 \\ + \PValue{tocnumwidth} & \PValue{5em}\\ + \PValue{tocstyle} & \PValue{section} \\ + \bottomrule + \end{tabularx} \\ + \addlinespace[\normalbaselineskip] + \DescRef{maincls.cmd.subparagraph}: \\* + \begin{tabularx}{\linewidth}{ll} + \toprule + Einstellung & voreingestellter Wert \\ + \midrule\nopagebreak + \PValue{afterskip} & \PValue{-1em} \\ + \PValue{beforeskip} & \PValue{3.25ex plus 1ex minus .2ex} \\ + \PValue{font} & siehe + \DescRef{maincls.fontelement.subparagraph}, + \autoref{tab:maincls.structureElementsFont}, + \autopageref{tab:maincls.structureElementsFont} \\ + \PValue{indent} & \Macro{scr@parindent} \\ + \PValue{level} & 5 \\ + \PValue{tocindent} & \PValue{12em}\\ + \PValue{toclevel} & 5 \\ + \PValue{tocnumwidth} & \PValue{6em}\\ + \PValue{tocstyle} & \PValue{section} \\ + \bottomrule + \end{tabularx} + \end{longtable} +%end{table} +\EndIndexGroup + + +\begin{Declaration} + \Macro{DeclareSectionCommands}\OParameter{Einstellungen}% + \Parameter{Namensliste} + \Macro{DeclareNewSectionCommands}\OParameter{Einstellungen}% + \Parameter{Namensliste} + \Macro{RedeclareSectionCommands}\OParameter{Einstellungen}% + \Parameter{Namensliste} + \Macro{ProvideSectionCommands}\OParameter{Einstellungen}% + \Parameter{Namensliste} +\end{Declaration} +Diese\ChangedAt{v3.15}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} Anweisungen können gleich eine ganze Reihe von +Gliederungsbefehlen definieren oder ändern. Dabei ist \PName{Namensliste} eine +durch Komma separierte Liste von Namen der Gliederungsbefehle. + +Die Befehle unterscheiden sich in zwei weiteren Punkten von den zuvor +erklärten Anweisungen zur Definition oder Änderung eines einzelnen +Gliederungsbefehls. Zum einen wird im Fehlerfall\textnote{Fehlerbehandlung}, +also wenn eine Anweisung bei \Macro{DeclareNewSectionCommands} bereits zuvor +existierte oder bei \Macro{RedeclareSectionCommands} noch nicht existierte, +die Definition dennoch vorgenommen. Ein entsprechender Fehler wird natürlich +trotzdem gemeldet. Zum anderen gibt es eine weitere Einstellung: +\important{\PValue{increaselevel}}\OptionVName{increaselevel}{Ganzzahl}. +Damit ändert sich die Bedeutung von \PValue{level} und \PValue{toclevel} +(siehe \autoref{tab:maincls-experts.declaresection.keys}, +\autopageref{tab:maincls-experts.declaresection.keys}) dahingehend, dass deren +Werte lediglich als \PName{Einstellungen} des ersten Gliederungsbefehls aus +der \PName{Namensliste} dienen. Für alle weiteren Gliederungsbefehle werden +die Werte von \PValue{level} und \PValue{toclevel} um den Wert von +\PValue{increaselevel} erhöht. Wurde die Einstellung \PValue{increaselevel} +ohne Wertzuweisung verwendet, so wird der Wert 1 angenommen.% +\EndIndexGroup + + +\begin{Declaration}[0] + \Macro{IfSectionCommandStyleIs}\Parameter{Name}\Parameter{Stil} + \Parameter{Dann-Code}\Parameter{Sonst-Code} +\end{Declaration} +In\ChangedAt{v3.27}{\Class{scrbook}\and \Class{scrreprt}\and \Class{scrartcl}} +seltenen Fällen ist es nützlich, testen zu können, ob ein Gliederungsbefehl +einem bestimmten \PName{Stil} angehört. Ist der mittels \PName{Name} bestimmte +Gliederungsbefehl aus \KOMAScript-Sicht derzeit mit dem angebenen \PName{Stil} +definiert, so wird der \PName{Dann-Code} ausgeführt, anderenfalls der +\PName{Sonst-Code}. Ist \Macro{\PName{Name}} nicht definiert oder kein mit +\KOMAScript-Mitteln definierter Gliederungsbefehl, so wird dies als Fehler +gemeldet.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{chapterheadstartvskip} + \Macro{chapterheadmidvskip} + \Macro{chapterheadendvskip} + \Macro{partheadstartvskip} + \Macro{partheadmidvskip} + \Macro{partheadendvskip} + \Macro{partheademptypage} +\end{Declaration} +Diese\important[i]{\DescRef{maincls.cmd.chapter}\\ + \DescRef{maincls.cmd.part}\\ + \DescRef{maincls.cmd.addchap}\\ + \DescRef{maincls.cmd.addpart}\\ + \DescRef{maincls.cmd.chapter*}\\ + \DescRef{maincls.cmd.part*}\\ + \DescRef{maincls.cmd.addchap*}\\ + \DescRef{maincls.cmd.addpart*}} Anweisungen werden innerhalb von +Überschriften der zuvor erklärten Stile \PValue{chapter} und \PValue{part} und +damit für die Definition der Überschriften +\DescRef{maincls.cmd.chapter}\IndexCmd{chapter}, +\DescRef{maincls.cmd.part}\IndexCmd{part}, +\DescRef{maincls.cmd.addchap}\IndexCmd{addchap}, +\DescRef{maincls.cmd.addpart}\IndexCmd{addpart} und deren Sternvarianten +\DescRef{maincls.cmd.chapter*}\IndexCmd{chapter*}, +\DescRef{maincls.cmd.part*}\IndexCmd{part*}, +\DescRef{maincls.cmd.addchap*}\IndexCmd{addchap*}, +\DescRef{maincls.cmd.addpart*}\IndexCmd{addpart*} verwendet. Dabei ist +\Macro{chapterheadstartvskip} eine Anweisung, die dafür vorgesehen ist, vor +der Kapitelüberschrift einen vertikalen Abstand einzufügen. Entsprechend ist +\Macro{chapterheadendvskip} eine Anweisung, die dafür vorgesehen ist, nach der +Kapitelüberschrift einen vertikalen Abstand +einzufügen. Bei\ChangedAt{v3.15}{\Class{scrbook}\and \Class{scrreprt}} +Kapitelüberschriften mit eigener Nummernzeile (siehe Option +\DescRef{maincls.option.chapterprefix} in \autoref{sec:maincls.structure}, +\DescPageRef{maincls.option.chapterprefix}) wird zwischen der Nummernzeile und +der eigentlichen Überschrift außerdem \Macro{chapterheadmidvskip} ausgeführt. + +Für das Einfügen der vertikalen Abstände über und unter Teile-Überschriften +sind die Anweisungen \Macro{partheadstartvskip} und \Macro{partheadendvskip} +vorgesehen. Dabei wird ein Seitenumbruch als Teil des vertikalen Abstandes +interpretiert. Ein solcher Seitenumbruch ist in der Voreinstellung sowohl bei +\Class{scrbook}\OnlyAt{\Class{scrbook}\and \Class{scrreprt}} als auch +\Class{scrreprt} in der Definition von \Macro{partheadendvskip} enthalten. Die +Anweisung \Macro{partheadmidvskip} ist für den Abstand zwischen der +Teile-Nummer und dem Text der Teile-Überschrift vorgesehen. Die Anweisung +\Macro{partheademptypage}\ChangedAt{v3.02}{\Class{scrbook}\and + \Class{scrreprt}} wird bei \Class{scrbook} und \Class{scrreprt} +gegebenenfalls für die leere Seite nach der Überschrift verwendet. + +Die Voreinstellungen der sieben Anweisungen sind seit +\KOMAScript~3.15\ChangedAt{v3.15}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} von der Einstellung von Option +\DescRef{maincls.option.headings} (siehe \autoref{sec:maincls.structure}, +\DescPageRef{maincls.option.headings}) unabhängig. Die Original-Definitionen +für die Kapitelüberschriften ab +\KOMAScript~3.17\ChangedAt{v3.17}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} entsprechen:\IndexLength{@tempskipa} +\begin{lstcode} + \newcommand*{\chapterheadstartvskip}{\vspace{\@tempskipa}} + \newcommand*{\chapterheadmidvskip}{\par\nobreak + \vskip\@tempskipa} + \newcommand*{\chapterheadendvskip}{\vskip\@tempskipa} +\end{lstcode} +Diese werden auch bei jeder Verwendung von Option +\OptionValueRef{maincls}{headings}{big}\IndexOption{headings}, +\OptionValueRef{maincls}{headings}{normal} oder +\OptionValueRef{maincls}{headings}{small} reaktiviert. Als Seiteneffekt haben +diese Optionen also gegebenenfalls nicht nur Auswirkungen auf +Kapitelüberschriften, sondern auf alle Überschriften im Stil \PValue{chapter}. + +Der Stil \PValue{chapter} setzt die interne Länge +\Length{@tempskipa}\IndexLength{@tempskipa} vor Aufruf von +\Macro{chapterheadstartvskip} automatisch auf den Wert, der sich aus der +\DescRef{\LabelBase.cmd.DeclareSectionCommand}-Einstellung% +\IndexCmd{DeclareSectionCommand} \PValue{beforeskip} ergibt. Vor dem Aufruf +von \Macro{chapterheadendvskip} geschieht entsprechendes mit dem Wert, der +sich aus der Einstellung +\PValue{afterskip} ergibt, und vor dem Aufruf von \Macro{chapterheadmidvskip} +mit dem Wert, der sich aus der Einstellung \PValue{innerskip} +ergibt. + +Da die Voreinstellungen für die Abstände von \DescRef{maincls.cmd.part} nicht +von Option \DescRef{maincls.option.headings} abhängen, werden auch die +zugehörigen Anweisungen von dieser Option nicht neu +definiert. Ihre\ChangedAt{v3.17}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} Original-Definitionen entsprechen bei \Class{scrbook} und +\Class{scrreprt}: +\begin{lstcode} + \newcommand*{\partheadstartvskip}{% + \null\vskip-\baselineskip\vskip\@tempskipa + } + \newcommand*{\partheadmidvskip}{% + \par\nobreak\vskip\@tempskipa + } + \newcommand*{\partheadendvskip}{% + \vskip\@tempskipa\newpage + } +\end{lstcode} +und bei \Class{scrartcl}: +\begin{lstcode} + \newcommand*{\partheadstartvskip}{% + \addvspace{\@tempskipa}% + } + \newcommand*{\partheadmidvskip}{% + \par\nobreak + } + \newcommand*{\partheadendvskip}{% + \vskip\@tempskipa + } +\end{lstcode} +Auch hier wird vom Stil \PValue{part} die interne Länge +\Length{@tempskipa}\IndexLength{@tempskipa}\IndexLength{@tempskipa} vor der +Verwendung der Befehle entsprechend der Einstellungen von +\DescRef{\LabelBase.cmd.DeclareSectionCommand}\IndexCmd{DeclareSectionCommand} +gesetzt. + +Wird eine der Anweisungen, die im Original \Length{@tempskipa} für den +vertikalen Abstand verwendet, umdefiniert und sollen die Abstände weiterhin +beispielsweise mit \DescRef{\LabelBase.cmd.RedeclareSectionCommand} +konfigurierbar sein, so sollte man in der neuen Definition ebenfalls +\Length{@tempskipa} verwenden. Da\ChangedAt{v3.17}{\Class{scrbook}\and + \Class{scrreprt}\and \Class{scrartcl}} die Abstände über, innerhalb und +unter den Überschriften einfacher mit +\DescRef{\LabelBase.cmd.RedeclareSectionCommand} eingestellt werden können, +wird generell nicht empfohlen, zu diesem Zweck stattdessen die hier +beschriebenen Anweisungen umzudefinieren. Sie sollten für tiefgreifendere +Änderungen reserviert bleiben, die nicht über +\DescRef{\LabelBase.cmd.RedeclareSectionCommand} zu erreichen sind. +Auf\textnote{Beispiel!} \cite{homepage} findet sich dazu ein Beispiel, bei +dem durch Umdefinierung von \Macro{chapterheadstartvskip} und +\Macro{chapterheadendvskip} Linien über und unter der Kapitelüberschrift +gesetzt werden.% +% +\EndIndexGroup + + +\begin{Declaration} + \Macro{partlineswithprefixformat}% + \Parameter{Ebene}\Parameter{Nummer}\Parameter{Text} +\end{Declaration} +Diese\ChangedAt{v3.25}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} Anweisung wird von Überschriften des Stils +\PValue{part}\textnote{Gliederungsstil + \PValue{part}}\Index{Gliederung>Stil>~\PValue{part}} verwendet. Die beiden +Argumente \PName{Nummer} und \PName{Text} sind dabei einschließlich +Einstellung der Fonts für sich bereits fertig formatiert. Letztlich regelt die +Anweisung also die Anordnung der beiden Teile der Überschrift. Bei nicht +nummerierten Überschriften ist \PName{Nummer} ein komplett leeres Argument, +enthält also auch keine Formatierungsanweisungen. + +Vordefiniert ist die Anweisung mit: +\begin{lstcode} + \newcommand{\partlineswithprefixformat}[3]{#2#3} +\end{lstcode} +\iffalse bisher eher spartanisch.\fi% Umbruchkorrektur + +\begin{Example} + Sie wollen die Teile-Überschriften in eine hellblaue Box mit blauer + Umrandung stellen, die nur etwa drei Viertel der Breite des Textbereichs + einnimmt. Hierzu verwenden Sie +\begin{lstcode}[moretexcs={fcolorbox}] + \documentclass{scrbook} + \usepackage{xcolor} + \renewcommand*{\partlineswithprefixformat}[3]{% + \fcolorbox{blue}{blue!25}{% + \parbox{.75\linewidth}{#2#3}% + }% + } + \begin{document} + \part{Umrahmte Teile} + \end{document} +\end{lstcode} + Allerdings fällt Ihnen auf, dass die Überschrift dabei nicht wie sonst + für Teile üblich zentriert wird -- weder die Box selbst noch der Text + innerhalb der Box. + + Die Ursache für die fehlende Zentrierung der Box liegt + darin, dass aufgrund der Änderung das in Argument 3 versteckte Absatzende + nur noch den Absatz innerhalb der Box beendet, aber nicht mehr den Absatz mit + der \Macro{parbox}. Also ergänzen Sie ein \Macro{par} am Ende der Definition. + + Die Ursache der fehlenden Zentrierung innerhalb der Box ist, dass in der + \Macro{parbox}-Anweisung die Ausrichtung von + \DescRef{maincls.cmd.raggedpart} nicht automatisch gültig ist. Daher + ergänzen Sie diese Anweisung innerhalb der Box. + + Mit +\begin{lstcode}[moretexcs={fcolorbox}] + \documentclass{scrbook} + \usepackage{xcolor} + \renewcommand*{\partlineswithprefixformat}[3]{% + \fcolorbox{blue}{blue!25}{% + \parbox{.75\linewidth}{\raggedpart #2#3}% + }% + \par + } + \begin{document} + \part{Umrahmte Teile} + \end{document} +\end{lstcode} + erhalten Sie die gewünschte Formatierung. +\end{Example} + +Wie im Beispiel gezeigt, ist der Anwender bei der Umdefinierung der Anweisung +für einige Dinge selbst verantwortlich. Dazu gehört neben dem Erhalt der +voreingestellten Ausrichtung auch, dass innerhalb der Überschrift kein +Seitenumbruch, beispielsweise an zusätzlich eingefügten Absätzen oder +Abständen, erfolgen kann. Das gezeigte Beispiel ist diesbezüglich +unproblematisch. Nicht nur, dass die beiden Boxen ohnehin keinen Seitenumbruch +erlauben. \KOMAScript{} verändert außerdem \Macro{interlinepenalty} als Teil +von \PName{Text} so, dass darin kein Seitenumbruch stattfinden +darf. Gleichzeitig endet \PName{Text} immer mit einem internen Absatz, +\Macro{@@par}. + +Das Argument \PName{Ebene} wird von +\Macro{partlineswithprefixformat} in der Voreinstellung nicht verwendet und +ist auch im Beispiel nicht erforderlich. Erst wenn der Anwender mehrere +Anweisungen im Stil \PValue{part} definiert und man innerhalb der Definition +nach den Anweisungen unterscheiden will, kann dies über \PName{Ebene} +erfolgen. Dabei ist \PName{Ebene} der vom Namen der Anweisung abgeleitete Name +der Gliederungsebene. Bei \DescRef{maincls.cmd.part}, +\DescRef{maincls.cmd.part*}, \DescRef{maincls.cmd.addpart} und +\DescRef{maincls.cmd.addpart*} ist \PName{Ebene} daher einheitlich +\PValue{part}.% +\EndIndexGroup + +\begin{Declaration} + \Macro{chapterlineswithprefixformat}% + \Parameter{Ebene}\Parameter{Nummer}\Parameter{Text} + \Macro{chapterlinesformat}% + \Parameter{Ebene}\Parameter{Nummer}\Parameter{Text} +\end{Declaration} +Diese\ChangedAt{v3.19}{\Class{scrbook}\and \Class{scrreprt}} Anweisungen +werden von Überschriften des Stils \PValue{chapter}\textnote{Gliederungsstil + \PValue{chapter}}\Index{Gliederung>Stil>~\PValue{chapter}} in Abhängigkeit +von Option \DescRef{maincls.option.chapterprefix}\IndexOption{chapterprefix}% +\textnote{\DescRef{maincls.option.chapterprefix}} (siehe +\autoref{sec:maincls.structure}, \DescPageRef{maincls.option.chapterprefix}) +verwendet. Dabei gibt \Macro{chapterlineswithprefixformat} die Ausgabe bei +aktivierter Option vor. Bei deaktivierter Option +bestimmt dagegen \Macro{chapterlinesformat} die Ausgabe. + +Die beiden Argumente \PName{Nummer} und \PName{Text} sind dabei +einschließlich Einstellung der Fonts für sich bereits fertig +formatiert. Letztlich regeln die Anweisungen also die Anordnung der beiden +Teile der Überschrift. Bei nicht nummerierten Überschriften ist \PName{Nummer} +ein komplett leeres Argument, enthält also auch keine +Formatierungsanweisungen. + +Vordefiniert\textnote{Voreinstellung} sind die beiden Anweisungen mit: +\begin{lstcode} + \newcommand{\chapterlinesformat}[3]{% + \@hangfrom{#2}{#3}% + } + \newcommand{\chapterlineswithprefixformat}[3]{#2#3} +\end{lstcode} + +\begin{Example} + Sie wollen Überschriften im Kapitelstil gelb hinterlegen. Für + Überschriften ohne Präfixzeile definieren Sie daher in der Präambel des + Dokument: +\begin{lstcode}[moretexcs={colorbox}] + \makeatletter + \renewcommand{\chapterlinesformat}[3]{% + \colorbox{yellow}{% + \parbox{\dimexpr\linewidth + -2\fboxrule-2\fboxsep}{% + \@hangfrom{#2}#3% + }% + }% + } + \makeatother +\end{lstcode} + und für Überschriften mit Präfixzeile: +\begin{lstcode}[moretexcs={colorbox}] + \renewcommand{\chapterlineswithprefixformat}[3]{% + \colorbox{yellow}{% + \parbox{\dimexpr\linewidth + -2\fboxrule-2\fboxsep}{% + #2#3% + }% + }% + } +\end{lstcode} + Allerdings fällt Ihnen nach einiger Zeit auf, dass mit dieser Umdefinierung + die Überschriften wieder im Blocksatz gesetzt werden. Das liegt daran, dass + \Macro{parbox} sein Argument so setzt. Um dies zu korrigieren, fügen Sie die + Anweisung \DescRef{maincls.cmd.raggedchapter} (siehe + \autoref{sec:maincls.structure}, \DescPageRef{maincls.cmd.raggedchapter}), + die automatisch bereits vor \Macro{chapterlinesformat} und + \Macro{chapterlineswithprefixformat} aufgerufen wird, in die Definitionen + ein: +\begin{lstcode}[moretexcs={colorbox}] + \makeatletter + \renewcommand{\chapterlinesformat}[3]{% + \colorbox{yellow}{% + \parbox{\dimexpr\linewidth + -2\fboxrule-2\fboxsep}{% + \raggedchapter + \@hangfrom{#2}#3% + }% + }% + } + \makeatother + \renewcommand{\chapterlineswithprefixformat}[3]{% + \colorbox{yellow}{% + \parbox{\dimexpr\linewidth + -2\fboxrule-2\fboxsep}{% + \raggedchapter + #2#3% + }% + }% + } +\end{lstcode} + Es sei daran erinnert, dass die Klammerung mit den Anweisungen + \Macro{makeatletter} und \Macro{makeatother} nur in der Dokumentpräambel zu + verwenden ist. In einer eigenen Wrapper-Klasse oder einem Paket haben sie zu + entfallen. Sie werden auch nur wegen \Macro{@hangfrom} in der Definition von + \Macro{chapterlinesformat} benötigt.% +\end{Example} + +Wie im Beispiel gezeigt, ist der Anwender bei der Umdefinierung der +Anweisungen für einige Dinge selbst verantwortlich. Dazu gehört neben dem +Erhalt der voreingestellten Ausrichtung auch, dass innerhalb der Überschrift +kein Seitenumbruch, beispielsweise an zusätzlich eingefügten Absätzen oder +Abständen, erfolgen kann. Das gezeigte Beispiel ist diesbezüglich +unproblematisch. Nicht nur, dass die beiden Boxen ohnehin keinen Seitenumbruch +erlauben. \KOMAScript{} verändert außerdem \Macro{interlinepenalty} als Teil +von \PName{Text} so, dass darin kein Seitenumbruch stattfinden +darf. Gleichzeitig endet \PName{Text} immer mit einem internen Absatz, +\Macro{@@par}. + +Die Anweisung \DescRef{maincls.cmd.raggedchapter} ist übrigens nicht +Bestandteil von \PName{Text}, weil anderenfalls beispielsweise die Verwendung +von \Macro{MakeUppercase} innerhalb der Umdefinierung der beiden Anweisungen +erheblich erschwert wäre. Dennoch sei darauf hingewiesen, dass typografischen +Regeln zufolge Versalsatz mit gängigen Fonts immer der Sperrung und des +Ausgleichs bedarf. Die \LaTeX-Anweisung \Macro{MakeUppercase} leistet dies +jedoch nicht. + +Das erste Argument, \PName{Ebene}, wird von den Anweisungen in der +Voreinstellung nicht verwendet und ist auch im Beispiel nicht +erforderlich. Erst wenn der Anwender mehrere Anweisungen im Stil +\PValue{chapter} definiert und man innerhalb der Definition nach den +Anweisungen unterscheiden will, kann dies über \PName{Ebene} erfolgen. Dabei +ist \PName{Ebene} der vom Namen der Anweisung abgeleitete Name der +Gliederungsebene. Bei \DescRef{maincls.cmd.chapter}, +\DescRef{maincls.cmd.chapter*}, \DescRef{maincls.cmd.addchap} und +\DescRef{maincls.cmd.addchap*} ist \PName{Ebene} daher einheitlich +\PValue{chapter}.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{sectionlinesformat}% + \Parameter{Ebene}\Parameter{Einzug}\Parameter{Nummer}\Parameter{Text} + \Macro{sectioncatchphraseformat}% + \Parameter{Ebene}\Parameter{Einzug}\Parameter{Nummer}\Parameter{Text} +\end{Declaration} +Diese\ChangedAt{v3.19}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} Anweisungen werden von Überschriften des Stils +\PValue{section}\textnote{Gliederungsstil + \PValue{section}}\Index{Gliederung>Stil>~\PValue{section}} in Abhängigkeit +davon verwendet, ob die jeweilige Überschrift eine Spitzmarke erzeugt oder +eine frei stehende Überschrift. Frei stehende Überschriften werden dabei per +\Macro{sectionlinesformat} ausgegeben, während +\Macro{sectioncatchphraseformat} für Spitzmarken zuständig ist. + +In beiden Fällen gibt \PName{Einzug} den Wert eines horizontalen Einzugs +der Überschrift gegenüber dem Textbereich an. Durch Angabe eines negativen +Wertes soll es auch möglich sein, die Überschrift in den linken Rand zu +rücken. + +Die beiden Argumente \PName{Nummer} und \PName{Text} sind einschließlich +Einstellung der Fonts für sich bereits fertig formatiert. Letztlich regeln die +Anweisungen also die Anordnung der beiden Teile der Überschrift. Bei nicht +nummerierten Überschriften ist \PName{Nummer} ein komplett leeres Argument, +enthält also auch keine Formatierungsanweisungen. + +Vordefiniert sind die beiden Anweisungen als: +\begin{lstcode} +\newcommand{\sectionlinesformat}[4]{% + \@hangfrom{\hskip #2#3}{#4}% +} +\newcommand{\sectioncatchphraseformat}[4]{\hskip #2#3#4} +\end{lstcode} + +Bei Umdefinierung einer der beiden Anweisungen ist wiederum der Anwender +selbst dafür verantwortlich, Seitenumbrüche innerhalb der Ausgabe zu +verhindern. \KOMAScript{} hilft hier lediglich mit entsprechend gesetztem +\Macro{interlinepenalty}. + +\begin{Example} + Wie schon im Beispiel der Kapitelüberschriften sollen nun die frei stehenden + Überschriften der Ebene \PValue{section} mit einer Farbe hinterlegt + werden. Die frei stehenden Überschriften tieferer Ebenen sollen nicht + verändert werden: +\begin{lstcode}[moretexcs={colorbox}] + \makeatletter + \renewcommand{\sectionlinesformat}[4]{% + \Ifstr{#1}{section}{% + \hspace*{#2}% + \colorbox{yellow}{% + \parbox{\dimexpr\linewidth + -2\fboxrule-2\fboxsep-#2}{% + \raggedsection + \@hangfrom{#3}{#4}% + }% + }% + }{% + \@hangfrom{\hskip #2#3}{#4}% + }% + } + \makeatother +\end{lstcode} + Mit dem gezeigten Code wird im Falle eines Einzugs der Überschrift der + Bereich des Einzugs nicht mit gefärbt. Wird hingegen die Überschrift in den + linken Rand gestellt, so wird dieser Bereich des Randes ebenfalls farbig + hinterlegt. Durch Verschiebung der \Macro{hspace*}-Anweisung in die + \Macro{colorbox} kann dieses Verhalten verändert werden.% + \iffalse Umbruchkorrekturtext + + Erneut sei daran erinnert, dass \Macro{makeatletter} und \Macro{makeatother} + nur in der Dokumentpräambel zu verwenden sind. In einer eigenen + Wrapper-Klasse oder einem Paket haben sie zu entfallen. Sie werden auch nur + wegen \Macro{@hangfrom} in der Definition von \Macro{sectionlinesformat} + benötigt.% + \else% + + \Macro{makeatletter} und \Macro{makeatother} werden in der Dokumentpräambel + erneut wegen \Macro{@hangfrom} benötigt.% + \fi% +\end{Example} + +Das erste Argument, \PName{Ebene}, wird von den Anweisungen in der +Voreinstellung nicht verwendet. Wie das Beispiel zeigt, kann es aber sehr gut +dazu verwendet werden, nach unterschiedlichen Gliederungsebenen im gemeinsamen +Stil \PValue{section} zu unterscheiden.% +\EndIndexGroup + + +\begin{Declaration} +\DoHook{heading/preinit/\PName{Name}}% +\DoHook{heading/postinit/\PName{Name}}% +\DoHook{heading/branch/star/\PName{Name}}% +\DoHook{heading/branch/nostar/\PName{Name}}% +\DoHook{heading/begingroup/\PName{Name}}% +\DoHook{heading/endgroup/\PName{Name}}% +\end{Declaration} +\BeginIndex{}{Haken}% +Abgesehen\ChangedAt[2019/01]{v3.27}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} von den übrigen Einstellmöglichkeiten bieten sämtliche mit +\DescRef{\LabelBase.cmd.DeclareSectionCommand}, +\DescRef{\LabelBase.cmd.DeclareNewSectionCommand} und +\DescRef{\LabelBase.cmd.ProvideSectionCommand} definierten und ebenso auch die +mit \DescRef{\LabelBase.cmd.RedeclareSectionCommand} umdefinierten +Gliederungsanweisungen eine ganze Reihe an Haken, die per +\DescRef{scrbase.cmd.AddtoDoHook} manipuliert werden können. Zur +Funktionsweise dieser \emph{do-hook} genannten Haken sei auf +\autoref{sec:scrbase.hooks} ab \autopageref{sec:scrbase.hooks} verwiesen. Der +letzte Teil des Spezifikators ist dabei der \PName{Name} der +Gliederungsanweisung, wie er auch bei den oben genannten Befehlen als letztes +Argument anzugeben ist. + +Wichtig\important{Achtung!} ist, dass keiner dieser Haken für Anweisungen +verwendet werden sollte, die Auswirkungen auf den Seitenumbruch oder die +Positionierung der Überschriften haben. Daher sollten nur wirklich erfahrene +Anwender Gebrauch von diesen Haken machen. Im Zweifelsfall ist außerdem der +Quellcode der Klasse bezüglich des genauen Ausführungszeitpunktes des +jeweiligen Hakens zu konsultieren. Diese Haken dienen als letzter Notanker vor +einer tatsächlichen Umdefinierung von Gliederungsbefehlen außerhalb der von +\KOMAScript{} gebotenen Mittel. + +Der\textnote{\DoHook{\dots/preinit/\dots}} Haken +\DoHook{heading/preinit/\PName{Name}} wird unmittelbar vor der +Ini"-tialisierung der Anweisungen ausgeführt. Zu diesem Zeitpunkt wurden noch +keine Einstellungen vorgenommen. Selbst der Absatz, der einer Überschrift +vorausgeht, ist noch nicht zwingend beendet. + +Der\textnote{\DoHook{\dots/postinit/\dots}} Haken +\DoHook{heading/postinit/\PName{Name}} wird etwas später ausgeführt. Zu +diesem Zeitpunkt wurden einige Einstellungen bereits vorgenommen und auch ein +vorausgehender Absatz wurde bereits beendet. + +Der Haken \textnote{\DoHook{\dots/branch/\dots}} +\DoHook{heading/branch/nostar/\PName{Name}} wird ausgeführt, sobald feststeht, +dass keine Sternform der Gliederungsanweisung vorliegt. Für die Sternform wird +hingegen \DoHook{heading/branch/star/\PName{Name}} ausgeführt. Zu diesem +Zeitpunkt sind gegebenenfalls auch bereits vertikale Abstände über der +jeweiligen Überschrift eingefügt. + +Der\textnote{\DoHook{\dots/begingroup/\dots}} Haken +\DoHook{heading/begingroup/\PName{Name}} wird am Anfang der Gruppe +ausgeführt, in der schließlich die Überschrift gesetzt wird. Das ist also die +letzte Eingriffsmöglichkeit vor der Ausgabe der Überschrift. + +Entsprechend\textnote{\DoHook{\dots/endgroup/\dots}} wird +\DoHook{heading/endgroup/\PName{Name}} vor dem Ende der Gruppe ausgeführt, in +der die Überschrift gesetzt wurde. Derzeit ist das auch der letzte Haken +innerhalb einer Gliederungsanweisung. + +Zu beachten\textnote{\DescRef{maincls.cmd.minisec}} ist, dass +\DescRef{maincls.cmd.minisec} keine echte Gliederungsanweisung ist und die +genannten Haken daher auf diese Anweisung keine Anwendung finden.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{IfUseNumber}\Parameter{Dann-Code}\Parameter{Sonst-Code} +\end{Declaration} +Streng\ChangedAt{v3.27}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} genommen handelt es sich hier um eine interne +Anweisung. Sie ist nur innerhalb von Überschriften zwischen den beiden Haken +\DoHook{\dots/begingroup/\dots} und \DoHook{\dots/endgroup/\dots} +spezifiziert. In diesem Fall wird der \PName{Dann-Code} ausgeführt, wenn die +aktuelle Überschrift gemäß Einstellung von +\DescRef{maincls.counter.secnumdepth} und aufgrund der Nichtverwendung einer +Sternform nummeriert werden soll. Soll die Überschrift aufgrund der Verwendung +einer Sternform oder der Einstellung von \DescRef{maincls.counter.secnumdepth} +nicht nummeriert werden, so wird der \PName{Sonst-Code} ausgeführt. Bei +Überschriften im Stil \PValue{chapter} wird für die Entscheidung außerdem +berücksichtigt, ob die Überschrift im Hauptteil gesetzt wird. + +Wird die Anweisung außerhalb von +Überschriften verwendet, so ist ihr Ergebnis nicht spezifiziert. In der Regel +gibt sie dann eine Fehlermeldung aus und führt weder den \PName{Dann-Code} +noch den \PName{Sonst-Code} aus.% +\EndIndexGroup + + +\begin{Declaration} + \Macro{SecDef}\Parameter{Sternanweisung}\Parameter{Normalanweisung} + \Macro{scr@startsection}\Parameter{Name}\Parameter{Ebene}% + \Parameter{Einzug}\Parameter{Abstand~davor}\Parameter{Abstand~danach} + \Parameter{Stilanweisungen}% + \OParameter{Kurzform}\Parameter{Überschrift} + \labelsuffix[*]% + \Macro{scr@startsection}\Parameter{Name}\Parameter{Ebene}% + \Parameter{Einzug}\Parameter{Abstand~davor} + \Parameter{Abstand~danach} + \Parameter{Stilanweisungen}% + \nobreak\texttt{*}\Parameter{Überschrift} + \labelsuffix +\end{Declaration} +Wie\ChangedAt{v3.15}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} bereits in \autoref{sec:maincls.structure} bei der +Beschreibung zu den Gliederungsbefehlen ab +\DescPageRef{maincls.cmd.chapter} erklärt, verfügt \KOMAScript{} +bezüglich des optionalen Arguments der Gliederungsbefehle über erweiterte +Möglichkeiten. Um dies zu erreichen, war es notwendig, einige Anweisungen +des \LaTeX-Kerns zu ersetzen: +\begin{itemize} +\item Statt + \Macro{@startsection}\IndexCmd{@startsection}\important{\Macro{@startsection}} + wird \Macro{scr@startsection} verwendet. Die Definition + von \Macro{@startsection} wird jedoch geprüft. Entspricht diese beim Laden + der Klasse nicht den Erwartungen, so wird eine Warnung + ausgegeben, diverse + Möglichkeiten von \KOMAScript{} werden deaktiviert und + \Macro{scr@startsection} stützt sich auf eine Kopie von + \Macro{@startsection}, während \Macro{@startsection} selbst + \Macro{scr@startsection} aufruft. +\item Statt \Macro{@dblarg}\IndexCmd{@dblarg}\important{\Macro{@dblarg}} wird + von den Gliederungsbefehlen eine eigene, interne Anweisung + verwendet. +\item Statt \Macro{secdef}\IndexCmd{secdef}\important{\Macro{secdef}} wird + \Macro{SecDef} verwendet, um die erwähnte Änderung + bezüglich \Macro{@dblarg} zu erreichen. Sollte die Definition von + \Macro{secdef} nicht den Erwartungen entsprechen, wird eine Warnung + ausgegeben. +\item \Macro{@sect}\IndexCmd{@sect}\important{\Macro{@sect}} wird umdefiniert, + um diverse Erweiterungen durch \KOMAScript{} zu realisieren. +\item \Macro{@ssect}\IndexCmd{@ssect}\important{\Macro{@ssect}} wird + umdefiniert, um diverse Erweiterungen von \KOMAScript{} zu realisieren. +\item \Macro{@xsect}\IndexCmd{@xsect}\important{\Macro{@xsect}} wird + umdefiniert, um diverse Erweiterungen von \KOMAScript{} zu realisieren. +\end{itemize} +Es gibt Überlegungen, in künftigen Versionen von \KOMAScript{} die erwähnten +Anweisungen aus dem \LaTeX-Kern nicht mehr anzutasten, sondern intern komplett +durch Eigenentwicklungen zu ersetzen. Bei Verwendung eigentlich inkompatibler +Pakete würden dadurch automatisch Erweiterungen von \KOMAScript{} deaktiviert +und die Gliederungsbefehle in die Hände jener Pakete gelegt. Gleichzeitig +müssten aber zum Erhalt der Kompatibilität mit anderen Paketen zusätzliche +Maßnahmen ergriffen werden. + +Die erwähnten Ersatzanweisungen können von Paketautoren genau wie die +\LaTeX-Kern-Anweisungen verwendet werden, bieten dann aber automatisch die +erweiterte Funktionalität von \KOMAScript{}. Jedoch sollten sie nicht +umdefiniert werden, da sie sich jederzeit ändern können und dann die +Funktionalität von \KOMAScript{} durch diese Umdefinierung erneut +beeinträchtigt werden könnte. Die Bedeutung der Parameter ist der +Anleitung zum \LaTeX-Kern \cite{latex:source2e} zu entnehmen. +Als\ChangedAt[2019/01]{v3.27}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} Ersatz für die Umdefinierung von Anweisungen bietet +\KOMAScript{} die zuvor dokumentierten Haken.% +\EndIndexGroup + +\begin{Explain} + \begin{Declaration} + \Macro{At@startsection}\Parameter{Code} + \Macro{Before@ssect}\Parameter{Code} + \Macro{Before@sect}\Parameter{Code} + \end{Declaration} + Bis\ChangedAt[2019/01]{v3.27}{\Class{scrbook}\and \Class{scrreprt}\and + \Class{scrartcl}} \KOMAScript{}~3.26b dienten diese Anweisungen ebenfalls + als Ersatz für die Umdefinierung von + \DescRef{\LabelBase.cmd.scr@startsection} und + \DescRef{\LabelBase.cmd.SecDef}. Seit\textnote{veraltete + \KOMAScript-Anweisungen} \KOMAScript~3.27 gelten sie jedoch als veraltet. + + Intern wird \Macro{At@startsection} seit \KOMAScript~3.27 über den Haken + \DescRef{\LabelBase.dohook.heading/postinit} + realisiert. \Macro{Before@ssect} ist mit Hilfe von + \DescRef{\LabelBase.dohook.heading/branch/star} implementiert und + \Macro{Before@sect} über \DescRef{\LabelBase.dohook.heading/branch/nostar}. + \PName{Code} wird den Haken per \DescRef{scrbase.cmd.AddtoDoHook} + hinzugefügt. Es ist nicht vorgesehen, einmal eingefügten \PName{Code} wieder + zu entfernen.% + \EndIndexGroup +\end{Explain} + +% \section{Anhang} +% \seclabel{appendix} + +\begin{Declaration} + \Macro{appendixmore} +\end{Declaration}% +Bei den {\KOMAScript}-Klassen gibt es innerhalb der Anweisung +\DescRef{maincls.cmd.appendix}% +\IndexCmd{appendix}\important{\DescRef{maincls.cmd.appendix}} eine +Besonderheit. Ist \Macro{appendixmore} definiert, so wird diese Anweisung von +\DescRef{maincls.cmd.appendix} ebenfalls ausgeführt. Intern wird das von den +{\KOMAScript}-Klassen \Class{scrbook}\OnlyAt{\Class{scrbook}\and + \Class{scrreprt}} und \Class{scrreprt} für die Realisierung der Layoutoption +\DescRef{maincls.option.appendixprefix} genutzt (siehe +\autoref{sec:maincls.structure}, +\DescPageRef{maincls.option.appendixprefix}). Dies\textnote{Achtung!} sollten +Sie unbedingt beachten, falls Sie selbst das Makro \Macro{appendixmore} +definieren oder umdefinieren wollen. Wurde diese Option bereits verwendet, so +erhalten Sie bei \verb|\newcommand{\appendixmore}{|\dots\verb|}| eine +Fehlermeldung. Dadurch wird verhindert, dass Sie die Option außer +Kraft setzen, ohne es zu merken. + +\begin{Example} + Sie wollen nicht, dass bei Verwendung der Klasse \Class{scrbook} oder + \Class{scrreprt} im Hauptteil die Kapitel mit einer Präfixzeile versehen + werden (siehe Layoutoption \DescRef{maincls.option.chapterprefix} + in \autoref{sec:maincls.structure}, + \DescPageRef{maincls.option.chapterprefix}). Damit die Konsistenz + gewahrt bleibt, wollen Sie auch nicht, dass eine solche Zeile im Anhang + verwendet wird. Stattdessen soll in den Anhängen direkt vor dem + Kapitelbuchstaben das Wort »Anhang« in der jeweiligen Sprache stehen. Dies + soll auch für die Kolumnentitel gelten. Also verwenden Sie nicht die + Layoutoption \DescRef{maincls.option.appendixprefix}, sondern + definieren in der Dokumentpräambel: +\begin{lstcode} + \newcommand*{\appendixmore}{% + \renewcommand*{\chapterformat}{% + \appendixname~\thechapter\autodot\enskip}% + \renewcommand*{\chaptermarkformat}{% + \appendixname~\thechapter\autodot\enskip}} +\end{lstcode} + Sollten Sie doch noch entscheiden, dass Sie die Option + \DescRef{maincls.option.appendixprefix} bei + \DescRef{maincls.cmd.documentclass} setzen wollen, so erhalten Sie aufgrund + der dann bereits definierten Anweisung \Macro{appendixmore} eine + Fehlermeldung. Damit wird verhindert, dass obige Definition unbemerkt die + Einstellungen überschreibt, die Sie per Option getroffen haben. + + Wenn Sie ein vergleichbares Verhalten des Anhangs für die Klasse + \Class{scrartcl} erreichen wollen, so ist dies ebenfalls möglich. Schreiben + Sie dazu beispielsweise Folgendes in die Präambel Ihres Dokuments: +\begin{lstcode} + \newcommand*{\appendixmore}{% + \renewcommand*{\sectionformat}{% + \appendixname~\thesection\autodot\enskip}% + \renewcommand*{\sectionmarkformat}{% + \appendixname~\thesection\autodot\enskip}} +\end{lstcode} + + Die Erklärungen zu den in diesem Beispiel umdefinierten Anweisungen finden + Sie in \autoref{sec:maincls.structure}, + \DescPageRef{maincls.cmd.chapterformat} und + \DescPageRef{maincls.cmd.chaptermarkformat}. +\end{Example}% +% +\EndIndexGroup +\ExampleEndFix + + +\section{Literaturverzeichnis} +\seclabel{bibliography} + +Die Erklärungen in diesem Abschnitt verlieren mit der Verwendung von Paketen +wie \Package{biblatex} zunehmend an Bedeutung. Die weitreichenden +Möglichkeiten solcher Pakete ersetzen dann die hier beschriebenen +Erweiterungen der \KOMAScript-Klassen. + +\begin{Declaration} + \Macro{newbibstyle}\OParameter{Elternstil}\Parameter{Name}% + \Parameter{Anweisungen} + \Macro{newblock} + \Macro{@openbib@code} + \Macro{bib@beginhook} + \Macro{bib@endhook} +\end{Declaration} +Schon die Standardklassen\textnote{Standardklassen} kennen zur Unterteilung +der Einträge in das Literaturverzeichnis die Anweisung \Macro{newblock}. Was +diese Anweisung genau macht, hängt dabei von den Klassenoptionen ab. Wird die +Option \Option{openbib}\important{\Option{openbib}} verwendet, so werden am +Ende der Standardklasse die Anweisungen \Macro{@openbib@code} und +\Macro{newblock} selbst umdefiniert. Von den Standardklassen wird die +Anweisung \Macro{@openbib@code} beim Start der Liste für das +Literaturverzeichnis --~genauer: bei der Festlegung der Parameter für diese +Liste~-- ausgeführt. Es darf davon ausgegangen werden, dass auch viele Pakete, +die das Literaturverzeichnis umdefinieren, diese Anweisung entsprechend +abarbeiten. + +Bei den \KOMAScript-Klassen\textnote{\KOMAScript} geschieht etwas +ähnliches. Allerdings wird \Macro{@openbib@code} nicht am Ende der Klasse +umdefiniert. Stattdessen wird mit \Macro{newbibstyle} der Stil +\PValue{openstyle} für das Literaturverzeichnis definiert. Die +\PName{Anweisungen}, die dabei in der Implementierung angegeben wurden, +beinhalten die gewünschten Umdefinierung von \Macro{@openbib@code} und von +\Macro{newblock}. Wird nun mit Hilfe der Option +\OptionValueRef{maincls}{bibliography}{openstyle}% +\IndexOption{bibliography~=\textKValue{openstyle}}% +\important{\OptionValueRef{maincls}{bibliography}{openstyle}} dieser +Literaturverzeichnisstil gewählt, so werden die \PName{Anweisungen} +unmittelbar ausgeführt, also \Macro{@openbib@code} und \Macro{newblock} +umdefiniert. + +Neben \Macro{@openbib@code} und \Macro{newblock} können in \PName{Anweisungen} +auch noch \Macro{bib@beginhook} und \Macro{bib@endhook} umdefiniert +werden. Die Anweisung \Macro{bib@beginhook} wird unmittelbar nach der +Überschrift und der Präambel des Literaturverzeichnisses, aber noch vor der +Liste mit den Literatureinträgen ausgeführt. Die Anweisung \Macro{bib@endhook} +wird direkt nach dieser Liste am Ende des Literaturverzeichnisses +ausgeführt. Im Falle eines mit \DescRef{maincls.cmd.BreakBibliography} (siehe +\autoref{sec:maincls.bibliography}, +\DescPageRef{maincls.cmd.BreakBibliography}) unterbrochenen +Literaturverzeichnisses werden diese Anweisungen außerdem am Anfang und Ende +jedes Teils, also unmittelbar vor und nach +\DescRef{maincls.cmd.BreakBibliography} ausgeführt. + +Die Anweisungen \Macro{newblock}, \Macro{@openbib@code}, \Macro{bib@beginhook} +und \Macro{bib@endhook} werden bei der Verwendung eines neuen +Literaturverzeichnisstils zunächst als leer definiert. Danach werden die +\PName{Anweisungen} des bei der Definition des Stils optional angegebenen +Elternstils ausgeführt und dann erst die \PName{Anweisungen}, die bei +Definition des neuen Stils angegeben wurden. Daraus ergibt sich auch, % +\iffalse % Umbruchkorrektur +dass jede der vier Anweisungen innerhalb von \PName{Anweisung} bei Bedarf +keinesfalls mit \Macro{newcommand}, sondern mit +\Macro{renewcommand}\IndexCmd{renewcommand}\important{\Macro{renewcommand}} +definiert werden sollte.% +\else% +\enlargethispage{3pt}% Umbruchkorrektur (im Paar) +dass die vier Anweisungen innerhalb von \PName{Anweisung} bei Bedarf mit +\Macro{renewcommand}\IndexCmd{renewcommand}\important{\Macro{renewcommand}} +umzudefinieren sind.% +\par\enlargethispage{3pt}% Umbruchkorrektur (im Paar) +\fi% + +Setzt der Anwender mit den Anweisungen +\DescRef{maincls.cmd.AtEndBibliography}%\important[i]{\DescRef{maincls.cmd.AtEndBibliography}\\ +% \DescRef{maincls.cmd.AfterBibliographyPreamble}}% Passt blöder Weise nicht! +\IndexCmd{AtEndBibliography} und +\DescRef{maincls.cmd.AfterBibliographyPreamble}% +\IndexCmd{AfterBibliographyPreamble} weitere \PName{Anweisungen} für die +Ausführung nach der Präambel und am Ende des Literaturverzeichnisses, so +werden die mit \DescRef{maincls.cmd.AfterBibliographyPreamble} festgelegten +\PName{Anweisungen} einmalig am Anfang des Literaturverzeichnisses nach +\Macro{bib@beginhook} und die mit \DescRef{maincls.cmd.AtEndBibliography} +festgelegten \PName{Anweisungen} einmalig am Ende des Literaturverzeichnisses +vor \Macro{bib@endhook} ausgeführt. + +Mit\textnote{Beispiel!} Hilfe des Pakets +\Package{multicol}\IndexPackage{multicol}\important{\Package{multicol}} (siehe +\cite{package:multicol}) könnte man beispielsweise einen Literaturstil für ein +zweispaltiges Literaturverzeichnis definieren: +% Umbruchkorrektur: listings korrigiert +\begin{lstcode} + \newbibstyle{twocolumstyle}{% + \renewcommand*{\bib@beginhook}{\begin{multicols}{2}}% + \renewcommand*{\bib@endhook}{\end{multicols}}}% +\end{lstcode} +Soll es außerdem eine \emph{open}-Variante davon geben, kann man hier die +Möglichkeiten der Vererbung verwenden und bei der Definition einen Elternstil +mit angeben: +% Umbruchkorrektur: listings korrigiert +\begin{lstcode} + \newbibstyle[openstyle]{twocolumopenstyle}{% + \renewcommand*{\bib@beginhook}{\begin{multicols}{2}}% + \renewcommand*{\bib@endhook}{\end{multicols}}}% +\end{lstcode} +Die Auswahl eines dieser neuen Stile erfolgt dann einfach wieder über die +Option \DescRef{maincls.option.bibliography}. + +Wie\textnote{Achtung!} schon \DescRef{maincls.cmd.BreakBibliography} verlieren +auch diese Anweisungen ganz oder teilweise ihre Wirkung, wenn +\Environment{thebibliography} beispielsweise durch Verwendung von +\Package{biblatex}\IndexPackage{biblatex}\important{\Package{biblatex}} +umdefiniert wird.% +\EndIndexGroup + + +\section{Mehr oder weniger obsolete Optionen und Anweisungen} +\seclabel{obsolete} + +\LoadNonFree{scrbookreportarticle-experts}{4} +% +\EndIndexGroup + +\endinput + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "scrguide-de.tex" +%%% coding: utf-8 +%%% ispell-local-dictionary: "de_DE" +%%% eval: (flyspell-mode 1) +%%% End: + +% LocalWords: Sternvarianten Kapitelüberschrift Standardklassen Paketautoren +% LocalWords: Klassenoptionen Gliederungsbefehlen Namensliste umzudefinieren +% LocalWords: Inhaltsverzeichniseintrags Abstandsanweisungen Sternformen +% LocalWords: Teilüberschriften Benutzerfreundlichkeit Absatzmarkierung +% LocalWords: umkonfiguriert Teileüberschrift Abschnittsüberschrift +% LocalWords: Absolutwert Gliederungsbefehls Präfixzeile Schrifteinstellung +% LocalWords: Zählername Spitzmarke Kolumnentitels Schrifteinstellungen +% LocalWords: Strichstärke expandierbar expandierbaren expandierbares +% LocalWords: spartanisch Kapitelstil Spitzmarken Formatierungsanweisungen +% LocalWords: Kapitelüberschriften Gliederungsebenen Verzeichniseinträge +% LocalWords: Verzeichniseintragsstile Gliederungsbefehl Verzeichniseintrag +% LocalWords: Verzeichniseintrags Verzeichniseintragsstilen Gliederungsstil +% LocalWords: Gliederungsebene Eintragsebenen Absatzeinzug Dokumentpräambel |