summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/koma-script/source-doc/ngerman/scrbase.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/koma-script/source-doc/ngerman/scrbase.tex')
-rw-r--r--macros/latex/contrib/koma-script/source-doc/ngerman/scrbase.tex974
1 files changed, 444 insertions, 530 deletions
diff --git a/macros/latex/contrib/koma-script/source-doc/ngerman/scrbase.tex b/macros/latex/contrib/koma-script/source-doc/ngerman/scrbase.tex
index b311b53be2..435588f9b5 100644
--- a/macros/latex/contrib/koma-script/source-doc/ngerman/scrbase.tex
+++ b/macros/latex/contrib/koma-script/source-doc/ngerman/scrbase.tex
@@ -46,7 +46,7 @@
% ======================================================================
\KOMAProvidesFile{scrbase.tex}
- [$Date: 2019-10-09 15:19:04 +0200 (Wed, 09 Oct 2019) $
+ [$Date: 2019-12-03 09:41:21 +0100 (Tue, 03 Dec 2019) $
KOMA-Script package scrbase]
\chapter{Grundlegende Funktionen im Paket \Package{scrbase}}
@@ -77,10 +77,11 @@ diesen Anweisungen ist \cite{latex:clsguide} zu entnehmen.
Das Paket \Package{scrbase} benötigt intern die Funktionalität des Pakets
\Package{keyval}\IndexPackage{keyval}\important{\Package{keyval}}. Diese kann
auch vom Paket \Package{xkeyval} zur Verfügung gestellt werden. Bei Bedarf
-lädt \Package{scrbase} selbst \Package{keyval}.
+lädt \Package{scrbase} selbst \Package{keyval}. Näheres zu dem Paket is
+\cite{package:keyval} zu entnehmen.
Das Paket \Package{keyval} erlaubt es, Schlüssel zu definieren und diesen
-Werten zuzuweisen. Auch die Optionen, die \Package{scrbase} bereitstellt,
+Werte zuzuweisen. Auch die Optionen, die \Package{scrbase} bereitstellt,
verwenden die \Package{keyval}-Syntax: \OptionVName{\PName{Schlüssel}}{Wert}%
\important{\OptionVName{\PName{Schlüssel}}{Wert}}.
@@ -135,8 +136,7 @@ den Namen einzelner Pakete im Gesamtpaket als Mitglied zu verwenden.
befinden sich die Pakete \File{Salami.sty}, \File{Mettwurst.sty} und
\File{Krakauer.sty}. Daher entscheiden Sie sich für den Familienname
»\PValue{Fleischermeister}« und fügen in jedem der Pakete die Zeilen
-% Umbruchoptimierung: listings
-\begin{lstcode}[aboveskip=0pt plus \dp\strutbox]
+\begin{lstcode}
\DefineFamily{Fleischermeister}
\DefineFamilyMember{Fleischermeister}
\end{lstcode}
@@ -148,6 +148,7 @@ den Namen einzelner Pakete im Gesamtpaket als Mitglied zu verwenden.
\end{Example}
%
\EndIndexGroup
+\ExampleEndFix
\begin{Declaration}
@@ -190,34 +191,29 @@ eingesetzt. Falls kein \PName{Säumniswert} angegeben wird, kann später der
wobei \Macro{define@key} im \Package{keyval}-Paket\IndexPackage{keyval}
definiert ist (siehe \cite{package:keyval}). Allerdings kommen zu dem Aufruf
von \Macro{define@key} noch einige zusätzliche Vorkehrungen und auch die
- \PName{Aktion} wird um zusätzliche Vorkehrungen erweitert.
+ \PName{Aktion} wird automatisch um einige interne Aktionen erweitert.
%\end{Explain}
-Erfolg\ChangedAt{v3.12}{\Package{scrbase}} oder Misserfolg der Ausführung der
-\PName{Aktion} werden über
-\Macro{FamilyKeyState} %\important{\Macro{FamilyKeyState}} % einige davon sind
- % schlicht zu breit!
-an \Package{scrbase} zurückgemeldet, damit dieses je nach Bedarf und
-Verwendung des Schlüssels weitere Maßnahmen ergreifen kann. Dies kann
-beispielsweise eine Fehlermeldung aber auch nur die Signalisierung einer
-unbekannten Option sein.
-
-Der Zustand \Macro{FamilyKeyState} ist in der Voreinstellung identisch mit dem
-Zustand \Macro{FamilyKeyStateUnknown}. Das bedeutet, dass es nicht sicher ist,
-ob der Schlüssel korrekt verarbeitet werden konnte. Findet \Package{scrbase}
-nach Ausführung der \PName{Aktion} noch immer diesen Zustand vor, so wird ein
-Hinweis in die \File{log}-Datei geschrieben und im weiteren der Zustand
-\Macro{FamilyKeyStateProcessed} angenommen.
-
-Der Zustand
-\Macro{FamilyKeyStateProcessed} %\important{\Macro{FamilyKeyStateProcessed}}
-signalisiert, dass der Schlüssel und die Wertzuweisung an den Schlüssel
-vollständig abgeschlossen wurde und alles in Ordnung ist. Auf den Zustand kann
-einfach durch Aufruf von \Macro{FamilyKeyStateProcessed} selbst umgeschaltet
-werden.
-
-Der Zustand
-\Macro{FamilyKeyStateUnknownValue} %\important{\Macro{FamilyKeyStateUnknownValue}}
+Erfolg\ChangedAt{v3.12}{\Package{scrbase}} oder Misserfolg der Ausführung
+der \PName{Aktion} werden über \Macro{FamilyKeyState} an \Package{scrbase}
+zurückgemeldet, damit dieses je nach Bedarf und Verwendung des Schlüssels
+weitere Maßnahmen ergreifen kann. Das kann beispielsweise eine Fehlermeldung
+aber auch nur die Signalisierung einer unbekannten Option sein.
+
+Der Zustand\textnote{unbekannt} \Macro{FamilyKeyState} ist in der
+Voreinstellung identisch mit dem Zustand \Macro{FamilyKeyStateUnknown}. Das
+bedeutet, dass es nicht sicher ist, ob der Schlüssel korrekt verarbeitet
+werden konnte. Findet \Package{scrbase} nach Ausführung der \PName{Aktion}
+noch immer diesen Zustand vor, so wird ein Hinweis in die \File{log}-Datei
+geschrieben und im weiteren der Zustand \Macro{FamilyKeyStateProcessed}
+angenommen.
+
+Der Zustand\textnote{Erfolg} \Macro{FamilyKeyStateProcessed} signalisiert,
+dass der Schlüssel und die Wertzuweisung an den Schlüssel vollständig
+abgeschlossen wurde und alles in Ordnung ist. Auf den Zustand kann einfach
+durch Aufruf von \Macro{FamilyKeyStateProcessed} selbst umgeschaltet werden.
+
+Der Zustand\textnote{unbekannter Wert} \Macro{FamilyKeyStateUnknownValue}
signalisiert, dass der Schlüssel zwar verarbeitet wurde, ihm jedoch ein Wert
zugewiesen werden sollte, der nicht erlaubt ist. Diesen Zustand meldet
beispielsweise \hyperref[cha:typearea]{\Package{typearea}}, wenn versucht
@@ -225,8 +221,8 @@ wird, an Option \DescRef{typearea.option.twoside} den Wert \PValue{unbekannt}
zuzuweisen. Die Umschaltung auf den Zustand erfolgt einfach durch Aufruf von
\Macro{FamilyKeyStateUnknownValue} selbst.
-Der Zustand
-\Macro{FamilyKeyStateNeedValue} %\important{\Macro{FamilyKeyStateNeedValue}}
+Der Zustand\textnote{fehlender Wert}
+\Macro{FamilyKeyStateNeedValue}
signalisiert, dass der Schlüssel nicht verarbeitet werden konnte, weil er
zwingend einen Wert erwartet, er aber ohne Wertzuweisung aufgerufen
wurde. Dieser Zustand wird automatisch gesetzt, wenn ein Schlüssel, der keinen
@@ -234,9 +230,10 @@ wurde. Dieser Zustand wird automatisch gesetzt, wenn ein Schlüssel, der keinen
wäre aber auch eine explizite Umschaltung darauf durch Aufruf von
\Macro{FamilyKeyStateNeedValue} selbst möglich.
-Des Weiteren können zusätzliche Fehlerzustände definiert werden, indem man
-\Macro{FamilyKeyState} auf eine kurze Meldung umdefiniert. In der Regel
-sollten jedoch die vier vordefinierten Zustände verwendet werden.
+Des Weiteren können zusätzliche\textnote{Fehler} Fehlerzustände definiert
+werden, indem man \Macro{FamilyKeyState} auf eine kurze Meldung
+umdefiniert. In der Regel sollten jedoch die vier vordefinierten Zustände
+verwendet werden.
\begin{Example}
Nehmen wir an, jedes der drei Pakete aus dem letzten Beispiel soll einen
@@ -268,18 +265,19 @@ sollten jedoch die vier vordefinierten Zustände verwendet werden.
\end{Example}
%
\EndIndexGroup
+\ExampleEndFix
\begin{Declaration}
\Macro{RelaxFamilyKey}\OParameter{Mitglied}\Parameter{Familie}
\Parameter{Schlüssel}
\end{Declaration}
-Wurde\ChangedAt{v3.15}{\Package{scrbase}} \PName{Schlüssel} zuvor als
+Wurde\ChangedAt{v3.15}{\Package{scrbase}} zuvor \PName{Schlüssel} für das
\PName{Mitglied} der \PName{Familie} definiert, so wird diese Definition
quasi aufgehoben. Der \PName{Schlüssel} ist dann für dieses \PName{Mitglied}
der \PName{Familie} nicht mehr definiert. Die Verwendung für einen
\PName{Schlüssel}, der für dieses \PName{Mitglied} der \PName{Familie} gar
-nicht definiert ist, ist ebenfalls zulässig.
+nicht definiert ist, ist ebenfalls zulässig und bleibt wirkungslos.
Ist kein \PName{Mitglied} angegeben, so wird genau wie bei Anweisung
\DescRef{\LabelBase.cmd.DefineFamilyKey} wieder das Mitglied
@@ -318,9 +316,9 @@ Mitglieds gesetzt wird.
\end{lstcode}
ergänzt wird, so kann der Anwender bereits beim Laden der Pakete mit
\Macro{usepackage} die Eigenschaft \Option{Aufschnitt} als Option
- angeben. Wird die Option global, also bei \Macro{documentclass}, angegeben,
- so wird die Eigenschaft automatisch bei allen drei Paketen gesetzt, wenn
- alle drei Pakete einzeln geladen werden.
+ angeben. Wird die Option bei \Macro{documentclass} und damit global
+ angegeben, so wird die Eigenschaft automatisch bei allen drei Paketen
+ gesetzt, wenn alle drei Pakete einzeln geladen werden.
\end{Example}
Es\textnote{Achtung!} wird darauf hingewiesen, dass bei Paketen globale
Optionen vor den lokal dem Paket zugewiesenen Optionen ausgeführt
@@ -392,6 +390,7 @@ ausgeführt und bleibt auch über die Ausführung hinaus erhalten.
\Macro{BeforeFamilyProcessOptions} in \Package{Mettwurst} einschleusen.%
\end{Example}
\EndIndexGroup
+\ExampleEndFix
\begin{Declaration}
@@ -447,7 +446,7 @@ des Pakets gesetzt werden. Dazu verwendet der Anwender
\Macro{FamilyOptions}. Die \PName{Optionenliste} hat dabei die Form:
%\begin{flushleft}\begin{tabular}{l}
\PName{Schlüssel}\texttt{=}\PName{Wert}\texttt{,}\linebreak[1]%
- \PName{Schlüssel}\texttt{=}\PName{Wert} \dots{}
+ \PName{Schlüssel}\texttt{=}\PName{Wert} \dots{},
%\end{tabular}\vskip\dp\strutbox\end{flushleft}
wobei für \PName{Schlüssel}, für die ein Säumniswert definiert ist, die
Wertzuweisung natürlich auch entfallen kann.
@@ -518,15 +517,15 @@ zurückmeldet.
Rekursion vermieden.%
\end{Example}%
-Wie\ChangedAt{v3.27}{\Package{scrbase}} schon bei
-\DescRef{\LabelBase.cmd.FamilyExecuteOptions} gibt es auch bei
-\Macro{FamilyOptions} eine Sonderbehandlung für eine Option Namens
-\Option{@else@}\important{\Option{@else@}}. Ist eine solche für ein Mitglied
-definiert, so wird sie immer dann ausgeführt, wenn das Mitglied eine
-angegebene Option nicht kennt. Ist für die Familie selbst eine Option
-\Option{@else@} definiert, so wird sie nur aufgerufen, wenn weder die Familie
-noch eines ihrer Mitglieder eine angegebene Option vollständig verarbeiten
-konnte und mit \DescRef{\LabelBase.cmd.FamilyKeyStateProcessed} quitiert hat.%
+Für\ChangedAt{v3.27}{\Package{scrbase}} die Option Namens
+\Option{@else@}\important{\Option{@else}} existiert ähnlich wie bei Anweisung
+\DescRef{\LabelBase.cmd.FamilyExecuteOptions} eine Sonderbehandlung. Ist eine
+solche für ein Mitglied definiert, so wird sie immer dann ausgeführt, wenn das
+Mitglied eine angegebene Option nicht kennt. Ist für die Familie selbst eine
+Option \Option{@else@} definiert, so wird sie nur aufgerufen, wenn weder die
+Familie noch eines ihrer Mitglieder eine angegebene Option vollständig
+verarbeiten konnte und mit \DescRef{\LabelBase.cmd.FamilyKeyStateProcessed}
+quitiert hat.%
\EndIndexGroup
@@ -577,9 +576,16 @@ setzt. Die weitere Funktionsweise ist der vorhergehenden Erklärung zu
verwenden.
\end{Example}
+\iffalse% Umbruchkorrektur
Die\ChangedAt{v3.27}{\Package{scrbase}} Verarbeitung einer Option
\Option{@else@} findet in derselben Weise statt wie bei
\DescRef{\LabelBase.cmd.FamilyOptions}.%
+\else%
+Intern basiert \Macro{FamilyOption} auf
+\DescRef{\LabelBase.cmd.FamilyOptions}.
+Die\ChangedAt{v3.27}{\Package{scrbase}} Verarbeitung einer Option
+\Option{@else@} findet daher in gleicher Weise statt.%
+\fi%
\EndIndexGroup
@@ -594,17 +600,17 @@ von
\DescRef{\LabelBase.cmd.FamilyProcessOptions}\IndexCmd{FamilyProcessOptions}
oder
\DescRef{\LabelBase.cmd.FamilyExecuteOptions}\IndexCmd{FamilyExecuteOptions}
-beziehungsweise \DescRef{\LabelBase.cmd.FamilyOptions}\IndexCmd{FamilyOptions}
-oder \DescRef{\LabelBase.cmd.FamilyOption}\IndexCmd{FamilyOptions}
-abgeschlossen sind. Genau das ist mit Hilfe von \Macro{AtEndOfFamilyOptions}
-und dessen Sternvariante\ChangedAt{v3.23}{\Package{scrbase}} möglich. Die
-Rückmeldung von Fehlerzuständen ist über diese Anweisung jedoch ebenso wenig
-möglich wie die Verwendung dieser Anweisung außerhalb der Ausführung von
+respektive \DescRef{\LabelBase.cmd.FamilyOptions}\IndexCmd{FamilyOptions} oder
+\DescRef{\LabelBase.cmd.FamilyOption}\IndexCmd{FamilyOptions} abgeschlossen
+sind. Genau das ist mit Hilfe von \Macro{AtEndOfFamilyOptions} und der
+zugehörigen Sternvariante\ChangedAt{v3.23}{\Package{scrbase}} möglich. Die
+Rückmeldung von Fehlerzuständen ist über die Anweisungen jedoch ebenso wenig
+möglich wie die Verwendung der Anweisungen außerhalb der Ausführung von
Optionen.
-Die beiden Variante unterscheiden sich im Falle von verschachtelt definierten
+Die beiden Varianten unterscheiden sich im Falle von verschachtelt definierten
Optionen, wenn also die Ausführung einer Option den Aufruf einer oder mehrerer
-anderen Option bedingt. In diesem Fall werden alle per
+anderer Optionen bedingt. In diesem Fall werden alle per
\Macro{AtEndOfFamilyOptions} festgelegten Aktionen ausgeführt, sobald der
innerste Optionenaufruf endet. Dagegen werden die per
\Macro{AtEndOfFamilyOptions*} festgelegten Aktionen erst mit dem Ende des
@@ -641,16 +647,17 @@ Option ist immer \PValue{true}.
\Macro{FamilySetBool} wiederum versteht als \PName{Wert} neben \PValue{true}
auch die Werte \PValue{on} und \PValue{yes} zum Einschalten und neben
\PValue{false} auch die Werte \PValue{off} und \PValue{no} zum
-Ausschalten. Wird ein unbekannter Wert übergeben, so wird die Anweisung
-\DescRef{\LabelBase.cmd.FamilyUnknownKeyValue} mit den Argumenten
-\PName{Familie}, \PName{Schlüssel} und \PName{Wert} aufgerufen und so
-\DescRef{\LabelBase.cmd.FamilyKeyState} entsprechend gesetzt. Dadurch wird
-dann gegebenenfalls eine Meldung über eine unbekannte Wertzuweisung ausgegeben
-(siehe auch \DescPageRef{\LabelBase.cmd.FamilyUnknownKeyValue} und
-\DescPageRef{\LabelBase.cmd.FamilyKeyState}).
+Ausschalten. Wird ein unbekannter Wert übergeben, so wird die auf
+\DescPageRef{\LabelBase.cmd.FamilyUnknownKeyValue} erklärte Anweisung
+\DescRef{\LabelBase.cmd.FamilyUnknownKeyValue} aufgerufen und so
+\DescRef{\LabelBase.cmd.FamilyKeyState} (siehe
+\DescPageRef{\LabelBase.cmd.FamilyKeyState}) entsprechend gesetzt. Dadurch
+kann dann gegebenenfalls eine Meldung über eine unbekannte Wertzuweisung
+ausgegeben werden.%
\begin{Example}
Der Schlüssel \Option{Aufschnitt} soll in den Wurstpaketen etwas robuster
- definiert werden. Außerdem sollen alle Wurstpakete denselben Schalter
+ definiert werden, so dass Fehleingaben erkannt und behandelt
+ werden. Außerdem sollen alle Wurstpakete denselben Schalter
verwenden, so dass entweder alle Wurstpakete Aufschnitt produzieren oder
keines.
\begin{lstcode}
@@ -711,11 +718,13 @@ dann gegebenenfalls eine Meldung über eine unbekannte Wertzuweisung ausgegeben
\Macro{FamilySetBool} erfolgreich war oder nicht,
auszuführen. Es\textnote{Achtung!} ist zu beachten, dass an dieser Stelle
unbedingt ein Test mit Hilfe von \Macro{ifx} vorzunehmen ist. Expandierende
- Tests wie \Macro{ifstr} sind hier zu vermeiden. Sie können abhängig vom
- aktuellen Status und dem Vergleichszustand zu unterschiedlichen
+ Tests wie \DescRef{\LabelBase.cmd.Ifstr} sind hier zu vermeiden. Sie können
+ abhängig vom aktuellen Status und dem Vergleichszustand zu unterschiedlichen
Fehlermeldungen und auch zu falschen Ergebnissen führen.%
\end{Example}%
\EndIndexGroup
+\ExampleEndFix
+
\begin{Declaration}
\Macro{FamilyInverseBoolKey}\OParameter{Mitglied}\Parameter{Familie}
@@ -747,7 +756,7 @@ mehrere Werte kennen. So kann beispielsweise eine Ausrichtung nicht nur
entweder links oder nicht links, sondern auch links, mittig oder rechts
sein. Intern unterscheidet man solche Einstellungen dann gerne mit Hilfe von
\Macro{ifcase}\IndexCmd{ifcase}. Diese \TeX-Anweisung erwartet wiederum einen
-nummerischen Wert. Daher heißt bei \Package{scrbase} die Anweisung, mit der
+numerischen Wert. Daher heißt bei \Package{scrbase} die Anweisung, mit der
man via \PName{Schlüssel} einem Makro eine Definition zuweisen kann,
entsprechend \Macro{FamilyNumericalKey}.
@@ -818,11 +827,12 @@ Intern wird von \Macro{FamilyNumericalKey} dann
\DescRef{\LabelBase.cmd.DefineFamilyKey} mit der Anweisung
\Macro{FamilySetNumerical} verwendet. Wird an einen solchen Schlüssel ein
unbekannter Wert übergeben, so wird von \Macro{FamilySetNumerical} Anweisung
-\DescRef{\LabelBase.cmd.FamilyUnknownKeyValue} mit den Argumenten
-\PName{Familie}, \PName{Schlüssel} und \PName{Wert} aufgerufen. Dies führt zu
-einer Fehlersignalisierung in \DescRef{\LabelBase.cmd.FamilyKeyState} mit
-Hilfe des Status \DescRef{\LabelBase.cmd.FamilyKeyStateUnknownValue} und
-beispielsweise bei der Verwendung als lokale Option zu einer
+\DescRef{\LabelBase.cmd.FamilyUnknownKeyValue} (siehe
+\DescPageRef{\LabelBase.cmd.FamilyUnknownKeyValue}) aufgerufen. Dies führt zu
+einer Fehlersignalisierung, indem \DescRef{\LabelBase.cmd.FamilyKeyState} den
+Status \DescRef{\LabelBase.cmd.FamilyKeyStateUnknownValue} annimmt (siehe
+\DescPageRef{\LabelBase.cmd.FamilyKeyStateUnknownValue}). Daraus resultiert
+beispielsweise bei der Verwendung als lokale Option dann eine
Fehlermeldung. Ebenso wird beim Aufruf von \Macro{FamilySetNumerical} auch der
Erfolg via \DescRef{\LabelBase.cmd.FamilyKeyStateProcessed} in
\DescRef{\LabelBase.cmd.FamilyKeyState} signalisiert.%
@@ -840,10 +850,10 @@ Erfolg via \DescRef{\LabelBase.cmd.FamilyKeyStateProcessed} in
\end{Declaration}
Während\ChangedAt{v3.12}{\Package{scrbase}} bei
\DescRef{\LabelBase.cmd.FamilyNumericalKey} ein Makro aufgrund eines
-symbolischen Wertes auf einen korrespondierenden nummerischen Wert
+symbolischen Wertes auf einen korrespondierenden numerischen Wert
gesetzt wurde, gibt es natürlich auch Fälle, in denen ein \PName{Schlüssel}
direkt einen \PName{\LaTeX-Zähler} repräsentiert, dem unmittelbar ein
-nummerischer \PName{Wert} zugewiesen werden soll. Dazu dient die Anweisung
+numerischer \PName{Wert} zugewiesen werden soll. Dazu dient die Anweisung
\Macro{FamilyCounterKey}, von der intern dann \Macro{FamilySetCounter}
aufgerufen wird. Dabei finden einige grundlegende Prüfungen des
\PName{Wert}-Arguments statt um festzustellen, ob dieses Argument für eine
@@ -922,13 +932,13 @@ stattdessen der \PName{Säumniswert} eingesetzt. Falls kein \PName{Säumniswert}
angegeben wird, kann später der \PName{Schlüssel} nur mit Wertübergabe
verwendet werden.
-Bei Verwendung der Anweisungen \Macro{FamilyLengthMacroKey} und
-\Macro{FamilyUseLengthMacroKey} beziehungsweise \Macro{FamilySetLengthMacro}
-und \Macro{FamilySetUseLengthMacro} findet die Speicherung des Wertes nicht in
-einer \PName{Länge}, sondern in einem \PName{Makro} statt. Dabei wird bei
-\Macro{FamilyLengthMacroKey} und \Macro{FamilySetLengthMacro} vergleichbar zu
-\Macro{setlength} der aktuelle \PName{Wert} zum Zeitpunkt des Aufrufs der
-beiden Anweisungen in \PName{Makro} gespeichert. Dagegen wird bei
+\Macro{FamilyLengthMacroKey} und \Macro{FamilySetLengthMacroKey} sowie
+\Macro{FamilyUseLengthMacro} und \Macro{FamilySetUseLengthMacro} verwenden für
+die Speicherung des Wertes keine \PName{Länge}, sondern ein \PName{Makro}. Bei
+\Macro{FamilyLengthMacroKey} und \Macro{FamilySetLengthMacro} wird wie im
+Falle einer \PName{Länge} der aktuelle \PName{Wert} zum Zeitpunkt der
+Verwendung des Schlüssels beziehungsweise der Anweisung in \PName{Makro}
+gespeichert. Dagegen wird bei
\Macro{FamilyUseLengthMacroKey}\ChangedAt{v3.20}{\Package{scrbase}} und
\Macro{FamilySetUseLengthMacro} \PName{Wert} selbst gespeichert. Damit wird
\PName{Wert} dann bei jeder Verwendung von \PName{Makro} neu ausgewertet.%
@@ -941,7 +951,7 @@ beiden Anweisungen in \PName{Makro} gespeichert. Dagegen wird bei
\OParameter{Säumniswert}\Parameter{Makro}
\Macro{FamilyCSKey}\OParameter{Mitglied}\Parameter{Familie}
\Parameter{Schlüssel}
- \OParameter{Säumniswert}\Parameter{Makronamen}
+ \OParameter{Säumniswert}\Parameter{Makroname}
\end{Declaration}
Hier wird nun\ChangedAt{v3.08}{\Package{scrbase}} ein Schlüssel definiert, der
jeden beliebigen Wert annehmen kann. Der Wert wird in dem angegebenen
@@ -963,7 +973,7 @@ das optionale Argument für den \PName{Säumniswert} so entspricht die Anweisung
In der Voreinstellung sollen 250\,g Wurstsalat erzeugt werden. Die Menge
soll jedoch einfach per Option geändert werden können. Dazu wird die zu
erstellende Menge im Makro \Macro{Salatgewicht} gespeichert. Die Option,
- über die das Gewicht geändert werden kann, soll ebenfalls
+ über die das Gewicht geändert werden kann, soll \iffalse ebenfalls \fi
\PValue{Salatgewicht} heißen:
\begin{lstcode}
\newcommand*{\Salatgewicht}{250g}
@@ -972,7 +982,7 @@ das optionale Argument für den \PName{Säumniswert} so entspricht die Anweisung
{\Salatgewicht}
\end{lstcode}
Soll nach einer Änderung
- \iffalse% Umbruchkorrekturtext
+ \iftrue% Umbruchkorrekturtext
wie
\begin{lstcode}
\FamilyOptions{Fleichermeister}{Salatgewicht=100g}
@@ -987,9 +997,9 @@ das optionale Argument für den \PName{Säumniswert} so entspricht die Anweisung
Das ist möglich, weil die Standardmenge bei der Definition auch als
Säumniswert angegeben wurde.
\end{Example}
-In diesem Fall existieren keine unbekannten Werte, da alle Werte schlicht für
-eine Makrodefinition verwendet werden. Es ist jedoch zu beachten, dass in der
-Wertzuweisung an den Schlüssel keine Absätze enthalten sein dürfen.
+Da alle Werte unmittelbar für eine Makrodefinition verwendet werden, gibt es
+keine unbekannten Werte. In der Wertzuweisung an den \PName{Schlüssel} dürfen
+jedoch keine Absätze enthalten sein.
Im\ChangedAt{v3.25}{\Package{scrbase}} Unterschied zu \Macro{FamilyStringKey}
erwartet \Macro{FamilyCSKey} kein Makro als letztes Argument, sondern
@@ -1033,7 +1043,7 @@ erwartet. Allerdings\ChangedAt{v3.12}{\Package{scrbase}} wird die
\ifx\FamilyKeyState\FamilyKeyStateProcessed
\@Feinschnittfalse
\else
- \ifstr{#1}{fein}{%
+ \Ifstr{#1}{fein}{%
\@Aufschnitttrue
\@Feinschnittrue
\FamilyKeyStateProcessed
@@ -1068,488 +1078,360 @@ erwartet. Allerdings\ChangedAt{v3.12}{\Package{scrbase}} wird die
einfach verzichten und damit den Fehlerstatus von
\DescRef{\LabelBase.cmd.FamilySetBool} übernehmen können.
- Die bei den Tests verwendete Anweisung \Macro{ifstr}\IndexCmd{ifstr} ist auf
- \DescPageRef{scrbase.cmd.ifstr} in \autoref{sec:scrbase.if} erklärt.
+ Die bei den Tests verwendete Anweisung
+ \DescRef{\LabelBase.cmd.Ifstr}\IndexCmd{Ifstr} ist auf
+ \DescPageRef{scrbase.cmd.Ifstr} in \autoref{sec:scrbase.if} erklärt.
\end{Example}
%
\EndIndexGroup
-
-
-\begin{Declaration}
- \Macro{FamilyElseValues}
-\end{Declaration}
-In\ChangedAt{v3.12}{\Package{scrbase}} früheren\textnote{Veraltet!} Versionen
-von \Package{scrbase} konnte man über die Anweisung \Macro{FamilyElseValues}
-weitere erlaubte Werte für die Bearbeitung durch
-\DescRef{\LabelBase.cmd.FamilyUnknownKeyValue}
-\iffalse% Umbruchkorrekturtext
-in der Form
-\begin{flushleft}\vskip\dp\strutbox\begin{tabular}{l}
- \texttt{,} `\PName{Wert}'\texttt{,} `\PName{Wert}' \dots
-\end{tabular}\vskip\dp\strutbox\end{flushleft}
-\fi%
-ablegen, die dann ebenfalls in einer Fehlermeldung mit ausgegeben wurden. Seit
-Version~3.12 gibt \DescRef{\LabelBase.cmd.FamilyUnknownKeyValue} keine
-Fehlermeldungen mehr aus, sondern setzt nur noch
-\DescRef{\LabelBase.cmd.FamilyKeyState} entsprechend. Damit ist die Verwendung
-von \Macro{FamilyElseValue} ebenfalls überholt. Ihre Verwendung wird jedoch
-erkannt und führt dann zu einer Aufforderung, den Code entsprechend
-anzupassen.%
-\EndIndexGroup
+\ExampleEndFix
\section{Verzweigungen}
\seclabel{if}
-Das Paket \Package{scrbase} stellt eine ganze Reihe von
-Verzweigungsanweisungen zur Verfügung. Dabei wird nicht auf die \TeX-Syntax
-von Verzweigungen wie beispielsweise
-\begin{lstcode}
- \iftrue
- ...
- \else
- ...
- \fi
-\end{lstcode}
-gebaut, sondern es wird die \LaTeX-Syntax mit Argumenten eingesetzt, wie man
-sie auch von \LaTeX-Anweisungen wie \Macro{IfFileExists},
-\Macro{@ifundefined}, \Macro{@ifpackageloaded} und vielen weiteren
-kennt. Einige Paketautoren ziehen es allerdings vor, die \TeX-Syntax auch für
-Anwender in die \LaTeX-Ebene zu bringen. Da es sich bei den Verzweigungen von
-\Package{scrbase} um recht grundlegende Möglichkeiten handelt, ist die
-Wahrscheinlichkeit gegeben, dass dabei gleichnamige Anwenderanweisungen
-verwendet würden. Dies könnte selbst bei eigentlich gleicher Semantik
-zu einem Problem aufgrund unterschiedlichen Syntax
-führen. \Package{scrbase} geht daher auf Nummer sicher.
+Das Paket \Package{scrbase} stellt diverse Verzweigungsanweisungen zur
+Verfügung. Dabei wird überwiegend die \LaTeX-Syntax mit Argumenten eingesetzt,
+die man von Anweisungen wie \Macro{IfFileExists}\iffalse % Umbruchkorrektur
+, \Macro{@ifundefined}, \Macro{@ifpackageloaded} und vielen weiteren\fi %
+\ kennt.
\begin{Declaration}
- \OptionVName{internalonly}{Wert}
-\end{Declaration}
-Von \Package{scrbase} werden einige Verzweigungsanweisungen
-bereitgestellt. Dabei verwendet es primär die Bezeichnungen
-\Macro{scr@\PName{Name}}\textnote{Paketautoren}. Es handelt sich somit
-um interne Anweisungen. Diese werden auch intern von \KOMAScript{}
-verwendet. Paket- und Klassenautoren können diese Anweisungen ebenfalls
-verwenden, sollten sie aber nicht umdefinieren. Da einige dieser Anweisungen
-auch für Benutzer nützlich sein können, werden die gleichen Anweisungen
-normalerweise auch als \Macro{\PName{Name}}\textnote{Anwender}
-bereitgestellt. Da eventuell andere Pakete gleichnamige Anweisungen mit
-anderer Syntax bereitstellen könnten und es so zu Konflikten kommen könnte,
-kann der Anwender die Definition von \Macro{\PName{Name}} verhindern. Dazu
-gibt er entweder die Option ohne Wertangabe an. In diesem Fall werden nur die
-internen Verzweigungsanweisungen definiert. Oder er gibt genau die
-Anweisungen, die nicht definiert werden sollen, als Wert an, wobei er
-»\Macro{}« durch »\texttt{/}« ersetzt.
-
-Paket- und Klassenautoren sollten diese Option normalerweise nicht verwenden.
-Anwender können sie mit oder ohne Wertangabe entweder als globale Option bei
-\DescRef{maincls.cmd.documentclass} oder per
-\Macro{PassOptionsToPackage}\IndexCmd{PassOptionsToPackage} angeben.
-\begin{Example}
- Der Anwender will nicht, dass die Anweisungen
- \DescRef{\LabelBase.cmd.ifVTeX} und
- \DescRef{\LabelBase.cmd.ifundefinedorrelax} von \Package{scrbase} definiert
- werden. Also verwendet er beim Laden der Klasse:
-\begin{lstcode}
- \documentclass[%
- internalonly=/ifVTeX/ifundefinedorrelax%
- ]{foo}
-\end{lstcode}
- Der Klassenname \Class{foo} wird hier als Platzhalter für irgendeine Klasse
- verwendet. Die Anweisungen \DescRef{\LabelBase.cmd.ifVTeX}
- und \DescRef{\LabelBase.cmd.ifundefinedorrelax} werden im weiteren Verlauf
- dieses Abschnittes erklärt.%
-\end{Example}
-
-Paket- und Klassenautoren sollten wie \KOMAScript{} selbst auch die internen
-Namen verwenden. Zur Vollständigkeit sind in den nachfolgenden Erklärungen
-aber auch die Anwenderanweisungen angegeben.%
-\EndIndexGroup
-
-
-\begin{Declaration}
- \Macro{scr@ifundefinedorrelax}
- \Parameter{Name}\Parameter{Dann-Teil}\Parameter{Sonst-Teil}
- \Macro{ifundefinedorrelax}
+ \Macro{Ifundefinedorrelax}
\Parameter{Name}\Parameter{Dann-Teil}\Parameter{Sonst-Teil}
\end{Declaration}
-Diese Anweisung funktioniert prinzipiell wie \Macro{@ifundefined} aus dem
-\LaTeX-Kern (siehe \cite{latex:source2e}). Es wird also der \PName{Dann-Teil}
-ausgeführt, wenn \PName{Name} der Name einer undefinierten Anweisung oder
-\Macro{\PName{Name}} derzeit \Macro{relax} ist. Im Unterschied zu
-\Macro{@ifundefined} wird %
+Diese\ChangedAt{v3.28}{\Package{scrbase}} Anweisung funktioniert
+prinzipiell wie \Macro{@ifundefined} aus dem \LaTeX-Kern (siehe
+\cite{latex:source2e}). Es wird also der \PName{Dann-Teil} ausgeführt, wenn
+\PName{Name} der Name einer undefinierten Anweisung oder \Macro{\PName{Name}}
+derzeit \Macro{relax} ist. Im Unterschied zu \Macro{@ifundefined} wird auch
+bei älteren \LaTeX-Versionen %
\iftrue% Umbruchvarianten
weder Hash-Speicher belegt noch \Macro{\PName{Name}} %
\else%
\Macro{\PName{Name}} nicht %
\fi%
-zu \Macro{relax}, wenn \Macro{\PName{Name}} zuvor undefiniert war.%
+zu \Macro{relax}, wenn \Macro{\PName{Name}} zuvor undefiniert
+war.
\EndIndexGroup
\begin{Declaration}
- \Macro{ifnotundefined}\Parameter{Name}%
+ \Macro{Ifnotundefined}\Parameter{Name}%
\Parameter{Dann-Teil}\Parameter{Sonst-Teil}
\end{Declaration}
-Ist die Anweisung mit dem angegebenen Namen bereits definiert wird der
-\PName{Dann-Teil} ausgeführt, anderenfalls der \PName{Sonst-Teil}. Da es bei
-\eTeX{} bereits ein Primitiv \Macro{ifdefined} gibt, musste leider diese
-etwas unhandliche Bezeichnung gewählt werden. %
-\iftrue% Umbruchvaritanten
-Von dieser Anweisung gibt es keine interne Variante.%
+Ist\ChangedAt{v3.28}{\Package{scrbase}} die Anweisung mit dem angegebenen
+Namen bereits definiert wird der \PName{Dann-Teil} ausgeführt, anderenfalls
+der \PName{Sonst-Teil}.\iftrue % Umbruchkorrektur
+\ Da es bereits ein Paket mit einer inkompatiblen
+Anweisung \Macro{Ifdefined} gibt, musste leider diese etwas unhandliche
+Bezeichnung gewählt werden.%
+\iffalse%
+\iftrue% Umbruchvarianten
+\ Von dieser Anweisung gibt es keine interne Variante.%
\else%
-Es gibt keine interne Variante.%
+\ Es gibt keine interne Variante.%
+\fi%
\fi%
-\EndIndexGroup
-
-
-\begin{Declaration}
- \Macro{scr@ifluatex}
- \Parameter{Dann-Teil}\Parameter{Sonst-Teil}
-\end{Declaration}
-Wird\ChangedAt{v3.21}{\Package{scrbase}} mit lua\TeX{} gearbeitet, wird der
-\PName{Dann-Teil} ausgeführt, anderenfalls der \PName{Sonst-Teil}.
-\iftrue% Umbruchkorrekturtext
-Diese Unterscheidung ist nur sehr selten wirklich von Nutzen. %
\fi%
-In der Regel sollte man besser auf die gewünschte Anweisung
-testen. Von\textnote{Achtung!} dieser Anweisung gibt es kein
-Benutzeräquivalent. Verwenden Sie stattdessen bei Bedarf das Paket
-\Package{ifluatex}\important{\Package{ifluatex}} (siehe
-\cite{package:ifluatex}).%
-\EndIndexGroup
-
-
-\iffalse% Es ergibt keinen Sinn, diese Anweisung noch zu dokumentieren
-\begin{Declaration}
- \Macro{scr@ifpdforluatex}
- \Parameter{Dann-Teil}\Parameter{Sonst-Teil}
-\end{Declaration}
-Bis lua\TeX~0.85 war es meist unerheblich, ob mit pdf\TeX{} oder lua\TeX{}
-gearbeitet wurde. Von daher stammt diese Anweisung, die in beiden Fällen den
-\PName{Dann-Teil} ausführt. Wird weder mit pdf\TeX{} noch mit lua\TeX{}
-gearbeitet, so wird der \PName{Sonst-Teil} ausgeführt.
-Seit Version 0.85 wurde bei lua\TeX{} die Kompatibilität bei vielen der
-zusätzlichen Befehle jedoch aufgegeben. Daher ist diese Unterscheidung in der
-Praxis nicht mehr von Nutzen und wird von \KOMAScript{} selbst auch nicht mehr
-verwendet. Von dieser Anweisung gibt es auch kein Benutzeräquivalent.%
\EndIndexGroup
-\fi
\begin{Declaration}
- \Macro{scr@ifpdftex}
- \Parameter{Dann-Teil}\Parameter{Sonst-Teil}
- \Macro{ifpdftex}
+ \Macro{Ifstr}\Parameter{Zeichenfolge}\Parameter{Zeichenfolge}%
\Parameter{Dann-Teil}\Parameter{Sonst-Teil}
\end{Declaration}
-Wird mit pdf\TeX{} gearbeitet, wird der \PName{Dann-Teil} ausgeführt,
-anderenfalls der \PName{Sonst-Teil}. Dabei ist es unerheblich, ob tatsächlich
-eine PDF-Datei ausgegeben werden soll oder nicht.
-\iftrue% Umbruchkorrekturtext
-Diese Unterscheidung ist nur sehr selten wirklich von Nutzen. %
+Die\ChangedAt{v3.28}{\Package{scrbase}} beiden Argumente \PName{Zeichenfolge}
+werden expandiert und dann verglichen. Sind sie gleich, so wird der
+\PName{Dann-Teil} ausgeführt, anderenfalls der \PName{Sonst-Teil}.%
+\iffalse% Umbruchkorrektur
+\iftrue% Umbruchvarianten
+\ Von dieser Anweisung gibt es keine interne Variante.%
+\else%
+\ Es gibt keine interne Variante.%
+\fi%
\fi%
-In der Regel sollte man besser auf die gewünschte Anweisung testen.%
\EndIndexGroup
\begin{Declaration}
- \Macro{scr@ifVTeX}
- \Parameter{Dann-Teil}\Parameter{Sonst-Teil}
- \Macro{ifVTeX}
- \Parameter{Dann-Teil}\Parameter{Sonst-Teil}
+ \Macro{Ifstrstart}\Parameter{Zeichenfolge}\Parameter{Zeichenfolge}
+ \Parameter{Dann-Teil}\Parameter{Sonst-Teil}
\end{Declaration}
-Wird mit V\TeX{} gearbeitet, wird der \PName{Dann-Teil} ausgeführt,
-anderenfalls der \PName{Sonst-Teil}.
-\iftrue% Umbruchkorrekturtext
-Diese Unterscheidung ist nur sehr selten wirklich von Nutzen. %
+Die\ChangedAt{v3.12}{\Package{scrbase}}\ChangedAt{v3.28}{\Package{scrbase}}
+beiden Argumente \PName{Zeichenfolge} werden expandiert und dann
+verglichen. Beginnt die erste Zeichenfolge, von Leerzeichen abgesehen, mit der
+zweiten Zeichenfolge, so wird der \PName{Dann-Teil} ausgeführt, anderenfalls
+der \PName{Sonst-Teil}.%
+\iffalse% Umbruchkorrektur
+\iftrue% Umbruchvarianten
+\ Von dieser Anweisung gibt es keine interne Variante.%
+\else%
+\ Es gibt keine interne Variante.%
+\fi%
\fi%
-In der Regel sollte man besser auf die gewünschte Anweisung testen.%
\EndIndexGroup
\begin{Declaration}
- \Macro{scr@ifpdfoutput}
- \Parameter{Dann-Teil}\Parameter{Sonst-Teil}
- \Macro{ifpdfoutput}
+ \Macro{Ifpdfoutput}
\Parameter{Dann-Teil}\Parameter{Sonst-Teil}
\end{Declaration}
-Wird eine PDF-Datei erzeugt, wird der \PName{Dann-Teil} ausgeführt,
-anderenfalls der \PName{Sonst-Teil}. Dabei ist es unerheblich, ob die
-PDF-Datei mit Hilfe von lua\TeX{}, pdf\TeX{}, V\TeX{} oder \XeTeX{} erzeugt
-wird.%
+Wird\ChangedAt{v3.28}{\Package{scrbase}} eine PDF-Datei erzeugt, wird der
+\PName{Dann-Teil} ausgeführt, anderenfalls der \PName{Sonst-Teil}. Dabei ist
+es unerheblich, ob die PDF-Datei mit Hilfe von lua\TeX{}, pdf\TeX{}, V\TeX{}
+oder \XeTeX{} erzeugt wird.%
\EndIndexGroup
\begin{Declaration}
- \Macro{scr@ifpsoutput}
- \Parameter{Dann-Teil}\Parameter{Sonst-Teil}
- \Macro{ifpsoutput}
+ \Macro{Ifpsoutput}
\Parameter{Dann-Teil}\Parameter{Sonst-Teil}
\end{Declaration}
-Wird eine PostScript-Datei erzeugt, wird der \PName{Dann-Teil} ausgeführt,
-anderenfalls der \PName{Sonst-Teil}. V\TeX{} kann PostScript direkt erzeugen,
-was hier erkannt wird. Wird hingegen kein V\TeX{} verwendet, ist aber ein
-Schalter \Macro{if@dvips} definiert, so wird die Entscheidung darüber
-getroffen. \KOMAScript{} stellt \Macro{if@dvips} in
+Wird\ChangedAt{v3.28}{\Package{scrbase}} eine PostScript-Datei erzeugt, wird
+der \PName{Dann-Teil} ausgeführt, anderenfalls der \PName{Sonst-Teil}. V\TeX{}
+kann PostScript direkt erzeugen, was hier erkannt wird. Wird hingegen kein
+V\TeX{} verwendet, ist aber ein Schalter \Macro{if@dvips} definiert, so wird
+die Entscheidung darüber getroffen. \KOMAScript{} stellt \Macro{if@dvips} in
\hyperref[cha:typearea]{\Package{typearea}}\IndexPackage{typearea}%
\IndexCmd{if@dvips} bereit.%
\EndIndexGroup
-\begin{Declaration}
- \Macro{scr@ifdvioutput}
- \Parameter{Dann-Teil}\Parameter{Sonst-Teil}
- \Macro{ifdvioutput}
- \Parameter{Dann-Teil}\Parameter{Sonst-Teil}
-\end{Declaration}
-Wird eine DVI-Datei erzeugt, so wird der \PName{Dann-Teil} ausgeführt,
-anderenfalls der \PName{Sonst-Teil}. Es wird immer dann davon ausgegangen,
-dass eine DVI-Datei erzeugt wird, wenn keine direkte Ausgabe einer PDF- oder
-Postscript-Datei erkannt werden kann.%
-\EndIndexGroup
-
-
-\begin{Declaration}
- \Macro{if@atdocument}\ \PName{Dann-Teil}\ %
- \textMacro{else}\ \PName{Sonst-Teil} \textMacro{fi}
-\end{Declaration}
-Diese Verzweigung existiert ganz bewusst nur als interne Anweisung. Dabei
-entspricht \Macro{if@atdocument} in der Dokumentpräambel \Macro{iffalse}, nach
-\Macro{begin}\PParameter{document} entspricht \Macro{if@atdocument} hingegen
-\Macro{iftrue}. Klassen und Paketautoren können dieses Anweisung manchmal
-sinnvoll nutzen, wenn sich Anweisungen in der Dokumentpräambel anders
-verhalten sollen als innerhalb des Dokuments. Es\textnote{Achtung!} ist zu
-beachten, dass es sich bei dieser Anweisung um eine Verzweigung in \TeX-Syntax
-und nicht in \LaTeX-Syntax handelt!
-%
-\EndIndexGroup
-
-
-\begin{Declaration}
- \Macro{ifstr}\Parameter{Zeichenfolge}\Parameter{Zeichenfolge}%
+\begin{Declaration}[0]
+ \Macro{Ifdvioutput}
\Parameter{Dann-Teil}\Parameter{Sonst-Teil}
\end{Declaration}
-Die beiden Argumente \PName{Zeichenfolge} werden expandiert und dann
-verglichen. Sind sie dabei gleich, so wird der \PName{Dann-Teil} ausgeführt,
-anderenfalls der \PName{Sonst-Teil}. %
-\iftrue% Umbruchvaritanten
-Von dieser Anweisung gibt es keine interne Variante.%
-\else%
-Es gibt keine interne Variante.%
-\fi%
+Wird \ChangedAt{v3.28}{\Package{scrbase}}eine DVI-Datei erzeugt, so wird der
+\PName{Dann-Teil} ausgeführt, anderenfalls der \PName{Sonst-Teil}. Es wird
+immer dann davon \iffree{}{\pagebreak}% Umbruchkorrektur
+ausgegangen, dass eine DVI-Datei erzeugt wird, wenn keine
+direkte Ausgabe einer PDF- oder Postscript-Datei erkannt werden kann.%
\EndIndexGroup
\begin{Declaration}
- \Macro{ifstrstart}\Parameter{Zeichenfolge}\Parameter{Zeichenfolge}
- \Parameter{Dann-Teil}\Parameter{Sonst-Teil}
+ \Macro{Ifisdimen}\Parameter{Code}\Parameter{Dann-Teil}\Parameter{Sonst-Teil}
\end{Declaration}
-Die\ChangedAt{v3.12}{\Package{scrbase}} beiden Argumente \PName{Zeichenfolge}
-werden expandiert und dann verglichen. Beginnt die erste Zeichenfolge, von
-Leerzeichen abgesehen, mit der zweiten Zeichenfolge, so wird der
-\PName{Dann-Teil} ausgeführt, anderenfalls der \PName{Sonst-Teil}. %
-\iftrue% Umbruchvaritanten
-Von dieser Anweisung gibt es keine interne Variante.%
+Wenn\ChangedAt{v3.12}{\Package{scrbase}}\ChangedAt{v3.28}{\Package{scrbase}}
+die Expansion von \PName{Code} in einem \Macro{dimen}, also einem
+\TeX-Längenregister, resultiert, wird der \PName{Dann-Teil} ausgeführt,
+anderenfalls der \PName{Sonst-Teil}. Die Anweisung ist nicht voll
+expandierbar.%
+\iffalse% Umbruchkorrektur
+\iftrue% Umbruchvarianten
+\ Von dieser Anweisung gibt es keine interne Variante.%
\else%
-Es gibt keine interne Variante.%
+\ Es gibt keine interne Variante.%
\fi%
-\EndIndexGroup
-
-
-\begin{Declaration}
- \Macro{ifisdimen}\Parameter{Code}\Parameter{Dann-Teil}\Parameter{Sonst-Teil}
-\end{Declaration}
-Wenn\ChangedAt{v3.12}{\Package{scrbase}} die Expansion von \PName{Code} in
-einem \Macro{dimen}, also einem \TeX-Längenregister, resultiert, wird der
-\PName{Dann-Teil} ausgeführt, anderenfalls der \PName{Sonst-Teil}. Die
-Anweisung ist nicht voll expandierbar. %
-\iftrue% Umbruchvaritanten
-Von dieser Anweisung gibt es keine interne Variante.%
-\else%
-Es gibt keine interne Variante.%
\fi%
\EndIndexGroup
\begin{Declaration}
- \Macro{ifisdimension}\Parameter{Code}%
+ \Macro{Ifisdimension}\Parameter{Code}%
\Parameter{Dann-Teil}\Parameter{Sonst-Teil}
\end{Declaration}
-Wenn\ChangedAt{v3.12}{\Package{scrbase}} die Expansion von \PName{Code} in
-etwas resultiert, das syntaktisch dem Wert einer Länge entspricht, wird der
-\PName{Dann-Teil} ausgeführt, anderenfalls der \PName{Sonst-Teil}. Es ist zu
-beachten,\textnote{Achtung!} dass derzeit unbekannte Einheiten zu einer
-Fehlermeldung führen. Die Anweisung ist nicht voll expandierbar. %
-\iftrue% Umbruchvaritanten
-Von dieser Anweisung gibt es keine interne Variante.%
+Wenn\ChangedAt{v3.12}{\Package{scrbase}}\ChangedAt{v3.28}{\Package{scrbase}}
+die Expansion von \PName{Code} in etwas resultiert, das syntaktisch dem Wert
+einer Länge entspricht, wird der \PName{Dann-Teil} ausgeführt, anderenfalls
+der \PName{Sonst-Teil}. Es ist zu beachten,\textnote{Achtung!} dass derzeit
+unbekannte Einheiten zu einer Fehlermeldung führen. Die Anweisung ist nicht
+voll expandierbar.%
+\iffalse% Umbruchkorrektur
+\iftrue% Umbruchvarianten
+\ Von dieser Anweisung gibt es keine interne Variante.%
\else%
-Es gibt keine interne Variante.%
+\ Es gibt keine interne Variante.%
+\fi%
\fi%
\EndIndexGroup
\begin{Declaration}
- \Macro{ifdimen}\Parameter{Zeichenfolge}%
+ \Macro{Ifdimen}\Parameter{Zeichenfolge}%
\Parameter{Dann-Teil}\Parameter{Sonst-Teil}
\end{Declaration}
-Der \PName{Dann-Teil} wird ausgeführt, wenn die einfache Expansion der
+Der\ChangedAt{v3.28}{\Package{scrbase}}\ChangedAt{v3.28}{\Package{scrbase}}
+\PName{Dann-Teil} wird ausgeführt, wenn die einfache Expansion der
\PName{Zeichenfolge} eine gültige Länge mit einer gültigen Längeneinheit
-ist. Anderenfalls wird der \PName{Sonst-Teil} verwendet. %
-\iftrue% Umbruchvaritanten
-Von dieser Anweisung gibt es keine interne Variante.%
+ergibt. Anderenfalls wird der \PName{Sonst-Teil} verwendet.%
+\iffalse% Umbruchkorrektur
+\iftrue% Umbruchvarianten
+\ Von dieser Anweisung gibt es keine interne Variante.%
\else%
-Es gibt keine interne Variante.%
+\ Es gibt keine interne Variante.%
+\fi%
\fi%
-%
\EndIndexGroup
\begin{Declaration}
- \Macro{ifisdimexpr}\Parameter{Code}
+ \Macro{Ifisdimexpr}\Parameter{Code}
\Parameter{Dann-Teil}\Parameter{Sonst-Teil}
\end{Declaration}
-Wenn\ChangedAt{v3.12}{\Package{scrbase}} die Expansion von \PName{Code} in
-einer \Macro{dimexpr}\IndexCmd{dimexpr}, also einem \eTeX-Längenausdruck
-resultiert, wird der \PName{Dann-Teil} ausgeführt, anderenfalls der
-\PName{Sonst-Teil}. Es ist zu beachten,\textnote{Achtung!} dass fehlerhafte
-Ausdrücke zu Fehlermeldungen führen! Die Anweisung ist nicht voll
-expandierbar. %
-\iftrue% Umbruchvaritanten
-Von dieser Anweisung gibt es keine interne Variante.%
+Wenn\ChangedAt{v3.12}{\Package{scrbase}}\ChangedAt{v3.28}{\Package{scrbase}}
+die Expansion von \PName{Code} in einer \Macro{dimexpr}\IndexCmd{dimexpr},
+also einem \eTeX-Längenausdruck resultiert, wird der \PName{Dann-Teil}
+ausgeführt, anderenfalls der \PName{Sonst-Teil}. Es ist zu
+beachten,\textnote{Achtung!} dass fehlerhafte Ausdrücke zu Fehlermeldungen
+führen. Die Anweisung ist nicht voll expandierbar.%
+\iffalse% Umbruchkorrektur
+\iftrue% Umbruchvarianten
+\ Von dieser Anweisung gibt es keine interne Variante.%
\else%
-Es gibt keine interne Variante.%
+\ Es gibt keine interne Variante.%
+\fi%
\fi%
\EndIndexGroup
\begin{Declaration}
- \Macro{ifisskip}\Parameter{Code}\Parameter{Dann-Teil}\Parameter{Sonst-Teil}
+ \Macro{Ifisskip}\Parameter{Code}\Parameter{Dann-Teil}\Parameter{Sonst-Teil}
\end{Declaration}
-Wenn\ChangedAt{v3.12}{\Package{scrbase}} die Expansion von \PName{Code} in
-einem \Macro{skip}, also einem \TeX-Abstand, resultiert, wird der
-\PName{Dann-Teil} ausgeführt, anderenfalls der \PName{Sonst-Teil}. Die
-Anweisung ist nicht voll expandierbar. %
-\iftrue% Umbruchvaritanten
-Von dieser Anweisung gibt es keine interne Variante.%
+Wenn\ChangedAt{v3.12}{\Package{scrbase}}\ChangedAt{v3.28}{\Package{scrbase}}
+die Expansion von \PName{Code} in einem \Macro{skip}, also einem \TeX-Abstand,
+resultiert, wird der \PName{Dann-Teil} ausgeführt, anderenfalls der
+\PName{Sonst-Teil}. Die Anweisung ist nicht voll expandierbar.%
+\iffalse% Umbruchkorrektur
+\iftrue% Umbruchvarianten
+\ Von dieser Anweisung gibt es keine interne Variante.%
\else%
-Es gibt keine interne Variante.%
+\ Es gibt keine interne Variante.%
+\fi%
\fi%
\EndIndexGroup
\begin{Declaration}
- \Macro{ifisglue}\Parameter{Code}%
+ \Macro{Ifisglue}\Parameter{Code}%
\Parameter{Dann-Teil}\Parameter{Sonst-Teil}
\end{Declaration}
-Wenn\ChangedAt{v3.12}{\Package{scrbase}} die Expansion von \PName{Code} in
-etwas resultiert, das syntaktisch dem Wert eines Abstandes entspricht, wird der
-\PName{Dann-Teil} ausgeführt, anderenfalls der \PName{Sonst-Teil}. Es ist zu
-beachten,\textnote{Achtung!} dass derzeit unbekannte Einheiten zu einer
-Fehlermeldung führen. Die Anweisung ist nicht voll expandierbar. %
-\iffalse% Umbruchvaritanten
-Von dieser Anweisung gibt es keine interne Variante.%
+Wenn\ChangedAt{v3.12}{\Package{scrbase}}\ChangedAt{v3.28}{\Package{scrbase}}
+die Expansion von \PName{Code} in etwas resultiert, das syntaktisch dem Wert
+eines Abstandes entspricht, wird der \PName{Dann-Teil} ausgeführt,
+anderenfalls der \PName{Sonst-Teil}. Es ist zu beachten,\textnote{Achtung!}
+dass derzeit unbekannte Einheiten zu einer Fehlermeldung führen. Die Anweisung
+ist nicht voll expandierbar.%
+\iffalse% Umbruchkorrektur
+\iftrue% Umbruchvarianten
+\ Von dieser Anweisung gibt es keine interne Variante.%
\else%
-Es gibt keine interne Variante.%
+\ Es gibt keine interne Variante.%
+\fi%
\fi%
\EndIndexGroup
-\begin{Declaration}
- \Macro{ifisglueexpr}\Parameter{Code}%
+\iffree{\begin{Declaration}}{\begin{Declaration}[0]}% Umbruchkorrektur
+ \Macro{Ifisglueexpr}\Parameter{Code}%
\Parameter{Dann-Teil}\Parameter{Sonst-Teil}
\end{Declaration}
-Wenn\ChangedAt{v3.12}{\Package{scrbase}} die Expansion von \PName{Code} in
-einer \Macro{glueexpr}\IndexCmd{glueexpr}, also einem
-\mbox{\eTeX}-Abstandsausdruck resultiert, wird der \PName{Dann-Teil}
-ausgeführt, anderenfalls der \PName{Sonst-Teil}. Es ist zu
-beachten,\textnote{Achtung!} dass fehlerhafte Ausdrücke zu Fehlermeldungen
-führen! Die Anweisung ist nicht voll expandierbar. %
-\iftrue% Umbruchvaritanten
-Von dieser Anweisung gibt es keine interne Variante.%
+Wenn\ChangedAt{v3.12}{\Package{scrbase}}\ChangedAt{v3.28}{\Package{scrbase}}
+die Expansion von \PName{Code} in einer \Macro{glueexpr}\IndexCmd{glueexpr},
+also einem \mbox{\eTeX}-Abstandsausdruck resultiert, wird der
+\PName{Dann-Teil} ausgeführt, \iffree{}{\pagebreak}% Umbruchkorrektur
+anderenfalls der \PName{Sonst-Teil}. Es ist zu beachten,\textnote{Achtung!}
+dass fehlerhafte Ausdrücke zu Fehlermeldungen führen. Die Anweisung ist nicht
+voll expandierbar.%
+\iffalse% Umbruchkorrektur
+\iftrue% Umbruchvarianten
+\ Von dieser Anweisung gibt es keine interne Variante.%
\else%
-Es gibt keine interne Variante.%
+\ Es gibt keine interne Variante.%
+\fi%
\fi%
\EndIndexGroup
\begin{Declaration}
- \Macro{ifiscounter}\Parameter{Zähler}%
+ \Macro{Ifiscounter}\Parameter{Zähler}%
\Parameter{Dann-Teil}\Parameter{Sonst-Teil}
\end{Declaration}
-Wenn\ChangedAt{v3.12}{\Package{scrbase}} \PName{Zähler} ein definierter
-\LaTeX-Zähler ist, wird der \PName{Dann-Teil} ausgeführt, anderenfalls der
-\PName{Sonst-Teil}. Die Anweisung ist nicht voll expandierbar. %
-\iftrue% Umbruchvaritanten
-Von dieser Anweisung gibt es keine interne Variante.%
+Wenn\ChangedAt{v3.12}{\Package{scrbase}}\ChangedAt{v3.28}{\Package{scrbase}}
+\PName{Zähler} ein definierter \LaTeX-Zähler ist, wird der \PName{Dann-Teil}
+ausgeführt, anderenfalls der \PName{Sonst-Teil}. Die Anweisung ist nicht voll
+expandierbar.%
+\iffalse% Umbruchkorrektur
+\iftrue% Umbruchvarianten
+\ Von dieser Anweisung gibt es keine interne Variante.%
\else%
-Es gibt keine interne Variante.%
+\ Es gibt keine interne Variante.%
+\fi%
\fi%
\EndIndexGroup
\begin{Declaration}
- \Macro{ifiscount}\Parameter{Code}\Parameter{Dann-Teil}\Parameter{Sonst-Teil}
+ \Macro{Ifiscount}\Parameter{Code}\Parameter{Dann-Teil}\Parameter{Sonst-Teil}
\end{Declaration}
-Wenn\ChangedAt{v3.12}{\Package{scrbase}} die Expansion von \PName{Code} in
-einem \Macro{count}, also einem \TeX-Zähler, resultiert, wird der
-\PName{Dann-Teil} ausgeführt, anderenfalls der \PName{Sonst-Teil}. Die
-Anweisung ist nicht voll expandierbar. Für einen Test auf einen \LaTeX-Zähler
-siehe \DescRef{\LabelBase.cmd.ifiscounter}. %
-\iftrue% Umbruchvaritanten
-Von dieser Anweisung gibt es keine interne Variante.%
+Wenn\ChangedAt{v3.12}{\Package{scrbase}}\ChangedAt{v3.28}{\Package{scrbase}}
+die Expansion von \PName{Code} in einem \Macro{count}, also einem \TeX-Zähler,
+resultiert, wird der \PName{Dann-Teil} ausgeführt, anderenfalls der
+\PName{Sonst-Teil}. Die Anweisung ist nicht voll expandierbar. Für einen Test
+auf einen \LaTeX-Zähler siehe \DescRef{\LabelBase.cmd.Ifiscounter}.%
+\iffalse% Umbruchkorrektur
+\iftrue% Umbruchvarianten
+\ Von dieser Anweisung gibt es keine interne Variante.%
\else%
-Es gibt keine interne Variante.%
+\ Es gibt keine interne Variante.%
+\fi%
\fi%
\EndIndexGroup
\begin{Declaration}
- \Macro{ifisinteger}\Parameter{Code}%
+ \Macro{Ifisinteger}\Parameter{Code}%
\Parameter{Dann-Teil}\Parameter{Sonst-Teil}
\end{Declaration}
-Wenn\ChangedAt{v3.12}{\Package{scrbase}} die Expansion von \PName{Code} in
-etwas resultiert, das syntaktisch dem Wert eines Zählers entspricht, also eine
-negative oder positive ganze Zahl ist, wird der \PName{Dann-Teil} ausgeführt,
-anderenfalls der \PName{Sonst-Teil}. Die Anweisung ist nicht voll
-expandierbar. %
-\iftrue% Umbruchvaritanten
-Von dieser Anweisung gibt es keine interne Variante.%
+Wenn\ChangedAt{v3.12}{\Package{scrbase}}\ChangedAt{v3.28}{\Package{scrbase}}
+die Expansion von \PName{Code} in etwas resultiert, das syntaktisch dem Wert
+eines Zählers entspricht, also eine negative oder positive ganze Zahl ist,
+wird der \PName{Dann-Teil} ausgeführt, anderenfalls der
+\PName{Sonst-Teil}. Die Anweisung ist nicht voll expandierbar.%
+\iffalse% Umbruchkorrektur
+\iftrue% Umbruchvarianten
+\ Von dieser Anweisung gibt es keine interne Variante.%
\else%
-Es gibt keine interne Variante.%
+\ Es gibt keine interne Variante.%
+\fi%
\fi%
\EndIndexGroup
\begin{Declaration}
- \Macro{ifnumber}\Parameter{Zeichenfolge}%
+ \Macro{Ifnumber}\Parameter{Zeichenfolge}%
\Parameter{Dann-Teil}\Parameter{Sonst-Teil}
\end{Declaration}
-Der \PName{Dann-Teil} wird ausgeführt, wenn die einfache Expansion der
-\PName{Zeichenfolge} nur aus Ziffern besteht. In allen anderen Fällen wird der
-\PName{Sonst-Teil} verwendet. %
-\iftrue% Umbruchvaritanten
-Von dieser Anweisung gibt es keine interne Variante.%
+Der\ChangedAt{v3.28}{\Package{scrbase}} \PName{Dann-Teil} wird ausgeführt,
+wenn die einfache Expansion der \PName{Zeichenfolge} nur aus Ziffern
+besteht. In allen anderen Fällen wird der \PName{Sonst-Teil} verwendet.%
+\iffalse% Umbruchkorrektur
+\iftrue% Umbruchvarianten
+\ Von dieser Anweisung gibt es keine interne Variante.%
\else%
-Es gibt keine interne Variante.%
+\ Es gibt keine interne Variante.%
+\fi%
\fi%
\EndIndexGroup
\begin{Declaration}
- \Macro{ifisnumexpr}\Parameter{Code}%
+ \Macro{Ifisnumexpr}\Parameter{Code}%
\Parameter{Dann-Teil}\Parameter{Sonst-Teil}
\end{Declaration}
-Wenn\ChangedAt{v3.12}{\Package{scrbase}} die Expansion von \PName{Code} in
-einer \Macro{numexpr}\IndexCmd{numexpr}, also einem \eTeX-Zahlenausdruck
-resultiert, wird der \PName{Dann-Teil} ausgeführt, anderenfalls der
-\PName{Sonst-Teil}. Es ist zu beachten,\textnote{Achtung!} dass fehlerhafte
-Ausdrücke zu Fehlermeldungen führen! Die Anweisung ist nicht voll
-expandierbar. %
-\iftrue% Umbruchvaritanten
-Von dieser Anweisung gibt es keine interne Variante.%
+Wenn\ChangedAt{v3.12}{\Package{scrbase}}\ChangedAt{v3.28}{\Package{scrbase}}
+die Expansion von \PName{Code} in einer \Macro{numexpr}\IndexCmd{numexpr},
+also einem \eTeX-Zahlenausdruck resultiert, wird der \PName{Dann-Teil}
+ausgeführt, anderenfalls der \PName{Sonst-Teil}. Es ist zu
+beachten,\textnote{Achtung!} dass fehlerhafte Ausdrücke zu Fehlermeldungen
+führen. Die Anweisung ist nicht voll expandierbar.%
+\iffalse% Umbruchkorrektur
+\iftrue% Umbruchvarianten
+\ Von dieser Anweisung gibt es keine interne Variante.%
\else%
-Es gibt keine interne Variante.%
+\ Es gibt keine interne Variante.%
+\fi%
\fi%
\EndIndexGroup
@@ -1570,16 +1452,16 @@ Umdefinierungen von \DescRef{scrlayer.cmd.@mkboth} ab. Daher testet
\Macro{IfActiveMkBoth}, ob \DescRef{scrlayer.cmd.@mkboth} tatsächlich zum
Setzen einer Marke führen würde und deckt dabei sogar die Verwendung von
\Macro{marks} für die Definition von \DescRef{scrlayer.cmd.@mkboth} ab. Wird
-eine solches aktives \DescRef{scrlayer.cmd.@mkboth} entdeckt, so wird der
+ein solches aktives \DescRef{scrlayer.cmd.@mkboth} entdeckt, so wird der
\PName{Dann-Teil} ausgeführt. In allen anderen Fällen wird der
\PName{Sonst-Teil} ausgeführt.%
\begin{Example}
Angenommen, Sie wollen in einem Paket im Fall der Verwendung automatischer
- Kolumnentitel, beispielsweise durch den Seitenstil
- \PageStyle{headings}\IndexPagestyle{headings} nur die rechte Marke setzen
- und die linke unverändert lassen, wohingegen bei Verwendung manueller
- Kolumentitel die Marken unverändert bleiben sollen. In einem ersten Ansatz
- verwenden Sie dafür:
+ Kolumnentitel, wie sie beispielsweise der Seitenstil
+ \PageStyle{headings}\IndexPagestyle{headings} aktiviert, nur die rechte
+ Marke setzen und die linke unverändert lassen, wohingegen bei Verwendung
+ manueller Kolumentitel die Marken unverändert bleiben sollen. In einem
+ ersten Ansatz verwenden Sie dafür:
\begin{lstcode}
\ifx\@mkboth\markboth \markright{Kolumnentitel}\fi
\end{lstcode}
@@ -1595,7 +1477,8 @@ eine solches aktives \DescRef{scrlayer.cmd.@mkboth} entdeckt, so wird der
Vergleich niemals die \DescRef{maincls.cmd.markright}-Anweisung auf. Daher
ändern Sie den Vergleich oben zu
\begin{lstcode}
- \ifx\@mkboth\@gobbletwo\else \markright{Kolumnentitel}\fi
+ \ifx\@mkboth\@gobbletwo
+ \else \markright{Kolumnentitel}\fi
\end{lstcode}
Leider wird nun \DescRef{maincls.cmd.markright} auch bei manuellen
Kolumentiteln aufgerufen, weil irgend jemand für diesen Fall
@@ -1608,23 +1491,46 @@ eine solches aktives \DescRef{scrlayer.cmd.@mkboth} entdeckt, so wird der
Beide Probleme sind jedoch mit Hilfe von \Package{scrbase} einfach zu lösen:
\begin{lstcode}
- \IfActiveMKBoth{\markright{Kolumnentitel}}{}
+ \IfActiveMkBoth{\markright{Kolumnentitel}}{}
\end{lstcode}%
\end{Example}
-Noch einfacher lässt sich das Problem aus dem Beispiel übrigens mit Hilfe von
-\DescRef{scrlayer.cmd.@mkright} aus Paket
+Noch einfacher lässt sich das Problem aus dem Beispiel %
+\iffalse übrigens \fi % Umbruchkorrektur
+mit Hilfe von \DescRef{scrlayer.cmd.@mkright} aus Paket
\hyperref[cha:scrlayer]{\Package{scrlayer}} lösen (siehe
\autoref{sec:scrlayer.pagestyle.content},
\DescPageRef{scrlayer.cmd.@mkright}).%
\EndIndexGroup
+\begin{Declaration}[0]
+ \Macro{if@atdocument}\ \PName{Dann-Teil}\ %
+ \textMacro{else}\ \PName{Sonst-Teil} \textMacro{fi}
+\end{Declaration}
+\iftrue% Umbruchvarianten
+Diese Verzweigung in \TeX-Syntax existiert bewusst nur als interne
+Anweisung. In der Dokumentpräambel ist \Macro{if@atdocument}
+\Macro{iffalse}, nach \Macro{begin}\PParameter{document} entspricht
+\Macro{if@atdocument} dann \Macro{iftrue}. Klassen- und Paketautoren
+können dieses Anweisung manchmal sinnvoll nutzen, %
+\else%
+In der Dokumentpräambel enspricht \Macro{if@atdocument} \iftrue dem Schalter
+\fi \Macro{iffalse}, nach \Macro{begin}\PParameter{document} hingegen
+\Macro{iftrue}. Klassen- und Paketautoren können dieses Anweisung nutzen, %
+\fi%
+wenn sich Anweisungen in der Dokumentpräambel anders verhalten sollen als
+innerhalb des Dokuments. Es\textnote{Achtung!} ist zu beachten, dass es sich
+bei dieser Anweisung um eine Verzweigung in \TeX-Syntax und nicht in
+\LaTeX-Syntax handelt.%
+\EndIndexGroup
+
+
\section{Definition sprachabhängiger Bezeichner}
\seclabel{languageSupport}
\BeginIndexGroup
\BeginIndex{}{Sprachdefinition}
-\iftrue
+\iffalse% Umbruchkorrektur
Anfänger haben häufig Probleme damit, sprachabhängige Begriffe wie
\Macro{listfigurename}\IndexCmd{listfigurename}, in der Voreinstellung meist
»List of Figures« beziehungsweise in Deutsch: »Abbildungsverzeichnis«, zu
@@ -1639,18 +1545,13 @@ Normalerweise muss man zur Definition oder zur Änderung sprachabhängiger
Begriffe Anweisungen wie \Macro{captionsngerman} so umdefinieren, dass
zusätzlich zu den bisherigen Begriffen auch die neuen oder geänderten
definiert werden. Erschwert wird dieses Vorhaben dadurch, dass beim Laden
-eines Pakets wie \Package{german}\IndexPackage{german} oder
-\Package{ngerman}\IndexPackage{ngerman} diese Anweisungen von den Paketen
-erneut definiert werden. Bei den genannten Paketen geschieht dies leider in
-einer Form, die alle zuvor gemachten Änderungen zunichte macht. Aus diesem
-Grund ist es sinnvoll, die Änderungen mit Hilfe von \Macro{AtBeginDocument} bis
-\Macro{begin}\PParameter{document}, also bis nach dem Laden aller Pakete, zu
-verzögern.
-\iftrue
-Auch der Anwender muss entweder von \Macro{AtBeginDocument}
-Gebrauch machen oder aber seine Änderungen nicht in die Dokumentpräambel,
-sondern hinter \Macro{begin}\PParameter{document} einfügen.
-\fi
+eines Pakets wie \Package{babel}\IndexPackage{babel} oder
+\Package{polyglossia}\IndexPackage{polyglossia} diese Anweisungen von den
+Paketen erneut definiert werden. Bei den genannten Paketen geschieht dies,
+indem alle zuvor gemachten Änderungen überschrieben werden. Aus diesem Grund
+ist es sinnvoll, eigene Änderungen bis nach dem Laden entsprechender Pakete
+oder mit Hilfe von \Macro{AtBeginDocument} bis
+\Macro{begin}\PParameter{document} zu verzögern.
Darüber hinaus kommt erschwerend hinzu, dass einige Pakete zusätzliche,
sprachabhängige Begriffe in \Macro{captions\PName{Sprache}} definieren,
@@ -1660,7 +1561,7 @@ richtige Weise zu ergänzen.
Das Paket \Package{scrbase} bietet dem Anwender daher für die Definition und
Änderung selbst einige zusätzliche Anweisungen, die ihn von vielen dieser
-Überlegungen entlasten. Gleichzeitig erlauben diese Befehle, die
+Überlegungen befreit. Gleichzeitig erlauben die Befehle, die
sprachabhängigen Begriffe mehrerer Dialekte oder Ausprägungen einer Sprache
gleichzeitig zu definieren oder zu ändern.
@@ -1682,23 +1583,22 @@ gleichzeitig zu definieren oder zu ändern.
\Macro{renewcaptionname*}%
\Parameter{Sprachliste}\Parameter{Begriff}\Parameter{Inhalt}
\end{Declaration}
-Mit Hilfe dieser vier Anweisungen und ihrer Sternvarianten ist es möglich,
-einem \PName{Begriff} in Abhängigkeit der Sprache einen \PName{Inhalt}
-zuzuweisen. Mehrere Sprachen können durch Komma voneinander getrennt als
+Mit Hilfe dieser Anweisungen ist es möglich, einem \PName{Begriff} in
+Abhängigkeit der Sprache einen \PName{Inhalt} zuzuweisen. Mehrere Sprachen
+können durch Komma voneinander getrennt als
\PName{Sprachliste}\ChangedAt{v3.12}{\Package{scrbase}} angegeben werden.
-
Der \PName{Begriff} ist immer ein Makro. Die Arbeitsweise der Anweisungen
unterscheidet sich je nachdem, ob eine Sprache und ein \PName{Begriff}
innerhalb der Sprache zum Zeitpunkt des Aufrufs bereits definiert ist.
-Ist eine Sprache nicht definiert, so tut \Macro{providecaptionname} nichts
-weiter, als dies in der \File{log}-Datei zu vermerken. Dabei wird für jede
-Sprache nur einmal eine entsprechende Information in die \File{log}-Datei
-geschrieben. Ist die Sprache definiert, enthält aber bisher keinen
-entsprechenden \PName{Begriff}, so wird er mit dem angegebenen \PName{Inhalt}
-definiert. Ist der \PName{Begriff} hingegen in der Sprache bereits definiert,
-so wird er nicht umdefiniert, sondern ebenfalls ein entsprechender Hinweis in
-die \File{log}-Datei geschrieben.
+Ist eine Sprache nicht definiert, vermerkt \Macro{providecaptionname} das
+lediglich in \File{log}-Datei. Dabei wird für jede Sprache nur einmal eine
+entsprechende Information in die \File{log}-Datei geschrieben. Ist die Sprache
+definiert, enthält aber bisher keinen entsprechenden \PName{Begriff}, so wird
+er mit dem angegebenen \PName{Inhalt} definiert. Ist der \PName{Begriff}
+hingegen in der Sprache bereits definiert, so wird er nicht umdefiniert,
+sondern ebenfalls ein entsprechender Hinweis in die \File{log}-Datei
+geschrieben.
Ist dagegen bei \Macro{newcaptionname}
eine Sprache nicht definiert, dann wird diese neu definiert, indem eine
@@ -1710,20 +1610,19 @@ vorhanden, so wird er mit dem gewünschten \PName{Inhalt} definiert. Ist der
\PName{Begriff} in der Sprache bereits vorhanden, so wird eine
Fehlermeldung ausgegeben.
-Die Anweisung \Macro{renewcaptionname} verhält sich noch einmal anders. Ist
-eine Sprache nicht definiert, so wird eine Fehlermeldung
-ausgegeben. Ist die Sprache definiert, der \PName{Begriff} in dieser
-Sprache jedoch nicht, so wird ebenfalls eine Fehlermeldung
-ausgegeben. Ist der \PName{Begriff} in der Sprache definiert, so wird
-er auf den gewünschten \PName{Inhalt} umdefiniert.
+Ist bei Anweisung \Macro{renewcaptionname} eine Sprache nicht definiert, so
+wird eine Fehlermeldung ausgegeben. Ist die Sprache definiert, der
+\PName{Begriff} in dieser Sprache jedoch nicht, so wird ebenfalls eine
+Fehlermeldung ausgegeben. Ist der \PName{Begriff} in der Sprache definiert, so
+wird er auf den gewünschten \PName{Inhalt} umdefiniert.
Die\ChangedAt{v3.12}{\Package{scrbase}} Anweisung \Macro{defcaptionname}
definiert einen \PName{Begriff} immer, überschreibt also eventuell vorhandene
Definitionen. Wie bei \Macro{providecaptionname} braucht eine angegebene
Sprache nicht definiert zu sein.
-\KOMAScript{} selbst verwendet \Macro{providecaptionname} um die Begriffe aus
-\autoref{sec:scrlttr2-experts.languages},
+\KOMAScript{} selbst verwendet \Macro{providecaptionname} um beispielsweise
+die Begriffe aus \autoref{sec:scrlttr2-experts.languages},
\DescPageRef{scrlttr2-experts.cmd.yourrefname} zu definieren.
\begin{Example}
@@ -1751,6 +1650,7 @@ Sprache nicht definiert zu sein.
\PValue{swissgerman}, also Deutsch, Österreichisch und Schweizer Deutsch
nach der veralteten Rechtschreibung, hinzugefügt werden.
\end{Example}
+\iffalse % Das ist 6 Jahre her und damit nicht mehr von Belang!
\begin{Explain}
Die Sprachen \PValue{swissgerman} und \PValue{nswissgerman} werden übrigens
von älteren Versionen von \Package{babel} noch nicht unterstützt. Sie sind
@@ -1763,27 +1663,29 @@ Sprache nicht definiert zu sein.
Umdefinierung für \Option{nswissgerman} und \Option{swissgerman} bei
Verwendung einer älteren Version von \Package{babel} in einer entsprechenden
Fehlermeldung.
-\end{Explain}
-
-Seit \KOMAScript~3.12\ChangedAt{v3.12}{\Package{scrbase}} ist es auch nicht
-mehr erforderlich, die Definierung oder Umdefinierung mit Hilfe von
-\Macro{AtBeginDocument} bis \Macro{begin}\PParameter{document} zu
-verzögern. Stattdessen erledigt \Package{scrbase} dies selbst, falls die
-Anweisungen in der Dokumentpräambel aufgerufen werden. Außerdem prüft
-\Package{scrbase} nun auch, ob ein umzudefinierender Begriff statt in
-\Macro{captions\PName{Sprache}} in \Macro{extras\PName{Sprache}} zu definieren
-ist. Die neuen Sternvarianten der Befehle verwenden grundsätzlich
-\Macro{extras\PName{Sprache}}, da dessen Definitionen in der Regel nach
-\Macro{captions\PName{Sprache}} Anwendung finden. Damit funktioniert nun in
-der Regel auch das Umdefinieren von sprachabhängigen Bezeichnern von Paketen
-wie \Package{hyperref}, die dafür \Macro{extras\PName{Sprache}} verwenden.
+\end{Explain}%
+\fi
+
+Es\ChangedAt{v3.12}{\Package{scrbase}} ist nicht erforderlich, die Definierung
+oder Umdefinierung via \Macro{AtBeginDocument} bis
+\Macro{begin}\PParameter{document} zu verzögern. Stattdessen erledigt
+\Package{scrbase} das selbst, falls die Anweisungen in der Dokumentpräambel
+aufgerufen werden. Außerdem prüft \Package{scrbase} auch, ob ein
+umzudefinierender Begriff statt in \Macro{captions\PName{Sprache}} in
+\Macro{extras\PName{Sprache}} zu definieren ist. Die Sternvarianten der
+Befehle verwenden grundsätzlich \Macro{extras\PName{Sprache}}, da dessen
+Definitionen in der Regel nach \Macro{captions\PName{Sprache}} Anwendung
+finden. Damit funktioniert auch das Umdefinieren von sprachabhängigen
+Bezeichnern von Paketen\iffalse\ wie \Package{hyperref}\fi, die dafür
+\Macro{extras\PName{Sprache}} verwenden.
In \autoref{tab:scrbase.commonNames} ist ein Überblick über die üblicherweise
von Klassen und Sprachpaketen definierten Begriffe und deren Verwendung zu
finden.\iffree{}{ \KOMAScript{} selbst definiert noch einige weitere
Begriffe. Siehe dazu \autoref{sec:scrlttr2-experts.languages} ab
\DescPageRef{scrlttr2-experts.cmd.yourrefname}.}
-
+%
+%\iffree{}{\enlargethispage{4pt}}% Umbruchkorrektur
\begin{desclist}
\renewcommand*{\abovecaptionskipcorrection}{-\normalbaselineskip}%
\desccaption[{%
@@ -1800,7 +1702,7 @@ finden.\iffree{}{ \KOMAScript{} selbst definiert noch einige weitere
\IndexCmd{abstractname}%
}%
\entry{\Macro{alsoname}}{%
- »Siehe auch« bei ergänzenden Verweisen im Stichwortverzeichnis%
+ »siehe auch« bei ergänzenden Verweisen im Stichwortverzeichnis%
\IndexCmd{alsoname}%
}%
\entry{\Macro{appendixname}}{%
@@ -1872,7 +1774,7 @@ finden.\iffree{}{ \KOMAScript{} selbst definiert noch einige weitere
\IndexCmd{refname}%
}%
\entry{\Macro{seename}}{%
- »Siehe« bei Verweisen im Stichwortverzeichnis%
+ »siehe« bei Verweisen im Stichwortverzeichnis%
\IndexCmd{seename}%
}%
\entry{\Macro{tablename}}{%
@@ -1899,9 +1801,9 @@ grundlegenden \KOMAScript-Paketen vorhanden sind.
\begin{Declaration}
\Macro{KOMAScript}
\end{Declaration}
-Diese Anweisung setzt schlicht die Wortmarke »\KOMAScript« in serifenloser
+Diese Anweisung gibt die Wortmarke »\KOMAScript« in serifenloser
Schrift und mit leichter Sperrung des in Versalien gesetzten
-Teils. \Macro{KOMAScript} wird übrigens bei Bedarf von allen
+Teils aus. \Macro{KOMAScript} wird übrigens bei Bedarf von allen
\KOMAScript-Klassen und "~Paketen definiert. Die Definition erfolgt mit
\Macro{DeclareRobustCommand}. Da auch Pakete, die nicht zu \KOMAScript{}
gehören, diese Wortmarke definieren können, sollte man die Anweisung jedoch
@@ -1918,7 +1820,7 @@ abgelegt. Diese Hauptversion ist für alle \KOMAScript-Klassen und alle
\KOMAScript-Pakete, die von den Klassen verwendet werden, gleich. Daher kann
sie auch nach dem Laden von \Package{scrbase} abgefragt werden. Diese
Anleitung wurde beispielsweise mit der \KOMAScript-Version
-»\KOMAScriptVersion« erstellt. Das Vorhandensein dieser Anweisung ist ein
+»\KOMAScriptVersion« erstellt. Das Vorhandensein der Anweisung ist ein
starkes Indiz dafür, dass zumindest ein \KOMAScript-Paket verwendet wird.%
\EndIndexGroup
@@ -1944,7 +1846,7 @@ Zeilennummer ausgeben, auch die beiden Anweisungen
Zeilennummer auszugeben. Die naheliegenden Anweisungen
\Macro{ClassInfoNoLine} und \Macro{PackageInfoNoLine}, um auch Informationen
ohne Zeilennummer in die Log-Datei zu schreiben, fehlen jedoch. Diese werden
-von \Package{scrbase} bereit gestellt.
+von \Package{scrbase} bereitgestellt.
%
\EndIndexGroup
@@ -1955,14 +1857,14 @@ von \Package{scrbase} bereit gestellt.
Der \LaTeX-Kern bietet mit \Macro{g@addto@macro} eine interne Anweisung, um
die Definition eines Makro \PName{Anweisung} global um den Code
\PName{Erweiterung} zu erweitern. Das funktioniert in dieser Form nur für
-Makros ohne Argumente. Dennoch könnte man diese Anweisung in einigen Fällen
+Makros ohne Argumente. Dennoch könnte man die Anweisung in einigen Fällen
auch in einer Form benötigen, die lokal zur aktuellen Gruppe arbeitet. Diese
-wird mit \Macro{l@addto@macro} von \Package{scrbase} bereit gestellt. Eine
+wird mit \Macro{l@addto@macro} von \Package{scrbase} bereitgestellt. Eine
Alternative stellt hier die Verwendung des Pakets
\Package{etoolbox}\IndexPackage{etoolbox} oder
-\Package{xpatch}\IndexPackage{xpatch} dar, das eine ganze Reihe solcher
-Anweisungen für unterschiedliche Zwecke bietet (siehe
-\cite{package:etoolbox} beziehungsweise \cite{package:xpatch}).
+\Package{xpatch}\IndexPackage{xpatch} dar, die eine ganze Reihe solcher
+Anweisungen für unterschiedliche Zwecke bieten (siehe
+\cite{package:etoolbox} oder \cite{package:xpatch}).
%
\EndIndexGroup
@@ -1974,8 +1876,8 @@ Das für \LaTeX{} inzwischen verwendete und von \KOMAScript{} vorausgesetzte
\eTeX{} besitzt mit \Macro{numexpr}\IndexCmd{numexpr} erweiterte Möglichkeiten
zur Berechnung einfacher Ausdrücke mit \TeX-Zählern und ganzen Zahlen. Als
Operationen werden dabei die vier Grundrechenarten und Klammern
-unterstützt. Bei der Division wird korrekt gerundet. Manchmal sind weitere
-Operationen nützlich.
+unterstützt. Bei der Division wird korrekt gerundet.
+\iffalse Manchmal sind weitere Operationen nützlich.\fi% Umbruchkorrektur
\begin{Declaration}
\Macro{XdivY}\Parameter{Dividend}\Parameter{Divisor}
@@ -2003,9 +1905,9 @@ Ausgabe als arabische Zahl ist \Macro{the} voranzustellen.%
\EndIndexGroup
-\section[{Allgemeiner Mechanismus für mehrstufige Haken}]
-{Allgemeiner Mechanismus für mehrstufige
- Haken\ChangedAt[2019/01]{v3.27}{\Package{scrbase}}}
+\section[{Mechanismus für mehrstufige Haken}]
+{Mechanismus für mehrstufige
+ Haken\ChangedAt{v3.27}{\Package{scrbase}}}
\seclabel{hooks}
\BeginIndexGroup
@@ -2025,19 +1927,18 @@ Jahre zeigten sich dabei zwei Probleme:
Durchlaufen des Hakens auszuführen ist, also dauerhaft auf dem Haken bleibt.
\end{itemize}
Üblicherweise muss man zur Definition eines einzelnen Hakens eine Anweisung
-definieren, mit der Code für den jeweiligen Haken aufgesammelt wird. Dieser
-Code wird dann in einem weiteren internen Makro abgelegt, das man an der
-Stelle einfügen muss, an der der aufgesammelte Code auszuführen ist. Je mehr
-Haken man einfügt, desto mehr solcher Anweisungen gibt es. Um sowohl
-Einmalcode als auch dauerhaften Code zu ermöglichen, benötigt es gegebenfalls
-sogar zwei Haken und damit die doppelte Anzahl an zu definierenden
-Anweisungen.
+definieren, mit der Code für den jeweiligen Haken aufgesammelt wird. Der Code
+wird dazu in einem weiteren internen Makro abgelegt, das man an der Stelle
+einfügen muss, an der der aufgesammelte Code auszuführen ist. Je mehr Haken
+man einfügt, desto mehr solcher Anweisungen gibt es. Um sowohl Einmalcode als
+auch dauerhaften Code zu ermöglichen, bedarf es sogar zweier Haken und damit
+der doppelten Anzahl an zu definierenden Anweisungen.
Das Beispiel der Gliederungsbefehle zeigt, dass sich das erste Problem
-teilweise an einem einzigen Codeausführungspunkt noch verschärfen kann. Hier
-benötigt der eine Paketautor lediglich eine Möglichkeit für alle
+an einem einzigen Codeausführungspunkt noch verschärfen kann. Der
+eine Paketautor benötigt nur eine Möglichkeit, für alle
Gliederungsbefehle denselben Code auszuführen. Ein anderer Paketautor hätte
-lieber, dass er nur bei bestimmten Gliederungsbefehlen unterschiedlichen Code
+lieber, dass er bei bestimmten Gliederungsbefehlen unterschiedlichen Code
ausführen kann. Es würde also sowohl ein allgemeiner Haken als auch ein Haken
je Gliederungsbefehl benötigt. Das ganze dann wieder wegen des zweiten
Problems verdoppelt.
@@ -2058,9 +1959,9 @@ expandiert.
Der \PName{Spezifikator} besteht allgemein aus durch Querstrichen,
»\texttt{/}«, voneinander getrennten Zeichenfolgen. Von \Macro{ExecuteDoHook}
-wird dann zunächst die Zeichenfolge vor dem ersten Querstrich
-abgetrennt. Diese ist der Name. Der verbleibende Rest (ohne den Querstrich)
-ist das Argument. Dann wird der Code für den Haken mit diesem Namen
+wird zunächst die Zeichenfolge vor dem ersten Querstrich abgetrennt. Diese ist
+der Name. Der verbleibende Rest ohne den führenden Querstrich ist das
+Argument. Dann wird der Code für den Haken mit diesem Namen
ausgeführt. Anschließend wird erneut die vordere Zeichenfolge vom Rest
abgetrennt und mit einem Querstrich hinten an den Namen angefügt und der Code
für den so neu gebildeten Namen ausgeführt. Das geht so lange, bis der Code
@@ -2076,9 +1977,9 @@ zusätzlich Einmalcode ausgeführt, bevor der Einmalcode global vom Haken
genommen wird.
\begin{Example}
- Durch Einfügen von \DescRef{\LabelBase.cmd.ExecuteDoHook}%
- \PParameter{heading/begingroup/\PName{Name}} in die Ausführung eines jeden
- mit \DescRef{maincls-experts.cmd.DeclareSectionCommand} definierten
+ Mit \DescRef{\LabelBase.cmd.ExecuteDoHook}%
+ \PParameter{heading/begingroup/\PName{Name}} in der Ausführung jedes
+ durch \DescRef{maincls-experts.cmd.DeclareSectionCommand} definierten
Gliederungbefehls wurden in den \KOMAScript-Klassen letztlich sechs Haken an
diesem Codepunkt eingefügt, die in dieser Reihenfolge ausgeführt werden:
\begin{enumerate}
@@ -2095,28 +1996,31 @@ genommen wird.
\item \PValue{heading/begingroup/}\PName{Name} mit leerem Argument für
Einmalcode.
\end{enumerate}
- \PName{Name} ist dabei der bei
+ Der Platzhalter \PName{Name} ist dabei indentisch mit dem bei
\DescRef{maincls-experts.cmd.DeclareSectionCommand},
\DescRef{maincls-experts.cmd.DeclareNewSectionCommand} oder
- \DescRef{maincls-experts.cmd.ProvideSectionCommand} angegebene \PName{Name}
+ \DescRef{maincls-experts.cmd.ProvideSectionCommand}
+ angegebenen Namen
der Gliederungsebene beziehungsweise des dadurch bestimmten
- Gliederungsbefehls, also beispielsweise \PValue{chapter} oder
- \PValue{subparagraph}. Betrachtet man obige Auflistung unter
- Berücksichtigung der Tatsache, dass es diverse Gliederungsbefehle gibt,
+ Gliederungsbefehls, also beispielsweise \PValue{subparagraph} oder
+ \PValue{chapter}. Betrachtet man obige Auf"|listung unter
+ Berücksichtigung der Vielzahl an Gliederungsbefehlen,
wird klar, dass die Haken \PValue{heading} und \PValue{heading/begingroup}
mehrfach, nämlich für jeden Gliederungsbefehl existieren.%
\end{Example}%
%
\EndIndexGroup
+\ExampleEndFix
+
\begin{Declaration}
\Macro{AddtoDoHook}\Parameter{Name}\Parameter{Befehl}
\Macro{AddtoOneTimeDoHook}\Parameter{Name}\Parameter{Befehl}
\end{Declaration}
Mit\ChangedAt[2019/01]{v3.27}{\Package{scrbase}} \Macro{AddtoDoHook} wird an
-dem Haken mit dem Namen \PName{Name} dauerhafter Code aufgehängt. Als Code
-dient dabei der \PName{Befehl}, dem das in der Erklärung zu
-\DescRef{\LabelBase.cmd.ExecuteDoHook} erwähnte Argument als Parameter
+dem Haken mit dem Namen \PName{Name} dauerhafter\textnote{dauerhaft} Code
+aufgehängt. Als Code dient dabei der \PName{Befehl}, dem das in der Erklärung
+zu \DescRef{\LabelBase.cmd.ExecuteDoHook} erwähnte Argument als Parameter
angehängt wird.
\begin{Example}
Angenommen, es soll innerhalb von \Macro{section} mitgezählt werden, wie oft
@@ -2131,7 +2035,7 @@ angehängt wird.
\Macro{stepcounter}\PParameter{sectionZaehler}\PParameter{} ausgeführt. Wir
erinnern uns daran, dass immer ein Argument als Parameter angehängt wird.
Im Falle des Hakens mit dem Namen \PValue{heading/begingroup/section} ist
- dieses Argument leer. Da ein solcher leerer Parameter hier zur einer leeren
+ dieses Argument leer. Da ein solcher leerer Parameter hier zu einer leeren
Gruppe wird, ist es besser, diesen leeren Parameter quasi aufzubrauchen:
\begin{lstcode}
\newcommand*{\stepcountergobble}[2]{%
@@ -2140,8 +2044,8 @@ angehängt wird.
\AddtoDoHook{heading/begingroup/section}
{\stepcountergobble{sectionZaehler}}
\end{lstcode}
- Hier wird der angehängte, leere Parameter von \Macro{stepcountergobble}
- gelesen, aber nicht verwendet.
+ Somit wird der angehängte, leere Parameter von der neuen Anweisung
+ \Macro{stepcountergobble} gelesen, aber nicht verwendet.
Sollen nun statt \Macro{section} alle Gliederungsbefehle gezählt werden, so
muss nur ein anderer Hakenname eingesetzt werden:
@@ -2164,9 +2068,9 @@ angehängt wird.
definiert werden.
\end{Example}
-Die Anweisung \Macro{AddtoOneTimeDoHook} arbeitet vergleichbar, fügt den
-\PName{Befehl} aber dem Einmalcode hinzu. Dieser Code wird dann nach der
-ersten Ausführung global vom Haken genommen.%
+Die Anweisung \Macro{AddtoOneTimeDoHook}\textnote{einmalig} arbeitet
+vergleichbar, fügt den \PName{Befehl} aber dem Einmalcode hinzu. Dieser Code
+wird dann nach der ersten Ausführung global vom Haken genommen.%
\EndIndexGroup
\begin{Declaration}
@@ -2220,10 +2124,10 @@ kein Rest bleibt, wird das \PName{Rest-Makro} leer definiert. Falls bereits der
\begin{lstcode}
\newcommand*{\changeZaehler}[1]{%
\SplitDoHook{#1}{\Gruppe}{\Ebene}%
- \ifstr{\Gruppe}{begingroup}{%
+ \Ifstr{\Gruppe}{begingroup}{%
\stepcounter{\Ebene Zaehler}%
}{%
- \ifstr{\Gruppe}{endgroup}{%
+ \Ifstr{\Gruppe}{endgroup}{%
\addtocounter{\Ebene Zaehler}{-1}%
}{}%
}%
@@ -2237,11 +2141,21 @@ kein Rest bleibt, wird das \PName{Rest-Makro} leer definiert. Falls bereits der
\PValue{heading} aber abweichendem Argument geben kann.
\end{Example}
-Genau genommen ist diese Anweisung ein Abfallprodukt aus der Implementierung
+Genau genommen ist diese Anweisung ein Abfallprodukt der Implementierung
von \DescRef{\LabelBase.cmd.ForDoHook}.%
\EndIndexGroup
%
\EndIndexGroup
+
+\section{Obsolete Optionen und Anweisungen}
+\seclabel{obsolete}
+
+Frühere Versionen von \Package{scrbase} verfügten über Optionen und
+Anweisungen, die inzwischen entfernt oder ersetzt wurden. Diese sind hier nur
+aus Gründen der Vollständigkeit aufgeführt und sollten nicht mehr verwendet
+werden.
+
+\LoadNonFree{scrbase}{0}%
\EndIndexGroup
\endinput