summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/tudscr/tudscr-base.dtx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2014-12-22 23:40:36 +0000
committerKarl Berry <karl@freefriends.org>2014-12-22 23:40:36 +0000
commit4f902263451a27826c05b01add75eba8ad70bcbb (patch)
tree122905b415c3dad65734d26cd0a706f6e13729b4 /Master/texmf-dist/source/latex/tudscr/tudscr-base.dtx
parent6a25d658147c100681ee893ce36f28ef9b689995 (diff)
tudscr has fallback for free fonts, so fine, restore
git-svn-id: svn://tug.org/texlive/trunk@35882 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/tudscr/tudscr-base.dtx')
-rw-r--r--Master/texmf-dist/source/latex/tudscr/tudscr-base.dtx610
1 files changed, 610 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr-base.dtx b/Master/texmf-dist/source/latex/tudscr/tudscr-base.dtx
new file mode 100644
index 00000000000..517936b8410
--- /dev/null
+++ b/Master/texmf-dist/source/latex/tudscr/tudscr-base.dtx
@@ -0,0 +1,610 @@
+% \CheckSum{271}
+% \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.
+% ======================================================================
+% \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: tudscr-base.dtx
+%<*driver>
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\ProvidesFile{tudscr-base.dtx}[%
+ 2014/11/05 v2.02 TUD-KOMA-Script\space%
+%</driver>
+%<package>\NeedsTeXFormat{LaTeX2e}[2011/06/27]
+%<package>\ProvidesPackage{tudscrbase}[%
+%<*driver|package>
+%!TUDVersion
+%<package> package
+ (basics for the bundle)%
+]
+%</driver|package>
+%<*driver>
+\RequirePackage[ngerman=ngerman-x-latest]{hyphsubst}
+\documentclass[english,ngerman]{tudscrdoc}
+\usepackage{selinput}\SelectInputMappings{adieresis={ä},germandbls={ß}}
+\usepackage[T1]{fontenc}
+\usepackage{babel}
+\usepackage{tudscrfonts} % only load this package, if the fonts are installed
+\KOMAoptions{parskip=half-}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{tudscr-base.dtx}
+\begin{document}
+ \maketitle
+ \DocInput{\filename}
+\end{document}
+%</driver>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.02}{2014/06/23}{Unterstützung für \pkg{titlepage} entfernt}%^^A
+%
+% \section{Grundlegende Befehle und Pakete}
+%
+% Für die Erstellung der Wrapper-Klassen werden die dafür benötigten Pakete
+% eingebunden und Steuerungsbefehle definiert.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \iffalse
+%<*package>
+% \fi
+%
+% \subsection{Das Paket \pkg{tudscrbase}}
+%
+% Das Paket \pkg{scrbase} wird zur Optionsdefinition benötigt.
+% \begin{macrocode}
+\RequirePackage{scrbase}[2013/12/19]
+% \end{macrocode}
+% Das Paket \pkg{kvsetkeys} erweitert \pkg{keyval} um die Möglichkeit, das
+% Verhalten bei der Angabe eines nicht definierten Schlüssels festzulegen.
+% \begin{macrocode}
+\RequirePackage{kvsetkeys}[2012/04/25]
+% \end{macrocode}
+% Das Paket \pkg{etoolbox} wird für die Manipulation bereits definierter
+% Makros sowie zur erweiterten Auswertung boolescher Ausdrücke benötigt.
+% \begin{macrocode}
+\RequirePackage{etoolbox}[2011/01/03]
+% \end{macrocode}
+%
+% \subsubsection{Robuster Test auf leeres Argument}
+%
+% \begin{macro}{\ifxblank}
+% Hiermit kann ein Argument geprüft werden, ob dieses blank ist (leer oder
+% Leerzeichen). In seiner Syntax ist er identisch zu \cs{ifblank}, allerdings
+% expandiert er im Gegensatz zu diesem das gegebene Argument.
+% \begin{macrocode}
+\newcommand*\ifxblank{\expandafter\ifblank\expandafter}
+% \end{macrocode}
+% \end{macro}^^A \ifxblank
+%
+% \subsubsection{Robuster Test auf numerischen Ausdruck}
+%
+% \begin{macro}{\ifxnumber}
+% Dieser Befehl dient zum Testen, ob ein gegebenes Argument eine Zahl ist.
+% Die Syntax lautet: \cs{ifxnumber}\marg{Argument}\marg{Wahr}\marg{Falsch}
+% \begin{macrocode}
+\newcommand*\ifxnumber[1]{%
+ \if\relax\detokenize\expandafter{\romannumeral-0#1}\relax%
+ \expandafter\@firstoftwo%
+ \else%
+ \expandafter\@secondoftwo%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \ifxnumber
+%
+% \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}
+% \begin{macro}{\TUD@key}
+% \begin{macro}{\TUD@@key}
+% \begin{macro}{\TUD@@@key}
+% \begin{macro}{\TUD@ifkey}
+% \begin{macro}{\TUD@set@ifkey}
+% \begin{macro}{\TUD@numkey}
+% \begin{macro}{\TUD@numkey@bool}
+% \changes{v2.02}{2014/11/05}{neu}%^^A
+% \begin{macro}{\TUD@set@numkey}
+% \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.
+% \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}}
+\newcommand*\TUD@noworlater{\AtEndOfClass}
+\AtEndOfClass{\let\TUD@noworlater\@firstofone}
+\newcommand*\TUD@key[2][.\@currname.\@currext]{%
+ \DefineFamilyMember{TUD}%
+ \@ifnextchar[%]
+ {\TUD@@key[#1]{#2}}{\TUD@@@key[#1]{#2}}%
+}
+\def\TUD@@key[#1]#2[#3]#4{%
+ \DefineFamilyKey[#1]{TUD}{#2}[{#3}]{\TUD@noworlater{#4}}%
+}
+\def\TUD@@@key[#1]#2#3{%
+ \DefineFamilyKey[#1]{TUD}{#2}{\TUD@noworlater{#3}}%
+}
+\newcommand*\TUD@ifkey[1][.\@currname.\@currext]{%
+ \DefineFamilyMember{TUD}%
+ \FamilyBoolKey[#1]{TUD}%
+}
+\newcommand*\TUD@set@ifkey{\FamilySetBool{TUD}}
+\newcommand*\TUD@numkey[1][.\@currname.\@currext]{%
+ \DefineFamilyMember{TUD}%
+ \FamilyNumericalKey[#1]{TUD}%
+}
+% \end{macrocode}
+% Um Dopplungen im Code zu vermeiden, werden für die numerische Schlüssel die
+% booleschen Standardwertzuweisungen in einem Makro gespeichert.
+% \begin{macrocode}
+\newcommand*\TUD@numkey@bool{%
+ {false}{0},{off}{0},{no}{0},{true}{1},{on}{1},{yes}{1}%
+}
+\newcommand*\TUD@set@numkey{\FamilySetNumerical{TUD}}
+\newcommand*\TUD@unknown@keyval{\FamilyUnknownKeyValue{TUD}}
+% \end{macrocode}
+% \end{macro}^^A \TUD@unknown@keyval
+% \end{macro}^^A \TUD@set@numkey
+% \end{macro}^^A \TUD@numkey@bool
+% \end{macro}^^A \TUD@numkey
+% \end{macro}^^A \TUD@set@ifkey
+% \end{macro}^^A \TUD@ifkey
+% \end{macro}^^A \TUD@@@key
+% \end{macro}^^A \TUD@@key
+% \end{macro}^^A \TUD@key
+% \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}
+% \begin{macro}{\TUD@std@ifkey@lock}
+% \begin{macro}{\TUD@std@numkey@lock}
+% \begin{macro}{\TUD@set@ifkey@lock}
+% \begin{macro}{\TUD@set@numkey@lock}
+% Da sich die Klassenoptionen teilweise selbst gegenseitig beeinflussen oder
+% aber in bestimmten Fällen eine Option in Abhängigkeit von einer anderen
+% unterschiedliche Standardwerte annehmen soll, wird dafür eine Möglichkeit
+% geschaffen. Dabei kann der Nutzer jederzeit einen von einer Option abhängigen
+% Standardwert einer Klassenoption überschreiben. Die Klassenoptionen selber
+% werden intern mit dem Befehl \cs{TUD@key@lock} definiert und die Standardwerte
+% sowie deren Manipulation innerhalb der Optionen mit \cs{TUD@std@ifkey@lock}
+% bzw. \cs{TUD@std@numkey@lock} gesetzt. Mit \cs{TUD@set@ifkey@lock} und
+% \cs{TUD@set@numkey@lock} werden bei der expliziten Anwendung einer Option
+% durch den Nutzer die entsprechenden Werte geändert und gegen ein internes
+% Überschreiben gesperrt.
+% \begin{macrocode}
+\newcommand*\TUD@key@lock[2][.\@currname.\@currext]{%
+% \end{macrocode}
+% Basierend auf dem Namen des Schalters wird die notwendige, boolesche Variable
+% erzeugt (\cs{if@tud@\meta{Schaltername}@lock}), welche im Falle des direkten
+% Aufrufs des Schlüssels durch den Anwender, ein internes Überschreiben
+% verhindert.
+% \begin{macrocode}
+ \newbool{@tud@#2@locked}%
+ \TUD@key[{#1}]{#2}%
+}
+% \end{macrocode}
+% Es kann intern über \cs{if\meta{Schaltername}@lock} geprüft werden, ob einem
+% mit Schlüssel, der mit \cs{TUD@key@lock} definiert wurde, durch den Anwender
+% ein explizites Verhalten zugewiesen wurde. Sollte dies nicht der Fall sein,
+% kann dieser hiermit intern beliebig angepasst werden. Da es durch das Setzen
+% der Option mit \cs{TUDoption} zu einer Sperrung kommt, muss diese folgend
+% wieder rückgängig gemacht werden.
+% \begin{macrocode}
+\newcommand*\TUD@std@ifkey@lock[2]{%
+ \ifbool{@tud@#1@locked}{}{%
+ \TUDoption{#1}{#2}%
+ \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}%
+}
+\newcommand*\TUD@set@numkey@lock[1]{%
+ \booltrue{@tud@#1@locked}%
+ \TUD@set@numkey{#1}%
+}
+% \end{macrocode}
+% \end{macro}^^A \TUD@set@numkey@lock
+% \end{macro}^^A \TUD@set@ifkey@lock
+% \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}
+% geschrieben wird, wenn nicht über eine entsprechende Option ein explizites
+% Verhalten mit \cs{csset@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]{%
+ \csdef{#1}{#2}%
+ \newbool{#1@locked}%
+}
+\newcommand*\csstd@lock[2]{%
+ \ifbool{#1@locked}{}{%
+ \csdef{#1}{#2}%
+ \boolfalse{#1@locked}%
+ }%
+}
+\newcommand*\csset@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}
+% Diese Makros dienen in Anlehnung an die vorherigen zum Definieren und Setzen
+% von sperrbaren booleschen Schaltern.
+% \begin{macrocode}
+\newcommand*\newbool@lock[2][false]{%
+ \newbool{#2}%
+ \newbool{#2@locked}%
+ \setbool{#2}{#1}%
+}
+\newcommand*\stdbool@lock[2]{%
+ \ifbool{#1@locked}{}{%
+ \setbool{#1}{#2}%
+ \boolfalse{#1@locked}%
+ }%
+}
+\newcommand*\setbool@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
+% \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
+% 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.
+% \begin{macrocode}
+\newcommand*\tud@cmd@store[1]{%
+ \ifcsdef{@@tud@#1}{}{\csletcs{@@tud@#1}{#1}}%
+}
+\newcommand*\tud@cmd@reset[1]{%
+ \ifcsdef{@@tud@#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}{%
+ \csletcs{#1}{@@tud@#1}%
+ \csundef{@@tud@#1}%
+ }{}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@cmd@restore
+% \end{macro}^^A \tud@cmd@use
+% \end{macro}^^A \tud@cmd@reset
+% \end{macro}^^A \tud@cmd@store
+% \begin{macro}{\tud@patch@wrn}
+% Dieses Makro wird verwendet, wenn mit den Mitteln von \pkg{etoolbox} bereits
+% vorhandene Befehle angepasst werden sollen (\cs{apptocmd}, \cs{pretocmd},
+% \cs{patchcmd}) und dies nicht gelingt.
+% \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.
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@patch@wrn
+% \begin{macro}{\TUD@parameter}
+% \begin{macro}{\TUD@parameter@family}
+% \begin{macro}{\TUD@parameter@checkfamily}
+% Mit \cs{TUD@parameter}\marg{Familienname}\marg{Definitionen} können
+% Schlüssel"=Wert"=Parameter für die optionalen Argumente von Befehle definiert
+% werden. Das erste Argument definiert den Familiennamen für den jeweiligen
+% 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.
+% \begin{macrocode}
+\newcommand*\TUD@parameter@family{}%
+\newcommand*\TUD@parameter[2]{%
+ \ifxblank{#1}{}{\xdef\TUD@parameter@family{#1}}%
+ #2%
+ \global\let\TUD@parameter@family\relax%
+}
+\let\TUD@parameter@family\relax%
+% \end{macrocode}
+% Dieser Befehl prüft, ob eine Familie für den Paramter definiert wurde.
+% \begin{macrocode}
+\newcommand*\TUD@parameter@checkfamily[1]{%
+ \ifx\TUD@parameter@family\relax%
+ \PackageError{tudscrbase}{%
+ No family for keys given.
+ }{%
+ You have to use \string#1\space within the\MessageBreak%
+ second argument of \string\TUD@parameter. The first \MessageBreak%
+ argument of \string\TUD@parameter\space has to be a unique family name.
+ }%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \TUD@parameter@checkfamily
+% \end{macro}^^A \TUD@parameter@family
+% \end{macro}^^A \TUD@parameter
+% \begin{macro}{\TUD@parameter@define}
+% \begin{macro}{\TUD@parameter@let}
+% \changes{v2.02}{2014/07/25}{Beachtung der gegebenen Standardwerte}%^^A
+% \begin{macro}{\TUD@parameter@sethandler}
+% \cs{TUD@parameter@define}\marg{Name}\oarg{Säumniswert}\marg{Verarbeitung}
+% nutzt \cs{define@key} aus dem \pkg{keyval}"=Paket, um einen Schlüssel und
+% dessen Verarbeitung zu definieren, wobei auf den zugewiesenen Wert innerhalb
+% des zweiten obligatorischen Argumentes mit \texttt{\#1} zugegriffen werden
+% kann.
+% \begin{macrocode}
+\newcommand*\TUD@parameter@define[1][]{%
+ \ifxblank{#1}{%
+ \TUD@parameter@checkfamily{\TUD@parameter@define}%
+ \expandafter\define@key\expandafter{\TUD@parameter@family}%
+ }{%
+ \expandafter\define@key\expandafter{#1}%
+ }%
+}
+% \end{macrocode}
+% Mit \cs{TUD@parameter@let}\marg{Name}\marg{Name} kann äquivalent zur
+% \mbox{\TeX-Primitive \cs{let}} die Definition der Verarbeitung eines
+% Parameters auf einen weiteren übertragen werden.
+% \begin{macrocode}
+\newcommand*\TUD@parameter@let[3][]{%
+ \ifxblank{#1}{%
+ \TUD@parameter@checkfamily{\TUD@parameter@let}%
+ \@expandtwoargs{\csletcs}{%
+ KV@\TUD@parameter@family @#2%
+ }{%
+ KV@\TUD@parameter@family @#3%
+ }%
+ \@expandtwoargs{\csletcs}{%
+ KV@\TUD@parameter@family @#2@default%
+ }{%
+ KV@\TUD@parameter@family @#3@default%
+ }%
+ }{%
+ \@expandtwoargs{\csletcs}{KV@#1@#2}{KV@#1@#3}%
+ \@expandtwoargs{\csletcs}{KV@#1@#2@default}{KV@#1@#3@default}%
+ }%
+}
+% \end{macrocode}
+% Außerdem kann durch \cs{TUD@parameter@sethandler}\marg{Verarbeitung} definiert
+% werden, wie verfahren werden soll, wenn ein optionales Argument im klasischen
+% \LaTeX-Stil und nicht in der Schlüssel"=Wert"=Syntax angegeben wird. Auf das
+% optionale Argument wird ganz normal mit \texttt{\#1} zugegriffen.
+% \begin{macrocode}
+\newcommand*\TUD@parameter@sethandler[1][]{%
+ \ifxblank{#1}{%
+ \TUD@parameter@checkfamily{\TUD@parameter@sethandler}%
+ \expandafter\kv@set@family@handler\expandafter{\TUD@parameter@family}%
+ }{%
+ \expandafter\kv@set@family@handler\expandafter{#1}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \TUD@parameter@sethandler
+% \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
+% 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.
+% \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}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \TUD@parameter@set
+% \begin{macro}{\TUD@parameter@wrn}
+% 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%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \TUD@parameter@wrn
+%
+% \iffalse
+%</package>
+%<*load>
+% \fi
+%
+% \subsection{Laden des Paketes}
+% Die Klassen benötigen das Paket und laden dieses auch.
+% \begin{macrocode}
+\RequirePackage{tudscrbase}[\TUDVersion]
+% \end{macrocode}
+%
+% \iffalse
+%</load>
+%<*execute>
+% \fi
+%
+% \subsection{Durchreichen von Optionen und Standardoptionen}
+%
+% Durchreichen aller Klassenoptionen an die \KOMAScript-Klasse bzw. an die
+% genutzte \TUDScript-Elternklasse.
+% \begin{macrocode}
+%<*!inherit>
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\scrcls@name}}
+%</!inherit>
+%<*inherit>
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\tudinh@name}}
+%</inherit>
+% \end{macrocode}
+% Es werden die Standardoptionen ausgeführt. Die Ausführung selbst wird durch
+% den Befehl \cs{TUD@noworlater} innerhalb von \cs{TUD@key} auf das Ende der
+% \KOMAScript-Klasse verzögert.
+% \begin{macrocode}
+%<*!inherit>
+\TUDExecuteOptions{\TUDDefaultOptions}
+%</!inherit>
+\TUDProcessOptions\relax
+% \end{macrocode}
+% Die korrespindierende \KOMAScript-Klasse bzw. \TUDScript-Elternklasse wird
+% geladen.
+% \begin{macrocode}
+%<*!inherit>
+\LoadClass{\scrcls@name}[2013/12/19]
+%</!inherit>
+%<*inherit>
+\LoadClass{\tudinh@name}
+%</inherit>
+% \end{macrocode}
+%
+% \iffalse
+%<*!inherit>
+% \fi
+%
+% \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
+%
+% Für die Verwendung der hier erstellten \KOMAScript-Wrapper-Klassen werden
+% einige wenige Pakete eingebunden. Dabei wurde versucht, die Anzahl der
+% Pakete möglichst gering zu halten und nur die wirklich notwendigen zu
+% verwenden.
+%
+% Die \env{abstract}-Umgebung wird im Vergleich zu den \KOMAScript-Klassen
+% stark erweitert. Für diese sowie für die Umgebungen \env{declarations} und
+% \env{tudpage} wird das Paket \pkg{environ} für die Umgebungsdefinition
+% benötigt.
+% \begin{macrocode}
+\RequirePackage{environ}[2013/04/01]
+% \end{macrocode}
+% Es folgen die Pakete, welche bei Bedarf am Ende der Präambel geladen werden.
+% \begin{macrocode}
+\AtEndPreamble{%
+% \end{macrocode}
+% Mit \pkg{graphicx} werden die Logos der TU~Dresden sowie von Dresden Concept
+% mit dem Befehl \cs{includegraphics} u.\,a. auf der Titelseite eingebunden.
+% Sollte lediglich das \pkg{graphics}-Paket geladen worden sein, so wird der
+% Nutzer mit einer Warnung informiert, dass das \pkg{graphicx}-Paket zusätzlich
+% geladen wird.
+% \begin{macrocode}
+ \@ifpackageloaded{graphicx}{}{%
+ \@ifpackageloaded{graphics}{%
+ \ClassWarningNoLine{\tudcls@name}{%
+ The package `graphics' was superseded by `graphicx'%
+ }%
+ }{}%
+ }%
+ \RequirePackage{graphicx}[1999/02/16]%
+% \end{macrocode}
+% Mit dem Paket \pkg{tudscrcolor} werden die Befehle für die Auswahl der Farben
+% des \CDs definiert, welches wiederum \pkg{xcolor} lädt.
+% \begin{macrocode}
+ \RequirePackage{tudscrcolor}[\TUDVersion]%
+}
+% \end{macrocode}
+%
+% \iffalse
+%</!inherit>
+%</execute>
+% \fi
+%
+% \Finale
+%
+\endinput