diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/koma-script/scrkbase.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/koma-script/scrkbase.dtx | 1928 |
1 files changed, 0 insertions, 1928 deletions
diff --git a/Master/texmf-dist/source/latex/koma-script/scrkbase.dtx b/Master/texmf-dist/source/latex/koma-script/scrkbase.dtx deleted file mode 100644 index 6717f00fc59..00000000000 --- a/Master/texmf-dist/source/latex/koma-script/scrkbase.dtx +++ /dev/null @@ -1,1928 +0,0 @@ -% \CheckSum{1419} -% \iffalse meta-comment -% ====================================================================== -% scrkbase.dtx -% Copyright (c) Markus Kohm, 2002-2012 -% -% This file is part of the LaTeX2e KOMA-Script bundle. -% -% This work may be distributed and/or modified under the conditions of -% the LaTeX Project Public License, version 1.3c of the license. -% The latest version of this license is in -% http://www.latex-project.org/lppl.txt -% and version 1.3c or later is part of all distributions of LaTeX -% version 2005/12/01 or later and of this work. -% -% This work has the LPPL maintenance status "author-maintained". -% -% The Current Maintainer and author of this work is Markus Kohm. -% -% This work consists of all files listed in manifest.txt. -% ---------------------------------------------------------------------- -% scrkbase.dtx -% Copyright (c) Markus Kohm, 2002-2012 -% -% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, -% Version 1.3c, verteilt und/oder veraendert werden. -% Die neuste Version dieser Lizenz ist -% http://www.latex-project.org/lppl.txt -% und Version 1.3c ist Teil aller Verteilungen von LaTeX -% Version 2005/12/01 oder spaeter und dieses Werks. -% -% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" -% (allein durch den Autor verwaltet). -% -% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. -% -% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. -% ====================================================================== -% \fi -% -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} -% -% \iffalse -%%% From File: scrkbase.dtx -%<*driver> -% \fi -\ProvidesFile{scrkbase.dtx}[2012/06/11 v3.11a KOMA-Script (basics)] -% \iffalse -%</driver> -%<package&option>\ProvidesPackage{% -%<package&option&base> scrbase% -%<package&option&koma> scrkbase% -%<package&option>}[% -%<package&option> \KOMAScriptVersion\space package -%<package&option&base> (KOMA-Script-independent basics and keyval usage)] -%<package&option&koma> (KOMA-Script-dependent basics and keyval usage)] -%<*driver> -\documentclass{scrdoc} -\usepackage[english,ngerman]{babel} -\usepackage[latin1]{inputenc} -\CodelineIndex -\RecordChanges -\GetFileInfo{scrkbase.dtx} -\title{\KOMAScript{} \partname\ \texttt{\filename}% - \footnote{Dies ist Version \fileversion\ von Datei - \texttt{\filename}.}} -\date{\filedate} -\author{Markus Kohm} - -\begin{document} - \maketitle - \tableofcontents - \DocInput{\filename} -\end{document} -%</driver> -% \fi -% -% \selectlanguage{ngerman} -% -% \changes{v1.0}{2002/07/06}{Beginn der ersten Version} -% -% \section{Grundlegenden \KOMAScript-Erweiterungen} -% -% Neue Versionen von \KOMAScript{} machen zunehmend Gebrauch vom -% \textsf{keyval}-Paket. Das \textsf{keyval}-Paket ist Bestandteil des -% \textsf{graphics}-Pakets und muss als solches auf allen -% \TeX-Systemen mit \LaTeX{} enthalten sein. Es genügt jedoch in -% einigen Punkten nicht den Anforderungen von \KOMAScript{}. Deshalb -% werden hier Erweiterungen vorgenommen, die von \KOMAScript-Klassen -% und \KOMAScript-Paketen verwendet werden können. -% -% Darüber hinaus werden immer mehr Teile von \KOMAScript{} von mehr als einem -% Paket oder von Paketen und Klassen verwendet. Diese grundlegenden Dinge -% wurden daher in zwei Pakete, \textsf{scrbase} (für Dinge, die auch von -% anderen Klassen und Paketen genutzt werden können) und \textsf{scrkbase} -% (für Dinge, die \KOMAScript vorbehalten bleiben), ausgegliedert. Dadurch -% werden die Pakete und Klassen selbst kleiner und die können trotzdem -% unabhängig voneinander verwendet werden. Selbstverständlich kann man dieses -% Paket auch ohne den Rest von \KOMAScript{} zum Einsatz bringen. -% -% \StopEventually{\PrintIndex\PrintChanges} -% -% \iffalse -%<*load> -% \fi -% -% \subsection{Laden des Pakets} -% Wer das Paket lädt, tut das allerdings in der Regel sogar bereits -% vor der Definition der Optionen mit: -% \begin{macrocode} -\RequirePackage{scrkbase}[\KOMAScriptVersion] -% \end{macrocode} -% -% \iffalse -%</load> -%<*option> -% \fi -% -% \subsection{\eTeX-Test} -% \changes{v3.02c}{2009/02/19}{Fehlermeldung, wenn nicht \eTeX{} verwendet -% wird} -% -% \begin{macrocode} -%<*base> -\begingroup - \def\@tempb{}% - \def\@tempa{% - \PackageError{scrbase}{seems you are not running e-TeX\@tempb}{% - Since 2004 the LaTeX team recommends to use e-TeX.\MessageBreak - KOMA-Script since version 2.95 uses several e-TeX features.\MessageBreak - At actual systems `latex' should already use e-TeX.\MessageBreak - At deprecated systems it may be called `elatex'.\MessageBreak - Use either unsupported KOMA-Script up to version 2.9u or\MessageBreak - ask you administrator for LaTeX using e-TeX\@tempb.\MessageBreak - Not using e-TeX\@tempb\space is a fatal error!\MessageBreak - Processing cannot be continued!}% - \endgroup - \batchmode \errmessage{}\csname @@end\endcsname\end\relax - \csname endinput\endcsname - }% - \expandafter\ifx\csname eTeXversion\endcsname\relax\else - \ifnum\eTeXversion <2 - \def\@tempb{ V 2}% - \else - \let\@tempa\endgroup - \fi - \fi -\@tempa -%</base> -% \end{macrocode} -% -% \subsection{Der abhängige Teil lädt den unabhängigen Teil} -% -% \begin{macrocode} -%<koma>\RequirePackage{scrbase}[\KOMAScriptVersion] -% \end{macrocode} -% -% \subsection{Laden von \textsf{keyval}} -% -% Hier wird nicht nur das Paket geladen, was ruckzuck mit: -% \begin{macrocode} -%<base>\RequirePackage{keyval} -% \end{macrocode} -% erledigt ist. -% -% -% \subsection{Test von Anweisungen} -% -% \begin{macro}{\scr@ifundefinedorrelax} -% \changes{v2.95c}{2006/08/12}{neu (intern)} -% \changes{v2.97b}{2007/03/08}{vermurkste Logik korrigiert} -% \changes{v2.97c}{2007/04/18}{vermurkste Funktion korrigiert} -% \changes{v2.97c}{2007/04/18}{von \cs{scr@ifundefined} umbenannt} -% \changes{v3.02c}{2009/02/19}{Sonderbehandlung für nicht \eTeX entfernt} -% Dieses Makro arbeitet wie \cs{@ifundefined}, definiert dabei aber -% ein undefiniertes Makro nicht als \cs{relax}. Es muss bereits hier definiert -% werden, weil es gleich verwendet wird. -% \begin{macrocode} -%<*base> -\newcommand{\scr@ifundefinedorrelax}[1]{% - \ifcsname #1\endcsname - \expandafter\ifx\csname #1\endcsname\relax - \expandafter\expandafter\expandafter\@firstoftwo - \else - \expandafter\expandafter\expandafter\@secondoftwo - \fi - \else - \expandafter\@firstoftwo - \fi -} -%</base> -% \end{macrocode} -% \end{macro} -% -% -% \subsection{Definition von KOMA-\textsf{keyval}-Schlüsseln (Basis)} -% -% Üblicherweise verwendet \KOMAScript{} für alle -% \textsf{keyval}-Schlüssel die gleiche Bereichskennung -% "`\texttt{KOMA}"'. Dadurch ist es möglich, dass Pakete die Schlüssel -% der Klassen umdefinieren und dass jeder Teil von \KOMAScript{} die -% Schlüssel jedes anderen Teils ausführen kann -- sobald sie definiert -% sind. -% -% \begin{macro}{\DefineFamily} -% \changes{v3.00}{2008/04/30}{Neue Anweisung} -% \begin{macro}{\DefineFamilyMember} -% \changes{v3.00}{2008/04/30}{Neue Anweisung} -% \begin{macro}{\DefineFamilyKey} -% \changes{v3.00}{2008/04/30}{Neue Anweisung} -% \begin{macro}{\scr@if@family} -% \changes{v3.00}{2008/04/30}{Neu (intern)} -% \begin{macro}{\scr@if@familymember} -% \changes{v3.00}{2008/04/30}{Neu (intern)} -% Familie, Familienmitglied und \textsf{keyval}-Schlüssel für ein -% Familienmitglied definieren. Dabei wird als Familienmitglied per Default der -% (Datei-)Name des aktuellen Pakets bzw. der aktuellen Klasse verwendet. -% \begin{macrocode} -%<*base> -\newcommand*{\DefineFamily}[1]{% - \scr@ifundefinedorrelax{#1@key@familylist}{% - \@namedef{#1@key@familylist}{}% - }{}% -} -\newcommand*{\scr@if@family}[2]{% - \scr@ifundefinedorrelax{#1@key@familylist}{% - \PackageError{scrbase}{% - unknown family `#1'% - }{% - You've tried to #2 for family `#1'.\MessageBreak - This my be done only for previous defined families.\MessageBreak - You should call `\string\DefineFamily{#1}' first.% - }% - }% -} -\newcommand*{\DefineFamilyMember}[2][.\@currname.\@currext]{% - \scr@if@family{#2}{define a family member}{% - \edef\reserved@a{% - \noexpand\in@{#2#1,}{\csname #2@key@familylist\endcsname}}% - \reserved@a - \ifin@\else - \expandafter\edef\csname #2@key@familylist\endcsname{% - \@nameuse{#2@key@familylist}#2#1,}% - \fi - }% -} -\newcommand*{\scr@if@familymember}[3]{% - \scr@if@family{#2}{#3}{% - \edef\reserved@a{% - \noexpand\in@{#2#1,}{\csname #2@key@familylist\endcsname}}% - \reserved@a - \ifin@ - \expandafter\@firstofone - \else - \PackageError{scrbase}{% - unknown member `#1' at family `#2'% - }{% - You've tried to #3 for member `#1' of family `#2'.\MessageBreak - This my be done only for previous defined family members.\MessageBreak - You should call `\string\DefineFamilyMember[{#1}]{#2}' first.% - }% - \expandafter\@gobble - \fi - }% -} -\newcommand*{\DefineFamilyKey}[2][.\@currname.\@currext]{% - \scr@if@familymember{#1}{#2}{define a key}{% - \define@key{#2#1}% - }% -} -%</base> -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\KOMA@key} -% \changes{v2.97c}{2007/04/19}{neues optionales Argument} -% \begin{macro}{\KOMA@key@familylist} -% \textsf{keyval}-Schlüssel für \KOMAScript{} werden mit \cs{KOMAkey} -% definiert, damit auch die Familie korrekt gesetzt und ggf. der Liste der -% Familien (\cs{KOMA@key@familylist}) hinzugefügt wird. -% \begin{macrocode} -%<*koma> -\newcommand*{\KOMA@key}[1][.\@currname.\@currext]{% - \DefineFamilyMember{KOMA}% - \DefineFamilyKey[#1]{KOMA}% -} -%</koma> -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \subsection{Optionen} -% -% Ab Version 2.97c sollen sowohl globale KOMA-Optionen als auch die -% KOMA-Optionen der jeweiligen Datei als auch die normalen Optionen in der -% Reihenfolge ausgeführt werden, in der sie angegeben wurden -- zuerst die -% globalen Optionen, dann die lokalen. Dabei werden nur die Optionen -% verwendet, die auch für das jeweilige Paket bzw. die jeweilige Klasse -% definiert wurden. -% -% \begin{macro}{\@globaloptionslist} -% \changes{v2.96}{2006/11/26}{new} -% \changes{v2.96}{2006/11/26}{Klassenoptionen durchsuchen} -% Die Lister der globalen Optionen wird teilweise benötigt. Weil -% \textsl{xkeyval} dämlicherweise glaubt, es müsse alle Optionen mit -% Gleichheitszeichen aus der Liste der Klassenoptionen entfernen -% (seltsamerweise aber nicht die (x)keyval-Optionen, die ohne Wert aufgerufen -% werden, weil ihr Defaultwert verwendet werden soll), wird hier ein eigenes -% Makro definiert. -% \begin{macrocode} -%<*base> -\newcommand*{\@globaloptionslist}{} -\let\@globaloptionslist\@classoptionslist -\scr@ifundefinedorrelax{XKV@classoptionslist}{}{% - \ifx\XKV@classoptionslist\@empty\else - \let\@globaloptionslist\XKV@classoptionslist - \fi -} -%</base> -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\FamilyProcessOptions} -% \changes{v3.00}{2008/04/30}{Neue Anweisung}% -% \changes{v3.11a}{2012/06/11}{Klassen melden falsche Werte nicht -% selbst als Fehler, sondern informieren nur darüber} -% \begin{macro}{\scr@removeunused} -% \changes{v3.10}{2011/09/12}{neu (intern)}% -% Diese Anweisung führt alle Optionen, sowohl normal deklarierte als auch -% \textsf{keyval}-Optionen für eine angegebene Familie (2. Argument) und das -% aktuelle Mitglied (1. optionales Argument) in der Reihenfolge, in der sie -% verwendet wurden aus -- zuerst globale Optionen, dann lokale Optionen. Das -% entspricht der Verwendung von \cs{ProcessOptions*} mit dem Unterschied, -% dass eben auch die \textsf{keyval}-Optionen abgearbeitet -% werden. \textsf{keyval}-Optionen, die keinem Mitglied zugeordnet, sondern -% universell sind, werden dabei vor gleichnamigen \textsf{keyval}-Optionen -% des aktuellen Mitglieds ausgeführt. -% \begin{macrocode} -%<*base> -\newcommand*{\scr@removeunused}{} -\newcommand*{\FamilyProcessOptions}[2][.\@currname.\@currext]{% - \let\ds@\@empty - \edef\@curroptions{\@ptionlist{\@currname.\@currext}}% - \ifx\@currext\@clsextension\else - \@for\CurrentOption:=\@globaloptionslist\do{% - \ifx\CurrentOption\@empty\else - \@expandtwoargs\in@{,\CurrentOption,}{,\@declaredoptions,}% - \ifin@ - \@use@ption - \expandafter\let\csname ds@\CurrentOption\endcsname\@empty - \else - \expandafter\def\expandafter\scr@removeunused\expandafter{% - \expandafter\def\expandafter\CurrentOption\expandafter{% - \CurrentOption}\@use@ption}% - \scr@optiontest{#2}\CurrentOption{}{% - \@expandtwoargs\setkeys{#2}% - \CurrentOption - \scr@removeunused - }% - \scr@optiontest{#2#1}\CurrentOption{}{% - \@expandtwoargs\setkeys{#2#1}% - \CurrentOption - \scr@removeunused - }% - \let\scr@removeunused\@empty - \fi - \fi - }% - \fi - \@for\CurrentOption:=\@curroptions\do{% - \@use@ption - \scr@ifundefinedorrelax{ds@\CurrentOption}{% - \scr@optiontest{#2}\CurrentOption{% - \scr@optiontest{#2#1}\CurrentOption{% - \default@ds - }{% - \let\scr@removeunused\relax - \edef\reserved@a{% - \noexpand\setkeys{#2#1}{\CurrentOption}% - \noexpand\def\noexpand\CurrentOption{\CurrentOption}% - }\reserved@a - \ifx\scr@removeunused\relax\else\default@ds\fi - }% - }{% - \let\scr@removeunused\relax - \edef\reserved@a{% - \noexpand\setkeys{#2}{\CurrentOption}% - \noexpand\def\noexpand\CurrentOption{\CurrentOption}% - }\reserved@a - \if\scr@removeunused\relax\else\default@ds\fi - \scr@optiontest{#2#1}\CurrentOption{}{% - \let\scr@removeunused\relax - \@expandtwoargs\setkeys{#2#1}% - \CurrentOption - \ifx\scr@removeunused\relax\else\default@ds\fi - }% - }% - }{% - }% - }% - \@for\CurrentOption:=\@declaredoptions\do{% - \expandafter\let\csname ds@\CurrentOption\endcsname\relax}% - \let\CurrentOption\@empty - \let\@fileswith@pti@ns\@@fileswith@pti@ns - \AtEndOfPackage{\let\@unprocessedoptions\relax}% -} -\@onlypreamble\FamilyProcessOptions -% \end{macrocode} -% \end{macro} -% \begin{macro}{\scr@optiontest} -% \changes{v2.97c}{2007/04/18}{neu (intern)}% -% \begin{macro}{\scr@pti@ntest} -% \changes{v2.97c}{2007/04/18}{neu (intern)}% -% Es werden zwei interne Makros benötigt, um zu testen, ob eine -% entsprechende keyval-Option definiert ist. Grund der Übung ist, dass -% sowohl das Familienargument als auch die Option selbst expandiert werden -% muss. -% \begin{macrocode} -\newcommand*{\scr@optiontest}[2]{% - \edef\reserved@a{\noexpand\scr@pti@ntest{#1}#2=\noexpand\@nil}% - \reserved@a -} -\newcommand*{\scr@pti@ntest}{} -\def\scr@pti@ntest#1#2=#3\@nil{\scr@ifundefinedorrelax{KV@#1@#2}} -%</base> -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\KOMAProcessOptions} -% \changes{v2.97c}{2007/04/18}{neu}% -% \changes{v3.00}{2008/04/30}{kein optionales Argument mehr}% -% Diese Anweisung führt alle Optionen, sowohl normal deklarierte als auch -% keyval-Optionen eines Pakets bzw. einer Klasse in der Reihenfolge, in der -% sie verwendet wurden aus -- zuerst globale Optionen, dann lokale -% Optionen. Das entspricht der Verwendung von \cs{ProcessOptions*} mit dem -% Unterschied, dass eben auch die keyval-Optionen abgearbeitet -% werden. keyval-Optionen, die keiner einzelnen Klasse und keinem einzelnen -% Paket zugeordnet werden, werden dabei vor gleichnamigen eigenen -% keyval-Optionen ausgeführt. -% \begin{macrocode} -%<*koma> -\newcommand*{\KOMAProcessOptions}{\FamilyProcessOptions{KOMA}} -\@onlypreamble\KOMAProcessOptions -%</koma> -% \end{macrocode} -% \end{macro} -% -% \begin{option}{internalonly} -% \changes{v2.96}{2006/11/26}{neu} -% \changes{v2.97c}{2007/06/20}{geht auch ohne Argument} -% \begin{macro}{\dont@let@as@internal@defined} -% \changes{v2.96}{2006/11/26}{neu (intern)} -% Anweisungen, die mit einem internen und einem Anwendername vorhanden sind, -% können vor dem Anwender optional verborgen werden. Wird kein Argument -% angegeben, so werden alle Anweisungen verborgen. -% \begin{macrocode} -%<*base> -\newcommand*{\dont@let@as@internal@defined}{/} -\newif\if@let@as@internalonly@defined\@let@as@internalonly@definedfalse -\DefineFamily{KOMA} -\DefineFamilyMember{KOMA} -\DefineFamilyKey{KOMA}{internalonly}[\relax]{% - \ifx\relax#1\relax - \@let@as@internalonly@definedtrue - \else - \@let@as@internalonly@definedfalse - \begingroup - \@expandtwoargs\in@{#1}\dont@let@as@internal@defined - \expandafter\endgroup - \ifin@\else\g@addto@macro\dont@let@as@internal@defined{#1/}\fi - \fi -} -%</base> -% \end{macrocode} -% \end{macro} -% \end{option} -% -% \changes{v2.96}{2006/08/20}{Optionen werden abgearbeitet} -% \changes{v2.97c}{2007/04/18}{Optionen werden mit \cs{KOMAProcessOptions} -% abgearbeitet} -% \begin{macrocode} -%<koma>\KOMAProcessOptions\relax -%<base>\FamilyProcessOptions{KOMA}\relax -% \end{macrocode} -% -% \iffalse -%</option> -%<*body> -% \fi -% -% \subsection{Ein wenig zusätzliche Mathematik für \eTeX} -% -% \begin{macro}{\XdivY} -% \changes{v3.05a}{2010/03/10}{Neu} -% Ergebnis ist erster Argument durch zweites abgerundet auf die nächst -% kleinere ganze Zahl. -% \begin{macrocode} -%<*base> -\newcommand*{\XdivY}[2]{% - \numexpr ( #1 + #2 / 2 ) / #2 - 1\relax -} -%</base> -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\XmodY} -% \changes{v3.05a}{2010/03/10}{Neu} -% Ergebnis ist erstes Argument modulo zweites Argument. -% \begin{macrocode} -%<*base> -\newcommand*{\XmodY}[2]{% - \numexpr #1 - #2 * \XdivY{#1}{#2}\relax -} -%</base> -% \end{macrocode} -% \end{macro} -% -% \subsection{Häufig benötigte Befehle} -% -% \begin{macro}{\if@atdocument} -% \changes{v2.95}{2002/12/05}{neuer Schalter} -% \begin{macro}{\@atdocumenttrue} -% \begin{macro}{\@atdocumentfalse} -% Dieser Schalter wird bei \cs{begin}\texttt{\{document\}} wahr. Er -% wird von \KOMAScript{} für Befehle verwendet, die sich -% unterschiedlich verhalten, je nachdem, ob sie in der Präambel oder -% danach aufgerufen werden. -% \begin{macrocode} -%<*base> -\newif\if@atdocument -\AtBeginDocument{\@atdocumenttrue} -\@onlypreamble\@atdocumentrue -\@onlypreamble\@atdocumentfalse -%</base> -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\let@as@internal@defined} -% \changes{v2.95}{2002/08/19}{neu (intern)} -% \changes{v2.95c}{2006/08/12}{Warnung bei Umdefinierung} -% \changes{v2.96}{2006/11/26}{Herausreichen von internen Makros als -% Benutzermakros kann verhindert werden} -% \changes{v2.97c}{2007/06/20}{Herausreichen von internen Makros kann -% generell verhindert werden} -% \changes{v3.10}{2010/10/26}{\cs{ignorespaces} beim \cs{document}-Patch -% ergänzt} -% Dieses Makro wird intern verwendet, um dokumentierte Makros mit der -% Definition von internen Makros zu versehen, falls sie nicht bereits -% definiert oder als nicht zu definieren markiert sind. Der Name des -% dokumentierten Makros wird als Parameter übergeben. Dies wird gleich -% benötigt. -% \begin{macrocode} -%<*base> -\newcommand*{\let@as@internal@defined}[1]{% - \begingroup - \if@let@as@internalonly@defined - \in@true - \else - \@expandtwoargs\in@{/#1/}\dont@let@as@internal@defined - \fi - \expandafter\endgroup - \ifin@ - \PackageInfo{% - scrbase% - }{% - \expandafter\string\csname #1\endcsname\space excluded from being - defined% - }% - \else - \@ifundefined{#1}{% - \begingroup - \expandafter\def\expandafter\@tempa - \expandafter{\csname scr@#1\endcsname} - \expandafter\def\expandafter\@tempb - \expandafter{\csname #1\endcsname} - \expandafter\expandafter\expandafter\endgroup - \expandafter\expandafter\expandafter\let\expandafter\@tempb\@tempa - \if@atdocument\else - \g@addto@macro\document{% - \expandafter\ifx\csname #1\expandafter\endcsname - \csname scr@#1\endcsname - \else - \PackageWarning{scrbase}{% - \expandafter\string\csname #1\endcsname\space was - redefined\MessageBreak - at the document preamble.\MessageBreak - If you did not redefine it by yourself, have a\MessageBreak - a look at the description of this command at\MessageBreak - the manual of every package you are using\@gobble - }% - \fi - \ignorespaces - }% - \fi - }{% - \PackageInfo{% - scrbase% - }{% - \expandafter\string\csname #1\endcsname\space already - defined.\MessageBreak - If \expandafter\string\csname #1\endcsname\space does not behave - like\MessageBreak - it was described at the KOMA-Script manual, try to\MessageBreak - load `scrbase.sty' earlier or find out at which\MessageBreak - package or class \expandafter\string\csname #1\endcsname\space - was defined before\@gobble - }% - }% - \fi -} -%</base> -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\ifundefinedorrelax} -% \changes{v2.95}{2002/08/21}{neu} -% \changes{v2.95c}{2006/08/12}{über interne Anweisung definiert} -% \changes{v2.97c}{2007/06/20}{umbenannt von \cs{ifundefined}} -% Dieses Makro arbeitet wie \cs{@ifundefined}, definiert dabei aber -% ein undefiniertes Makro nicht als \cs{relax}. -% \begin{macrocode} -%<*base> -\let@as@internal@defined{ifundefinedorrelax} -%</base> -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\ifnotundefined} -% \changes{v2.95}{2002/08/21}{neu} -% \changes{v2.95c}{2006/08/12}{nutzt \eTeX{} wenn möglich} -% \changes{v3.02c}{2009/02/19}{\eTeX{} ist zwingend} -% Dieses Makro arbeitet genau umgekehrt zu \cs{ifundefined}. Manchmal -% ist es ganz nützlich, auch das zu haben. Dieses Makro heißt nicht -% \cs{ifdefined}, weil \eTeX\ bereits ein solches Primitiv bietet. -% \begin{macrocode} -%<*base> -\newcommand{\ifnotundefined}[1]{% - \ifcsname #1\endcsname - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi -} -%</base> -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\ifstr} -% \changes{v2.95}{2004/07/20}{if- und then-Teil werden nicht gefressen} -% \changes{v3.04b}{2010/01/29}{\cs{edef} durch \cs{protected@edef} ersetzt} -% Dieses Makro vergleicht zwei Tokenfolgen. Eigentlich müsste es also -% eher \cs{ifequal} oder ähnlich heißen. -% \begin{macrocode} -%<*base> -\newcommand\ifstr[2]{% - \begingroup\protected@edef\@tempa{#1}\protected@edef\@tempb{#2}% - \ifx\@tempa\@tempb - \endgroup\expandafter\@firstoftwo - \else - \endgroup\expandafter\@secondoftwo - \fi -} -%</base> -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\ifnumber} -% Dieses Makro testet, ob ein übergebener Parameter eine positive, -% ganze Zahl ist. Ist dies der Fall, wird der zweite Parameter -% ausgeführt, sonst der dritte. -% \begin{macrocode} -%<*base> -\newcommand\ifnumber[1]{% - \begingroup\@tempswafalse\let\scr@next\test@number - \expandafter\scr@next#1\scr@next - \if@tempswa - \endgroup\expandafter\@firstoftwo - \else - \endgroup\expandafter\@secondoftwo - \fi -} -% \end{macrocode} -% \begin{macro}{\test@number} -% Für den eigentlichen Test wird der erste Parameter Token für Token -% gescannt und beurteilt. -% \begin{macrocode} -\newcommand*{\test@number}[1]{% - \ifx \scr@next#1 - \let\scr@next\relax - \else -% \end{macrocode} -% Dabei wird für einen schnelleren Vergleich die Tatsache genutzt, dass -% Ziffernzeichen immer im selben durchgängigen Bereich liegen -% \begin{macrocode} - \@tempcnta=\expandafter\expandafter\expandafter\number - \expandafter`#1\relax - \ifnum \@tempcnta>47 - \ifnum \@tempcnta<58 - \@tempswatrue - \else\@tempswafalse\fi - \else\@tempswafalse\fi -% \end{macrocode} -% Das zeichenweise Scannen und Parsen kann natürlich nicht einfach -% abgebrochen werden. Stattdessen ist der Parameterrest noch zu -% entfernen. -% \begin{macrocode} - \if@tempswa\else\let\scr@next\gobble@till@scr@next\fi - \fi - \scr@next -} -% \end{macrocode} -% \begin{macro}{\gobble@tillscr@@next} -% Das geschieht mit einem einzigen "`Leermacro"'. -% \begin{macrocode} -\newcommand*{\gobble@till@scr@next}{} -\def\gobble@till@scr@next#1\scr@next{} -%</base> -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\ifdimen} -% Dieses Makro testet, ob ein übergebener Parameter eine Dimension -% ist und führt in Abhängigkeit davon den zweiten oder dritten -% Parameter aus. -% \begin{macrocode} -%<*base> -\newcommand{\ifdimen}[1]{% - \begingroup\@tempswatrue\let\scr@next\test@posdimen - \expandafter\test@dimen#1\scr@next - \if@tempswa - \endgroup\expandafter\@firstoftwo - \else - \endgroup\expandafter\@secondoftwo - \fi -} -% \end{macrocode} -% \begin{macro}{\test@dimen} -% Als erste muss ein Vorzeichen entfernt werden. -% \begin{macrocode} -\newcommand*{\test@dimen}[1]{% - \ifx -#1\else\ifx +#1\else - \def\scr@next{\let\scr@next\test@posdimen\scr@next#1}\fi\fi - \scr@next -} -% \end{macrocode} -% \begin{macro}{\test@posdimen} -% Dann muss getestet werden, ob es sich beim Rest um eine Dimension -% handelt. Dabei werden der Einfachheit halber mehrere Dezimalkomma -% und -punkte erlaubt. Natürlich könnte man es auch wirklich richtig -% machen, aber das wäre nochmal etwas aufwendiger. Ist das wirklich -% notwendig? -% \begin{macrocode} -\newcommand*{\test@posdimen}[1]{% - \ifx \scr@next#1% - \@tempswafalse\let\scr@next\relax - \else - \if .#1\else\if ,#1\else - \@tempcnta=% - \expandafter\expandafter\expandafter\number\expandafter`#1\relax - \ifnum \@tempcnta>47 - \ifnum \@tempcnta<58 - \else\def\scr@next{\test@dimunt#1}\fi - \else\def\scr@next{\test@dimunt#1}\fi - \fi\fi - \fi - \scr@next -} -% \end{macrocode} -% \begin{macro}{\testdimunt} -% \begin{macro}{\test@trueunt} -% Außer einer Gleitkomma- bzw. Gleitpunktzahl muss auch noch die Einheit -% behandelt werden. Dabei sind sowohl die neun Standardeinheiten als auch -% deren "`true"'-Variante zu berücksichtigen. Deshalb wird zuerst ein -% eventuelles "`\texttt{true}"' weggeworfen. -% \begin{macrocode} -\newcommand*{\test@dimunt}{} -\def\test@dimunt#1\scr@next{% - \expandafter\test@trueunt#1truetrue\test@trueunt -} -\newcommand*{\test@trueunt}{} -\def\test@trueunt#1true#2true#3\test@trueunt{% - \edef\@tempa{#1} - \ifx\@tempa\@empty\test@@ifdimunt{#2}\else\test@@ifdimunt{#1}\fi -} -% \end{macrocode} -% \begin{macro}{\test@@ifdimunt} -% Anschließend wird dann getestet, ob es sich um eine der neun üblichen -% Einheiten handelt. -% \begin{macrocode} -\newcommand*\test@@ifdimunt[1]{% - \@tempswafalse - \ifstr{#1}{pt}{\@tempswatrue}{% - \ifstr{#1}{pc}{\@tempswatrue}{% - \ifstr{#1}{in}{\@tempswatrue}{% - \ifstr{#1}{bp}{\@tempswatrue}{% - \ifstr{#1}{cm}{\@tempswatrue}{% - \ifstr{#1}{mm}{\@tempswatrue}{% - \ifstr{#1}{dd}{\@tempswatrue}{% - \ifstr{#1}{cc}{\@tempswatrue}{% - \ifstr{#1}{sp}{\@tempswatrue}{}% - }% - }% - }% - }% - }% - }% - }% - }% -} -%</base> -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% -% -% \begin{macro}{\ifpdftex} -% \changes{v2.95}{2002/08/19}{neu} -% \begin{macro}{\scr@ifpdftex} -% \changes{v2.95}{2002/08/19}{neu (intern)} -% If-then-else-Konstrukt, um zu testen, ob pdf\TeX{} verwendet wird. -% \begin{macrocode} -%<*base> -\newcommand{\scr@ifpdftex}{\ifnotundefined{pdftexversion}} -\let@as@internal@defined{ifpdftex} -\BeforePackage{pdfcprot}{\let\ifpdftex\relax} -\AfterPackage{pdfcprot}{\let@as@internal@defined{ifpdftex}} -%</base> -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\ifVTeX} -% \changes{v2.95}{2002/08/19}{neu} -% \changes{v2.97c}{2007/06/20}{umdefiniert von \cs{ifvtex}} -% \begin{macro}{\scr@ifVTeX} -% \changes{v2.95}{2002/08/19}{neu} -% \changes{v2.97c}{2007/06/20}{umdefiniert von \cs{scr@ifvtex}} -% If-then-else-Konstrukt, um zu testen, ob V\TeX{} verwendet wird. -% \begin{macrocode} -%<*base> -\newcommand{\scr@ifVTeX}{\ifnotundefined{VTeXversion}} -\let@as@internal@defined{ifVTeX} -%</base> -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\ifpdfoutput} -% \changes{v2.7g}{2001/04/17}{neu} -% \changes{v2.8q}{2001/10/19}{\cs{pdfoutput} wird nicht mehr zu -% \cs{relax}, wenn zuvor undefiniert} -% \changes{v2.8q}{2001/10/19}{darf bereits definiert sein} -% \changes{v2.8q}{2001/10/19}{Verwendung von \cs{scr@ifpdfoutput}} -% \begin{macro}{\scr@ifpdfoutput} -% \changes{v2.8q}{2001/10/19}{neu (intern)} -% \changes{v2.8q}{2001/11/13}{funktioniert} -% \changes{v2.95}{2002/08/21}{berücksichtigt V\TeX} -% \changes{v2.95}{2004/07/20}{Expandierbarkeit verbessert} -% If-then-else-Konstrukt, um abhängig davon, ob als \texttt{pdf} -% ausgegeben wird oder nicht, Befehle auszuführen. Dieses Makro wird -% für die Deklaration der Option \texttt{pagesize} benötigt. -% \begin{macrocode} -%<*base> -\newcommand{\scr@ifpdfoutput}{% - \scr@ifundefinedorrelax{pdfoutput}{% - \scr@ifundefinedorrelax{OpMode}{% - \expandafter\@secondoftwo% - }{% - \ifnum\OpMode=1 - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - }% - }{% - \ifnum\pdfoutput>0 - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - }% -}% -\let@as@internal@defined{ifpdfoutput} -%</base> -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\ifpsoutput} -% \changes{v2.95}{2002/08/21}{neu} -% \begin{macro}{\scr@ifpsoutput} -% \changes{v2.95}{2002/08/21}{neu (intern)} -% \changes{v2.95}{2004/07/20}{Expandierbarkeit verbessert} -% If-then-else-Konstrukt, um abhängig davon, ob früher oder später -% \texttt{ps} ausgegeben wird oder nicht, Befehle auszuführen. -% \begin{macrocode} -%<*base> -\newcommand*{\scr@ifpsoutput}{% - \ifnotundefined{if@dvips}{% - \if@dvips - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - }{% - \ifnotundefined{OpMode}{% - \ifnum\OpMode=2 - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - }{% - \expandafter\@secondoftwo - }% - }% -} -\let@as@internal@defined{ifpsoutput} -%</base> -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\ifdvioutput} -% \changes{v2.95}{2002/08/21}{neu} -% \begin{macro}{\scr@ifdvioutput} -% \changes{v2.95}{2002/08/21}{neu (intern)} -% \changes{v2.95}{2004/07/20}{Expandierbarkeit verbessert} -% If-then-else-Konstrukt, um abhängig davon, ob \texttt{dvi} -% ausgegeben wird oder nicht, Befehle auszuführen. -% \begin{macrocode} -%<*base> -\newcommand*{\scr@ifdvioutput}{% - \scr@ifundefinedorrelax{pdfoutput}{% - \scr@ifundefinedorrelax{OpMode}{% - \expandafter\@firstoftwo - }{% - \ifnum\OpMode=0 - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - }% - }{% - \ifnum\pdfoutput=0 - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - }% -} -\let@as@internal@defined{ifdvioutput} -%</base> -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\scr@smashdp} -% \changes{v2.97c}{2007/09/17}{neu (intern)} -% \changes{v3.02a}{2009/01/23}{\cs{smash} nicht direkt verwenden, weil -% \textsf{amsmath} das inkompatibel umdefiniert} -% Gibt Material aus, erzeugt dabei aber nur Höhe und Breite, jedoch keine -% Tiefe. -% \begin{macrocode} -%<*base> -\newcommand*{\scr@smashdp}[1]{% - \begingroup - \def\finsm@sh{\dp\z@\z@\box\z@}% - \ifmmode - \expandafter\mathpalette\expandafter\mathsm@sh - \else - \expandafter\makesm@sh - \fi - {#1}% - \endgroup -} -%</base> -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\PackageInfoNoLine} -% \changes{v2.97d}{2007/10/03}{neu} -% Arbeitet wie \cs{PackageInfo} aber ohne Ausgabe der Zeilennummer. -% \begin{macrocode} -%<*base> -\providecommand*{\PackageInfoNoLine}[2]{% - \PackageInfo{#1}{#2\@gobble}% -} -%</base> -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\ClassInfoNoLine} -% \changes{v2.98c}{2008/02/15}{neu} -% Arbeitet wie \cs{ClassInfo} aber ohne Ausgabe der Zeilennummer. -% \begin{macrocode} -%<*base> -\providecommand*{\ClassInfoNoLine}[2]{% - \ClassInfo{#1}{#2\@gobble}% -} -%</base> -% \end{macrocode} -% \end{macro} -% -% \subsection{Definition von KOMA-\textsf{keyval}-Schlüsseln (Hauptteil)} -% -% \begin{macro}{\FamilyExecuteOptions} -% \changes{v3.00}{2008/04/30}{Neue Anweisung} -% \changes{v3.04b}{2010/01/29}{\cs{edef} durch \cs{protected@edef} ersetzt} -% \changes{v3.04b}{2010/02/02}{\cs{scr@key@atlist} und \cs{scr@key@name} -% vor Überschreiben in \cs{serkeys} geschützt} -% Entspriche \cs{ExecuteOptions} jedoch \textsf{keyval}-Optionen. -% \begin{macrocode} -%<*base> -\newcommand*{\FamilyExecuteOptions}[3][.\@currname.\@currext]{% - \def\reserved@a##1\@nil{% - \@for\scr@key@atlist:=#3\do{% - \expandafter\scr@key@split@name@value\scr@key@atlist==\@nil - \scr@ifundefinedorrelax{KV@#2@\scr@key@name}{}{% - \protected@edef\reserved@a{\noexpand\setkeys{#2}{\scr@key@atlist}% - \noexpand\def\noexpand\scr@key@atlist{\scr@key@atlist}% - \noexpand\def\noexpand\scr@key@name{\scr@key@name}% - }% - \reserved@a - }% - \scr@ifundefinedorrelax{KV@#2#1@\scr@key@name}{}{% - \protected@edef\reserved@a{% - \noexpand\setkeys{#2#1}{\scr@key@atlist}% - \noexpand\def\noexpand\scr@key@atlist{\scr@key@atlist}% - \noexpand\def\noexpand\scr@key@name{\scr@key@name}% - }% - \reserved@a - }% - \let\CurrentOption\scr@key@atlist - \csname ds@\CurrentOption\endcsname - }% - \edef\CurrentOption{##1}% - }% - \expandafter\reserved@a\CurrentOption\@nil -} -\@onlypreamble\FamilyExecuteOptions -%</base> -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\KOMAExecuteOptions} -% \changes{v2.97c}{2007/04/19}{Neue Anweisung} -% \changes{v3.00}{2008/04/30}{Kein optionales Argument mehr} -% Liste von Optionen ausführen -% \begin{macrocode} -%<*koma> -\newcommand*{\KOMAExecuteOptions}{\FamilyExecuteOptions{KOMA}} -\@onlypreamble\KOMAExecuteOptions -%</koma> -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\FamilyOptions} -% \changes{v3.00}{2008/04/30}{Neue Anweisung} -% Es werden Schlüssel einer Familie verwendet. Existiert ein Schlüssel nicht, -% so wird eine Fehlermeldung ausgegeben. -% \begin{macrocode} -%<*base> -\newcommand*{\FamilyOptions}[2]{% - \Family@Options{#1}{#2}{% - \PackageError{scrbase}{% - option `\scr@key@name' unknown at family `#1'% - }{% - You have used \string\FamilyOptions{#1} to set - `\scr@key@atlist',\MessageBreak - but family `#1' does not know any option named - `\scr@key@name'.\MessageBreak - See the manual for the package or class using family `#1' for - more\MessageBreak - informations about options and their values.% - }% - }% -} -% \begin{macro}{\Family@Options} -% \changes{v3.00}{2008/04/30}{Neues Makro (intern)}% -% Das interne Macro \cs{Family@Options} macht die eigentliche Arbeit. Das -% erste Argument ist dabei die Familie. Das zweite Argument ist die Liste -% der Optionen, das zweite Code, der im Fehlerfall ausgeführt werden -% soll. Dabei sind die Makros \cs{scr@key@atlist}, \cs{scr@key@name} und -% \cs{scr@key@value} gültig und können verwendet werden. -% -% Anmerkung: Es wird nicht auf \textsf{xkeyval} und den dortigen Befehl -% \cs{setkeys+} gesetzt, weil dieser die Optionen nicht in der Reihenfolge -% der Optionen, sondern in der Reihenfolge der Familien ausführt. Das passt -% mir aber hier gar nicht. -% -% In einer Schleife über alle Optionen werden die Optionen zunächst in -% Option und Wert aufgespaltet. -% \begin{macrocode} -\newcommand*{\Family@Options}[3]{% - \@for\scr@key@atlist:=#2\do{% -% \end{macrocode} -% \changes{v3.08}{2010/11/05}{leere Argumente in der Optionenliste}% -% Auf vielfachen Wunsch und entgegen meiner Überzeugung, sind auch leere -% Argumente in der Optionenliste erlaubt. Die erste Form wäre, wenn zwei -% Kommas diret aufeinander folgen: -% \begin{macrocode} - \ifx\scr@key@atlist\@empty\else -% \end{macrocode} -% Die zweite Möglichkeit wäre, dass noch Leerzeichen zwischen den Komma -% übrig bleiben: -% \begin{macrocode} - \ifx\scr@key@atlist\space\else - \expandafter\scr@key@split@name@value\scr@key@atlist==\@nil -% \end{macrocode} -% Die dritte Möglichkeit, dass auch noch ein Gleichheitszeichen übrig -% gelassen wurde, werde ich aber nicht abfangen. Irgendwann müssen die -% Anwender auch mal ihre Fehler einsehen und korrigieren! -% -% Dann wird in einer Schleife über alle Familien festgestellt, ob die Option -% in einer Familie bekannt ist und ggf. ausgeführt. -% \changes{v3.04b}{2010/01/29}{\cs{edef} durch \cs{protected@edef} ersetzt} -% \changes{v3.09a}{2011/06/07}{weniger Expansion durch sinnvollen Gebrauch -% von \cs{unexpanded}} -% \begin{macrocode} - \scr@key@found@false - \edef\@tempa{\csname #1@key@familylist\endcsname}% - \@for\@tempa:=\@tempa\do{% - \scr@ifundefinedorrelax{KV@\@tempa @\scr@key@name}{}{% - \scr@key@found@true - \protected@edef\reserved@a{% - \noexpand\setkeys{\@tempa}{% - \unexpanded\expandafter{\scr@key@atlist}}% - \noexpand\def\noexpand\@tempa{% - \unexpanded\expandafter{\@tempa}}% - \noexpand\def\noexpand\scr@key@atlist{% - \unexpanded\expandafter{\scr@key@atlist}}% - \noexpand\def\noexpand\scr@key@name{% - \unexpanded\expandafter{\scr@key@name}}% - \noexpand\def\noexpand\scr@key@value{% - \unexpanded\expandafter{\scr@key@value}}% - }% - \reserved@a - }% - }% - \ifscr@key@found@\else#3\fi - \fi - \fi - }% -} -% \end{macrocode} -% \begin{macro}{\ifscr@key@found@} -% \changes{v2.97c}{2007/04/19}{Neuer Schalter (intern)} -% \changes{v3.00}{2008/04/30}{umbenannt von \cs{ifKOMA@key@found}} -% \begin{macro}{\scr@key@atlist} -% \changes{v2.97c}{2007/04/19}{Neues Makro (intern)} -% \changes{v3.00}{2008/04/30}{umbenannt von \cs{KOMA@key@atlist}} -% \begin{macro}{\scr@key@name} -% \changes{v2.97c}{2007/04/19}{Neues Makro (intern)} -% \changes{v3.00}{2008/04/30}{umbenannt von \cs{KOMA@key@name}} -% \begin{macro}{\scr@key@value} -% \changes{v2.97c}{2007/04/19}{Neues Makro (intern)} -% \changes{v3.00}{2008/04/30}{umbenannt von \cs{KOMA@key@value}} -% \begin{macro}{\scr@key@split@name@value} -% \changes{v2.97c}{2007/04/19}{Neues Makro (intern)} -% \changes{v2.97e}{2007/11/10}{verwendet \cs{KV@@sp@def} zur Entsorgung von -% Leerzeichen} -% \changes{v3.00}{2008/04/30}{umbenannt von \cs{KOMA@key@split@name@value}} -% \begin{macrocode} -\newif\ifscr@key@found@ -\newcommand*{\scr@key@atlist}{} -\newcommand*{\scr@key@name}{} -\newcommand*{\scr@key@value}{} -\newcommand*{\scr@key@split@name@value}{} -\def\scr@key@split@name@value#1=#2=#3\@nil{% - \KV@@sp@def\scr@key@name{#1}% - \KV@@sp@def\scr@key@value{#2}% -} -%</base> -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\FamilyOption} -% \changes{v3.00}{2008/04/30}{Neue Anweisung} -% \begin{macro}{\Family@Option} -% \changes{v3.00}{2008/04/30}{Neu (intern)} -% \changes{v3.04b}{2010/01/29}{\cs{edef} durch \cs{protected@edef} ersetzt} -% Im Gegensatz zu \cs{FamilyOptions} kann man mit dieser Anweisung nur eine -% einzige Option setzen. Dafür kann man gleich mehrere durch Komma getrennte -% Argumente für diese Option setzen. Das erste obligatorische Argument ist -% wieder die Familie, das zweite obligatorische Argument ist die Option, das -% dritte, obligatorische Argument ist die Liste der Werte für diese Option. -% \begin{macrocode} -%<*base> -\newcommand*{\FamilyOption}[3]{% - \Family@Option{#1}{#2}{#3}{% - \PackageError{scrbase}{% - unknown option `\scr@key@name' for familie `#1'% - }{% - You have used \string\FamilyOption{#1} to set - `\scr@key@name',\MessageBreak - but family '#1' does not know any option named - `\scr@key@name'.\MessageBreak - See the the manual of the class or package, that provides - family\MessageBreak - `#1' for more informations about options and their values.% - }% - }% -} -\newcommand*{\Family@Option}[4]{% - \expandafter\KV@@sp@def\expandafter\scr@key@name\expandafter{#2}% - \scr@key@found@false - \edef\@tempa{\csname #1@key@familylist\endcsname}% - \@for\@tempa:=\@tempa\do{% - \scr@ifundefinedorrelax{KV@\@tempa @\scr@key@name}{}{% - \scr@key@found@true - \let\@tempb\@tempa - }% - }% - \ifscr@key@found@ - \let\reserved@a\@empty - \@for\@tempa:=#3\do{% - \expandafter\KV@@sp@def\expandafter\@tempa\expandafter{\@tempa}% -% \end{macrocode} -% \changes{v3.08}{2010/11/05}{leere Argumente in der Werteliste} -% Auf vielfachen Wunsch und entgegen meiner Überzeugung, sind auch leere -% Argumente in der Werteliste erlaubt: -% \begin{macrocode} - \ifx\@tempa\@empty\else - \protected@edef\reserved@a{\reserved@a,\scr@key@name=\@tempa}% - \fi - }% - \ifx\reserved@a\@empty - \protected@edef\reserved@a{\noexpand\setkeys{\@tempb}{\scr@key@name}}% - \else - \protected@edef\reserved@a{% - \noexpand\setkeys{\@tempb}{\expandafter\@gobble\reserved@a}}% - \fi - \reserved@a - \else - #4 - \fi -} -%</base> -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\KOMAoptions} -% \changes{v2.96}{2006/08/20}{Neuer Hook nach den Optionen} -% \changes{v2.97c}{2007/04/19}{Optionen aller KOMA-Familien abarbeiten} -% Es werden Schlüssel verwendet und ggf. danach noch Dinge ausgeführt. -% \begin{macrocode} -%<*koma> -\newcommand*{\KOMAoptions}[1]{% - \let\post@kopt@hook\@empty - \KOMA@options{#1}{% -% \end{macrocode} -% Wenn der Schlüssel für keines der bekannten Familienmitglieder definiert -% ist, wird ein Fehler ausgegeben. -% \begin{macrocode} - \PackageError{scrkbase}{% - unknown KOMA option `\scr@key@name'% - }{% - You have used \string\KOMAoptions\space to set - `\scr@key@atlist',\MessageBreak - but KOMA-Script does not know any option named - `\scr@key@name'.\MessageBreak - See the KOMA-Script manual for more informations about options - and\MessageBreak - their values.% - }% - }% - \post@kopt@hook\let\post@kopt@hook\relax -} -% \end{macrocode} -% \begin{macro}{\KOMA@options} -% \changes{v2.97c}{2007/04/19}{Neues Makro (intern)} -% Das interne Macro \cs{KOMA@options} macht die eigentliche Arbeit. Das erste -% Argument ist dabei die Liste der Optionen, das zweite Code, der im -% Fehlerfall ausgeführt werden soll. Dabei sind die Makros -% \cs{KOMA@key@atlist}, \cs{KOMA@key@name} und \cs{KOMA@key@value} gültig und -% können verwendet werden. -% -% Anmerkung: Es wird nicht auf \textsf{ykeyval} und den dortigen Befehl -% \cs{setkeys+} gesetzt, weil dieser die Optionen nicht in der Reihenfolge der -% Optionen, sondern in der Reihenfolge der Familien ausführt. Das passt mir -% aber hier gar nicht. -% -% In einer Schleife über alle Optionen werden die Optionen zunächst in Option -% und Wert aufgespaltet. -% \begin{macrocode} -\newcommand*{\KOMA@options}{\Family@Options{KOMA}} -%</koma> -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\post@kopt@hook} -% \begin{macro}{\AfterKOMAoptions} -% Eine Option kann dafür sorgen, dass nach den Optionen noch etwas passiert. -% \begin{macrocode} -%<*koma> -\newcommand*{\post@kopt@hook}{} -\let\post@kopt@hook\relax -\newcommand*{\AfterKOMAoptions}{% - \ifx\post@kopt@hook\relax - \PackageWarning{scrkbase}{% - \string\AfterKOMAoptions\space can only be used inside a\MessageBreak - KOMA-Script option that is called using \string\KOMAoptions.\MessageBreak - Because of this, command will be ignored% - }% - \expandafter\@gobbletwo - \else - \expandafter\l@addto@macro - \fi - \post@kopt@hook -} -%</koma> -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\l@addto@macro} -% \changes{v2.8p}{2001/09/22}{neu (intern)} -% Damit \cs{AfterKOMAoptions} lokal möglich ist, wird eine lokal arbeitende -% Variante von \cs{g@addto@macro} benötigt, wie sie hier vorgestellt wird. -% \changes{v2.95}{2006/06/02}{korrigiert, damit es sich bezüglich -% Erweiterung um Makrodefinitonen mit Argumenten wie \cs{g@addto@macro} -% verhält} -% \begin{macrocode} -%<*base> -\scr@ifundefinedorrelax{unexpanded}{% - \newcommand*{\g@addto@macro@temp}{}% - \newcommand{\l@addto@macro}[2]{% - \begingroup% - \toks@\expandafter{#1#2}% - \xdef\g@addto@macro@temp{\the\toks@}% - \endgroup - \let#1\g@addto@macro@temp - }% -}{% - \newcommand{\l@addto@macro}[2]{% - \edef#1{\unexpanded\expandafter{#1#2}}% - }% -} -%</base> -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\KOMAoption} -% \changes{v2.98c}{2008/03/12}{Neue Anweisung} -% Im Gegensatz zu \cs{KOMAoptions} kann man mit dieser Anweisung nur eine -% einzige Option setzen. Dafür kann man gleich mehrere durch Komma getrennte -% Argumente für diese Option setzen. Das erste obligatorische Argument ist die -% Option, das zweite, obligatorische Argument ist die Liste der Werte für -% diese Option. -% \begin{macrocode} -%<*koma> -\newcommand*{\KOMAoption}[2]{% - \let\post@kopt@hook\@empty - \Family@Option{KOMA}{#1}{#2}{% - \PackageError{scrkbase}{% - unknown KOMA option `\scr@key@name'% - }{% - You have used \string\KOMAoption\space to set - `\scr@key@name',\MessageBreak - but KOMA-Script does not know any option named - `\scr@key@name'.\MessageBreak - See the KOMA-Script manual for more informations about options - and\MessageBreak - their values.% - }% - }% - \post@kopt@hook\let\post@kopt@hook\relax -} -%</koma> -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\FamilyUnknownKeyValue} -% \changes{v3.10}{2011/09/12}{no error while processing global options}% -% \changes{v3.11a}{2012/05/28}{prevent remove from list of unused global -% options globally}% -% Dieses Makro berichtet über Fehler wegen unbekannter Wertübergabe an einen -% Schlüssel. Das erste Argument ist die Familie, das zweite der Schlüssel, -% das dritte der Wert und das vierte die Liste der möglichen Werte. -% \begin{macrocode} -%<*base> -\newcommand*{\FamilyUnknownKeyValue}[4]{% - \ifx\scr@removeunused\@empty - \PackageError{% - scrbase% - }{% - option `#2' of family `#1' has no value `#3'% - }{% - You've tried to set option `#2' of family '#1' to value `#3'.\MessageBreak - But allowed values are only:\MessageBreak - #4\FamilyElseValues.\MessageBreak - See the manual of the class or package, that provides family - `#1'\MessageBreak - for more information about options and their values.% - }% - \else - \global\let\scr@removeunused\@empty - \PackageInfo{% - scrbase% - }{% - option `#2' of family `#1' has no value `#3'.\MessageBreak - Allowed values for option `#2' of family `#1'\MessageBreak - would be:\MessageBreak - #4\FamilyElseValues.\MessageBreak - Maybe another class or package provides this option.\MessageBreak - Global option ignored - }% - \fi -} -%</base> -% \end{macrocode} -% \begin{macro}{\FamilyElseValues} -% \changes{v3.00}{2008/05/02}{Neue Anweisung} -% Diese Anweisung kann vor dem Setzen eines Wertes definiert werden, um bei -% einer etwaigen Fehlermeldung weitere Werte als erlaubt auszugeben. Am Ende -% von \cs{FamilySetBool} und \cs{FamilySetNumerical} wird die Anweisung -% automatisch zu \cs{@empty}. Es ist zu beachten, dass bei der Definition der -% Anweisung als erstes ein Komma und ein Leerzeichen zu setzen ist! -% \begin{macrocode} -%<*base> -\newcommand*{\FamilyElseValues}{} -%</base> -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\FamilyBoolKey} -% \changes{v3.00}{2008/04/30}{Neue Anweisung} -% Dieses Makro definiert einen Schlüssel für eine Familie. Dieser Schlüssel -% ist ein Schalter, der über diverse Werte geschaltet werden kann. -% Das erste, optionale Argument ist das Familienmitglied, das zweite, -% obligatorische Argument ist die Familie, das dritte der Name des Schlüssels, -% das vierte der Schalter. -% \begin{macrocode} -%<*base> -\newcommand*{\FamilyBoolKey}[4][.\@currname.\@currext]{% - \@ifundefined{if#4}{% - \expandafter\newif\csname if#4\endcsname - }{}% - \DefineFamilyKey[{#1}]{#2}{#3}[true]{\FamilySetBool{#2}{#3}{#4}{##1}}% -} -% \end{macrocode} -% \begin{macro}{\FamilySetBool} -% \changes{v3.00}{2008/04/30}{Neue Anweisung} -% \changes{v3.11a}{2012/05/25}{Argument in Fehlermeldung korrigiert} -% Über diese Anweisung wird der Wert dann gesetzt. Dabei ist das erste -% Argument die Familie, das zweite der Name des Schlüsselt, das dritte der -% Schalter und das vierte schließlich der gewünschte Wert. -% \begin{macrocode} -\newcommand*{\FamilySetBool}[4]{% - \ifstr{#4}{true}{\@nameuse{#3true}}{% - \ifstr{#4}{on}{\@nameuse{#3true}}{% - \ifstr{#4}{yes}{\@nameuse{#3true}}{% - \ifstr{#4}{false}{\@nameuse{#3false}}{% - \ifstr{#4}{off}{\@nameuse{#3false}}{% - \ifstr{#4}{no}{\@nameuse{#3false}}{% - \FamilyUnknownKeyValue{#1}{#2}{#4}{% - `true', `on', `yes', `false', `off', `no'% - }% - }% - }% - }% - }% - }% - }% - \let\FamilyElseValues\@empty -} -%</base> -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\KOMA@unknown@keyval} -% Dieses Makro berichtet über Fehler wegen unbekannter Wertübergabe an -% einen Schlüssel. Das erste Argument ist der Schlüssel, das zweite -% der Wert und das dritte die Liste der möglichen Werte. -% \begin{macrocode} -%<*koma> -\newcommand*{\KOMA@unknown@keyval}{\FamilyUnknownKeyValue{KOMA}} -%</koma> -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\KOMA@ifkey} -% \changes{v3.02c}{2009/02/04}{definiert ebenfalls das Familienmitglied} -% Dieses Makro definiert einen Schlüssel, der einen Schalter an Hand des -% Wertes setzt. Als Werte sind "`\texttt{true}"', "`\texttt{false}"', -% "`\texttt{on}"', "`\texttt{off}"', "`\texttt{yes}"' und -% "`\texttt{no}"' erlaubt. Der Default-Wert für den Schalter ist -% grundsätzlich "`false"', so dass der Default-Wert für die Verwendung -% des Schküssels grundsätzlich "`true"' ist. Das erste Argument ist -% der Name des Schlüssels, der zweite ist der Name des Schalters. -% \begin{macrocode} -%<*koma> -\newcommand*{\KOMA@ifkey}{% - \DefineFamilyMember{KOMA}% - \FamilyBoolKey{KOMA}% -} -%</koma> -% \end{macrocode} -% \begin{macro}{\KOMA@set@ifkey} -% Die eigentliche Arbeit bei der ganzen Sache wird von diesem internen -% Makro erledigt. Dabei wird der Name des Schlüssels zu Argument 1, der -% Name des Schalters zu Argument 2 und der Wert des Schlüssels wird -% Argument 3. -% \begin{macrocode} -%<*koma> -\newcommand*{\KOMA@set@ifkey}{\FamilySetBool{KOMA}} -%</koma> -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\FamilyNumericalKey} -% \changes{v3.00}{2008/04/30}{Neue Anweisung} -% \begin{macro}{\Family@Numerical@Key} -% \changes{v3.00}{2008/05/28}{Neu (intern)} -% \changes{v3.08b}{2011/03/31}{fehlendes Argument bei \cs{ifundefined}} -% Ein ähnliches Makro definiert einen Schlüssel, der ein nummerisches Makro -% auf einen bestimmten Wert setzt. Dabei können auch verschiedene symbolische -% Werte auf denselben nummerischen Wert abgebildet werden. Das erste, -% optionale Argument ist das Familienmitglied, das zweite, obligatorische -% Argument ist die Familie, das dritte, obligatorische Argument ist der Name -% der Option, das vierte, optionale Artument ist der Defaultwert für den -% Schlüssel, das fünfte, obligatorische Argument ist der Name des Makros, das -% (in der Voreinstellung als 0) definiert werden soll, das sechste, -% obligatorische Argument ist die Liste der symbolischen und nummerischen -% Werte. Die Liste hat die Form: -% \{\emph{Symbol}\}\{\emph{Wert}\},\{\emph{Symbol}\}\{\emph{Wert}\}\dots -% Das interne Makro wird benötigt, um das vierte, optionale Argument zu -% ermöglichen. Dabei ist dann das erste Argument nicht mehr optional, sondern -% obligatorisch. -% \begin{macrocode} -%<*base> -\newcommand*{\FamilyNumericalKey}[3][.\@currname.\@currext]{% - \@ifnextchar [%] - {\Family@Numerical@Key{#1}{#2}{#3}}{\Family@Numerical@Key{#1}{#2}{#3}[]}% -} -\newcommand*{\Family@Numerical@Key}{} -\def\Family@Numerical@Key#1#2#3[#4]#5#6{% - \@ifundefined{#5}{\@namedef{#5}{0}}{}% - \ifx\relax#4\relax - \DefineFamilyKey[{#1}]{#2}{#3}{\FamilySetNumerical{#2}{#3}{#5}{#6}{##1}}% - \else - \DefineFamilyKey[{#1}]{#2}{#3}[{#4}]{% - \FamilySetNumerical{#2}{#3}{#5}{#6}{##1}}% - \fi -} -% \end{macrocode} -% \begin{macro}{\FamilySetNumerical} -% \changes{v3.11a}{2012/05/28}{call of \cs{FamilyUnknownKeyValue} outside of -% local group} -% Die eigentliche Arbeit dabei wird von diesem Makro erledigt. Dabei -% wird die Familie zu Argument 1, der Name des Schlüssels zu Argument 2, der -% Name des Makros, das definiert werden soll zu Argument 3, die Liste zu -% Argument 4 und der Wert, auf den gesetzt werden soll, zu Argument 5. -% \begin{macrocode} -\newcommand*{\FamilySetNumerical}[5]{% - \begingroup - \edef\@searched{#5}% - \let\@tempa=\@empty - \let\@tempb=\@empty - \@tempswafalse - \@for\@valuelist:=#4\do{% - \if@tempswa\else - \edef\@tempc{\expandafter\@firstoftwo\@valuelist}% - \edef\@tempa{\@tempa\@tempb`\@tempc'}% - \edef\@tempb{, }% - \ifx\@tempc\@searched - \@tempswatrue - \edef\@tempa{\expandafter\@secondoftwo\@valuelist}% - \fi - \fi - }% - \if@tempswa - \edef\@tempa{\endgroup - \noexpand\@namedef{#3}{\@tempa}% - }% - \else - \edef\@tempa{\endgroup - \noexpand\FamilyUnknownKeyValue{#1}{#2}{#5}{\@tempa}% - }% - \fi - \@tempa - \let\FamilyElseValues\@empty -} -%</base> -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\KOMA@ncmdkey} -% \changes{v3.02c}{2009/02/04}{definiert ebenfalls das Familienmitglied} -% Ein ähnliches Makro definiert einen Schlüssel, der ein nummerisches -% Makro auf einen bestimmten Wert setzt. Dabei können auch -% verschiedene symbolische Werte auf denselben nummerischen Wert -% abgebildet werden. Das erste Argument ist obligatorisch und der Name -% des Schlüssels. Das zweite Argument ist optional und der Defaultwert -% für den Schlüssel. Das dritte Argument ist obligatorisch und der -% Name des Makros, das definiert werden soll. Der Defaultwert dafür -% ist 0. Das vierte Argument ist obligatorisch und die Liste der -% symbolischen und nummerischen Wert. Die Liste hat die Form: -% \{\emph{Symbol}\}\{\emph{Wert}\},\{\emph{Symbol}\}\{\emph{Wert}\}\dots -% \begin{macrocode} -%<*koma> -\newcommand*{\KOMA@ncmdkey}{% - \DefineFamilyMember{KOMA}% - \FamilyNumericalKey{KOMA}% -} -%</koma> -% \end{macrocode} -% \begin{macro}{\KOMA@set@ncmdkey} -% Die eigentliche Arbeit dabei wird wahlweise von diesem Makro erledigt. Dabei -% wird der Name des Schlüssels zu Argument 1, der Name des Makros, -% das definiert werden soll zu Argument 2, die Liste zu Argument 3 und -% der Wert, auf den gesetzt werden soll, zu Argument 4. -% \begin{macrocode} -%<*koma> -\newcommand*{\KOMA@set@ncmdkey}{\FamilySetNumerical{KOMA}} -%</koma> -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% -% \begin{macro}{\FamilyStringKey} -% \changes{v3.08}{2010/11/05}{Neue Anweisung} -% \changes{v3.08b}{2011/03/31}{\cs{Family@String@Key} und -% \cs{Family@@String@@Key} vertauscht} -% \begin{macro}{\Family@String@Key} -% \changes{v3.08}{2010/11/05}{Neu (intern)} -% \begin{macro}{\Family@@String@@Key} -% \changes{v3.08}{2010/11/05}{Neu (intern)} -% Ein ähnliches Makro definiert einen Schlüssel, der ein Makro auf einen -% beliegigen Wert setzt. Das erste, optionale Argument ist das -% Familienmitglied, das zweite, obligatorische Argument ist die Familie, das -% dritte, obligatorische Argument ist der Name der Option, das vierte, -% optionale Artument ist der Defaultwert für den Schlüssel, das fünfte, -% obligatorische Argument ist der Name des Makros, das (in der Voreinstellung -% als leer) definiert werden soll. Die internen Makro werden benötigt, um das -% vierte, optionale Argument zu ermöglichen. Dabei ist dann das erste Argument -% nicht mehr optional, sondern obligatorisch. -% \begin{macrocode} -%<*base> -\newcommand*{\FamilyStringKey}[3][.\@currname.\@currext]{% - \@ifnextchar [%] - {\Family@@String@@Key{#1}{#2}{#3}}{\Family@String@Key{#1}{#2}{#3}}% -} -\newcommand*{\Family@@String@@Key}{} -\long\def\Family@@String@@Key#1#2#3[#4]#5{% - \DefineFamilyKey[{#1}]{#2}{#3}[{#4}]{\def#5{##1}}% -} -\newcommand{\Family@String@Key}[4]{% - \DefineFamilyKey[{#1}]{#2}{#3}{\def#4{##1}}% -} -%</base> -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% -% -% \begin{macro}{\KOMA@DeclareDeprecatedOption} -% \changes{v3.01a}{2008/11/20}{neu (intern)} -% \begin{macro}{\KOMA@@DeclareDeprecatedOption} -% \changes{v3.01a}{2008/11/20}{neu (intern)} -% \begin{macro}{\KOMA@@@DeclareDeprecatedOption} -% \changes{v3.01a}{2008/11/20}{neu (intern)} -% Mit Hilfe dieses Makros kann eine Option definiert werden, die -% eigentlich obsolete ist. Statt dieser Option wird dann ein Schlüssel -% verwendet. Das erste Argument ist optional und muss dann der Paketname -% sein. Ist es nicht gesetzt, so wird stattdessen die Klasse -% \cs{KOMAClassName} angenommen. Das zweite Argument ist der Name der -% Option. Das vierte Argument ist das Setzen des gewünschten Schlüssels. -% \begin{macrocode} -%<*koma> -\newcommand*{\KOMA@DeclareDeprecatedOption}{% - \@ifnextchar [%] - {\KOMA@@DeclareDeprecatedOption}% - {\KOMA@@@DeclareDeprecatedOption{\ClassWarningNoLine{\KOMAClassName}}}% -} -\newcommand*{\KOMA@@DeclareDeprecatedOption}[1][]{% - \KOMA@@@DeclareDeprecatedOption{\PackageWarningNoLine{#1}}% -} -\newcommand*{\KOMA@@@DeclareDeprecatedOption}[3]{% - \DeclareOption{#2}{\KOMA@UseDeprecatedOption{#1}{#2}{#3}}% -} -% \end{macrocode} -% \begin{macro}{\KOMA@UseDeprecatedOption} -% \changes{v3.01a}{2008/11/20}{neu (intern)} -% Die eigentliche Arbeit wird von diesem Makro erledigt. Die Argumente sind -% 1. Meldungsbefehl, 2. obsolete Option, 3. Setzen des Schlüssels. -% \begin{macrocode} -\newcommand*{\KOMA@UseDeprecatedOption}[3]{% - \let\scr@sr@co\CurrentOption - #1{% - You've used obsolete option `#2'.\MessageBreak - Usage of this option indicates an old document and\MessageBreak - changes compatibility level using\MessageBreak - `#3,version=first'.\MessageBreak - If you don't want this, you should simply replace\MessageBreak - usage of option `#2' by `#3'% - }% - \KOMAExecuteOptions{#3,version=first}% - \let\CurrentOption\scr@sr@co -} -%</koma> -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% -% -% \begin{macro}{\KOMA@DeclareStandardOption} -% \changes{v3.01a}{2008/11/21}{neu (intern)} -% \begin{macro}{\KOMA@@DeclareStandardOption} -% \changes{v3.01a}{2008/11/21}{neu (intern)} -% \begin{macro}{\KOMA@@@DeclareStandardOption} -% \changes{v3.01a}{2008/11/21}{neu (intern)} -% Mit Hilfe dieses Makros kann eine Option definiert werden, die -% eigentlich obsolete ist. Statt dieser Option wird dann ein Schlüssel -% verwendet. Das erste Argument ist optional und muss dann der Paketname -% sein. Ist es nicht gesetzt, so wird stattdessen die Klasse -% \cs{KOMAClassName} angenommen. Das zweite Argument ist der Name der -% Option. Das vierte Argument ist das Setzen des gewünschten Schlüssels. -% \begin{macrocode} -%<*koma> -\newcommand*{\KOMA@DeclareStandardOption}{% - \@ifnextchar [%] - {\KOMA@@DeclareStandardOption}% - {\KOMA@@@DeclareStandardOption{\ClassInfoNoLine{\KOMAClassName}}}% -} -\newcommand*{\KOMA@@DeclareStandardOption}[1][]{% - \KOMA@@@DeclareStandardOption{\PackageInfoNoLine{#1}}% -} -\newcommand*{\KOMA@@@DeclareStandardOption}[3]{% - \DeclareOption{#2}{\KOMA@UseStandardOption{#1}{#2}{#3}}% -} -% \end{macrocode} -% \begin{macro}{\KOMA@UseStandardOption} -% \changes{v3.01a}{2008/11/21}{neu (intern)} -% Die eigentliche Arbeit wird von diesem Makro erledigt. Die Argumente sind -% 1. Meldungsbefehl, 2. obsolete Option, 3. Setzen des Schlüssels. -% \begin{macrocode} -\newcommand*{\KOMA@UseStandardOption}[3]{% - \let\scr@sr@co\CurrentOption - #1{% - You've used standard option `#2'.\MessageBreak - This is correct!\MessageBreak - Internally I'm using `#3'.\MessageBreak - If you'd like to set the option with \string\KOMAoptions,\MessageBreak - you'd have to use `#3' there\MessageBreak - instead of `#2', too% - }% - \KOMAExecuteOptions{#3}% - \let\CurrentOption\scr@sr@co -} -%</koma> -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% -% -% \begin{macro}{\KOMA@DeclareObsoleteOption} -% \changes{v2.96}{2006/08/20}{\cs{CurrentOption wir geschützt}} -% \begin{macro}{\KOMA@@DeclareObsoleteOption} -% \changes{v2.98c}{2008/02/18}{neu (intern)} -% \begin{macro}{\KOMA@@@DeclareObsoleteOption} -% \changes{v2.98c}{2008/02/18}{neu (intern)} -% \begin{macro}{\KOMA@iv@DeclareObsoleteOption} -% \changes{v2.98c}{2008/02/18}{neu (intern)} -% Mit Hilfe dieses Makros kann eine Option definiert werden, die -% eigentlich obsolete ist. Statt dieser Option wird dann ein Schlüssel -% verwendet. Das erste Argument ist optional und muss dann entweder -% \cs{PackageInfo}, \cs{PackageInfoNoLine}, \cs{PackageWarning}, -% \cs{PackageWarningNoLine} oder das gleiche für Klassen sein. Das zweite -% Argument ist ebenfalls optional und der Name des Pakets oder der Klasse. Das -% dritte Argument ist der Name der Option. Das vierte Argument ist das Setzen -% des gewünschten Schlüssels. -% \begin{macrocode} -%<*koma> -\newcommand*{\KOMA@DeclareObsoleteOption}{% - \@ifnextchar [%] - {\KOMA@@DeclareObsoleteOption}% - {\KOMA@@DeclareObsoleteOption[\@gobbletwo]}% -} -\newcommand*{\KOMA@@DeclareObsoleteOption}{} -\def\KOMA@@DeclareObsoleteOption[#1]{% - \@ifnextchar [%] - {\KOMA@@@DeclareObsoleteOption{#1}}% - {\KOMA@@@DeclareObsoleteOption{#1}[]}% -} -\newcommand*{\KOMA@@@DeclareObsoleteOption}{} -\def\KOMA@@@DeclareObsoleteOption#1[#2]#3#4{% - \ifstr{#2}{}{% - \KOMA@iv@DeclareObsoleteOption{#1}{\@currname}{#3}{#4}% - }{% - \KOMA@UseObsoleteOption{#1}{#2}{#3}{#4}% - }% -} -\newcommand*{\KOMA@iv@DeclareObsoleteOption}[4]{% - \DeclareOption{#3}{\KOMA@UseObsoleteOption{#1{#2}}{#3}{#4}}% -} -% \end{macrocode} -% \begin{macro}{\KOMA@UseObsoleteOption} -% \changes{v2.97c}{2007/04/19}{neu (intern)} -% Die eigentliche Arbeit wird von diesem Makro erledigt. Die Argumente sind -% 1. Meldungsbefehl, 2. obsolete Option, 3. Setzen des Schlüssels. -% \begin{macrocode} -\newcommand*{\KOMA@UseObsoleteOption}[3]{% - \let\scr@sr@co\CurrentOption - #1{% - You've used obsolete option `#2'.\MessageBreak - \protect\KOMAExecuteOptions{#3} will be\MessageBreak - used instead.\MessageBreak - You may simply replace `#2'\MessageBreak - by `#3'% - }% - \KOMAExecuteOptions{#3}% - \let\CurrentOption\scr@sr@co -} -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\scr@sr@co} -% \changes{v2.96}{2006/08/20}{neu (intern)} -% Da das \texttt{xkeyval}-Paket leider \cs{CurrentOption} vernichtet, das aber -% innerhalb von \cs{ProcessOptions} und \cs{KOMAProcessOptions} nach dem -% Ausführen der Option noch benötigt wird, muss die Anweisung gesichert -% werden. Dafür wird ein Hilfsmakro benötigt. -% \begin{macrocode} -\newcommand*{\scr@sr@co}{} -%</koma> -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\KOMA@newobsoletecommand} -% Mit Hilfe dieses Makros kann ein Makro definiert werden, das -% eigentlich obsolete ist. Das Makro verwendet dann schlicht einen -% Schlüssel. Das erste Argument ist optional und muss dann entweder -% \cs{PackageInfo}, \cs{PackageInfoNoLine}, \cs{PackageWarning} oder -% \cs{PackageWarningNoLine} sein. Das zweite Argument ist das Makro. -% Das dritte Argument ist das Setzen des gewünschten Schlüssels. Das -% definierte Makro selbst hat Schaltercharakter, ist also nicht -% \cs{long} und versteht auch keine Argumente. -% \begin{macrocode} -%<*koma> -\newcommand*{\KOMA@newobsoletecommand}[3][\@gobbletwo]{% - \newcommand*{#2}{\KOMA@UseObsoleteCommand{#1}{\string#2}{#3}}% -} -% \end{macrocode} -% \begin{macro}{\KOMA@UseObsoleteCommand} -% \changes{v2.97c}{2007/04/19}{neu (intern)} -% Die eigentliche Arbeit wird von diesem Makro erledigt. Die Argumente sind -% dieselben. -% \begin{macrocode} -\newcommand*{\KOMA@UseObsoleteCommand}[3]{% - #1{% - scrkbase% - }{% - You've used the obsolete command `#2'.\MessageBreak - \protect\KOMAoptions{#3} will be used instead.\MessageBreak - You should also replace `#2' by `\protect\KOMAoptions{#3}'% - }% - \KOMAoptions{#3}% -} -%</koma> -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% -% \iffalse -%</body> -% \fi -% -% \Finale -% -\endinput -% -% end of file `scrkbase.dtx' -%%% Local Variables: -%%% mode: doctex -%%% TeX-master: t -%%% End: |