summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/tudscr/tudscr-base.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/tudscr/tudscr-base.dtx')
-rw-r--r--Master/texmf-dist/source/latex/tudscr/tudscr-base.dtx277
1 files changed, 179 insertions, 98 deletions
diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr-base.dtx b/Master/texmf-dist/source/latex/tudscr/tudscr-base.dtx
index 517936b8410..8c43c7fb9bc 100644
--- a/Master/texmf-dist/source/latex/tudscr/tudscr-base.dtx
+++ b/Master/texmf-dist/source/latex/tudscr/tudscr-base.dtx
@@ -1,29 +1,33 @@
-% \CheckSum{271}
+% \CheckSum{291}
% \iffalse meta-comment
-% ======================================================================
-%
-% Das Corporate Design der TU Dresden auf Basis der KOMA-Script-Klassen
-%
-% ======================================================================
-% 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 Falk Hanisch.
-% ----------------------------------------------------------------------
-% 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 Falk Hanisch.
-% ======================================================================
+%
+% ============================================================================
+%
+% TUD-KOMA-Script
+% Copyright (c) Falk Hanisch <tudscr@gmail.com>, 2012-2015
+%
+% ============================================================================
+%
+% 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 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 Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz
+% in der Version 1.3c, verteilt und/oder veraendert werden. Die aktuelle
+% Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und
+% Version 1.3c oder spaeter ist Teil aller Verteilungen von LaTeX 2005/12/01
+% oder spaeter und dieses Werks. Dieses Werk hat den LPPL-Verwaltungs-Status
+% "author-maintained", wird somit allein durch den Autor verwaltet. Der
+% aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch.
+%
+% ============================================================================
+%
% \fi
%
% \CharacterTable
@@ -47,7 +51,7 @@
%<*driver>
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\ProvidesFile{tudscr-base.dtx}[%
- 2014/11/05 v2.02 TUD-KOMA-Script\space%
+ 2015/02/12 v2.03 TUD-KOMA-Script\space%
%</driver>
%<package>\NeedsTeXFormat{LaTeX2e}[2011/06/27]
%<package>\ProvidesPackage{tudscrbase}[%
@@ -134,11 +138,39 @@
% \end{macrocode}
% \end{macro}^^A \ifxnumber
%
+% \subsubsection{Test auf booleschen Ausdruck in Form eines Strings}
+%
+% \begin{macro}{\ifstrbool}
+% \changes{v2.03}{2015/01/09}{neu}%^^A
+% Dieser Befehl dient zum Testen, ob ein gegebener String als boolescher
+% Ausdruck interpretiert werden kann. Ist der String als \enquote{wahr}
+% interpretierbar, wird das zweite Argument ausgeführt. Kann der String als
+% \enquote{falsch} angesehen werden, dementsprechen das dritte. Ist der String
+% kein logischer Wert, kommt das letzte Argument zum Tragen. Die Syntax lautet:
+% \cs{ifstrbool}\marg{Argument}\marg{Wahr}\marg{Falsch}\marg{Andernfalls}
+% \begin{macrocode}
+\newcommand*\ifstrbool[4]{%
+ \ifstr{#1}{true}{#2}{%
+ \ifstr{#1}{on}{#2}{%
+ \ifstr{#1}{yes}{#2}{%
+ \ifstr{#1}{false}{#3}{%
+ \ifstr{#1}{no}{#3}{%
+ \ifstr{#1}{off}{#3}{%
+ #4%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \ifstrbool
+%
% \subsubsection{Schlüssel und Parameter für die Wrapper-Klassen}
%
% \begin{macro}{\TUDProcessOptions}
% \begin{macro}{\TUDExecuteOptions}
-% \begin{macro}{\TUDDefaultOptions}
% \begin{macro}{\TUDoptions}
% \begin{macro}{\TUDoption}
% \begin{macro}{\TUD@noworlater}
@@ -149,27 +181,35 @@
% \begin{macro}{\TUD@set@ifkey}
% \begin{macro}{\TUD@numkey}
% \begin{macro}{\TUD@numkey@bool}
-% \changes{v2.02}{2014/11/05}{neu}%^^A
+% \changes{v2.03}{2015/01/09}{neu}%^^A
% \begin{macro}{\TUD@set@numkey}
+% \changes{v2.02}{2014/11/05}{neu}%^^A
+% \begin{macro}{\TUD@lengthkey}
+% \changes{v2.03}{2015/01/09}{neu}%^^A
+% \begin{macro}{\TUD@set@lengthkey}
% \begin{macro}{\TUD@unknown@keyval}
% In Anlehnung an \KOMAScript{} werden hier Befehle zur Definition und
% Ausführung unterschiedlicher Klassenoptionen mithilfe der Funktionen aus
% dem \pkg{scrbase}-Paket erstellt. Klassenoptionen können entweder als
% Schalter (\cs{TUD@ifkey}) oder aber mit mehreren möglichen Werten
-% (\cs{TUD@numkey}) definiert werden. Die Grundeinstellungen für alle
-% \cls{tudscr}-Klassen werden in \cs{TUDDefaultOptions} hinterlegt.
+% (\cs{TUD@numkey}) definiert werden.
% \begin{macrocode}
\DefineFamily{TUD}
\newcommand*\TUDProcessOptions{\FamilyProcessOptions{TUD}}
\newcommand*\TUDExecuteOptions{\FamilyExecuteOptions{TUD}}
-\newcommand*\TUDDefaultOptions{cd,cdfont,tudbookmarks}
\newcommand*\TUDoptions{\FamilyOptions{TUD}}
\newcommand*\TUDoption{\FamilyOption{TUD}}
+% \end{macrocode}
+% Hiermit wird die Abarbeitung der Optionen an das Ende der Klasse verzögert.
+% \begin{macrocode}
\newcommand*\TUD@noworlater{\AtEndOfClass}
\AtEndOfClass{\let\TUD@noworlater\@firstofone}
+% \end{macrocode}
+% Dies sind die Befehle zur Definition einer Standardoption.
+% \begin{macrocode}
\newcommand*\TUD@key[2][.\@currname.\@currext]{%
\DefineFamilyMember{TUD}%
- \@ifnextchar[%]
+ \kernel@ifnextchar[%]
{\TUD@@key[#1]{#2}}{\TUD@@@key[#1]{#2}}%
}
\def\TUD@@key[#1]#2[#3]#4{%
@@ -178,11 +218,17 @@
\def\TUD@@@key[#1]#2#3{%
\DefineFamilyKey[#1]{TUD}{#2}{\TUD@noworlater{#3}}%
}
+% \end{macrocode}
+% Dies sind die Befehle zur Definition einer booleschen Option.
+% \begin{macrocode}
\newcommand*\TUD@ifkey[1][.\@currname.\@currext]{%
\DefineFamilyMember{TUD}%
\FamilyBoolKey[#1]{TUD}%
}
\newcommand*\TUD@set@ifkey{\FamilySetBool{TUD}}
+% \end{macrocode}
+% Dies sind die Befehle zur Definition einer Option mit definierten Werten.
+% \begin{macrocode}
\newcommand*\TUD@numkey[1][.\@currname.\@currext]{%
\DefineFamilyMember{TUD}%
\FamilyNumericalKey[#1]{TUD}%
@@ -195,9 +241,23 @@
{false}{0},{off}{0},{no}{0},{true}{1},{on}{1},{yes}{1}%
}
\newcommand*\TUD@set@numkey{\FamilySetNumerical{TUD}}
+% \end{macrocode}
+% Dies sind die Befehle zur Definition einer Option zur Festlegung einer Länge.
+% \begin{macrocode}
+\newcommand*\TUD@lengthkey[1][.\@currname.\@currext]{%
+ \DefineFamilyMember{TUD}%
+ \FamilyLengthKey[#1]{TUD}%
+}
+\newcommand*\TUD@set@lengthkey{\FamilySetLength{TUD}}
+% \end{macrocode}
+% Dieser Befehl wird lediglich pro forma definiert. Derzeit wird er durch
+% \KOMAScript nicht abgearbeitet.
+% \begin{macrocode}
\newcommand*\TUD@unknown@keyval{\FamilyUnknownKeyValue{TUD}}
% \end{macrocode}
% \end{macro}^^A \TUD@unknown@keyval
+% \end{macro}^^A \TUD@set@lengthkey
+% \end{macro}^^A \TUD@lengthkey
% \end{macro}^^A \TUD@set@numkey
% \end{macro}^^A \TUD@numkey@bool
% \end{macro}^^A \TUD@numkey
@@ -209,7 +269,6 @@
% \end{macro}^^A \TUD@noworlater
% \end{macro}^^A \TUDoption
% \end{macro}^^A \TUDoptions
-% \end{macro}^^A \TUDDefaultOptions
% \end{macro}^^A \TUDExecuteOptions
% \end{macro}^^A \TUDProcessOptions
% \begin{macro}{\TUD@key@lock}
@@ -253,11 +312,11 @@
\boolfalse{@tud@#1@locked}%
}%
}
-\let\TUD@std@numkey@lock\TUD@std@ifkey@lock
\newcommand*\TUD@set@ifkey@lock[1]{%
\booltrue{@tud@#1@locked}%
\TUD@set@ifkey{#1}%
}
+\let\TUD@std@numkey@lock\TUD@std@ifkey@lock
\newcommand*\TUD@set@numkey@lock[1]{%
\booltrue{@tud@#1@locked}%
\TUD@set@numkey{#1}%
@@ -268,93 +327,124 @@
% \end{macro}^^A \TUD@std@numkey@lock
% \end{macro}^^A \TUD@std@ifkey@lock
% \end{macro}^^A \TUD@key@lock
-% \begin{macro}{\csdef@lock}
-% \begin{macro}{\csstd@lock}
-% \begin{macro}{\csset@lock}
-% Mit \cs{csdef@lock}\marg{Name}\marg{Definition} kann ein Befehl definiert
-% werden, welcher intern nur mit \cs{csstd@lock}\marg{Name}\marg{Definition}
+% \begin{macro}{\cs@lock}
+% \begin{macro}{\cs@std@lock}
+% \begin{macro}{\cs@set@lock}
+% Mit \cs{cs@lock}\marg{Name}\marg{Definition} kann ein Befehl definiert
+% werden, welcher intern nur mit \cs{cs@std@lock}\marg{Name}\marg{Definition}
% geschrieben wird, wenn nicht über eine entsprechende Option ein explizites
-% Verhalten mit \cs{csset@lock}\marg{Name}\marg{Definition} zugewiesen wurde.
+% Verhalten mit \cs{cs@set@lock}\marg{Name}\marg{Definition} zugewiesen wurde.
% Dies ist äquivalent zu \cs{TUD@std@ifkey@lock} und \cs{TUD@set@ifkey@lock}
% bzw. \cs{TUD@std@numkey@lock} und \cs{TUD@set@numkey@lock}
% \begin{macrocode}
-\newcommand*\csdef@lock[2]{%
+\newcommand*\cs@lock[2]{%
\csdef{#1}{#2}%
\newbool{#1@locked}%
}
-\newcommand*\csstd@lock[2]{%
+\newcommand*\cs@std@lock[2]{%
\ifbool{#1@locked}{}{%
\csdef{#1}{#2}%
\boolfalse{#1@locked}%
}%
}
-\newcommand*\csset@lock[2]{%
+\newcommand*\cs@set@lock[2]{%
\csdef{#1}{#2}%
\booltrue{#1@locked}%
}
% \end{macrocode}
-% \end{macro}^^A \csset@lock
-% \end{macro}^^A \csstd@lock
-% \end{macro}^^A \csdef@lock
-% \begin{macro}{\newbool@lock}
-% \begin{macro}{\stdbool@lock}
-% \begin{macro}{\setbool@lock}
+% \end{macro}^^A \cs@set@lock
+% \end{macro}^^A \cs@std@lock
+% \end{macro}^^A \cs@lock
+% \begin{macro}{\bool@lock}
+% \begin{macro}{\bool@std@lock}
+% \begin{macro}{\bool@set@lock}
% Diese Makros dienen in Anlehnung an die vorherigen zum Definieren und Setzen
% von sperrbaren booleschen Schaltern.
% \begin{macrocode}
-\newcommand*\newbool@lock[2][false]{%
+\newcommand*\bool@lock[2][false]{%
\newbool{#2}%
\newbool{#2@locked}%
\setbool{#2}{#1}%
}
-\newcommand*\stdbool@lock[2]{%
+\newcommand*\bool@std@lock[2]{%
\ifbool{#1@locked}{}{%
\setbool{#1}{#2}%
\boolfalse{#1@locked}%
}%
}
-\newcommand*\setbool@lock[2]{%
+\newcommand*\bool@set@lock[2]{%
\setbool{#1}{#2}%
\booltrue{#1@locked}%
}
% \end{macrocode}
-% \end{macro}^^A \setbool@lock
-% \end{macro}^^A \stdbool@lock
-% \end{macro}^^A \newbool@lock
+% \end{macro}^^A \bool@set@lock
+% \end{macro}^^A \bool@std@lock
+% \end{macro}^^A \bool@lock
% \begin{macro}{\tud@cmd@store}
% \begin{macro}{\tud@cmd@reset}
% \begin{macro}{\tud@cmd@use}
% \begin{macro}{\tud@cmd@restore}
-% Mit diesen beiden Befehlene wird es möglich, Originalbefehle sichern, nutzen
-% und wiederherstellen zu können. Dies wird benötigt, um zwischen den einzelnen
+% \begin{macro}{\tud@cmd@check}
+% \changes{v2.03}{2015/01/09}{neu}%^^A
+% Mit diesen Befehlen wird es möglich, Originalbefehle sichern, nutzen und
+% wiederherstellen zu können. Dies wird benötigt, um zwischen den einzelnen
% Layouts über Optionseinstellungen zu wechseln und dabei von einem definierten
-% Anfangszustand auszugehen. Mit dem Aufruf \cs{tud@cmd@store}\marg{Befehlsname}
-% wird der angegebene Befehl in einem neuen Makro \cs{@@tud@\meta{Befehlsname}}
-% gespeichert.
-%
-% Der Originalbefehl kann als solcher mit \cs{tud@cmd@use}\marg{Befehlsname}
-% weiterhin genutzt werden. Das Makro \cs{tud@cmd@reset}\marg{Befehlsname}
-% setzt den Originalbefehl zurück. Durch \cs{tud@cmd@restore}\marg{Befehlsname}
-% wird das mit \cs{tud@cmd@store} erstellte Hilfsmakro zusätzlich gelöscht.
+% Anfangszustand auszugehen.
+%
+% Mit dem Aufruf \cs{tud@cmd@store}\marg{Befehlsname} wird der angegebene
+% Befehl in einem neuen Makro \cs{@@tud@\meta{Befehlsname}} gespeichert. Dieser
+% kann danach beliebig angepasst werden. Soll der Befehl zu einem späteren
+% Zeitpunkt auf den Orginalzustand zurücksetzen, kann hierfür jederzeit der
+% Befehl \cs{tud@cmd@reset}\marg{Befehlsname} verwendet werden. Durch das Makro
+% \cs{tud@cmd@restore}\marg{Befehlsname} wird das mit \cs{tud@cmd@store}
+% erstellte Hilfsmakro zusätzlich noch gelöscht. Der Originalbefehl kann als
+% solcher mit \cs{tud@cmd@use}\marg{Befehlsname} weiterhin genutzt werden.
% \begin{macrocode}
\newcommand*\tud@cmd@store[1]{%
- \ifcsdef{@@tud@#1}{}{\csletcs{@@tud@#1}{#1}}%
+ \ifcsdef{@@tud@#1}{}{%
+ \tud@cmd@check{#1}%
+ \csletcs{@@tud@#1}{#1}%
+ }%
}
\newcommand*\tud@cmd@reset[1]{%
\ifcsdef{@@tud@#1}{%
+ \tud@cmd@check{#1}%
\csletcs{#1}{@@tud@#1}%
}{}%
}
-\newcommand*\tud@cmd@use[1]{%
- \ifcsdef{@@tud@#1}{\@nameuse{@@tud@#1}}{\@nameuse{#1}}%
-}
\newcommand*\tud@cmd@restore[1]{%
\ifcsdef{@@tud@#1}{%
+ \tud@cmd@check{#1}%
\csletcs{#1}{@@tud@#1}%
\csundef{@@tud@#1}%
}{}%
}
+\newcommand*\tud@cmd@use[1]{%
+ \ifcsdef{@@tud@#1}{%
+ \@nameuse{@@tud@#1}%
+ }{%
+ \tud@cmd@check{#1}%
+ \@nameuse{#1}%
+ }%
+}
% \end{macrocode}
+% Dieses Makro dient zum Überprüfen, ob der zu sichernde beziehungsweise
+% wiederherzustellende Befehl überhaupt definiert ist. Sollte das nicht der
+% Fall sein, wird ein Fehler ausgegeben.
+% \begin{macrocode}
+\newcommand*\tud@cmd@check[1]{%
+ \ifcsdef{#1}{}{%
+ \PackageError{tudscrbase}{%
+ `\@backslashchar#1' is not defined%
+ }{%
+ The command `\@backslashchar#1' was never defined.\MessageBreak%
+ Please contact the TUD-KOMA-Script maintainer\MessageBreak%
+ via \tudscrmail. A bugfix is urgently required
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@cmd@check
% \end{macro}^^A \tud@cmd@restore
% \end{macro}^^A \tud@cmd@use
% \end{macro}^^A \tud@cmd@reset
@@ -366,10 +456,10 @@
% \begin{macrocode}
\newcommand*\tud@patch@wrn[1]{%
\PackageWarning{tudscrbase}{%
- It wasn't possible to patch `#1'.\MessageBreak%
- Please contact the author via \tudscrmail.\MessageBreak%
- Without a bugfix an erroneous output\MessageBreak%
- may occur.
+ It wasn't possible to patch `\@backslashchar#1'.\MessageBreak%
+ Please contact the TUD-KOMA-Script maintainer\MessageBreak%
+ via \tudscrmail. Without a bugfix an\MessageBreak%
+ erroneous output may occur%
}%
}
% \end{macrocode}
@@ -383,11 +473,11 @@
% Befehl, welcher eindeutig gewählt werden sollte. Dieser wird im Hilfsmakro
% \cs{TUD@parameter@family} gesichert. Dies soll im Zusammenspiel mit dem
% Makro \cs{TUD@parameter@checkfamily} dafür sorgen, dass die im Folgenden
-% bereitgestellten Befehle\footnote{\cs{TUD@parameter@define},
-% \cs{TUD@parameter@let}, \cs{TUD@parameter@sethandler},
-% \cs{TUD@parameter@set}}~-- welche die eigentliche Definition der Parameter
-% für den Benutzer bewerkstelligen~-- nur innerhalb des zweiten Argumentes von
-% \cs{TUD@parameter} verwendet werden können.
+% bereitgestellten Befehle \cs{TUD@parameter@define}, \cs{TUD@parameter@let},
+% und \cs{TUD@parameter@sethandler}~-- welche die eigentliche Definition der
+% Parameter für den Benutzer bewerkstelligen~-- ohne die Angabe der Familie nur
+% innerhalb des zweiten Argumentes von \cs{TUD@parameter} verwendet werden
+% können.
% \begin{macrocode}
\newcommand*\TUD@parameter@family{}%
\newcommand*\TUD@parameter[2]{%
@@ -474,36 +564,27 @@
% \end{macro}^^A \TUD@parameter@let
% \end{macro}^^A \TUD@parameter@define
% \begin{macro}{\TUD@parameter@set}
-% Mit \cs{TUD@parameter@set}\oarg{Familienname}\marg{Parameterliste} wird die
+% Mit \cs{TUD@parameter@set}\marg{Familienname}\marg{Parameterliste} wird die
% Verarbeitung aller gegebenen Parameter veranlasst. Normalerweise wird dieser
-% Befehl innerhalb des zweiten Argumentes von \cs{TUD@parameter} verwendet.
-% Alternativ dazu kann die gewünschte Familie im optionalen Argument angegeben
-% werden.
+% Befehl \emph{nicht} innerhalb des zweiten Argumentes von \cs{TUD@parameter}
+% verwendet. In jedem Fall muss die zu verwendende Familie angegeben werden.
% \begin{macrocode}
-\newcommand*\TUD@parameter@set[1][]{%
- \ifxblank{#1}{%
- \TUD@parameter@checkfamily{\TUD@parameter@set}%
- \expandafter\kvsetkeys\expandafter{\TUD@parameter@family}%
- }{%
- \expandafter\kvsetkeys\expandafter{#1}%
- }%
-}
+\newcommand*\TUD@parameter@set[2]{\@expandtwoargs\kvsetkeys{#1}{#2}}
% \end{macrocode}
% \end{macro}^^A \TUD@parameter@set
-% \begin{macro}{\TUD@parameter@wrn}
+% \begin{macro}{\TUD@parameter@error}
% Das Makro \cs{TUD@parameter@wrn}\marg{Parameter}\marg{Werteliste} gibt für
% den Fall einer ungültigen Wertzuweisung an einen bestimmten \meta{Parameter}
% eine Warnung mit einem entsprechenden Hinweis auf gültige Werte innerhalb von
% \meta{Werteliste} aus.
% \begin{macrocode}
-\newcommand*\TUD@parameter@wrn[2]{%
- \PackageWarning{tudscrbase}{%
- Parameter `#1' can only be used with values:\MessageBreak%
- #2%
+\newcommand*\TUD@parameter@error[2]{%
+ \PackageError{tudscrbase}{Unsupported value for parameter `#1'}{%
+ `#1' can only be used with values:\MessageBreak#2%
}%
}
% \end{macrocode}
-% \end{macro}^^A \TUD@parameter@wrn
+% \end{macro}^^A \TUD@parameter@error
%
% \iffalse
%</package>
@@ -538,7 +619,7 @@
% \KOMAScript-Klasse verzögert.
% \begin{macrocode}
%<*!inherit>
-\TUDExecuteOptions{\TUDDefaultOptions}
+\TUDExecuteOptions{cd,cdfont,tudbookmarks}
%</!inherit>
\TUDProcessOptions\relax
% \end{macrocode}
@@ -560,7 +641,7 @@
% \subsection{Externe Pakete}
%
% \changes{v2.01}{2014/04/24}{Versionsanforderungen bei benötigten Paketen}%^^A
-% \changes{v2.02}{2014/07/08}{Warnung bei der Verwendung von \pkg{graphics}}%^^A
+% \changes{v2.02}{2014/07/08}{\pkg{graphics} Warnung bei Verwendung}%^^A
%
% Für die Verwendung der hier erstellten \KOMAScript-Wrapper-Klassen werden
% einige wenige Pakete eingebunden. Dabei wurde versucht, die Anzahl der