diff options
Diffstat (limited to 'Master/texmf-dist/source/latex')
18 files changed, 15613 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 diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr-color.dtx b/Master/texmf-dist/source/latex/tudscr/tudscr-color.dtx new file mode 100644 index 00000000000..bf07d2ead4c --- /dev/null +++ b/Master/texmf-dist/source/latex/tudscr/tudscr-color.dtx @@ -0,0 +1,444 @@ +% \CheckSum{233} +% \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-color.dtx +%<*driver> +\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi +\ProvidesFile{tudscr-color.dtx}[% + 2014/10/10 v2.02 TUD-KOMA-Script\space% +%</driver> +%<package>\NeedsTeXFormat{LaTeX2e}[2011/06/27] +%<package>\ProvidesPackage{tudscrcolor}[% +%<*driver|package> +%!TUDVersion +%<package> package + (corporate design colors)% +] +%</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-color.dtx} +\begin{document} + \maketitle + \DocInput{\filename} +\end{document} +%</driver> +% \fi +% +% \selectlanguage{ngerman} +% +% \section{Die Farben des \CDs} +% +% Das \CD der Technischen Universität Dresden legt nicht nur die zu nutzenden +% Schriften und das Layout sondern auch die zu verwendenden Farben fest. Diese +% werden nachfolgend für das CMYK"~ und RGB"~Farbmodel definiert. Sie können im +% Dokument mit sämtlichen Befehlen zur Farbauswahl wie \cs{color}\marg{Farbe} +% oder aber \cs{textcolor}\marg{Farbe} verwendet werden. +% +% \StopEventually{\PrintIndex\PrintChanges} +% +% \iffalse +%<*package> +% \fi +% +% \subsection{Optionen des Paketes \pkg{tudscrcolor}} +% +% \begin{macrocode} +\DeclareOption{reduced}{\let\setcdcolors@add\relax} +\DeclareOption{full}{\let\setcdcolors@add\setcdcolors@full} +\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{xcolor}} +% \end{macrocode} +% +% \iffalse +%</package> +%<*class> +% \fi +% +% \subsection{Befehle für die \cls{tudscr}-Klassen} +% +% \begin{macro}{\nopagecolor} +% \begin{macro}{\tud@pagecolor} +% \begin{macro}{\tud@restorepagecolor} +% Diese Befehle dienen zum Umschalten der Farben für Titel- und Kapitelseiten. +% Wenn die Farben für Titel- und Kapitelseiten umgeschaltet werden, geht die +% Information über die aktuelle Text- und Seitenfarbe verloren. Um dies zu +% verhindern, kann das Paket \pkg{pagecolor} geladen werden, welches mit den +% Befehlen \cs{newcolor} und \cs{restorecolor} ein Wiederherstellen ermöglicht. +% \begin{macrocode} +\newcommand*\tud@pagecolor[1]{} +\newcommand*\tud@restorepagecolor{} +\AfterPackage{tudscrcolor}{% + \providecommand*\nopagecolor{\pagecolor{white}}% + \let\tud@pagecolor\pagecolor% + \let\tud@restorepagecolor\nopagecolor% + \AfterPackage*{pagecolor}{% + \let\tud@pagecolor\newpagecolor% + \let\tud@restorepagecolor\restorepagecolor% + }% +} +% \end{macrocode} +% \end{macro}^^A \tud@restorepagecolor +% \end{macro}^^A \tud@pagecolor +% \end{macro}^^A \nopagecolor +% Sollte das Paket \pkg{pdfpages} geladen werden, so ist eine Definition +% der Standardseitenfarbe zum Einbinden von PDF-Dokumenten notwendig. +% Andernfalls werden bei der Verwendung von \cs{includepdf} nur leere Seiten +% erzeugt. +% \begin{macrocode} +\AfterPackage{pdfpages}{\AtEndPreamble{\nopagecolor}} +% \end{macrocode} +% +% \iffalse +%</class> +%<*package> +% \fi +% +% \subsection{Farbdefinitionen für das Paket \pkg{tudscrcolor}} +% +% \begin{macro}{\setcdcolors} +% \begin{macro}{\setcdcolors@add} +% Der Befehl \cs{setcdcolors} definiert die Farben des \CDs. Das Argument dient +% zur Auswahl des gewünschten Farbmodels. Dies kann dazu genutzt werden, +% innerhalb des Dokumentes die Definition der Farben für ein neues Farbmodell zu +% ändern. +% \begin{macrocode} +\newcommand*\setcdcolors@add{} +\newcommand*\setcdcolors[1]{% + \def\@tempa{#1}\ifx\@tempa\@empty\else% + \selectcolormodel{\@tempa} + \fi% +% \end{macrocode} +% \begin{color}{HKS41} +% Die primäre Hausfarbe (dunkles Blau) +% \begin{macrocode} + \definecolor{HKS41}{cmyk/RGB/rgb}{% + 1.00,0.70,0.10,0.50/011,042,081/0.0431372549,0.16470588235,0.31764705882% + } +% \end{macrocode} +% \end{color}^^A HKS41 +% \begin{color}{HKS92} +% Die sekundäre Hausfarbe (grau), allein und ausschließlich für die Verwendung +% in der Geschäftsausstattung und nicht für Fließtext, Grafiken etc. +% \begin{macrocode} + \definecolor{HKS92}{cmyk/RGB/rgb}{% + 0.10,0.00,0.05,0.65/080,089,085/0.31372549019,0.34901960784,0.33333333333% + } +% \end{macrocode} +% \end{color}^^A HKS92 +% \begin{color}{HKS44} +% Auszeichnungen 1. Kategorie (helles Blau) +% \begin{macrocode} + \definecolor{HKS44}{cmyk/RGB/rgb}{% + 1.00,0.50,0.00,0.00/000,089,163/0,0.34901960784,0.63921568627% + } +% \end{macrocode} +% \end{color}^^A HKS44 +% \begin{color}{HKS36} +% \begin{color}{HKS33} +% \begin{color}{HKS57} +% \begin{color}{HKS65} +% Auszeichnungen 2. Kategorie (Indigo, Purpur, dunkles Grün, helles Grün) +% \begin{macrocode} + \definecolor{HKS36}{cmyk/RGB/rgb}{% + 0.80,0.90,0.00,0.00/081,041,127/0.31764705882,0.16078431372,0.49803921568% + } + \definecolor{HKS33}{cmyk/RGB/rgb}{% + 0.50,1.00,0.00,0.00/129,026,120/0.50588235294,0.10196078431,0.47058823529% + } + \definecolor{HKS57}{cmyk/RGB/rgb}{% + 1.00,0.00,0.90,0.20/000,122,071/0,0.47843137254,0.28235294117% + } + \definecolor{HKS65}{cmyk/RGB/rgb}{% + 0.65,0.00,1.00,0.00/034,173,054/0.13333333333,0.67843137254,0.21176470588% + } +% \end{macrocode} +% \end{color}^^A HKS65 +% \end{color}^^A HKS57 +% \end{color}^^A HKS33 +% \end{color}^^A HKS36 +% \begin{color}{HKS07} +% Ausnahmefarbe (Orange) +% \begin{macrocode} + \definecolor{HKS07}{cmyk/RGB/rgb}{% + 0.00,0.60,1.00,0.00/232,123,020/0.90980392156,0.48235294117,0.07843137254% + } +% \end{macrocode} +% \end{color}^^A HKS07 +% \begin{color}{cddarkblue} +% \begin{color}{cdgray} +% \begin{color}{cdgrey} +% \begin{color}{cdblue} +% \begin{color}{cdindigo} +% \begin{color}{cdpurple} +% \begin{color}{cddarkgreen} +% \begin{color}{cdgreen} +% \begin{color}{cdorange} +% Die definierten Grundfarben werden zur einfacheren Verwendung im Dokument +% noch einmal speziell benannt. +% \begin{macrocode} + \colorlet{cddarkblue}{HKS41} + \colorlet{cdgray}{HKS92} + \colorlet{cdgrey}{HKS92} + \colorlet{cdblue}{HKS44} + \colorlet{cdindigo}{HKS36} + \colorlet{cdpurple}{HKS33} + \colorlet{cddarkgreen}{HKS57} + \colorlet{cdgreen}{HKS65} + \colorlet{cdorange}{HKS07} +% \end{macrocode} +% \end{color}^^A cdorange +% \end{color}^^A cdgreen +% \end{color}^^A cddarkgreen +% \end{color}^^A cdpurple +% \end{color}^^A cdindigo +% \end{color}^^A cdblue +% \end{color}^^A cdgrey +% \end{color}^^A cdgray +% \end{color}^^A cddarkblue +% Damit enden die notwendigen Farbdefinitionen für das \pkg{tudscrcolor}-Paket. +% Abhängig von den gewählten Optionen werden mit \cs{setcdcolors@add} ggf. +% zusätzliche Farbnamen definiert. +% \begin{macrocode} + \setcdcolors@add% +} +% \end{macrocode} +% \end{macro}^^A \setcdcolors@add +% \end{macro}^^A \setcdcolors +% \begin{macro}{\setcdcolors@full} +% Die erweiterten Farbbefehle werden durch \pkg{tudscrcolor} definiert, wenn +% das Paket explizit mit der Option \opt{full} geladen wird. Damit werden +% alle gängigen Farbdefinitionen der vielen Insellösungen des \LaTeX-Universums +% an der Technischen Universität Dresden unterstützt. +% \begin{macrocode} +\newcommand*\setcdcolors@full{% + \colorlet{HKS41K100}{HKS41!100} + \colorlet{HKS41K90}{HKS41!90} + \colorlet{HKS41K80}{HKS41!80} + \colorlet{HKS41K70}{HKS41!70} + \colorlet{HKS41K60}{HKS41!60} + \colorlet{HKS41K50}{HKS41!50} + \colorlet{HKS41K40}{HKS41!40} + \colorlet{HKS41K30}{HKS41!30} + \colorlet{HKS41K20}{HKS41!20} + \colorlet{HKS41K10}{HKS41!10} + \colorlet{HKS92K100}{HKS92!100} + \colorlet{HKS92K90}{HKS92!90} + \colorlet{HKS92K80}{HKS92!80} + \colorlet{HKS92K70}{HKS92!70} + \colorlet{HKS92K60}{HKS92!60} + \colorlet{HKS92K50}{HKS92!50} + \colorlet{HKS92K40}{HKS92!40} + \colorlet{HKS92K30}{HKS92!30} + \colorlet{HKS92K20}{HKS92!20} + \colorlet{HKS92K10}{HKS92!10} + \colorlet{HKS44K100}{HKS44!100} + \colorlet{HKS44K90}{HKS44!90} + \colorlet{HKS44K80}{HKS44!80} + \colorlet{HKS44K70}{HKS44!70} + \colorlet{HKS44K60}{HKS44!60} + \colorlet{HKS44K50}{HKS44!50} + \colorlet{HKS44K40}{HKS44!40} + \colorlet{HKS44K30}{HKS44!30} + \colorlet{HKS44K20}{HKS44!20} + \colorlet{HKS44K10}{HKS44!10} + \colorlet{HKS36K10}{HKS36!10} + \colorlet{HKS36K20}{HKS36!20} + \colorlet{HKS36K30}{HKS36!30} + \colorlet{HKS36K40}{HKS36!40} + \colorlet{HKS36K50}{HKS36!50} + \colorlet{HKS36K60}{HKS36!60} + \colorlet{HKS36K70}{HKS36!70} + \colorlet{HKS36K80}{HKS36!80} + \colorlet{HKS36K90}{HKS36!90} + \colorlet{HKS36K100}{HKS36!100} + \colorlet{HKS33K10}{HKS33!10} + \colorlet{HKS33K20}{HKS33!20} + \colorlet{HKS33K30}{HKS33!30} + \colorlet{HKS33K40}{HKS33!40} + \colorlet{HKS33K50}{HKS33!50} + \colorlet{HKS33K60}{HKS33!60} + \colorlet{HKS33K70}{HKS33!70} + \colorlet{HKS33K80}{HKS33!80} + \colorlet{HKS33K90}{HKS33!90} + \colorlet{HKS33K100}{HKS33!100} + \colorlet{HKS57K10}{HKS57!10} + \colorlet{HKS57K20}{HKS57!20} + \colorlet{HKS57K30}{HKS57!30} + \colorlet{HKS57K40}{HKS57!40} + \colorlet{HKS57K50}{HKS57!50} + \colorlet{HKS57K60}{HKS57!60} + \colorlet{HKS57K70}{HKS57!70} + \colorlet{HKS57K80}{HKS57!80} + \colorlet{HKS57K90}{HKS57!90} + \colorlet{HKS57K100}{HKS57!100} + \colorlet{HKS65K10}{HKS65!10} + \colorlet{HKS65K20}{HKS65!20} + \colorlet{HKS65K30}{HKS65!30} + \colorlet{HKS65K40}{HKS65!40} + \colorlet{HKS65K50}{HKS65!50} + \colorlet{HKS65K60}{HKS65!60} + \colorlet{HKS65K70}{HKS65!70} + \colorlet{HKS65K80}{HKS65!80} + \colorlet{HKS65K90}{HKS65!90} + \colorlet{HKS65K100}{HKS65!100} + \colorlet{HKS07K10}{HKS07!10} + \colorlet{HKS07K20}{HKS07!20} + \colorlet{HKS07K30}{HKS07!30} + \colorlet{HKS07K40}{HKS07!40} + \colorlet{HKS07K50}{HKS07!50} + \colorlet{HKS07K60}{HKS07!60} + \colorlet{HKS07K70}{HKS07!70} + \colorlet{HKS07K80}{HKS07!80} + \colorlet{HKS07K90}{HKS07!90} + \colorlet{HKS07K100}{HKS07!100} + \colorlet{HKS41-100}{HKS41!100} + \colorlet{HKS41-90}{HKS41!90} + \colorlet{HKS41-80}{HKS41!80} + \colorlet{HKS41-70}{HKS41!70} + \colorlet{HKS41-60}{HKS41!60} + \colorlet{HKS41-50}{HKS41!50} + \colorlet{HKS41-40}{HKS41!40} + \colorlet{HKS41-30}{HKS41!30} + \colorlet{HKS41-20}{HKS41!20} + \colorlet{HKS41-10}{HKS41!10} + \colorlet{HKS92-100}{HKS92!100} + \colorlet{HKS92-90}{HKS92!90} + \colorlet{HKS92-80}{HKS92!80} + \colorlet{HKS92-70}{HKS92!70} + \colorlet{HKS92-60}{HKS92!60} + \colorlet{HKS92-50}{HKS92!50} + \colorlet{HKS92-40}{HKS92!40} + \colorlet{HKS92-30}{HKS92!30} + \colorlet{HKS92-20}{HKS92!20} + \colorlet{HKS92-10}{HKS92!10} + \colorlet{HKS44-100}{HKS44!100} + \colorlet{HKS44-90}{HKS44!90} + \colorlet{HKS44-80}{HKS44!80} + \colorlet{HKS44-70}{HKS44!70} + \colorlet{HKS44-60}{HKS44!60} + \colorlet{HKS44-50}{HKS44!50} + \colorlet{HKS44-40}{HKS44!40} + \colorlet{HKS44-30}{HKS44!30} + \colorlet{HKS44-20}{HKS44!20} + \colorlet{HKS44-10}{HKS44!10} + \colorlet{HKS36-10}{HKS36!10} + \colorlet{HKS36-20}{HKS36!20} + \colorlet{HKS36-30}{HKS36!30} + \colorlet{HKS36-40}{HKS36!40} + \colorlet{HKS36-50}{HKS36!50} + \colorlet{HKS36-60}{HKS36!60} + \colorlet{HKS36-70}{HKS36!70} + \colorlet{HKS36-80}{HKS36!80} + \colorlet{HKS36-90}{HKS36!90} + \colorlet{HKS36-100}{HKS36!100} + \colorlet{HKS33-10}{HKS33!10} + \colorlet{HKS33-20}{HKS33!20} + \colorlet{HKS33-30}{HKS33!30} + \colorlet{HKS33-40}{HKS33!40} + \colorlet{HKS33-50}{HKS33!50} + \colorlet{HKS33-60}{HKS33!60} + \colorlet{HKS33-70}{HKS33!70} + \colorlet{HKS33-80}{HKS33!80} + \colorlet{HKS33-90}{HKS33!90} + \colorlet{HKS33-100}{HKS33!100} + \colorlet{HKS57-10}{HKS57!10} + \colorlet{HKS57-20}{HKS57!20} + \colorlet{HKS57-30}{HKS57!30} + \colorlet{HKS57-40}{HKS57!40} + \colorlet{HKS57-50}{HKS57!50} + \colorlet{HKS57-60}{HKS57!60} + \colorlet{HKS57-70}{HKS57!70} + \colorlet{HKS57-80}{HKS57!80} + \colorlet{HKS57-90}{HKS57!90} + \colorlet{HKS57-100}{HKS57!100} + \colorlet{HKS65-10}{HKS65!10} + \colorlet{HKS65-20}{HKS65!20} + \colorlet{HKS65-30}{HKS65!30} + \colorlet{HKS65-40}{HKS65!40} + \colorlet{HKS65-50}{HKS65!50} + \colorlet{HKS65-60}{HKS65!60} + \colorlet{HKS65-70}{HKS65!70} + \colorlet{HKS65-80}{HKS65!80} + \colorlet{HKS65-90}{HKS65!90} + \colorlet{HKS65-100}{HKS65!100} + \colorlet{HKS07-10}{HKS07!10} + \colorlet{HKS07-20}{HKS07!20} + \colorlet{HKS07-30}{HKS07!30} + \colorlet{HKS07-40}{HKS07!40} + \colorlet{HKS07-50}{HKS07!50} + \colorlet{HKS07-60}{HKS07!60} + \colorlet{HKS07-70}{HKS07!70} + \colorlet{HKS07-80}{HKS07!80} + \colorlet{HKS07-90}{HKS07!90} + \colorlet{HKS07-100}{HKS07!100} +} +% \end{macrocode} +% \end{macro}^^A \setcdcolors@full +% Zum Schluss werden die Optionen ausgeführt und ggf. an \pkg{xcolor} +% weitergereicht. Anschließend werden die Farben für das Dokument definiert. +% Ohne die Angabe eines optionalen Argumentes an das Paket \pkg{xcolor} erfolgt +% die Definition für den gewählten bzw. standardmäßig eingestellten Farbraum. +% \begin{macrocode} +\ExecuteOptions{reduced} +\ProcessOptions\relax +\RequirePackage{xcolor}[2007/01/21] +\setcdcolors{} +% \end{macrocode} +% +% \iffalse +%</package> +% \fi +% +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr-comp.dtx b/Master/texmf-dist/source/latex/tudscr/tudscr-comp.dtx new file mode 100644 index 00000000000..091416da345 --- /dev/null +++ b/Master/texmf-dist/source/latex/tudscr/tudscr-comp.dtx @@ -0,0 +1,569 @@ +% \CheckSum{336} +% \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-comp.dtx +%<*driver> +\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi +\ProvidesFile{tudscr-comp.dtx}[% + 2014/11/05 v2.02 TUD-KOMA-Script\space% +%</driver> +%<package>\NeedsTeXFormat{LaTeX2e}[2011/06/27] +%<package>\ProvidesPackage{tudscrcomp}[% +%<*driver|package> +%!TUDVersion +%<package> package + (compatibility for tudbook)% +] +%</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-comp.dtx} +\begin{document} + \maketitle + \DocInput{\filename} +\end{document} +%</driver> +% \fi +% +% \selectlanguage{ngerman} +% +% \section{Kompatibilität für die \cls{tudbook}-Klasse und frühere Versionen} +% +% Diese Paket stellt für die \cls{tudscr}-Klassen eine Schnittstelle bereit, +% die es ermöglicht, die in der alten \cls{tudbook}-Klasse und dem dazugehörigen +% \pkg{tudthesis}-Paket definierten Befehle hier zu benutzen, um alte Dokumente +% mit den neuen Klassen zu setzen. +% +% \StopEventually{\PrintIndex\PrintChanges} +% +% \iffalse +%<*package> +% \fi +% +% \subsection{Das Paket \pkg{tudscrcomp} -- \cls{tudbook}-Kompatibilität} +% +% \begin{macro}{\einrichtung} +% \begin{macro}{\fachrichtung} +% \begin{macro}{\institut} +% \begin{macro}{\professur} +% \begin{macro}{\moreauthor} +% \begin{macro}{\submitdate} +% \begin{macro}{\supervisorII} +% \begin{macro}{\supervisedby} +% \begin{macro}{\supervisedIIby} +% \begin{macro}{\submittedon} +% Es werden Aliasbefehle für die Eingabefelder definiert. +% \begin{macrocode} +\newcommand*\einrichtung{} +\let\einrichtung\faculty +\newcommand*\fachrichtung{} +\let\fachrichtung\department +\newcommand*\institut{} +\let\institut\institute +\newcommand*\professur{} +\let\professur\chair +\newcommand*\moreauthor{} +\let\moreauthor\authormore +\newcommand*\submitdate{} +\let\submitdate\date +\newcommand*\supervisorII[1]{% + \expandafter\gdef\expandafter\@supervisor\expandafter{\@supervisor\and #1}% +} +\newcommand*\supervisedby[1]{\gdef\supervisorname{#1}} +\newcommand*\supervisedIIby[1]{\gdef\supervisorothername{#1}} +\newcommand*\submittedon[1]{\gdef\datetext{#1}} +% \end{macrocode} +% \end{macro}^^A \submittedon +% \end{macro}^^A \supervisedIIby +% \end{macro}^^A \supervisedby +% \end{macro}^^A \supervisorII +% \end{macro}^^A \submitdate +% \end{macro}^^A \moreauthor +% \end{macro}^^A \professur +% \end{macro}^^A \institut +% \end{macro}^^A \fachrichtung +% \end{macro}^^A \einrichtung} +% \begin{macro}{\dissertation} +% Bei der Definition des Typs der Abschlussarbeit mit \cs{dissertation} wird +% die Lokalisierungsvariable \cs{dissertationname} verwendet und die Feldnamen +% angepasst. +% \begin{macrocode} +\newcommand*\dissertation{% + \thesis{\dissertationname}% + \let\supervisorname\refereename% + \let\supervisorothername\refereeothername% +} +% \end{macrocode} +% \end{macro}^^A \dissertation +% \begin{option}{colortitle} +% \begin{option}{nocolortitle} +% Für farbige Einstellungen wird von \cls{tudbook} die Option \opt{color} +% definiert. Soll die Titelseite konträr dazu gesetzt werden, muss sich mit den +% Schlüsseln \opt{colortitle} und \opt{nocolortitle} beholfen werden. +% \begin{macrocode} +\TUD@key{colortitle}[true]{% + \TUD@set@ifkey{colortitle}{@tempswa}{#1}% + \if@tempswa% + \TUDoptions{cdtitle=color}% + \else% + \TUDoptions{cdtitle=true}% + \fi% +} +\TUD@key{nocolortitle}[true]{% + \TUD@set@ifkey{nocolortitle}{@tempswa}{#1}% + \if@tempswa% + \TUDoptions{cdtitle=true}% + \else% + \TUDoptions{cdtitle=color}% + \fi% +} +% \end{macrocode} +% \end{option}^^A nocolortitle +% \end{option}^^A colortitle +% \begin{option}{ddcfooter} +% Außer der Option \opt{ddc} gibt es bei der alten \cls{tudbook}-Klasse noch +% den Schlüssel \opt{ddcfooter}. Dieser wird auf die Option \opt{ddcfoot} +% gelegt. +% \begin{macrocode} +\TUD@key{ddcfooter}[true]{% + \TUD@set@ifkey{ddcfooter}{@tempswa}{#1}% + \if@tempswa% + \TUDoptions{ddcfoot=true}% + \else% + \TUDoptions{ddcfoot=false}% + \fi% +} +% \end{macrocode} +% \end{option}^^A ddcfooter +% \begin{environment}{theglossary} +% \begin{macro}{\glossaryname} +% \begin{macro}{\glossitem} +% Eine rudimentäre Umgebung für ein Glossar. +% \begin{macrocode} +\AtBeginDocument{% + \ifdef{\theglossary}{}{% + \providecommand*{\glossaryname}{Glossar} + \newenvironment{theglossary}[1][]{% + \ClassWarning{\tudcls@name}{% + Using the environment theglossary is not\MessageBreak% + recommended. You should rather use an appropriate\MessageBreak% + package such as glossaries% + }% + \let\bibname\glossaryname% + \bib@heading% + #1% + \list{}{% + \setlength{\labelsep}{\z@}% + \setlength{\labelwidth}{\z@}% + \setlength{\itemindent}{-\leftmargin}% + }% + }{\endlist} + \newcommand\glossitem[1]{\item[] #1\par}% + }% +} +% \end{macrocode} +% \end{macro}^^A \glossitem +% \end{macro}^^A \glossaryname +% \end{environment}^^A theglossary +% \begin{option}{serifmath} +% Die alte \cls{tudbook}-Klasse hat neben der Option \opt{sansmath} +% außerdem den zusätzlichen Schlüssel \opt{serifmath} definiert, welcher aus +% Gründen der Kompatibilität hier ebenfalls vorgehalten wird. +% \begin{macrocode} +\TUD@key{serifmath}[true]{% + \TUD@set@ifkey{serifmath}{@tempswa}{#1}% + \if@tempswa% + \TUDoptions{sansmath=false}% + \else% + \TUDoptions{sansmath=true}% + \fi% +} +% \end{macrocode} +% \end{option}^^A serifmath +% \begin{macro}{\chapterpage} +% \begin{macro}{\if@tud@chapterpage@temp} +% \begin{macro}{\tud@chapterpage@set} +% \begin{macro}{\tud@chapterpage@unset} +% \begin{macro}{\tud@chapterpage@wrn} +% Die alte \cls{tudbook}-Klasse stellt den Befehl \cs{chapterpage} bereit. +% Mit diesem ist es möglich, das Verhalten der Kapitelseiten~-- welches durch +% die Option \opt{chapterpage} gesteuert wird~-- temporär umzuschalten, also +% statt Kapitelseiten lediglich Überschriften zu setzen und umgekehrt. Dies ist +% typographisch durchaus zu hinterfragen, allerdings sollen die neuen Klassen +% möglichst kompatibel zu der alten sein, weshalb diese Funktionalität trotzdem +% implementiert wird. Der Befehl \cs{chapterpage} setzt den globalen Schalter +% \cs{if@tud@chapterpage@temp}. Der Befehl \cs{tud@chapterpage@set} setzt für +% Kapitel das komplementäre Verhalten zur eigentlich gewählten +% \opt{chapterpage}"=Option. Nach dem Setzen der entsprechenden Überschrift +% wird \cs{tud@chapterpage@set} nochmals aufgerufen, das Verhalten auf den +% ursprünglichen Zustand geschaltet und der globale Schalter +% \cs{if@tud@chapterpage@temp} zurückgesetzt. +% \begin{macrocode} +\newif\if@tud@chapterpage@temp +\newcommand*\chapterpage{% + \global\@tud@chapterpage@temptrue% + \tud@chapterpage@wrn% +} +\newcommand*\tud@chapterpage@set[1][]{% + \if@tud@chapterpage@temp% + \if@tud@chapterpage% + \TUDoptions{chapterpage=false}% + \else% + \TUDoptions{chapterpage=true}% + \fi% + \fi% +} +\newcommand*\tud@chapterpage@unset[1][]{% + \tud@chapterpage@set% + \global\@tud@chapterpage@tempfalse% +} +\AtEndPreamble{% + \pretocmd{\tud@chapter}{\tud@chapterpage@set}% + {}{\tud@patch@wrn{tud@nchapter}}% + \apptocmd{\tud@chapter}{\tud@chapterpage@unset}% + {}{\tud@patch@wrn{tud@nchapter}}% + \pretocmd{\tud@schapter}{\tud@chapterpage@set}% + {}{\tud@patch@wrn{tud@schapter}}% + \apptocmd{\tud@schapter}{\tud@chapterpage@unset}% + {}{\tud@patch@wrn{tud@schapter}}% + \pretocmd{\tud@addchap}{\tud@chapterpage@set}% + {}{\tud@patch@wrn{tud@naddchap}}% + \apptocmd{\tud@addchap}{\tud@chapterpage@unset}% + {}{\tud@patch@wrn{tud@naddchap}}% + \pretocmd{\tud@saddchap}{\tud@chapterpage@set}% + {}{\tud@patch@wrn{tud@saddchap}}% + \apptocmd{\tud@saddchap}{\tud@chapterpage@unset}% + {}{\tud@patch@wrn{tud@saddchap}}% +} +% \end{macrocode} +% Da wie bereits beschrieben das Vorgehen äußerst fragwürdig ist, wird bei der +% Verwendung von \cs{chapterpage} zumindest einmalig eine Warnung ausgegeben. +% \begin{macrocode} +\newcommand*\tud@chapterpage@wrn{% + \ClassWarning{\tudcls@name}{% + The command \string\chapterpage\space is not\MessageBreak% + recommended. You should use the same style for\MessageBreak% + chapters throughout the document + }% + \global\let\tud@chapterpage@wrn\relax% +} +% \end{macrocode} +% \end{macro}^^A \tud@chapterpage@wrn +% \end{macro}^^A \tud@chapterpage@unset +% \end{macro}^^A \tud@chapterpage@set +% \end{macro}^^A \if@tud@chapterpage@temp +% \end{macro}^^A \chapterpage +% +% \iffalse +%</package> +% \fi +% +% \subsection{Kompatibilität zu früheren \TUDScript-Versionen} +% +% Neben den Optionen und Befehlen im Paket \pkg{tudscrcomp} gibt es weitere +% veraltete, die jedoch direkt in den Klassen vorgehalten werden. Deren Maßgabe +% ist es, die Kompatibilität zu älteren \TUDScript-Versionen zu erhalten. +% +% Mit der Version v2.02 wurde eine Menge~-- teilweise sehr tiefgreifend~-- +% geändert. Die Kompatibilität zu früheren Versionen wird nicht verfolgt. +% In Zukunft wird es wohl noch die ein oder andere Änderung geben. Hierfür soll +% jedoch allerdings sehr wohl ein Kompatibilitätsmodus zur Verfügung stehen. +% Hiermit wird alles dafür vorbereitet. +% +% \iffalse +%<*class&option> +% \fi +% +% \begin{option}{color} +% \begin{option}{colour} +% Die alte \cls{tudbook}-Klasse hat die Option \opt{color} definiert, mit +% welcher ein Umschalten auf farbige Titel- und Kapitelseiten möglich ist. Aus +% Kompatibilitätsgründen wird diese hier ebenfalls vorgehalten. +% \begin{macrocode} +\TUD@key{color}[true]{% + \TUD@set@numkey{color}{@tempa}{% + \TUD@numkey@bool,% + {simple}{0},{std}{0},{standard}{0},{mono}{0},{monochrom}{0},% + {color}{1},{colour}{1},{full}{1},% + {colorfull}{1},{fullcolor}{1},{colourfull}{1},{fullcolour}{1},% + {lite}{2},{colorlite}{2},{litecolor}{2},{colourlite}{2},{litecolour}{2},% + {light}{2},{colorlight}{2},{lightcolor}{2},{colorpale}{2},{palecolor}{2},% + {pale}{2},{colourlight}{2},{lightcolour}{2},{colourpale}{2},{palecolour}{2}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \ifcase \@tempa\relax% + \TUDoptions{cd=true}% + \or% + \TUDoptions{cd=color}% + \or% + \TUDoptions{cd=lite}% + \fi% + \fi% +} +\TUD@key{colour}[true]{\TUDoptions{color=#1}\FamilyKeyStateProcessed} +% \end{macrocode} +% \end{option}^^A colour +% \end{option}^^A color +% \begin{option}{tudfonts} +% Diese Option wird nur aus Gründen der Kompatibilität zu v1.0 definiert. +% \begin{macrocode} +\TUD@key{tudfonts}[true]{% + \TUD@set@ifkey{tudfonts}{@tempswa}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \if@tempswa% + \TUDoptions{cdfont=true}% + \else% + \TUDoptions{cdfont=false}% + \fi% + \fi% +} +% \end{macrocode} +% \end{option}^^A tudfonts +% \begin{option}{tudfoot} +% Diese Option wird nur aus Gründen der Kompatibilität zu v1.0 definiert. +% \begin{macrocode} +\TUD@key{tudfoot}[true]{% + \TUD@set@ifkey{tudfoot}{@tempswa}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \if@tempswa% + \TUDoptions{cdfoot=true}% + \else% + \TUDoptions{cdfoot=false}% + \fi% + \fi% +} +% \end{macrocode} +% \end{option}^^A tudfoot +% \begin{option}{tudscrver} +% \changes{v2.02}{2014/08/22}{neu}%^^A +% \begin{macro}{\tudscr@v@comp} +% \changes{v2.02}{2014/08/22}{neu}%^^A +% \begin{macro}{\tudscr@v@first} +% \changes{v2.02}{2014/08/22}{neu}%^^A +% \begin{macro}{\tudscr@v@2.02} +% \changes{v2.02}{2014/08/22}{neu}%^^A +% \begin{macro}{\tudscr@v@last} +% \changes{v2.02}{2014/08/22}{neu}%^^A +% In einigen Fällen sind Änderungen mit früheren Versionen nicht kompatibel +% oder unerwünscht, weil diese beispielsweise das Ausgabeergebnis verändern. +% Standardmäßig werden die Klassen in der aktuellen Version geladen. Mit +% \opt{tudscrver=\meta{Version}} kann auf das Verhalten einer früheren +% Version geschaltet werden. Die eingestellte Kompatibilität wird als Zahl in +% \cs{tudscr@v@comp} gespeichert. In den Makros \cs{tudscr@v@\meta{Version}} +% werden die zugehörigen Nummern gespeichert. +% \begin{macrocode} +\newcommand*\tudscr@v@comp{\tudscr@v@last} +\TUD@key{tudscrver}[last]{% + \scr@ifundefinedorrelax{tudscr@v@#1}{% + \def\tudscr@v@comp{0}% + \ClassWarningNoLine{\tudcls@name}{% + You have set option `tudscrver' to `#1', but\MessageBreak% + this value of version is not supported.\MessageBreak% + Because of this, version was set to `first'% + }% + \FamilyKeyStateProcessed% + }{% + \ClassInfoNoLine{\tudcls@name}{% + Switching compatibility level to `#1'% + }% + \edef\tudscr@v@comp{\@nameuse{tudscr@v@#1}}% + \FamilyKeyStateProcessed% + }% +} +% \end{macrocode} +% Eine zusätzliche Bedingung gibt es noch: Die Kompatibilität kann nur beim +% Laden der Klasse gesetzt werden. Danach geht dies nicht mehr. +% \begin{macrocode} +\AtEndOfClass{% + \TUD@key{tudscrver}[]{% + \ClassError{\tudcls@name}{Option `tudscrver' too late}{% + Option `tudscrver' can only be set while loading the\MessageBreak% + class `\tudcls@name' but you have tried to set it up later.% + }% + \FamilyKeyStateProcessed% + }% +% Außerdem wird darauf geachtet, dass mindestens \KOMAScript-Version~v3.12 +% vorhanden ist, andernfalls wird ein Fehler erzeugt. +% \begin{macrocode} + \ifcsdef{scr@v@3.12}{% + \ifnum\scr@compatibility<\@nameuse{scr@v@3.12}\relax% + \ClassError{\tudcls@name}{% + KOMA-Script compatibility level too low% + }{% + \TUDVersion\space has to be used at least with\MessageBreak% + KOMA-Script `version=v3.12'% + }% + \fi% + }{% + \ClassError{\tudcls@name}{% + outdated version of KOMA-Script% + }{% + \TUDVersion\space has to be used with KOMA-Script v3.12 or newer% + }% + }% +} +\@namedef{tudscr@v@first}{0} +\@namedef{tudscr@v@2.02}{0} +\@namedef{tudscr@v@last}{0} +% \end{macrocode} +% \end{macro}^^A \tudscr@v@last +% \end{macro}^^A \tudscr@v@2.02 +% \end{macro}^^A \tudscr@v@first +% \end{macro}^^A \tudscr@v@comp +% \end{option}^^A tudscrver +% +% \iffalse +%</class&option> +%<*class&body> +% \fi +% +% \begin{length}{\chapterheadingvskip} +% Die Länge \cs{chapterheadingvskip} wird aus Gründen der Kompatibilität zu +% älteren Versionen definiert. +% \begin{macrocode} +%<*book|report> +\newlength{\chapterheadingvskip} +\let\chapterheadingvskip\headingsvskip +%</book|report> +% \end{macrocode} +% \end{length}^^A \chapterheadingvskip +% \begin{macro}{\professorship} +% Für die Angabe des Lehrstuhls bzw. der Professur mit kann anstelle von +% \cs{chair} als Aliasbefehl auch \cs{professorship} genutzt werden. +% \begin{macrocode} +\newcommand*\professorship{} +\let\professorship\chair +% \end{macrocode} +% \end{macro}^^A \professorship +% \begin{macro}{\student} +% Der Befehl \cs{student} kann als Alias für \cs{author} genutzt werden. +% \begin{macrocode} +\newcommand*\student{} +\let\student\author +% \end{macrocode} +% \end{macro}^^A \student +% \begin{macro}{\studentid} +% \begin{macro}{\matriculationid} +% Zur Angabe von Matrikelnummer kann auch \cs{studentid} oder +% \cs{matriculationnumber} genutzt werden. +% \begin{macrocode} +\newrobustcmd*\studentid{} +\newrobustcmd*\matriculationid{} +\let\studentid\matriculationnumber +\let\matriculationid\matriculationnumber +% \end{macrocode} +% \end{macro}^^A \matriculationid +% \end{macro}^^A \studentid +% \begin{macro}{\enrolmentyear} +% Das Immatrikulationsjahr kann auch mit \cs{enrolmentyear} angegeben werden. +% \begin{macrocode} +\newrobustcmd*\enrolmentyear{} +\let\enrolmentyear\matriculationyear +% \end{macrocode} +% \end{macro}^^A \enrolmentyear +% \begin{macro}{\birthplace} +% Zur Angabe des Geburtsortes kann auch \cs{birthplace} verwendet werden. +% \begin{macrocode} +\newrobustcmd*\birthplace{} +\let\birthplace\placeofbirth +% \end{macrocode} +% \end{macro}^^A \birthplace +% \begin{macro}{\location} +% Für die Angabe des Ortes kann auch \cs{location} genutzt werden. +% \begin{macrocode} +\newcommand*\location{} +\let\location\place +% \end{macrocode} +% \end{macro}^^A \location +% \begin{macro}{\submissiondate} +% Der Befehl \cs{submissiondate} kann als Aliasbefehl für den Standardbefehl +% \cs{date} zur Datumsangabe genutzt werden. +% \begin{macrocode} +\newcommand*\submissiondate{} +\let\submissiondate\date +% \end{macrocode} +% \end{macro}^^A \submissiondate +% \begin{macro}{\oralexaminationdate} +% Für \cs{defensedate} kann als Aliasbefehl auch \cs{oralexaminationdate} +% verwendet werden. +% \begin{macrocode} +\newcommand*\oralexaminationdate{} +\let\oralexaminationdate\defensedate +% \end{macrocode} +% \end{macro}^^A \oralexaminationdate +% \begin{macro}{\birthday} +% Der Geburtstag kann auch mit \cs{birthday} angegeben werden. +% \begin{macrocode} +\newrobustcmd*\birthday{} +\let\birthday\dateofbirth +% \end{macrocode} +% \end{macro}^^A \birthday +% \begin{macro}{\logofile} +% \begin{macro}{\logofilename} +% Diese beiden Befehle können anstelle von \cs{headlogo} eingesetzt werden. +% \begin{macrocode} +\newcommand*\logofile{} +\let\logofile\headlogo +\newcommand*\logofilename{} +\let\logofilename\headlogo +% \end{macrocode} +% \end{macro}^^A \logofilename +% \end{macro}^^A \logofile +% +% \iffalse +%</class&body> +% \fi +% +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr-doc.dtx b/Master/texmf-dist/source/latex/tudscr/tudscr-doc.dtx new file mode 100644 index 00000000000..b980c247226 --- /dev/null +++ b/Master/texmf-dist/source/latex/tudscr/tudscr-doc.dtx @@ -0,0 +1,225 @@ +% \CheckSum{183} +% \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-doc.dtx +%<*driver> +\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi +\ProvidesFile{tudscr-doc.dtx}[% + 2014/12/16 v2.02 TUD-KOMA-Script\space% +%</driver> +%<class>\NeedsTeXFormat{LaTeX2e}[2011/06/27] +%<class>\ProvidesClass{tudscrdoc}[% +%<*driver|class> +%!TUDVersion +%<class> class + (source code documentation based on scrdoc)% +] +%</driver|class> +%<*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-doc.dtx} +\begin{document} + \maketitle + \DocInput{\filename} +\end{document} +%</driver> +% \fi +% +% \selectlanguage{ngerman} +% +% \changes{v2.02}{2014/07/10}{Versionsnummer angepasst}%^^A +% +% \section{Quelltextdokumentation für das \TUDScript-Bundle} +% +% Mit dieser Klasse erfolgt die Quelltextdokumentation des \TUDScript-Bundles. +% \StopEventually{\PrintIndex\PrintChanges} +% +% \iffalse +%<*class> +% \fi +% +% Sie basiert auf der Klasse \cls{scrdoc}. +% \begin{macrocode} +\LoadClassWithOptions{scrdoc} +% \end{macrocode} +% Die Seitenränder werden so eingestellt, dass für die Darstellung des +% Quelltextes genau 80~Zeichen zur Verfügung stehen. +% \begin{macrocode} +\setlength{\marginparwidth}{140pt} +\setlength{\marginparsep}{8pt} +\setlength{\oddsidemargin}{\dimexpr\marginparwidth+\marginparsep-1in} +\setlength{\textwidth}{\dimexpr\paperwidth-1in-\oddsidemargin-2\marginparsep} +\setlength{\topmargin}{-1in} +\setlength{\headheight}{0pt} +\setlength{\headsep}{30pt} +\setlength{\footskip}{1.5\headsep} +\setlength{\textheight}{\dimexpr\paperheight-2\headsep-\footskip} +\RequirePackage{dox}[2010/12/16] +% \end{macrocode} +% Titelei. +% \begin{macrocode} +\title{% + \texttt{\filename}\thanks{% + Dies ist Version \fileversion\ von Datei \texttt{\filename}.% + }% +} +\author{Falk Hanisch\thanks{\tudscrmail}} +\date{\filedate} +% \end{macrocode} +% Befehle, welche nicht im Index auftauchen sollen. +% \begin{macrocode} +\DoNotIndex{\",\\,,\if,\@} +% \end{macrocode} +% Weitere Eintragstypen mittels Paket~\pkg{dox}. +% \begin{macrocode} +\doxitem[idxtype=Option]{Option}{option}{Optionen} +\doxitem[idxtype=Parameter]{Parameter}{parameter}{Parameter} +\doxitem[idxtype=Seitenstil]{Pagestyle}{pagestyle}{Seitenstile} +\doxitem[macrolike,idxtype=L\noexpand\"ange]{Length}{length}{L\noexpand\"angen} +\doxitem[idxtype=Z\noexpand\"ahler]{Counter}{counter}{Z\noexpand\"ahler} +\doxitem[idxtype=Farbe]{Color}{color}{Farben} +\doxitem[macrolike,idxtype=Lok.]{Locale}{locale}{Lokalisierungsvariablen} +\doxitem[macrolike,idxtype=Feld]{Field}{field}{Eingabefelder} +% \end{macrocode} +% Zusätzliche Auszeichnungsbefehle. +% \begin{macrocode} +\DeclareRobustCommand*{\cls}[1]{\mbox{\textsf{\textbf{#1}}}} +\DeclareRobustCommand*{\pkg}[1]{\mbox{\textsf{\textbf{#1}}}} +\DeclareRobustCommand*{\opt}[1]{\mbox{\texttt{#1}}} +\DeclareRobustCommand*{\val}[1]{\mbox{\texttt{#1}}} +\DeclareRobustCommand*{\pgs}[1]{\mbox{\texttt{#1}}} +\DeclareRobustCommand*{\env}[1]{\mbox{\texttt{#1}}} +% \end{macrocode} +% \begin{macro}{\ToDo} +% \changes{v2.02}{2014/07/25}{neu}%^^A +% \begin{macro}{\@ToDo} +% \changes{v2.02}{2014/07/25}{neu}%^^A +% \begin{macro}{\@@ToDo} +% \changes{v2.02}{2014/07/25}{neu}%^^A +% Die Befehle für die ToDo-Notizen. Um in der gleichen Nomenklatur wie beim +% Handbuch bleiben zu können, wird die Randnotizmarke als optionales Argument +% hinter dem eigentlichen Text angegeben. +% \begin{macrocode} +\newcommand*\ToDo[2][]{% + \@ifnextchar[ + {\@ToDo{#2}}{\@ToDo{#2}[]} +} +\newcommand*\@ToDo{} +\newcommand*\@@ToDo{}% +\def\@ToDo#1[#2]{% + \ifdefined\tudfinalflag\else% + \def\@@ToDo{\ifstr{#2}{}{ToDo}{ToDo: #2}}% + \endgraf% + \hfuzz0.8pt% + \leavevmode\marginpar{\raggedleft\fbox{\@@ToDo\strut}}% + \fbox{\parbox{\dimexpr\textwidth-2\fboxsep}{#1\strut}}% + \endgraf% + \fi% +}% +% \end{macrocode} +% \end{macro}^^A \@@ToDo +% \end{macro}^^A \@ToDo +% \end{macro}^^A \ToDo +% Optionen bzw. Flag für das automatisierte Erstellen der Quelltextdokumentation +% mit einem Skript ohne ToDo-Befehle. +% \begin{macrocode} +\DeclareOption{final}{\let\tudfinalflag\relax} +\ProcessOptions\relax +% \end{macrocode} +% Und noch etwas Kleinkram für \pkg{hyperref}, \pkg{babel} und \pkg{csquotes}. +% \begin{macrocode} +\AfterPackage{hyperref}{% + \pdfstringdefDisableCommands{\def\TUDScript{TUD-KOMA-Script}}% +} +\AfterPackage{babel}{% + \AfterPackage*{inputenc}{\RequirePackage{csquotes}[2011/10/22]}% +} +\AtBeginDocument{% + \providecommand*\url[1]{\texttt{#1}}% + \providecommand*\texorpdfstring[2]{#1}% + \@ifpackageloaded{babel}{}{% + \ClassWarning{\tudcls@name}{Package `babel' not loaded}% + \let\selectlanguage\@gobble% + \let\glqq\relax% + \let\grqq\relax% + }% + \@ifpackageloaded{csquotes}{}{% + \ClassWarning{\tudcls@name}{Package `csquotes' not loaded}% + \providecommand\enquote[1]{\glqg#1\grqq{}}% + }% + \providecommand*\ifdin[2]{#2}% +} +% \end{macrocode} +% Sollte das Paket \pkg{tudscrfonts} geladen worden sein, so wird die Stärke +% der Schriften für die Quelltextausgabe etwas erhöht, um die Lesbarkeit zu +% verbessern. Andernfalls wird das Paket \pkg{lmodern} geladen. +% \begin{macrocode} +\AtBeginDocument{% + \expandafter\ifx\csname if@tud@cdfonts\endcsname\iftrue\relax% + \RequirePackage{mweights}[2013/07/21]% + \def\mddefault{m}% + \def\mdseries@tt{m}% + \renewcommand*\@pnumwidth{1.7em}% + \else% + \RequirePackage{lmodern}[2009/10/30]% + \fi% +}% +% \end{macrocode} +% +% \iffalse +%</class> +% \fi +% +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr-fields.dtx b/Master/texmf-dist/source/latex/tudscr/tudscr-fields.dtx new file mode 100644 index 00000000000..92ddb27e125 --- /dev/null +++ b/Master/texmf-dist/source/latex/tudscr/tudscr-fields.dtx @@ -0,0 +1,643 @@ +% \CheckSum{399} +% \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-fields.dtx +%<*driver> +\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi +\ProvidesFile{tudscr-fields.dtx}[% + 2014/11/13 v2.02 TUD-KOMA-Script (input fields)% +] +\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-fields.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 +% \changes{v2.02}{2014/11/05}{Korrekturen bei der Verwendung von +% \cs{@@title}}%^^A +% +% \section{Eingabefelder für den Nutzer} +% +% Die Vorlagen für das \CD der Technischen Universität Dresden definieren +% mehrere Felder, welche durch den Nutzer gesetzt und auf Titelseite bzw. mit +% \pkg{tudscrsupervisor} auch teilweise für die Aufgabenstellung verwendet +% werden. Ein Großteil der definierten Felder wird unter anderem für den Satz +% der Titelseite benötigt. +% +% Das Setzen einer speziellen Titelseite mit \LaTeX{} ist eines der häufigsten +% anliegen. Dafür ist von Markus Kohm\footnote{Autor von \KOMAScript} das +% \pkg{titlepage}-Paket entworfen worden. Um gleichzeitig konsistent zu diesem +% Paket, werden für die entsprechenden Felder Alias-Befehle definiert. +% +% \StopEventually{\PrintIndex\PrintChanges} +% +% \iffalse +%<*class> +% \fi +% +% \subsection{Textfelder} +% +% Für das Setzen von Feldern werden bei einem übergebenen Argument führende und +% angehängte Leerzeichen beseitigt. +% \begin{macrocode} +\RequirePackage{trimspaces}[2009/09/17] +% \end{macrocode} +% Von den Klassen benötigte Formularfelder werden definiert. +% \begin{macro}{\faculty} +% \begin{field}{\@faculty} +% Angabe der Fakultät für die TUD-Kopfzeile mit \cs{faculty}\marg{Fakultät}, +% wird im Makro \cs{@faculty} gespeichert. +% \begin{macrocode} +\newcommand*\@faculty{} +\newcommand*\faculty[1]{\gdef\@faculty{\trim@spaces{#1}}} +% \end{macrocode} +% \end{field}^^A \@faculty +% \end{macro}^^A \faculty +% \begin{macro}{\department} +% \begin{field}{\@department} +% Angabe der Einrichtung mit \cs{department}\marg{Fachrichtung} für die +% TUD-Kopfzeile, wird im Makro \cs{@department} gespeichert. +% \begin{macrocode} +\newcommand*\@department{} +\newcommand*\department[1]{\gdef\@department{\trim@spaces{#1}}} +% \end{macrocode} +% \end{field}^^A \@department +% \end{macro}^^A \department +% \begin{macro}{\institute} +% \begin{field}{\@institute} +% Angabe des Instituts für die TUD-Kopfzeile mit \cs{institute}\marg{Institut}, +% wird im Makro \cs{@institute} gespeichert. +% \begin{macrocode} +\newcommand*\@institute{} +\newcommand*\institute[1]{\gdef\@institute{\trim@spaces{#1}}} +% \end{macrocode} +% \end{field}^^A \@institute +% \end{macro}^^A \institute +% \begin{macro}{\chair} +% \begin{field}{\@chair} +% Angabe des Lehrstuhls bzw. der Professur mit \cs{chair}\marg{Lehrstuhl} für +% die TUD-Kopfzeile, wird im Makro \cs{@chair} gespeichert. +% \begin{macrocode} +\newcommand*\@chair{} +\newcommand*\chair[1]{\gdef\@chair{\trim@spaces{#1}}} +% \end{macrocode} +% \end{field}^^A \@chair +% \end{macro}^^A \chair +% \begin{macro}{\extraheadline} +% \begin{field}{\@extraheadline} +% Für die Angabe einer freien zweiten bzw. dritten Textzeile im Kopf. Dies ist +% laut \CD nur in besonderen Ausnahmefällen gestattet. +% \begin{macrocode} +\newcommand*\@extraheadline{} +\newcommand*\extraheadline[1]{\gdef\@extraheadline{\trim@spaces{#1}}} +% \end{macrocode} +% \end{field}^^A \@extraheadline +% \end{macro}^^A \extraheadline +% \begin{macro}{\title} +% \begin{field}{\@@title} +% \begin{field}{\@@author} +% \changes{v2.02}{2014/07/25}{entfernt}%^^A +% Für die spätere Verwendung im Dokument des Titels~-- beispielsweise für die +% Aufgabenstellung oder die Selbstständigkeitserklärung~-- wird das Feld +% \cs{@@title} definiert. In diesem wird der mit \cs{title} gesicherte Eintrag +% ohne die etwaigen Fußnoten gespeichert. Das Feld \cs{@@author} wurde mit der +% Version~v2.02 entfernt. +% \begin{macrocode} +\newcommand*\@@title{} +\renewcommand*\title[1]{% + \gdef\@title{#1}% + \begingroup% + \let\thanks\@gobble% + \let\footnote\@gobble% + \protected@xdef\@@title{\trim@spaces{#1}}% + \endgroup% +} +% \end{macrocode} +% \end{field}^^A \@@author +% \end{field}^^A \@@title +% \end{macro}^^A \title +% \begin{macro}{\authormore} +% \begin{field}{\@authormore} +% Ausgabe einer zusätzlichen Zeile mit \cs{authormore}\marg{Textzeile} direkt +% unterhalb der Angabe des Autors auf der Titelseite, wird im Makro +% \cs{@authormore} gespeichert. +% \begin{macrocode} +\newcommand*\@authormore{} +\newrobustcmd*\authormore[1]{\gdef\@authormore{#1}} +% \end{macrocode} +% \end{field}^^A \@authormore +% \end{macro}^^A \authormore +% \begin{macro}{\thesis} +% \begin{field}{\@thesis} +% \begin{field}{\@@thesis} +% \begin{macro}{\subject} +% \begin{field}{\@subject} +% \begin{macro}{\tud@thesis} +% \begin{macro}{\tud@@thesis} +% \begin{macro}{\tud@thanks} +% Art bzw. Typ der Abschlussarbeit kann \cs{thesis}\marg{Abschlussarbeit} +% angegeben werden und wird im Makro \cs{@thesis} gespeichert. Alternativ +% dazu kann auch der Befehl \cs{subject} verwendet werden. Mit dem Befehl +% \cs{tud@thesis} wird in den Feldern \@thesis bzw. \@subject nach bestimmten +% Schlagwörtern für Abschlussarbeiten o.\,ä. gesucht. Wird eines dieser Wörter +% gefunden, wird der entsprechende reguläre Ausdruck für dieses Feld gesetzt. +% Zusätzlich wird durch \cs{tud@@thesis} dafür gesorgt, dass gegebenenfalls der +% Inhalt von \cs{@subject} in \cs{@thesis} verschoben und die entsprechende +% Option \opt{subjectthesis} gesetzt wird. In \cs{@@thesis} wird die angegebene +% Abschlussarbeit ohne etwaige Fußnoten gespeichert. +% \begin{macrocode} +\newcommand*\@thesis{} +\newcommand*\@@thesis{} +\newcommand*\thesis[1]{\tud@thesis{thesis}{#1}} +\newcommand*\tud@thanks{} +\newcommand*\tud@thesis[2]{% + \AfterPreamble{% + \begingroup% +% \end{macrocode} +% Hier das gleiche wie an anderer Stelle auch schon. Der Inhalt einer eventuell +% vorhandenen Fußnote wird gesichert +% \begin{macrocode} + \global\let\tud@thanks\relax% + \def\thanks##1{\gdef\tud@thanks{##1}}% + \let\footnote\thanks% + \setbox0\vbox{#2}% + \let\thanks\@gobble% + \let\footnote\@gobble% + \tud@lowerstring{\@tempa}{#2}% + \ifstr{#1}{thesis}{\protected@xdef\@@thesis{#2}}{}% + \endgroup% + \ifstr{\@tempa}{diss}{\tud@@thesis{#1}{\dissertationname}}{% + \ifstr{\@tempa}{doctoral}{\tud@@thesis{#1}{\dissertationname}}{% + \ifstr{\@tempa}{phd}{\tud@@thesis{#1}{\dissertationname}}{% + \ifstr{\@tempa}{diploma}{\tud@@thesis{#1}{\diplomathesisname}}{% + \ifstr{\@tempa}{master}{\tud@@thesis{#1}{\masterthesisname}}{% + \ifstr{\@tempa}{bachelor}{\tud@@thesis{#1}{\bachelorthesisname}}{% + \ifstr{\@tempa}{student}{\tud@@thesis{#1}{\studentresearchname}}{% + \ifstr{\@tempa}{project}{\tud@@thesis{#1}{\projectpapername}}{% + \ifstr{\@tempa}{seminar}{\tud@@thesis{#1}{\seminarpapername}}{% + \ifstr{\@tempa}{research}{\tud@@thesis{#1}{\researchname}}{% + \ifstr{\@tempa}{log}{\tud@@thesis{#1}{\logname}}{% + \ifstr{\@tempa}{report}{\tud@@thesis{#1}{\reportname}}{% + \ifstr{\@tempa}{internship}{\tud@@thesis{#1}{\internshipname}}{% + \@namedef{@#1}{#2}% + }}}}}}}}}}}}}% + }% +} +\newcommand*\tud@@thesis[2]{% + \ifstr{#1}{subject}{% + \ifx\@thesis\@empty\else% + \ClassWarning{\tudcls@name}{Field `thesis' is overwritten by `subject'}% + \fi% + \TUD@std@ifkey@lock{subjectthesis}{true}% + }{% + \TUD@std@ifkey@lock{subjectthesis}{false}% + }% + \ifx\tud@thanks\relax% + \gdef\@thesis{#2}% + \else% + \protected@xdef\@thesis{\noexpand#2\noexpand\thanks{\tud@thanks}}% + \fi% + \gdef\@@thesis{#2}% +} +\renewcommand*\subject[1]{\tud@thesis{subject}{#1}} +% \end{macrocode} +% \end{macro}^^A \tud@thanks +% \end{macro}^^A \tud@@thesis +% \end{macro}^^A \tud@thesis +% \end{field}^^A \@subject +% \end{macro}^^A \subject +% \end{field}^^A \@@thesis +% \end{field}^^A \@thesis +% \end{macro}^^A \thesis +% \begin{macro}{\graduation} +% \changes{v2.02}{2014/05/16}{neu, von \cs{degree} umbenannt}%^^A +% \begin{field}{\@graduation} +% \changes{v2.02}{2014/05/16}{neu, von \cs{@degree} umbenannt}%^^A +% \begin{field}{\@graduationabbr} +% \changes{v2.02}{2014/05/16}{neu, \cs{@degreeabbr} umbenannt}%^^A +% Der angestrebte Abschluss bzw. der zu erwerbende akademische Grad, welcher +% auf der Titelseite ausgegeben werden soll, wird im Makro \cs{@graduation} +% gespeichert. Zusätzlich kann als optionales Argument die Kurzform des +% akademischen Grades angegeben werden, wird in \cs{@graduationabbr} +% gespeichert. +% \begin{macrocode} +\newcommand*\@graduation{} +\newcommand*\@graduationabbr{} +\newcommand*\graduation[2][]{% + \ifxblank{#1}{\gdef\@graduationabbr{}}{\gdef\@graduationabbr{(#1)}}% + \gdef\@graduation{#2}% +} +% \end{macrocode} +% \end{field}^^A \@graduationabbr +% \end{field}^^A \@graduation +% \end{macro}^^A \graduation +% \begin{macro}{\professor} +% \begin{field}{\@professor} +% Angabe des verantwortlichen Hochschullehrers für Titel und Aufgabenstellung, +% wird im Makro \cs{@professor} gespeichert. +% \begin{macrocode} +\newcommand*\@professor{} +\newcommand*\professor[1]{\gdef\@professor{#1}} +% \end{macrocode} +% \end{field}^^A \@professor +% \end{macro}^^A \professor +% \begin{macro}{\supervisor} +% \changes{v2.02}{2014/05/16}{Automatisch erzeugter Eintrag der Betreuer mit +% \cs{supervisor} für Selbstständigkeitserklärung verworfen}%^^A +% \begin{field}{\@supervisor} +% (Erst- und Zweit"~)Betreuer bei Abschlussarbeiten, wird in \cs{@supervisor} +% gespeichert. Mehrere Betreuer werden durch \cs{and} getrennt. +% \begin{macrocode} +\newcommand*\@supervisor{} +\newcommand*\supervisor[1]{\gdef\@supervisor{#1}} +% \end{macrocode} +% \end{field}^^A \@supervisor +% \end{macro}^^A \supervisor +% \begin{macro}{\supporter} +% \changes{v2.02}{2014/05/16}{Automatisch erzeugter Eintrag der Betreuer mit +% \cs{supervisor} für Selbstständigkeitserklärung verworfen}%^^A +% \begin{field}{\@supporter} +% Diese Feld ist für die Hilfesteller bei der Anfertigung der Abschlussarbeit, +% welche auf der Selbstständigkeitserklärung aufgeführt werden. Mehrere +% Hilfesteller werden durch \cs{and} voneinander getrennt. +% \begin{macrocode} +\newcommand*\@supporter{} +\newcommand*\supporter[1]{\gdef\@supporter{#1}} +% \end{macrocode} +% \end{field}^^A \@supporter +% \end{macro}^^A \supporter +% \begin{macro}{\company} +% \begin{field}{\@company} +% Angabe einer externen Firma, wird im Makro \cs{@company} gespeichert. +% \begin{macrocode} +\newcommand*\@company{} +\newcommand*\company[1]{\gdef\@company{#1}} +% \end{macrocode} +% \end{field}^^A \@company +% \end{macro}^^A \company +% \begin{macro}{\referee} +% \begin{field}{\@referee} +% Gutachter bei einer Dissertation, werden im Makro \cs{@referee} gespeichert. +% Mehrere Gutachter werden durch \cs{and} getrennt. +% \begin{macrocode} +\newcommand*\@referee{} +\newcommand*\referee[1]{\gdef\@referee{#1}} +% \end{macrocode} +% \end{field}^^A \@referee +% \end{macro}^^A \referee +% \begin{macro}{\advisor} +% \begin{field}{\@advisor} +% Fachreferenten bei einer Dissertation, werden im Makro \cs{@advisor} +% gespeichert. Mehrere Fachreferenten werden durch \cs{and} getrennt. +% \begin{macrocode} +\newcommand*\@advisor{} +\newcommand*\advisor[1]{\gdef\@advisor{#1}} +% \end{macrocode} +% \end{field}^^A \@advisor +% \end{macro}^^A \advisor +% \begin{macro}{\matriculationnumber} +% \begin{field}{\@matriculationnumber} +% Angabe der Matrikelnummer für Titelseite und Aufgabenstellung, wird in dem +% Makro \cs{@matriculationid} gespeichert. +% \begin{macrocode} +\newcommand*\@matriculationnumber{} +\newrobustcmd*\matriculationnumber[1]{% + \gdef\@matriculationnumber{#1}% +} +% \end{macrocode} +% \end{field}^^A \@matriculationnumber +% \end{macro}^^A \matriculationnumber +% \begin{macro}{\matriculationyear} +% \begin{field}{\@matriculationyear} +% Das Immatrikulationsjahr für den Titel wird in \cs{@matriculationyear} +% gespeichert. +% \begin{macrocode} +\newcommand*\@matriculationyear{} +\newrobustcmd*\matriculationyear[1]{\gdef\@matriculationyear{#1}} +% \end{macrocode} +% \end{field}^^A \@matriculationyear +% \end{macro}^^A \matriculationyear +% \begin{macro}{\placeofbirth} +% \begin{field}{\@placeofbirth} +% Der Geburtsort für den Titel wird in \cs{@placeofbirth} gespeichert. +% \begin{macrocode} +\newcommand*\@placeofbirth{} +\newrobustcmd*\placeofbirth[1]{\gdef\@placeofbirth{#1}} +% \end{macrocode} +% \end{field}^^A \@placeofbirth +% \end{macro}^^A \placeofbirth +% \begin{macro}{\publisher} +% \begin{field}{\@publisher} +% \changes{v2.02}{2014/07/25}{entfernt}%^^A +% Kleine Korrektur für \KOMAScript, der Befehl sollte im Singular stehen. +% \begin{macrocode} +\providecommand*\publisher[1]{\publishers{#1}} +% \end{macrocode} +% \end{field}^^A \@publisher +% \end{macro}^^A \publisher +% \begin{macro}{\confirmationclosing} +% \begin{field}{\@confirmationclosing} +% \changes{v2.02}{2014/07/25}{\cs{@@date} mit \cs{@date} ersetzt}%^^A +% Als Abschluss der Selbstständigkeitserklärung für Ort und Unterschrift. +% \begin{macrocode} +\newcommand*\@confirmationclosing{% + \medskip% + \noindent\@place, \@date% + \\[20mm plus 10mm minus 10mm]% + \begingroup% + \let\and\hfil% + \let\thanks\@gobble% + \let\footnote\@gobble% + \@author% + \hfil% + \endgroup% +} +\newcommand*\confirmationclosing[1]{\gdef\@confirmationclosing{#1}} +% \end{macrocode} +% \end{field}^^A \@confirmationclosing +% \end{macro}^^A \confirmationclosing +% \begin{macro}{\place} +% \begin{field}{\@place} +% Die Angabe des Ortes mit \cs{place} für die Selbstständigkeitserklärung wird +% im Makro \cs{@place} gespeichert und standardmäßig mit \enquote{Dresden} +% gesetzt. +% \begin{macrocode} +\newcommand*\@place{Dresden} +\newcommand*\place[1]{\gdef\@place{#1}} +% \end{macrocode} +% \end{field}^^A \@place +% \end{macro}^^A \place +% +% \iffalse +%</class> +%<*supervisor> +% \fi +% +% \begin{macro}{\course} +% \begin{field}{\@course} +% Studiengang für den Kopf der Aufgabenstellung, wird im Makro \cs{@course} +% gespeichert. +% \begin{macrocode} +\newcommand*\@course{} +\newrobustcmd*\course[1]{\gdef\@course{#1}} +% \end{macrocode} +% \end{field}^^A \@course +% \end{macro}^^A \course +% \begin{macro}{\discipline} +% \changes{v2.02}{2014/05/16}{neu, von \cs{branch} umbenannt}%^^A +% \begin{field}{\@discipline} +% \changes{v2.02}{2014/05/16}{neu, von \cs{@branch} umbenannt}%^^A +% Studienrichtung bzw. Fachrichtung für den Kopf der Aufgabenstellung, wird +% im Makro \cs{@discipline} gespeichert. +% \begin{macrocode} +\newcommand*\@discipline{} +\newrobustcmd*\discipline[1]{\gdef\@discipline{#1}} +% \end{macrocode} +% \end{field}^^A \@discipline +% \end{macro}^^A \discipline +% \begin{macro}{\chairman} +% \begin{field}{\@chairman} +% Angabe des Prüfungsausschussvorsitzenden für die Aufgabenstellung, wird im +% Makro \cs{@chairman} gespeichert. +% \begin{macrocode} +\newcommand*\@chairman{} +\newcommand*\chairman[1]{\gdef\@chairman{#1}} +% \end{macrocode} +% \end{field}^^A \@chairman +% \end{macro}^^A \chairman +% \begin{macro}{\contactperson} +% \changes{v2.02}{2014/05/16}{neu, \cs{contact} umbenannt}%^^A +% \begin{field}{\@contactperson} +% \changes{v2.02}{2014/05/16}{neu, \cs{@contact} umbenannt}%^^A +% \begin{macro}{\office} +% \begin{field}{\@office} +% \begin{macro}{\telephone} +% \changes{v2.02}{2014/05/16}{neu, \cs{phone} umbenannt}%^^A +% \begin{field}{\@telephone} +% \changes{v2.02}{2014/05/16}{neu, \cs{@phone} umbenannt}%^^A +% \begin{macro}{\emailaddress} +% \changes{v2.02}{2014/05/16}{neu, \cs{email} umbenannt}%^^A +% \begin{field}{\@emailaddress} +% \changes{v2.02}{2014/05/16}{neu, \cs{@email} umbenannt}%^^A +% Für einen Aushang kann eine oder mehrere Kontaktpersonen angegeben werden. +% Zusätzlich kann für jede einzelne Person ein Raum, eine Telefonnummer und die +% E-Mail"=Adresse hinzugefügt werden. +% \begin{macrocode} +\newcommand*\@contactperson{} +\newcommand*\contactperson[1]{\gdef\@contactperson{#1}} +\newcommand*\@office{} +\newrobustcmd*\office[1]{\gdef\@office{#1}} +\newcommand*\@telephone{} +\newrobustcmd*\telephone[1]{\gdef\@telephone{#1}} +\newcommand*\@emailaddress{} +\newrobustcmd*\emailaddress[1]{\gdef\@emailaddress{#1}} +\AfterPackage*{hyperref}{% + \renewrobustcmd*\emailaddress[1]{% + \gdef\@emailaddress{\href{mailto:#1}{\nolinkurl{#1}}}% + }% +} +% \end{macrocode} +% \end{field}^^A \@emailaddress +% \end{macro}^^A \emailaddress +% \end{field}^^A \@telephone +% \end{macro}^^A \telephone +% \end{field}^^A \@office +% \end{macro}^^A \office +% \end{field}^^A \@contactperson +% \end{macro}^^A \contactperson +% \begin{macro}{\grade} +% \begin{field}{\@grade} +% \begin{field}{\@headline} +% Die Befehle dienen zum Abspeichern der entsprechenden Parameter innerhalb +% der neu definierten Umgebungen aus dem Paket \pkg{tudscrsupervisor}. +% \begin{macrocode} +\newcommand*\@grade{} +\newcommand*\grade[1]{\gdef\@grade{#1}} +\newcommand*\@headline{} +% \end{macrocode} +% \end{field}^^A \@headline +% \end{field}^^A \@grade +% \end{macro}^^A \grade +% +% \iffalse +%</supervisor> +%<*class> +% \fi +% +% \subsection{Datumsfelder} +% +% \begin{macro}{\printdate} +% Im Folgenden werden mehrere Datumsfelder definiert. Damit diese optional +% durch das \pkg{isodate}-Paket formatiert werden können, wird der zu +% diesem Paket gehörende Befehl \cs{printdate} in die Definition der +% eigentlichen Datumsfelder integriert. Sollte das \pkg{isodate}-Paket nicht +% geladen werden, so muss dieser Befehl trotzdem definiert sein. +% \begin{macrocode} +\newcommand*\printdate[1]{#1} +\BeforePackage{isodate}{\undef\printdate} +% \end{macrocode} +% \end{macro}^^A \printdate +% \begin{macro}{\tud@printdate} +% Damit die Datumsfelder definiert werden können und das \pkg{isodate}-Paket +% unterstützen, muss beim Festlegen der Datumsfelder einiges beachtet werden. +% So müssen beispielsweise leere Argumente und Sonderfälle separat betrachtet +% werden. Damit dies einheitlich für alle Felder geschehen kann, wird dieser +% Befehl genutzt. Dabei wird als erstes Argument der Befehlsname für das +% Datumsfeld übergeben, als zweites Argument der gewünschte Inhalt. +% \begin{macrocode} +\newcommand*\tud@printdate[2]{% + \ifx\today#2% + \gdef#1{#2}% + \else% + \ifxblank{#2}% + {\gdef#1{}}% + {\gdef#1{\printdate{#2}}}% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@printdate +% \begin{macro}{\date} +% \begin{field}{\@date} +% \begin{field}{\@@date} +% \changes{v2.02}{2014/07/25}{entfernt}%^^A +% \begin{field}{\@datemore} +% Das Abgabedatum der Arbeit für den Titel, wird im originalen Makro \cs{@date} +% gespeichert. Zusätzlich kann als optionales Argument eine Ergänzung angehängt +% werden~-- beispielsweise als Erklärung für eine verspätete Abgabe aufgrund +% einer offiziellen Verlängerung der Bearbeitungszeit~-- welche im Feld +% \cs{@datemore} gespeichert wird. Der originale Standardbefehl für das Datum +% \cs{date} wird erweitert, das Feld \cs{@@date} wurde entfernt. +% \begin{macrocode} +\newcommand*\@datemore{} +\renewcommand*\date[2][]{% + \gdef\@datemore{#1}% + \tud@printdate{\@date}{#2}% +} +% \end{macrocode} +% \end{field}^^A \@datemore +% \end{field}^^A \@@date +% \end{field}^^A \@date +% \end{macro}^^A \date +% \begin{macro}{\defensedate} +% \begin{field}{\@defensedate} +% Das Verteidigungsdatum erscheint auf dem Titel und wird in \cs{@defensedate} +% gespeichert. +% \begin{macrocode} +\newcommand*\@defensedate{} +\newcommand*\defensedate[1]{\tud@printdate{\@defensedate}{#1}} +% \end{macrocode} +% \end{field}^^A \@defensedate +% \end{macro}^^A \defensedate +% \begin{macro}{\dateofbirth} +% \begin{field}{\@dateofbirth} +% Angabe des Geburtstages für die Titelseite, wird im Makro \cs{@dateofbirth} +% gespeichert. +% \begin{macrocode} +\newcommand*\@dateofbirth{} +\newrobustcmd*\dateofbirth[1]{\tud@printdate{\@dateofbirth}{#1}} +% \end{macrocode} +% \end{field}^^A \@dateofbirth +% \end{macro}^^A \dateofbirth +% +% \iffalse +%</class> +%<*supervisor> +% \fi +% +% \begin{macro}{\issuedate} +% \begin{field}{\@issuedate} +% \begin{macro}{\startdate} +% Angabe des Anfangsdatums für die Aufgabenstellung, wird im Makro +% \cs{@issuedate} gespeichert, für \cs{issuedate} kann als Aliasbefehl auch +% \cs{startdate} genutzt werden. +% \begin{macrocode} +\newcommand*\@issuedate{} +\newcommand*\issuedate[1]{\tud@printdate{\@issuedate}{#1}} +\let\startdate\issuedate +% \end{macrocode} +% \end{macro}^^A \startdate +% \end{field}^^A \@issuedate +% \end{macro}^^A \issuedate +% \begin{macro}{\duedate} +% \begin{field}{\@duedate} +% \begin{macro}{\finaldate} +% \begin{macro}{\maturitydate} +% Angabe des geplanten Abgabedatums für die Aufgabenstellung, wird im Makro +% \cs{@duedate} gespeichert, für \cs{duedate} kann als Aliasbefehl auch +% \cs{finaldate} oder \cs{maturitydate} genutzt werden. +% \begin{macrocode} +\newcommand*\@duedate{} +\newcommand*\duedate[1]{\tud@printdate{\@duedate}{#1}} +\newcommand*\finaldate{} +\newcommand*\maturitydate{} +\let\finaldate\duedate +\let\maturitydate\duedate +% \end{macrocode} +% \end{macro}^^A \maturitydate +% \end{macro}^^A \finaldate +% \end{field}^^A \@duedate +% \end{macro}^^A \duedate +% +% \iffalse +%</supervisor> +% \fi +% +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr-fonts.dtx b/Master/texmf-dist/source/latex/tudscr/tudscr-fonts.dtx new file mode 100644 index 00000000000..f3264e41b05 --- /dev/null +++ b/Master/texmf-dist/source/latex/tudscr/tudscr-fonts.dtx @@ -0,0 +1,1371 @@ +% \CheckSum{1099} +% \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-fonts.dtx +%<*driver> +\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi +\ProvidesFile{tudscr-fonts.dtx}[% + 2014/12/04 v2.02 TUD-KOMA-Script\space% +%</driver> +%<package&identify>\NeedsTeXFormat{LaTeX2e}[2011/06/27] +%<package&identify>\ProvidesPackage{tudscrfonts}[% +%<*driver|package&identify> +%!TUDVersion +%<package> package + (corporate design fonts)% +] +%</driver|package&identify> +%<*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-fonts.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 +% \changes{v2.02}{2014/07/08}{Verwendung \cs{FamilyKeyState}}%^^A +% \changes{v2.02}{2014/08/29}{Unterstützung für \pkg{fontspec}}%^^A +% \changes{v2.02}{2014/09/30}{Nutzung alter tud-Klassen ermöglicht}%^^A +% +% \section{Schriften des \CDs} +% +% Für das \CD der Technischen Universität Dresden werden die Schriften Univers +% und DIN"~Bold zwingend benötigt. Zur fehlerfreien Verwendung dieser Klassen +% sollten diese bitte installiert werden. Hier werden die \LaTeX-Befehle zur +% Verwendung der Schriften im Dokument definiert. Sollen nur kurze Passagen in +% einer anderen Schrift als der restliche Text gesetzt werden, so sollten +% anstatt der einfachen Schalter wie beispielsweise \cs{univ\dots} besser die +% Befehle \cs{text\dots}\marg{Auszeichnungstext} verwendet werden. +% +% \StopEventually{\PrintIndex\PrintChanges} +% +% \iffalse +%<*class&option> +% \fi +% +% \subsection{Verwendbarkeit des Paketes \pkg{tudscrfonts}} +% +% \begin{macrocode} +\PreventPackageFromLoading[% + \ClassWarning{\tudcls@name}{% + The package `tudscrfonts' must not be used with\MessageBreak% + a TUD-KOMA-Script class% + } +]{tudscrfonts} +% \end{macrocode} +% +% \iffalse +%</class&option> +%<*package&identify> +% \fi +% +% \subsection{Verwendung alter TUD-Klassen oder \TUDScript~v1.0} +% +% Das Paket kann genutzt werden, um alle möglichen veralteten Klassen mit den +% neuen Schriftfamilien zu verwenden. +% \begin{macro}{\if@tud@oldclass} +% \changes{v2.02}{2014/08/29}{neu}%^^A +% \begin{macro}{\if@tud@oldscrclass} +% \changes{v2.02}{2014/08/29}{neu}%^^A +% \begin{macrocode} +\newif\if@tud@oldclass +\newif\if@tud@oldscrclass +% \end{macrocode} +% Wenn eine der alten Klassen aus den Vorlagen von Klaus Bergmann geladen +% wurde, wird dies für spätere Anpassungen registriert. +% \begin{macrocode} +\@ifclassloaded{tudbook}{\@tud@oldclasstrue}{}% +\@ifclassloaded{tudbeamer}{\@tud@oldclasstrue}{}% +\@ifclassloaded{tudfax}{\@tud@oldclasstrue}{}% +\@ifclassloaded{tudform}{\@tud@oldclasstrue}{}% +\@ifclassloaded{tudhaus}{\@tud@oldclasstrue}{}% +\@ifclassloaded{tudletter}{\@tud@oldclasstrue}{}% +% \end{macrocode} +% Soll das Paket \pkg{tudscrfonts} mit den \TUDScript-Klassen der Version~v1.0 +% genutzt werden, muss Sorge dafür getragen werden, dass einige veraltete +% Befehle aktualisiert werden. Hierfür müssen diese \enquote{unschädlich} +% gemacht werden, noch bevor das Paket selbst in Erscheinung tritt. +% \begin{macrocode} +\@ifclassloaded{tudscrbookold}{\@tud@oldscrclasstrue}{}% +\@ifclassloaded{tudscrreprtold}{\@tud@oldscrclasstrue}{}% +\@ifclassloaded{tudscrartclold}{\@tud@oldscrclasstrue}{}% +\if@tud@oldscrclass + \let\TUDoptions\relax + \let\TUDoption\relax + \let\univln\relax + \let\univrn\relax + \let\univbn\relax + \let\univxn\relax + \let\univls\relax + \let\univrs\relax + \let\univbs\relax + \let\univxs\relax + \let\dinbn\relax +\fi +% \end{macrocode} +% \end{macro}^^A if@tud@oldscrclass +% \end{macro}^^A if@tud@oldclass +% \iffalse +%</package&identify> +%<*(class|package)&option> +% \fi +% +% \subsection{Schriftauswahl im \TUDScript-Bundle} +% +% Das \TUDScript-Bundle unterstützt sowohl die Schriftauswahl im klassischen +% New Font Selection Scheme (NFSS) als auch das Einbinden der Schriften im +% OpenType"=Format aus dem System über das Paket \pkg{fontspec} für Lua\LaTeX +% bzw. Xe\LaTeX, wobei die letztere Variante nicht ideal ist. Zum einen +% funktioniert das Kerning nicht sonderlich gut und zum anderen sind keine +% Schriften für den mathematischen Satz vorhanden. Da die skriptbasierte +% Installation der PostScript"=Schriften gut funktioniert, ist diese Variante +% zu bevorzugen. Trotzdem werden beide Varianten, die Schriftfamilie des \CDs +% für den Fließtext und die Überschriften zu verwenden, angeboten. +% \begin{option}{fontspec} +% \changes{v2.02}{2014/08/29}{neu}%^^A +% \begin{macro}{\if@tud@fontspec} +% \changes{v2.02}{2014/08/29}{neu}%^^A +% \begin{macro}{\if@tud@univers} +% \begin{macro}{\if@tud@dinbold} +% \changes{v2.02}{2014/08/29}{neu}%^^A +% \begin{macro}{\tud@univers} +% \begin{macro}{\tud@dinbold} +% \begin{macro}{\tud@mathenc} +% Mit der Option \opt{fontspec} kann die explizite Verwendung des Paketes +% \pkg{fontspec} aktiviert werden. Nur so ist eine vollständige Anpassung der +% Schriften an die Funktionalitäten des Paketes möglich. Zu Beginn werden +% Schalter und Hilfsmakros definiert. +% \begin{macrocode} +\newif\if@tud@univers +\newif\if@tud@dinbold +\newcommand*\tud@univers{lun} +\newcommand*\tud@dinbold{0m6} +\newcommand*\tud@mathenc{OT1} +% \end{macrocode} +% Hier kommt die eigentliche Option. +% \begin{macrocode} +\newif\if@tud@fontspec +\TUD@key@lock{fontspec}[true]{% + \TUD@set@ifkey@lock{fontspec}{@tud@fontspec}{#1}% +} +% \end{macrocode} +% Da dieser Prozess sehr tief in die Schriftauswahl eingreift und das Laden des +% Paketes die Schriftauswahl für das ganze Dokument verändert, wird diese +% Option nur beim Laden der Klasse zugelassen. +% \begin{macrocode} +%<*class> +\AtEndOfClass{% + \TUD@key{fontspec}[]{% + \ClassError{\tudcls@name}{Option `fontspec' too late}{% + Option `fontspec' can only be set while loading the\MessageBreak% + class `\tudcls@name' but you have tried to set it up later.% + }% + \FamilyKeyStateProcessed% + }% +%</class> +%<*package> +\AtEndOfPackage{% + \TUD@key{fontspec}[]{% + \PackageError{tudscrfonts}{Option `fontspec' too late}{% + Option `fontspec' can only be set while loading the\MessageBreak% + package `tudscrfonts' but you have tried to set it up later.% + }% + \FamilyKeyStateProcessed% + }% + \@ifpackageloaded{fontspec}{% + \PackageError{tudscrfonts}{Package `fontspec' too early}{% + When using the option `fontspec' you must not load\MessageBreak% + the package `fontspec' before `tudscrfonts'.% + }% + }{} +%</package> +} +% \end{macrocode} +% Anschließend erfolgt die Verarbeitung der Option am Ende der Klasse. Zu +% allererst wird die Kodierung der Mathematikschriften für den weiteren Verlauf +% festgelegt. Da es so gut wie keine freien OpenType"=Schriften für den +% mathmatischen Formelsatz gibt, werden unabhängig vom Status der Option +% \opt{fontspec} \emph{immer} die PostScript"=Schriften verwendet, falls diese +% installiert sind. Dabei wird die Kodierung der Mathematikschriften abhängig +% von der Eingabekodierung gewählt. +% \begin{macrocode} +\AtEndPreamble{% + \@expandtwoargs\in@{OT}{\encodingdefault}% + \ifin@% + \def\tud@mathenc{OT1}% + \else% + \def\tud@mathenc{T1}% + \fi% +% \end{macrocode} +% Nun wird überprüft, ob die PostScript"=Schriften installiert sind. Wird das +% Paket \pkg{fontspec} verwendet, werden diese nur für die Mathematikschriften +% verwendet. Sollte diese nicht vorhanden sein, wird eine Warnung ausgegeben. +% Ist die Option nicht aktiviert, wird beim Nichtvorhandensein der Schriften +% eine Warnung ausgegeben und eine Rückfallebene definiert. +% \begin{macrocode} + \if@tud@fontspec% + \edef\@tempa{% + \lowercase{\noexpand\InputIfFileExists{\tud@mathenc\tud@univers.fd}}% + }% + \def\@tempb#1{% +%<*class> + \ClassInfoNoLine{\tudcls@name}{% +%</class> +%<*package> + \PackageInfoNoLine{tudscrfonts}{% +%</package> + `#1' fonts not found for math typesetting% + }% + }% + \else% + \edef\@tempa{% + \lowercase{\noexpand\InputIfFileExists{\encodingdefault\tud@univers.fd}}% + }% + \def\@tempb#1{% +%<*class> + \ClassWarningNoLine{\tudcls@name}{% +%</class> +%<*package> + \PackageWarningNoLine{tudscrfonts}{% +%</package> + `#1' fonts not found. Please use on of the\MessageBreak% + installation scripts out of the tudscr-bundle,\MessageBreak% + which suits to your OS. A fallback layout is used% + }% + }% + \fi% + \@tempa{\@tud@universtrue}{\@tempb{Univers}}% +% \end{macrocode} +% Ebenso wie bei der Univers"=Schriftfamilie wird auch bei DIN~Bold verfahren. +% \begin{macrocode} + \if@tud@fontspec% + \edef\@tempa{% + \lowercase{\noexpand\InputIfFileExists{\tud@mathenc\tud@dinbold.fd}}% + }% + \else% + \edef\@tempa{% + \lowercase{\noexpand\InputIfFileExists{\encodingdefault\tud@dinbold.fd}}% + }% + \fi% + \@tempa{\@tud@dinboldtrue}{\@tempb{DIN Bold}}% +% \end{macrocode} +% Nachdem auf die Schriften geprüft wurde, kommt nun die Umsetzung der Option. +% Sollten die PostScript"=Schriften installiert sein, wird \pkg{fontspec} darin +% gehindert, die Mathematikschriften von sich aus anzupassen. +% \begin{macrocode} + \if@tud@fontspec% + \if@tud@univers\if@tud@dinbold% + \PassOptionsToPackage{no-math}{fontspec}% + \fi\fi% + \RequirePackage{fontspec}[2014/06/21]% + \fi% +% \end{macrocode} +% Damit ist die Verarbeitung der Option \opt{fontspec} abgeschlossen. +% \begin{macrocode} +} +% \end{macrocode} +% \end{macro}^^A \tud@mathenc +% \end{macro}^^A \tud@dinbold +% \end{macro}^^A \tud@univers +% \end{macro}^^A if@tud@dinbold +% \end{macro}^^A if@tud@univers +% \end{macro}^^A \if@tud@fontspec +% \end{option}^^A fontspec +% +% \iffalse +%</(class|package)&option> +%<*(class|package)&body> +% \fi +% +% \begin{macro}{\univln} +% \begin{macro}{\univrn} +% \begin{macro}{\univbn} +% \begin{macro}{\univxn} +% \begin{macro}{\univls} +% \begin{macro}{\univrs} +% \begin{macro}{\univbs} +% \begin{macro}{\univxs} +% Sollte die Univers installiert sein, werden mehrere Schalter zur expliziten +% Auswahl für die Schriftschnitte Univers~45~Light, Univers~55~Regular, +% Univers~65~Bold, Univers~75~Black, Univers~45~Light~Oblique, +% Univers~55~Regular~Oblique, Univers~65~Bold~Oblique sowie +% Univers~75~Black~Oblique definiert. Diese können so im Dokument unabhängig +% von der Option \opt{cdfont} genutzt werden +% \begin{macrocode} +\AtEndPreamble{% +% \end{macrocode} +% Dies geschieht abhängig von der Option \opt{fontspec}. +% \begin{macrocode} + \if@tud@fontspec% +% \end{macrocode} +% Für die ersten drei Schriften werden hierfür feste NFSS-Namen vergeben, um +% diese beim Setzen des Kopfes im \CD der \TnUD explizit auswählen zu können. +% \begin{macrocode} + \newfontface\univln[NFSSFamily=UniversLight]{Univers Light}% + \newfontface\univrn[NFSSFamily=UniversRegular]{Univers}% + \newfontface\univbn[NFSSFamily=UniversBold]{Univers Bold}% + \newfontface\univxn[NFSSFamily=UniversBlack]{Univers Black}% + \newfontface\univls[NFSSFamily=UniversLightOblique]{Univers Light Oblique}% + \newfontface\univrs[NFSSFamily=UniversRegularOblique]{Univers Oblique}% + \newfontface\univbs[NFSSFamily=UniversBoldOblique]{Univers Bold Oblique}% + \newfontface\univxs[NFSSFamily=UniversBlackOblique]{Univers Black Oblique}% + \newcommand*\textuln[1]{{\univln#1}} + \newcommand*\texturn[1]{{\univrn#1}} + \newcommand*\textubn[1]{{\univbn#1}} + \newcommand*\textuxn[1]{{\univxn#1}} + \newcommand*\textuls[1]{{\univls#1}} + \newcommand*\texturs[1]{{\univrs#1}} + \newcommand*\textubs[1]{{\univbs#1}} + \newcommand*\textuxs[1]{{\univxs#1}} +% \end{macrocode} +% Falls \opt{fontspec} nicht aktiv ist, werden die Schriften klassisch nach dem +% NFSS definiert. +% \begin{macrocode} + \else% + \if@tud@univers% + \newcommand*\univln{\usefont{\encodingdefault}{\tud@univers}{l}{n}}% + \newcommand*\univrn{\usefont{\encodingdefault}{\tud@univers}{m}{n}}% + \newcommand*\univbn{\usefont{\encodingdefault}{\tud@univers}{b}{n}}% + \newcommand*\univxn{\usefont{\encodingdefault}{\tud@univers}{eb}{n}}% + \newcommand*\univls{\usefont{\encodingdefault}{\tud@univers}{l}{sl}}% + \newcommand*\univrs{\usefont{\encodingdefault}{\tud@univers}{m}{sl}}% + \newcommand*\univbs{\usefont{\encodingdefault}{\tud@univers}{b}{sl}}% + \newcommand*\univxs{\usefont{\encodingdefault}{\tud@univers}{eb}{sl}}% +% \end{macrocode} +% Ansonsten werden die Schalter für die Rückfallebene so definert, dass diese +% einfach nichts machen. +% \begin{macrocode} + \else% + \newcommand*\univln{}% + \newcommand*\univrn{}% + \newcommand*\univbn{}% + \newcommand*\univxn{}% + \newcommand*\univls{}% + \newcommand*\univrs{}% + \newcommand*\univbs{}% + \newcommand*\univxs{}% + \fi% +% \end{macrocode} +% \end{macro}^^A \univxs +% \end{macro}^^A \univbs +% \end{macro}^^A \univrs +% \end{macro}^^A \univls +% \end{macro}^^A \univxn +% \end{macro}^^A \univbn +% \end{macro}^^A \univrn +% \end{macro}^^A \univln +% \begin{macro}{\textuln} +% \begin{macro}{\texturn} +% \begin{macro}{\textubn} +% \begin{macro}{\textuxn} +% \begin{macro}{\textuls} +% \begin{macro}{\texturs} +% \begin{macro}{\textubs} +% \begin{macro}{\textuxs} +% Außerdem werden für die Schriften noch die entsprechenden Textauswahlbefehle +% bereitgestellt. +% \begin{macrocode} + \newcommand*\textuln{}% + \newcommand*\texturn{}% + \newcommand*\textubn{}% + \newcommand*\textuxn{}% + \newcommand*\textuls{}% + \newcommand*\texturs{}% + \newcommand*\textubs{}% + \newcommand*\textuxs{}% + \DeclareTextFontCommand{\textuln}{\univln}% + \DeclareTextFontCommand{\texturn}{\univrn}% + \DeclareTextFontCommand{\textubn}{\univbn}% + \DeclareTextFontCommand{\textuxn}{\univxn}% + \DeclareTextFontCommand{\textuls}{\univls}% + \DeclareTextFontCommand{\texturs}{\univrs}% + \DeclareTextFontCommand{\textubs}{\univbs}% + \DeclareTextFontCommand{\textuxs}{\univxs}% + \fi% +% \end{macrocode} +% \end{macro}^^A \textuxs +% \end{macro}^^A \textubs +% \end{macro}^^A \texturs +% \end{macro}^^A \textuls +% \end{macro}^^A \textuxn +% \end{macro}^^A \textubn +% \end{macro}^^A \texturn +% \end{macro}^^A \textuln +% \begin{macro}{\dinbn} +% \begin{macro}{\textdbn} +% Schalter bzw. Befehl für die Auszeichnung in DIN~Bold. Bei der Schriftauswahl +% wird neben dieser noch die entsprechende Mathematikschrift aktiviert. Auch +% hier geschieht dies abhängig von der Option \opt{fontspec}. +% \begin{macrocode} +%<*package> + \ifdef{\sectfont}{}{\let\sectfont\relax}% +%</package> + \if@tud@fontspec% + \newfontface\@dinbn{DIN Bold}[BoldFont = DIN Bold]% + \newcommand*\dinbn{\@dinbn\if@tud@dinbold\mathversion{dinbold}\fi}% + \newcommand*\textdbn[1]{{\dinbn#1}} + \else% + \if@tud@dinbold% + \newcommand*\dinbn{% + \usefont{\encodingdefault}{\tud@dinbold}{b}{n}% + \mathversion{dinbold}% + }% + \else% + \let\dinbn\sectfont% + \fi% + \newcommand*\textdbn{}% + \DeclareTextFontCommand{\textdbn}{\dinbn} + \fi% +% \end{macrocode} +% \end{macro}^^A \textdbn +% \end{macro}^^A \dinbn +% \begin{macro}{\mv@univers} +% \begin{macro}{\mv@universbold} +% Für die Mathematikschriften im FLießtext werden für die lateineischen Lettern +% die Univers"=Schriften des \CDs verwendet. Darin enthalten sind die auch die +% griechischen Buchstaben aus dem Paket \pkg{cmbright}. Zusätzlich werden aus +% dem \pkg{iwona}"~Paket die mathematische Symbole verwendet. Es werden zwei +% Mathematikversion mit normalen sowie mit fetten Glyphen bereitgestellt. +% \begin{macrocode} + \DeclareMathVersion{univers} + \DeclareMathVersion{universbold} + \SetSymbolFont{operators}{univers}{OT1}{\tud@univers}{l}{n} + \SetSymbolFont{letters}{univers}{OML}{\tud@univers}{l}{sl} + \SetSymbolFont{symbols}{univers}{OMS}{\tud@univers}{l}{n} + \SetSymbolFont{largesymbols}{univers}{OMX}{iwona}{m}{n} + \SetSymbolFont{operators}{universbold}{OT1}{\tud@univers}{b}{n} + \SetSymbolFont{letters}{universbold}{OML}{\tud@univers}{b}{sl} + \SetSymbolFont{symbols}{universbold}{OMS}{\tud@univers}{b}{n} + \SetSymbolFont{largesymbols}{universbold}{OMX}{iwona}{b}{n} + \SetMathAlphabet{\mathbf}{univers}{\tud@mathenc}{\tud@univers}{b}{n} + \SetMathAlphabet{\mathsf}{univers}{\tud@mathenc}{\tud@univers}{l}{n} + \SetMathAlphabet{\mathit}{univers}{\tud@mathenc}{\tud@univers}{l}{sl} + \SetMathAlphabet{\mathtt}{univers}{\tud@mathenc}{\tud@univers t}{l}{n} + \SetMathAlphabet{\mathbf}{universbold}{\tud@mathenc}{\tud@univers}{eb}{n} + \SetMathAlphabet{\mathsf}{universbold}{\tud@mathenc}{\tud@univers}{b}{n} + \SetMathAlphabet{\mathit}{universbold}{\tud@mathenc}{\tud@univers}{b}{sl} + \SetMathAlphabet{\mathtt}{universbold}{\tud@mathenc}{\tud@univers t}{b}{n} +% \end{macrocode} +% \end{macro}^^A \mv@universbold +% \end{macro}^^A \mv@univers +% \begin{macro}{\mv@dinbold} +% \changes{v2.02}{2014/06/27}{Symbole \val{symbols} werden aus Schriftart +% DIN~Bold verwendet}%^^A +% Auch für die Schrift DIN~Bold werden mathematische Glyphen bereitgestellt. +% Diese wurden aus dem \pkg{iwona}"=Paket entnommen. Auch die verwendeten +% Symbole stammen aus diesem Paket. +% \begin{macrocode} + \DeclareMathVersion{dinbold} + \SetSymbolFont{operators}{dinbold}{\tud@mathenc}{\tud@dinbold}{b}{n} + \SetSymbolFont{letters}{dinbold}{OML}{\tud@dinbold}{b}{sl} + \SetSymbolFont{symbols}{dinbold}{OMS}{\tud@dinbold}{b}{n} + \SetSymbolFont{largesymbols}{dinbold}{OMX}{iwona}{ebc}{n} + \SetMathAlphabet{\mathbf}{dinbold}{\tud@mathenc}{\tud@dinbold}{b}{n} + \SetMathAlphabet{\mathsf}{dinbold}{\tud@mathenc}{\tud@dinbold}{b}{n} + \SetMathAlphabet{\mathit}{dinbold}{\tud@mathenc}{\tud@dinbold}{b}{sl} +% \end{macrocode} +% \end{macro}^^A \mv@dinbold +% \begin{macro}{\upGamma} +% \begin{macro}{\upDelta} +% \begin{macro}{\upTheta} +% \begin{macro}{\upLambda} +% \begin{macro}{\upXi} +% \begin{macro}{\upPi} +% \begin{macro}{\upSigma} +% \begin{macro}{\upUpsilon} +% \begin{macro}{\upPhi} +% \begin{macro}{\upPsi} +% \begin{macro}{\upOmega} +% \begin{macro}{\varGamma} +% \begin{macro}{\varDelta} +% \begin{macro}{\varTheta} +% \begin{macro}{\varLambda} +% \begin{macro}{\varXi} +% \begin{macro}{\varPi} +% \begin{macro}{\varSigma} +% \begin{macro}{\varUpsilon} +% \begin{macro}{\varPhi} +% \begin{macro}{\varPsi} +% \begin{macro}{\varOmega} +% In Anlehnung an verschiedene Pakete für Mathematikschriften werden die +% Symbole für aufrechte und kursive Majuskeln der griechischen Lettern separat +% definiert. +% \begin{macrocode} + \DeclareMathSymbol{\upDelta}{\mathalpha}{operators}{1} + \DeclareMathSymbol{\upOmega}{\mathalpha}{operators}{10} + \DeclareMathSymbol{\upGamma}{\mathalpha}{operators}{0} + \DeclareMathSymbol{\upDelta}{\mathalpha}{operators}{1} + \DeclareMathSymbol{\upTheta}{\mathalpha}{operators}{2} + \DeclareMathSymbol{\upLambda}{\mathalpha}{operators}{3} + \DeclareMathSymbol{\upXi}{\mathalpha}{operators}{4} + \DeclareMathSymbol{\upPi}{\mathalpha}{operators}{5} + \DeclareMathSymbol{\upSigma}{\mathalpha}{operators}{6} + \DeclareMathSymbol{\upUpsilon}{\mathalpha}{operators}{7} + \DeclareMathSymbol{\upPhi}{\mathalpha}{operators}{8} + \DeclareMathSymbol{\upPsi}{\mathalpha}{operators}{9} + \DeclareMathSymbol{\upOmega}{\mathalpha}{operators}{10} + \DeclareMathSymbol{\varGamma}{\mathalpha}{letters}{0} + \DeclareMathSymbol{\varDelta}{\mathalpha}{letters}{1} + \DeclareMathSymbol{\varTheta}{\mathalpha}{letters}{2} + \DeclareMathSymbol{\varLambda}{\mathalpha}{letters}{3} + \DeclareMathSymbol{\varXi}{\mathalpha}{letters}{4} + \DeclareMathSymbol{\varPi}{\mathalpha}{letters}{5} + \DeclareMathSymbol{\varSigma}{\mathalpha}{letters}{6} + \DeclareMathSymbol{\varUpsilon}{\mathalpha}{letters}{7} + \DeclareMathSymbol{\varPhi}{\mathalpha}{letters}{8} + \DeclareMathSymbol{\varPsi}{\mathalpha}{letters}{9} + \DeclareMathSymbol{\varOmega}{\mathalpha}{letters}{10} +} +% \end{macrocode} +% \end{macro}^^A \varOmega +% \end{macro}^^A \varPsi +% \end{macro}^^A \varPhi +% \end{macro}^^A \varUpsilon +% \end{macro}^^A \varSigma +% \end{macro}^^A \varPi +% \end{macro}^^A \varXi +% \end{macro}^^A \varLambda +% \end{macro}^^A \varTheta +% \end{macro}^^A \varDelta +% \end{macro}^^A \varGamma +% \end{macro}^^A \upOmega +% \end{macro}^^A \upPsi +% \end{macro}^^A \upPhi +% \end{macro}^^A \upUpsilon +% \end{macro}^^A \upSigma +% \end{macro}^^A \upPi +% \end{macro}^^A \upXi +% \end{macro}^^A \upLambda +% \end{macro}^^A \upTheta +% \end{macro}^^A \upDelta +% \end{macro}^^A \upGamma +% +% \iffalse +%</(class|package)&body> +%<*(class|package)&option> +% \fi +% +% Für das Setzen der Überschriften in Majuskeln\footnote{Großbuchstaben} mit +% \cs{MakeTextUppercase}, was den internen \LaTeX-Befehl \cs{MakeUppercase} +% verbessert, wird das Paket \pkg{textcase} genutzt. Damit Fußnoten nicht +% automatisch in Majuskeln gesetzt werden, wird außerdem der interne Befehl +% \cs{@uclcnotmath} aus diesem Paket angepasst. +% \changes{v2.02}{2014/06/27}{Ignorieren von Fußnoten im Befehl +% \cs{MakeTextUppercase}}%^^A +% \begin{macrocode} +\RequirePackage{textcase}[2004/10/07] +\patchcmd{\@uclcnotmath}{\@nonchangecase\ensuremath}{% + \@nonchangecase\ensuremath% + \def\footnote##1##{\toks@{\noexpand\footnote##1}\@footnote}% + \def\@footnote##1{\NoCaseChange{\the\toks@{##1}}}% +}{}{\tud@patch@wrn{@uclcnotmath}}% +% \end{macrocode} +% \begin{option}{cdfont} +% \changes{v2.02}{2014/07/08}{Schlüsselwerte für \opt{barfont}}%^^A +% \changes{v2.02}{2014/08/29}{Schlüsselwerte für \opt{fontspec}}%^^A +% \begin{macro}{\tud@cdfont} +% Mit dieser Option wird die zentrale Benutzerschnittstelle für alle möglichen +% Schrifteinstellungen innerhalb Dokumentes geschaffen. Durch diese Option +% können sowohl die verwendete Schrift für den Fließtext, als auch die Stärke +% der Schrift geändert werden. Zusätzlich lässt sich die Verwendung von +% DIN~Bold für die Überschriften deaktivieren. Außerdem kann eingestellt +% werden, ob für den Mathematiksatz serifenlose Schriften zum Einsatz kommen +% sollen. +% \begin{macrocode} +\newcommand*\tud@cdfont{0} +\TUD@key{cdfont}[true]{% + \TUD@set@numkey{cdfont}{tud@cdfont}{% + \TUD@numkey@bool,% + {light}{1},{lightfont}{1},{lite}{1},{litefont}{1},{noheavyfont}{1},% + {heavy}{2},{heavyfont}{2},% + {nodin}{3},{nodinbold}{3},{noDIN}{3},{noDINBold}{3},% + {din}{4},{dinbold}{4},{DIN}{4},{DINBold}{4},% +%<*class> + {barfont}{5},{litebar}{5},{barlite}{5},{lightbar}{5},{barlight}{5},% + {barfontlite}{5},{litebarfont}{5},{barfontlight}{5},{lightbarfont}{5},% + {noheavybarfont}{5},{barfontnoheavy}{5},% + {heavybar}{6},{barheavy}{6},{barfontheavy}{6},{heavybarfont}{6},% +%</class> + {serifmath}{7},{serif}{7},{nosansmath}{7},{nosans}{7},% + {sansmath}{8},{sans}{8},% + {upgreek}{9},{uprightgreek}{9},{uprightGreek}{9},% + {slgreek}{10},{slantedgreek}{10},{slantedGreek}{10},% + {fontspec}{11},{luatex}{11},{lualatex}{11}{xetex}{11},{xelatex}{11},% + {nofontspec}{12},{pdftex}{12},{pdflatex}{12}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \ifcase \tud@cdfont\relax% + \TUDoptions{cdfonts=false}% +%<*class> + \TUD@std@numkey@lock{barfont}{false}% +%</class> + \or% + \TUDoptions{cdfonts=true}% + \TUDoptions{heavyfont=false}% +%<*class> + \TUD@std@numkey@lock{barfont}{true}% +%</class> + \or% + \TUDoptions{cdfonts=true}% + \TUDoptions{heavyfont=true}% +%<*class> + \TUD@std@numkey@lock{barfont}{heavy}% +%</class> + \or% + \TUDoptions{din=false}% + \or% + \TUDoptions{din=true}% + \or% +%<*class> + \TUDoptions{barfont=true}% +%</class> + \or% +%<*class> + \TUDoptions{barfont=heavy}% +%</class> + \or% + \TUDoptions{sansmath=false}% + \or% + \TUDoptions{sansmath=true}% + \or% + \TUDoptions{slantedgreek=false}% + \or% + \TUDoptions{slantedgreek=true}% + \or% + \TUDoptions{fontspec=true}% + \or% + \TUDoptions{fontspec=false}% + \fi% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@cdfont +% \end{option}^^A cdfont +% \begin{option}{cdfonts} +% \begin{macro}{\if@tud@cdfonts} +% Diese Option dient zum Umschalten auf die Schriften des \CDs für den +% Fließtext. +% \begin{macrocode} +\newif\if@tud@cdfonts +\TUD@key{cdfonts}[true]{% + \TUD@set@ifkey{cdfonts}{@tud@cdfonts}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% +% \end{macrocode} +% Wird die Option innerhalb nach der Präambel angewendet, erfolgt die Umsetzung +% sofort. Ist die Verwendung der Schriften des \CDs gewünscht, werden diese mit +% \cs{tud@font@cdfonts} aktiviert. +% \begin{macrocode} + \if@tud@cdfonts% + \if@atdocument\tud@font@cdfonts\fi% +% \end{macrocode} +% Die Mathematikschriften werden bei der Verwendung der Schriften des \CDs~-- +% falls nicht anders durch den Anwender definiert~-- auf Serifenlose gesetzt. +% \begin{macrocode} + \TUD@std@ifkey@lock{sansmath}{true}% + \TUD@std@ifkey@lock{slantedgreek}{true}% +% \end{macrocode} +% Werden die Schriften des \CDs deaktiviert, wird auf die zu Dokumentbeginn +% gesicherten Schriften\footnote{mit und ohne Serifen} zurückgeschaltet. +% \begin{macrocode} + \else% + \if@atdocument% + \tud@cmd@restore{rmdefault}% + \tud@cmd@restore{sfdefault}% + \tud@cmd@restore{ttdefault}% + \tud@cmd@restore{bfdefault}% + \tud@cmd@restore{mddefault}% + \tud@cmd@restore{itdefault}% + \tud@cmd@restore{familydefault}% + \tud@cmd@restore{seriesdefault}% + \tud@cmd@restore{shapedefault}% + \normalfont\selectfont% + \fi% +% \end{macrocode} +% Die Mathematikschriften werden auf ihr Stanardverhalten zurückgesetzt. +% \begin{macrocode} + \TUD@std@ifkey@lock{sansmath}{false}% + \TUD@std@ifkey@lock{slantedgreek}{false}% + \fi% +% \end{macrocode} +% Da der Befehl \cs{tud@layout@process} auf jeden Fall mit \cs{AfterEndPreamble} +% verzögert ausgeführt wird, muss dies bei der Wahl der Option nur nach der +% Präambel, also im Dokument selbst neuerlich erfolgen. +% \begin{macrocode} +%<*class> + \if@atdocument\tud@layout@process\fi% +%</class> + \fi% +} +% \end{macrocode} +% \end{macro}^^A \if@tud@cdfonts +% \end{option}^^A cdfonts +% +% \iffalse +%</(class|package)&option> +%<*(class|package)&body> +% \fi +% +% \begin{macro}{\tud@font@cdfonts} +% Mit diesem Befehl werden die Schriften des \CDs aktiviert. Dabei wird die +% Option \opt{fontspec} beachtet. +% \begin{macrocode} +\newcommand*\tud@font@cdfonts{% +% \end{macrocode} +% Schnitte der Schriften vorher vorher gesichert, um diese später vollständig +% wiederherstellen zu können.. +% \begin{macrocode} + \tud@cmd@store{rmdefault}% + \tud@cmd@store{sfdefault}% + \tud@cmd@store{ttdefault}% + \tud@cmd@store{bfdefault}% + \tud@cmd@store{mddefault}% + \tud@cmd@store{itdefault}% + \tud@cmd@store{familydefault}% + \tud@cmd@store{seriesdefault}% + \tud@cmd@store{shapedefault}% +% \end{macrocode} +% Danach erfolgt die Definition der Schriften des \CDs entweder mit dem Paket +% \pkg{fontspec} oder\dots +% \begin{macrocode} + \if@tud@fontspec% + \if@tud@heavyfont% + \setsansfont{Univers}[% + BoldFont = Univers Bold,% + ItalicFont = Univers Oblique,% + BoldItalicFont = Univers Bold Oblique,% + ]% + \setmonofont{LMMono10-Regular}[% + BoldFont = LMMonoLt10-Bold,% + ItalicFont = LMMonoSlant10-Regular,% + BoldItalicFont = LMMonoLt10-BoldOblique,% + ] + \else% + \setsansfont{Univers Light}[% + BoldFont = Univers,% + ItalicFont = Univers Light Oblique,% + BoldItalicFont = Univers Oblique,% + ]% + \setmonofont{LMMonoLt10-Regular}[% + BoldFont = LMMono10-Regular,% + ItalicFont = LMMonoLt10-Oblique,% + BoldItalicFont = LMMonoSlant10-Regular,% + ]% +% \end{macrocode} +% Für die alten Klassen von Klaus Bergmann sowie \TUDScript in der Version~v1.0 +% werden die fetten Schriften in einem stärkeren Schriftschnitt gesetzt. +% \begin{macrocode} +%<*package> + \ifboolexpr{bool {@tud@oldclass} or bool {@tud@oldscrclass}}{% + \setsansfont{Univers Light}[% + BoldFont = Univers Bold,% + ItalicFont = Univers Light Oblique,% + BoldItalicFont = Univers Bold Oblique,% + ]% + }{}% +%</package> + \fi% +% \end{macrocode} +% \dots nach dem NFSS. +% \begin{macrocode} + \else% + \if@tud@univers% + \renewcommand*\sfdefault{\tud@univers}% + \renewcommand*\ttdefault{\tud@univers t}% + \if@tud@heavyfont% + \renewcommand*\bfdefault{b}% + \renewcommand*\mddefault{m}% + \else% + \renewcommand*\bfdefault{m}% +% \end{macrocode} +% Bei den alten Klassen von Klaus Bergmann bzw. \TUDScript~v1.0 sind die fetten +% Schriften stärker. +% \begin{macrocode} +%<*package> + \ifboolexpr{bool {@tud@oldclass} or bool {@tud@oldscrclass}}{% + \renewcommand*\bfdefault{b}% + }{}% +%</package> + \renewcommand*\mddefault{l}% + \fi% + \fi% + \fi% + \renewcommand*\rmdefault{\sfdefault}% + \renewcommand*\familydefault{\sfdefault}% + \renewcommand*\seriesdefault{\mddefault}% + \renewcommand*\shapedefault{\updefault}% +% \end{macrocode} +% Zum Abschluss wird die gewählte Standardschrift aktiviert. +% \begin{macrocode} + \normalfont\selectfont% +} +% \end{macrocode} +% \end{macro}^^A \tud@font@cdfonts +% \begin{macro}{\tud@font@mathfonts} +% Mit diesem Befehl werden die Einstellungen für den Mathematiksatz übernommen. +% \begin{macrocode} +\newcommand*\tud@font@mathfonts{% + \if@tud@sansmath\tud@sansmath\else\tud@serifmath\fi% + \if@tud@slantedgreek\tud@greek@slanted\else\tud@greek@upright\fi% + \mathversion{normal}% +} +% \end{macrocode} +% \end{macro}^^A \tud@font@mathfonts +% \begin{macro}{\tud@sansmath} +% \begin{macro}{\tud@serifmath} +% Die Befehle werden von der Option \opt{sansmath} verwendet, um zwischen dem +% Standard"~ und neuem Mathematiksatz hin"~ und herschalten zu können. Dabei +% wird zum einen das Mapping der griechischen Glyphen geändert, zum anderen +% werden die originalen Mathematikversionen überschrieben beziehungsweise +% wiederhergestellt. +% \begin{macrocode} +\newcommand*\tud@sansmath{% + \if@tud@univers% + \tud@cmd@store{mv@normal}% + \tud@cmd@store{mv@bold}% + \let\mv@normal\mv@univers% + \let\mv@bold\mv@universbold% + \mathversion{normal}% + \fi% +} +\newcommand*\tud@serifmath{% + \if@tud@univers% + \tud@cmd@restore{mv@normal}% + \tud@cmd@restore{mv@bold}% + \mathversion{normal}% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@serifmath +% \end{macro}^^A \tud@sansmath +% \begin{macro}{\tud@greek@upGamma} +% \begin{macro}{\tud@greek@offset} +% Damit innerhalb des Dokumentes problemlos zwischen aufrechten und kursiven +% griechischen Buchstaben für den Mathematiksatz gewechselt werden kann, wurden +% die folgenden beiden Befehle definiert, welche vom Prinzip aus dem Paket +% \pkg{sansmath} abgekupfert sind. Es wird der Offset der Kodierung zwischen den +% kursiven und den aufrechten Glyphen in \cs{tud@greek@offset} gespeichert. +% \begin{macrocode} +\newcount\tud@greek@upGamma +\tud@greek@upGamma\Gamma +\newcount\tud@greek@offset +\let\@tempa\relax +\DeclareMathSymbol{\@tempa}{\mathalpha}{letters}{0} +\tud@greek@offset\@tempa +\advance\tud@greek@offset-\Gamma +% \end{macrocode} +% \end{macro}^^A \tud@greek@offset +% \end{macro}^^A \tud@greek@upGamma +% \begin{macro}{\tud@greek@slanted} +% \begin{macro}{\tud@greek@upright} +% Mit \cs{tud@greek@slanted} wird die Kodierung der griechischen Majuskeln von +% \texttt{operator} auf \texttt{letter} geändert\dots +% \begin{macrocode} +\newcommand*\tud@greek@slanted{% + \ifnum\Gamma=\tud@greek@upGamma\relax\tud@greek@changeshape\fi% +} +% \end{macrocode} +% \dots und \cs{tud@greek@upright} macht alles wieder rückgängig. Dabei wird +% bei beiden Befehlen vor der Ausführung geprüft, ob dies überhauot notwendig +% ist. +% \begin{macrocode} +\newcommand*\tud@greek@upright{% + \ifnum\Gamma>\tud@greek@upGamma% + \tud@greek@offset=-\tud@greek@offset% + \tud@greek@changeshape% + \tud@greek@offset=-\tud@greek@offset% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@greek@upright +% \end{macro}^^A \tud@greek@slanted +% \begin{macro}{\tud@greek@def} +% \begin{macro}{\tud@greek@uc} +% \begin{macro}{\tud@greek@changeshape} +% Mit \cs{tud@greek@def} erfolgt die Umkodierung einer einzelnen griechischen +% Glyphe. Das Makro \cs{tud@greek@changeshape} arbeitet die Liste +% \cs{tud@greek@uc} ab. +% \begin{macrocode} +\newcommand*\tud@greek@def[2]{% + \expandafter\@tempcnta\csname #1\endcsname% + \advance\@tempcnta#2% + \expandafter\mathchardef\csname #1\endcsname\@tempcnta% +} +% \end{macrocode} +% Die Liste enthält die Namen der Befehle für große griechische Buchstaben. +% Diese wird von \cs{tud@greek@changeshape} genutzt wird. +% \begin{macrocode} +\newcommand*\tud@greek@uc{% + Gamma,Delta,Theta,Lambda,Xi,Pi,Sigma,Upsilon,Phi,Psi,Omega% +} +\newcommand*\tud@greek@changeshape{% + \@for\@tempa:=\tud@greek@uc\do{% + \@expandtwoargs\tud@greek@def{\@tempa}{\tud@greek@offset}% + }% +} +% \end{macrocode} +% \end{macro}^^A \tud@greek@changeshape +% \end{macro}^^A \tud@greek@uc +% \end{macro}^^A \tud@greek@def +% +% \iffalse +%</(class|package)&body> +%<*(class|package)&option> +% \fi +% +% \begin{option}{heavyfont} +% \begin{macro}{\if@tud@heavyfont} +% Hiermit lässt sich die Schriftstärke im Dokument beeinflussen. +% \begin{macrocode} +\newif\if@tud@heavyfont +\TUD@key{heavyfont}[true]{% + \TUD@set@ifkey{heavyfont}{@tud@heavyfont}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \if@atdocument\tud@font@cdfonts\fi% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \if@tud@heavyfont +% \end{option}^^A heavyfont +% \begin{option}{barfont} +% \changes{v2.02}{2014/07/08}{neu}%^^A +% \begin{macro}{\tud@barfont} +% \changes{v2.02}{2014/07/08}{neu}%^^A +% Mit dieser Option kann die Schrift des \CDs und deren Schriftstärke in der +% TUD-Kopfzeile unabhängig von der gewählten Schriftart für den Fließtext +% aktiviert werden. +% \begin{macrocode} +%<*class> +\newcommand*\tud@barfont{0} +\TUD@key@lock{barfont}[true]{% + \TUD@set@numkey@lock{barfont}{tud@barfont}{% + \TUD@numkey@bool,% + {cd}{1},{cdfont}{1},{cdfonts}{1},{tudfonts}{1},% + {light}{1},{lightfont}{1},{lite}{1},{litefont}{1},{noheavyfont}{1},% + {heavy}{2},{heavyfont}{2}% + }{#1}% +} +%</class> +% \end{macrocode} +% \end{macro}^^A \tud@barfont +% \end{option}^^A barfont +% \begin{option}{din} +% \begin{macro}{\if@tud@din} +% Diese Option dient zur Auswahl, ob die Schrift DIN~Bold für die Überschriften +% verwendet werden soll. +% \begin{macrocode} +\newif\if@tud@din\@tud@dintrue +\TUD@ifkey{din}{@tud@din} +% \end{macrocode} +% \end{macro}^^A \if@tud@din +% \end{option}^^A din +% +% \subsection{Schriften für den Mathematiksatz} +% +% Da die Schriften des \CDs keinen Mathematiksatz beeinhalten, musste~-- +% insbesondere für griechische Symbole~-- eine passende Alternative gefunden +% werden. Die Auswahl an Mathematikschriften für \LaTeX{} ist relativ gering. +% Dennoch schien das \pkg{cmbright}-Paket dafür geeignet, weshalb dieses direkt +% bei der Installation der Schriften eingebunden wurde. +% \begin{option}{sansmath} +% \begin{macro}{\if@tud@sansmath} +% \begin{macro}{\if@tud@sansmath@locked} +% Mit dieser Option kann die genutzte Standardschrift für den Mathematiksatz +% für das gesamte Dokument umgestellt werden. +% \begin{macrocode} +\newif\if@tud@sansmath +\TUD@key@lock{sansmath}[true]{% + \TUD@set@ifkey@lock{sansmath}{@tud@sansmath}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \if@atdocument\tud@font@mathfonts\fi% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \if@tud@sansmath@locked +% \end{macro}^^A \if@tud@sansmath +% \end{option}^^A sansmath +% \begin{option}{slantedgreek} +% \begin{macro}{\if@tud@slantedgreek} +% \begin{macro}{\if@tud@slantedgreek@locked} +% Mit dieser Option kann die Neigung der griechischen Majuskeln geändert werden. +% \begin{macrocode} +\newif\if@tud@slantedgreek +\TUD@key@lock{slantedgreek}[true]{% + \TUD@set@ifkey@lock{slantedgreek}{@tud@slantedgreek}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \if@atdocument\tud@font@mathfonts\fi% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \if@tud@slantedgreek@locked +% \end{macro}^^A \if@tud@slantedgreek +% \end{option}^^A slantedgreek +% +% \iffalse +%</(class|package)&option> +%<*package&option> +% \fi +% +% Für das Paket \pkg{tudscrfonts} werden die Schriften aktiviert und~-- aus +% Kompatibilitätsgründen zur \cls{tudbook}-Klasse~-- die Option \opt{serifmath} +% definiert. Die an das Paket übergebenen Optionen werden daran anschließend +% ausgeführt. +% \begin{macrocode} +\TUDoptions{cdfont=true} +\DeclareOption*{\TUDoptions{\CurrentOption}} +\TUDProcessOptions\relax +% \end{macrocode} +% +% \iffalse +%</package&option> +%<*class&body> +% \fi +% +% \begin{macro}{\tud@head@font@set} +% \changes{v2.02}{2014/07/08}{Unterstützung für \opt{barfont} hinzugefügt}%^^A +% \begin{macro}{\tud@head@font@bold} +% \begin{macro}{\tud@head@font@light} +% Die Schrift der Kopfzeile wird entweder in den Schriften des \CDs oder aber +% in den serifenlosen Standardschriften gesetzt, wobei für beide Varianten +% sowohl eine fettgedruckte als auch eine normale Version benötigt wird. Die +% Schrifthöhe ist durch das \CD unabhängig von der gewählten Schriftgröße im +% Dokument vorgegeben und wird in Abhängigkeit von der Papiergröße gewählt und +% in \cs{tud@head@font@size} gespeichert. +% \begin{macrocode} +\newcommand*\tud@head@font@bold{} +\newcommand*\tud@head@font@light{} +\newcommand*\tud@head@font@set{% +% \end{macrocode} +% Zuerst die Rückfallebene für den Fall, dass keine Schriften im \CD verendet +% werden. +% \begin{macrocode} + \DeclareFixedFont{\tud@head@font@bold}{\encodingdefault}% + {\sfdefault}{bx}{n}{\tud@head@font@size}% + \DeclareFixedFont{\tud@head@font@light}{\encodingdefault}% + {\sfdefault}{\mddefault}{n}{\tud@head@font@size}% +% \end{macrocode} +% Die Option \opt{barfont} wird ausgewertet. +% \begin{macrocode} + \ifcase \tud@barfont\relax% + \if@tud@cdfonts% + \ClassWarning{\tudcls@name}{% + It isn't possible to use `barfont=false'\MessageBreak% + together with `cdfont=true'% + }% + \fi% + \or% + \@tud@cdfontstrue% + \def\mddefault{l}% + \or% + \@tud@cdfontstrue% + \def\mddefault{m}% + \fi% +% \end{macrocode} +% Die Schriften für den Kopf im \CD werden aktiviert. +% \begin{macrocode} + \if@tud@cdfonts% +% \end{macrocode} +% Damit \cs{DeclareFixedFont} zusammen mit \pkg{fontspec} verwendet werden +% kann, wurde zu Beginn der Klasse den drei benötigten Schriftschnitten der +% Univers spezielle Namen zugewiesen, die hier verwendet werden. +% \begin{macrocode} + \if@tud@fontspec% + \DeclareFixedFont{\tud@head@font@bold}{\encodingdefault}% + {UniversBold}{m}{n}{\tud@head@font@size}% + \ifstr{\mddefault}{m}{% + \DeclareFixedFont{\tud@head@font@light}{\encodingdefault}% + {UniversRegular}{m}{n}{\tud@head@font@size}% + }{% + \DeclareFixedFont{\tud@head@font@light}{\encodingdefault}% + {UniversLight}{m}{n}{\tud@head@font@size}% + }% +% \end{macrocode} +% Die klassische Auswahl mittels NFSS-Schriftname und \cs{mddefault}. +% \begin{macrocode} + \else% + \if@tud@univers% + \DeclareFixedFont{\tud@head@font@bold}{\encodingdefault}% + {\tud@univers}{b}{n}{\tud@head@font@size}% + \DeclareFixedFont{\tud@head@font@light}{\encodingdefault}% + {\tud@univers}{\mddefault}{n}{\tud@head@font@size}% + \fi% + \fi% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@head@font@light +% \end{macro}^^A \tud@head@font@bold +% \end{macro}^^A \tud@head@font@set +% +% \iffalse +%</class&body> +%<*(class|package)&body> +% \fi +% +% \begin{macro}{\ifdin} +% \changes{v2.02}{2014/08/29}{Anpassungen für \pkg{fontspec}}%^^A +% Der Befehl \cs{ifdin} prüft auf die Verwendung von DIN~Bold. Davon abhängig +% wird entweder das erste oder das zweite Argument ausgeführt. Dies kann für +% die Befehle aller Gliederungsebenen genutzt werden, um zwischen der Ausgabe +% im Dokument sowie Inhaltserzeichnis und/oder Kolumnentitel zu unterscheiden. +% \begin{macrocode} +\newrobustcmd*\ifdin{% + \@tempswafalse + \@expandtwoargs\in@{DINBold}{\f@family}% + \ifin@\@tempswatrue\fi% + \ifx\f@family\tud@dinbold\relax\@tempswatrue\fi% + \if@tempswa + \expandafter\@firstoftwo% + \else% + \expandafter\@secondoftwo% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \ifdin +% Wird das Paket \pkg{tudscrfonts} mit den alten TUD-Klassen oder \TUDScript in +% der Version~v1.0 verwendet, müssen einige Kompatibilitätseinstellungen +% vorgenmommen werden. Dies betrifft insbesondere allerhand darin definierter, +% fixer Schriften sowie die Mathematikschriften. +% \begin{macrocode} +%<*package> +\AtBeginDocument{% + \ifbool{@tud@oldclass}{% + \if@tud@fontspec% + \DeclareFixedFont{\univLightVII}{\encodingdefault}% + {UniversLight}{m}{n}{7}% + \DeclareFixedFont{\univLightObliqueVII}{\encodingdefault}% + {UniversLightOblique}{m}{n}{7}% + \DeclareFixedFont{\univBoldVII}{\encodingdefault}% + {UniversBold}{m}{n}{7}% + \DeclareFixedFont{\univLightIX}{\encodingdefault}% + {UniversLight}{m}{n}{9}% + \DeclareFixedFont{\univLightObliqueIX}{\encodingdefault}% + {UniversLightOblique}{m}{n}{9}% + \DeclareFixedFont{\univBoldIX}{\encodingdefault}% + {UniversBold}{m}{n}{9}% + \DeclareFixedFont{\univLightXI}{\encodingdefault}% + {UniversLight}{m}{n}{11}% + \DeclareFixedFont{\univLightObliqueXI}{\encodingdefault}% + {UniversLightOblique}{m}{n}{11}% + \DeclareFixedFont{\univBoldXI}{\encodingdefault}% + {UniversBold}{m}{n}{11}% + \DeclareFixedFont{\univLightXV}{\encodingdefault}% + {UniversLight}{m}{n}{15}% + \DeclareFixedFont{\univLightObliqueXV}{\encodingdefault}% + {UniversLightOblique}{m}{n}{15}% + \DeclareFixedFont{\univBoldXV}{\encodingdefault}% + {UniversBold}{m}{n}{15}% + \else% + \if@tud@univers% + \DeclareFixedFont{\univLightVII}{\encodingdefault}% + {\tud@univers}{l}{n}{7}% + \DeclareFixedFont{\univLightObliqueVII}{\encodingdefault}% + {\tud@univers}{l}{sl}{7}% + \DeclareFixedFont{\univBoldVII}{\encodingdefault}% + {\tud@univers}{b}{n}{7}% + \DeclareFixedFont{\univLightIX}{\encodingdefault}% + {\tud@univers}{l}{n}{9}% + \DeclareFixedFont{\univLightObliqueIX}{\encodingdefault}% + {\tud@univers}{l}{sl}{9}% + \DeclareFixedFont{\univBoldIX}{\encodingdefault}% + {\tud@univers}{b}{n}{9}% + \DeclareFixedFont{\univLightXI}{\encodingdefault}% + {\tud@univers}{l}{n}{11}% + \DeclareFixedFont{\univLightObliqueXI}{\encodingdefault}% + {\tud@univers}{l}{sl}{11}% + \DeclareFixedFont{\univBoldXI}{\encodingdefault}% + {\tud@univers}{b}{n}{11}% + \DeclareFixedFont{\univLightXV}{\encodingdefault}% + {\tud@univers}{l}{n}{15}% + \DeclareFixedFont{\univLightObliqueXV}{\encodingdefault}% + {\tud@univers}{l}{sl}{15}% + \DeclareFixedFont{\univBoldXV}{\encodingdefault}% + {\tud@univers}{b}{n}{15}% + \fi% + \fi% + \if@sansmath% + \DeclareSymbolFont{aunLetters}{\tud@mathenc}{\tud@univers}{l}{sl}% + \SetSymbolFont{aunLetters}{bold}{\tud@mathenc}{\tud@univers}{b}{sl}% + \DeclareSymbolFont{aunOperators}{\tud@mathenc}{\tud@univers}{l}{n}% + \SetSymbolFont{aunOperators}{bold}{\tud@mathenc}{\tud@univers}{b}{n}% + \DeclareSymbolFontAlphabet{\mathsf}{aunOperators}% + \DeclareSymbolFontAlphabet{\mathnormal}{aunLetters}% + \DeclareMathAlphabet\mathbf{\tud@mathenc}{\tud@univers}{b}{n}% + \SetMathAlphabet\mathbf{bold}{\tud@mathenc}{\tud@univers}{b}{n}% + \DeclareMathAlphabet\mathit{\tud@mathenc}{\tud@univers}{l}{sl}% + \SetMathAlphabet\mathit{bold}{\tud@mathenc}{\tud@univers}{l}{sl}% + \fi% + \let\dinBold\dinbn% + \let\dinfamily\dinbn% + }{}% + \ifbool{@tud@oldscrclass}{% + \cmd@restore{rmdefault}% + \cmd@restore{sfdefault}% + \cmd@restore{bfdefault}% + \cmd@restore{mddefault}% + \cmd@restore{familydefault}% + \cmd@restore{seriesdefault}% + \cmd@restore{shapedefault}% + \cmd@restore{rmfamily}% + \cmd@restore{sffamily}% + \cmd@restore{ttfamily}% + \DeclareSymbolFontAlphabet{\mathrm}{operators} + \if@tud@fontspec% + \DeclareFixedFont{\univLightHead}{\encodingdefault}% + {UniversLight}{m}{n}{\tud@head@fntsz}% + \DeclareFixedFont{\univBoldHead}{\encodingdefault}% + {UniversBold}{m}{n}{\tud@head@fntsz}% + \else% + \if@tud@univers% + \DeclareFixedFont{\univLightHead}{\encodingdefault}% + {\tud@univers}{l}{n}{\tud@head@fntsz}% + \DeclareFixedFont{\univBoldHead}{\encodingdefault}% + {\tud@univers}{b}{n}{\tud@head@fntsz}% + \fi% + \fi% + }{}% +} +%</package> +% \end{macrocode} +% Damit die Schrift im Dokument später noch umgestellt werden kann, werden +% sämtliche Einstellungen erst zu Beginn des Dokumentes gesichert. Deshalb wird +% der dafür verantwortliche Befehl \cs{tud@font@cdfonts} hier zum ersten Mal +% verwendet. Damit ist es möglich, die Schriften eventuell geladener Pakete wie +% \pkg{lmodern} oder \pkg{libertine} vorher zu sichern und später wieder zu +% aktivieren. Auch die Einstellungen für den Mathematiksatz werden erstmalig +% durch \cs{tud@font@mathfonts} gesetzt. +% \begin{macrocode} +\AtBeginDocument{% + \if@tud@cdfonts\tud@font@cdfonts\fi% + \tud@font@mathfonts% +} +% \end{macrocode} +% Das Paket \pkg{cmbright} bringt zusätzlich noch Schriftschnitte für die +% \pkg{ams}"=Pakete mit. Diese werden gegebenenfalls geladen. +% \begin{macrocode} +\AfterPackage*{amsfonts}{% + \DeclareFontFamily{U}{msa}{}% + \DeclareFontShape{U}{msa}{m}{n}{% + <-9>cmbras8% + <9-10>cmbras9% + <10->cmbras10% + }{}% + \DeclareFontFamily{U}{msb}{}% + \DeclareFontShape{U}{msb}{m}{n}{% + <-9>cmbrbs8% + <9-10>cmbrbs9% + <10->cmbrbs10% + }{}% +} +% \end{macrocode} +% +% \subsection{Anpassungen für das Paket \pkg{ragged2e}} +% +% \begin{macro}{\tud@raggedright} +% \begin{macro}{\tud@RaggedRight} +% Die Überschriften in DIN"~Bold sollen laut \CD linksbündig und nie mit +% Silbentrennung gesetzt werden. Normalerweise ist das dies beim linksbündigen +% Satz bei \LaTeX{} der Fall. Allerdings ist es mit dem Paket \pkg{ragged2e} +% möglich, das Verhalten für den Flattersatz zu ändern und die Silbentrennung +% zu aktivieren. Mit der Option \opt{newcommands} werden dabei die originalen +% Befehle überschrieben, vorher jedoch in \cs{LaTeX\dots} gesichert. Dieses +% Makro dient dazu, die Überschriften in jedem Fall~-- auch bei der Verwendung +% von \pkg{ragged2e} mit der Option \opt{newcommands}~-- ohne Trennungen zu +% setzen. +% \begin{macrocode} +\newcommand*\tud@raggedright{\raggedright} +%<*class> +\newcommand*\tud@RaggedRight{\raggedright} +%</class> +\AfterPackage*{ragged2e}{% + \ifdef{\LaTeXraggedright}{% + \renewcommand*\tud@raggedright{\LaTeXraggedright}% + }{}% +%<*class> + \renewcommand*\tud@RaggedRight{\RaggedRight}% +%</class> +} +% \end{macrocode} +% \end{macro}^^A \tud@ragged2e +% \end{macro}^^A \tud@raggedright +% +% \iffalse +%</(class|package)&body> +%<*package&body> +% \fi +% Ganz zum Schluss merden für das Paket \pkg{tudscrfonts} noch ein paar +% Anpassungen für die \cls{tudbook}-Klasse gemacht. +% \begin{macrocode} +\@ifclassloaded{tudbook}{% + \patchcmd{\@makechapterhead}{\dinBold\Huge\bfseries}% + {\if@tud@din\dinbn\fi\Huge}{}{\tud@patch@wrn{@makechapterhead}}% + \patchcmd{\@makeschapterhead}{\dinBold\Huge\bfseries}% + {\if@tud@din\dinbn\fi\Huge}{}{\tud@patch@wrn{@makeschapterhead}}% + \patchcmd{\section}{\dinBold\Large\bfseries}% + {\if@tud@din\dinbn\fi\Large}{}{\tud@patch@wrn{section}}% + \patchcmd{\showtitle}{\dinBold\Huge\bfseries}% + {\if@tud@din\dinbn\fi\Huge}{}{\tud@patch@wrn{showtitle}}% +}{} +% \end{macrocode} +% +% \iffalse +%</package&body> +% \fi +% +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr-frontmatter.dtx b/Master/texmf-dist/source/latex/tudscr/tudscr-frontmatter.dtx new file mode 100644 index 00000000000..5e305fb91e5 --- /dev/null +++ b/Master/texmf-dist/source/latex/tudscr/tudscr-frontmatter.dtx @@ -0,0 +1,977 @@ +% \CheckSum{587} +% \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-frontmatter.dtx +%<*driver> +\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi +\ProvidesFile{tudscr-frontmatter.dtx}[% + 2014/12/04 v2.02 TUD-KOMA-Script (frontmatter)% +] +\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-frontmatter.dtx} +\begin{document} + \maketitle + \DocInput{\filename} +\end{document} +%</driver> +% \fi +% +% \selectlanguage{ngerman} +% +% \changes{v2.02}{2014/07/08}{Verwendung \cs{FamilyKeyState}}%^^A +% \changes{v2.02}{2014/11/05}{Verbesserungen für Kolumnentitel und +% Inhaltsverzeichnis}%^^A +% +% \section{Befehle und Umgebungen für den Vorspann} +% +% Im Vorspann des Dokumentes kann der Benutzer eine Zusammenfassung angegeben. +% Außerdem kann eine Selbstständigkeitserklärung sowie ein Sperrvermerk +% hinzugefügt werden. Damit für diese das Layout möglichst individuell gewählt +% werden kann, werden hier entsprechende Optionen und die dafür notwendige +% Ausgabe definiert. Im weiteren Verlauf der Dokumentation wird der Begriff +% \enquote{Erklärung} für die unterschiedlichen Elemente verwendet. Die +% verwendeten Schalter und Befehle zum Setzen der Optionen heißen entweder +% \cs{tud@abstract@\dots} oder aber \cs{tud@declaration@\dots} je nach Element. +% +% \StopEventually{\PrintIndex\PrintChanges} +% +% \iffalse +%<*class&body> +% \fi +% +% \begin{macro}{\tud@fm@check} +% \changes{v2.02}{2014/07/18}{neu}%^^A +% Mit diesem Befehl wird für den Fall, dass eine oder mehrerer Erklräungen auf +% einer einzelnen Seite gesetzt werden sollen geprüft, ob dies überhaupt +% möglich ist. Sollte dies nicht der Fall sein, wird eine Warnung ausgegeben. +% \begin{macrocode} +\newcommand*\tud@fm@check[2]{% + \ifnumless{\@nameuse{tud@#1@level}}{3}{% + \@tempswatrue% + \ifboolexpr{bool {@tud@#1@fil} and bool {@tud@#1@multi}}{% + \setbox0\vbox{% + \ifcase\@nameuse{tud@#1@level}\relax\or\or% + \vspace*{-\parskip}% + {\usekomafont{section}\vspace*{-\baselineskip}}% + \fi% + #2% + }% + \ifdim\textheight<\dimexpr\ht0+\dp0\relax% + \ClassWarning{\tudcls@name}{% + The given content within the `#1'\MessageBreak% + environment is too large, so it wasn't possible\MessageBreak% + to center the body vertically. Setting the option\MessageBreak% + `#1=nofill' would be a solution. You\MessageBreak% + could also use multiple `#1' environments% + }% + \@tempswafalse% + \fi% + }{}% + }{}% + #2% +} +% \end{macrocode} +% \end{macro}^^A \tud@fm@check +% \begin{macro}{\tud@fm@set} +% \changes{v2.02}{2014/07/18}{Neuimplementierung für \pkg{scrlayer-scrpage}}%^^A +% Dies ist das zentrale Makro zur Ausgabe der einzelnen Erklärungen, welches +% alle relevanten Optionen\footnote{\opt{titlepage}, \opt{twocolumn}, +% \opt{abstract/declaration=multi}, \opt{abstract/declaration=fill} sowie die +% Gliederungsebene der Überschrift} unterscheidet und die Erklärungen diesen +% entsprechend setzt. Verwendet wird der Befehl wie folgt: +% \cs{tud@fm@set}\marg{Erklärungstyp}\marg{Überschrift}\marg{Inhalt} +% \begin{macrocode} +\newcommand*\tud@fm@set[3]{% +% \end{macrocode} +% Sollte die Gliederungsebene der Erklärung einem Kapitel entsprechen, wird +% jede Erklärung immer auf eine neue Seite gesetzt. Die Optionen zum vertikalen +% Zentrieren wird ignoriert. Auf eine Warnung für den Anwender wird verzichtet. +% \begin{macrocode} +%<*book|report> + \ifnumless{\@nameuse{tud@#1@level}}{3}{}{% + \boolfalse{@tud@#1@multi}% + \boolfalse{@tud@#1@fil}% + }% +%</book|report> +% Im Zweispaltensatz wird der Inhalt der Umgebung einfach ausgegeben, eine +% vertikale Zentrierung findet nicht statt. +% \begin{macrocode} + \if@twocolumn% + \tud@fm@body{#1}{#2}{#3}% +% \end{macrocode} +% Beim einspaltigen Satz wird die \opt{titlepage}-Option beachtet. +% \begin{macrocode} + \else% +% \end{macrocode} +% Sollte diese aktiv sein, wird jede Erklärung oder Zusammenfassung abhängig +% von der Einstellung von \opt{abstract/declaration=multi} entweder auf eine +% neue Seite gesetzt, oder aber auf der aktuellen ausgegeben. Dabei werden +% diese ggf. noch vertikal auf der Seite ausgerichtet. +% \begin{macrocode} + \if@titlepage% + \ifbool{@tud@#1@multi}{}{\clearpage}% + \ifbool{@tud@#1@fil}{% + \ifcase\@nameuse{tud@#1@level}\relax\or\or% + \vspace*{-\parskip}% + {\usekomafont{section}\vspace*{-2\baselineskip}}% + \fi% + \if@tempswa\vspace*{\z@ \@plus 1fil}\fi% + }{}% + \tud@fm@body{#1}{#2}{#3}% + \ifbool{@tud@#1@fil}{\vspace*{\z@ \@plus 2fil}}{}% +% \end{macrocode} +% Bei deaktivierter \opt{titlepage}-Option werden die Inhalte jeder erzeugten +% Erklärung direkt nacheinander ausgegeben. Die Erklärung oder Zusammenfassung +% wird dabei wie ein Zitat ausgegeben, sollte dessen Überschrift nicht +% in Form eines Abschnitts gesetzt werden. Der Inhalt wird entweder in der +% normalen \env{quotation}-Umgebung oder aber~-- wenn entsprechend das Paket +% \pkg{quoting} geladen wurde~-- in der \env{quoting}-Umgebung gesetzt. Die +% entsprechende Umgebung wird hierfür im Makro \cs{tud@quoting} gespeichert. +% \begin{macrocode} + \else% + \ifnum\@nameuse{tud@#1@level}<2\begin{\tud@quoting}\fi% + \tud@fm@body{#1}{#2}{#3}% + \ifnum\@nameuse{tud@#1@level}<2\end{\tud@quoting}\fi% + \fi% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@fm@set +% \begin{macro}{\tud@fm@body} +% \changes{v2.02}{2014/07/18}{Neuimplementierung für \pkg{scrlayer-scrpage}}%^^A +% \begin{macro}{\tud@fm@vcenter} +% \changes{v2.02}{2014/07/18}{Mit \pkg{scrlayer-scrpage} entfernt}%^^A +% Dieser Befehl formatiert den im dritten Argument gespeicherten Inhalt der +% Erklärung. Sollte das Paket \pkg{multicol} Verwendung finden, wird hier die +% entsprechende Umgebung gestartet. Für das Setzen der Überschrift und der +% Kolumnentitel wird \cs{tud@fm@head} verwendet, welches abhängig von den +% gewählten Optionen die Gliederungsebene der Überschrift setzt. Die optional +% gewählte vertikale Ausrichtung des Inhaltes wird seit Version~v2.02 nicht +% mehr von \cs{tud@fm@vcenter} sondern hier direkt ausgeführt. +% \begin{macrocode} +\newcommand*\tud@fm@body[3]{% + \ifnum\tud@multicols>1\relax% + \begin{multicols}{\tud@multicols}[{\tud@fm@head{#1}{#2}}]% + \else% +% \end{macrocode} +% Für die Verwendung einer kleinen, zentrierten Überschrift wird vorher ein +% Abstand eingefügt. Dies ist jedoch nur notwendig, wenn \env{multicols} nicht +% verwendet wird. +% \begin{macrocode} + \ifbool{@tud@#1@multi}{% + \ifcase\@nameuse{tud@#1@level}\relax\or% + \vspace{\dimexpr\bigskipamount-\parskip\relax}% + \fi% + }{}% + \tud@fm@head{#1}{#2}% + \fi% + #3\par% + \ifnum\tud@multicols>1\relax% + \end{multicols}% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@fm@vcenter +% \end{macro}^^A \tud@fm@body +% \begin{macro}{\tud@fm@head} +% \changes{v2.02}{2014/07/18}{an \pkg{scrlayer-scrpage} angepasst}%^^A +% \changes{v2.02}{2014/10/09}{Bugfix für Kolumnentitel}%^^A +% Dieses Makro dient zur Festlegung der Gliederungsebene der Überschrift der +% Erklärung. Die gewählte Gliederungsebene ist in \cs{tud@\meta{Typ}@level} +% gespeichert. Verwendet wird das Makro folgendermaßen: +% \cs{tud@fm@head}\marg{Erklärungstyp}\marg{Überschrift}\marg{Inhalt}. Damit +% die ggf. aktive Option \opt{abstract/declaration=toc} funktionieren kann, +% wird für die Level, in denen keine Standardüberschrift verwendet wird, mit +% dem Befehl \cs{phantomsection} aus dem Paket \pkg{hyperref}~-- wenn es +% tatsächlich geladen wurde~-- ein Anker für einen Hyperlink erzeugt. Ist +% \cs{if@tud@\meta{Typ}@toc} wahr, so entspricht der erzeugte Eintrag ins +% Inhaltsverzeichnis für \cls{tudscrartcl} normalerweise dem eines Abschnitts, +% der für \cls{tudscrbook} und \cls{tudscrreprt} dem eines Kapitels.% +% \footnote{sonst sieht das Inhaltsverzeichnis recht bescheiden aus} +% Mit der Eintellung \val{tocleveldown} kann der Eintrag um eine Ebene +% \begin{macrocode} +\newcommand*\tud@fm@head[2]{% + \ifcase\@nameuse{tud@#1@level}\relax% + \if@titlepage\endgraf\fi% + \csname phantomsection\endcsname% + \or% + \if@titlepage\endgraf\fi% + \csname phantomsection\endcsname% + \@afterindentfalse% + \begingroup% + \centering% + \normalfont\sectfont\nobreak#2% + \@endparpenalty\@M% + \endgraf% + \endgroup% + \nopagebreak% + \vskip\dimexpr\bigskipamount-\parskip\relax% + \@afterheading% + \or% + \section*{#2}% + \ifx\@mkboth\@gobbletwo\else\markright{\MakeMarkcase{#2}}\fi% +%<*book|report> + \or% + \chapter*{#2}% + \@mkdouble{\MakeMarkcase{#2}}% +%</book|report> + \fi% + \ifbool{@tud@#1@markboth}{% + \markboth{\MakeMarkcase{#2}}{\MakeMarkcase{#2}}% + }{}% + \ifbool{@tud@#1@toc}{% + \ifbool{@tud@#1@toc@leveldown}{% +%<*book|report> + \addsectiontocentry{}{#2}% +%</book|report> +%<*article> + \addsubsectiontocentry{}{#2}% +%</article> + }{% +%<*book|report> + \addchaptertocentry{}{#2}% +%</book|report> +%<*article> + \addsectiontocentry{}{#2}% +%</article> + } + }{}% +} +% \end{macrocode} +% \end{macro}^^A \tud@fm@head +% \begin{macro}{\tud@fm@next} +% \changes{v2.02}{2014/07/19}{mit \pkg{scrlayer-scrpage} eingeführt}%^^A +% Dieser Befehl sorgt für die Trennung einzelner Abschnitte innerhalb der +% Umgebungen \env{abstract} und \env{declarations}. Dabei werden bei aktiver +% vertikaler Ausrichtung die entsprchenden Abstände dazwischen eingefügt. +% \begin{macrocode} +\newcommand*\tud@fm@next[2]{% + \TUD@parameter@set[#1]{#2}% + \if@twocolumn% + \ifbool{@tud@#1@multi}{\par}{\newpage} + \else% + \if@titlepage% + \ifbool{@tud@#1@fil}{% + \vspace*{\z@ \@plus 1fil}% + \ifbool{@tud@#1@multi}{}{% + \vspace*{\z@ \@plus 1fil}% + \clearpage% + \ifcase\@nameuse{tud@#1@level}\relax\or\or% + \vspace*{-\parskip}% + {\usekomafont{section}\vspace*{-2\baselineskip}}% + \fi% + \vspace*{\z@ \@plus 1fil}% + }% + }{\ifbool{@tud@#1@multi}{}{\clearpage}}% + \else% + \ifnum\@nameuse{tud@#1@level}<2 + \end{\tud@quoting} + \begin{\tud@quoting} + \fi% + \fi% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@fm@next +% \begin{macro}{\tud@fm@pagestyle} +% \changes{v2.02}{2014/07/19}{neu}%^^A +% Dieser Befehl sorgt für die Auswahl des Seitenstiles über die Parameter von +% \env{abstract} und \env{declarations}. +% \begin{macrocode} +\newcommand*\tud@fm@pagestyle[2]{% + \if@titlepage% + \ifcsdef{ps@#2}{\renewcommand*\tud@ps{#2}}{% + \ClassError{\tudcls@name}{`#2' is no valid pagestyle}{}% + }% + \else% + \ClassWarning{\tudcls@name}{% +%<*article> + The key `pagestyle' can only be used with\MessageBreak% + activated option `titlepage'% +%</article> +%<*book|report> + The key `pagestyle' can only be used either with\MessageBreak% + activated option `titlepage' or with chapter\MessageBreak% + headings (`#1=chapter')% +%</book|report> + }% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@fm@pagestyle +% \begin{macro}{\tud@fm@level@wrn} +% \changes{v2.02}{2014/07/19}{entfernt}%^^A +% \begin{macro}{\tud@fm@option@wrn} +% \changes{v2.02}{2014/07/19}{entfernt}%^^A +% \begin{macro}{\tud@fm@multi@wrn} +% \changes{v2.02}{2014/07/19}{entfernt}%^^A +% Die Befehle für die Warnungen an den Benutzer bei nicht beachteten oder nicht +% umsetzbaren Einstellungen wurden mit der Version~v2.02 entfernt, da Sie als +% wenig sinnvoll erachtet wurden. +% \end{macro}^^A \tud@fm@multi@wrn +% \end{macro}^^A \tud@fm@option@wrn +% \end{macro}^^A \tud@fm@level@wrn +% \begin{macro}{\tud@quoting} +% \begin{macro}{\tud@endquoting} +% \changes{v2.02}{2014/07/19}{entfernt}%^^A +% Mit diesem Befehl kann das empfehlenswerte Paket \pkg{quoting} unterstützt +% werden. Sollte dieses geladen werden, wird für das Setzen der Zusammenfassung +% bei einem Titelkopf die \env{quoting}-Umgebung genutzt. +% \begin{macrocode} +\newcommand*\tud@quoting{quotation} +\AfterPackage{quoting}{\renewcommand*\tud@quoting{quoting}} +% \end{macrocode} +% \end{macro}^^A \tud@endquoting +% \end{macro}^^A \tud@quoting +% +% \iffalse +%</class&body> +%<*class&option> +% \fi +% +% \begin{macro}{\tud@fm@switch} +% \changes{v2.02}{2014/11/05}{neu}%^^A +% Das aus \KOMAScript{} bekannte Verhalten für die Zusammenfassung wird für die +% beiden Klassen \cls{tudscrartcl} und \cls{tudscrreprt} adaptiert. Dazu werden +% boolesche Schlüssel bei der Definiton der beiden Optionen \opt{abstract} und +% \opt{declaration} eingefügt. Außerdem werden zusätzliche Werte zur Auswahl +% einer Gliederungsebene für die gesetzten Überschriften wie \cs{section} oder +% \cs{chapter}\footnote{nicht für \cls{tudscrartcl}} oder bereitgestellt, +% welche auch für die Buchklasse \cls{tudscrbook} zur Verfügung stehen. Das +% Setzen von Einträgen ins Inhaltsverzeichnis lässt sich ebenfalls anpassen. +% +% Des Weiteren werden mehrere Schlüssel für die Anordnung und Positionierung +% von Zusammenfassung bzw. Erklärungen bereitgestellt. Diese dienen dem Setzen +% der Optionen \opt{abstract/declaration} mit den Werten \val{single/multi}, +% \val{toc/notoc}, \val{fill/nofill} sowie \val{leveldown}. +% \begin{macrocode} +\newcommand*\tud@fm@switch{% + {section}{2},{sect}{2},{sec}{2},{addsec}{2},% +%<*article> + {new}{2},{std}{2},{heading}{2},% +%</article> +%<*book|report> + {chapter}{3},{chap}{3},{addchap}{3},% + {new}{3},{std}{3},{heading}{3},% +%</book|report> + {totoc}{4},{toc}{4},{totoclevelup}{4},{toclevelup}{4},{levelup}{4},% + {totocleveldown}{5},{tocleveldown}{5},{leveldown}{5},% + {nottotoc}{6},{notoc}{6},% + {markboth}{7},{mark}{7},% + {nomarkboth}{8},{nomark}{8},% + {one}{9},{simple}{9},{single}{9},% + {multi}{10},{multiple}{10},{all}{10},{two}{10},{both}{10},{double}{10},% + {nofil}{11},{nofill}{11},{novfil}{11},{novfill}{11},% + {fil}{12},{fill}{12},{vfil}{12},{vfill}{12}% +} +% \end{macrocode} +% \end{macro}^^A \tud@fm@switch +% +% \subsection{Erweiterung der Umgebung für eine Zusammenfassung} +% +% Die \env{abstract}-Umgebung wird um mehrere Optionen erweitert. So kann +% in den neuen \cls{tudscr}-Klassen die Sprache der Zusammenfassung leicht +% eingestellt und auch zwei Zusammenfassungen auf eine Seite gesetzt werden. +% \begin{macro}{\tud@abstract@level} +% \begin{macro}{\if@tud@abstract@toc} +% \begin{macro}{\if@tud@abstract@toc@locked} +% Der Befehl \cs{tud@abstract@level} beschreibt die Gliederungsebene der +% Überschrift der Zusammenfassung numerisch und wird über die Schlüssel der +% Option \opt{abstract} gesetzt. Über \opt{abstract=toc/notoc} wird festgelegt, +% ob die Zusammenfassung einen eigenen Eintrag ins Inhaltsverzeichnis bekommt. +% Da unterschiedliche Gliederungsebenen der Überschriften möglich sind, wird das +% Standardverhalten in Abhängigkeit dieser gewählt. Initial erscheint für +% \cls{tudscrreprt} und \cls{tudscrartcl}~-- wie in \KOMAScript{} auch~-- keine +% Überschrift und kein Eintrag im Inhaltsverzeichnis. In \cls{tudscrbook} wird +% standardmäßig eine Überschrift in Form eines Kapitels mit Eintrag ins +% Inhaltsverzeichnis gesetzt. +% \begin{macrocode} +%<*report|article> +\newcommand*\tud@abstract@level{0} +\newbool@lock{@tud@abstract@toc} +%</report|article> +%<*book> +\newcommand*\tud@abstract@level{3} +\newbool@lock[true]{@tud@abstract@toc} +%</book> +% \end{macrocode} +% \end{macro}^^A \if@tud@abstract@toc@locked +% \end{macro}^^A \if@tud@abstract@toc +% \end{macro}^^A \tud@abstract@level +% \begin{macro}{\if@tud@abstract@toc@leveldown} +% \changes{v2.02}{2014/11/05}{neu}%^^A +% Dieser Schalter bestimmt, ob der Eintrag in das Inhaltsverzeichnis in der +% obersten Gliederungsebene~-- \cs{chapter} für die Klassen \cls{tudscrbook} +% und \cls{tudscrreprt} sowie \cs{section} für \cls{tudscrartcl}~-- oder in der +% darunterliegenden erfolgt. +% \begin{macrocode} +\newif\if@tud@abstract@toc@leveldown +% \end{macrocode} +% \end{macro}^^A \if@tud@abstract@toc@leveldown +% \begin{macro}{\if@tud@abstract@markboth} +% \changes{v2.02}{2014/11/05}{neu}%^^A +% Dieser Schalter setzt rechten und linken Kolumnentitel automatisch auf die +% verwendete Überschrift. +% \begin{macrocode} +\newif\if@tud@abstract@markboth +% \end{macrocode} +% \end{macro}^^A \if@tud@abstract@markboth +% \begin{macro}{\if@tud@abstract@multi} +% Is dieser Schalter aktiviert, wird eine durch \cs{nextabstract} angegebene +% zweite~-- wahrscheinlich in einer Fremdsprache verfasste~-- Zusammenfassung +% auf die gleiche Seite wie die erste zu setzen. Gesetzt wird der Schalter über +% die Option \opt{abstract=single/multi}. +% \begin{macrocode} +\newif\if@tud@abstract@multi +% \end{macrocode} +% \end{macro}^^A \if@tud@abstract@multi +% \begin{macro}{\if@tud@abstract@fil} +% Mit diesem Schalter wird bestimmt, ob eine Zusammenfassung auf einer Seite +% vertikal zentriert wird. Er wird mit \opt{abstract=fill/nofill} gesetzt und +% ist normalerweise aktiviert. +% \begin{macrocode} +\newif\if@tud@abstract@fil +\@tud@abstract@filtrue +% \end{macrocode} +% \end{macro}^^A \if@tud@abstract@fil +% \begin{option}{abstract} +% Alle Klassen unterstützen die Werte, welche in \cs{tud@fm@switch} definiert +% wurden. Die beiden Klassen \cls{tudscrartcl} und\ cls{tudscrreprt} adaptieren +% außerdem das aus \KOMAScript{} bekannte Verhalten über die booleschen Werte +% aus \cs{TUD@numkey@bool}. +% \begin{macrocode} +%<*report|article> +\TUD@key{abstract}[true]{% + \edef\@tempb{\TUD@numkey@bool,\tud@fm@switch}% +%</report|article> +%<*book> +\TUD@key{abstract}[chapter]{% + \edef\@tempb{\tud@fm@switch}% +%</book> + \TUD@set@numkey{abstract}{@tempa}{\@tempb}{#1}% +% \end{macrocode} +% Bei der Einstellungen der Überschriftgliederungsebene wird außerdem das +% Standardverhalten für einen Eintrag ins Inhaltsverzeichnis festgelegt, was +% allerdings vom Anwender jederzeit überschrieben werden kann. +% \begin{macrocode} + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \ifcase \@tempa\relax% +%<*report|article> + \def\tud@abstract@level{0}% + \stdbool@lock{@tud@abstract@toc}{false}% +%</report|article> + \or% +%<*report|article> + \def\tud@abstract@level{1}% + \stdbool@lock{@tud@abstract@toc}{false}% +%</report|article> + \or% + \def\tud@abstract@level{2}% + \stdbool@lock{@tud@abstract@toc}{true}% + \or% +%<*book|report> + \def\tud@abstract@level{3}% + \stdbool@lock{@tud@abstract@toc}{true}% +%</book|report> +% \end{macrocode} +% Neben den Einstellungen für die Art der Gliederungsebene der Überschrift für +% die Zusammenfassung können außerdem noch die Optionen gesetzt werden, ob +% versucht werden soll, eine mögliche Zusammenfassung in einer anderen Sprache +% auf die gleiche Seite wie die erste zu setzen (\opt{abstract=multi}) und ob +% die Zusammenfassung einen Eintrag ins Inhaltsverzeichnis bekommen soll. +% \begin{macrocode} + \or% + \setbool@lock{@tud@abstract@toc}{true}% + \@tud@abstract@toc@leveldownfalse% + \or% + \setbool@lock{@tud@abstract@toc}{true}% + \@tud@abstract@toc@leveldowntrue% + \or% + \setbool@lock{@tud@abstract@toc}{false}% + \or% + \@tud@abstract@markbothtrue% + \or% + \@tud@abstract@markbothfalse% + \or% + \@tud@abstract@multifalse% + \or% + \@tud@abstract@multitrue% + \or% + \@tud@abstract@filfalse% + \or% + \@tud@abstract@filtrue% + \fi% + \fi% +} +% \end{macrocode} +% \end{option}^^A abstract +% +% \iffalse +%</class&option> +%<*class&body> +% \fi +% +% \begin{environment}{abstract} +% Die \env{abstract}-Umgebung wird komplett überarbeitet. Um alle gewünschten +% Optionen\footnote{\opt{titlepage}, \opt{twocolumn}, \opt{abstract@multi}, +% \opt{abstract@fil} sowie Gliederungsebene der Überschrift} beachten zu +% können, wird auf die Möglichkeiten der Definition mit \cs{NewEnviron} aus dem +% Paket \pkg{environ} zurückgegriffen. Damit ist es möglich, gezielt auf den +% Inhalt der Umgebung selbst mit dem Befehl \cs{BODY} zuzugreifen. Dieser +% Mechanismus wird innerhalb von \cs{tud@abstractbody} verwendet. +% \begin{macrocode} +%<*report|article> +\csundef{abstract} +\csundef{endabstract} +%</report|article> +\NewEnviron{abstract}[1][]{% +% \end{macrocode} +% Sollten Überschriften in Form von Kapiteln gewählt worden sein, so wird +% temporär die \opt{titlepage}-Option aktivert, da alle weiteren notwendigen +% Einstellungen dieser entsprechen. Bei aktiver \opt{titlepage}-Option wird +% anschließend der aktuelle Seitenstil gesichert, um diesen nach der Umgebung +% wiederherstellen zu können. +% \begin{macrocode} + \ifnumless{\@nameuse{tud@abstract@level}}{3}{}{\@titlepagetrue}% + \if@titlepage% + \tud@currentpagestyle@set% + \clearpage\def\tud@ps{empty}% + \fi% +% \end{macrocode} +% Als nächstes werden die Optionen verarbeitet. Sollte nach Abarbeitung der +% Optionen für \env{abstract} festgestellt werden, dass eine spezielle +% Spaltenanzahl gewünscht ist, so wird~-- für den Fall, dass das Paket +% \pkg{multicol} geladen ist~-- diese gesetzt. Sonst wird die angegbene Anzahl +% der Spalten ignoriert und eine Warnung ausgegeben. Bei aktiver Option +% \opt{titlepage} kann über den Parameter \opt{pagestyle} der Seitenstil +% innerhalb der Umgebung geändert werden. Dieser wird automatisch auf +% \val{headings} gesetzt, wenn beidseitige Kolumnentitel verwendet werden. +% \begin{macrocode} + \TUD@parameter@set[abstract]{#1}% + \if@tud@abstract@markboth\def\tud@ps{headings}\fi% + \tud@multicols@check% + \if@titlepage\tud@ps@select\fi% + \tud@fm@check{abstract}{\tud@fm@set{abstract}{\abstractname}{\BODY}}% +% \end{macrocode} +% Nach der Umgebung wird bei aktiver \opt{titlepage}-Option der ursprüngliche +% Seitenstil zurückgesetzt. +% \begin{macrocode} +}[% + \if@titlepage% + \aftergroup\tud@currentpagestyle@reset% + \clearpage% + \fi% +] +% \end{macrocode} +% \end{environment}^^A abstract +% \begin{parameter}{language} +% \begin{parameter}{columns} +% \begin{parameter}{pagestyle} +% \changes{v2.02}{2014/07/19}{neu}%^^A +% \begin{parameter}{markboth} +% \changes{v2.02}{2014/11/05}{neu}%^^A +% \begin{parameter}{abstract} +% \begin{parameter}{option} +% Als Schlüssel für die \env{abstract}-Umgebung können Sprache, Anzahl der +% Spalten oder auch die zur Umgebung gehörigen Klassenoptionen angegeben werden. +% \begin{macrocode} +\TUD@parameter{abstract}{% + \TUD@parameter@define{language}{\selectlanguage{#1}}% + \TUD@parameter@define{columns}{\def\tud@multicols{#1}}% + \TUD@parameter@define{pagestyle}{\tud@fm@pagestyle{abstract}{#1}}% + \TUD@parameter@define{markboth}[true]{% + \ifstr{#1}{true}{\@tud@abstract@markbothtrue}{% + \ifstr{#1}{on}{\@tud@abstract@markbothtrue}{% + \ifstr{#1}{yes}{\@tud@abstract@markbothtrue}{% + \ifstr{#1}{false}{\@tud@abstract@markbothfalse}{% + \ifstr{#1}{no}{\@tud@abstract@markbothfalse}{% + \ifstr{#1}{off}{\@tud@abstract@markbothfalse}{% + \@tud@abstract@markbothfalse% + \manualmark\markboth{#1}{#1}% + }}}}}}% + }% + \TUD@parameter@define{abstract}{\TUDoption{abstract}{#1}}% + \TUD@parameter@define{option}{\TUDoption{abstract}{#1}}% +% \end{macrocode} +% Für die Optionsangabe ohne Schlüssel und Wert kann eine Anzahl an Spalten +% oder eine alternative Sprache angegeben werden. Hierfür ist der Befehl +% \cs{tud@environmenthandler} definiert, welcher auch von \env{tudpage}-Umgebung +% verwendet wird +% \begin{macrocode} + \TUD@parameter@sethandler{\tud@environmenthandler{#1}}% +} +% \end{macrocode} +% \end{parameter}^^A option +% \end{parameter}^^A abstract +% \end{parameter}^^A markboth +% \end{parameter}^^A pagestyle +% \end{parameter}^^A columns +% \end{parameter}^^A language +% \begin{macro}{\nextabstract} +% Um einzelne Abschnitte innerhalb einer Zusammenfassung trennen zu können, ist +% dieser Befehl notwendig. +% \begin{macrocode} +\newcommand*\nextabstract[1][]{% + \ifnum\tud@multicols>1\relax% + \end{multicols}% + \else% + \ifbool{@tud@abstract@multi}{% + \ifcase\@nameuse{tud@abstract@level}\relax\or% + \vspace{\dimexpr\bigskipamount-\parskip\relax}% + \fi% + }{}% + \fi% + \tud@fm@next{abstract}{#1}% + \ifnum\tud@multicols>1\relax% + \begin{multicols}{\tud@multicols}[{\tud@fm@head{abstract}{\abstractname}}]% + \else% + \tud@fm@head{abstract}{\abstractname}% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \nextabstract +% +% \iffalse +%</class&body> +%<*class&option> +% \fi +% +% \subsection{Befehle für Selbstständigkeitserklärung und Sperrvermerk} +% +% Die Befehle für Selbstständigkeitserklärung und Sperrvermerk werden +% äquivalent zur \env{abstract}-Umgebung mit den gleichen Optionen +% ausgestattet. +% \begin{macro}{\tud@declaration@level} +% \begin{macro}{\if@tud@declaration@toc} +% \begin{macro}{\if@tud@declaration@toc@locked} +% \begin{macro}{\if@tud@declaration@toc@leveldown} +% \changes{v2.02}{2014/11/05}{}%^^A +% \begin{macro}{\if@tud@declaration@markboth} +% \changes{v2.02}{2014/11/05}{neu}%^^A +% \begin{macro}{\if@tud@declaration@multi} +% \begin{macro}{\if@tud@declaration@fil} +% Siehe die Option \opt{abstract}. +% \begin{macrocode} +%<*report|article> +\newcommand*\tud@declaration@level{1} +\newbool@lock{@tud@declaration@toc} +%</report|article> +%<*book> +\newcommand*\tud@declaration@level{3} +\newbool@lock[true]{@tud@declaration@toc} +%</book> +\newif\if@tud@declaration@toc@leveldown +\newif\if@tud@declaration@markboth +\newif\if@tud@declaration@multi +\@tud@declaration@multitrue +\newif\if@tud@declaration@fil +\@tud@declaration@filtrue +% \end{macrocode} +% \end{macro}^^A \if@tud@declaration@fil +% \end{macro}^^A \if@tud@declaration@multi +% \end{macro}^^A \if@tud@declaration@markboth +% \end{macro}^^A \if@tud@declaration@toc@leveldown +% \end{macro}^^A \if@tud@declaration@toc@locked +% \end{macro}^^A \if@tud@declaration@toc +% \end{macro}^^A \tud@declaration@level +% \begin{option}{declaration} +% Siehe die Option \opt{abstract}. +% \begin{macrocode} +%<*report|article> +\TUD@key{declaration}[true]{% +%</report|article> +%<*book> +\TUD@key{declaration}[chapter]{% +%</book> + \edef\@tempb{\TUD@numkey@bool,\tud@fm@switch}% + \TUD@set@numkey{declaration}{@tempa}{\@tempb}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \ifcase \@tempa\relax% + \def\tud@declaration@level{0}% + \stdbool@lock{@tud@declaration@toc}{false}% + \or% + \def\tud@declaration@level{1}% + \stdbool@lock{@tud@declaration@toc}{false}% + \or% + \def\tud@declaration@level{2}% + \stdbool@lock{@tud@declaration@toc}{true}% + \or% +%<*book|report> + \def\tud@declaration@level{3}% + \stdbool@lock{@tud@declaration@toc}{true}% +%</book|report> + \or% + \stdbool@lock{@tud@declaration@toc}{true}% + \@tud@declaration@toc@leveldownfalse% + \or% + \stdbool@lock{@tud@declaration@toc}{true}% + \@tud@declaration@toc@leveldowntrue% + \or% + \stdbool@lock{@tud@declaration@toc}{false}% + \or% + \@tud@declaration@markbothtrue% + \or% + \@tud@declaration@markbothfalse% + \or% + \@tud@declaration@multifalse% + \or% + \@tud@declaration@multitrue% + \or% + \@tud@declaration@filfalse% + \or% + \@tud@declaration@filtrue% + \fi% + \fi% +} +% \end{macrocode} +% \end{option}^^A declaration +% +% \iffalse +%</class&option> +%<*class&body> +% \fi +% +% \begin{environment}{declarations} +% \begin{macro}{\if@tud@declarations} +% Die \env{declarations}-Umgebung wird ähnlich zur \env{abstract}-Umgebung +% definiert. Prinzipiell funktioniert diese genauso, inklusive der Parameter. +% Der Schalter \cs{if@tud@declarations} wird verwendet, um die weiteren Befehle +% \cs{declaration}, \cs{confirmation} und \cs{blocking} innerhalb und außerhalb +% dieser Umgebung verwenden zu können. +% \begin{macrocode} +\newif\if@tud@declarations +\NewEnviron{declarations}[1][]{% + \ifnumless{\@nameuse{tud@declaration@level}}{3}{}{\@titlepagetrue}% + \if@titlepage% + \tud@currentpagestyle@set% + \clearpage\def\tud@ps{empty}% + \fi% + \@tud@declarationstrue% + \TUD@parameter@set[declaration]{#1}% + \if@tud@declaration@markboth\def\tud@ps{headings}\fi% + \tud@multicols@check% + \if@titlepage\tud@ps@select\fi% + \tud@fm@check{declaration}{\BODY}% +}[% + \if@titlepage% + \aftergroup\tud@currentpagestyle@reset% + \clearpage% + \fi% +] +% \end{macrocode} +% \end{macro}^^A \if@tud@declarations +% \end{environment}^^A declarations +% \begin{parameter}{language} +% \begin{parameter}{columns} +% \changes{v2.02}{2014/07/19}{neu}%^^A +% \begin{parameter}{pagestyle} +% \changes{v2.02}{2014/07/19}{neu}%^^A +% \begin{parameter}{markboth} +% \changes{v2.02}{2014/11/05}{neu}%^^A +% \begin{parameter}{supporter} +% \begin{parameter}{place} +% \begin{parameter}{closing} +% \begin{parameter}{company} +% \begin{parameter}{declaration} +% \begin{parameter}{option} +% Dies sind die möglichen Schlüssel für die Befehle \cs{declaration}, +% \cs{confirmation} und \cs{blocking}. Die Schlüssel \opt{declaration} bzw. +% \opt{option} dienen zum Setzen der Werte, welche auch als Klassenoptionen +% gesetzt werden können. +% \begin{macrocode} +\TUD@parameter{declaration}{% + \TUD@parameter@define{language}{\selectlanguage{#1}}% + \TUD@parameter@define{columns}{\def\tud@multicols{#1}}% + \TUD@parameter@define{pagestyle}{\tud@fm@pagestyle{declaration}{#1}}% + \TUD@parameter@define{markboth}[true]{% + \ifstr{#1}{true}{\@tud@declaration@markbothtrue}{% + \ifstr{#1}{on}{\@tud@declaration@markbothtrue}{% + \ifstr{#1}{yes}{\@tud@declaration@markbothtrue}{% + \ifstr{#1}{false}{\@tud@declaration@markbothfalse}{% + \ifstr{#1}{no}{\@tud@declaration@markbothfalse}{% + \ifstr{#1}{off}{\@tud@declaration@markbothfalse}{% + \@tud@declaration@markbothfalse% + \manualmark\markboth{#1}{#1}% + }}}}}}% + }% + \TUD@parameter@define{company}{\def\@company{#1}}% + \TUD@parameter@define{supporter}{\def\@supporter{#1}}% + \TUD@parameter@define{place}{\def\@place{#1}}% + \TUD@parameter@define{closing}{\def\@confirmationclosing{#1}}% + \TUD@parameter@define{declaration}{\TUDoption{declaration}{#1}}% + \TUD@parameter@define{option}{\TUDoption{declaration}{#1}}% +% \end{macrocode} +% Für die Optionsangabe ohne Schlüssel und Wert kann eine Anzahl an Spalten +% oder eine alternative Sprache angegeben werden. Hierfür ist der Befehl +% \cs{tud@environmenthandler} definiert, welcher auch von \env{tudpage}-Umgebung +% verwendet wird +% \begin{macrocode} + \TUD@parameter@sethandler{\tud@environmenthandler{#1}}% +} +% \end{macrocode} +% \end{parameter}^^A option +% \end{parameter}^^A declaration +% \end{parameter}^^A company +% \end{parameter}^^A closing +% \end{parameter}^^A place +% \end{parameter}^^A supporter +% \end{parameter}^^A markboth +% \end{parameter}^^A pagestyle +% \end{parameter}^^A columns +% \end{parameter}^^A language +% \begin{macro}{\declaration} +% \changes{v2.02}{2014/07/18}{Neuimplementierung für \pkg{scrlayer-scrpage}}%^^A +% Dieser Befehl dient zur Ausgabe von sowohl Selbstständigkeitserklärung als +% auch Sperrvermerk. Über das optionale Argument kann ohne Schlüssel die +% gewünschte Sprache eingestellt werden. Zusätzlich können Optionen als +% Schlüssel-Wert-Paare angegeben werden. +% \begin{macrocode} +\newcommand*\declaration[1][]{% + \ifbool{@tud@declarations}{% + \begingroup% + \TUD@parameter@set[declaration]{#1}% + \tud@fm@confirmation% + \tud@fm@blocking + \endgroup% + }{% + \begin{declarations}[#1]% + \tud@fm@confirmation% + \tud@fm@blocking% + \end{declarations}% + }% +} +% \end{macrocode} +% \end{macro}^^A \declaration +% \begin{macro}{\confirmation} +% \changes{v2.02}{2014/07/18}{Neuimplementierung für \pkg{scrlayer-scrpage}}%^^A +% \begin{macro}{\tud@fm@confirmation} +% \changes{v2.02}{2014/07/18}{neu}%^^A +% Mit diesem Befehl kann die Selbstständigkeitserklärung ausgegeben werden. Das +% optionale Argument bestimmt, wer als Unterstützer angegeben wird. Außerdem +% sind Schlüssel-Wert-Paare als Option nutzbar. +% \begin{macrocode} +\newcommand*\confirmation[1][]{% +% \end{macrocode} +% Damit das optionale Argument ohne Schlüssel für die Unterstützer verwendet +% werden kann, wird der Handler umdefiniert. +% \begin{macrocode} + \TUD@parameter@sethandler[declaration]{\def\@supporter{##1}}% + \ifbool{@tud@declarations}{% + \begingroup% + \TUD@parameter@set[declaration]{#1}% + \tud@fm@confirmation% + \endgroup% + }{% + \begin{declarations}[#1]% + \tud@fm@confirmation% + \end{declarations}% + }% +% \end{macrocode} +% Der Handler wird auf das ursprüngliche Verhalten zurückgesetzt. +% \begin{macrocode} + \TUD@parameter@sethandler[declaration]{\tud@environmenthandler{##1}}% +} +% \end{macrocode} +% Dies ist der eigentliche Inhalt des Befehls \cs{confirmation}. +% \begin{macrocode} +\newcommand*\tud@fm@confirmation{% + \tud@fm@check{declaration}{% + \tud@fm@set{declaration}{\confirmationname}{% + \confirmationtext\vskip0pt\@confirmationclosing% + }% + }% +} +% \end{macrocode} +% \end{macro}^^A \tud@fm@confirmation +% \end{macro}^^A \confirmation +% \begin{macro}{\blocking} +% \changes{v2.02}{2014/05/16}{neu, \cs{restriction} umbenannt}%^^A +% \changes{v2.02}{2014/07/18}{an \pkg{scrlayer-scrpage} angepasst}%^^A +% \begin{macro}{\tud@fm@blocking} +% \changes{v2.02}{2014/07/18}{neu}%^^A +% Für den Sperrvermerk wird äquivalent zu \cs{confirmation} verfahren. Das +% optionale Argument ohne Schlüssel setzt hier die Firma für den Sperrvermerk. +% \begin{macrocode} +\newcommand*\blocking[1][]{% + \TUD@parameter@sethandler[declaration]{\def\@company{##1}}% + \ifbool{@tud@declarations}{% + \begingroup% + \TUD@parameter@set[declaration]{#1}% + \tud@fm@blocking% + \endgroup% + }{% + \begin{declarations}[#1]% + \tud@fm@blocking% + \end{declarations}% + }% + \TUD@parameter@sethandler[declaration]{\tud@environmenthandler{##1}}% +} +% \end{macrocode} +% Dies ist der eigentliche Inhalt des Befehls \cs{blocking}. +% \begin{macrocode} +\newcommand*\tud@fm@blocking{% + \tud@fm@check{declaration}{% + \tud@fm@set{declaration}{\blockingname}{\blockingtext}% + }% +} +% \end{macrocode} +% \end{macro}^^A \tud@fm@blocking +% \end{macro}^^A \blocking +% +% \iffalse +%</class&body> +% \fi +% +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr-layout.dtx b/Master/texmf-dist/source/latex/tudscr/tudscr-layout.dtx new file mode 100644 index 00000000000..50ea0d764dd --- /dev/null +++ b/Master/texmf-dist/source/latex/tudscr/tudscr-layout.dtx @@ -0,0 +1,1532 @@ +% \CheckSum{1021} +% \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-layout.dtx +%<*driver> +\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi +\ProvidesFile{tudscr-layout.dtx}[% + 2014/11/21 v2.02 TUD-KOMA-Script (layout)% +] +\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-layout.dtx} +\begin{document} + \maketitle + \DocInput{\filename} +\end{document} +%</driver> +% \fi +% +% \selectlanguage{ngerman} +% +% \changes{v2.02}{2014/07/08}{Nutzung \cs{FamilyKeyState}}%^^A +% +% \section{Das Layout des \CDs} +% +% Für das \CD werden sowohl Teile- als auch die Kapitelseiten neu gestaltet. +% Es werden eine monochrome Version, eine Version mit leichtem Farbeinsatz und +% eine durchweg farbige Version bereitgestellt. Außerdem wird hier das Aussehen +% und die Position der Überschriften festgelegt. +% +% \StopEventually{\PrintIndex\PrintChanges} +% +% \iffalse +%<*class&option> +% \fi +% +% \subsection{Optionen} +% +% \begin{macro}{\tud@head@color} +% Dieses Makro definiert die Farbe des Kopfes. Diese kann durch die +% entsprechende Option der \env{tudpage}"=Umgebung geändert werden. Außerdem +% gibt es für Titel, Teil und Kapitel speziell dazugehörige Farben, so dass +% das Aussehen des Kopfes ggf. angepasst wird. +% \begin{macrocode} +\newcommand*\tud@head@color{black} +% \end{macrocode} +% \end{macro}^^A \tud@head@color +% \begin{option}{cd} +% \begin{macro}{\tud@cd} +% \begin{macro}{\tud@layout@cover} +% \changes{v2.02}{2014/08/08}{neu}^^A +% \begin{macro}{\tud@layout@title} +% \begin{macro}{\tud@layout@part} +% \begin{macro}{\tud@layout@chapter} +% \begin{macro}{\tud@layout@switch} +% Ein zentraler Teil der Wrapper-Klassen ist die Auswahl der Darstellung des +% \CDs. Dabei kann gewählt werden, ob es einfarbig, mit leichtem oder aber mit +% starkem Farbeinsatz genutzt werden soll. Diese Option dient zur globalen +% Einstellung für Cover- Titel-, Teil- und Kapitelseiten. Mit dem Schalter +% werden die gleichen Einstellungen für alle drei Komponenten gesetzt. Die +% Standardfarbe des Kopfes der \env{tudpage}"=Seite ist schwarz und wird für +% die farbigen Layouts auf dunkelblau gesetzt. Abhängig von der gewählten +% Option, die über \cs{tud@layout@switch} festgelegt ist, werden die +% sogenannten Layoutschlüssel (\cs{tud@layout@\dots}) auf einen Wert gesetzt +% (0\dots 3), welcher im weiteren Verlauf ausgewertet werden kann. Der Schalter +% für Kapitel wird lediglich für \cls{tudscrbook}- und \cls{tudscrreprt} jedoch +% nicht für die \cls{tudscrartcl}-Klasse definiert und genutzt. Eigentlich +% werden alle Komponenten mit einer zentralen Option festgelegt, können aber +% auch durch den Nutzer explizit überschrieben werden. +% \begin{macrocode} +\newcommand*\tud@cd{0} +\csdef@lock{tud@layout@cover}{0} +\csdef@lock{tud@layout@title}{0} +\csdef@lock{tud@layout@part}{0} +%<*book|report> +\csdef@lock{tud@layout@chapter}{0} +%</book|report> +% \end{macrocode} +% Dies sind die Standardoptionen für alle einzelnen Einstellungen des Layouts. +% Es gibt die Varianten monochrom~(1), leichter~(2) und voller Farbeinsatz~(3) +% sowie die Möglichkeit, das \CD vollständig zu deaktivieren (0). +% \begin{macrocode} +\newcommand*\tud@layout@switch{} +\edef\tud@layout@switch{% + \TUD@numkey@bool,% + {simple}{1},{std}{1},{standard}{1},{mono}{1},{monochrom}{1},% + {lite}{2},{colorlite}{2},{litecolor}{2},{colourlite}{2},{litecolour}{2},% + {light}{2},{colorlight}{2},{lightcolor}{2},{colourlight}{2},{lightcolour}{2},% + {pale}{2},{colorpale}{2},{palecolor}{2},{colourpale}{2},{palecolour}{2},% + {full}{3},{colorfull}{3},{fullcolor}{3},{colourfull}{3},{fullcolour}{3},% + {color}{3},{colour}{3}% +} +% \end{macrocode} +% Es folgt die eigentliche Option. +% \begin{macrocode} +\TUD@key{cd}[true]{% + \TUD@set@numkey{cd}{tud@cd}{\tud@layout@switch}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \def\tud@head@color{black}% + \ifcase \tud@cd\relax% + \csstd@lock{tud@layout@cover}{0}% + \csstd@lock{tud@layout@title}{0}% + \csstd@lock{tud@layout@part}{0}% +%<*book|report> + \csstd@lock{tud@layout@chapter}{0}% +%</book|report> + \or% + \csstd@lock{tud@layout@cover}{1}% + \csstd@lock{tud@layout@title}{1}% + \csstd@lock{tud@layout@part}{1}% +%<*book|report> + \csstd@lock{tud@layout@chapter}{1}% +%</book|report> + \or% + \def\tud@head@color{HKS41}% +% \end{macrocode} +% Die Umschlagseite wird standardmäßig immer monochrom gesetzt. +% \begin{macrocode} + \csstd@lock{tud@layout@cover}{1}% + \csstd@lock{tud@layout@title}{2}% + \csstd@lock{tud@layout@part}{2}% +%<*book|report> + \csstd@lock{tud@layout@chapter}{2}% +%</book|report> + \or% + \def\tud@head@color{HKS41}% + \csstd@lock{tud@layout@cover}{1}% + \csstd@lock{tud@layout@title}{3}% +% \end{macrocode} +% Ein komplett farbiges Layout ist bloß für Klassen mit Teil- und Kapitelseiten +% (\cls{tudscrbook} und \cls{tudscrreprt}) möglich. Ansonsten werden lediglich +% die Überschriften, jedoch nicht der Seitenhintergrund farbig gestaltet. +% \begin{macrocode} +%<*article> + \csstd@lock{tud@layout@part}{2}% +%</article> +%<*book|report> + \csstd@lock{tud@layout@part}{3}% + \csstd@lock{tud@layout@chapter}{3}% +%</book|report> +% \end{macrocode} +% Die Klassenoptionen \opt{chapterpage} und \opt{widehead} werden für den +% Fall der komplett farbigen Darstellung standardmäßig aktiviert +% können allerdings vom Anwender überschrieben werden. +% \begin{macrocode} +%<*book|report> + \TUD@std@ifkey@lock{chapterpage}{true}% + \TUD@std@ifkey@lock{widehead}{true}% +%</book|report> + \fi% +% \end{macrocode} +% Die Ausführung des Befehls \cs{tud@layout@process} sorgt dafür, dass alle +% Optionen auch verarbeitet und wirksam werden. Dieser wird standardmäßig nach +% der Abarbeitung aller Optionen innerhalb der Präambel einmalig ausgeführt. +% Deshalb wird er hier nur innerhalb des Dokumentes genutzt. Dies gilt auch für +% die folgenden Optionen. +% \begin{macrocode} + \if@atdocument% + \tud@layout@process% + \else% +% \end{macrocode} +% Innerhalb der Präambel wird der Satzspiegel abhängig vom gewünschten Layout +% festgelegt. Dies kann vom Benutzer mit dem Setzen der Option \opt{geometry} +% überschrieben werden. +% \begin{macrocode} + \ifcase \tud@cd\relax% + \TUD@std@numkey@lock{geometry}{false}% + \else% + \TUD@std@numkey@lock{geometry}{true}% + \fi% + \fi% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@layout@switch +% \end{macro}^^A \tud@layout@chapter +% \end{macro}^^A \tud@layout@part +% \end{macro}^^A \tud@layout@title +% \end{macro}^^A \tud@layout@cover +% \end{macro}^^A \if@tud@cd +% \end{option}^^A cd +% \begin{option}{cdcover} +% \changes{v2.02}{2014/08/08}{neue Option für \cs{makecover}}^^A +% Das durch die Option \opt{cd} insgesamt festgelegte Layout kann für die +% einzelnen Elemente Umschlagseite (\opt{cdcover}),\dots +% \begin{macrocode} +\TUD@key{cdcover}[true]{% + \TUD@set@numkey{cdcover}{@tempa}{\tud@layout@switch}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \ifcase \@tempa\relax% + \csset@lock{tud@layout@cover}{0}% + \or% + \csset@lock{tud@layout@cover}{1}% + \or% + \csset@lock{tud@layout@cover}{2}% + \or% + \csset@lock{tud@layout@cover}{3}% + \fi% + \if@atdocument\tud@layout@process\fi% + \fi% +} +% \end{option}^^A cdcover +% \begin{option}{cdtitle} +% \dots Titel (\opt{cdtitle}),\dots +% \begin{macrocode} +\TUD@key{cdtitle}[true]{% + \TUD@set@numkey{cdtitle}{@tempa}{\tud@layout@switch}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \ifcase \@tempa\relax% + \csset@lock{tud@layout@title}{0}% + \or% + \csset@lock{tud@layout@title}{1}% + \or% + \csset@lock{tud@layout@title}{2}% + \or% + \csset@lock{tud@layout@title}{3}% + \fi% + \if@atdocument\tud@layout@process\fi% + \fi% +} +% \end{macrocode} +% \end{option}^^A cdtitle +% \begin{option}{cdpart} +% \dots Teile- (\opt{cdpart}) und\dots +% \begin{macrocode} +\TUD@key{cdpart}[true]{% + \TUD@set@numkey{cdpart}{@tempa}{\tud@layout@switch}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \ifcase \@tempa\relax% + \csset@lock{tud@layout@part}{0}% + \or% + \csset@lock{tud@layout@part}{1}% + \or% + \csset@lock{tud@layout@part}{2}% + \or% +%<*article> + \csset@lock{tud@layout@part}{2}% +%</article> +%<*book|report> + \csset@lock{tud@layout@part}{3}% +%</book|report> + \fi% + \if@atdocument\tud@layout@process\fi% + \fi% +} +% \end{macrocode} +% \end{option}^^A cdpart +% \begin{option}{cdchapter} +% \dots bei den entsprechenden Klassen (\cls{tudscrbook} und \cls{tudscrreprt}) +% auch für die Kapitelseiten (\opt{cdchapter}) separat für die einzelnen +% Elemente geändert bzw. überschrieben werden. +% \begin{macrocode} +%<*book|report> +\TUD@key{cdchapter}[true]{% + \TUD@set@numkey{cdchapter}{@tempa}{\tud@layout@switch}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \ifcase \@tempa\relax% + \csset@lock{tud@layout@chapter}{0}% + \TUD@std@ifkey@lock{chapterpage}{false}% + \or% + \csset@lock{tud@layout@chapter}{1}% + \TUD@std@ifkey@lock{chapterpage}{false}% + \or% + \csset@lock{tud@layout@chapter}{2}% + \TUD@std@ifkey@lock{chapterpage}{false}% + \or% + \csset@lock{tud@layout@chapter}{3}% + \TUD@std@ifkey@lock{chapterpage}{true}% + \fi% + \if@atdocument\tud@layout@process\fi% + \fi% +} +%</book|report> +% \end{macrocode} +% \end{option}^^A cdchapter +% \begin{option}{headings} +% Die \KOMAScript-Option \opt{headings} setzt die Formatierung aller +% Überschriften zurück. Damit die Einstellungen für das \CD aktiv bleiben, +% werden nach der Ausführung der Option die mit \cs{tud@font@koma@set} +% definierten Makros \cs{tud@font@koma@\meta{Element}} erneut an die +% entsprechenden Schriftelemente angehängt. +% \begin{macrocode} +\DefineFamilyMember{KOMA} +\DefineFamilyKey{KOMA}{headings}{% + \AtEndOfFamilyOptions{% + \let\tud@font@heading@size\size@part% + \tud@layout@process% + \ifcase \tud@layout@part\relax\else% + \tud@font@koma@reset{part}% + \tud@font@koma@reset{partnumber}% +%<*book|report> + \fi% + \ifcase \tud@layout@chapter\relax\else% + \tud@font@koma@reset{chapter}% + \tud@font@koma@reset{chapterprefix}% + \let\chapterheadstartvskip\tud@chapterheadstartvskip% +%</book|report> + \tud@font@koma@reset{section}% + \tud@font@koma@reset{subsection}% + \tud@font@koma@reset{subsubsection}% + \tud@font@koma@reset{minisec}% + \fi% + }% +} +% \end{macrocode} +% \end{option}^^A headings +% +% \iffalse +%<*book|report> +% \fi +% +% Die nun folgenden Optionen und Befehle werden nur für die beiden Klassen +% \cls{tudscrbook} und \cls{tudscrreprt} definiert. +% \begin{option}{parttitle} +% \begin{macro}{\if@tud@parttitle} +% \begin{macro}{\if@tud@parttitle@locked} +% Der Schalter dient zur Steuerung, ob der Titel des Dokumentes wie im Handbuch +% des \CDs auf den Teileseiten stehen soll. +% \begin{macrocode} +\newif\if@tud@parttitle +\TUD@key@lock{parttitle}[true]{% + \TUD@set@ifkey@lock{parttitle}{@tud@parttitle}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \if@atdocument\tud@layout@process\fi% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \if@tud@parttitle@locked +% \end{macro}^^A \if@tud@parttitle +% \end{option}^^A parttitle +% \begin{option}{chapterpage} +% \begin{macro}{\if@tud@chapterpage} +% \begin{macro}{\if@tud@chapterpage@locked} +% Mit dieser Option können Kapitelüberschriften alleine auf einer Seite stehen. +% Es werden separate Kapitelseiten erzeugt. +% \begin{macrocode} +\newif\if@tud@chapterpage +\TUD@key@lock{chapterpage}[true]{% + \TUD@set@ifkey@lock{chapterpage}{@tud@chapterpage}{#1}% +} +% \end{macrocode} +% \end{macro}^^A \if@tud@chapterpage@locked +% \end{macro}^^A \if@tud@chapterpage +% \end{option}^^A chapterpage +% \begin{option}{cleardoublespecialpage} +% \changes{v2.02}{2014/07/08}{Nutzung als globale Klassenoption mit Werten für +% Seitenstile aus den \KOMAScript{} bzw. \TUDScript-Klassen}%^^A +% \begin{macro}{\tud@cleardoublepage} +% \begin{macro}{\tud@cleardoublespecialpage} +% Für Klassen mit separaten Teileseiten und Kapiteln wird eine zusätzliche +% Option definiert, welche nur bei zweiseitigem Satz (\opt{twoside}) und +% zusätzlich immer auf nur der rechten Seite öffnenden Teilen bzw. Kapiteln +% (\opt{open=right}) zum Tragen kommen. +% +% Diese Option steuert, ob die Rückseite von Titel, Teilen und ggf. auch bei +% separaten Kapitelseiten\footnote{bei aktivierter \opt{chapterpage}"=Option} +% entweder zwingend als leere Seite oder aber ~-- abhängig von der +% \KOMAScript-Option \opt{cleardoublepage}~-- als Vakatseite ausgegeben werden. +% Auch die Festlegung eines bestimmten Seitenstiles ist möglich. +% +% Der Befehl \cs{tud@cleardoublepage} enthält die Definition der zu erzeugenden +% Doppelseite. +% \begin{macrocode} +\newcommand*\tud@cleardoublepage{\cleardoubleoddpage} +% \end{macrocode} +% Mit der Option \opt{cleardoublespecialpage} kann dieser festgelegt werden. +% \begin{macrocode} +\TUD@key{cleardoublespecialpage}[true]{% + \TUD@set@ifkey{cleardoublespecialpage}{@tempswa}{#1}% +% \end{macrocode} +% Dabei wird die Rückseite entweder wie alle Vakatseiten oder leer gesetzt. +% \begin{macrocode} + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \if@tempswa% + \def\tud@cleardoublepage{\cleardoubleoddpage}% + \else% + \def\tud@cleardoublepage{\null\thispagestyle{empty}\newpage}% + \fi% + \else% +% \end{macrocode} +% Zusätzlich wird die Seite ggf. auch farbig ausgegeben (s. \opt{color}). +% \begin{macrocode} + \ifstr{#1}{color}{\TUDoptions{clearcolor=true}}{% + \ifstr{#1}{colour}{\TUDoptions{clearcolor=true}}{% +% \end{macrocode} +% Außerdem kann ein Seitenstil gezielt ausgewählt werden. +% \begin{macrocode} + \ifstr{#1}{current}{% + \def\tud@cleardoublepage{\cleardoubleoddstandardpage}% + \FamilyKeyStateProcessed% + }{% + \ifcsdef{ps@#1}{% + \def\tud@cleardoublepage{\cleardoubleoddpageusingstyle{#1}}% + \FamilyKeyStateProcessed% + }{% +% \end{macrocode} +% Beim Laden der Klasse selbst sind die speziellen Seitenstile der \KOMAScript- +% bzw. \TUDScript-Klassen noch nicht definiert. Diese sollen als Werte jedoch +% trotzdem erlaubt sein. +% \begin{macrocode} + \ifx\@currname\tudcls@name% + \ifx\@currext\@clsextension% + \ifstr{#1}{headings}{% + \def\tud@cleardoublepage{\cleardoubleoddpageusingstyle{#1}}% + \FamilyKeyStateProcessed% + }{% + \tud@ifinpslist{#1}{% + \def\tud@cleardoublepage{\cleardoubleoddpageusingstyle{#1}}% + \FamilyKeyStateProcessed% + }{}% + }% + \fi% + \fi% + }% + }}}% + \fi% +} +% \end{macrocode} +% Der Befehl \cs{tud@cleardoublespecialpage} dient zur eigentlichen Umsetzung. +% Das obligatorische Argument enthält alles, was innerhalb der Gruppe an +% lokalen Einstellungen vorgenommen werden soll. Das optionale Argument wird +% ggf. genutzt, um einen Inhalt auf der Rückseite auszugeben. +% \begin{macrocode} +\newcommand*\tud@cleardoublespecialpage[2][]{% + \begingroup% + #2% + \ifboolexpr{bool {@twoside} and bool {@openright}}{% + \if@tud@clearcolor% + \def\@tempa{% + #1% + \tud@cleardoublepage% + \tud@restorepagecolor% + \endgroup% + }% + \else% + \def\@tempa{% + \endgroup% + \tud@restorepagecolor% + #1% + \tud@cleardoublepage% + }% + \fi% + }{% + \if@tud@clearcolor\tud@clearcolor@wrn\fi% + \def\@tempa{% + \tud@restorepagecolor% + \endgroup% + #1% + }% + }% + \@tempa% + \@afterindentfalse\@afterheading% +} +% \end{macrocode} +% \end{macro}^^A \tud@cleardoublespecialpage +% \end{macro}^^A \tud@cleardoublepage +% \end{option}^^A cleardoublespecialpage +% \begin{option}{clearcolor} +% \begin{option}{clearcolour} +% \begin{macro}{\if@tud@clearcolor} +% Bei starkem Farbeinsatz im Stil des \CDs auf Titel- Teil- oder Kapitelseiten +% (\opt{cd\dots=color}) wird die entsprechende Rückseite in der gleichen +% Farbe wie die dazugehörige Vorderseite gestaltet. Für Teile- bzw. +% Kapitelseiten muss die entsprechende Option aktiviert sein.% +% \footnote{\opt{cleardoublespecialpage}} +% \begin{macrocode} +\newif\if@tud@clearcolor +\TUD@ifkey{clearcolor}{@tud@clearcolor} +\TUD@ifkey{clearcolour}{@tud@clearcolor} +% \end{macrocode} +% \end{macro}^^A \if@tud@clearcolor +% \end{option}^^A clearcolour +% \end{option}^^A clearcolor +% Damit endet der exklusive Abschnitt für \cls{tudscrbook}- und +% \cls{tudscrreprt}-Klasse. +% +% \iffalse +%</book|report> +%</class&option> +%<*class&body> +% \fi +% +% \subsection{Umsetzung des Layouts} +% +% Unter Layout wird die Wahl von Schriftart und "~größe, die Positionierung +% verschiedener Textelemente sowie die farbliche Gestaltung verstanden. Für das +% \CD gibt es dabei drei Ausprägungen, die für die verschiedenen Elemente +% auch unabhängig gewählt werden können. +% \begin{macro}{\tud@color@partfont} +% \begin{macro}{\tud@color@partpage} +% \begin{macro}{\tud@color@parthead} +% \begin{macro}{\tud@color@chapterfont} +% \begin{macro}{\tud@color@chapterpage} +% Die Makros werden für die Hintergrundfarbe der Seiten und die Farbe der +% Überschriften verwendet. +% \begin{macrocode} +\newcommand*\tud@color@partfont{black} +%<*book|report> +\newcommand*\tud@color@partpage{white} +\newcommand*\tud@color@parthead{black} +\newcommand*\tud@color@chapterfont{black} +\newcommand*\tud@color@chapterpage{white} +%</book|report> +% \end{macrocode} +% \end{macro}^^A \tud@color@chapterpage +% \end{macro}^^A \tud@color@chapterfont +% \end{macro}^^A \tud@color@parthead +% \end{macro}^^A \tud@color@partpage +% \end{macro}^^A \tud@color@partfont +% \begin{KOMAfont}{tud@heading} +% \changes{v2.02}{2014/08/24}{entfernt}%^^A +% \begin{KOMAfont}{parttitle} +% \begin{macro}{\tud@font@heading} +% \begin{macro}{\tud@font@heading@size} +% \begin{macro}{\tud@font@heading@numsize} +% \changes{v2.02}{2014/08/24}{entfernt}%^^A +% \begin{macro}{\tud@font@part} +% \changes{v2.02}{2014/08/24}{entfernt}%^^A +% \begin{macro}{\tud@font@part@number} +% \changes{v2.02}{2014/06/23}{entfernt}%^^A +% \begin{macro}{\tud@font@part@title} +% \changes{v2.02}{2014/06/23}{entfernt}%^^A +% \begin{macro}{\tud@font@chapter} +% \changes{v2.02}{2014/08/24}{entfernt}%^^A +% Mit \cs{tud@font@heading} wird die Schriftart für Überschriften definiert. +% Falls die Schriftarten des \CDs installiert wurden, wird DIN-Bold verwendet, +% sonst die Standardüberschriften. +% \begin{macrocode} +\newcommand*\tud@font@heading{% + \if@tud@din\dinbn\tud@raggedright\else\tud@RaggedRight\fi% +} +\newcommand*\tud@font@heading@size{\Huge} +% \end{macrocode} +% Anschließend wird das Schriftelement für die Option \opt{parttitle} erstellt. +% \begin{macrocode} +\newkomafont{parttitle}{% + \tud@font@heading% + \color{\tud@color@partfont}% + \usesizeofkomafont{section}% +} +% \end{macrocode} +% \end{macro}^^A \tud@font@chapter +% \end{macro}^^A \tud@font@part@title +% \end{macro}^^A \tud@font@part@number +% \end{macro}^^A \tud@font@part +% \end{macro}^^A \tud@font@heading@numsize +% \end{macro}^^A \tud@font@heading@size +% \end{macro}^^A \tud@font@heading +% \end{KOMAfont}^^A parttitle +% \end{KOMAfont}^^A tud@heading +% \begin{length}{\pageheadingsvskip} +% \changes{v2.02}{2014/06/23}{neu}%^^A +% \begin{length}{\headingsvskip} +% \changes{v2.02}{2014/06/23}{neu}%^^A +% Mit diesen Längen kann der Anwender die Überschriften von Titel, Teilen und +% Kapiteln vertikal von ihrer Standardposition verschieben, welche vom \CD +% eigentlich vorgegeben ist. Die Länge \cs{pageheadingsvskip} verschiebt dabei +% Überschriften, welche allein auf einer Seite stehen, also Überschriften von +% Teilen oder auf Kapitelseiten. Auch die vertikale Position des Titels kann +% damit beeinflusst werden. Mit \cs{headingsvskip} werden Überschriften von +% Kapiteln oder aber die des Titelkopfes (\opt{titlepage=false}) verschoben, +% bei denen nach der Überschrift direkt der Fließtext folgt. +% \begin{macrocode} +\newlength{\pageheadingsvskip} +\newlength{\headingsvskip} +% \end{macrocode} +% \end{length}^^A \headingsvskip +% \end{length}^^A \pageheadingsvskip +% \begin{macro}{\tud@layout@process} +% \changes{v2.02}{2014/08/29}{Anpassungen für \pkg{fontspec}}%^^A +% Dieser Befehl kümmert sich darum, dass die gewählten Optionen für den +% Seitenstil auch umgesetzt werden. Dabei wird insbesondere darauf Wert gelegt, +% dass die Optionen auch zur Laufzeit geändert und wiederhergestellt werden +% können. +% \begin{macrocode} +\newcommand*\tud@layout@process{% +% \end{macrocode} +% Die Einstellungen für die Umschlagseite. Je nachdem, ob das \CD verwendet +% wird, wird der Satzspiegel standardmäßig umgestellt oder eben nicht. +% \begin{macrocode} + \ifcase \tud@layout@cover\relax% + \stdbool@lock{@tud@cover@cdlayout}{false}% + \else% + \stdbool@lock{@tud@cover@cdlayout}{true}% + \fi% +% \end{macrocode} +% Die Einstellungen für den Titel. Vor dessen Umstellung werden die relevanten +% Originalbefehle mit \cs{tud@cmd@store}\marg{Befehl} gesichert, damit diese +% später gegebenenfalls mit \cs{tud@cmd@restore}\marg{Befehl} wiederhergestellt +% werden können. +% \begin{macrocode} + \ifcase \tud@layout@title\relax% + \tud@cmd@restore{maketitle}% + \tud@cmd@restore{@maketitle}% + \tud@cmd@restore{titlepagestyle}% + \tud@font@koma@unset{titlehead}% + \tud@font@koma@unset{title}% + \tud@font@koma@unset{subtitle}% + \tud@font@koma@unset{subject}% + \tud@font@koma@unset{author}% + \tud@font@koma@unset{date}% + \tud@font@koma@unset{publishers}% + \else% + \tud@cmd@store{maketitle}% + \tud@cmd@store{@maketitle}% + \tud@cmd@store{titlepagestyle}% + \tud@font@koma@set{titlehead}{\usekomafont{titlepage}}% + \tud@font@koma@set{title}{% + \usekomafont{disposition}% + \tud@font@heading% + \tud@font@heading@size% + \color{\tud@color@titlefont}% + }% + \tud@font@koma@set{subtitle}{% + \tud@font@heading% + \usesizeofkomafont{section}% + \color{\tud@color@titlefont}% + }% + \tud@font@koma@set{subject}{% + \fontfamily{\sfdefault}% + \fontseries{\bfdefault}% + \selectfont% + \color{\tud@color@titlefont}% + }% + \tud@font@koma@set{author}{\usekomafont{subject}}% + \tud@font@koma@set{date}{\usekomafont{titlepage}}% + \tud@font@koma@set{publishers}{\usekomafont{author}}% + \let\maketitle\tud@maketitle% + \renewcommand*\titlepagestyle{plain.tudheadings}% + \fi% +% \end{macrocode} +% Das gleiche für die Teileseiten. +% \begin{macrocode} + \ifcase \tud@layout@part\relax% + \tud@cmd@restore{partheadstartvskip}% + \tud@cmd@restore{partheadmidvskip}% +%<*book|report> + \tud@cmd@restore{partheadendvskip}% + \tud@cmd@restore{partheademptypage}% + \tud@cmd@restore{partpagestyle}% +%</book|report> + \tud@cmd@restore{@part}% +%<*book|report> + \tud@cmd@restore{@spart}% +%</book|report> + \tud@sectioning@reset[addpart]{part}% + \tud@font@koma@unset{partnumber}% +% \end{macrocode} +% Es werden die Standardbefehle gesichert und für das \CD angepasst. +% \begin{macrocode} + \else% + \tud@cmd@store{partheadstartvskip}% + \tud@cmd@store{partheadmidvskip}% +%<*book|report> + \tud@cmd@store{partheadendvskip}% + \tud@cmd@store{partheademptypage}% + \tud@cmd@store{partpagestyle}% +%</book|report> + \tud@cmd@store{@part}% +%<*book|report> + \tud@cmd@store{@spart}% +%</book|report> +% \end{macrocode} +% Es wird die Schriftfarbe, "~größe und "~art angepasst, je nachdem ob der +% Titel des Dokumentes auf den Teileseiten auftauchen soll oder eben nicht. +% \begin{macrocode} +%<*book|report> + \if@tud@parttitle% + \tud@sectioning@set[addpart]{part}{\usekomafont{parttitle}}% + \tud@font@koma@set{partnumber}{\usekomafont{parttitle}}% + \renewcommand*\partheadmidvskip{\enskip}% + \else% + \tud@sectioning@set[addpart]{part}{% + \tud@font@heading% + \color{\tud@color@partfont}% + }% + \tud@font@koma@set{partnumber}{% + \tud@font@heading% + \color{\tud@color@partfont}% + }% + \renewcommand*\partheadmidvskip{\par\nobreak\vspace{.5\baselineskip}}% + \fi% +%</book|report> +% \end{macrocode} +% Für die Artikel-Klasse gibt es die \opt{parttitle}-Option nicht. +% \begin{macrocode} +%<*article> + \tud@sectioning@set[addpart]{part}{% + \tud@font@heading% + \color{\tud@color@partfont}% + }% + \tud@font@koma@set{partnumber}{% + \tud@font@heading% + \color{\tud@color@partfont}% + }% + \renewcommand*\partheadmidvskip{\par\nobreak\vskip.3\baselineskip}% +%</article> +% \end{macrocode} +% Einigen Makros werden mittels \cs{let} Definitionen von anderen Makros +% zugewiesen, die sich wiederum am Original orientieren. Hintergrund ist, dass +% die originalen Befehle angepasst werden sollen. Damit dies nicht bei jeder +% Optionswahl sondern nur einmalig geschehen muss und um möglichst einfach auf +% die Originaldefinition zurückschalten zu können, wird so verfahren. Die +% angepassten Befehle selbst und die dazugehörige Beschreibung sind etwas +% weiter unten im Quelltext zu finden. +% \begin{macrocode} + \let\partheadstartvskip\tud@partheadstartvskip% +%<*book|report> + \let\partheadendvskip\tud@partheadendvskip% + \renewcommand*\partheademptypage{}% + \renewcommand*\partpagestyle{plain.tudheadings}% +%</book|report> + \let\@part\tud@@part% +%<*book|report> + \let\@spart\tud@@spart% +%</book|report> + \fi% +% \end{macrocode} +% Die Einstellungen für die Kapitel bzw. die folgenden Gliederungsebenen. Auch +% hier werden alle relevanten Befehle gesichert, damit diese wiederhergestellt +% werden können. Verständlicherweise fällt für die \cls{tudscrartcl}-Klasse +% der Anteil für die Kapitel weg. Das Verhalten der nachgelagerten +% Gliederungsebenen orientiert für diese Klasse an den Einstellungen für die +% Teileseiten. +% \begin{macrocode} +%<*article> + \ifcase \tud@layout@part\relax% +%</article> +%<*book|report> + \ifcase \tud@layout@chapter\relax% + \tud@cmd@restore{chapterheadstartvskip}% + \tud@cmd@restore{chapterformat}% + \tud@cmd@restore{@chapter}% + \tud@cmd@restore{@schapter}% + \tud@cmd@restore{@@makechapterhead}% + \tud@sectioning@reset[addchap]{chapter}% + \tud@font@koma@unset{chapterprefix}% +%</book|report> + \tud@sectioning@reset[addsec]{section}% + \tud@sectioning@reset{subsection}% + \tud@sectioning@reset{subsubsection}% + \tud@sectioning@reset{minisec}% +% \end{macrocode} +% Auch hier werden die Standardbefehle für ein mögliches Deaktivieren der +% Optionen gesichert und anschließend geändert. +% \begin{macrocode} + \else% +%<*book|report> + \tud@cmd@store{chapterheadstartvskip}% + \tud@cmd@store{chapterformat}% + \tud@cmd@store{@chapter}% + \tud@cmd@store{@schapter}% + \tud@cmd@store{@@makechapterhead}% + \tud@sectioning@set[addchap]{chapter}{% + \tud@font@heading% + \tud@font@heading@size% + \color{\tud@color@chapterfont}% + }% + \tud@font@koma@set{chapterprefix}{\usesizeofkomafont{partnumber}}% +%</book|report> + \tud@sectioning@set[addsec]{section}{\tud@font@heading}% + \tud@sectioning@set{subsection}{\tud@font@heading}% + \tud@sectioning@set{subsubsection}{\tud@font@heading}% + \tud@sectioning@set{minisec}{\tud@font@heading}% +% \end{macrocode} +% Und wieder erfolgt die Zuweisung der angepassten Befehle über \cs{let}. +% \begin{macrocode} +%<*book|report> + \let\chapterheadstartvskip\tud@chapterheadstartvskip% + \let\@@makechapterhead\tud@@@makechapterhead% +%</book|report> + \fi% +} +% \end{macrocode} +% Die beteiligten Optionen führen den Befehl nur nach der Präambel aus. Um die +% Grundeinstellungen zu Beginn des Dokumentes umzusetzen, werden die Befehle +% am Ende der Präambel einmalig ausgeführt. +% \begin{macrocode} +\AtEndPreamble{% + \let\tud@font@heading@size\size@part% + \tud@layout@process% +} +% \end{macrocode} +% \end{macro}^^A \tud@layout@process +% \begin{macro}{\tud@partheadstartvskip} +% \changes{v2.02}{2014/11/05}{Nutzung der Option \opt{parttitle} verbessert}%^^A +% Dieses Makro ersetzt den Standardbefehl \cs{partheadstartvskip} für die +% CD-Teilseiten. Damit lassen sich insbesondere die Farbanpassungen für alle +% Klassen sowie die Option \opt{parttitle} für \cls{tudscrreprt}- und +% \cls{tudscrbook}-Klasse einfach realisieren und gleichzeitig das +% Zurückschalten auf das Standardverhalten gewährleisten. +% +% Für die \cls{tudscrartcl}-Klasse wird der vertikale Standardabstand +% beibehalten und lediglich die Farbanpassung hinzugefügt. +% \begin{macrocode} +%<*article> +\newcommand*\tud@partheadstartvskip{} +\let\tud@partheadstartvskip\partheadstartvskip% +\pretocmd{\tud@partheadstartvskip}{% + \def\tud@color@partfont{black}% + \ifcase \tud@layout@part\relax\or\or% + \def\tud@color@partfont{HKS41}% + \fi% +}{}{\tud@patch@wrn{tud@partheadstartvskip}} +%</article> +% \end{macrocode} +% Für \cls{tudscrreprt}- und \cls{tudscrbook}-Klasse werden die Farben gesetzt +% und die vertikalen Abstände neu definiert. +% \begin{macrocode} +%<*book|report> +\newcommand*\tud@partheadstartvskip{% + \def\tud@color@partfont{black}% + \def\tud@color@partpage{white}% + \def\tud@color@parthead{black}% + \ifcase \tud@layout@part\relax\or\or% + \def\tud@color@partfont{HKS41}% + \def\tud@color@partpage{white}% + \def\tud@color@parthead{HKS41}% + \or% + \def\tud@color@partpage{HKS41}% + \def\tud@color@partfont{HKS41!30}% + \def\tud@color@parthead{white}% + \fi% + \begingroup% + \vspace*{\dimexpr% + \tud@dim@headdiff+\tud@dim@headingsvskip-\baselineskip+\parskip\relax% + }% + \vspace*{\pageheadingsvskip}% + \setparsizes{\z@}{\z@}{\z@\@plus1fil}\par@updaterelative% +% \end{macrocode} +% Sollte die \opt{parttitle}-Option aktiviert sein, so wird der Titel des +% Dokumentes statt des Teiletitels mit \cs{tud@parttitle} auf die Seite +% gesetzt. +% \begin{macrocode} + \if@tud@parttitle% + \begingroup% + \tud@font@heading% + \tud@font@heading@size% + \color{\tud@color@partfont}% + \ifx\@@title\@empty% + \tud@makeuppercase{\strut}% + \else% + \tud@makeuppercase{\@@title}% + \fi% + \par\nobreak\vskip .775\baselineskip% + \endgroup% + \else% + \usekomafont{partnumber}% + \vspace*{\dimexpr-\dp\strutbox-\ht\strutbox-.5\baselineskip\relax}% + \fi% + \endgroup% +} +%</book|report> +% \end{macrocode} +% \end{macro}^^A \tud@partheadstartvskip +% +% \iffalse +%<*book|report> +% \fi +% +% \begin{macro}{\tud@partheadendvskip} +% \changes{v2.02}{2014/06/23}{neu}%^^A +% Hiermit wird die Seitenfarbe gesetzt sowie die Schrift für Kopf und +% Seitenzahl verändert. Die Änderungen sollen dabei lokal bleiben, wofür das +% obligatorische Argument des Befehls \cs{tud@cleardoublespecialpage} verwendet +% wird. Damit wird abhängig von den Einstellungen für die beiden Optionen +% \opt{cleardoublespecialpage} und \opt{clearcolor} die Rückseite farbig +% gesetzt. +% \begin{macrocode} +\newcommand*\tud@partheadendvskip{% + \tud@cleardoublespecialpage{% + \tud@pagecolor{\tud@color@partpage}% + \def\tud@head@color{\tud@color@parthead}% + \addtokomafont{pagenumber}{\sffamily\color{\tud@color@partfont}}% + \clearpage% + }% +} +% \end{macrocode} +% \end{macro}^^A \tud@partheadendvskip +% \begin{macro}{\tud@parttitle} +% \changes{v2.02}{2014/06/23}{entfernt}%^^A +% \end{macro}^^A \tud@parttitle +% +% \iffalse +%</book|report> +% \fi +% +% \begin{macro}{\tud@@part} +% Damit auch das Präfix der Teile in Majuskeln erscheint, wird dem Befehl +% \cs{partformat}, welcher das Präfix enthält, für die \cls{tudscrartcl}-Klasse +% der entsprechende Befehl vorangestellt. +% \begin{macrocode} +%<*article> +\let\tud@@part\@part +\patchcmd{\tud@@part}% + {\size@partnumber{\partformat}}% + {\size@partnumber{\tud@makeuppercase\partformat}}% + {}{\tud@patch@wrn{@part}}% +%</article> +% \end{macrocode} +% Für \cls{tudscrbook}- und \cls{tudscrreprt}-Klasse ist etwas mehr Arbeit +% nötig. Für separate Teileseiten muss dafür Sorge getragen werden, dass die +% Überschrift unabhängig von der Tiefe der Nummerierung immer an der gleichen +% Position steht. +% \begin{macrocode} +%<*book|report> +\let\tud@@part\@part +\patchcmd{\tud@@part}{% + \ifnumbered{part}{% + \size@partnumber{\partformat}% + \partheadmidvskip% + }{}% +}{% + \ifnumbered{part}{% + \size@partnumber{\tud@makeuppercase\partformat}% + }{% + \size@partnumber{\strut}% + }% + \unskip\partheadmidvskip% +}{}{\tud@patch@wrn{@part}}% +%</book|report> +% \end{macrocode} +% \end{macro}^^A \tud@@part +% +% \iffalse +%<*book|report> +% \fi +% +% \begin{macro}{\tud@@spart} +% Bei den Teile-Befehlen ohne Gliederungsnummerierung muss zusätzlich der +% Freiraum vorgehalten werden, damit alle Überschriften auf der gleichen +% vertikalen Position liegen. +% \begin{macrocode} +\let\tud@@spart\@spart +\patchcmd{\tud@@spart}{% + \normalfont + \sectfont\nobreak\size@part +}{% + \normalfont\sectfont\nobreak% + \size@partnumber{\strut}% + \partheadmidvskip\unskip% + \size@part% +}{}{\tud@patch@wrn{@spart}} +% \end{macrocode} +% \end{macro}^^A \tud@@spart +% \begin{macro}{\tud@partpreamble} +% Um die \KOMAScript-Befehle für die Teilepräambel auch für das farbige Layout +% nutzen zu können, müssen diese leicht angepasst werden. Für die Präambeln wird +% die Überschrift einer Zusammenfassung ausschließlich zentriert und relativ +% klein gesetzt. Außerdem wird für eine mögliche Zusammenfassung die +% \opt{titlepage}-Option deaktiviert. Aufgerufen wird der Befehl durch die +% gepatchte Version von \cs{set@@@@preamble}. +% \begin{macrocode} +\newcommand*\tud@partpreamble{% + \ifnum\tud@abstract@level>1\relax\def\tud@abstract@level{1}\fi% + \KOMAoptions{titlepage=false}% + \addtokomafont{disposition}{\color{\tud@color@partfont}}% + \addtokomafont{dictumtext}{\color{\tud@color@partfont}}% + \color{\tud@color@partfont}% +% \end{macrocode} +% Hiermit wird der unterschiedliche Abstand bei Teil- und Kapitelpräambeln +% ausgeglichen. +% \begin{macrocode} + \vskip\dimexpr\topskip+.9\baselineskip\relax% + \@afterindentfalse\@afterheading% +} +% \end{macrocode} +% \end{macro}^^A \tud@partpreamble +% \begin{macro}{\tud@chapterheadstartvskip} +% \changes{v2.02}{2014/06/23}{neu}%^^A +% \cs{chapterheadstartvskip} wird für die Position der Kapitelüberschriften im +% \CD angepasst. Mit der Länge \cs{headingsvskip} kann diese Position vertikal +% durch den Benutzer verschoben werden. Außerdem werden die benötigten Farben +% für die jeweilig gewählte Option ausgewählt. +% \begin{macrocode} +\newcommand*\tud@chapterheadstartvskip{% + \def\tud@color@chapterpage{white}% + \def\tud@color@chapterfont{black}% + \ifcase \tud@layout@chapter\relax\or\or% + \def\tud@color@chapterpage{white}% + \def\tud@color@chapterfont{HKS41}% + \or% + \def\tud@color@chapterpage{HKS41!10}% + \def\tud@color@chapterfont{HKS41}% + \fi% + \vspace*{% + \dimexpr\tud@dim@headdiff+\tud@dim@headingsvskip-\baselineskip\relax% + }% + \if@tud@chapterpage% + \vspace*{\pageheadingsvskip}% + \else% + \vspace*{\headingsvskip}% + \fi% +}% +% \end{macrocode} +% \end{macro}^^A \tud@chapterheadstartvskip +% \begin{macro}{\tud@@@makechapterhead} +% Damit das Präfix des Kapitels bei der gegebenenfalls aktivierten Option +% \opt{chapterprefix} in Majuskeln erscheint, wird dem Befehl +% \cs{chapterformat}, welcher das Präfix enthält, der entsprechende Befehl +% vorangestellt. Außerdem muss die Überschrift bei aktivierter +% \opt{chapterprefix}-Option um die Höhe des Präfixes nach oben verschoben +% werden, damit die Überschrift selbst auf der richtigen Höhe liegt. +% \begin{macrocode} +\newcommand*\tud@@@makechapterhead{} +\let\tud@@@makechapterhead\@@makechapterhead +\patchcmd{\tud@@@makechapterhead}{\chapterheadstartvskip}{% + \chapterheadstartvskip% + \if@chapterprefix% + \begingroup% + \usekomafont{chapterprefix}% + \vspace*{\dimexpr-\dp\strutbox-\ht\strutbox-.5\baselineskip\relax}% + \endgroup% + \fi% +}{}{\tud@patch@wrn{@@makechapterhead}} +\patchcmd{\tud@@@makechapterhead}{\chapterformat}{% + \tud@makeuppercase{\chapterformat}% +}{}{\tud@patch@wrn{@@makechapterhead}} +% \end{macrocode} +% Weiterhin müssen alle vertikalen Abstände gelöscht werden, damit die +% Überschriften für alle Einstellungen der \opt{parskip}-Option immer auf +% exakt der selben Höhe liegen und auch die Abstände zwischen den ggf. +% genutzten Präfixen identisch sind. +% \begin{macrocode} +\patchcmd{\tud@@@makechapterhead}{\size@chapter{#1}}{% + \setlength{\parskip}{\z@}% + \size@chapter{#1}% +}{}{\tud@patch@wrn{@@makechapterhead}} +% \end{macrocode} +% \end{macro}^^A \tud@@@makechapterhead +% \begin{macro}{\tud@chapterpreamble} +% Um die \KOMAScript-Befehle für die Kapitelpräambel auch für das farbige Layout +% nutzen zu können, müssen diese leicht angepasst werden. Für die Präambeln der +% Kapitel gilt das gleiche wie für die der Teileseiten. Auch hier erfolgt die +% Ausführung des Befehls durch die gepatchte Version von \cs{set@@@@preamble}. +% \begin{macrocode} +\newcommand*\tud@chapterpreamble{% + \ifnum\tud@abstract@level>1\relax\def\tud@abstract@level{1}\fi% + \KOMAoptions{titlepage=false}% +% \end{macrocode} +% Die Farb- und Schrifteinstellungen sind nur für reine Kapitelseiten notwendig. +% \begin{macrocode} + \if@tud@chapterpage% + \if@tud@cdfonts% + \if@tud@heavyfont% + \TUDoptions{cdfont=heavy}% + \else% + \TUDoptions{cdfont=true}% + \fi% + \fi% + \addtokomafont{disposition}{\color{\tud@color@chapterfont}}% + \addtokomafont{dictumtext}{\color{\tud@color@chapterfont}}% + \color{\tud@color@chapterfont}% + \fi% + \@afterindentfalse\@afterheading% +} +% \end{macrocode} +% \end{macro}^^A \tud@chapterpreamble +% Die beiden Befehle für Präambeln aus \KOMAScript{} ignorieren in ihrer +% ursprünglichen Form die Einstellungen für \opt{parskip}. Dies wird mit diesem +% Patch beseitigt. Außerdem werden das Makro für die Layouteinstellungen für +% Teile bzw. Kapitel (\cs{tud@\dots preamble}) aufgerufen. Für die Verwendung +% der \env{abstract}-Umgebung in den Präambeln wird außerdem der Befehl +% \cs{phantomsection} auf \cs{relax} gesetzt, um mit \cs{autoref} automatisch +% generierte Querverweise aus dem Paket \pkg{hyperref} nicht zu verändern. +% \begin{macrocode} +\patchcmd{\set@@@@preamble}{% + \hbox to\hsize{#4\parbox[{#2}]{#3}{#6\par}#5\par}% +}{% + \def\@tempa####1@####2{\@nameuse{tud@####1preamble}}% + \hbox to\hsize{% + \let\@parboxrestore\relax% + \let\phantomsection\relax% + #4\parbox[{#2}]{#3}{\@tempa#1#6\par}#5\par% + }% +}{}{\tud@patch@wrn{set@@@@preamble}} +% \end{macrocode} +% \begin{macro}{\tud@chapter@pre} +% \begin{macro}{\tud@chapter@app} +% Diese beiden Makros dienen zur Behandlung der Besonderheiten von spearaten +% Kapitelseiten (Option~\opt{chapterpage}). Eingefügt werden sie für die +% die Gliederungsbefehle der Kapitel innerhalb von \cs{tud@sectioning@case}. +% \begin{macrocode} +\newcommand*\tud@chapter@pre{% + \if@tud@chapterpage% +% Für den zweispaltigen Satz und aktivierter \opt{chapterpage}-Option muss +% für die Kapitelseiten temporär auf einseitigen Satz umgestellt werden, damit +% alle Befehle und Einstellungen beim Erzeugen des jeweiligen Kapitels zum +% Tragen kommen. Soll der Fehler behoben werden, dass bei Kapitelüberschriften +% im zweispaltigen Satz der Abstand zwischen Überschrift und Textkörper nicht +% stimmt, sei außerdem das Paket \pkg{twocolfix} empfohlen. +% \begin{macrocode} + \@restonecolfalse% + \if@twocolumn\@restonecoltrue\onecolumn\fi% + \fi% +} +\newcommand*\tud@chapter@app{% + \if@tud@chapterpage% +% \end{macrocode} +% Nach dem Setzen der Kapitelüberschrift selbst werden die Farbe für den +% Hintergrund, die Seitenzahl und den ggf. verwendeten TUD-Kopf angewendet. +% Danach wird die Seite beendet. Sollte zweiseitiger Satz, immer rechts +% öffnende Kapitel und die Option \opt{chapterpage} gewählt sein, so wird für +% ein konsistentes Layout für Überschriften auf Einzelseiten die Rückseite +% abhängig von der Option \opt{clearcolor} gegebenenfalls farbig gesetzt und +% die Option \opt{cleardoublespecialpage} bezüglich des Seitenstils der +% Rückseite beachtet. Umgesetzt wird dies mit \cs{tud@cleardoublespecialpage}. +% \begin{macrocode} + \tud@cleardoublespecialpage{% + \tud@pagecolor{\tud@color@chapterpage}% + \def\tud@head@color{\tud@color@chapterfont}% + \addtokomafont{pagenumber}{\sffamily\color{\tud@color@chapterfont}}% + \clearpage% + }% +% \end{macrocode} +% Außerdem wird für den Zweispaltensatz auf normales Verhalten zurückgestellt. +% \begin{macrocode} + \if@restonecol\twocolumn\fi% +% \end{macrocode} +% Sollten keine reinen Kapitelseiten verwendet werden, muss gegebenenfalls im +% Fuß genügend Freiraum für das \DDC-Logo gelassen werden. +% \begin{macrocode} + \else% + \tud@ifinpslist{\chapterpagestyle}{\tud@ddc@enlargepage}{}% + \fi% +% \end{macrocode} +% Unabhängig von der Option \opt{chapterpage} wird deim zweispaltigen Layout +% der Einzug des ersten Absatzes verhindert. +% \begin{macrocode} + \if@twocolumn% + \@afterindentfalse\@afterheading% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@chapter@pre +% \end{macro}^^A \tud@chapter@app +% \begin{macro}{\tud@clearcolor@wrn} +% Warnung für den Fall, dass die Option \opt{clearcolor} ohne \opt{open=right} +% und \opt{twoside} verwendet wird. +% \begin{macrocode} +\newcommand*\tud@clearcolor@wrn{% + \ClassWarning{\tudcls@name}{% + Option `clearcolor' is only available together with\MessageBreak% + options `twoside' and `open=right'% + }% + \global\let\tud@clearcolor@wrn\relax% +} +% \end{macrocode} +% \end{macro}^^A \tud@clearcolor@wrn +% Damit ist das Intermezzo für die beiden Klassen \cls{tudscrbook} und +% \cls{tudscrreprt} beendet. +% +% \iffalse +%</book|report> +% \fi +% +% \begin{macro}{\SecDef} +% \begin{macro}{\scr@section@dblarg} +% \begin{macro}{\scr@section@xdblarg} +% Diese Befehle werden ab der \KOMAScript-Version~v3.13a eingeführt. Damit +% werden obligatorische Argumente der Gliederungsebenen besser auf das +% optionale Argument dupliziert, falls dieses nicht angegeben wurde. Damit das +% auch mit der Version~v3.12 funktioniert, werden die entsprechenden Befehle +% hier bereitgehalten. +% \begin{macrocode} +\providecommand*\SecDef[2]{\@ifstar{#2}{\scr@section@dblarg{#1}}} +\providecommand\scr@section@dblarg[1]{% + \kernel@ifnextchar[%] + {#1}% + {\scr@section@xdblarg{#1}}% +} +\providecommand\scr@section@xdblarg[2]{% + \begingroup + \edef\reserved@a{% + \unexpanded{\endgroup\let\scr@osectarg\z@#1[{#2}]{#2}\def\scr@osectarg}% + {\scr@osectarg}}% + \reserved@a +} +% \end{macrocode} +% \end{macro}^^A \scr@section@xdblarg +% \end{macro}^^A \scr@section@dblarg +% \end{macro}^^A \SecDef +% \begin{macro}{\tud@part} +% \begin{macro}{\tud@spart} +% \begin{macro}{\tud@addpart} +% \begin{macro}{\tud@saddpart} +% \begin{macro}{\tud@chapter} +% \begin{macro}{\tud@schapter} +% \begin{macro}{\tud@addchap} +% \begin{macro}{\tud@saddchap} +% \begin{macro}{\tud@section} +% \begin{macro}{\tud@ssection} +% \begin{macro}{\tud@subsection} +% \begin{macro}{\tud@ssubsection} +% \begin{macro}{\tud@subsubsection} +% \begin{macro}{\tud@ssubsubsection} +% \begin{macro}{\tud@npart} +% \changes{v2.02}{2014/09/12}{entfernt}%^^A +% \begin{macro}{\tud@opart} +% \changes{v2.02}{2014/09/12}{entfernt}%^^A +% \begin{macro}{\tud@naddpart} +% \changes{v2.02}{2014/09/12}{entfernt}%^^A +% \begin{macro}{\tud@oaddpart} +% \changes{v2.02}{2014/09/12}{entfernt}%^^A +% \begin{macro}{\tud@nchapter} +% \changes{v2.02}{2014/09/12}{entfernt}%^^A +% \begin{macro}{\tud@ochapter} +% \changes{v2.02}{2014/09/12}{entfernt}%^^A +% \begin{macro}{\tud@naddchap} +% \changes{v2.02}{2014/09/12}{entfernt}%^^A +% \begin{macro}{\tud@oaddchap} +% \changes{v2.02}{2014/09/12}{entfernt}%^^A +% \begin{macro}{\tud@nsection} +% \changes{v2.02}{2014/09/12}{entfernt}%^^A +% \begin{macro}{\tud@osection} +% \changes{v2.02}{2014/09/12}{entfernt}%^^A +% \begin{macro}{\tud@nsubsection} +% \changes{v2.02}{2014/09/12}{entfernt}%^^A +% \begin{macro}{\tud@osubsection} +% \changes{v2.02}{2014/09/12}{entfernt}%^^A +% \begin{macro}{\tud@nsubsubsection} +% \changes{v2.02}{2014/09/12}{entfernt}%^^A +% \begin{macro}{\tud@osubsubsection} +% \changes{v2.02}{2014/09/12}{entfernt}%^^A +% Das \CD verlangt, dass sämtliche Auszeichnungen, die in DIN~Bold gesetzt +% werden, groß zu schreiben sind. Für die Klassen bedeutet dies, dass alle +% Überschriften automatisch in Majuskeln und in der gewünschten Schriftart +% erscheinen müssen. Dies erfordert eine Anpassung der Gliederungsbefehle, ohne +% deren normales Verhalten zu beeinflussen. +% +% Dazu werden die benötigten Hilfsmakros initialisiert. Die Gliederungsbefehle +% selbst werden innerhalb des Befehles \cs{tud@sectioning@set} durch +% \cs{tud@cmd@store} gesichert und anschließend mit \cs{tud@sectioning@case} +% neu definiert. Dabei wird mit \cs{SecDef} unterschieden, ob die Sternversion +% des Gliederungsbefehls durch den Anwender verwendet wird und ggf. das +% Hilfsmakro \cs{tud@s\meta{Gliederungsbefehl}} aufgerufen. Andernfalls wird +% \cs{tud@\meta{Gliederungsbefehl}} verwendet. +% +% Alle für die \TUDScript-Klassen angepassten Gliederungsbefehle von \cs{part} +% bis \cs{subsubsection} werden seit Version~v2.02 ausnahmslos mit \cs{SecDef} +% erzeugt. Damit wurden die in vorherigen Versionen benötigten Hilfsmakros +% \cs{tud@n\meta{Gliederungsbefehl}} und \cs{tud@o\meta{Gliederungsbefehl}} +% überflüssig unt deshalb entfernt. +% \begin{macrocode} +\newcommand*\tud@part{} +\newcommand*\tud@spart{} +\newcommand*\tud@addpart{} +\newcommand*\tud@saddpart{} +%<*book|report> +\newcommand*\tud@chapter{} +\newcommand*\tud@schapter{} +\newcommand*\tud@addchap{} +\newcommand*\tud@saddchap{} +%</book|report> +\newcommand*\tud@section{} +\newcommand*\tud@ssection{} +\newcommand*\tud@subsection{} +\newcommand*\tud@ssubsection{} +\newcommand*\tud@subsubsection{} +\newcommand*\tud@ssubsubsection{} +% \end{macrocode} +% \end{macro}^^A \tud@osubsubsection +% \end{macro}^^A \tud@nsubsubsection +% \end{macro}^^A \tud@osubsection +% \end{macro}^^A \tud@nsubsection +% \end{macro}^^A \tud@osection +% \end{macro}^^A \tud@nsection +% \end{macro}^^A \tud@oaddchap +% \end{macro}^^A \tud@naddchap +% \end{macro}^^A \tud@ochapter +% \end{macro}^^A \tud@nchapter +% \end{macro}^^A \tud@oaddpart +% \end{macro}^^A \tud@naddpart +% \end{macro}^^A \tud@opart +% \end{macro}^^A \tud@npart +% \end{macro}^^A \tud@ssubsubsection +% \end{macro}^^A \tud@subsubsection +% \end{macro}^^A \tud@ssubsection +% \end{macro}^^A \tud@subsection +% \end{macro}^^A \tud@ssection +% \end{macro}^^A \tud@section +% \end{macro}^^A \tud@saddchap +% \end{macro}^^A \tud@addchap +% \end{macro}^^A \tud@schapter +% \end{macro}^^A \tud@chapter +% \end{macro}^^A \tud@saddpart +% \end{macro}^^A \tud@addpart +% \end{macro}^^A \tud@spart +% \end{macro}^^A \tud@part +% \begin{macro}{\tud@sectioning@set} +% \changes{v2.02}{2014/08/16}{Bug mit Majuskeln bei \cs{addsec} behoben}%^^A +% \begin{macro}{\tud@sectioning@case} +% \changes{v2.02}{2014/09/12}{Reimplementierung mit \cs{SecDef}}%^^A +% \begin{macro}{\tud@sectioning@reset} +% \begin{macro}{\tud@sectioning@uppercase} +% \changes{v2.02}{2014/07/25}{neu}%^^A +% \begin{macro}{\tud@font@koma@set} +% \begin{macro}{\tud@font@koma@reset} +% \changes{v2.02}{2014/08/24}{neu}%^^A +% \begin{macro}{\tud@font@koma@unset} +% Das Makro \cs{tud@sectioning@set} sichert und überschreibt die gegebenen +% Befehle der einzelnen Gliederungsebenen und fügt diesen die zusätzlich +% angegebene Schriftdefinition mit dem Makro \cs{tud@font@koma@set} zu. Das +% optionale Argument ermöglicht die Anpassung des gegebenen Gliederungsbefehls +% ohne zusätzliche Definition der Schrift. Dies ist für die von \KOMAScript{} +% obendrein bereitgestellten Gliederungsbefehle (\cs{add\dots}) notwendig. +% \begin{macrocode} +\newcommand*\tud@sectioning@set[3][]{% + \tud@cmd@store{#2}% +% \end{macrocode} +% Für die Überschriften, welche mit \cs{minisec} gesetzt werden, genügt jedoch +% ein vereinfachtes Vorgehen. +% \begin{macrocode} + \ifstr{#2}{minisec}{% + \renewcommand\minisec[1]{\@@tud@minisec{\tud@makeuppercase{##1}}}% +% \end{macrocode} +% Hier erfolgt die Anpassung und Formatierung aller anderen Gliederungsbefehle. +% \begin{macrocode} + }{% + \tud@sectioning@case{#2}% + \ifstrempty{#1}{}{% + \tud@cmd@store{#1}% + \tud@sectioning@case{#1}% + }% + }% + \tud@font@koma@set{#2}{#3}% +} +% \end{macrocode} +% Da die Großschreibung der Überschriften nur beim Setzen der Überschrift +% selbst, nicht aber beispielsweise im Inhaltsverzeichnis oder aber in der +% Kopfzeile unerwünscht erfolgen soll, werden die Gliederungsbefehle angepasst. +% Dabei müssen alle Varianten, also auch die mit Stern und optionalen Argument +% beachtet werden. +% \begin{macrocode} +\newcommand*\tud@sectioning@case[1]{% +% \end{macrocode} +% Als erstes wird unterschieden, ob die normale oder aber die nicht-nummerierte +% sprich die Sternversion gefordert ist. Dies passiert mit \cs{SecDef}. Für die +% Teileebene werden beispielsweise entweder \cs{tud@part} oder \cs{tud@spart} +% aufgerufen. Dabei wird durch \cs{SecDef} für \cs{tud@part} das obligatorische +% in das optionale Argument kopiert, falls keines angegeben wurde. +% \begin{macrocode} + \csedef{#1}{% + \noexpand\SecDef% + \expandafter\expandafter\expandafter\noexpand% + \expandafter\csname tud@#1\endcsname% + \expandafter\expandafter\expandafter\noexpand% + \expandafter\csname tud@s#1\endcsname% + }% +% \end{macrocode} +% Da für die normale Version das optionale Argument ggf. durch \cs{SecDef} +% automatisch erzeugt wird, ist nur die Definition eines Befehls mit optionalen +% Argument notwendig. Dabei wird der in \cs{@@tud@\meta{Gliederungsbefehl}} +% gesicherte Originalbefehl mit dem gewünschten Eintrag als optionales Argument +% aufgerufen und nur das obligatorische Argument mit \cs{tud@makeuppercase} +% behandelt. +% \begin{macrocode} + \csedef{tud@#1}[##1]##2{% + \expandafter\expandafter\expandafter\noexpand% + \expandafter\csname @@tud@#1\endcsname% + [{##1}]{\noexpand\tud@sectioning@uppercase{##2}}% + }% +% \end{macrocode} +% Für die Version mit Stern gibt es kein optionales Argument. Dementsprechend +% wird hier lediglich das obligatorische Argument in Großbuchstaben gesetzt. +% \begin{macrocode} + \csedef{tud@s#1}##1{% + \expandafter\expandafter\expandafter\noexpand% + \expandafter\csname @@tud@#1\endcsname*% + {\noexpand\tud@sectioning@uppercase{##1}}% + }% +% \end{macrocode} +% Aus nicht ganz nachvollziehbaren Gründen gibt es bei Überschriften, die mit +% \cs{addsec} gesetzt werden, ein Problem, wenn innerhalb dieser der Befehl +% \cs{NoCaseChange} verwendet wird. Dieser bleibt hier wirkungslos. Es liegt +% sehr wahrscheinlich daran, dass diese Befehle intern \cs{section*} verwenden. +% Deshalb werden für \cs{addsec} die Befehle leicht abgewandelt definiert. +% \begin{macrocode} + \ifstr{#1}{addsec}{% + \def\tud@addsec[##1]##2{% + \@@tud@addsec[{##1}]{\tud@sectioning@uppercase##2}% + }% + \def\tud@saddsec##1{% + \@@tud@addsec*{\tud@sectioning@uppercase##1}% + }% + }{}% +% \end{macrocode} +% Die Änderungen durch \cs{tud@chapter@pre} und \cs{tud@chapter@app} sollen bei +% der Erzeugung eines Kapitels greifen. Damit die originalen Befehle nicht +% beeinflusst werden, erfolgt die Manipulation der bereits adaptierten Befehle +% für Kapitel. +% \begin{macrocode} +%<*book|report> + \@tempswafalse% + \ifstr{#1}{chapter}{\@tempswatrue}{}% + \ifstr{#1}{addchap}{\@tempswatrue}{}% + \if@tempswa% + \def\@tempa{,s}% + \@for\@tempb:=\@tempa\do{% + \expandafter\pretocmd\expandafter{\csname tud@\@tempb#1\endcsname}{% + \tud@chapter@pre% + }{}{\tud@patch@wrn{tud@sectioning@case}}% + \expandafter\apptocmd\expandafter{\csname tud@\@tempb#1\endcsname}{% + \tud@chapter@app% + }{}{\tud@patch@wrn{tud@sectioning@case}}% + }% + \fi% +%</book|report> +} +% \end{macrocode} +% Mit dem Makro \cs{tud@sectioning@reset} können die manipulierten +% Gliederungsbefehle wieder auf ihr ursprüngliches Verhalten zurückgesetzt +% werden. +% \begin{macrocode} +\newcommand*\tud@sectioning@reset[2][]{% + \tud@cmd@restore{#2}% + \ifstrempty{#1}{}{\tud@cmd@restore{#1}}% + \tud@font@koma@unset{#2}% +} +% \end{macrocode} +% Der Befehl \cs{tud@sectioning@uppercase} ist für das Setzen der +% Gliederungsüberschriften in Majuskeln verantwortlich. Außerdem wird ggf. die +% Option \opt{footnotes=symbolheadings} umgesetzt. +% \begin{macrocode} +\robustify{\footnote}% +\newcommand*\tud@sectioning@uppercase[1]{% + \begingroup% + \if@tud@symbolheadings% + \let\c@footnote\c@symbolheadings% + \renewcommand*\thefootnote{\fnsymbol{symbolheadings}}% + \fi% + \tud@makeuppercase{#1}% + \endgroup% +} +% \end{macrocode} +% Es wird die Möglichkeit geschaffen, bestimmten Schriftelementen weitere +% Eigenschaften mitzugeben. Damit dies optionsabhängig geschehen kann und +% \cs{addtokomafont} nur einmalig verwendete werden muss, wird im Zweifelsfall +% einem Schriftelement ein Hilfsmakro \cs{tud@font@koma@\meta{Element}} +% zugewiesen, welches intern angepasst werden kann. Mit \cs{tud@font@koma@set} +% werden dem angegebenen Element die gewünschten Schriftattribute zugeteilt. +% \begin{macrocode} +\newcommand*\tud@font@koma@set[2]{% + \ifcsdef{tud@font@koma@#1}{}{\addtokomafont{#1}{\@nameuse{tud@font@koma@#1}}}% + \@namedef{tud@font@koma@#1}{#2}% +} +% \end{macrocode} +% Durch die Option \opt{headings} werden die Schriftelemente zurückgesetzt. +% Mit dem hier definierten Befehl \cs{tud@font@koma@reset} kann diesen das +% Hilfsmakro abermals zugewiesen +% werden. +% \begin{macrocode} +\newcommand*\tud@font@koma@reset[1]{% + \addtokomafont{#1}{\@nameuse{tud@font@koma@#1}}% +} +% \end{macrocode} +% Mit \cs{tud@font@koma@unset} kann das angegebene Element wieder zurückgesetzt +% werden. Dabei wird das zuvor hinzugefügte Makro auf \cs{relax} gesetzt. +% \begin{macrocode} +\newcommand*\tud@font@koma@unset[1]{% + \ifcsdef{tud@font@koma@#1}{\@namedef{tud@font@koma@#1}{\relax}}{}% +} +% \end{macrocode} +% \end{macro}^^A \tud@font@koma@unset +% \end{macro}^^A \tud@font@koma@reset +% \end{macro}^^A \tud@font@koma@set +% \end{macro}^^A \tud@sectioning@uppercase +% \end{macro}^^A \tud@sectioning@reset +% \end{macro}^^A \tud@sectioning@case +% \end{macro}^^A \tud@sectioning@set +% \begin{macro}{\usesizeofkomafont} +% \changes{v2.02}{2014/05/17}{entfernt}%^^A +% Mit \TUDScript~v2.02 wurde die Bereitstellung dieses Befehls aufgrund der +% zwingenden Verwendung von \KOMAScript{}~v3.12 entfernt. +% \end{macro}^^A \usesizeofkomafont +% +% \iffalse +%</class&body> +% \fi +% +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr-locale.dtx b/Master/texmf-dist/source/latex/tudscr/tudscr-locale.dtx new file mode 100644 index 00000000000..96d43819ce8 --- /dev/null +++ b/Master/texmf-dist/source/latex/tudscr/tudscr-locale.dtx @@ -0,0 +1,638 @@ +% \CheckSum{549} +% \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-locale.dtx +%<*driver> +\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi +\ProvidesFile{tudscr-locale.dtx}[% + 2014/11/11 v2.02 TUD-KOMA-Script (localization)% +] +\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-locale.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 +% \changes{v2.02}{2014/11/05}{Korrekturen bei der Verwendung von +% \cs{@@title}}%^^A +% +% \section{Lokalisierung} +% +% Die TUD-Vorlagen sind für die deutsche und englische Sprache lokalisiert. Das +% bedeutet, dass abhängig von der gewählten Sprache die entsprechenden +% Bezeichner gesetzt werden. +% +% \StopEventually{\PrintIndex\PrintChanges} +% +% \subsection{Definition der sprachabhängigen Bezeichner} +% +% \begin{macro}{\tud@locale@define} +% +% \iffalse +%<*class> +% \fi +% +% \begin{locale}{\graduationtext} +% \changes{v2.02}{2014/05/16}{neu, umbenannt von \cs{degreetext}}%^^A +% \begin{locale}{\supervisorname} +% \begin{locale}{\supervisorothername} +% \begin{locale}{\refereename} +% \changes{v2.02}{2014/05/20}{Unterscheidung, ob ein oder mehrere Gutachter +% angegeben sind}%^^A +% \begin{locale}{\refereeothername} +% \begin{locale}{\advisorname} +% \begin{locale}{\advisorothername} +% \begin{locale}{\professorname} +% \begin{locale}{\professorothername} +% \changes{v2.02}{2014/09/03}{neu}%^^A +% \begin{locale}{\datetext} +% \begin{locale}{\dateofbirthtext} +% \begin{locale}{\placeofbirthtext} +% \begin{locale}{\defensedatetext} +% \begin{locale}{\matriculationnumbername} +% \begin{locale}{\matriculationyearname} +% \begin{locale}{\coverpagename} +% \begin{locale}{\titlepagename} +% \begin{locale}{\abstractname} +% \begin{locale}{\confirmationname} +% \begin{locale}{\confirmationtext} +% \begin{locale}{\blockingname} +% \changes{v2.02}{2014/05/16}{neu, \cs{restrictionname} umbenannt}%^^A +% \begin{locale}{\blockingtext} +% \changes{v2.02}{2014/05/16}{neu, \cs{restrictiontext} umbenannt}%^^A +% \begin{locale}{\listingname} +% \begin{locale}{\listlistingname} +% \begin{locale}{\dissertationname} +% \begin{locale}{\diplomathesisname} +% \begin{locale}{\masterthesisname} +% \begin{locale}{\bachelorthesisname} +% \begin{locale}{\studentresearchname} +% \begin{locale}{\projectpapername} +% \begin{locale}{\seminarpapername} +% \begin{locale}{\researchname} +% \begin{locale}{\logname} +% \begin{locale}{\internshipname} +% \begin{locale}{\reportname} +% Die neu definierten Bezeichner werden mit einer Fehlermeldung initialisiert. +% Wird eine unterstützte Dokumentsprache~-- momentan sind dies lediglich +% Deutsch und Englisch~-- in der Präambel des Dokumentes geladen, so werden die +% Bezeichner sprachspezifisch überschrieben. Andernfalls bekommt der Anwender +% eine Fehlermeldung mit Hinweisen, wie er selbst die Bezeichner für die +% gewählte Sprache manuell definieren muss. +% \begin{macrocode} +\newcommand*\tud@locale@define[1]{% + \providecommand*#1{% + \ClassError{\tudcls@name}{% + `\string#1' not defined for language `\languagename'% + }{% + Currently the class `\tudcls@name' only supports the\MessageBreak% + languages german and english an its dialects. You must\MessageBreak% + define single patterns by yourself, e.g.:\MessageBreak% + `\string\providecaptionname{\languagename}\string#1{<text>}'\MessageBreak% + To implement new languages, it would be nice if you could\MessageBreak% + contact the author of this class and send your definitions\MessageBreak% + to \tudscrmail% + }% + }% +} +\tud@locale@define{\graduationtext} +\tud@locale@define{\supervisorname} +\tud@locale@define{\supervisorothername} +\tud@locale@define{\refereename} +\tud@locale@define{\refereeothername} +\tud@locale@define{\advisorname} +\tud@locale@define{\advisorothername} +\tud@locale@define{\professorname} +\tud@locale@define{\professorothername} +\tud@locale@define{\datetext} +\tud@locale@define{\dateofbirthtext} +\tud@locale@define{\placeofbirthtext} +\tud@locale@define{\defensedatetext} +\tud@locale@define{\matriculationyearname} +\tud@locale@define{\matriculationnumbername} +\tud@locale@define{\coverpagename} +\tud@locale@define{\titlepagename} +%<*book> +\tud@locale@define{\abstractname} +%</book> +\tud@locale@define{\confirmationname} +\tud@locale@define{\confirmationtext} +\tud@locale@define{\blockingname} +\tud@locale@define{\blockingtext} +\tud@locale@define{\listingname} +\tud@locale@define{\listlistingname} +\tud@locale@define{\dissertationname} +\tud@locale@define{\diplomathesisname} +\tud@locale@define{\masterthesisname} +\tud@locale@define{\bachelorthesisname} +\tud@locale@define{\studentresearchname} +\tud@locale@define{\projectpapername} +\tud@locale@define{\seminarpapername} +\tud@locale@define{\researchname} +\tud@locale@define{\logname} +\tud@locale@define{\internshipname} +\tud@locale@define{\reportname} +% \end{macrocode} +% \end{locale}^^A \reportname +% \end{locale}^^A \internshipname +% \end{locale}^^A \logname +% \end{locale}^^A \researchname +% \end{locale}^^A \seminarpapername +% \end{locale}^^A \projectpapername +% \end{locale}^^A \studentresearchname +% \end{locale}^^A \bachelorthesisname +% \end{locale}^^A \masterthesisname +% \end{locale}^^A \diplomathesisname +% \end{locale}^^A \dissertationname +% \end{locale}^^A \blockingtext +% \end{locale}^^A \listlistingname +% \end{locale}^^A \listingname +% \end{locale}^^A \blockingname +% \end{locale}^^A \confirmationtext +% \end{locale}^^A \confirmationname +% \end{locale}^^A \abstractname +% \end{locale}^^A \titlepagename +% \end{locale}^^A \coverpagename +% \end{locale}^^A \matriculationyearname +% \end{locale}^^A \matriculationnumbername +% \end{locale}^^A \defensedatetext +% \end{locale}^^A \placeofbirthtext +% \end{locale}^^A \dateofbirthtext +% \end{locale}^^A \datetext +% \end{locale}^^A \professorothername +% \end{locale}^^A \professorname +% \end{locale}^^A \advisorothername +% \end{locale}^^A \advisorname +% \end{locale}^^A \refereeothername +% \end{locale}^^A \refereename +% \end{locale}^^A \supervisorothername +% \end{locale}^^A \supervisorname +% \end{locale}^^A \graduationtext +% +% \iffalse +%</class> +%<*supervisor> +% \fi +% +% \begin{locale}{\taskname} +% \begin{locale}{\tasktext} +% \begin{locale}{\authorname} +% \begin{locale}{\titlename} +% \begin{locale}{\coursename} +% \begin{locale}{\disciplinename} +% \changes{v2.02}{2014/05/16}{neu, umbenannt von \cs{branchname}}%^^A +% \begin{locale}{\issuedatetext} +% \begin{locale}{\duedatetext} +% \begin{locale}{\chairmanname} +% \begin{locale}{\focusname} +% \begin{locale}{\objectivesname} +% \begin{locale}{\evaluationname} +% \begin{locale}{\evaluationtext} +% \begin{locale}{\contentname} +% \begin{locale}{\assessmentname} +% \begin{locale}{\gradetext} +% \begin{locale}{\noticename} +% \begin{locale}{\contactpersonname} +% \changes{v2.02}{2014/05/16}{neu, umbenannt von \cs{contactname}}%^^A +% Die für \pkg{tudscrsupervisor} definierten Bezeichner werden durch +% \cs{tud@locale@define} mit einer Fehlermeldung initialisiert. +% \begin{macrocode} +\tud@locale@define{\taskname} +\tud@locale@define{\tasktext} +\tud@locale@define{\authorname} +\tud@locale@define{\titlename} +\tud@locale@define{\coursename} +\tud@locale@define{\disciplinename} +\tud@locale@define{\issuedatetext} +\tud@locale@define{\duedatetext} +\tud@locale@define{\chairmanname} +\tud@locale@define{\focusname} +\tud@locale@define{\objectivesname} +\tud@locale@define{\evaluationname} +\tud@locale@define{\evaluationtext} +\tud@locale@define{\contentname} +\tud@locale@define{\assessmentname} +\tud@locale@define{\gradetext} +\tud@locale@define{\noticename} +\tud@locale@define{\contactpersonname} +% \end{macrocode} +% \end{locale}^^A \contactpersonname +% \end{locale}^^A \noticename +% \end{locale}^^A \gradetext +% \end{locale}^^A \assessmentname +% \end{locale}^^A \contentname +% \end{locale}^^A \evaluationtext +% \end{locale}^^A \evaluationname +% \end{locale}^^A \objectivesname +% \end{locale}^^A \focusname +% \end{locale}^^A \chairmanname +% \end{locale}^^A \duedatetext +% \end{locale}^^A \issuedatetext +% \end{locale}^^A \disciplinename +% \end{locale}^^A \coursename +% \end{locale}^^A \titlename +% \end{locale}^^A \authorname +% \end{locale}^^A \tasktext +% \end{locale}^^A \taskname +% +% \iffalse +%</supervisor> +% \fi +% +% \end{macro}^^A \tud@locale@define +% +% \subsection{Deutschsprachige Bezeichner} +% +% \iffalse +%<*class> +% \fi +% +% \begin{macro}{\tud@locale@german} +% \changes{v2.02}{2014/07/07}{als Aliasbefehl für \cs{providecaptionname} mit +% dem Argument \marg{deutsche Sprachliste}}%^^A +% Dieser Befehl dient zur Definition der deutschsprachigen Bezeichner. Dabei +% müssen als Argumente der Bezeichnerbefehl selbst sowie die dazugehörige +% Definition angegeben werden. Intern wird dabei \cs{providecaptionname} +% verwendet. +% \begin{macrocode} +\newcommand*\tud@locale@german{% + \providecaptionname{% + german,ngerman,austrian,naustrian,swissgerman,nswissgerman% + }% +} +% \end{macrocode} +% \end{macro}^^A \tud@locale@german +% Hier erfolgt die eigentliche Definition der sprachabhängigen Bezeichner für +% die deutsche Sprache und ihre Dialekte. +% \begin{macrocode} +\tud@locale@german{\graduationtext}{zur Erlangung des akademischen Grades}% +\tud@locale@german{\supervisorname}{Betreuer}% +\tud@locale@german{\supervisorothername}{}% +\tud@locale@german{\refereename}{% + \begingroup% + \protecting{% + \global\@tempswafalse% + \def\and{\global\@tempswatrue}% + \savebox0{\@referee}% + }% + \endgroup% + \if@tempswa% + Erstgutachter% + \else% + Gutachter% + \fi% +} +\tud@locale@german{\refereeothername}{Zweitgutachter}% +\tud@locale@german{\advisorname}{Fachreferent}% +\tud@locale@german{\advisorothername}{}% +\tud@locale@german{\professorname}{% + \begingroup% + \protecting{% + \global\@tempswafalse% + \def\and{\global\@tempswatrue}% + \savebox0{\@professor}% + }% + \endgroup% + \if@tempswa% + Betreuende Hochschullehrer% + \else% + Betreuender Hochschullehrer% + \fi% +} +\tud@locale@german{\professorothername}{}% +\tud@locale@german{\datetext}{Eingereicht am}% +\tud@locale@german{\dateofbirthtext}{Geboren am}% +\tud@locale@german{\placeofbirthtext}{in}% +\tud@locale@german{\defensedatetext}{Verteidigt am}% +\tud@locale@german{\matriculationyearname}{Immatrikulationsjahr}% +\tud@locale@german{\matriculationnumbername}{Matrikelnummer}% +\tud@locale@german{\coverpagename}{Umschlagseite}% +\tud@locale@german{\titlepagename}{Titelblatt}% +%<*book> +\tud@locale@german{\abstractname}{Zusammenfassung}% +%</book> +\tud@locale@german{\confirmationname}{Selbstst\"andigkeitserkl\"arung}% +\tud@locale@german{\confirmationtext}{% + Hiermit versichere ich, dass ich die vorliegende + \ifx\@@thesis\@empty Arbeit \else\@@thesis{} \fi + \ifx\@@title\@empty\else mit dem Titel \emph{\@@title} \fi + selbstst\"andig und ohne unzul\"assige Hilfe Dritter verfasst habe. Es + wurden keine anderen als die in der Arbeit angegebenen Hilfsmittel und + Quellen benutzt. Die w\"ortlichen und sinngem\"a\ss{} \"ubernommenen + Zitate habe ich als solche kenntlich gemacht. + \ifx\@supporter\@empty% + Es waren keine weiteren Personen an der geistigen Herstellung der + vorliegenden Arbeit beteiligt. + \else% + W\"ahrend der Anfertigung dieser Arbeit wurde ich nur von folgenden + Personen unterst\"utzt:% + \begin{quote}\def\and{\newline}\@supporter\end{quote}% + \noindent Weitere Personen waren an der geistigen Herstellung der + vorliegenden Arbeit nicht beteiligt. + \fi% + Mir ist bekannt, dass die Nichteinhaltung dieser Erkl\"arung zum + nachtr\"aglichen Entzug des Hochschulabschlusses f\"uhren kann.% +} +\tud@locale@german{\blockingname}{Sperrvermerk}% +\tud@locale@german{\blockingtext}{% + Diese \ifx\@@thesis\@empty Arbeit \else\@@thesis{} \fi + \ifx\@@title\@empty\else mit dem Titel \emph{\@@title} \fi + enth\"alt vertrauliche Informationen\ifx\@company\@empty\else + , offengelegt durch \@company{}\fi. Ver\"offentlichungen, + Vervielf\"altigungen und Einsichtnahme~-- auch nur auszugsweise~-- + sind ohne ausdr\"uckliche Genehmigung \ifx\@company\@empty\else + durch \@company{} \fi nicht gestattet, ebenso wie + Ver\"offentlichungen \"uber den Inhalt dieser Arbeit. Die + vorliegende Arbeit ist nur dem Betreuer an der Technischen + Universit\"at Dresden, den Gutachtern sowie den Mitgliedern des + Pr\"ufungsausschusses zug\"anglich zu machen.% +} +\tud@locale@german{\listingname}{Quelltext}% +\tud@locale@german{\listlistingname}{Quelltextverzeichnis}% +\tud@locale@german{\dissertationname}{Dissertation}% +\tud@locale@german{\diplomathesisname}{Diplomarbeit}% +\tud@locale@german{\masterthesisname}{Master-Arbeit}% +\tud@locale@german{\bachelorthesisname}{Bachelor-Arbeit}% +\tud@locale@german{\studentresearchname}{Studienarbeit}% +\tud@locale@german{\projectpapername}{Projektarbeit}% +\tud@locale@german{\seminarpapername}{Seminararbeit}% +\tud@locale@german{\researchname}{Forschungsbericht}% +\tud@locale@german{\logname}{Protokoll}% +\tud@locale@german{\internshipname}{Praktikumsbericht}% +\tud@locale@german{\reportname}{Bericht}% +% \end{macrocode} +% +% \iffalse +%</class> +%<*supervisor> +% \fi +% +% Hier erfolgen für das Paket \pkg{tudscrsupervisor} weitere Definitionen. +% \begin{macrocode} +\tud@locale@german{\taskname}{Aufgabenstellung}% +\tud@locale@german{\tasktext}{f\"ur die Anfertigung einer}% +\tud@locale@german{\authorname}{Name}% +\tud@locale@german{\titlename}{Titel}% +\tud@locale@german{\coursename}{Studiengang}% +\tud@locale@german{\disciplinename}{Studienrichtung}% +\tud@locale@german{\issuedatetext}{Ausgeh\"andigt am}% +\tud@locale@german{\duedatetext}{Einzureichen am}% +\tud@locale@german{\chairmanname}{Pr\"ufungsausschussvorsitzender}% +\tud@locale@german{\focusname}{Schwerpunkte der Arbeit}% +\tud@locale@german{\objectivesname}{Ziele der Arbeit}% +\tud@locale@german{\evaluationname}{Gutachten}% +\tud@locale@german{\evaluationtext}{f\"ur die}% +\tud@locale@german{\contentname}{Inhalt}% +\tud@locale@german{\assessmentname}{Bewertung}% +\tud@locale@german{\gradetext}{% + Die Arbeit wird mit der Note \textbf{\@grade} bewertet.% +} +\tud@locale@german{\noticename}{Aushang}% +\tud@locale@german{\contactpersonname}{Ansprechpartner}% +% \end{macrocode} +% +% \iffalse +%</supervisor> +% \fi +% +% +% \subsection{Englischsprachige Bezeichner} +% +% \iffalse +%<*class> +% \fi +% +% \begin{macro}{\tud@locale@english} +% \changes{v2.02}{2014/07/07}{Pseudonym für \cs{providecaptionname} mit +% dem Argument \marg{englische Sprachliste}}%^^A +% Dieser Befehl dient zur Definition der englischsprachigen Bezeichner. Dabei +% müssen als Argumente der Bezeichnerbefehl selbst sowie die dazugehörige +% Definition angegeben werden. Intern wird dabei \cs{providecaptionname} +% verwendet. +% \begin{macrocode} +\newcommand*\tud@locale@english{% + \providecaptionname{% + american,australian,british,canadian,english,newzealand,UKenglish,USenglish% + }% +} +% \end{macrocode} +% \end{macro}^^A \tud@locale@english +% Hier erfolgt die eigentliche Definition der sprachabhängigen Bezeichner für +% die deutsche Sprache und ihre Dialekte. +% \begin{macrocode} +\tud@locale@english{\graduationtext}{to achieve the academic degree}% +\tud@locale@english{\supervisorname}{Supervisor}% +\tud@locale@english{\supervisorothername}{}% +\tud@locale@english{\refereename}{% + \begingroup% + \protecting{% + \global\@tempswafalse% + \def\and{\global\@tempswatrue}% + \savebox0{\@referee}% + }% + \endgroup% + \if@tempswa% + First referee% + \else% + Referee% + \fi% +} +\tud@locale@english{\refereeothername}{Second referee}% +\tud@locale@english{\advisorname}{Advisor}% +\tud@locale@english{\advisorothername}{}% +\tud@locale@english{\professorname}{% + \begingroup% + \protecting{% + \global\@tempswafalse% + \def\and{\global\@tempswatrue}% + \savebox0{\@professor}% + }% + \endgroup% + \if@tempswa% + Supervising professors% + \else% + Supervising professor% + \fi% +} +\tud@locale@english{\professorothername}{}% +\tud@locale@english{\datetext}{Submitted on}% +\tud@locale@english{\dateofbirthtext}{Born on}% +\tud@locale@english{\placeofbirthtext}{in}% +\tud@locale@english{\defensedatetext}{Defended on}% +\tud@locale@english{\matriculationyearname}{Matriculation year}% +\tud@locale@english{\matriculationnumbername}{Matriculation number}% +\tud@locale@english{\coverpagename}{Cover page}% +\tud@locale@english{\titlepagename}{Title page}% +%<*book> +\tud@locale@english{\abstractname}{Abstract}% +%</book> +\tud@locale@english{\confirmationname}{Statement of authorship}% +\tud@locale@english{\confirmationtext}{% + I hereby certify that I have authored this + \ifx\@@thesis\@empty thesis\else\@@thesis{} \fi + \ifx\@@title\@empty\else entitled \emph{\@@title} \fi + independently and without undue assistance from third + parties. No other than the resources and references + indicated in this thesis have been used. I have marked + both literal and accordingly adopted quotations as such. + \ifx\@supporter\@empty% + They were no additional persons involved in the spiritual + preparation of the present thesis. + \else% + During the preparation of this thesis I was only supported + by the following persons:% + \begin{quote}\def\and{\newline}\@supporter\end{quote}% + \noindent Additional persons were not involved in the spiritual + preparation of the present thesis. + \fi% + I am aware that violations of this declaration may lead to + subsequent withdrawal of the degree.% +} +\tud@locale@english{\blockingname}{Restriction note}% +\tud@locale@english{\blockingtext}{% + This \ifx\@@thesis\@empty thesis \else\@@thesis{} \fi + \ifx\@@title\@empty\else entitled \emph{\@@title} \fi + contains confidential data\ifx\@company\@empty\else + , disclosed by \@company{}\fi. Publications, duplications and + inspections---even in part---are prohibited without explicit + permission\ifx\@company\@empty\else\space by \@company{}\fi, + as well as publications about the content of this thesis. + This thesis may only be made accessible to the supervisor at + Technische Universit\"at Dresden, the reviewers and also the + members of the examination board.% +} +\tud@locale@english{\listingname}{Listing}% +\tud@locale@english{\listlistingname}{List of Listings}% +\tud@locale@english{\dissertationname}{Dissertation}% +\tud@locale@english{\diplomathesisname}{Diploma Thesis}% +\tud@locale@english{\masterthesisname}{Master Thesis}% +\tud@locale@english{\bachelorthesisname}{Bachelor Thesis}% +\tud@locale@english{\studentresearchname}{Student Research Project}% +\tud@locale@english{\projectpapername}{Project Paper}% +\tud@locale@english{\seminarpapername}{Seminar Paper}% +\tud@locale@english{\researchname}{Research Report}% +\tud@locale@english{\logname}{Log}% +\tud@locale@english{\internshipname}{Internship Report}% +\tud@locale@english{\reportname}{Report}% +% \end{macrocode} +% +% \iffalse +%</class> +%<*supervisor> +% \fi +% +% Hier erfolgen für das Paket \pkg{tudscrsupervisor} weitere Definitionen. +% \begin{macrocode} +\tud@locale@english{\taskname}{Task}% +\tud@locale@english{\tasktext}{for the preparation of a}% +\tud@locale@english{\authorname}{Name}% +\tud@locale@english{\titlename}{Title}% +\tud@locale@english{\coursename}{Course}% +\tud@locale@english{\disciplinename}{Discipline}% +\tud@locale@english{\issuedatetext}{Issued on}% +\tud@locale@english{\duedatetext}{Due date for submission}% +\tud@locale@english{\chairmanname}{Chairman of the Audit Committee}% +\tud@locale@english{\focusname}{Focus of work}% +\tud@locale@english{\objectivesname}{Objectives of work}% +\tud@locale@english{\evaluationname}{Evaluation}% +\tud@locale@english{\evaluationtext}{for the}% +\tud@locale@english{\contentname}{Content}% +\tud@locale@english{\assessmentname}{Assessment}% +\tud@locale@english{\gradetext}{% + The thesis is evaluated with a grade of \textbf{\@grade}.% +} +\tud@locale@english{\noticename}{Notice}% +\tud@locale@english{\contactpersonname}{Contact}% +% \end{macrocode} +% +% \iffalse +%</supervisor> +%<*class> +% \fi +% +% \subsection{Unterstützung des Paketes \pkg{listings}} +% +% Die Bezeichner des Paketes werden auf die bereits definierten gesetzt. +% \begin{macrocode} +\AfterPackage{listings}{% + \renewcommand*\lstlistingname{\listingname}% + \renewcommand*\lstlistlistingname{\listlistingname}% +} +% \end{macrocode} +% +% \subsection{Unterstützung des Paketes \pkg{mathswap}} +% +% Wird das Paket \pkg{mathswap} verwendet, werden die Ersetzungen für Punkt und +% Komma im Mathematikmodus sprachspezifisch angepasst. +% \begin{macrocode} +\AfterPackage{mathswap}{% + \tud@locale@german{\@commaswap}{,}% + \tud@locale@german{\@dotswap}{\,}% + \tud@locale@english{\@commaswap}{\,}% + \tud@locale@english{\@dotswap}{.}% +} +% \end{macrocode} +% +% \iffalse +%</class> +% \fi +% +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr-manual.dtx b/Master/texmf-dist/source/latex/tudscr/tudscr-manual.dtx new file mode 100644 index 00000000000..392573d872d --- /dev/null +++ b/Master/texmf-dist/source/latex/tudscr/tudscr-manual.dtx @@ -0,0 +1,3361 @@ +% \CheckSum{2611} +% \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-manual.dtx +%<*driver> +\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi +\ProvidesFile{tudscr-manual.dtx}[% + 2014/12/17 v2.02 TUD-KOMA-Script\space% +%</driver> +%<identify>\NeedsTeXFormat{LaTeX2e}[2011/06/27] +%<class&identify>\ProvidesClass{tudscrman}[% +%<package&identify>\ProvidesPackage{tudscrman}[% +%<*driver|(class|package)&identify> +%!TUDVersion +%<class> class (internal manual)% +%<package> package (internal tutorials)% +] +%</driver|(class|package)&identify> +%<*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-manual.dtx} +\begin{document} + \maketitle + \DocInput{\filename} +\end{document} +%</driver> +% \fi +% +% \selectlanguage{ngerman} +% +% \changes{v2.02}{2014/11/18}{Index für Tutorials möglich}%^^A +% \changes{v2.02}{2014/12/17}{xindy-Stildatei wird zur Laufzeit erzeugt}%^^A +% +% \section{Klasse und Paket für die Anwenderdokumentation von \TUDScript} +% +% Es werden die Klasse \cls{tudscrman} für das \TUDScript-Handuch sowie das +% Paket \pkg{tudscrman} für das Setzen von einigen Anwenderleitfäden bzw. +% Tutorials erzeugt. Da es zwischen der Klasse und dem Paket es eine große +% Menge an Überschneidungen gibt, basieren diese auf der gleichen Quelldatei. +% +% \StopEventually{\PrintIndex\PrintChanges} +% +% \iffalse +%<*body> +% \fi +% +% \subsection{Benötigte Pakete für die Anwenderdokumentation} +% +% Basis für das Handbuch ist die Klasse \cls{tudscrreprt}. An diese werden alle +% Klassenoptionen weitergereicht. Sie wird für das Setzen des Anwenderhandbuchs +% genutzt. Zusätzlich wird das Paket \pkg{tudscrman} erstellt, um an das +% Handbuch angelehnte Tutorials in einem Unterordner zu erstellen. Sowohl für +% die Klasse als auch das Paket werden einige Pakete geladen. +% +% Das Paket \pkg{xparse} erlaubt eine sehr freie Deklaration von Makros mit +% nahezu beliebig arrangierbaren (optionalen) Argumenten. +% \begin{macrocode} +\RequirePackage{xparse}[2013/12/31] +% \end{macrocode} +% Für den Fließtext werden Pfeile u.\,ä. durch \pkg{textcomp} bereitgestellt. +% \begin{macrocode} +\RequirePackage{textcomp}[2005/09/27] +% \end{macrocode} +% Verbesserungen am \LaTeX-Kernel. +% \begin{macrocode} +\RequirePackage{fixltx2e}[2014/06/10] +% \end{macrocode} +% Vergrößerung des Durchschusses. +% \begin{macrocode} +\RequirePackage{setspace}[2011/12/19] +\setstretch{1.1}\recalctypearea +% \end{macrocode} +% Sprachunterstützung. +% \begin{macrocode} +\RequirePackage{babel}[2014/03/24] +% \end{macrocode} +% Sprachabhängiges Setzen von Anführungszeichen. +% \begin{macrocode} +\AfterPackage*{inputenc}{\RequirePackage{csquotes}[2011/10/22]} +\AtBeginDocument{% + \@ifpackageloaded{csquotes}{}{% + \ClassWarning{\tudcls@name}{Package `csquotes' not loaded}% + \providecommand\enquote[1]{\glqg#1\grqq{}}% + }% +} +% \end{macrocode} +% Das Paket \pkg{microtype} wird für den optischen Randausgleich verwendet. +% \begin{macrocode} +\RequirePackage[babel]{microtype}[2013/05/23] +% \end{macrocode} +% Verbesserte Zitate. +% \begin{macrocode} +\RequirePackage{quoting}[2014/01/28] +% \end{macrocode} +% Automatisierte Datumsformatierung. +% \begin{macrocode} +\RequirePackage{isodate}[2010/01/03] +% \end{macrocode} +% Verschiedenste Symbole aus dem \LaTeX-Universum. +% \begin{macrocode} +\RequirePackage{hologo}[2012/04/26] +% \end{macrocode} +% Das Paket \pkg{marginnote} stellt nicht fließenden Randnotizen bereit. +% \begin{macrocode} +\RequirePackage{marginnote}[2012/03/29] +% \end{macrocode} +% Sowohl im Handbuch als auch in den Tutroials werden Quelltextauszüge für das +% bessere Verständnis des Anwenders angegeben. Um diese darzustellen wird das +% Paket \pkg{listings} verwendet. +% \begin{macrocode} +\RequirePackage{listings}[2014/03/04] +\lstdefinestyle{tudscr}{% + basicstyle=\ttfamily\setstretch{1},% + keywordstyle=,% + columns=fullflexible,keepspaces,% + aboveskip=.5\baselineskipglue,% + belowskip=.5\baselineskipglue,% + language=[LaTeX]TeX,% + texcl,% +} +% \end{macrocode} +% Mit dem Paket \pkg{silence} lassen sich ungewollte bzw. lästige Warnungen +% deaktivieren. +% \begin{macrocode} +\RequirePackage{silence}[2012/07/02] +% \end{macrocode} +% Das Pakete wird genutzt, um externer Dateien nur zu kompilieren, wenn dies +% aufgrund einer Änderung auch notwendig ist. +% \begin{macrocode} +\RequirePackage{filemod}[2011/09/19] +% \end{macrocode} +% Sollte \pkg{auto-pst-pdf} aktiv sein, so wird das Laden von \pkg{todonotes} +% unterdrückt, da dieses wiederum das Paket \pkg{tikz} lädt, was zu Problem bei +% der automatisierten Erstellung von \env{pstricks}"=Grafiken führt. +% \begin{macrocode} +\RequirePackage{ifpdf}[2011/01/30] +\ifpdf + \PassOptionsToPackage{colorinlistoftodos,obeyFinal,color=HKS92!10}{todonotes} + \RequirePackage{todonotes}[2012/07/25] +\else + \TUDoptions{ToDo=false} +\fi +% \end{macrocode} +% Um die \cs{write18} sowohl für Windows als auch für unixoide Betriebssysteme +% nutzen zu können, wird das Paket \pkg{ifplatform} geladen. Damit dieses nicht +% allzu lästig ist, wird mithilfe von \pkg{silence} die normalerweise erzeugte +% Warnung der nicht aktivierten Option \opt{shell escape} deaktiviert. +% \begin{macrocode} +\WarningFilter*{ifplatform}{^^J \space\space\space shell escape is disabled} +\RequirePackage{ifplatform}[2010/10/22] +% \end{macrocode} +% Das Paket \pkg{hyperref} wird für alle möglichen Links und Querverweise +% geladen. +% \begin{macrocode} +\PassOptionsToPackage{hyperindex=false}{hyperref} +\AtEndPreamble{% + \RequirePackage{hyperref}[2012/11/06] + \hypersetup{colorlinks,linkcolor=blue} +% \end{macrocode} +% Es folgen einige Befehle, die an das Paket \pkg{hyperref} gekoppelt sind. +% \begin{macro}{\Email} +% Hyperlink für die Angabe einer E-Mail-Adresse. +% \begin{macrocode} + \newcommand*\Email[1]{\href{mailto:#1}{\nolinkurl{#1}}} +% \end{macrocode} +% \end{macro}^^A \Email +% Die Bezeichner für die Abschnittsebenen werden umbenannt. +% \begin{macrocode} + \renewcaptionname{ngerman}{\sectionautorefname}{Unterkapitel} + \renewcaptionname{ngerman}{\subsectionautorefname}{Abschnitt} + \renewcaptionname{ngerman}{\subsubsectionautorefname}{Unterabschnitt} +% \end{macrocode} +% \begin{macro}{\autorefname} +% \begin{macro}{\@autorefname} +% \begin{macro}{\@@autorefname} +% Der Befehl \cs{autorefname} dient dazu, den Verweistyp beziehungsweise den +% Bezeichner des aktuellen oder optional zu einem speziellen Label ohne die +% dazugehörige Nummerierung zu erhalten. Auf der Seite LaTeX Stack Exchange% +%\footnote{\url{http://tex.stackexchange.com/q/33776/}} wurde das Prinzip +% vorgestellt und hier übernommen. +% \begin{macrocode} + \newcommand*\autorefname[1][current]{% + \ifstr{#1}{current}{% + \expandafter\HyPsd@@autorefname\@currentHref\@nil% + }{% + \@autorefname\HyPsd@@autorefname{#1}% + }% + \unskip\xspace% + } + \newcommand*\@autorefname[2]{% + \expandafter\ifx\csname r@#2\endcsname\relax% + ??% + \else% + \expandafter\expandafter\expandafter\@@autorefname% + \csname r@#2\endcsname{}{}{}{}\@nil#1\@nil% + \fi% + } + \newcommand*\@@autorefname{} + \def\@@autorefname#1#2#3#4#5\@nil#6\@nil{#6#4.\@nil} +% \end{macrocode} +% \end{macro}^^A \@@autorefname +% \end{macro}^^A \@autorefname +% \end{macro}^^A \autorefname +% \begin{macro}{\manualhyperdef} +% \changes{v2.02}{2014/10/27}{neu}%^^A +% \begin{macro}{\manualhyperref} +% \changes{v2.02}{2014/10/27}{neu}%^^A +% Diese beiden Befehle dienen zum Defnieren von Textankern im Handbuch und zum +% Referenzieren auf diese. Bei der Erstelung des Ankers mit \cs{manualhyperdef} +% wird zusätzlich auch noch ein Label (\cs{label}) erzeugt. Die Sternversion +% des Befehls unterdrückt dies. Der Anker wird mit \cs{Hy@raisedlink}~-- wie es +% auch bei normalen \pkg{hyperref}-Labels geschieht~-- über die Grundlinie +% gehoben. Die Version mit Apostroph kann nach Überschriften verwendet werden +% und verschiebt die vertikale Position des Ankers noch weiter nach oben. +% \begin{macrocode} +%<*class> + \NewDocumentCommand\manualhyperdef{st'm}{% + \IfBooleanTF{#2}{% + \raisebox{4\baselineskip}[0pt][0pt]{\hyperdef{\jobname}{#3}{}}% + \par\nobreak\vskip\dimexpr-\parskip-\baselineskip% + \@afterindentfalse\@afterheading% + }{% + \Hy@raisedlink{\hyperdef{\jobname}{#3}{}}% + \ignorespaces% + }% + \IfBooleanF{#1}{\label{#3}}% + } + \newcommand*\manualhyperref[2]{\hyperref{}{\jobname}{#1}{#2}} +%</class> +% \end{macrocode} +% Aus einem Tutorial erfolgen alle Querverweise mit \cs{manualhyperref} auf das +% Anwenderhandbuch \enquote{tudscr}. +% \begin{macrocode} +%<*package> + \newcommand*\manualhyperref[2]{\hyperref{../tudscr}{tudscr}{#1}{#2}} +%</package> +% \end{macrocode} +% \end{macro}^^A \manualhyperref +% \end{macro}^^A \manualhyperdef +% Damit sind die Ausführungen für das Paket \pkg{hyperref} \emph{fast} beendet. +% Etwas später wird noch der Befehl \cs{pdfexpandableoutline} definiert. +% \begin{macrocode} +} +% \end{macrocode} +% Für die Erstellung des Indexes wird das Paket \pkg{imakeidx} zusammen mit +% \pkg{xindy} verwendet. Zuerst ein paar kleinere Einstellungen für das Layout. +% \begin{macrocode} +\PassOptionsToPackage{xindy,splitindex}{imakeidx} +\RequirePackage{imakeidx}[2013/07/11]% +\indexsetup{% +%<*class> + level=\addsec,% +%</class> +%<*package> + level=\subsection*,% +%</package> + noclearpage,firstpagestyle=headings,headers={\indexname}{\indexname}% +} +\newcommand*\xdyopt{-M tudscrman-temp.xdy -L german-din} +% \end{macrocode} +% \begin{macro}{\tud@write@i} +% \changes{v2.02}{2014/10/22}{neu}%^^A +% \begin{macro}{\tud@write@ii} +% \changes{v2.02}{2014/11/02}{neu}%^^A +% \begin{macro}{\tud@read} +% \changes{v2.02}{2014/08/19}{neu}%^^A +% Für die Erstellung der Indizes wird zum Sortieren das Programm \pkg{xindy} +% genutzt. Für dieses wird eine eigene Stildatei verwendet, welche zur Laufzeit +% erzeugt wofür zuerst ein Ausgabestream reserviert wird. +% \begin{macrocode} +\newcommand*\tud@write@i{} +\newwrite\tud@write@i +% \end{macrocode} +% Für die Tutorials werden später zusätzlich noch ein weiterer Ausgabe- sowie +% ein Eingabestream benötigt, die hier gleich mit initilaisiert werden. +% \begin{macrocode} +%<*package> +\newcommand*\tud@write@ii{} +\newwrite\tud@write@ii +\newcommand*\tud@read{} +\newread\tud@read +%</package> +% \end{macrocode} +% \end{macro}^^A \tud@read +% \end{macro}^^A \tud@write@ii +% \end{macro}^^A \tud@write@i +% Nachfolgend wird die zu erstellenden \pkg{xindy}-Stildatei kurz beschrieben. +% \begin{macrocode} +\openout\tud@write@i=tudscrman-temp.xdy +% \end{macrocode} +% Als erstes wird Standard-\LaTeX-Modul geladen. +% \begin{macrocode} +\write\tud@write@i{(require "texindy.xdy")} +% \end{macrocode} +% Leider lässt sich für Seitenzahlbereiche via \val{:attr} (noch) kein Markup +% für angehängte \enquote{f.} sowie \enquote{ff.} einstellen. Diese würden +% deshalb bei kursiven oder fetten Seitenzahlen trotzdem in normaler Schrift +% erscheinen, weshalb auf die Auszeichnung folgender Seiten verzichtet wird. +% \begin{macrocode} +%\write\tud@write@i{(require "ff-ranges.xdy")} +% \end{macrocode} +% Seitenbereiche werden sofort zusammengefasst, wobei als Trennzeichen ein +% Halbgeviertstrich verwendet wird. +% \begin{macrocode} +\write\tud@write@i{% +(define-location-class^^J% +\space\space "arabic-page-numbers" ("arabic-numbers") :min-range-length 1^^J% +)% +} +\write\tud@write@i{(markup-range :sep "--")} +% \end{macrocode} +% Alle Argumente in eckigen Klammern werden ignoriert. Dies wird bei einigen +% Indexbefehlen genutzt, um die nicht beachteten RegExp-Regeln auszugleichen, +% siehe den nächsten Absatz. +% \begin{macrocode} +\write\tud@write@i{(merge-rule "\[(.*)\]" "" :eregexp)} +% \end{macrocode} +% Innerhalb ausgewählter Auszeichnungs- und Textbefehle sollten die Befehle +% selbst, nicht jedoch die Argumente verworfen werden. Leider werden die +% manuell erstellten RegExp-Regeln durch \texttt{texindy} zu spät genutzt +% (\url{http://sourceforge.net/p/xindy/bugs/22/}). +% \begin{macrocode} +%\write\tud@write@i{(merge-rule "\\hyperindex\{(.*)\}\{(.*)\}" "/2" :eregexp)} +%\write\tud@write@i{(merge-rule "\\hologo\{(.*)\}" "/1" :eregexp)} +%\write\tud@write@i{(merge-rule "\\texttt\{(.*)\}" "/1" :eregexp)} +%\write\tud@write@i{(merge-rule "\\textsbn\{(.*)\}" "/1" :eregexp)} +%\write\tud@write@i{(merge-rule "\\textsbs\{(.*)\}" "/1" :eregexp)} +% \end{macrocode} +% Es werden die Attribute \emph{declare} mit der Abkürzung \emph{!} sowie +% \emph{important} mit der Abkürzung \emph{?} und \emph{default} definiert, +% welche hierarchisch gleichgestellt sind. +% \begin{macrocode} +\write\tud@write@i{% + (define-attributes (("declare" "!" "important" "?" "default")))% +} +% \end{macrocode} +% Eine Alternative wäre, diese in der Hierarchie zu unterscheiden, allerdings +% war eine Bildung von zufriedenstellenden Seitenbereichen dabei nicht möglich +% und wurde deshalb verworfen. +% \begin{macrocode} +%\write\tud@write@i{(markup-attribute-group-list :sep ", ")} +%\write\tud@write@i{% +%\space\space(define-attributes (("declare" "!") ("important" "?")("default")))% +%} +% \end{macrocode} +% Einträge, die als wichtig deklariert wurden, können auch für normale zur +% Bereichsbildung verwendet werden. +% \begin{macrocode} +\write\tud@write@i{(merge-to "important" "default")} +\write\tud@write@i{(merge-to "?" "default")} +% \end{macrocode} +% Hier erfolgt die Definition der Auszeichnugen der Attribute. Deklarationen +% werden fett gedruckt, wichtige Einträge erscheinen kursiv. Außerdem wird ein +% entsprechnder Link auf die Seite eingefügt. +% \begin{macrocode} +\write\tud@write@i{% +(markup-locref^^J% +\space\space :open "\string\textbf{\string\hyperpage{"^^J% +\space\space :close "}}"^^J% +\space\space :attr "declare"^^J% +)% +} +\write\tud@write@i{% +(markup-locref^^J% +\space\space :open "\string\textbf{\string\hyperpage{"^^J% +\space\space :close "}}"^^J% +\space\space :attr "!"^^J% +)% +} +\write\tud@write@i{% +(markup-locref^^J% +\space\space :open "\string\textsl{\string\hyperpage{"^^J% +\space\space :close "}}"^^J% +\space\space :attr "important"^^J% +)% +} +\write\tud@write@i{% +(markup-locref^^J% +\space\space :open "\string\textsl{\string\hyperpage{"^^J% +\space\space :close "}}"^^J% +\space\space :attr "?"^^J% +)% +} +\write\tud@write@i{% +(markup-locref^^J% +\space\space :open "\string\hyperpage{"^^J% +\space\space :close "}"^^J% +\space\space :attr "default"^^J% +)% +} +% \end{macrocode} +% Punkte zwischen Eintrag und Seitenzahl. +% \begin{macrocode} +\write\tud@write@i{% + (markup-locclass-list :open "\string\,\string\dotfill\string\,")% +} +% \end{macrocode} +% Dieser Querverweistyp wird speziell im allgemeinen Index verwendet, um auf +% einen Spezialindex zu verweisen. +% \begin{macrocode} +\write\tud@write@i{(define-crossref-class "seeidx")} +\write\tud@write@i{% +(markup-crossref-list^^J% +\space\space :class "seeidx" :open "\string\seeidx{" :sep "; " :close "}{}"^^J% +)% +} +% \end{macrocode} +% Damit ist die \pkg{xindy}-Stildatei fertig. +% \begin{macrocode} +\closeout\tud@write@i +% \end{macrocode} +% Nun können die einzelnen Indizes erstellt werden. +% \begin{macrocode} +%<*class> +\makeindex[title={Allgemeiner Index},options=\xdyopt]% +%</class> +\makeindex[title={Klassen- und Paketoptionen},name=options,options=\xdyopt]% +\makeindex[% + title={Umgebungen, Befehle und Seitenstile},name=macros,options=\xdyopt% +]% +%<*class> +\makeindex[title={Umgebungs- und Befehlsparameter},name=keys,options=\xdyopt]% +\makeindex[title={Sprachabh\"angige Bezeichner},name=terms,options=\xdyopt]% +\makeindex[title={Schriftelemente},name=fonts,options=\xdyopt]% +\makeindex[title={Farben},name=colors,options=\xdyopt]% +%</class> +\makeindex[title={Klassen, Pakete und Dateien},name=files,options=\xdyopt]% +%<*class> +\makeindex[title={\"Anderungsliste},name=changelog,columns=1,options=\xdyopt]% +%</class> +% \end{macrocode} +% +% \iffalse +%<*class> +% \fi +% +% \subsubsection{Pakete für die Klasse \cls{tudscrman}} +% +% Das Paket \pkg{enumitem} erlaubt das Beeinflussen der Standardlisten und die +% Ableitung neuer Listen aus diesen. mit \cs{setlist\{noitemsep\}} werden die +% zusätzlichen Zwischenräume innerhalb der Listen beseitigt. +% \begin{macrocode} +\RequirePackage{enumitem}[2011/09/28] +\setlist{noitemsep} +% \end{macrocode} +% Das Paket \pkg{ellipsis} sorgt für korrekte Auslassungpunkte. +% \begin{macrocode} +\AtBeginDocument{ + \RequirePackage{ellipsis}[2004/9/28] + \let\ellipsispunctuation\relax +} +% \end{macrocode} +% Mit Hilfe von \pkg{tabularx} können Tabellen bestimmter Breite und +% automatisch berechneten Spaltenbreiten gesetzt werden. +% \begin{macrocode} +\RequirePackage{tabularx}[1999/01/07] +% \end{macrocode} +% Mit \pkg{ragged2e} wird~-- falls benötigt~-- die Silbentrennung im +% Flattersatz aktiviert. +% \begin{macrocode} +\RequirePackage{ragged2e}[2009/05/21] +% \end{macrocode} +% Die Fußnoten werden nicht mit jedem Kapitel zurückgesetzt. +% \begin{macrocode} +\RequirePackage{chngcntr}[2009/09/02] +\counterwithout{footnote}{chapter} +% \end{macrocode} +% Das Paket wird für die Erstellung von Tabellen verwendet. +% \begin{macrocode} +\RequirePackage{booktabs}[2005/04/14] +% \end{macrocode} +% Verbesserte Referenzierungen auf Seiten. +% \begin{macrocode} +\RequirePackage{varioref}[2011/10/02]% +\renewcommand*\fullref[1]{\hyperref[#1]{\autoref*{#1} \vpageref{#1}}} +% \end{macrocode} +% Erstellen von Grafiken. +% \begin{macrocode} +\RequirePackage{tikz}[2013/12/13] +% \end{macrocode} +% Einbinden von ganzseitigen PDF"~Dokumenten als Beispiel im Handbuch. +% \begin{macrocode} +\RequirePackage{pdfpages}[2013/08/25] +% \end{macrocode} +% Typographisch saubere Einheiten. +% \begin{macrocode} +\RequirePackage{units}[1998/08/04] +% \end{macrocode} +% Befehle für die Dokumentation des Pakets \pkg{tudscrsupervisor}. +% \begin{macrocode} +\RequirePackage{tudscrsupervisor}[\TUDVersion] +% \end{macrocode} +% +% \iffalse +%</class> +%<*package> +% \fi +% +% \subsubsection{Pakete für das Paket \pkg{tudscrman}} +% +% Mit dem Paket \pkg{scrwfile} lassen sich Probleme mit zu wenig verfügbaren +% Streams für das Schreiben externer Datein beheben. Hintergrund ist die +% Verwendung des Paketes \pkg{glossaries} in einem der Tutorials, welches eine +% Vielzahl solcher Streams benötigt. Das Paket \pkg{morewrites} hat keinen +% Einfluss auf \pkg{glossaries}. +% \begin{macrocode} +\RequirePackage{scrwfile}[2013/08/05] +% \end{macrocode} +% Die Umgebungen \env{Preamble}, \env{Trunk} und \env{Hint} sowie deren +% Varianten nutzen das Paket \pkg{filecontents}, um ihren Inhalt in eine +% temporäre Datei zu schreiben und diese direkt mit dem Paket \pkg{listings} +% darzustellen sowie ggf. den Quelltext auszuführen. Beim Überschreiben einer +% Datei wird für gewöhnlich eine Warnung erzeugt. Mit dem Paket \pkg{silence} +% wird diese innerhalb der genannten Umgebungen deaktiviert. +% \begin{macrocode} +\RequirePackage{filecontents}[2011/10/08] +\WarningFilter[Tutorial]{latex}{Overwriting file}% +% \end{macrocode} +% +% \iffalse +%</package> +%</body> +%<*option> +% \fi +% +% \subsection{Optionen der Anwenderdokumentation} +% +% Hier werden die Optionen für Klasse und Paket definiert. +% +% \begin{option}{ToDo} +% \changes{v2.02}{2014/07/10}{neu}%^^A +% \begin{macro}{\if@tud@todo} +% \changes{v2.02}{2014/07/10}{neu}%^^A +% Diese Option ist verantwortlich für den Schalter \cs{if@tud@todo}. Über +% diesen wird gesteuert, ob ToDo-Notizen ausgegeben werden sollen. +% \begin{macrocode} +\newif\if@tud@todo +\@tud@todotrue +\TUD@ifkey{ToDo}{@tud@todo} +% \end{macrocode} +% \end{macro}^^A \if@tud@todo +% \end{option}^^A ToDo +% +% \iffalse +%<*class> +% \fi +% +% Es werden einige Optionen für das Handbuch standardmäßig aktiviert. Dazu +% werden diese an die entsprechende Elternklasse übergeben. +% \begin{macrocode} +\PassOptionsToClass{% + cdfoot=true,% + chapterpage=true,% + chapterprefix=true,% + headings=optiontoheadandtoc,% + captions=tableheading,% + numbers=noenddot,% + color=true,% +}{\tudinh@name} +\PassOptionsToPackage{automark}{scrlayer-scrpage} +% \end{macrocode} +% \begin{macro}{\tudfinalflag} +% \begin{macro}{\tudprintflag} +% Außerdem wird geprüft, ob durch einen externen pdf\LaTeX-Aufruf die Flags +% \cs{tudfinalflag} und/oder \cs{tudprintflag} definiert wurde. In diesem Fall +% werden Optionen zur finalen Ausgabe und/oder unbunten Druck aktiviert. +% \begin{macrocode} +\DeclareOption{final}{\let\tudfinalflag\relax} +\DeclareOption{print}{\let\tudprintflag\relax} +\AtBeginDocument{% + \ifdef{\tudfinalflag}{\TUDoptions{ToDo=false}}{}% + \ifdef{\tudprintflag}{\hypersetup{hidelinks}\TUDoptions{color=no}}{}% +} +% \end{macrocode} +% \end{macro}^^A \tudprintflag +% \end{macro}^^A \tudfinalflag +% +% \iffalse +%</class> +%<*package> +% \fi +% +% Wird das Paket \pkg{tudscrman} geladen, werden zu Beginn des Dokumentes ein +% paar Standardeinstellungen gemacht. +% +% \begin{macrocode} +\KOMAoptions{headings=small} +\TUDoptions{cd=true,cdfoot=true} +% \end{macrocode} +% Falls innerhalb eines Tutorials das Paket \pkg{pstricks} verwendet wird, muss +% dafür Sorge getragen werden, dass die automatische Kompilierung reibungslos +% mit \pkg{auto-pst-pdf} funktioniert. +% \begin{macrocode} +\AfterPackage*{pstricks}{% + \ifnum\pdfshellescape=1\relax + \RequirePackage{auto-pst-pdf}[2009/04/26] + \else + \RequirePackage[off]{auto-pst-pdf}[2009/04/26] + \fi +} +% \end{macrocode} +% +% \iffalse +%</package> +%</option> +%<*body> +% \fi +% +% \subsection{Gemeinsame Befehle und Umgebungen für Klasse und Paket} +% +% Es folgen die Definitionen für Befehle und Umgebungen für Klasse und Paket, +% welche sich überschneidenden und für beide benötigt werden. Allerdings sind +% diese jedoch für Klasse und Paket in ihrer Implementierung teilweise sehr +% unterschiedlich. +% +% \subsubsection{Auszeichnung von Variablen, Parametern etc.} +% +% \begin{macro}{\PName} +% \begin{macro}{\PBoolean} +% \begin{macro}{\PBName} +% \changes{v2.02}{2014/11/12}{neu}%^^A +% \begin{macro}{\PSet} +% \begin{macro}{\Parameter} +% \begin{macro}{\OParameter} +% \begin{macro}{\LParameter} +% \begin{macro}{\OLParameter} +% \begin{macro}{\PValue} +% \begin{macro}{\PParameter} +% \begin{macro}{\POParameter} +% Diese Befehle dienen zum Auszeichnen von obligatorischen und optionalen +% Parametern und Befehlen oder bestimmten Wertzuweisungen. +% \begin{macrocode} +\newrobustcmd*\PName[1]{\mbox{\texttt{\textsl{<#1>}}}} +\newrobustcmd*\PBoolean{\PName{Ein-Aus-Wert}} +\newrobustcmd*\PBName[1]{\PBoolean|\PName{#1}} +\newrobustcmd*\PSet{\PName{Einstellung}} +\newrobustcmd*\Parameter[1]{\mbox{\texttt{\{}\PName{#1}\texttt{\}}}} +\newrobustcmd*\OParameter[1]{\mbox{\texttt{[}\PName{#1}\texttt{]}}} +\newrobustcmd*\LParameter{\mbox{\texttt{[}\PName{Parameterliste}\texttt{]}}} +\newrobustcmd*\OLParameter[1]{% + \mbox{\texttt{[}\PName{#1}|\PName{Parameterliste}\texttt{]}}% +} +\newrobustcmd*\PValue[1]{\mbox{\texttt{#1}}} +\newrobustcmd*\PParameter[1]{\mbox{\texttt{\{#1\}}}} +\newrobustcmd*\POParameter[1]{\mbox{\texttt{[#1]}}} +% \end{macrocode} +% \end{macro}^^A \POParameter +% \end{macro}^^A \PParameter +% \end{macro}^^A \PValue +% \end{macro}^^A \OLParameter +% \end{macro}^^A \LParameter +% \end{macro}^^A \OParameter +% \end{macro}^^A \Parameter +% \end{macro}^^A \PSet +% \end{macro}^^A \PBName +% \end{macro}^^A \PBoolean +% \end{macro}^^A \PName +% +% \subsubsection{Kompilieren von externen Dateien und Querverweise auf diese} +% +% \begin{macro}{\Tutorial} +% \changes{v2.02}{2014/08/22}{neu}%^^A +% \changes{v2.02}{2014/10/22}{Reimplementierung}%^^A +% \begin{macro}{\hypertut} +% \changes{v2.02}{2014/09/02}{neu}%^^A +% Die gegebenenfalls notwendige Kompilierung und die Referenzierung eines +% Tutorials aus dem Handbuch erfolgt mit \cs{Tutorial}. Außerdem erfolgt mit +% \cs{hypertut} ein verlinkter Eintrag in den Index. +% \begin{macrocode} +%<*class> +\newrobustcmd*\hypertut[2]{% + \hyperref{tutorials/#1.pdf}{\jobname}{tutorials:#1}{\textsbn{#1.pdf}#2}% +} +\NewDocumentCommand\Tutorial{som}{% + \ifnum\pdfshellescape=1\relax% +% \end{macrocode} +% Um mit den verschachtelten Aufrufen von pdf\LaTeX{} umgehen zu können, wird +% das ganze Prozedere in ein Skript ausgelagert. Somit können die Aufrufe von +% pdf\LaTeX{} für die Tutorials im entsprechenden Ordner erfolgen. +% \begin{macrocode} + \filemodCmp{tutorials/#3.pdf}{tutorials/#3.tex}{}{% + \immediate\openout\tud@write@i=tutorials.sh% + \immediate\write\tud@write@i{% + cd tutorials^^J% + pdflatex -shell-escape #3^^J% + biber #3^^J% + makeglossaries #3^^J% + pdflatex #3^^J% + pdflatex #3% + }% + \immediate\closeout\tud@write@i% +% \end{macrocode} +% Hier erfolgt die Unterscheidung der Befehle für die unterschiedlichen OS. +% \begin{macrocode} + \ifwindows% + \immediate\write18{rename tutorials.sh tutorials.bat}% + \immediate\write18{tutorials.bat}% + \immediate\write18{del tutorials.bat}% + \else% + \immediate\write18{bash tutorials.sh}% + \immediate\write18{rm tutorials.sh}% + \fi% + }% + \fi% +% \end{macrocode} +% Hyperlink und Indexeintrag. +% \begin{macrocode} + \IfFileExists{tutorials/#3.pdf}{% + \hypertut{#3}{}% + }{% + \textsbn{#3.pdf}% + \tud@shellescape@wrn% + }% + \IfBooleanF{#1}{% + \index[files]{\hypertut{#3}{~{\idxfont(Tutorial)}\IfValueT{#2}{|#2}}}% + }% +} +%</class> +% \end{macrocode} +% Der Befehl für die Querverweise innerhalb von Tutorials. +% \begin{macrocode} +%<*package> +\newcommand*\Tutorial[1]{\href{#1.pdf}{\textsbn{#1.pdf}}} +%</package> +% \end{macrocode} +% \end{macro}^^A \hypertut +% \end{macro}^^A \Tutorial +% +% \iffalse +%<*class> +% \fi +% +% \begin{macro}{\IncludeExample} +% \changes{v2.02}{2014/07/25}{Skalierung der eingefügten Seiten}%^^A +% \changes{v2.02}{2014/10/14}{Reimplementierung}%^^A +% Mit diesem Befehl wird eine \LaTeX-Datei ggf. übersetzt und anschließend als +% PDF"~Datei wieder eingebunden. Zuvor wird der dazugehörige Quelltext mittels +% \cs{lstinputlisting} im Dokument ausgegeben. Dieser Befehl wird lediglich für +% die Klasse \cls{tudscrman} benötigt. +% \begin{macrocode} +\newcommand*\IncludeExample[1]{% + \lstinputlisting[style=tudscr]{examples/#1}% +% \end{macrocode} +% Die Beispiele werden nur erneut kompiliert, wenn sich diese geändert haben +% oder noch gar kein entsprechendes PDF"~Dokument existiert. +% \begin{macrocode} + \ifnum\pdfshellescape=1\relax% + \filemodCmp{examples/#1.pdf}{examples/#1.tex}{}{% + \immediate\write18{% + pdflatex -shell-escape -output-directory examples examples/#1.tex + pdflatex -output-directory examples examples/#1.tex + pdflatex -output-directory examples examples/#1.tex + }% + }% + \fi% +% \end{macrocode} +% Ist die gesuchte Datei vorhanden, wird diese auch eingebunden. Andernfalls +% wird eine Warnung mit dem Hinweis auf die notwendige Verwednung von +% \val{pdflatex} mit der Option \opt{--shell-escape} erzeugt. +% \begin{macrocode} + \IfFileExists{examples/#1.pdf}{% + \includepdf[% + pages=-,noautoscale,frame,keepaspectratio,pagecommand={},% + height=\textheight,width=\textwidth, offset=5mm 0mm% + ]{examples/#1.pdf}% + }{% + \tud@shellescape@wrn% + }% +} +% \end{macrocode} +% \end{macro}^^A \IncludeExample +% +% \iffalse +%</class> +% \fi +% +% \subsubsection{ToDo-Liste} +% +% \begin{macro}{\ToDo} +% \changes{v2.02}{2014/07/10}{Verwendung von \pkg{todonotes}}%^^A +% \begin{macro}{\@ToDo} +% \changes{v2.02}{2014/07/10}{neu}%^^A +% \begin{macro}{\ListOfToDo} +% \changes{v2.02}{2014/07/10}{neu}%^^A +% Mit dem Befehl \cs{ToDo}\oarg{options}\marg{inline text}\oarg{marginnote} +% kann bei aktivierter Option \opt{ToDo} eine Notiz mit einer offenen Ausgabe +% erstellt werden. Das vorangestellte Argument kann Optionen beinhalten, welche +% durch \pkg{todonotes} unterstützt werden. Außerdem werden die vier boolschen +% Schlüssel \val{doc}, \val{man}, \val{imp} und \val{nxt} definiert, welche +% eine feste, farbliche Kodierung erzeugen. Das angestellte optionale Argument +% erzeugt eine gleichartige Notiz am Rand, in welcher vorzugsweise die +% angedachte Version eingetragen werden kann. Mit \cs{ListOfToDo} wird abhängig +% von der Option \opt{ToDo} eine Liste der offenen Aufgaben erstellt. +% \begin{macrocode} +\newcommand*\@ToDo{} +\NewDocumentCommand\ToDo{somo}{% + \ifbool{@tud@todo}{% + \begingroup% +% \end{macrocode} +% Die boolschen Schlüssel. +% \begin{macrocode} + \define@boolkey{todonotes}{doc}[true]{% + \ifbool{KV@todonotes@doc}{\setkeys{todonotes}{color=HKS41!10}}{}% + }% + \define@boolkey{todonotes}{rls}[true]{% + \ifbool{KV@todonotes@rls}{\setkeys{todonotes}{color=HKS44!50}}{}% + }% + \define@boolkey{todonotes}{imp}[true]{% + \ifbool{KV@todonotes@imp}{\setkeys{todonotes}{color=HKS07!50}}{}% + }% + \define@boolkey{todonotes}{nxt}[true]{% + \ifbool{KV@todonotes@nxt}{\setkeys{todonotes}{color=HKS57!50}}{}% + }% +% \end{macrocode} +% In \cs{@ToDo} wird das optionale Argument für \pkg{todonotes} gesichert. +% \begin{macrocode} + \def\@ToDo{}% + \IfValueTF{#2}{% + \IfBooleanTF{#1}{\edef\@ToDo{#2,nolist}}{\edef\@ToDo{#2}}% + }{% + \IfBooleanT{#1}{\edef\@ToDo{nolist}}% + }% +% \end{macrocode} +% Damit die Randnotiz nicht verrutscht, wird \cs{marginnote} anstelle von +% \cs{marginpar} verwendet. Außerdem ist eine Verschiebung um den durch +% \pkg{todonotes} definierten Leerraum notwendig. +% \begin{macrocode} + \renewcommand*\marginpar[2][]{\marginnote[##1]{##2}[\dimexpr-1.6ex+1pt]}% + \vskip.8ex% +% \end{macrocode} +% hier erfolgt die Ausgabe. +% \begin{macrocode} + \IfValueT{#4}{% + \settowidth\marginparwidth{#4}% + \addtolength\marginparwidth{\dimexpr1.6ex+1pt}% + \let\par\relax\noindent% + \edef\@tempa{\noexpand\todo[\@ToDo,noline,nolist]}% + \@tempa{#4}% + }% + \edef\@tempa{\noexpand\todo[\@ToDo,inline]}% + \@tempa{#3}% + \endgroup% + \par\noindent% + }{}% + \ignorespaces% +} +% \end{macrocode} +% Zum Schluss wird der Befehl \cs{ListOfToDo} definiert, der die Liste der noch +% zu erledigenden Punkte nur ausgeführt ausgibt, wenn die Option \opt{ToDo} +% aktiviert ist. Außerdem werden die Randnotizen auf den linken~-- weil +% größeren~-- Rand gesetzt. +% \begin{macrocode} +\newcommand*\ListOfToDo{\if@tud@todo\listoftodos\fi} +\reversemarginpar +% \end{macrocode} +% \end{macro}^^A \ListOfToDo +% \end{macro}^^A \@ToDo +% \end{macro}^^A \ToDo +% +% \subsubsection{Kleinkram} +% +% \begin{macro}{\bsc} +% \changes{v2.02}{2014/07/22}{\cs{DeclareRobustCommand} ersetzt mit +% \cs{newrobustcmd} aus \pkg{etoolbox}}%^^A +% Eine einfacher zu verwendende Kurzform. +% \begin{macrocode} +\newrobustcmd*\bsc{\@backslashchar} +% \end{macrocode} +% \end{macro}^^A \bsc +% \begin{length}{\baselineskipglue} +% Diese Länge wird in der Dokumentation für alle möglichen stauch- und +% dehnbaren Einfügen genutzt. +% \begin{macrocode} +\newlength\baselineskipglue +\setlength\baselineskipglue{% + .4\baselineskip plus .4\baselineskip minus .2\baselineskip% +} +% \end{macrocode} +% \end{length}^^A \baselineskipglue +% \begin{macro}{\tud@shellescape@wrn} +% \changes{v2.02}{2014/10/14}{neu}%^^A +% Dieses Makro wird verwendet, wenn eine gesuchte Datei nicht gefunden wurde, +% weil das Dokument noch nicht mit der Option \opt{--shell-escape} kompiliert +% wurde. +% \begin{macrocode} +\newcommand*\tud@shellescape@wrn{% + \ClassWarning{\tudcls@name}{% + You have to recompile this document with\MessageBreak% + activated shell escape option% + }% + \global\let\tud@shellescape@wrn\relax% +} +% \end{macrocode} +% \end{macro}^^A \tud@shellescape@wrn +% \begin{macro}{\pdfexpandableoutline} +% \changes{v2.02}{2014/11/04}{neu}%^^A +% \begin{macro}{\@TUDScript} +% \changes{v2.02}{2014/08/16}{neu}%^^A +% Für die PDF-Outline-Einträge müssen einige Befehle durch eine expandierbare +% Version ersetzt werden. Der Befehl \cs{pdfexpandableoutline} wird definiert, +% um dies möglichst einfach zu gestalten. +% \begin{macrocode} +\newcommand*\pdfexpandableoutline[1]{% + \AfterPackage*{hyperref}{\pdfstringdefDisableCommands{\csletcs{#1}{@#1}}} +} +% \end{macrocode} +% Den Anfang mach gleich \cs{TUDScript}. +% \begin{macrocode} +\newcommand*\@TUDScript{TUD-KOMA-Script} +\pdfexpandableoutline{TUDScript} +% \end{macrocode} +% \end{macro}^^A \@TUDScript +% \end{macro}^^A \pdfexpandableoutline +% +% \subsubsection{Markup von Klassen, Paketen, Optionen und weiteren Elementen} +% +% Im Folgenden werden allerhand Befehle mit Hilfe des Paketes \pkg{xparse} +% definiert, um bestimmte Begriffe, Klassen, Pakete, Optionen, Umgebungen, +% Befehle, Parameter, Bezeichner, Längen, Schriftelemente und Farben speziell +% auszuzeichnen. Diese Befehle lauten für Klasse und Paket nutzen aus Gründen +% der Konsistenz zwar gleich, unterschieden sich jedoch in der Implementierung. +% +% Für die Klasse gilt, dass die Sternversion all dieser Befehlen nichts in den +% Index einträgt, wenn diese denn im Fließtext Verwendung finden. Wird die +% Sternversion jedoch in einer Änderungsnotiz genutzt, so wird die für diese +% normalerweise angehängte Beschreibung des Elementes unterdrückt. Für (fast) +% alle der folgenden Befehle gilt, dass diese mit zwei optionalen Befehlen am +% Ende genutzt werden können. Mit \val{'refformat'} kann angegeben werden, ob +% der automatisch erzeugte Hyperlink um einen textuellen Querverweis ergänzt +% werden soll. Mit \val{|idxformat|} kann die Erscheinung im Index angepasst +% werden. Die eigentliche Behandlung der Eingabe und die Eintragungen in den +% Index erfolgen dabei mit dem Befehl \cs{@ProcessOutput}, für einen Eintrag +% in die Änderungsliste wird der Befehl \cs{@ProcessChangedAt} genutzt. +% +% Die Befehle für das Paket \pkg{tudscrman} sind in ihrer Funktionalität um +% einiges reduziert. Die meisten besitzen nur ein obligatorisches Argument für +% die formatierte Ausgabe sowie evtl. eine Sternversion, die einen Querverweis +% auf das Handbuch erzeugt. +% \begin{macro}{\Application} +% \changes{v2.02}{2014/10/08}{überarbeitet}%^^A +% \begin{macro}{\@Application} +% Die Auszeichnung und der Indexeintrag einer Anwendungssoftware. +% \begin{macrocode} +%<*class> +\NewDocumentCommand\Application{smd||}{% + \ifdin{#2}{% + \mbox{\textsbs{#2}}% + \CheckIndexFormat{#1}{#3}% + \IfBooleanF{#1}{% + \index{\textsbs{#2}~{\idxfont(Anwendungssoftware)}\IfValueT{#3}{|#3}}% + }% + }% +} +\DeclareExpandableDocumentCommand\@Application{sm}{#2} +\pdfexpandableoutline{Application} +%</class> +%<*package> +\newcommand*\Application[1]{\ifdin{#1}{\mbox{\textsbs{#1}}}} +%</package> +% \end{macrocode} +% \end{macro}^^A \@Application +% \end{macro}^^A \Application +% \begin{macro}{\Distribution} +% \changes{v2.02}{2014/10/08}{überarbeitet}%^^A +% Die Auszeichnung und der Indexeintrag einer \LaTeX-Distribution. +% \begin{macrocode} +%<*class> +\NewDocumentCommand\Distribution{smod||}{% + \ifdin{#2\IfValueT{#3}{~#3}}{% + \mbox{\textsbn{#2\IfValueT{#3}{~#3}}}% + \CheckIndexFormat{#1}{#4}% + \IfBooleanF{#1}{% + \index{\textsbn{#2}~{\idxfont(Distribution)}\IfValueT{#4}{|#4}}% + }% + }% +} +%</class> +%<*package> +\newcommand*\Distribution[1]{\ifdin{#1}{\mbox{\textsbn{#1}}}} +%</package> +% \end{macrocode} +% \end{macro}^^A \Distribution +% \begin{macro}{\Path} +% \changes{v2.02}{2014/07/22}{\cs{DeclareRobustCommand} ersetzt durch +% \cs{newrobustcmd} aus \pkg{etoolbox}}%^^A +% Die Auszeichnung eines Dateipfades. +% \begin{macrocode} +\newrobustcmd*\Path[1]{\mbox{\texttt{#1}}} +% \end{macrocode} +% \end{macro}^^A \Path +% \begin{macro}{\File} +% \changes{v2.02}{2014/10/08}{überarbeitet}%^^A +% Die Auszeichnung und der Indexeintrag einer Datei. +% \begin{macrocode} +%<*class> +\NewDocumentCommand\File{smd||}{% + \ifdin{#2}{% + \mbox{\textsbn{#2}}% + \CheckIndexFormat{#1}{#3}% + \IfBooleanF{#1}{% + \index[files]{\textsbn{#2}~{\idxfont(Datei)}\IfValueT{#3}{|#3}}% + }% + }% +} +%</class> +%<*package> +\newcommand*\File[1]{\ifdin{#1}{\mbox{\textsbn{#1}}}} +%</package> +% \end{macrocode} +% \end{macro}^^A \File +% \begin{macro}{\Class} +% \changes{v2.02}{2014/10/08}{überarbeitet}%^^A +% \begin{macro}{\@Class} +% \begin{macro}{\@TempClass} +% \changes{v2.02}{2014/10/08}{entfernt}%^^A +% \begin{macro}{\DeclareClass} +% \changes{v2.02}{2014/10/09}{entfernt}%^^A +% Die Auszeichnung und der Indexeintrag einer Klasse. Sollte gerade DIN~Bold +% verwendet werden~-- der Befehl wird innerhalb einer Überschrift genutzt~-- +% wird lediglich das Hauptargument ausgegeben. Das optionale Argument zwischen +% Apostrophen kann für die Formatierung eines Querverweises im Text genutzt +% werden, das optionale Argument zwischen senkrechten Strichen dient der +% Formatierung des Indexeintrages. Außerdem wird für Einträge mit dem Paket +% \pkg{hyperref} mit \cs{@Class} eine expandierbare Version definiert. +% \begin{macrocode} +%<*class> +\NewDocumentCommand\Class{smd''d||}{% + \if@changelog% + \@ProcessChangedAt{#1}{files}{\protect\sbnfont}{#2}{Klasse}% + \else% + \ifdin{#2}{% + \SetIndexFormat{#1}{#4}% + \@ProcessOutput{\textsbn{#2}}'#3'% + {files}[\protect\sbnfont]{#2}[~{\idxfont(Klasse)}]% + }% + \fi% +} +%</class> +%<*package> +\NewDocumentCommand\Class{sm}{% + \ifdin{#2}{% + \IfBooleanTF{#1}{% + \manualhyperref{files:#2}{\textsbn{#2}}% + }{% + \textsbn{#2}% + }% + \index[files]{\begingroup\protect\sbnfont#2\endgroup~{\idxfont(Klasse)}}% + }% +} +%</package> +\DeclareExpandableDocumentCommand\@Class{sm}{#2} +\pdfexpandableoutline{Class} +% \end{macrocode} +% \end{macro}^^A \DeclareClass +% \end{macro}^^A \@TempClass +% \end{macro}^^A \@Class +% \end{macro}^^A \Class +% \begin{macro}{\Package} +% \changes{v2.02}{2014/07/10}{Ausgabe für ChangeLog hinzugefügt}%^^A +% \changes{v2.02}{2014/10/08}{überarbeitet}%^^A +% \begin{macro}{\@Package} +% \begin{macro}{\@TempPackage} +% \begin{macro}{\DeclarePackage} +% \changes{v2.02}{2014/10/09}{entfernt}%^^A +% Für die Auszeichnungen von Paketen gelten vorherigen Aussagen äquivalent. +% Für Pakete wird ergänzend ein Hyperlink auf CTAN erzeugt, wenn für dieses +% kein Label im Dokument besteht, wo dieses genauer erläutert wird. Mit dem +% optionalen Argument in runden Klammern lässt sich der Paketname für den Link, +% welcher normalerweise aus obligatorischen Argument entnommen wird, anpassen. +% Zusätzlich wird ein Befehl für Tutorials erstellt, welcher auf das Handbuch +% verweist. +% \begin{macrocode} +%<*class> +\newcommand*\@TempPackage{} +\NewDocumentCommand\Package{smd''d()d||}{% + \if@changelog% + \@ProcessChangedAt{#1}{files}{\protect\sbnfont}{#2}{Paket}% + \else% + \ifdin{#2}{% + \IfValueTF{#4}{\def\@TempPackage{#4}}{\def\@TempPackage{#2}}% + \SetIndexFormat{#1}{#5}% + \@ProcessOutput{\textsbn{#2}}'#3'(\@TempPackage)% + {files}[\protect\sbnfont]{#2}[~{\idxfont(Paket)}]% + }% + \fi% +} +%</class> +%<*package> +\NewDocumentCommand\Package{smd()}{% + \ifdin{#2}{% + \IfBooleanTF{#1}{% + \manualhyperref{files:#2}{\textsbn{#2}}% + }{% + \IfValueTF{#3}{% + \href{http://www.ctan.org/pkg/#3}{\textsbn{#2}}% + }{% + \href{http://www.ctan.org/pkg/#2}{\textsbn{#2}}% + }% + }% + \index[files]{\begingroup\protect\sbnfont#2\endgroup~{\idxfont(Paket)}}% + }% +} +%</package> +\DeclareExpandableDocumentCommand\@Package{sm}{#2} +\pdfexpandableoutline{Package} +% \end{macrocode} +% \end{macro}^^A \DeclarePackage +% \end{macro}^^A \@TempPackage +% \end{macro}^^A \@Package +% \end{macro}^^A \Package +% \begin{macro}{\Option} +% \changes{v2.02}{2014/10/08}{überarbeitet}%^^A +% \begin{macro}{\@Option} +% \changes{v2.02}{2014/11/02}{neu}%^^A +% \begin{macro}{\@TempOption} +% Im Gegensatz zu den vorherigen Befehlen gibt es ein ordinäres optionales +% Argument nach dem Hauptargument. Damit kann der Option im Handbuch ein Wert +% zugewiesen werden. Für Tutorials wird ein Befehl definiert, der auf das +% Handbuch verweist. +% \begin{macrocode} +%<*class> +\newcommand*\@TempOption{} +\NewDocumentCommand\Option{smod''d||}{% + \if@changelog% + \@ProcessChangedAt{#1}{options}{\ttfamily}{#2}{Option}% + \else% + \IfValueTF{#3}{\gdef\@TempOption{\texttt{=#3}}}{\gdef\@TempOption{}}% + \SetIndexFormat{#1}{#5}% + \@ProcessOutput{\texttt{#2}}[\@TempOption]'#4'{options}[\ttfamily]{#2}% + \fi% +} +%</class> +%<*package> +\NewDocumentCommand\Option{smo}{% + \ifdin{#2}{% + \IfBooleanTF{#1}{% + \manualhyperref{options:#2}{\texttt{#2}}\IfValueT{#3}{\texttt{=#3}}% + }{% + \texttt{#2}\IfValueT{#3}{\texttt{=#3}}% + }% + \index[options]{\begingroup\ttfamily#2\endgroup}% + }% +} +%</package> +\DeclareExpandableDocumentCommand\@Option{sm}{#2} +\pdfexpandableoutline{Option} +% \end{macrocode} +% \end{macro}^^A \@TempOption +% \end{macro}^^A \@Option +% \end{macro}^^A \Option +% \begin{macro}{\Environment} +% \changes{v2.02}{2014/10/08}{überarbeitet}%^^A +% \begin{macro}{\@Environment} +% \changes{v2.02}{2014/11/02}{neu}%^^A +% \begin{macro}{\@TempEnvironment} +% Auch hier wird für die Änderungsliste unterschieden und für Tutorials ein +% Befehl definiert, welcher auf das Handbuch referenziert. +% \begin{macrocode} +%<*class> +\newcommand*\@TempEnvironment{} +\NewDocumentCommand\Environment{smod''d||}{% + \if@changelog% + \@ProcessChangedAt{#1}{macros}{\ttfamily}{#2}{Umgebung}% + \else% +% \end{macrocode} +% Außerdem wird für den Fall, dass der \cs{Environment}-Befehl innerhalb der +% Umgebung \env{Declaration} verwendet wird, eine spezielle Ausgabe erzeugt. Nur +% hier kommt das optionale Argument nach dem Hauptargument zum Tragen. Damit +% können etwaige obligatorische und optionale Argumente angegeben werden. +% \begin{macrocode} + \if@declare% + \gdef\@TempEnvironment{% + \texttt{\bsc{}begin\{#2\}\IfValueT{#3}{#3}}\tabularnewline% + \texttt{\dots}\tabularnewline% + \texttt{\bsc{}end\{#2\}}% + }% + \else% + \gdef\@TempEnvironment{\texttt{#2}}% + \fi% + \SetIndexFormat{#1}{#5}% + \@ProcessOutput{\@TempEnvironment}'#4'{macros}[\ttfamily]{#2}% + \fi% +} +%</class> +%<*package> +\NewDocumentCommand\Environment{sm}{% + \ifdin{#2}{% + \IfBooleanTF{#1}{% + \manualhyperref{macros:#2}{\texttt{#2}}% + }{% + \texttt{#2}% + }% + \index[macros]{\begingroup\ttfamily#2\endgroup}% + }% +} +%</package> +\DeclareExpandableDocumentCommand\@Environment{sm}{#2} +\pdfexpandableoutline{Environment}% +% \end{macrocode} +% \end{macro}^^A \@TempEnvironment +% \end{macro}^^A \@Environment +% \end{macro}^^A \Environment +% \begin{macro}{\Macro} +% \changes{v2.02}{2014/10/08}{überarbeitet}%^^A +% \begin{macro}{\@Macro} +% \changes{v2.02}{2014/11/02}{neu}%^^A +% Die Auszeichnung und der Indexeintrag eines Befehls sowie für das Paket +% \pkg{tudscrman} der Hyperlink auf das Handbuch. +% \begin{macrocode} +%<*class> +\NewDocumentCommand\Macro{smd''d||}{% + \if@changelog% + \@ProcessChangedAt{#1}{macros}{\ttfamily\bsc}{#2}{Befehl}% + \else% + \SetIndexFormat{#1}{#4}% + \@ProcessOutput{\texttt{\bsc#2}}'#3'{macros}[\ttfamily\bsc]{#2}% + \fi% +} +%</class> +%<*package> +\NewDocumentCommand\Macro{sm}{% + \ifdin{\bsc#2}{% + \IfBooleanTF{#1}{% + \manualhyperref{macros:#2}{\texttt{\bsc#2}}% + }{% + \texttt{\bsc#2}% + }% + \index[macros]{\begingroup\ttfamily\bsc#2\endgroup}% + }% +} +%</package> +\DeclareExpandableDocumentCommand\@Macro{sm}{#2} +% \end{macrocode} +% \end{macro}^^A \@Macro +% \end{macro}^^A \Macro +% \begin{macro}{\Length} +% \changes{v2.02}{2014/10/08}{überarbeitet}%^^A +% \begin{macro}{\@TempLength} +% \changes{v2.02}{2014/10/08}{entfernt}%^^A +% Die Auszeichnung und der Indexeintrag einer \LaTeX-Länge. +% \begin{macrocode} +%<*class> +\NewDocumentCommand\Length{smd''d||}{% + \if@changelog% + \@ProcessChangedAt{#1}{macros}{\ttfamily\bsc}{#2}{L\"ange}% + \else% + \SetIndexFormat{#1}{#4}% + \@ProcessOutput{\texttt{\bsc#2}}[\if@declare~{\idxfont(L\"ange)}\fi]'#3'% + {macros}[\ttfamily\bsc]{#2}[~{\idxfont(L\"ange)}]% + \fi% +} +%</class> +%<*package> +\NewDocumentCommand\Length{sm}{% + \ifdin{\bsc#2}{% + \IfBooleanTF{#1}{% + \manualhyperref{macros:#2}{\texttt{\bsc#2}}% + }{% + \texttt{\bsc#2}% + }% + \index[macros]{\begingroup\ttfamily\bsc#2\endgroup~{\idxfont(L\"ange)}}% + }% +} +%</package> +% \end{macrocode} +% \end{macro}^^A \@TempLength +% \end{macro}^^A \Length +% +% \iffalse +%<*class> +% \fi +% +% \minisec{Exklusive Auszeichnungen für die Klasse} +% Alle weiteren Befehle werden ausschließlich für die Klasse \cls{tudscrman} +% definiert. +% +% \begin{macro}{\Key} +% \changes{v2.02}{2014/10/08}{überarbeitet}%^^A +% \begin{macro}{\@TempKey} +% Die Auszeichnung und der Indexeintrag eines Parameters für Umgebungen und +% Befehle. Das erste Argument ist die Umgebung oder der Befehl, wofür der +% Parameter gültig ist. Das zweite Argument ist der Parameter selbst. Dafür +% werden die Befehle \cs{Environment} und \cs{Macro} lokal umdefiniert. Das +% ordinäre obligatorische Argument danach dient der Zuweisung eines Wertes im +% Fließtext. +% \begin{macrocode} +\newcommand*\@TempKey{} +\NewDocumentCommand\Key{smmod''d||}{% + \if@changelog% + \@ProcessChangedAt{#1}{macros}(#2){\ttfamily}{#3}{Parameter}% + \else% + \begingroup% + \let\Environment\@firstofone% + \let\Macro\@firstofone% + \IfValueTF{#4}{% + \gdef\@TempKey{\texttt{=#4}\if@declare~{\idxfont(Parameter)}\fi}% + }{% + \gdef\@TempKey{\if@declare~{\idxfont(Parameter)}\fi}% + }% + \SetIndexFormat{#1}{#6}% + \@ProcessOutput{\texttt{#3}}[\@TempKey]'#5'{macros}(#2)[\ttfamily]{#3}% + \endgroup% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \@TempKey +% \end{macro}^^A \Key +% \begin{macro}{\PageStyle} +% \changes{v2.02}{2014/07/25}{neu}%^^A +% Die Auszeichnung und der Indexeintrag eines Seitenstils. +% \begin{macrocode} +\NewDocumentCommand\PageStyle{smd''d||}{% + \if@changelog% + \@ProcessChangedAt{#1}{macros}{\ttfamily}{#2}{Seitenstil}% + \else% + \SetIndexFormat{#1}{#4}% + \@ProcessOutput{\texttt{#2}\if@declare~{\idxfont(Seitenstil)}\fi}'#3'% + {macros}[\ttfamily]{#2}[~{\idxfont(Seitenstil)}]% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \PageStyle +% \begin{macro}{\Counter} +% \changes{v2.02}{2014/10/08}{überarbeitet}%^^A +% \begin{macro}{\@TempCounter} +% \changes{v2.02}{2014/10/08}{entfernt}%^^A +% Die Auszeichnung und der Indexeintrag einer \LaTeX-Zählers. +% \begin{macrocode} +\NewDocumentCommand\Counter{smd''d||}{% + \if@changelog% + \@ProcessChangedAt{#1}{macros}{\ttfamily}{#2}{Z\"ahler}% + \else% + \SetIndexFormat{#1}{#4}% + \@ProcessOutput{\texttt{#2}}[\if@declare~{\idxfont(Z\"ahler)}\fi]% + {macros}[\ttfamily]{#2}[~{\idxfont(Z\"ahler)}]% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \@TempCounter +% \end{macro}^^A \Counter +% \begin{macro}{\Term} +% \changes{v2.02}{2014/10/08}{überarbeitet}%^^A +% \begin{macro}{\@TempTerm} +% \changes{v2.02}{2014/10/08}{entfernt}%^^A +% Die Auszeichnung und der Indexeintrag eines sprachabhängigen Bezeichners. +% \begin{macrocode} +\NewDocumentCommand\Term{smd''d||}{% + \if@changelog% + \@ProcessChangedAt{#1}{terms}{\ttfamily\bsc}{#2}{Bezeichner}% + \else% + \SetIndexFormat{#1}{#4}% + \@ProcessOutput{\texttt{\bsc#2}}[\if@declare~{\idxfont(Bezeichner)}\fi]'#3'% + {terms}[\ttfamily\bsc]{#2}% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \@TempTerm +% \end{macro}^^A \Term +% \begin{macro}{\TermTable} +% \begin{macro}{\@TermTable} +% \begin{macro}{\@@TermTable} +% \begin{macro}{\@termlist} +% Für sprachabhängige Bezeichner wird zusätzlich der Befehl \cs{TermTable} +% definiert, dem eine kommaseparierte Liste übergeben werden kann. Anhand +% dieser Liste werden die enthalten Begriffe für die Sprachen Deutsch und +% English in einer Tabelle ausgegeben. Die Sternversion dieses Befehls nutzt +% dafür die \env{tabularx}-Umgebung. Für diese kann ein zweites Argument +% angegeben werden, welches die gewünschte Breite der Tabelle angibt. +% \begin{macrocode} +\newcommand\@termlist{} +\let\@termlist\relax +\NewDocumentCommand\TermTable{smg}{% + \forcsvlist{\listadd\@termlist}{#2}% + \ifvmode\else\par\fi% + \vskip\baselineskipglue% + \@afterindentfalse\@afterheading% + \IfBooleanTF{#1}{% + \IfValueTF{#3}{\setlength\@tempdima{#3}}{\setlength\@tempdima{\linewidth}}% + \setlength{\@tempdimc}{-.7\baselineskip}% + \begin{tabularx}{\@tempdima}{lXX}\@TermTable\end{tabularx}% + }{% + \setlength{\@tempdimc}{\z@}% + \begin{tabular}{lll}\@TermTable\end{tabular}% + }% + \let\@termlist\relax% +} +\newcommand*\@TermTable{% + \toprule% + \textbf{Bezeichner} & \textbf{Deutsch} & \textbf{Englisch}\tabularnewline% + \midrule% + \forlistloop\@@TermTable{\@termlist}% + \bottomrule% +} +\newcommand*\@@TermTable[1]{% + \Term{#1} & % + \ifstr{\@nameuse{#1}}{}{\PName{leer}}{\@nameuse{#1}} & % + \selectlanguage{english}\vspace*{\@tempdimc}% + \ifstr{\@nameuse{#1}}{}{\PName{empty}}{\@nameuse{#1}}\tabularnewline% +} +% \end{macrocode} +% \end{macro}^^A \@termlist +% \end{macro}^^A \@@TermTable +% \end{macro}^^A \@TermTable +% \end{macro}^^A \TermTable +% \begin{macro}{\Font} +% \changes{v2.02}{2014/10/08}{überarbeitet}%^^A +% \begin{macro}{\@TempFont} +% \changes{v2.02}{2014/10/08}{entfernt}%^^A +% Die Auszeichnung und der Indexeintrag eines Schriftelementes. +% \begin{macrocode} +\NewDocumentCommand\Font{smd''d||}{% + \if@changelog% + \@ProcessChangedAt{#1}{fonts}{\ttfamily}{#2}{Schriftelement}% + \else% + \SetIndexFormat{#1}{#4}% + \@ProcessOutput{\texttt{#2}\if@declare~{\idxfont(Schriftelement)}\fi}% + {fonts}[\ttfamily]{#2}% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \@TempFont +% \end{macro}^^A \Font +% \begin{macro}{\Color} +% \changes{v2.02}{2014/10/08}{überarbeitet}%^^A +% \begin{macro}{\@TempColor} +% \changes{v2.02}{2014/10/08}{entfernt}%^^A +% Die Auszeichnung und der Indexeintrag einer Farbe des \CDs. +% \begin{macrocode} +\NewDocumentCommand\Color{smod''d||}{% + \if@changelog% + \@ProcessChangedAt{#1}{colors}{\ttfamily}{#2}{Farbe}% + \else% + \SetIndexFormat{#1}{#5}% + \@ProcessOutput{\texttt{#2}}[% + \IfValueT{#3}{~\texttt{(#3)}}\if@declare~{\idxfont(Farbe)}\fi% + ]'#4'{colors}[\ttfamily]{#2}% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \@TempColor +% \end{macro}^^A \Color +% Damit ist das Intermezzo mit Auszeichnungsbefehlen speziell für die Klasse +% beendet. +% +% \iffalse +%</class> +% \fi +% +% \iffalse +%<*class> +% \fi +% +% \subsection{Befehle und Umgebungen für die Klasse} +% +% Hier taucht alles auf, was lediglich für die Klasse \cls{tudscrman} und nicht +% für das Paket benötigt wird. +% +% \begin{macro}{\CheckIndexFormat} +% \changes{v2.02}{2014/10/08}{neu}%^^A +% \begin{macro}{\SetIndexFormat} +% \changes{v2.02}{2014/10/08}{neu}%^^A +% \begin{macro}{\@IndexFormat} +% \changes{v2.02}{2014/10/08}{neu}%^^A +% Zuerst werden jedoch einige Hilfsmakros erstellt mit denen überprüft wird, ob +% die Sternversion der zuvor definierten Auszeichnung"=Befehle zusammen mit +% einer Indexformatierung \val{|idxformat|} genutzt wurde, was sich natürlich +% widerspricht. In diesem Fall erfolgt eine Warnung. +% \begin{macrocode} +\newcommand*\@IndexFormat{} +\let\@IndexFormat\relax +\newcommand*\CheckIndexFormat[2]{% + \IfBooleanT{#1}{% + \IfValueT{#2}{% + \ClassWarning{\tudcls@name}{% + You've used the starred version so no entry for\MessageBreak% + the index is created and the optional argument\MessageBreak% + |#2| will be ignored% + }% + }% + }% +} +% \end{macrocode} +% Der Befehl \cs{SetIndexFormat} setzt das gewünschte Format für den jeweilgen +% Indexeintrag. +% \begin{macrocode} +\newcommand*\SetIndexFormat[2]{% + \CheckIndexFormat{#1}{#2}% + \IfBooleanTF{#1}{% + \def\@IndexFormat{#1}% + }{% + \IfValueTF{#2}{\def\@IndexFormat{#2}}{\def\@IndexFormat{}}% + }% +} +% \end{macrocode} +% \end{macro}^^A \@IndexFormat +% \end{macro}^^A \SetIndexFormat +% \end{macro}^^A \CheckIndexFormat +% \begin{macro}{\if@declare} +% \begin{macro}{\if@stareddeclare} +% \changes{v2.02}{2014/10/09}{neu}%^^A +% \begin{macro}{\if@openindex} +% \begin{macro}{\if@noindex} +% Dies sin ein paar Hilfsmakros zur Steuerung des Markup sowie der Ausgabe von +% Deklarationen, Index und Änderungsliste, welche bei den nächsten Befehlen und +% Umgebungen genutzt werden. +% \begin{macrocode} +\newif\if@declare +\newif\if@stareddeclare +\newif\if@openindex +\newif\if@noindex +% \end{macrocode} +% \end{macro}^^A \if@noindex +% \end{macro}^^A \if@openindex +% \end{macro}^^A \if@stareddeclare +% \end{macro}^^A \if@declare +% +% \subsubsection{Abarbeitung der Markup-Befehle} +% +% In der Klasse \cls{tudscrman} werden die Markup-Befehle entweder im Fließtext +% verwendet und dabei automatisch Einträge in den Index erzeugt oder aber diese +% werden als Argument der Umgebung \env{Declaration} genutzt. +% +% \begin{macro}{\@ProcessOutput} +% \changes{v2.02}{2014/10/08}{Markup für Index und Fließtext getrennt}%^^A +% \changes{v2.02}{2014/10/09}{Anpassung für Umgebung \env{Declaration*}}%^^A +% Der Befehl \cs{@ProcessOutput} ist das Herzstück der Auszeichnungen aller +% Elemente. Das erste obligatorische Argument ist der übergebene Wert, welcher +% in einer bestimmten Form ausgezeichnet werden soll. Darauf folgen die ein +% möglicher \oarg{Anhang} sowie ggf. das \val{'}\meta{Kürzel}\val{'} für die +% Erweiterung der Referenzierunug im Fließtext. Danach wird der Zielindex +% \marg{Index} und~-- für Parameter~-- der \parg{Haupteintrag} übergeben. Es +% folgt der zu erstellende Indexeintrag mit \oarg{Vorsatz}, \marg{Eintrag} und +% \oarg{Anhang}. Die Formatierung für den Indexbefehl wurde zuvor durch +% \cs{SetIndexFormat} in \cs{@IndexFormat} gespeichert. Der vollständige +% Funktionsaufruf lautet: +% \newline\begingroup\scriptsize +% \cs{@ProcessOutput}* +% \marg{Ausgabe}\oarg{Anhang}\val{'}\meta{Kürzel}\val{'}\ignorespaces% +% \marg{Index}\parg{Haupteintrag}\oarg{Vorsatz}\marg{Eintrag}\oarg{Anhang} +% \endgroup +% \begin{macrocode} +\NewDocumentCommand\@ProcessOutput{mod''d()md()omo}{% +% \end{macrocode} +% Mit dem Schalter \cs{if@declare} wird unterschieden, ob ein beliebiger +% Auszeichnungsbefehl innerhalb der Umgebung~\env{Declaration} verwendet wird. +% Ist dies der Fall wird ein Label und mit \cs{@HyperIndex} ein spezieller +% Indexeintrag für die Deklaration erstellt. Eine Ausgabe der Auszeichnung +% erfolgt in diesem Fall nicht, dafür ist der Befehl \cs{printdeclarationlist} +% verantwortlich. Außerdem wird mit Hilfe der \env{Declaration}-Umgebung der +% Anfang und das Ende der Deklaration für den Indexeintrag mit \cs{@HyperIndex} +% exakt festgelegt. Der Schalter \cs{if@openindex} wird zu Beginn der Umgebung +% auf \cs{@openindextrue} gesetzt, am Ende dieser auf \cs{@openindexfalse}. +% \begin{macrocode} + \if@declare% + \if@openindex% + \IfValueT{#3}{% + \ClassWarning{\tudcls@name}{% + It is not possible to use any cross-reference\MessageBreak% + shorthand like '#3' within the arguments of\MessageBreak% + the environment `Declaration'% + }% + }% + \ifx\@IndexFormat\@empty\else% + \ClassWarning{\tudcls@name}{% + It is not possible to use any indexing format\MessageBreak% + like |\@IndexFormat| within the arguments of the\MessageBreak% + environment `Declaration'% + }% + \fi% + \if@noindex\else% + \IfValueTF{#6}{\edef\@tempa{#5:#6:#8}}{\edef\@tempa{#5:#8}}% +% \end{macrocode} +% Wird zur Deklaration die Umgebung \env{Declaration*} genutzt, so wird der +% Hyperlink ein ganzes Stück nach oben verschoben. Hintergrund ist, dass diese +% Umgebung eigentlich nur zum Deklarieren von Klassen und Paketen gedacht ist +% und direkt nach einer Gliederungsüberschrift folgen sollte. +% \begin{macrocode} + \if@stareddeclare% + \manualhyperdef'{\@tempa}% + \else% +% \end{macrocode} +% Andernfalls wird der normale Hyperlink gesetzt. Das Label zum Prüfen wird +% implizit durch \cs{manualhyperdef} gesetzt. +% \begin{macrocode} + \manualhyperdef{\@tempa}% + \fi% + \@HyperIndex{#5}{#6}{#7}{#8}{#9}{(declare}% + \fi% +% \end{macrocode} +% Die \env{Declaration*}"=Umgebung erzeugt keine direkte Ausgabe sondern nur +% die Hyperlinks und Indexeinträge. Die Nennung der Klasse bzw. des Paketes +% oder der Pakete sollte in der Überschrift davor erfolgen. +% \begin{macrocode} + \if@stareddeclare\else% + #1\IfValueT{#2}{#2}% + \fi% + \else% + \if@noindex\else% + \@HyperIndex{#5}{#6}{#7}{#8}{#9}{declare)}% + \fi% + \fi% + \else% +% \end{macrocode} +% Findet der Auszeichnungsbefehl außerhalb der \env{Declaration}-Umgebung im +% Fließtext Verwendung, wird für den Fall, dass keine Sternversion genutzt +% wurde, mit \cs{@HyperIndex} ein Eintrag im dazugehörigen Index erzeugt. +% \begin{macrocode} + \ifx\@IndexFormat\relax% + \ClassError{\tudcls@name}{\string\SetIndexFormat\space unused}{% + It seems you have forgotten to use \string\SetIndexFormat% + }% + \else% + \expandafter\IfBooleanF\expandafter{\@IndexFormat}{% + \@HyperIndex{#5}{#6}{#7}{#8}{#9}{\@IndexFormat}% + }% + \fi% +% \end{macrocode} +% Danach erfolgt die Ausgabe der Auszeichnung. Sollte für diesen ein Label +% durch eine Deklaration innerhalb der \env{Declaration}-Umgebung definiert +% worden sein, so wird auf dieses ein Hyperlink gesetzt. Ansonsten erfolgt die +% normale textuelle Ausgabe. Für Parameter muss der Hyperlink dabei aufgrund +% des definierten Haupteintrag etwas anders ausgeführt werden (\cs{@tempa}). +% \begin{macrocode} + \IfValueTF{#6}{\edef\@tempa{#5:#6:#8}}{\edef\@tempa{#5:#8}}% + \ifcsdef{r@\@tempa}{% +% \end{macrocode} +% Wurde ein Format für den Querverweis gesetzt, muss dieses validiert werden. +% Gültige Kürzel sind 'auto', 'page' und 'full'. Damit werden die erzeugten +% Querverweise um den Gliederungsabschnitt, die Seite oder beides ergänzt. +% Außerdem kann mit 'none' der Hyperlink selbst unterbunden werden. +% \begin{macrocode} + \let\@tempb\relax% + \def\@tempc{\mbox{\hyperref{}{\jobname}{\@tempa}{#1}\IfValueT{#2}{#2}}}% + \IfValueT{#3}{% + \def\@tempb{% + \ClassWarning{\tudcls@name}{% + You've used the unknown cross-reference\MessageBreak% + shorthand '#3'. Only 'auto', 'page'\MessageBreak% + and 'full' as well as 'none' are valid% + }% + }% + \ifstr{#3}{auto}{\def\@tempb{ in \autoref{\@tempa}}}{}% + \ifstr{#3}{page}{\def\@tempb{ \vpageref{\@tempa}}}{}% + \ifstr{#3}{full}{\def\@tempb{ in \fullref{\@tempa}}}{}% + \ifstr{#3}{none}{% + \let\@tempb\relax% + \def\@tempc{\mbox{#1\IfValueT{#2}{#2}}}% + }{}% + }% + \@tempc\@tempb% + }{% +% \end{macrocode} +% Wurde ein Format für den Querverweis gesetzt und es existiert kein passendes +% Label, wird eine Warnung ausgegeben. +% \begin{macrocode} + \IfValueT{#3}{% + \ClassWarning{\tudcls@name}{% + No cross-reference created, label \@tempa\space is missing% + }% + }% +% \end{macrocode} +% Sollte ein Paket mit \cs{Package} angegeben worden sein, so wurde das erste +% optionale Argument in runden Klammern verwendet. Dieses wird genutzt, um +% einen Hyperlink auf CTAN zu generieren. Die Ausgabe selbst besteht in jedem +% Fall aus dem ersten obligatorischen und ggf. dem ersten optionalen Argument. +% \begin{macrocode} + \IfValueTF{#4}{% + \href{http://www.ctan.org/pkg/#4}{\mbox{#1\IfValueT{#2}{#2}}}% + }{% + \mbox{#1\IfValueT{#2}{#2}}% + }% + }% + \fi% +% \end{macrocode} +% Zum Schluss wird \cs{@IndexFormat} zurückgesetzt. +% \begin{macrocode} + \let\@IndexFormat\relax% +} +% \end{macrocode} +% \end{macro}^^A \@ProcessOutput +% \begin{macro}{\hyperidx} +% \changes{v2.02}{2014/08/16}{neu}%^^A +% Aufgrund der Nichtbeachtung von RegExp"=Ausdrücken durch den Indexprozessor +% \texttt{texindy} (\url{http://sourceforge.net/p/xindy/bugs/22/}) muss hierfür +% etwas getrickst werden. Der Befehl \cs{hyperidx} hat ein optionales Argument, +% in welchem das für \cs{manualhyperref} obligatorische Label enthalten ist. +% Das führt dazu, dass \texttt{texindy} dieses beim internen Filtern in eckigen +% Klammern beibehält und es anschließend über eine in \texttt{tudscrman.xdy} +% eigens definierte \texttt{merge-rule} verworfen werden kann. +% \begin{macrocode} +\newrobustcmd*\hyperidx[2][]{\manualhyperref{#1}{#2}} +% \end{macrocode} +% \end{macro}^^A hyperidx +% \begin{macro}{\@HyperIndex} +% \changes{v2.02}{2014/10/08}{überarbeitet}%^^A +% Dieser Befehl sorgt für die eigentlichen Indexeinträge. Dabei werden für +% Einträge, welche innerhalb der \env{Declaration}-Umgebung deklariert wurden, +% ein Hyperlink im Index erstellt. Das erste Argument \marg{Index} enthält den +% gewünschten Zielindex. Danach folgt~-- für Parameter~-- der Haupteintrag. +% Daran schließt der Indexeintrag selbst mit \marg{Vorsatz}, \marg{Eintrag}, +% \marg{Anhang} und zum Abschluss \oarg{Formatierung} an. Der vollständige +% Funktionsaufruf lautet: +% \newline\begingroup\scriptsize +% \cs{@HyperIndex}\marg{Index}\marg{Haupteintrag}\ignorespaces% +% \marg{Vorsatz}\marg{Eintrag}\marg{Anhang}\marg{Formatierung} +% \endgroup +% \begin{macrocode} +\NewDocumentCommand\@HyperIndex{mmmmmm}{% + \IfValueTF{#3}{\def\@tempa{#3}}{\def\@tempa{}}% + \IfValueTF{#5}{\def\@tempb{#5}}{\def\@tempb{}}% + \IfValueTF{#6}{\edef\@tempc{|#6}}{\def\@tempc{}}% +% \end{macrocode} +% Auch hier wird unterschieden, ob es sich um einen Parameter (keys) handelt. +% Wurde für einen Parameter eine Umgebung oder ein Befehl bereits definiert, +% werden zwei Indexeinträge generiert. Einer beim Befehl selber als +% Untereintrag für den jeweiligen Parameter und einer im Index für Parameter +% selbst mit der dazugehörigen Umgebung bzw. dem dazugehörigen Befehl. Beide +% erhalten einen entsprechenden Hyperlink zur Deklaration. +% \begin{macrocode} + \IfValueTF{#2}{% + \ifcsdef{r@#1:#2:#4}{% + \edef\@tempb{#1:#2:#4}% + \index[#1]{% + #2!\hyperidx[\@tempb]{\begingroup\expandonce\@tempa#4\endgroup}% + ~{\idxfont(Parameter)}\expandonce\@tempc% + }% + \begingroup% + \let\Environment\@firstofone% + \def\Macro##1{\bsc##1}% + \index[keys]{% + \hyperidx[\@tempb]{% + \begingroup\expandonce\@tempa#4\endgroup~{\idxfont(\texttt{#2})}% + }% + \expandonce\@tempc% + }% + \endgroup% + }{% + \index[#1]{% + #2!\begingroup\expandonce\@tempa#4\endgroup% + ~{\idxfont(Parameter)}\expandonce\@tempc% + }% + \index[keys]{% + \begingroup\expandonce\@tempa#4\endgroup~{\idxfont(\texttt{#2})}% + \expandonce\@tempc% + }% + }% +% \end{macrocode} +% Falls es sich nicht um einen Parameter handelt, wird lediglich der Eintrag im +% speziellen Index vorgenommen und ggf. ein Hyperlink erzeugt. +% \begin{macrocode} + }{% + \ifcsdef{r@#1:#4}{% + \index[#1]{% + \hyperidx[#1:#4]{% + \begingroup\expandonce\@tempa#4\endgroup\expandonce\@tempb% + }% + \expandonce\@tempc% + }% + }{% + \index[#1]{% + \begingroup\expandonce\@tempa#4\endgroup% + \expandonce\@tempb\expandonce\@tempc% + }% + }% + }% +} +% \end{macrocode} +% \end{macro}^^A \@HyperIndex +% +% \subsubsection{Deklarationen} +% +% Die Umgebungen \env{Declaration} und \env{Declaration*} werden beide für die +% Auszeichnung von Optionen, Umgebungen und Befehlen verwendet, die \TUDScript +% dem Anwender zur Verfügung stellt. +% +% \begin{environment}{Declaration} +% \begin{macro}{\printdeclarationlist} +% \begin{macro}{\@declarationlist} +% \begin{macro}{\@presetlist} +% \begin{macro}{\if@presetlist} +% \begin{macro}{\@additionallist} +% \begin{macro}{\if@additionallist} +% \begin{macro}{\@gobbleparameters} +% \changes{v2.02}{2014/10/09}{neu}%^^A +% Es werden einige Hilfsmakros für die Ausgabe einer Deklaration sowie der +% dazugehörigen Änderungsliste initialisiert. +% \begin{macrocode} +\newcommand*\@declarationlist{} +\let\@declarationlist\relax +\newcommand*\@presetlist{} +\let\@presetlist\relax +\newif\if@presetlist +\newcommand*\@additionallist{} +\let\@additionallist\relax +\newif\if@additionallist +\newcommand*\@gobbleparameters{% + \let\PName\@gobble% + \let\PBoolean\relax% + \let\PBName\@gobble% + \let\PSet\relax% + \let\PValue\@gobble% + \let\Parameter\@gobble% + \let\OParameter\@gobble% + \let\LParameter\relax% + \let\OLParameter\@gobble% + \let\PParameter\@gobble% + \let\POParameter\@gobble% +} +% \end{macrocode} +% Die \env{Declaration}-Umgebung dient zur Deklaration von Optionen, Umgebungen, +% Befehlen, Parametern, Bezeichnern, Längen, Schriftelementen und Farben. Diese +% werden mit den entsprechenden Auszeichnungsbefehlen als obligatorisches +% Argument übergeben. Zuvor kann noch vorher im ersten optionalen Argument eine +% Beschreibung für die Änderungsliste in der Form \oarg{Verison!Beschreibung} +% angegeben werden. Danach kann im dritten Argument~-- das zweite optionale~-- +% die Voreinstellung für eine Option oder dergleichen angegeben werden. Das +% nächste optionale Argument erlaubt die Angabe einer bedingten Voreinstellung, +% also einer anderen Voreinstellung als der zuerst angegeben unter bestimmten +% Voraussetzungen. Diese wird in der Form \oarg{Bedingung:Voreinstellung} +% angegeben. Das letzte Argument ist ebenfalls optional, wird aber in der Form +% \marg{Zusatz} angegeben und enthält ggf. zusätzliche Informationen. +% +% Die Umgebung selbst gibt zu Beginn nichts weiter aus sondern sammelt +% lediglich alle übergebenen Argumente in jeweiligen Listen. Die eigentliche +% Ausgabe erfolgt mit dem Befehl \cs{printdeclarationlist}. +% \begin{macrocode} +\NewDocumentEnvironment{Declaration}{omoog}{% + \listadd\@declarationlist{#2}% +% \end{macrocode} +% Die optional angegebenen Änderungen werden später mit \cs{ChangedAt@Process} +% verarbeitet und für die Änderungsliste sowie die Randnotiz mit +% \cs{@changedatdeclare} in der Liste \cs{@changedatdeclarelist} gesichert. +% \begin{macrocode} + \@changedatdeclare{#1}{#2}% +% \end{macrocode} +% Hier noch die Listen für Voreinstellungen\dots +% \begin{macrocode} + \IfValueTF{#3}{% + \@presetlisttrue% + \IfValueTF{#4}{% + \def\@tempa[##1:##2]{##1:\,##2}% + \listeadd\@presetlist{preset:\,#3\,|\,\expandonce{\@tempa[#4]}}% + }{% + \listadd\@presetlist{preset:\,#3}% + }% + }{% + \listadd\@presetlist{\relax}% + }% +% \end{macrocode} +% \dots sowie zusätliche Informationen. +% \begin{macrocode} + \IfValueTF{#5}{% + \@additionallisttrue% + \listadd\@additionallist{\hspace*{\tabcolsep}\small(#5)}% + \in@{\Environment}{#2}% + \ifin@ \listadd\@additionallist{\tabularnewline}\fi% + }{% + \listadd\@additionallist{\relax}% + }% +}{% +% \end{macrocode} +% Am Ende der Umgebung wird das übergebenen Hauptargument erneut ausgeführt, +% was zum Beenden der Indexeinträge für die jeweilige Deklaration führt +% (\cs{@openindexfalse}, siehe \cs{@ProcessOutput}). Dafür werden die Makros für +% die Angabe obligatorischer und optionaler Parameter lokal umdefiniert. +% \begin{macrocode} + \ifx\@declarationlist\relax\else% + \ClassError{\tudcls@name}{\string\printdeclarationlist\space is missing}{% + \string\@declarationlist\space is not empty. Did you forget\MessageBreak% + to print this list with \string\printdeclarationlist?% + }% + \fi% + \@gobbleparameters% + \vskip-\lastskip% + \@declaretrue\@openindexfalse#2\@declarefalse% + \pagebreak[0]% +} +% \end{macrocode} +% Mit dem Befehl \cs{printdeclarationlist} erfolgt die eingentliche Ausgabe +% aller Deklarationen. Zweck ist es, mehrere \env{Declaration}-Umgebungen +% ineinander verschachteln zu können und eine Ausgabe aller auf einmal zu +% erzeugen. Die durch die ggf. nacheinander folgenden Deklarationen wurden in +% entsprechenden Listen gesammelt und werden hier jetzt formatiert ausgegben. +% \begin{macrocode} +\NewDocumentCommand\printdeclarationlist{sod()}{% + \ifx\@declarationlist\relax\else% + \ifvmode\else\par\fi% + \addpenalty{\@beginparpenalty}% + \addvspace{1.5\baselineskipglue}% +% \end{macrocode} +% Die Sternversion erzeugt die Ausgabe ohne Deklarationsindexbefehle. Das +% optionale Argument kann genutzt werden, um das standardmäßige Atrribut für +% die Änderungsliste, welches in \cs{@changedatdeclaredefault} hinterlegt ist, +% zu ändern. Dies ist für die normale Version auf \emph{neu} und für die +% Sternversion auf \emph{entfällt} voreingestellt. +% \begin{macrocode} + \IfBooleanTF{#1}{% + \global\@noindextrue% + \renewcommand*\@changedatdeclaredefault{\emph{entf\"allt}}% + }{% + \global\@noindexfalse% + }% + \IfValueT{#2}{\renewcommand*\@changedatdeclaredefault{\emph{#2}}}% + \@declaretrue\@openindextrue% + \@afterindentfalse\@afterheading% +% \end{macrocode} +% Die deklarierten Optionen, Umgebungen, Befehle etc. werden umrahmt. Dabe +% erfolgt die Ausgabe mithilfe einer Box, um die Größe des Deklarationsrahmens +% zu speichern und die Änderungsmarkierung am Seitenrand auf die richtige Höhe +% zu platzieren. Da innerhalb von Tabellen der Wert von \cs{baselineskip} auf +% \makeatletter\the\z@\makeatother~gesetzt wird, muss für einen richtig +% platzierten Link dieser in \cs{HyperRaiseLinkDefault} gesichert werden. +% \begin{macrocode} + \def\@tempa##1{\ignorespaces##1\tabularnewline}% + \edef\HyperRaiseLinkDefault{\the\baselineskip}% + \setbox0\hbox{% + \begin{tabular}{|l|}% + \hline% + \forlistloop\@tempa{\@declarationlist}% + \hline% + \end{tabular}% + }\usebox0% + \@declarefalse% +% \end{macrocode} +% Danach werden ggf. die Voreinstellungen und Zusatzinformationen gesetzt. +% \begin{macrocode} + \ifboolexpr{bool {@presetlist} or bool {@additionallist}}{% + \if@presetlist% + \qquad% + \texttt{% + \begin{tabular}{l}% + \forlistloop\@tempa{\@presetlist}% + \end{tabular}% + }% + \fi% + \if@additionallist% + \begin{tabular}{@{}l@{}}% + \forlistloop\@tempa{\@additionallist}% + \end{tabular}% + \fi% + }{}% +% \end{macrocode} +% Alle für die Deklaration verwendeten Listen werden nach ihrer Abarbeitung +% zurückgesetzt. +% \begin{macrocode} + \global\let\@declarationlist\relax% + \global\let\@presetlist\relax% + \global\@presetlistfalse% + \global\let\@additionallist\relax% + \global\@additionallistfalse% +% \end{macrocode} +% Die Einträge in der Änderungsliste sowie die dazugehörige Randnotiz werden +% innerhalb der Deklaration mit \cs{printchangedatlist} erzeugt. Das optionale +% Argument sorgt für die Verschiebung der Randnotiz auf die richtige Höhe, um +% den Höhenversatz zwischen Randnotiz und Deklarationsrahmen auszugleichen. +% \begin{macrocode} + \printchangedatlist*[% + \dimexpr.5\ht\strutbox+.5\dp\strutbox-.5\ht0-.5\dp0\relax% + ]% +% \end{macrocode} +% Zum Schluss wird das optionale Argument (in runden Klammern) neben der +% Deklarationsbox ausgegeben. +% \begin{macrocode} + \IfValueT{#3}{#3}% + \par\nobreak% + \vskip 1.5\baselineskipglue% + \@afterindentfalse\@afterheading% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \@gobbleparameters +% \end{macro}^^A \if@additionallist +% \end{macro}^^A \@additionallist +% \end{macro}^^A \if@presetlist +% \end{macro}^^A \@presetlist +% \end{macro}^^A \@declarationlist +% \end{macro}^^A \printdeclarationlist +% \end{environment}^^A Declaration +% \begin{environment}{Declaration*} +% \changes{v2.02}{2014/10/09}{neu}%^^A +% Die Sternversion der Umgebung \env{Declaration*} ist für die vereinfachte +% Deklaration von Klassen, Paketen etc. gedacht, bei denen keine Ausgabe +% sondern lediglich Hyperlink, Indexeintrag und Änderungsnotiz erzeugt werden +% sollen. Dabei sollte diese direkt nach einer Gliederungsüberschrift genutzt +% werden, in welcher das zu deklarierende ELement (Klasse, Paket etc.) genannt +% wird. +% \begin{macrocode} +\NewDocumentEnvironment{Declaration*}{om}{% + \@changedatdeclare{#1}{#2}% + \@stareddeclaretrue% + \global\@noindexfalse% + \@declaretrue\@openindextrue#2\@declarefalse% + \@stareddeclarefalse% +}{% + \ifx\@changedatdeclarelist\relax\else% + \ClassError{\tudcls@name}{\string\printchangedatlist\space is missing}{% + \string\@changedatdeclarelist\space is not empty. Did you\MessageBreak% + forget to print this list with \string\printchangedatlist?% + }% + \fi% + \@gobbleparameters% + \@declaretrue\@openindexfalse#2\@declarefalse% +} +% \end{macrocode} +% \end{environment}^^A Declaration* +% \begin{environment}{tabularm} +% \begin{macro}{\allcolumnpar} +% \begin{macro}{\@allcolumnpar} +% \begin{macro}{\tabularm@box} +% \begin{macro}{\tabularm@num} +% \begin{length}{\tabularm@wd} +% Die Umgebung \env{tabularm} ist eine Erweiterung der \env{tabularm}-Umgebung. +% In dieser wird die Breite der zu setzenden Tabelle mit Hilfe der Box +% \cs{tabularm@box} in \cs{tabularm@wd} gespeichert. Anschließend kann mit dem +% Befehl \cs{allcolumnpar} eine Zeile über alle Spalten der Tabelle +% ausgegeben werden. Dabei ist das zu übergebende Argument die Anzahl der zu +% erzeugenden, linksbündigen Spalten. +% \begin{macrocode} +\newsavebox\tabularm@box +\newlength\tabularm@wd +\newcommand*\tabularm@num{1} +\NewEnviron{tabularm}[1]{% + \begin{lrbox}{\tabularm@box}% + \let\allcolumnpar\@gobble% + \begin{tabular}{*{#1}l}\BODY\end{tabular}% + \end{lrbox}% + \setlength{\tabularm@wd}{\wd\tabularm@box}% + \def\tabularm@num{#1}% + \let\allcolumnpar\@allcolumnpar% + \begin{tabular}{*{#1}l}\BODY\end{tabular}% +} +\newcommand*\@allcolumnpar[1]{% + \multicolumn{\tabularm@num}{@{}p{\tabularm@wd}@{}}{#1}% +} +% \end{macrocode} +% \end{length}^^A \tabularm@wd +% \end{macro}^^A \tabularm@box +% \end{macro}^^A \tabularm@num +% \end{macro}^^A \@allcolumnpar +% \end{macro}^^A \allcolumnpar +% \end{environment}^^A tabularm +% \begin{environment}{values} +% \begin{macro}{\before@values} +% \begin{macro}{\item@values} +% \begin{macro}{\itemtrue} +% \begin{macro}{\itemfalse} +% \begin{macro}{\tud@item@val} +% \begin{macro}{\tud@item@add} +% \begin{macro}{\tud@item@format} +% \begin{macro}{\tud@item} +% \begin{macro}{\tud@@item} +% \begin{macro}{\tud@@@item} +% Die Liste \env{values} dient zum Benennen der möglichen Werte für einen +% bestimmten Schlüssel. Im Handbuch kommt diese Liste vorallem bei Optionen +% aber auch bei bestimmten Befehls- und Optionsparametern zum Einsatz. +% \begin{macrocode} +\newlist{values}{description}{1} +\setlist[values]{% + topsep=.5\baselineskipglue,labelwidth=\columnwidth,labelsep=0pt,% + font=\normalfont\ttfamily,before*=\before@values% +} +% \end{macrocode} +% Zu Beginn der Umgebung wird die Definition des \cs{item}-Befehls gesichert +% und anschließend geändert. +% \begin{macrocode} +\newcommand*\before@values{% + \let\item@values\item% + \let\item\tud@item% +} +% \end{macrocode} +% Die folgenden beiden Befehle enthalten die Standardwerte für boolsche +% Schalter. +% \begin{macrocode} +\newcommand*\itemfalse{\def\tud@item@val{false/off/no}\item} +\newcommand*\itemtrue{\def\tud@item@val{true/on/yes}\item} +% \end{macrocode} +% Mit der neuen Definition kann der Säumniswert mit \cs{item*} explizit in der +% Liste hervorgehoben werden. +% \begin{macrocode} +\newcommand*\item@values{} +\newcommand*\tud@item@val{} +\newcommand*\tud@item@add{} +\newcommand*\tud@item@format{} +\newcommand*\tud@item{% + \@ifstar{% + \def\tud@item@add{(S\"aumniswert)}% + \let\tud@item@format\emph% + \tud@@item% + }{% + \let\tud@item@add\relax% + \let\tud@item@format\relax% + \tud@@item% + }% +} +% \end{macrocode} +% In der zweiten Instanz wird das optionale Argument von \cs{item} ausgewertet. +% Dabei wird das Hilfsmakro \cs{tud@item@val} beachtet, welches evtl. mit den +% Befehlen \cs{itemtrue} oder \cs{itemfalse} gesetzt wurde und vor dem +% optionalen Argument aufgeführt wird. +% \begin{macrocode} +\newcommand*\tud@@item[1][]{% + \ifstrempty{#1}% + {\edef\@tempa{\tud@item@val}}% + {\ifstr{\tud@item@val}{}% + {\edef\@tempa{#1}}% + {\edef\@tempa{\tud@item@val/#1}}% + }% + \def\tud@item@val{}% +% \end{macrocode} +% Wurde weder \cs{tud@item@val} gesetzt noch ein Wert im optionalen Argument +% von \cs{item} angegeben, so wird der gesicherte Befehl ausgeführt. Ansonsten +% folgt die dritte Instanz. +% \begin{macrocode} + \ifstr{\@tempa}{}{\item@values}{\tud@@@item}% +} +% \end{macrocode} +% Der gesicherte Befehl wird mit den aufbereiteten Formatierungen genutzt. +% \begin{macrocode} +\newcommand*\tud@@@item[1][]{% + \ifstrempty{#1}{}{% + \ifx\tud@item@add\relax% + \def\tud@item@add{#1}% + \else% + \apptocmd{\tud@item@add}{~#1}{}{}% + \fi% + }% + \item@values[% + \tud@item@format{\@tempa:}% + \ifx\tud@item@add\relax\else% + {\normalfont\space\footnotesize\tud@item@add}% + \fi% + ]% +} +% \end{macrocode} +% \end{macro}^^A \tud@@@item +% \end{macro}^^A \tud@@item +% \end{macro}^^A \tud@item +% \end{macro}^^A \tud@item@format +% \end{macro}^^A \tud@item@add +% \end{macro}^^A \tud@item@val +% \end{macro}^^A \itemfalse +% \end{macro}^^A \itemtrue +% \end{macro}^^A \item@values +% \end{macro}^^A \before@values +% \end{environment}^^A values +% +% \subsubsection{Erläuterungen und weiterführende Ergänzungen im Handbuch} +% +% Es folgen einige Umgebungen, mit welchen bestimmte Aspekte oder Pakete im +% Handbuch erläutert werden. +% +% \begin{environment}{Example} +% \begin{environment}{Example*} +% Diese Umgebung wird für die exemplarische Erläuterung von bestimmten Aspekten +% im Handbuch verwendet. Wenn dafür ein Quelltextauszug nötig ist, kann +% innerhalb dieser die \env{Code}-Umgebung genutzt werden. Die Sternversion +% unterdrückt dabei das Zurücksetzen des eigentlich entfernten vertikalen +% Abstandes. +% \begin{macrocode} +\newenvironment{Example}{\@nameuse{Example*}}{% + \@nameuse{endExample*}% + \addvspace{-\topsep}% +} +\newenvironment{Example*}{% + \labeling{{\usekomafont{disposition}Beispiel:\ }}% + \item[{\usekomafont{disposition}Beispiel:\ }]% +}{% + \endlabeling% +} +% \end{macrocode} +% \end{environment}^^A Example* +% \end{environment}^^A Example +% \begin{environment}{Code} +% \begin{macro}{\tud@currentHref} +% Folgend werden Befehle und Umgebungen für die Darstellung von Quelltexten im +% Handbuch definiert. Mit dieser Umgebung können kurze Quelltextbeispiele im +% Handbuch ausgegeben werden. Sicherlich sinnvoll ist, die \env{Code}-Umgebung +% innerhalb von \env{Example} oder \env{quoting} zu verwenden, um den +% Quelltext etwas abzuheben. +% \begin{macrocode} +\lstnewenvironment{Code}[1][]{\lstset{style=tudscr,#1}}{} +% \end{macrocode} +% Innerhalb der Umgebung \env{Code} wird \cs{@currentHref} unerwünschter Weise +% geändert. Um dies zu vermeiden, wird dieser Befehl gesichert und anschließend +% zurückgesetzt. +% \begin{macrocode} +\newcommand*\tud@currentHref{} +\BeforeBeginEnvironment{Code}{\global\let\tud@currentHref\@currentHref} +\AfterEndEnvironment{Code}{\global\let\@currentHref\tud@currentHref} +% \end{macrocode} +% \end{macro}^^A \tud@currentHref +% \end{environment}^^A Code +% \begin{environment}{packages} +% \begin{macro}{\itempackages} +% \begin{macro}{\tud@item@pkg} +% \changes{v2.02}{2014/10/08}{\cs{DeclarePackage} entfernt}%^^A +% \changes{v2.02}{2014/10/09}{optionales Argument für CTAN-Link}%^^A +% \begin{macro}{\before@packages} +% Ähnlich wie für die Auflistung von Werten eines Schlüssels wird auch mit der +% Charakterisierung von Paketen verfahren. Diese werden in der Auflistung +% speziell gekennzeichnet und mit \cs{DeclarePackage} im Index eingetragen. +% \begin{macrocode} +\newlist{packages}{description}{2} +\setlist[packages]{% + topsep=\medskipamount,labelwidth=\linewidth,labelsep=0pt,font=\normalfont,% + parsep=\parskip,listparindent=\parindent,before=\before@packages% +} +\newcommand*\itempackages{} +\newcommand*\before@packages{% + \ifdefvoid{\itempackages}{% + \let\itempackages\item% + \let\item\tud@item@pkg% + }{}% +} +\NewDocumentCommand\tud@item@pkg{od()}{% + \itempackages[{% + \IfValueT{#1}{% + \manualhyperdef{files:#1}% + \IfValueTF{#2}{% + \def\@tempa{http://www.ctan.org/pkg/#2}% + }{% + \def\@tempa{http://www.ctan.org/pkg/#1}% + }% + \href{\@tempa}{\Package{#1}'none'|!|}% + }% + }]% +} +% \end{macrocode} +% \end{macro}^^A \before@packages +% \end{macro}^^A \tud@item@pkg +% \end{macro}^^A \itempackages +% \end{environment}^^A packages +% +% \subsubsection{Änderungsliste} +% +% Um dem Anwender einen schnellen Überblick zu Änderungen der aktuellen Verison +% bereitstellen zu können, werden Befehle zur automatisierten Erzeugung einer +% solchen Liste definiert. +% +% \begin{macro}{\printchangedatlist} +% \changes{v2.02}{2014/10/09}{neu}%^^A +% \begin{macro}{\@changedatdeclare} +% \changes{v2.02}{2014/10/09}{neu}%^^A +% \begin{macro}{\@changedatdeclaredefault} +% \changes{v2.02}{2014/10/09}{neu}%^^A +% \begin{macro}{\@changedatdeclarelist} +% \changes{v2.02}{2014/07/25}{neu}%^^A +% Um für Änderungsnotizen die dazugehörige Option, Befehl etc. bei einer +% Deklaration kenntlich zu machen, wird das deklarierte Element zusammen mit +% der Notiz in einer Liste gespeichert. Da mehrere kommaseparierte Werte +% angegeben werden können, muss das optionale Argument der Umgebung +% \env{Declaration} dahingehend abgearbeitet werden. Wenn keine weitere +% Erklärung angegeben wurde, wird der entspredchende Eintrag mit dem Attribut +% versehen, welches in \cs{@changedatdeclaredefault} gespeichert ist. +% \begin{macrocode} +\newcommand*\@changedatdeclarelist{} +\let\@changedatdeclarelist\relax +\newcommand*\@changedatdeclaredefault{\emph{neu}} +\newcommand*\@changedatdeclare[2]{% + \IfValueT{#1}{% + \@for\@tempa:=#1\do{% + \protected@expandtwoargs\in@{!}{\@tempa}% + \ifin@% + \expandafter\listadd\expandafter\@changedatdeclarelist% + \expandafter{\@tempa!#2}% + \else% + \expandafter\listadd\expandafter\@changedatdeclarelist% + \expandafter{\@tempa!\@changedatdeclaredefault!#2}% + \fi% + }% + }% +} +% \end{macrocode} +% Die Einträge in der Änderungsliste sowie die dazugehörige Randnotiz werden +% mit dem Makro \cs{ChangedAt@Process} abgearbeitet, sortiert und erstellt. Bei +% \cs{printchangedatlist} wird mit dem optionalen Argument der Versatz für die +% Randnotiz gesetzt. Dieser wird wie auch die Liste an \cs{ChangedAt@Process} +% übergeben, womit diese und die Randnotiz letztendlich erzeugt werden. +% \begin{macrocode} +\NewDocumentCommand\printchangedatlist{sO{\z@}}{% + \ifx\@changedatdeclarelist\relax\else% + \ChangedAt@Process{#2}{\@changedatdeclarelist}% + \global\let\@changedatdeclarelist\relax% + \IfBooleanF{#1}{% + \par\nobreak\vskip\dimexpr-\parskip-\baselineskip% + \@afterindentfalse\@afterheading% + }% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \@changedatdeclarelist +% \end{macro}^^A \@changedatdeclaredefault +% \end{macro}^^A \@changedatdeclare +% \end{macro}^^A \printchangedatlist +% \begin{macro}{\ChangedAt} +% \changes{v2.02}{2014/07/25}{erweitert}%^^A +% \changes{v2.02}{2014/10/15}{Sternversion neu (keine Randnotiz)}%^^A +% An den Befehl \cs{ChangedAt} kann eine kommagetrente Liste mit verschiedenen +% Versionsnummern und dazugehörigen Änderungen übergeben werden. Er wird in der +% Form: \cs{ChangedAt}\marg{Version!Definition,Version!Erweiterung} genutzt. +% Der Prozess selbst wird mit \cs{ChangedAt@Process} durchgeführt. Es wird +% zu der angegebenen Versionsnummer ein Eintrag in die Änderungsliste erstellt, +% wenn mit einem Ausrufezeichen getrennt der gewünschte Inhalt gegeben wurde. +% +% Alle übergegebenen Versionsnummern werden als Liste mit einmaligen Einträgen +% in einer Randnotiz gesetzt. Mit dem optionalen Argument kann ein vertikaler +% dieser angegeben werden. Die Sternversion von \cs{ChangedAt} unterdrückt die +% Ausgabe dieser Randnotiz. +% \begin{macrocode} +\NewDocumentCommand\ChangedAt{sO{\z@}m}{\ChangedAt@Process[#1]{#2}{#3}} +% \end{macrocode} +% \end{macro}^^A \ChangedAt +% \begin{macro}{\ChangedAt@Process} +% \changes{v2.02}{2014/09/02}{neu}%^^A +% \begin{macro}{\ChangedAt@@Process} +% \changes{v2.02}{2014/09/02}{neu}%^^A +% \begin{macro}{\ChangedAt@@@Process} +% \changes{v2.02}{2014/09/02}{neu}%^^A +% \changes{v2.02}{2014/10/16}{Unterteilung Änderungsliste in Bereiche}%^^A +% \begin{macro}{\ChangedAt@Default} +% \changes{v2.02}{2014/09/02}{neu}%^^A +% \begin{macro}{\ChangedAt@Split} +% \changes{v2.02}{2014/09/02}{neu}%^^A +% \begin{macro}{\@changedatlist} +% \changes{v2.02}{2014/09/02}{neu}%^^A +% \begin{macro}{\@changedatversionlist} +% \changes{v2.02}{2014/09/02}{neu}%^^A +% Mit diesen Befehlen wird die Änderungshistorie in Form eines Index erstellt. +% Der Befehl \cs{ChangedAt@Process} setzt eine kommagetrennte Liste in eine +% im Format von \pkg{etoolbox} um. Anschließend wird diese für die Liste der +% Änderungen mit \cs{ChangedAt@Split} aufgespalten. Die einzelnen Einträge +% werden mit \cs{ChangedAt@@Process} weiter verarbeitet. +% \begin{macrocode} +\newcommand*\@changedatlist{} +\newcommand*\ChangedAt@Default{} +\newcommand*\@changedatversionlist{} +\let\@changedatversionlist\relax +\newcommand*\ChangedAt@Process[3][]{% + \let\@changedatlist\relax% + \let\@changedatversionlist\relax% + \@for\@tempa:=#3\do{\listeadd{\@changedatlist}{\expandonce\@tempa}}% + \forlistloop\ChangedAt@Split{\@changedatlist}% +% \end{macrocode} +% Nach der Verarbeitung aller Einräge sind in \cs{@changedatlist} alle +% angegebenen Versionsnummern genau einmal enthalten. Mit \cs{sortlist} werden +% diese in die richtige Reihenfolge sortiert und anschließend als Randnotiz in +% einer Tabelle ausgegeben, falls nicht die Sternversion verwendet wurde. +% \begin{macrocode} + \IfBooleanF{#1}{% + \sortlist{\@changedatversionlist}% + \strut% + \marginnote{% + \def\@tempa####1{% + \ignorespaces\manualhyperref{####1}{####1}\tabularnewline% + }% + \begin{tabular}{|l|}% + \hline% + \forlistloop\@tempa{\@changedatversionlist}% + \hline% + \end{tabular}% + }[#2]% + \ignorespaces% + }% +} +% \end{macrocode} +% Der Befehl \cs{ChangedAt@Split} teilt ein gegebenes Argument am Delimiter +% Ausrufezeichen (\enquote{!}) in drei Argumente auf und reicht diese an +% \cs{ChangedAt@@Process} weiter. Sollte kein oder nur Ausrufezeichen gefunden +% werden, so wird das zweite und/oder dritte Argument mit dem~-- vom Paket +% \pkg{xparse} definierten~-- leeren Wert \texttt{-NoValue-} an den Befehl +% \cs{ChangedAt@@Process} übergeben. +% \begin{macrocode} +\NewDocumentCommand\ChangedAt@Split{>{\SplitArgument{2}{!}}m}{% + \ChangedAt@@Process#1% +} +% \end{macrocode} +% Hiermit wird der Eintrag in die Änderungshistorie erzeugt. Dabei ist zu +% unterscheiden, ob der Befehl \cs{ChangedAt} direkt genutzt wurde oder aber +% der Eintrag innerhalb der \env{Declaration}-Umgebung erfolgte. Dies wird +% anhand von des dritten Argumentes erkannt. Für den ersten Fall erfolgt ein +% Eintrag lediglich, wenn neben der Versionsnummer selbst auch eine Erklärung +% angegben wurde~-- eine Randnotiz wird aber in jedem Fall gesetzt. Im zweiten +% Fall wird der Erklärung \emph{immer} \cs{ChangedAt@Default} vorangestellt. +% Sollte keine Erklärung direkt angegeben worden sein, so wird in der +% Änderungsliste vermerkt, dass es sich um eine \emph{neue} Option, Befehl etc. +% handelt. Der eigentliche Eintrag selbst erfolgt mit \cs{ChangedAt@@@Process}. +% \begin{macrocode} +\newcommand*\ChangedAt@@Process[3]{% + \IfValueTF{#3}{% +% \end{macrocode} +% Bei der Deklaration von Optionen, Befehlen etc. werden diese automatisch in +% der Liste der Änderungen im Bereich \enquote{Implementierung} vor der +% gegebenen Erklärung selbst ausgegeben. Hierfür wird das dritte Argument +% genutzt. Damit lediglich diese und nicht noch die dazugehörigen Argumente +% eingetragen werden, werden die relevanten Befehle deaktiviert und das +% optionale Argument in \cs{ChangedAt@Default} expandiert. +% \begin{macrocode} + \begingroup% + \@gobbleparameters% + \xdef\ChangedAt@Default{#3}% + \endgroup% + \ChangedAt@@@Process{#1}{Implementierung}{\ChangedAt@Default: #2}% + }{% +% \end{macrocode} +% Wurde \cs{ChangedAt} direkt und nicht über das optionale Argument der +% Umgebungen \env{Declaration} genutzt, erscheint der gewünschte Eintrag im +% Bereich \enquote{Allgemein}. +% \begin{macrocode} + \IfValueT{#2}{\ChangedAt@@@Process{#1}{Allgemein}{#2}}% + }% +% \end{macrocode} +% Außerdem wird der Liste \cs{changedatversionlist} die aktuelle Version +% einmalig hinzugefügt, um alle in einer Randnotiz ausgeben zu können. +% \begin{macrocode} + \xifinlist{#1}{\@changedatversionlist}{}{\listeadd\@changedatversionlist{#1}}% +} +% \end{macrocode} +% Mit \cs{ChangedAt@@@Process} Erfolgen die Einträge in die Änderungsliste. +% \begin{macrocode} +\newcommand*\ChangedAt@@@Process[3]{% + \begingroup% +% \end{macrocode} +% Für geänderte Parameter wird als Haupteintrag das dazugehörige Makro bzw. die +% entsprechende Umgebung verwendet. Der geänderte Parameter folgt danach. +% Zuerst muss ggf. das Makro \cs{ChangedAt@Default} expandiert werden. +% \begin{macrocode} + \def\@tempa{#3}% + \in@{\ChangedAt@Default}{#3}% + \ifin@% + \expandafter\def\expandafter\@tempa\expandafter{\ChangedAt@Default}% + \fi% +% \end{macrocode} +% Danach wird geprüft, ob das Makro \cs{Key} übergeben wurde. Außerdem wird ein +% Anker in der Änderungsliste für die Referenzierung auf die einzelnen Bereiche +% (\enquote{Allgemein}, \enquote{Implementierung} und \enquote{Umbenennungen}) +% gesetzt. +% \begin{macrocode} + \expandafter\in@\expandafter\Key\expandafter{\@tempa}% + \ifin@% + \begingroup% + \RenewDocumentCommand\Key{sommo}{\xdef\@TempKey{##3:}}% + \setbox0\hbox{#3}% + \endgroup% + \index[changelog]{% + #1 \manualhyperdef*{#1}!\manualhyperdef*{#1:#2}{#2}!\@TempKey\ #3% + }% + \else% + \index[changelog]{% + #1 \manualhyperdef*{#1}!\manualhyperdef*{#1:#2}{#2}!#3% + }% + \fi% + \endgroup% +} +% \end{macrocode} +% \end{macro}^^A \@changedatversionlist +% \end{macro}^^A \@changedatlist +% \end{macro}^^A \ChangedAt@Split +% \end{macro}^^A \ChangedAt@Default +% \end{macro}^^A \ChangedAt@@@Process +% \end{macro}^^A \ChangedAt@@Process +% \end{macro}^^A \ChangedAt@Process +% \begin{macro}{\Rename} +% \changes{v2.02}{2014/07/25}{neu}%^^A +% Der Befehl \cs{Rename} erzeugt einen Eintrag in der Änderungshistorie sowie +% einen Eintrag im gewünschten Index mit einem Verweis auf den neuen Befehl. +% \begin{macrocode} +\newcommand*\Rename[4][]{% + \ChangedAt@@@Process{#2}{Umbenennungen}{% + #3: \emph{umbenannt}~\textrightarrow~siehe #4% + }% + \ChangedAt@@@Process{#2}{Implementierung}{% + #4: \emph{neu}~\textrightarrow~ersetzt #3% + }% + \listeadd\@changedatdeclarelist{#2}% + \index[#1]{#3|see{#4}}% +} +% \end{macrocode} +% \end{macro}^^A \Rename +% \begin{macro}{\@ProcessChangedAt} +% \changes{v2.02}{2014/07/25}{erweitert}%^^A +% \changes{v2.02}{2014/10/08}{Sternversion ergänzt}%^^A +% Die Änderungsliste erhält ebenfalls einen Hyperlink zur Deklaration. Für +% Umgebungs- und Befehlsparameter wird mit dem zweiten optionalen Argument ein +% Untereintrag für die dazugehörige Umgebung beziehungsweise den dazugehörigen +% Befehl erzeugt. +% \begin{macrocode} +\NewDocumentCommand\@ProcessChangedAt{mmd()mmm}{% + \begingroup% + \let\texttt\@firstofone% + \let\textsbn\@firstofone% + \let\textsbs\@firstofone% + \let\Environment\@firstofone% + \let\Macro\@firstofone% + \IfValueTF{#3}{\xdef\@tempa{#2:#3:#5}}{\xdef\@tempa{#2:#5}}% + \endgroup% + \IfBooleanTF{#1}{% + \def\@tempb{\begingroup#4#5\endgroup}% + }{% + \def\@tempb{\begingroup#4#5\endgroup~{\idxfont(#6)}}% + }% + \ifcsdef{r@\@tempa}{\hyperidx[\@tempa]{\@tempb}}{\@tempb}% +} +% \end{macrocode} +% \end{macro}^^A \@ProcessChangedAt +% \begin{macro}{\sortlist} +% \changes{v2.02}{2014/07/25}{neu}%^^A +% \begin{macro}{\@sortlist} +% \changes{v2.02}{2014/07/25}{neu}%^^A +% \begin{macro}{\@sortedlist} +% \changes{v2.02}{2014/07/25}{neu}%^^A +% \begin{macro}{\if@listsorted} +% \changes{v2.02}{2014/07/25}{neu}%^^A +% Der Befehl \cs{sortlist} erwartet eine \pkg{etoolbox}-Liste und sortiert diese +% mit \cs{@sortlist} in alphabetischer Reihenfolge in eine kommagetrennte +% Auflistung. Diese wird anschließend wieder in eine \pkg{etoolbox}-Liste +% umgewandelt. +% \begin{macrocode} +\newif\if@listsorted +\newcommand*\@sortedlist{} +\newcommand*\sortlist[1]{% + \let\@sortedlist\relax% + \forlistloop\@sortlist{#1}% + \let#1\relax% + \@for\@tempa:=\@sortedlist\do{\listeadd{#1}{\@tempa}}% +} +% \end{macrocode} +% Hier erfolgt die eigentliche Sortierung der Liste. +% \begin{macrocode} +\newcommand*\@sortlist[1]{% +% \end{macrocode} +% Der erste Eintrag wird direkt der Liste hinzugefügt. +% \begin{macrocode} + \ifx\@sortedlist\relax% + \def\@sortedlist{#1}% +% \end{macrocode} +% Weitere Einräge werden mit \cs{pdfstrcmp} an der richtigen Stelle eingefügt. +% Dabei wird die kommagetrennte Liste \cs{@sortedlist} mit \cs{@for} durchlaufen +% und \cs{@tempb} als Hilfsmakro verwendet, in welches die aktuelle Liste +% innerhalb der \cs{@for}-Schelife stückweise expandiert wird. Der Schalter +% \cs{if@listsorted} wird gesetzt, wenn das aktuelle Element an der richtigen +% Stelle eingesetzt wurde. +% \begin{macrocode} + \else% + \@listsortedfalse% + \let\@tempb\@empty% + \@for\@tempa:=\@sortedlist\do{% +% \end{macrocode} +% Ist der Eintrag bereits erfolgt, wird der verbliebene Teil der Liste +% angehängt. +% \begin{macrocode} + \if@listsorted% + \expandafter\edef\expandafter\@tempb\expandafter{\@tempb,\@tempa}% + \else% +% \end{macrocode} +% Liegt der Eintrag in alphabetischer Reihenfolge vor dem aktuellen der +% durchlaufenenen Liste, so wird dieser davor eingefügt. Dabei muss der Fall, +% dass das Element der erste Eintrag in der temporären Liste \cs{@tempb} ist, +% eine Sonderbehandlung erfolgen. Anschließend wird \cs{@listsortedtrue} +% gesetzt. +% \begin{macrocode} + \expandafter\ifnum\pdfstrcmp{#1}{\@tempa}<0\relax% + \ifx\@tempb\@empty% + \expandafter\edef\expandafter\@tempb\expandafter{% + #1,\@tempa% + }% + \else% + \expandafter\edef\expandafter\@tempb\expandafter{% + \@tempb,#1,\@tempa% + }% + \fi% + \@listsortedtrue% + \else% +% \end{macrocode} +% Ist Eintrag in alphabetischer Reihenfolge nach dem aktuellen der geprüften +% Liste, so wird dieser (noch) nicht eingefügt. Der Sonderfall des ersten +% Elementes wird abgedeckt. +% \begin{macrocode} + \ifx\@tempb\@empty% + \expandafter\edef\expandafter\@tempb\expandafter{\@tempa}% + \else% + \expandafter\edef\expandafter\@tempb\expandafter{\@tempb,\@tempa}% + \fi% + \fi% + \fi% + }% +% \end{macrocode} +% Wurde der Eintrag nach dem Durchlaufen der Liste nicht eingefügt, so erfolgt +% dies hier am Ende der Liste. +% \begin{macrocode} + \if@listsorted\else% + \expandafter\edef\expandafter\@tempb\expandafter{\@tempb,#1}% + \fi% +% \end{macrocode} +% Die temporäre Liste \cs{@tempb} wird auf \cs{@sortedlist} überschrieben. +% \begin{macrocode} + \let\@sortedlist\@tempb% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \if@listsorted +% \end{macro}^^A \@sortedlist +% \end{macro}^^A \@sortlist +% \end{macro}^^A \sortlist +% +% \iffalse +%</class> +%<*package> +% \fi +% +% \subsection{Befehle und Umgebungen für das Paket} +% +% Hier taucht alles auf, was lediglich für das Paket \pkg{tudscrman} und nicht +% für die Klasse benötigt wird. +% +% Für den Anwender werden im \TUDScript-Bundle einige Tutorials für die Nutzung +% von \LaTeXe bereitgestellt. Innerhalb dieser werden Auszüge von Quelltexten +% verwendet und erläutert. Zum einen soll die Möglichkeit geschaffen werden, +% diese gesammelt am Ende eines Tutorials für ein Copy"~\&"~Paste"~Beispiel zu +% verwenden. Andererseits soll auch das sofortige Ausführen des beschriebenen +% Quelltextauszuges direkt im Tutorial möglich sein. Dafür werden im Folgenden +% die Umgebungen \env{Preamble}, \env{Trunk} und \env{Hint} sowie daraus +% abgeleitet Varianten definiert, womit sich die Angabe und Erläuterung der +% Quelltexte im Tutorial logisch strukturieren lässt und dennoch die notwendige +% Ordnung dieser für das Copy"~\&"~Paste"~Beispiel aufrechterhalen werden kann. +% Hierfür zeichnen die beiden Umgebungen \env{Preamble} und \env{Trunk} und +% deren Derivate verantwortlich. Die Umgebung \env{Hint} steht für zusätzliche +% Erläuterungen bereit, welche jedoch nicht in das Copy"~\&"~Paste"~Beispiel +% übernommen werden. +% +% Damit die Umgebungen nicht doppelt implementiert werden müssen, werden die +% Hilfsmakros \cs{tud@tut@pre} und \cs{tud@tut@post} definiert. Diese nutzen +% die \env{filecontents}"=Umgebung, welche den Inhalt in die temporäre Datei +% \val{\string\jobname-temp.tex} schreibt. Zusätzlich wird dieser Inhalt mit +% \cs{tud@tut@append} der Datei \val{\string\jobname-preamble-temp.tex} oder +% \val{\string\jobname-trunk-temp.tex}~-- abhängig vom gegebenen Argument~-- +% hinzugefügt. So werden die im Dokumentes gesetzten Quelltextauszüge für ein +% Copy"~\&"~Paste"~Beispiel gesammelt und mit \cs{FinishTutorial} ausgegeben. +% \begin{environment}{Preamble} +% \changes{v2.02}{2014/11/02}{neu}%^^A +% \begin{environment}{Preamble*} +% \changes{v2.02}{2014/11/03}{neu}%^^A +% \begin{environment}{Preamble+} +% \changes{v2.02}{2014/11/03}{neu}%^^A +% Die Umgebung \env{Preamble} dient für die Ausgabe von Quelltexten, welche in +% einem \LaTeXe-Dokument in der Präambel verwendet werden müssen oder sollten. +% Die in ihr gesetzten Inhalte werden für das Copy"~\&"~Paste-Beispiel vor den +% Inhalten aus der Umgebung \env{Trunk} ausgegeben. Die Sternversion führt +% den Inhalt zusätzlich im Dokument aus. Die Pluszechen"=Version fügt dem +% Ausgabestream ihren Inhalt hinzu, ohne das dieser ausgegeben oder ausgeführt +% wird. +% \begin{macrocode} +\newenvironment{Preamble}{\tud@tut@pre}{% + \tud@tut@post% + \tud@tut@append{\tud@write@i}% + \gdef\@tempa{% + \tud@tut@lst% + \global\let\@CodePreamble\relax% + }% + \aftergroup\@tempa% +} +\newenvironment{Preamble*}{\tud@tut@pre}{% + \tud@tut@post% + \tud@tut@append{\tud@write@i}% + \gdef\@tempa{% + \tud@tut@lst% + \tud@tut@input% + \global\let\@CodePreamble\relax% + }% + \aftergroup\@tempa% +} +\newenvironment{Preamble+}{\tud@tut@pre}{% + \tud@tut@post% + \tud@tut@append{\tud@write@i}% + \gdef\@tempa{% + \global\let\@CodePreamble\relax% + }% + \aftergroup\@tempa% +} +% \end{macrocode} +% \end{environment}^^A Preamble+ +% \end{environment}^^A Preamble* +% \end{environment}^^A Preamble +% \begin{environment}{Trunk} +% \changes{v2.02}{2014/08/16}{neu}%^^A +% \begin{environment}{Trunk*} +% \changes{v2.02}{2014/08/19}{neu}%^^A +% \begin{environment}{Trunk+} +% \changes{v2.02}{2014/11/03}{neu}%^^A +% \begin{environment}{Trunk!} +% \changes{v2.02}{2014/10/07}{neu}%^^A +% Die Umgebung \env{Trunk} dient zur Ausgabe von exemplarischen Quelltexten, +% welche in einem \LaTeXe-Dokument innerhalb der \env{document}-Umgebung +% verwendet werden müssen oder sollten. Für das Copy"~\&"~Paste-Beispiel werden +% die gegebenen Inhalte nach den Inhalten aus der Umgebung \env{Preamble} +% ausgegeben. Die Sternversion der Umgebung führt ihren Inhalt zusätzlich im +% Dokument aus. Die Pluszeichen"=Version fügt dem Ausgabestream ihren Inhalt +% hinzu, ohne diesen auszugeben oder auszuführen. Die Ausrufezeichen"=Version +% fügt den Quelltext im Dokument ein und führt diesen zusätzlich in einer +% separaten Datei mit einem minimalen Dokumentkörper aus, um daraus eine +% PDF-Datei zu erzeugen, welche im Nachhinein mit \cs{IncludeStandalone} als +% Grafik eingebunden werden kann. Dies ist für Quelltextabschnitte gedacht, +% deren Ausgabe zu groß ist, um diese direkt anzuzeigen und dennoch dargestellt +% werden sollen. +% \begin{macrocode} +\newenvironment{Trunk}{\tud@tut@pre}{% + \tud@tut@post% + \tud@tut@append{\tud@write@ii}% + \gdef\@tempa{% + \tud@tut@lst% + \global\let\@CodePreamble\relax% + }% + \aftergroup\@tempa% +} +\newenvironment{Trunk*}{\tud@tut@pre}{% + \tud@tut@post% + \tud@tut@append{\tud@write@ii}% + \gdef\@tempa{% + \tud@tut@lst% + \tud@tut@input% + \global\let\@CodePreamble\relax% + }% + \aftergroup\@tempa% +} +\newenvironment{Trunk+}{\tud@tut@pre}{% + \tud@tut@post% + \tud@tut@append{\tud@write@ii}% + \gdef\@tempa{% + \global\let\@CodePreamble\relax% + }% + \aftergroup\@tempa% +} +\newenvironment{Trunk!}[1]{% + \gdef\@StandaloneFile{#1}% + \tud@tut@pre% +}{% + \tud@tut@post% + \tud@tut@append{\tud@write@ii}% + \gdef\@tempa{% + \tud@tut@lst% + \tud@tut@pdf% + \global\let\@CodePreamble\relax% + }% + \aftergroup\@tempa% +} +% \end{macrocode} +% \end{environment}^^A Trunk! +% \end{environment}^^A Trunk+ +% \end{environment}^^A Trunk* +% \end{environment}^^A Trunk +% \begin{environment}{Hint} +% \changes{v2.02}{2014/09/16}{neu}%^^A +% \begin{environment}{Hint*} +% \changes{v2.02}{2014/10/13}{neu}%^^A +% \begin{environment}{Hint?} +% \changes{v2.02}{2014/12/09}{neu}%^^A +% \begin{environment}{Hint!} +% \changes{v2.02}{2014/11/13}{neu}%^^A +% Um Quelltextausschnitte zur weiterführenden Information anzugeben, wird die +% Umgebung \env{Hint} definiert. Der Inhalt wird ausgegben und~-- falls die +% Sternversion genutzt wurde~-- auch ausgeführt, allerdings nicht in das +% Copy"~\&"~Paste"~Beispiel übernommen. Ansonsten entsprechen alle Umgebungen +% in ihren Eigenschaften den äquivalenten \env{Trunk}-Umgebungen. Die Version +% mit Fragezeichen ist für Quelltextauszüge gedacht, die ungeprüft \emph{vor} +% dessen Ausgabe ausgeführt werden sollen. +% \begin{macrocode} +\newenvironment{Hint}{\tud@tut@pre}{% + \tud@tut@post% + \gdef\@tempa{% + \tud@tut@lst% + \global\let\@CodePreamble\relax% + }% + \aftergroup\@tempa% +} +\newenvironment{Hint*}{\tud@tut@pre}{% + \tud@tut@post% + \gdef\@tempa{% + \tud@tut@lst% + \tud@tut@input% + \global\let\@CodePreamble\relax% + }% + \aftergroup\@tempa% +} +\newenvironment{Hint?}{\tud@tut@pre}{% + \tud@tut@post% + \gdef\@tempa{% + \InputCode% + \tud@tut@lst% + \global\let\@CodePreamble\relax% + }% + \aftergroup\@tempa% +} +\newenvironment{Hint!}[1]{% + \gdef\@StandaloneFile{#1}% + \tud@tut@pre% +}{% + \tud@tut@post% + \gdef\@tempa{% + \tud@tut@lst% + \tud@tut@pdf% + \global\let\@CodePreamble\relax% + }% + \aftergroup\@tempa% +} +% \end{macrocode} +% \end{environment}^^A Hint! +% \end{environment}^^A Hint? +% \end{environment}^^A Hint* +% \end{environment}^^A Hint +% \begin{macro}{\@StandaloneFile} +% \changes{v2.02}{2014/08/19}{neu}%^^A +% Die Umgebungen \env{Trunk!} und \env{Hint!} erzeugen nach der Ausgabe des +% Quelltextes mit dem Makro \cs{tud@tut@pdf} eine PDF-Datei, welche mit +% \cs{IncludeStandalone} in das Tutorial eingebunden werden kann. +% \begin{macrocode} +\newcommand*\@StandaloneFile{} +\let\@StandaloneFile\relax +% \end{macrocode} +% \end{macro}^^A \@StandaloneFile +% \begin{macro}{\tud@tut@pre} +% \changes{v2.02}{2014/08/19}{neu}%^^A +% \begin{macro}{\tud@tut@post} +% \changes{v2.02}{2014/08/19}{neu}%^^A +% Dies sind die Hilfsmakros, welche zu Beginn und Ende der Quelltextumgebungen +% \env{Preamble}, \env{Trunk} und \env{Hint} für das Sichern der Inhalte in +% eine Hilfsdatei verantwortlich zeichnen. +% \begin{macrocode} +\newcommand*\tud@tut@pre{% + \ActivateWarningFilters[Tutorial]% + \@nameuse{filecontents*}{\jobname-temp.tex}% +} +\newcommand*\tud@tut@post{% + \@nameuse{endfilecontents*}% + \DeactivateWarningFilters[Tutorial]% +} +% \end{macrocode} +% \end{macro}^^A \tud@tut@post +% \end{macro}^^A \tud@tut@pre +% \begin{macro}{\tud@tut@lst} +% \changes{v2.02}{2014/10/07}{neu}%^^A +% Damit wird der Quelltext eingezogen ausgegeben. +% \begin{macrocode} +\newcommand*\tud@tut@lst{% + \begin{quoting}[rightmargin=0pt]% + \lstinputlisting[style=tudscr]{\jobname-temp.tex}% + \end{quoting}% +} +% \end{macrocode} +% \end{macro}^^A \tud@tut@lst +% \begin{macro}{\tud@tut@input} +% \changes{v2.02}{2014/10/13}{neu}%^^A +% \begin{macro}{\CodePreamble} +% \changes{v2.02}{2014/08/20}{neu}%^^A +% \begin{macro}{\@CodePreamble} +% \changes{v2.02}{2014/10/22}{neu}%^^A +% \begin{macro}{\CodeHook} +% \changes{v2.02}{2014/10/11}{neu}%^^A +% \begin{macro}{\@CodeHook} +% \changes{v2.02}{2014/10/11}{neu}%^^A +% Bereitstellung von Hilfsmakros für die formatierte Ausgabe von Quelltexten. +% \begin{macrocode} +\newcommand\@CodePreamble{} +\let\@CodePreamble\relax +\newcommand\CodePreamble[1]{\long\gdef\@CodePreamble{#1}} +\newcommand*\@CodeHook{} +\let\@CodeHook\relax +\newcommand*\CodeHook[1]{\gdef\@CodeHook{#1}}% +% \end{macrocode} +% Für die Ausgabe des Quelltextergebnisses erfolgt ein linker Einzug. Außerdem +% werden unter anderem abhängig von der Verwendung eines erklärenden Textes die +% eingefügten vertikalen Abstände angepasst. +% \begin{macrocode} +\newcommand*\tud@tut@input{% +% \end{macrocode} +% Nach dem Ausführen des ersten Argumentes von \cs{@tempa} wird geprüft, ob +% dieses überhaupt eine sichtbare Ausgabe erzeugt hat. Nur für diesen Fall wird +% nach dieser vertikaler Leerraum eingefügt. Der Anfang entspricht prinzipiell +% dem Standardbefehl \cs{settoheight}, jedoch wird im Inneren zusätzlich eine +% \cs{vbox} verwendet, um damit auch mathematische Umgebungen testen zu können. +% Das Ganze findet innerhalb einer Gruppierung statt, um keine Änderungen zu +% erzeugen. +% \begin{macrocode} + \def\@tempa##1##2{% + ##1% + \begingroup% + ##2% + \setbox\@tempboxa\hbox{\vbox{##1}}% + \@tempdima=\ht\@tempboxa% + \setbox\@tempboxa\box\voidb@x% + \ifdim\@tempdima>\z@\relax% + \endgraf% + \vspace{\baselineskipglue}% + \noindent\ignorespaces% + \fi% + \endgroup% + }% +% \end{macrocode} +% Da aufgrund der Verwendung der \env{filecontents}"=Umgebung ein optionales +% Argument für alle Abwandlungen der Quelltextumgebungen nicht möglich ist, +% wird \cs{CodePreamble} bereitgestellt, womit der Ausgabe ein erläuternder +% Text vorangestellt werden kann. +% \begin{macrocode} + \@tempa{\@CodePreamble}{}% + \setlength{\@tempdimc}{\leftskip}% + \setlength{\leftskip}{\leftmargin}% +% \end{macrocode} +% Durch die zweimalige Verwendung von \val{\string\jobname-temp.tex}~-- einmal +% dirket und einmal innerhalb einer Box~-- können darin verwendete Befehle wie +% \cs{newcommand} zu Fehler führen. Mit dem Makro \cs{CodeHook} lassen sich +% diese Konflikte durch eine lokale Redefinition ebensoclher Befehle auflösen +% (bspw. \cs{let}\cs{newcommand}\cs{renewcommand}). +% \begin{macrocode} + \ActivateWarningFilters[Tutorial]% + \@tempa{\input{\jobname-temp.tex}}{\@CodeHook}% + \DeactivateWarningFilters[Tutorial]% + \global\let\@CodeHook\relax% + \setlength{\leftskip}{\@tempdimc}% + \noindent\ignorespaces% +} +% \end{macrocode} +% \end{macro}^^A \@CodeHook +% \end{macro}^^A \CodeHook +% \end{macro}^^A \@CodePreamble +% \end{macro}^^A \CodePreamble +% \end{macro}^^A \tud@tut@input +% \begin{macro}{\InputCode} +% \changes{v2.02}{2014/10/21}{neu}%^^A +% Mit \cs{InputCode} kann der Inhalt der letzen \env{Trunk}"=Umgebung +% direkt ausgeführt werden, ohne diesen zuvor mit \cs{tud@tut@input} zu prüfen +% und zu formatieren. +% \begin{macrocode} +\newcommand*\InputCode{\input{\jobname-temp.tex}} +% \end{macrocode} +% \end{macro}^^A \InputCode +% \begin{macro}{\tud@tut@pdf} +% \changes{v2.02}{2014/10/22}{neu}%^^A +% Die Umgebung \env{Trunk!} verwendet nach der Ausgabe des Quelltextes diesen +% abermals, um daraus eine PDF-Datei zu erzeugen. Dafür wird mithilfe einer +% \env{filecontents}"=Umgebung eine temporäre \LaTeX-Datei erzeugt. Diese +% bindet die mit \env{Trunk!} erzeugte Datei ein und wird anschließende via +% \cs{write18} kompiliert. Dabei sollte man sich nicht von der doppelten +% Verwendung von \cs{jobname} verwirren lassen. Der Dateiname der temporär +% erzeugten \LaTeX-Datei ist abhängig vom gesetzten Tutorial. Beim Aufruf +% dieser wird über die Optionen von pdf\LaTeX{} der verwendete \cs{jobname} +% angepasst (siehe \cs{tud@tut@pdf}). +% \begin{macrocode} +\ifnum\pdfshellescape=1\relax% +\ActivateWarningFilters[Tutorial]% +\begin{filecontents*}{tutorial-temp.tex} +\RequirePackage[ngerman=ngerman-x-latest]{hyphsubst} +\documentclass[english,ngerman]{tudscrreprt} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{babel} +\usepackage{tudscrsupervisor} +\usepackage{isodate} +\usepackage{enumitem} +\setlist{noitemsep} +\begin{document} +\input{\jobname.tex} +\end{document} +\end{filecontents*} +\DeactivateWarningFilters[Tutorial]% +\fi +% \end{macrocode} +% Der Quelltext aus der \env{Trunk!}"=Umgebung wird~-- wie bei allen anderen +% Derivaten der Umgebungen \env{Trunk}~-- in \val{\string\jobname-temp.tex} +% gesichert. Beim Aufruf von pdf\LaTeX{} wird durch die Verwendung der Option +% \opt{-jobname=\string\jobname-temp} die eigentliche Definition des Makros +% \cs{jobname} in der aufgerufenen Datei \val{tutorial-temp.tex} überschrieben +% und der Inhalt von \val{\string\jobname-temp.tex} wie gewünscht eingebunden +% und kompiliert. Damit die so erstellte PDF-Datei mit \cs{IncludeStandalone} +% im weiteren Verlauf in das Tutorial eingebunden werden kann, wird diese noch +% in \cs{\meta{Argument}-temp.pdf} umbenannt. +% \begin{macrocode} +\newcommand*\tud@tut@pdf{% + \ifnum\pdfshellescape=1\relax% + \immediate\write18{% + pdflatex -jobname=\jobname-temp tutorial-temp.tex + pdflatex -jobname=\jobname-temp tutorial-temp.tex + pdflatex -jobname=\jobname-temp tutorial-temp.tex + }% + \ifwindows% + \immediate\write18{rename \jobname-temp.pdf \@StandaloneFile-temp.pdf}% + \else% + \immediate\write18{mv \jobname-temp.pdf \@StandaloneFile-temp.pdf}% + \fi% + \fi% + \global\let\@StandaloneFile\relax% +} +% \end{macrocode} +% \end{macro}^^A \tud@tut@pdf +% \begin{macro}{\IncludeStandalone} +% \changes{v2.02}{2014/09/10}{neu}%^^A +% Der Befehl \cs{IncludeStandalone} bindet die durch \env{Trunk!} generierten +% PDF-Dateien ein. Das angehängte optionale Argument dient zur Angabe der +% einzubindenden Seiten der PDF-Datei, wobei diese automatisch auf die passende +% Breite skaliert werden. +% \begin{macrocode} +\NewDocumentCommand\IncludeStandalone{omO{1}}{% + \IfFileExists{#2-temp.pdf}{% + \@tempcnta\z@% + \@for\@tempa:=#3\do{\advance\@tempcnta\@ne}% + \ifnum\@tempcnta>\z@% + \setlength{\@tempdima}{\textwidth}% + \divide\@tempdima\@tempcnta% + \advance\@tempcnta\m@ne% + \multiply\@tempcnta 2% + \addtolength{\@tempdima}{-\@tempcnta\tabcolsep}% + \@for\@tempa:=#3\do{% + \advance\@tempcnta\m@ne% + \edef\@tempb{% + keepaspectratio,page=\@tempa,width=\the\@tempdima,% + \IfValueT{#1}{#1}% + } + \fbox{\expandafter\includegraphics\expandafter[\@tempb]{#2-temp.pdf}}% + \ifnum\@tempcnta>\z@\hfill\fi% + }% + \fi% + }{% + \tud@shellescape@wrn% + }% +} +% \end{macrocode} +% \end{macro}^^A \IncludeStandalone +% \begin{macro}{\StartTutorial} +% \changes{v2.02}{2014/08/21}{neu}%^^A +% \begin{macro}{\FinishTutorial} +% \changes{v2.02}{2014/08/21}{neu}%^^A +% Mit \cs{StartTutorial} wird ein Hyperlink für den Querverweis aus dem +% Handbuch definiert. Außerdem wird gleich der Titel und ein einleitender Satz +% gesetzt. +% \begin{macrocode} +\newcommand\StartTutorial[1][% + Bevor das eigentliche Tutorial beginnt, werden sowohl eine Dokumentklasse + als auch die f\"ur jedes \hologo{pdfLaTeX}-Dokument meiner Meinung nach + sinnvollen Pakete geladen. +]{% + \Hy@raisedlink{\hyperdef{\jobname}{tutorials:\jobname}{}}% + \faculty{}% + \setlength\headingsvskip{-15mm}% + \maketitle\noindent#1% + \immediate\openout\tud@write@i=\jobname-preamble-temp.tex\relax + \immediate\openout\tud@write@ii=\jobname-trunk-temp.tex\relax + \immediate\write\tud@write@ii{^^J\string\begin{document}^^J} +} +% \end{macrocode} +% Der Befehl \cs{FinishTutorial} schleißt den noch offenen Ausgabestream und +% gibt den vorgestellten Quelltext vollständig aus. +% \begin{macrocode} +\newcommand\FinishTutorial[1][]{% + \immediate\write\tud@write@ii{^^J\string\end{document}^^J} + \immediate\closeout\tud@write@ii% + \immediate\closeout\tud@write@i% + \tud@tut@collect% + \clearpage% + \addsec{Copy~\&~Paste}% + \pagestyle{empty}% + Zum Ende des Dokumentes wird das vorgestellte Tutorial als \"ubersetzbarer + Quelltext ausgegeben, um dieses via Copy~\&~Paste verwenden und alle Punkte + nachvollziehen zu k\"onnen. Bitte beachten Sie, dass~-- abh\"angig vom + genutzten PDF-Betrachter~-- beim Kopieren die dargestellten Einz\"uge und + Abs\"atze m\"oglicherweise verloren gehen k\"onnen. Dies kann insbesondere + aufgrund fehlender Leerzeilen zu einem unvorteilhaften Ausgabeergebnis + f\"uhren. Alternativ finden Sie den folgenden \hologo{LaTeX}-Quelltext auch + im Pfad \Path{texmf/source/latex/tudscr/doc/examples/} als Datei + \File{\jobname-example.tex}. \par #1 + \begin{quoting}[rightmargin=0pt]% + \lstinputlisting[style=tudscr]{\jobname-example-temp.tex}% + \end{quoting}% +} +% \end{macrocode} +% \end{macro}^^A \FinishTutorial +% \end{macro}^^A \StartTutorial +% \begin{macro}{\tud@tut@readtostream} +% \changes{v2.02}{2014/12/16}{neu}%^^A +% \begin{macro}{\tud@tut@line} +% \changes{v2.02}{2014/08/19}{neu}%^^A +% \begin{macro}{\tud@tut@append} +% \changes{v2.02}{2014/08/19}{neu}%^^A +% \begin{macro}{\tud@tut@collect} +% \changes{v2.02}{2014/12/16}{neu}%^^A +% Bei den Tutorials soll zum Schluss ein komplett kompilierbares Beispiel für +% Copy~\&~Paste gegeben werden. Um dieses zusammenzubauen, werden alle im +% Dokument innerhalb der Varianten der \env{Trunk}"=Umgebungen gegebenen +% Codefragmente zusammengesetzt. Um die Quelltexte einlesen und verarbeiten zu +% können, werden zwei Eingabe- sowie ein Ausgabestream benötigt, welche bereits +% zuvor initilaisiert wurden. +% +% Mit \cs{tud@tut@readtostream} wird der Inhalt der Datei im ersten Argument +% in den Ausgabestream des zweiten Argumentes geschrieben. Dies wird durch die +% Makros \cs{tud@tut@append} und \cs{tud@tut@collect} genutzt. +% \begin{macrocode} +\newcommand*\tud@tut@line{} +\newcommand*\tud@tut@readtostream[2]{% + \begingroup% + \endlinechar=-1\relax% + \openin\tud@read=#1% +% \end{macrocode} +% Der Schalter \cs{if@tempswa} wird verwendet, um unnötige Leerzeilen in der +% Ausgabedatei zu entfernen. Wurde eine nicht leere Zeile gefunden, wird diese +% auf jeden Fall geschrieben, indem \cs{@tempswatrue} gesetzt wird. Eine leere +% Zeile wird~-- bis auf den Sonderfall, dass es sich um die letzte Zeile in der +% Datei handelt~-- zunächst nicht weiter beachtet. Im Zweifelsfall wird diese +% (erste) Leerzeile geschrieben. +% \begin{macrocode} + \@tempswafalse% + \loop\unless\ifeof\tud@read% + \readline\tud@read to\tud@tut@line% + \ifx\tud@tut@line\@empty% + \ifeof\tud@read\@tempswafalse\fi% + \else% + \@tempswatrue% + \fi% +% \end{macrocode} +% Hier erfolgt das eigentliche Schreiben im selektierten Stream. +% \begin{macrocode} + \if@tempswa% + \immediate\write#2{\unexpanded\expandafter{\tud@tut@line}}% + \fi% +% \end{macrocode} +% Im Nachgang wird überprüft, ob die aktuell geschriebene Zeile leer war. Ist +% dies der Fall, so wird \cs{@tempswafalse} gesetzt, um eine etwaig folgende +% Leerzeile nicht in die Ausgabedatei zu schrieben. +% \begin{macrocode} + \ifx\tud@tut@line\@empty\@tempswafalse\fi% + \repeat% + \closein\tud@read% + \endgroup% +} +% \end{macrocode} +% Der innerhalb der Umgebungen \env{Preamble} und \env{Trunk}~-- sowie deren +% Derivaten~-- angegeben Inhalt wird beim Beenden dieser in die Hilfsdatei +% \cs{jobname-temp.tex} zwischengespeichert. Mit dem Befehl \cs{tud@tut@append} +% wird der Inhalt dieser Datei ausgelesen und den zusätzlichen Hilfsdateien +% \cs{jobname-preamble-temp.tex} beziehungsweise \cs{jobname-trunk-temp.tex} +% angehangen und damit gesichert, um Quelltextauszüge aus dem Tutorial für die +% Präambel sowie den Dokumentteil trennen beziehungsweise sortieren zu können. +% \begin{macrocode} +\newcommand*\tud@tut@append[1]{\tud@tut@readtostream{\jobname-temp.tex}{#1}} +% \end{macrocode} +% Das Makro \cs{tud@tut@collect} fügt alle Quelltexte des Tutorials, welche +% nach Präambel und Dokumentteil sortiert wurden, in einer Datei zusammen. +% Diese wird zum einen am Ende des Tutorials mit \cs{FinishTutorial} ausgeben, +% zum anderen wird diese als Beispiel in den Ordner für Beispiele beim Erzeugen +% eines Release kopiert. +% \begin{macrocode} +\newcommand*\tud@tut@collect{% + \immediate\openout\tud@write@ii\jobname-example-temp.tex\relax% + \tud@tut@readtostream{\jobname-preamble-temp.tex}{\tud@write@ii}% + \tud@tut@readtostream{\jobname-trunk-temp.tex}{\tud@write@ii}% + \immediate\closeout\tud@write@ii +} +% \end{macrocode} +% \end{macro}^^A \tud@tut@collect +% \end{macro}^^A \tud@tut@append +% \end{macro}^^A \tud@tut@line +% \end{macro}^^A \tud@tut@readtostream +% +% \iffalse +%</package> +% \fi +% +% \subsection{Ausgabe von Index und Änderungsliste} +% +% Ein Index kann sowhol mit dem Paket als auch mit der Klasse erzeugt werden, +% die Änderungsliste ist der Klasse vorbehalten. +% \begin{macro}{\idxfont} +% Für zusätzliche Informationen im Index nach dem eigentlichen Eintrag wird +% eine etwas kleinere Schrift verwendet. +% \begin{macrocode} +\newcommand*\idxfont{} +\let\idxfont\footnotesize +\robustify{\idxfont} +% \end{macrocode} +% \end{macro}^^A \idxfont +% \begin{macro}{\PrintIndex} +% \begin{macro}{\PrintIndexPrologue} +% \changes{v2.02}{2014/08/20}{neu}%^^A +% \begin{macro}{\@printindexprologue} +% \changes{v2.02}{2014/08/20}{neu}%^^A +% \begin{macro}{\@printindexskip} +% \changes{v2.02}{2014/09/02}{neu}%^^A +% \begin{macro}{\Index} +% \begin{macro}{\seeidx} +% \begin{macro}{\@printindex} +% \changes{v2.02}{2014/07/25}{neu}%^^A +% Der Befehl \cs{PrintIndex} ist die Zusammenfassung für die Ausgabe aller +% Indexe. +% \begin{macrocode} +\newcommand*\PrintIndex{% + \begingroup% +%<*class> + \@printindex% +%</class> + \@printindex[options]% + \@printindex[macros]% +%<*class> + \@printindex[keys]% + \@printindex[terms]% + \begingroup% + \let\lettergroup\@gobble% + \let\indexspace\par% + \@printindex[fonts]% + \@printindex[colors]% + \endgroup% +%</class> + \@printindex[files]% + \endgroup% +} +% \end{macrocode} +% Hiermit kann der einleitende Teil für den allgemeinen Index gesetzt werden. +% \begin{macrocode} +%<*class> +\newcommand*\PrintIndexPrologue[1]{\long\gdef\@printindexprologue{#1}} +\newcommand*\@printindexprologue{} +%</class> +% \end{macrocode} +% Durch die Verwendung der \env{multicols}"=Umgebung werden zu große vertikale +% Abstände gesetzt. Dies wird mit diesem Befehl rückgängig gemacht. +% \begin{macrocode} +\newcommand*\@printindexskip{\ifnum\imki@columns>\@ne\vspace{-\multicolsep}\fi} +% \end{macrocode} +% Der Befehl \cs{@printindex} setzt vor jedem Unterindex ein referenzierbares +% Label und gibt diesen danach aus. +% \begin{macrocode} +\newcommand*\@printindex[1][]{% + \pagebreak[3]% + \apptocmd{\prepare@multicols}{\hbadness10000}{}{}% +%<*class> + \ifblank{#1}{% + \ifx\@printindexprologue\@empty% + \indexprologue[\@printindexskip]{\manualhyperdef'{idx:main}}% + \else% + \indexprologue{% + \manualhyperdef'{idx:main}% + \@printindexprologue% + }% + \fi% + \printindex\@printindexskip% + \let\@printindexprologue\@empty% + }{% + \indexprologue[\@printindexskip]{\manualhyperdef'{idx:#1}}% + \printindex[#1]\@printindexskip% + }% +%</class> +%<*package> + \indexprologue[\@printindexskip]{}% + \printindex[#1]\@printindexskip% +%</package> +} +% \end{macrocode} +% Der Befehl \cs{Index} dient zum Eintragen eines Schlagwortes im allgemeinen +% Index und verweist auf den speziellen, zum Schlagwort gehörigen Index. Das +% optionale Argument kann verwendet werden, um ggf. den Eintrag in den +% allgemeinen Index anders zu benennen, als den Verweis. +% \begin{macrocode} +%<*class> +\newcommand*\seeidx[2]{\pageref{idx:#1}} +\NewDocumentCommand\Index{mom}{% + \index{% + #1!\textrightarrow{}\space% + \manualhyperref{idx:#3}{Index der \IfValueTF{#2}{#2}{#1}}|seeidx{#3}% + }% +} +%</class> +% \end{macrocode} +% \end{macro}^^A \@printindex +% \end{macro}^^A \seeidx +% \end{macro}^^A \Index +% \end{macro}^^A \@printindexskip +% \end{macro}^^A \@printindexprologue +% \end{macro}^^A \PrintIndexPrologue +% \end{macro}^^A \PrintIndex +% +% \iffalse +%<*class> +% \fi +% +% \begin{macro}{\PrintChangelog} +% \begin{macro}{\if@changelog} +% \begin{macro}{\Changelog} +% \changes{v2.02}{2014/08/20}{neu}%^^A +% Ähnlich wie für den Index wird auch für die Änderungsliste verfahren. +% \begin{macrocode} +\newif\if@changelog +\newcommand*\PrintChangelog{% + \begingroup% + \let\lettergroup\@gobble% + \@changelogtrue% + \@printindex[changelog]% + \endgroup% +} +\NewDocumentCommand\Changelog{m}{% + \index{% + #1!\textrightarrow{}\space% + \manualhyperref{idx:changelog}{\"Anderungsliste}|seeidx{changelog}% + }% +} +% \end{macrocode} +% \end{macro}^^A \Changelog +% \end{macro}^^A \if@changelog +% \end{macro}^^A \PrintChangelog +% +% \iffalse +%</class> +%</body> +% \fi +% +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr-mathswap.dtx b/Master/texmf-dist/source/latex/tudscr/tudscr-mathswap.dtx new file mode 100644 index 00000000000..15ab5eab35f --- /dev/null +++ b/Master/texmf-dist/source/latex/tudscr/tudscr-mathswap.dtx @@ -0,0 +1,269 @@ +% \CheckSum{149} +% \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-mathswap.dtx +%<*driver> +\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi +\ProvidesFile{tudscr-mathswap.dtx}[% + 2014/10/10 v2.02 TUD-KOMA-Script\space% +%</driver> +%<package>\NeedsTeXFormat{LaTeX2e}[2011/06/27] +%<package>\ProvidesPackage{mathswap}[% +%<*driver|package> +%!TUDVersion +%<package> package + (swap mathematical separators)% +] +%</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-mathswap.dtx} +\begin{document} + \maketitle + \DocInput{\filename} +\end{document} +%</driver> +% \fi +% +% \selectlanguage{ngerman} +% +% \changes{v2.02}{2014/07/10}{Versionsnummer angepasst}%^^A +% \changes{v2.02}{2014/08/18}{Schalter zum Aktivieren und Deaktivieren}%^^A +% +% \section{Aktive Trennzeichen im mathematischen Satz} +% +% Die Verwendung von Dezimal- und Tausendertrennzeichen im mathematischen Satz +% sind regional sehr unterschiedlich. In den meisten englischsprachigen Ländern +% wird der Punkt als Dezimaltrennzeichen und das Komma zur Zifferngruppierung +% verwendet, im restlichen Europa wird dies genau entgegengesetzt praktiziert. +% Dieses Paket soll dazu dienen, beliebige formatierte Zahlen in ihrer Ausgabe +% anzupassen. Dafür werden die Zeichen Punkt (\ .\ ) und Komma (\ ,\ ) als +% aktive Zeichen im Mathematikmodus definiert. +% +% Ähnliche Funktionalitäten werden bereits durch die Pakete \pkg{icomma} und +% \pkg{ziffer} bereitgestellt. Bei \pkg{icomma} muss jedoch beim +% Verfassen des Dokumentes durch den Autor beachtet werden, ob das verwendete +% Komma einem Dezimaltrennzeichen entspricht ($t=1,\!2$) oder aber einem +% normalen Komma im Mathematiksatz ($z=f(x,y)$), wo ein gewisser Abstand nach +% dem Komma durchaus gewünscht ist. Das Paket \pkg{ziffer} liefert dafür die +% gewünschte Funktionalität,% +% \footnote{kein Leerraum nach Komma, wenn direkt danach eine Ziffer folgt} +% ist allerdings etwas unflexibel, was den Umgang mit den Trennzeichen +% anbelangt. Als Alternative zu diesem Paket kann außerdem \pkg{ionumbers} +% verwendet werden. +% +% Das Paket \pkg{mathswap} sorgt dafür, dass Trennzeichen direkt vor einer +% Ziffer erkannt und nach bestimmten Vorgaben ersetzt werden. Sollte sich +% jedoch zwischen Trennzeichen und Ziffer Leerraum befinden, wird dieser als +% solcher auch gesetzt. +% +% \StopEventually{\PrintIndex\PrintChanges} +% +% \iffalse +%<*package> +% \fi +% +% \subsection{Das Paket \pkg{mathswap}} +% +% \begin{macro}{\commaswap} +% \begin{macro}{\dotswap} +% \begin{macro}{\@commaswap} +% \begin{macro}{\@dotswap} +% Die beiden Befehle \cs{commaswap} und \cs{dotswap} sind die zentrale +% Benutzerschnittstelle des Paketes. Das Makro \cs{commaswap} definiert das +% Trennzeichen oder den Inhalt, wodurch ein Komma ersetzt werden soll, auf +% welches direkt danach eine Ziffer folgt. Normalerweise setzt \LaTeX +% nach einem Komma im mathematischen Satz zusätzlich einen horizontalen Abstand. +% Bei der Ersetzung durch \cs{commaswap} entfällt dieser. Die Voreinstellung +% für \cs{commaswap} ist deshalb auf ein Komma (,) gesetzt. +% +% Mit dem Makro \cs{dotswap} kann definiert werden, wodurch der Punkt im +% mathematischen Satz ersetzt werden soll, wenn auf diesen direkt anschließend +% eine Ziffer folgt. Da der Punkt im deutschsprachigem Raum zur Gruppierung von +% Ziffern genutzt wird, ist hierfür standardmäßig ein halbes geschütztes +% Leerzeichen definiert (\cs{,}). +% +% Die mit \cs{commaswap}\marg{Trennzeichen} und \cs{dotswap}\marg{Trennzeichen} +% definierten Trennzeichen werden in \cs{@commaswap} und \cs{@dotswap} +% gesichert. +% \begin{macrocode} +\newcommand*\@commaswap{,} +\newcommand*\commaswap[1]{\gdef\@commaswap{#1}\ignorespaces} +\newcommand*\@dotswap{\,} +\newcommand*\dotswap[1]{\gdef\@dotswap{#1}\ignorespaces} +% \end{macrocode} +% \end{macro}^^A \@dotswap +% \end{macro}^^A \@commaswap +% \end{macro}^^A \dotswap +% \end{macro}^^A \commaswap +% \begin{macro}{\ms@comma} +% \begin{macro}{\ms@commachar} +% \begin{macro}{\ms@dot} +% \begin{macro}{\ms@dotchar} +% In den Befehlen \cs{ms@commachar} und \cs{ms@dotchar} wird die originale +% Definition von Komma und Punkt im Mathematikmodus gesichert, welche weiterhin +% verwendet wird, falls nach diesen nicht direkt eine Ziffer folgt. Mit den +% Makros \cs{ms@comma} und \cs{ms@dot} werden die Definitionen von Komma und +% Punkt als normale Textzeichen für den mathematischen Satz bereitgehalten. +% Anschließend werden beide als aktive Zeichen für den Mathematikmodus gesetzt. +% \begin{macrocode} +\newcommand*\ms@commachar{} +\newcommand*\ms@dotchar{} +\AtBeginDocument{% + \DeclareMathSymbol{\ms@comma}{\mathord}{letters}{"3B}% + \mathchardef\ms@commachar\mathcode\expandafter`,% + \mathcode\expandafter`,="8000% + \DeclareMathSymbol{\ms@dot}{\mathord}{letters}{"3A}% + \mathchardef\ms@dotchar\mathcode\expandafter`.% + \mathcode\expandafter`.="8000% + \mathswapon% +} +% \end{macrocode} +% \end{macro}^^A \ms@dotchar +% \end{macro}^^A \ms@dot +% \end{macro}^^A \ms@commachar +% \end{macro}^^A \ms@comma +% \begin{macro}{\mathswapon} +% \changes{v2.02}{2014/08/18}{neu}%^^A +% \begin{macro}{\mathswapoff} +% \changes{v2.02}{2014/08/18}{neu}%^^A +% \begin{macro}{\ms@commaswap} +% \changes{v2.02}{2014/08/18}{neu}%^^A +% \begin{macro}{\ms@dotswap} +% \changes{v2.02}{2014/08/18}{neu}%^^A +% Mit den Befehlen \cs{mathswapon} und \cs{mathswapoff} kann die Funktionalität +% des Paketes innerhalb des Dokumentes aktiviert und deaktiviert werden. +% \begin{macrocode} +\newcommand*\mathswapon{% + \def\ms@commaswap{\@commaswap}% + \def\ms@dotswap{\@dotswap}% +} +\newcommand*\mathswapoff{% + \def\ms@commaswap{\ms@commachar}% + \def\ms@dotswap{\ms@dotchar}% +} +\newcommand*\ms@commaswap{} +\newcommand*\ms@dotswap{} +% \end{macrocode} +% \end{macro}^^A \ms@dotswap +% \end{macro}^^A \ms@commaswap +% \end{macro}^^A \mathswapoff +% \end{macro}^^A \mathswapon +% \begin{macro}{\ms@token} +% \begin{macro}{\ms@smartcomma} +% \begin{macro}{\ms@smartdot} +% Mit \cs{futurelet} wird dem Makro \cs{ms@token} das nachfolgende Zeichen von +% Komma bzw. Punkt zugewiesen. Anschließend wird mittels \cs{ms@smartcomma} bzw. +% \cs{ms@smartdot} geprüft, ob es sich beim Inhalt von \cs{ms@token} um eine +% Ziffer handelt. Dazu wird der Befehl \cs{ms@ifnum} verwendet. Sollte dies der +% Fall sein, so wird ein Komma innerhalb einer Zahl durch \cs{@commaswap} und +% ein Punkt entsprechend mit \cs{@dotswap} ersetzt. Sollte direkt nach dem +% Trennzeichen keine Ziffer folgen, wird für Punkt und Komma die originale +% Definition aus \cs{ms@commachar} bzw. \cs{ms@dotchar} verwendet. +% \begin{macrocode} +\newcommand*\ms@token{} +\begingroup% + \catcode`,=\active% + \gdef,{\futurelet\ms@token\ms@smartcomma}% + \catcode`.=\active% + \gdef.{\futurelet\ms@token\ms@smartdot}% +\endgroup% +\def\ms@smartcomma{\ms@ifnum{\ms@commaswap}{\ms@commachar}} +\def\ms@smartdot{\ms@ifnum{\ms@dotswap}{\ms@dotchar}} +% \end{macrocode} +% \end{macro}^^A \ms@smartdot +% \end{macro}^^A \ms@smartcomma +% \end{macro}^^A \ms@token +% \begin{macro}{\ms@ifnum} +% \begin{macro}{\ms@@ifnum} +% Der Befehl \cs{ms@ifnum} reicht das erste Argument an \cs{ms@@ifnum} weiter, +% falls der Inhalt von \cs{ms@token} zu einer Ziffer expandiert. Andernfalls +% wird das zweite Argument ausgeführt. +% \begin{macrocode} +\def\ms@ifnum#1#2{% + \ifx\ms@token0\ms@@ifnum{#1}\else% + \ifx\ms@token1\ms@@ifnum{#1}\else% + \ifx\ms@token2\ms@@ifnum{#1}\else% + \ifx\ms@token3\ms@@ifnum{#1}\else% + \ifx\ms@token4\ms@@ifnum{#1}\else% + \ifx\ms@token5\ms@@ifnum{#1}\else% + \ifx\ms@token6\ms@@ifnum{#1}\else% + \ifx\ms@token7\ms@@ifnum{#1}\else% + \ifx\ms@token8\ms@@ifnum{#1}\else% + \ifx\ms@token9\ms@@ifnum{#1}\else% + #2% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +} +% \end{macrocode} +% Wurde eine nachfolgende Ziffer erkannt, so wird die Definition von Punkt und +% Komma auf die eines normalen Textzeichens gesetzt und anschließend die mit +% \cs{commaswap} bzw. \cs{dotswap} angegebene Ersetzung ausgegeben. +% \begin{macrocode} +\def\ms@@ifnum#1{% + \begingroup% + \mathcode\expandafter`,=\the\ms@comma% + \mathcode\expandafter`.=\the\ms@dot% + #1% + \endgroup% +} +% \end{macrocode} +% \end{macro}^^A \ms@@ifnum +% \end{macro}^^A \ms@ifnum +% +% \iffalse +%</package> +% \fi +% +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr-misc.dtx b/Master/texmf-dist/source/latex/tudscr/tudscr-misc.dtx new file mode 100644 index 00000000000..4748344ff2c --- /dev/null +++ b/Master/texmf-dist/source/latex/tudscr/tudscr-misc.dtx @@ -0,0 +1,456 @@ +% \CheckSum{298} +% \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-misc.dtx +%<*driver> +\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi +\ProvidesFile{tudscr-misc.dtx}[% + 2014/12/12 v2.02 TUD-KOMA-Script (miscellaneous)% +] +\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-misc.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 +% \changes{v2.02}{2014/07/08}{Verwendung \cs{FamilyKeyState}}%^^A +% +% \section{Verschiedenes für die Hauptklassen} +% +% Alles, wofür sich eine separate Datei nicht lohnt, landet hier. +% +% \StopEventually{\PrintIndex\PrintChanges} +% +% \iffalse +%<*class&option> +% \fi +% +% \subsection{Fußnoten in Überschriften} +% +% \begin{option}{footnotes} +% \changes{v2.02}{2014/06/27}{neu}%^^A +% \begin{macro}{\if@tud@symbolheadings} +% \changes{v2.02}{2014/06/27}{neu}%^^A +% Die \KOMAScript-Option \opt{footnotes} wird um den Schlüssel +% \val{symbolheadings} erweitert, mit welchem eingestellt werden kann, ob in den +% Überschriften Symbole für die Fußnoten anstelle von Zahlen verwendet werden +% sollen. +% \begin{macrocode} +\newif\if@tud@symbolheadings +\TUD@key{footnotes}{% + \TUD@set@numkey{footnotes}{@tempa}{% + {nosymbolheadings}{0},{numberheadings}{0},% + {symbolheadings}{1}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \ifcase \@tempa\relax% + \@tud@symbolheadingsfalse% + \or% + \@tud@symbolheadingstrue% + \fi% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \if@tud@bookmarks +% \end{option}^^A symbolheadings +% +% \iffalse +%</class&option> +%<*class&body> +% \fi +% +% \begin{counter}{symbolheadings} +% \changes{v2.02}{2014/06/27}{neu}%^^A +% Dieser Zähler wird bei aktivierter Option \opt{footnotes=symbolheadings} für +% die Symboleauswahl von Fußnoten in Überschirften inkrementiert. +% \begin{macrocode} +%<*book|report> +\newcounter{symbolheadings}[chapter] +%</book|report> +%<*article> +\newcounter{symbolheadings} +%</article> +% \end{macrocode} +% \end{counter}^^A symbolheadings +% +% \iffalse +%</class&body> +%<*class&option> +% \fi +% +% \subsection{Sprungmarken} +% +% \begin{option}{tudbookmarks} +% \begin{macro}{\if@tud@bookmarks} +% Wird das Paket \pkg{hyperref} geladen, so kann die Option \opt{tudbookmarks} +% genutzt werden, um zu steuern, ob für Titel und Inhaltsverzeichnis +% automatisch ein Eintrag für die Sprungmarken erzeugt werden soll. +% \begin{macrocode} +\newif\if@tud@bookmarks +\TUD@ifkey{tudbookmarks}{@tud@bookmarks} +% \end{macrocode} +% \end{macro}^^A \if@tud@bookmarks +% \end{option}^^A tudbookmarks +% +% \iffalse +%</class&option> +%<*class&body> +% \fi +% +% \begin{macro}{\tudbookmark} +% \begin{macro}{\tud@footnote@unhyper} +% \begin{macro}{\tud@footnote@rehyper} +% \changes{v2.02}{2014/11/13}{entfernt}%^^A +% Die Befehle zum Eintragen der Sprungmarken. Im Dokument kann auch der Befehl +% \cs{tudbookmark} vom Anwender genutzt werden, um manuell weitere Lesezeichen +% zu erzeugen. +% +% Für die Titelseite werden~-- wie auch durch das Paket \pkg{hyperref}~-- die +% Fußnoten mit dem Befehl \cs{tud@footnote@unhyper} auf den Originalzustand +% zurückgesetzt. +% \begin{macrocode} +\newcommand*\tudbookmark[1][]{\@gobbletwo} +\newcommand*\tud@footnote@unhyper{} +\AfterPackage{hyperref}{% + \renewcommand*\tudbookmark[3][]{% + \relax% + \if@tud@bookmarks% + \phantomsection% + \ifblank{#1}{\pdfbookmark{#2}{#3}}{\pdfbookmark[#1]{#2}{#3}}% + \fi% + }% + \renewcommand*\tud@footnote@unhyper{% + \let\Hy@saved@footnotemark\@footnotemark% + \let\Hy@saved@footnotetext\@footnotetext% + \let\@footnotemark\H@@footnotemark% + \let\@footnotetext\H@@footnotetext% + }% + \pdfstringdefDisableCommands{\let\NoCaseChange\@firstofone}% +} +\pretocmd{\maketitle}{% + \if@tud@bookmarks% + \ifdef{\bookmarksetup}{\bookmarksetup{startatroot}}{}% + \fi% +%<*book|report> + \tudbookmark[0]{\titlepagename}{title}% +%</book|report> +%<*article> + \tudbookmark[1]{\titlepagename}{title}% +%</article> +}{}{\tud@patch@wrn{maketitle}} +\pretocmd{\tableofcontents}{% +%<*book|report> + \if@openright\cleardoublepage\else\clearpage\fi% +%</book|report> + \if@tud@bookmarks% + \ifdef{\bookmarksetup}{\bookmarksetup{startatroot}}{}% + \fi% +%<*book|report> + \tudbookmark[0]{\contentsname}{toc}% +%</book|report> +%<*article> + \tudbookmark[1]{\contentsname}{toc}% +%</article> +}{}{\tud@patch@wrn{tableofcontents}} +% \end{macrocode} +% \end{macro}^^A \tud@footnote@rehyper +% \end{macro}^^A \tud@footnote@unhyper +% \end{macro}^^A \tudbookmark +% +% \subsection{Parameter für Umgebungen und mehrspaltige Texte} +% +% Diese Befehle dienen dazu, bei Umgebungen die Sprache über einen Parameter +% anzugeben sowie das Paket \pkg{multicol} verwenden zu können. +% \begin{macro}{\tud@environmenthandler} +% Hiermit kann sowohl die zu verwendende Sprache als auch die Anzahl der +% gewünschten Spalten für bestimmte Umgebungen ohne die explizite Angabe eines +% Schlüssels festgelegt werden. Momentan betrifft das die beiden Umgebungen +% \env{abstract} und \env{tudpage}. +% \begin{macrocode} +\newcommand*\tud@environmenthandler[1]{% + \def\@tempa{#1}% + \@for\@tempb:=\@tempa\do{% + \ifx\@tempb\@empty\else% + \ifxnumber{\@tempb}{\let\tud@multicols\@tempb}{% + \ifstr{\@tempb}{twocolumn}{\def\tud@multicols{2}}{% + \expandafter\selectlanguage\expandafter{\@tempb}% + }}% + \fi% + }% +} +% \end{macrocode} +% \end{macro}^^A \tud@environmenthandler +% \begin{macro}{\tud@multicols} +% \begin{macro}{\tud@multicols@check} +% Im Makro \cs{tud@multicols} wird die Anzahl der gewünschten Spalten in einer +% Umgebung für die Verwendung des \pkg{multicol}"=Paketes gespeichert. +% \begin{macrocode} +\newcommand*\tud@multicols{1} +% \end{macrocode} +% Der Befehl \cs{tud@multicols@check} prüft, ob das Paket \pkg{multicol} +% geladen wurde. Falls dies nicht der Fall ist, wird eine Warnung ausgegeben. +% \begin{macrocode} +\newcommand*\tud@multicols@check{% + \ifdef{\multicols}{}{% + \ifnum\tud@multicols>1\relax% + \ClassWarning{\tudcls@name}{% + The option `columns=\tud@multicols' is only supported,\MessageBreak% + when package `multicol' is loaded% + }% + \def\tud@multicols{1}% + \fi% + }% +} +% \end{macrocode} +% \end{macro}^^A \tud@multicols@check +% \end{macro}^^A \tud@multicols +% +% \subsection{Bedingte Majuskeln für Überschriften} +% +% Überschriften sollen bloß in Großbuchstaben gesetzt werden, wenn auch +% tatsächlich die Schrift DIN~Bold verwendet wird. +% \begin{macro}{\tud@makeuppercase} +% Der Befehl führt \cs{MakeTextUppercase}\marg{Text} deshalb nur aus, wenn die +% richtige Schriftfamilie verwendet wird. Außerdem wird gleich noch die zu hoch +% liegende Grundlinie bei Überschriften der beiden Ebenen \cs{section} und +% \cs{subsection} nach unten korrigiert (derber Hack). +% \begin{macrocode} +\newcommand*\tud@makeuppercase[1]{% + \ifdin{\begingroup\MakeTextUppercase{#1}\endgroup}{#1}% + \protect\vphantom{\"A\"O\"U}% +% \end{macrocode} +% Aufgrund eines Fehlers im \LaTeX-Kernels liegt die Grundlinie für die +% Gliederungsebene \cs{section} zu hoch. Mit dem Einfügen des vertikalen +% Freiraums für die Umlaute würde diese automatisch nach unten verschoben. +% Allerdings wäre das ein ziemlich übler Hack. +% \begin{macrocode} +%% \addtokomafont{section}{\strut\ignorespaces}% +} +% \end{macrocode} +% \end{macro}^^A \tud@makeuppercase +% +% \subsection{Erzwungene Minuskeln für Strings} +% +% Um angegebene Werte bei Schlüssel-Wert-Paaren oder Schlüsselwörter in +% bestimmten Feldern mit Sicherheit erkennen zu können, werden diese zwingend +% in Kleinbuchstaben geschieben. +% \begin{macro}{\tud@lowerstring} +% Das Makro wird mit \cs{tud@lowerstring}\marg{Zielmakro}\marg{String} bennutzt. +% \begin{macrocode} +\newcommand*\tud@lowerstring[2]{% + \protected@edef#1{#2}% + \lowercase\expandafter{% + \expandafter\gdef\expandafter #1\expandafter{#1}% + }% +} +% \end{macrocode} +% \end{macro}^^A \tud@lowerstring +% +% \subsection{Expansion geschützter Makros} +% +% Im \LaTeX-Kernel wird der Befehl \cs{@expandtwoargs} definiert, welcher zwei +% Argumente in ein angegebenes Makro vollständig expandiert. Dabei erfolgt die +% Expansion der beiden Argumente aufgrund der standardmäßigen Verwendung von +% \cs{edef} allerdings vollständig und ohne die Beachtung von \cs{protect}. +% \begin{macro}{\protected@expandtwoargs} +% Der Befehl \cs{protected@expandtwoargs} kann äquivalent genutzt werden, +% lässt dabei aber mit \cs{protect} geschützte Makros unberührt. +% \begin{macrocode} +\providecommand*\protected@expandtwoargs[3]{% + \protected@edef\reserved@a{\noexpand#1{#2}{#3}}\reserved@a% +} +% \end{macrocode} +% \end{macro}^^A \protected@expandtwoargs +% +% \iffalse +%</class&body> +%<*manual|doc> +% \fi +% +% \section{Verschiedenes für die Dokumentationklassen} +% +% \begin{macro}{\vTUDScript} +% \begin{macro}{\vKOMAScript} +% \begin{macro}{\Attention} +% \changes{v2.02}{2014/08/16}{neu}%^^A +% \begin{macro}{\Forum} +% \begin{macro}{\notudscrartcl} +% \begin{length}{\tempdim} +% \begin{macro}{\hrfn} +% \begin{macro}{\scrguide} +% \changes{v2.02}{2014/09/04}{neu}%^^A +% \begin{macro}{\CD} +% \begin{macro}{\CDs} +% \begin{macro}{\TUD} +% \begin{macro}{\TnUD} +% \begin{macro}{\DDC} +% \begin{macro}{\Univers} +% \begin{macro}{\DIN} +% Diese Befehle stellen regelmäßig in der Quelltextdokumentatuion und im +% Handbuch genutzte Textbausteine bereit. Dazu wird der Befehl \cs{xspace} aus +% dem \pkg{xspace}-Paket genutzt. +% \begin{macrocode} +\RequirePackage{xspace}[2009/10/20] +\xspaceaddexceptions{"=} +% \end{macrocode} +% Der Befehl \cs{vTUDScript} enthält die aktuelle \TUDScript"=Versionsnummer. +% \begin{macrocode} +\newcommand*\vTUDScript{} +\AtBeginDocument{% + \def\@tempb#1 #2 #3\relax#4\relax{\def\vTUDScript{#2}}% + \edef\@tempa{\TUDVersion}% + \expandafter\@tempb\@tempa\relax? ? \relax\relax% +} +\newcommand*\vKOMAScript{v3.12\xspace} +% \end{macrocode} +% Ganz zum Schluss noch Bugfixes für unterschiedliche Pakete. +% \begin{macrocode} +\RequirePackage{scrhack}[2014/07/07] +% \end{macrocode} +% \dots und der Rest. +% \begin{macrocode} +%<*manual> +\newcommand*\Attention[1]{\marginnote{\fbox{Achtung!}}\emph{#1}} +\NewDocumentCommand\Forum{s}{% + \IfBooleanTF{#1}{% + \url{http://latex.wcms-file3.tu-dresden.de/phpBB3/}% + }{% + \hrfn{http://latex.wcms-file3.tu-dresden.de/phpBB3/}{TUD-\LaTeX-Forum}% + }% + \xspace% +} +\newcommand*\hrfn[2]{\href{#1}{#2}\footnote{\scriptsize\url{#1}}} +\NewDocumentCommand\scrguide{s}{% + \def\@tempc{% + http://mirrors.ctan.org/macros/latex/contrib/koma-script/doc/scrguide.pdf% + }% + \IfBooleanTF{#1}{% + \href{\@tempc}{\File{scrguide.pdf}}% + }{% + \hrfn{\@tempc}{\File{scrguide.pdf}}% + }% + \xspace% +} +%<*manual&class> +\NewDocumentCommand\GitHubRepo{s}{% + \def\@tempc{% + https://github.com/tud-cd/tudscr/releases% + }% + \IfBooleanTF{#1}{% + \href{\@tempc}{GitHub-Repository~\File*{tudscr}}% + }{% + \hrfn{\@tempc}{GitHub-Repository~\File*{tudscr}}% + }% + \xspace% +} +\newcommand*\notudscrartcl{% + F\"ur die Klasse \Class{tudscrartcl} ist diese Einstellung nicht verf\"ugbar. +} +\newlength{\tempdim} +%</manual&class> +%</manual> +\newcommand*\CD{Corporate Design\xspace} +\newcommand*\CDs{Corporate Designs\xspace} +\newcommand*\TUD{Technische Universit\"at Dresden\xspace} +\newcommand*\TnUD{Technischen Universit\"at Dresden\xspace} +\newcommand*\DDC{% + \mbox{D\kern.05em R\kern.05em E\kern.05em S\kern.05em D\kern.05em E\kern.05em + N\kern.1em-\kern.1em concept}\xspace% +} +\AfterPackage*{babel}{% + \@expandtwoargs\in@{,english,}{,\bbl@loaded,}% + \ifin@% + \renewcommand*\CD{\foreignlanguage{english}{Corporate Design}\xspace} + \renewcommand*\CDs{\foreignlanguage{english}{Corporate Designs}\xspace} + \fi +} +%<*manual> +\newcommand*\Univers{\textubn{Univers}\xspace} +\newcommand*\DIN{\textdbn{DIN~BOLD}\xspace} +\newcommand*\sbnfont{\sffamily\bfseries\upshape} +\newcommand*\sbsfont{\sffamily\bfseries\slshape} +\newcommand*\textsbn{} +\newcommand*\textsbs{} +\DeclareTextFontCommand\textsbn{\sffamily\bfseries\upshape} +\DeclareTextFontCommand\textsbs{\sffamily\bfseries\slshape} +%</manual> +% \end{macrocode} +% \end{macro}^^A \DIN +% \end{macro}^^A \Univers +% \end{macro}^^A \DDC +% \end{macro}^^A \TnUD +% \end{macro}^^A \TUD +% \end{macro}^^A \CDs +% \end{macro}^^A \CD +% \end{macro}^^A \scrguide +% \end{macro}^^A \hrfn +% \end{length}^^A \tempdim +% \end{macro}^^A \notudscrartcl +% \end{macro}^^A \Forum +% \end{macro}^^A \Attention +% \end{macro}^^A \vKOMAScript +% \end{macro}^^A \vTUDScript +% +% \iffalse +%</manual|doc> +% \fi +% +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr-pagestyle.dtx b/Master/texmf-dist/source/latex/tudscr/tudscr-pagestyle.dtx new file mode 100644 index 00000000000..f3c196cde38 --- /dev/null +++ b/Master/texmf-dist/source/latex/tudscr/tudscr-pagestyle.dtx @@ -0,0 +1,2005 @@ +% \CheckSum{1513} +% \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-pagestyle.dtx +%<*driver> +\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi +\ProvidesFile{tudscr-pagestyle.dtx}[% + 2014/12/17 v2.02 TUD-KOMA-Script (pagestyle)% +] +\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-pagestyle.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 +% \changes{v2.02}{2014/07/08}{Verwendung \cs{FamilyKeyState}}%^^A +% +% \section{Der Seitenstil des \CDs} +% +% Das \CD verlangt (eigentlich) einen fest vorgegebenen Satzspiegel. Für das +% Setzen längerer wissenschaftlicher Abhandlungen ist dieser jedoch alles +% andere als glücklich gewählt. Insbesondere für den doppelseitigen Satz ist +% das Standardlayout nicht gut nutzbar. Für die \TUDScript"=Klassen wird +% deshalb die Abweichung vom sonst fest vorgegebenen Satzspiegel ermöglicht. +% +% \StopEventually{\PrintIndex\PrintChanges} +% +% \subsection{Definition der konstanten Größen und Maße} +% +% Die Vorlagen sollen neben den vom \CD vorgegebenen Seitenrändern weitere +% Layouts ermöglichen und u.\,a. auch die Nutzung des Paketes \pkg{typearea} +% erlauben. Damit ein einheitliches Verfahren zur Wahl bzw. Umschaltung des +% Satzspiegels genutzt werden kann, wird das Paket \pkg{geometry} genutzt. +% Dabei werden entweder die gewünschten Maße der Seitenränder direkt gewählt +% oder aber die mit \pkg{typearea} berechneten Maße an \pkg{geometry} +% durchgereicht. +% +% Als erstes werden die Standardmaße für die Seitenränder im \CD definiert, +% danach speziell für die \env{tudpage}"=Umgebung. +% +% \iffalse +%<*class&body> +% \fi +% +% \begin{length}{\tud@dim@left} +% \begin{length}{\tud@dim@right} +% \begin{length}{\tud@dim@both} +% Die Seitenränder für links und rechts sowie deren Summe, welche später für +% weitere Layouts dazu verwendet wird, diese anteilig zu verteilen. +% \begin{macrocode} +\newlength{\tud@dim@left} +\newlength{\tud@dim@right} +\newlength{\tud@dim@both} +% \end{macrocode} +% \end{length}^^A \tud@dim@both +% \end{length}^^A \tud@dim@right +% \end{length}^^A \tud@dim@left +% \begin{length}{\tud@dim@top} +% \begin{length}{\tud@dim@bottom} +% \begin{length}{\tud@dim@footskip} +% Die Seitenränder für sowohl oben als auch unten sowie der Abstand zwischen +% Textkörper und Fußzeile. +% \begin{macrocode} +\newlength{\tud@dim@top} +\newlength{\tud@dim@bottom} +\newlength{\tud@dim@footskip} +% \end{macrocode} +% \end{length}^^A \tud@dim@footskip +% \end{length}^^A \tud@dim@bottom +% \end{length}^^A \tud@dim@top +% \begin{length}{\tud@dim@headheight} +% \begin{length}{\tud@dim@barheight} +% \begin{length}{\tud@dim@headsep} +% Es folgen die speziellen Maße für die Seiten mit dem TUD-Kopf, also die Höhe +% oberhalb des Querbalkens, die Höhe des Querbalkens selbst sowie der vertikale +% (Mindest"~)Abstand zwischen Querbalken und Textkörper. +% \begin{macrocode} +\newlength{\tud@dim@headheight} +\newlength{\tud@dim@barheight} +\newlength{\tud@dim@headsep} +% \end{macrocode} +% \end{length}^^A \tud@dim@headsep +% \end{length}^^A \tud@dim@barheight +% \end{length}^^A \tud@dim@headheight +% \begin{length}{\tud@dim@logox} +% \begin{length}{\tud@dim@logoy} +% \begin{length}{\tud@dim@logowidth} +% \begin{length}{\tud@dim@logoheight} +% Außerdem müssen noch die Abmessungen und die Position des TUD-Logos definiert +% werden, nämlich der horizontale (Soll"~)Abstand zwischen linkem Seitenrand +% und Logo, der vertikale (Soll"~)Abstand zwischen oberem Seitenrand und Logo +% sowie die Breite und Höhe\footnote{Proportionen sind durch die Grafik +% vorgegeben} des Logos. +% \begin{macrocode} +\newlength{\tud@dim@logox} +\newlength{\tud@dim@logoy} +\newlength{\tud@dim@logowidth} +\newlength{\tud@dim@logoheight} +% \end{macrocode} +% \end{length}^^A \tud@dim@logoheight +% \end{length}^^A \tud@dim@logowidth +% \end{length}^^A \tud@dim@logoy +% \end{length}^^A \tud@dim@logox +% \begin{length}{\tud@dim@line} +% \changes{v2.02}{2014/06/23}{neu}%^^A +% \begin{length}{\tud@dim@thinline} +% \begin{length}{\tud@dim@heavyline} +% Die Linienstärke der Outline im Kopf ist für ein monochromes Layout schmaler +% als im Layout mit farbigem Hintergrund.\footnote{% +% monochrom \cs{tud@dim@thinline}, koloriert \cs{tud@dim@heavyline}}% +% Da im Dokument beide Varianten vorkommen können, wird die Breite +% \cs{tud@dim@line} durch den Seitenstil situativ entweder auf den Wert von +% \cs{tud@dim@thinline} oder aber \cs{tud@dim@heavyline} gesetzt. +% \begin{macrocode} +\newlength{\tud@dim@line} +\newlength{\tud@dim@thinline} +\newlength{\tud@dim@heavyline} +% \end{macrocode} +% \end{length}^^A \tud@dim@heavyline +% \end{length}^^A \tud@dim@thinline +% \end{length}^^A \tud@dim@line +% \begin{length}{\tud@dim@headingsvskip} +% Die Länge für den vertikalen Standardversatz der Überschriften. +% \begin{macrocode} +\newlength{\tud@dim@headingsvskip} +% \end{macrocode} +% \end{length}^^A \tud@dim@headingsvskip +% \begin{length}{\tud@dim@headdiff} +% \changes{v2.02}{2014/06/23}{neu}%^^A +% \begin{length}{\tud@dim@ddcdiff} +% \changes{v2.02}{2014/06/23}{neu}%^^A +% \begin{length}{\tud@dim@ddcfoot} +% \changes{v2.02}{2014/06/23}{neu, Umbenennung von \cs{tud@dim@ddcheight}}%^^A +% Zu guter Letzt noch die Höhe des \DDC-Logos in der Fußzeile. Die maximale Höhe +% der Fußzeile ist fest vorgegeben. +% \begin{macrocode} +\newlength{\tud@dim@headdiff} +\newlength{\tud@dim@ddcdiff} +\newlength{\tud@dim@ddcfoot} +% \end{macrocode} +% \end{length}^^A \tud@dim@ddcfoot +% \end{length}^^A \tud@dim@ddcdiff +% \end{length}^^A \tud@dim@headdiff +% \begin{macro}{\tud@geometry@set} +% \begin{macro}{\tud@head@font@size} +% Hiermit werden in Abhängigkeit der gewählten Papiergröße die Maße für die +% Größe der Kopfzeile, die Position des Logos, die Seitenränder sowie die +% Schriftgröße in der Kopfzeile definiert. Aufgerufen wird der Befehl durch +% \cs{tud@geometry@process}. +% \begin{macrocode} +\newcommand*\tud@head@font@size{} +\newcommand*\tud@geometry@set{% + \ifdim\paperheight<148.1mm\relax% + \setlength{\tud@dim@headheight}{17.5mm}% + \setlength{\tud@dim@barheight}{2.5mm}% + \setlength{\tud@dim@headsep}{6mm}% + \setlength{\tud@dim@logox}{5.5mm}% + \setlength{\tud@dim@logoy}{6.5mm}% + \setlength{\tud@dim@logowidth}{28.5mm}% + \setlength{\tud@dim@left}{15mm}% + \setlength{\tud@dim@right}{10mm}% + \setlength{\tud@dim@top}{12.5mm}% + \setlength{\tud@dim@bottom}{12.5mm}% + \setlength{\tud@dim@footskip}{6mm}% + \setlength{\tud@dim@heavyline}{0.75pt}% + \setlength{\tud@dim@thinline}{0.5pt}% + \def\tud@head@font@size{4.5}% + \else\ifdim\paperheight<297.1mm\relax% + \setlength{\tud@dim@headheight}{35mm}% + \setlength{\tud@dim@barheight}{5mm}% + \setlength{\tud@dim@headsep}{12mm}% + \setlength{\tud@dim@logox}{11mm}% + \setlength{\tud@dim@logoy}{13.5mm}% + \setlength{\tud@dim@logowidth}{57mm}% + \setlength{\tud@dim@left}{30mm}% + \setlength{\tud@dim@right}{20mm}% + \setlength{\tud@dim@top}{25mm}% + \setlength{\tud@dim@bottom}{25mm}% + \setlength{\tud@dim@footskip}{12mm}% + \setlength{\tud@dim@heavyline}{1pt}% + \setlength{\tud@dim@thinline}{0.5pt}% + \def\tud@head@font@size{9}% + \else\ifdim\paperheight<420.1mm\relax% + \setlength{\tud@dim@headheight}{50mm}% + \setlength{\tud@dim@barheight}{7mm}% + \setlength{\tud@dim@headsep}{17mm}% + \setlength{\tud@dim@logox}{15.5mm}% + \setlength{\tud@dim@logoy}{19mm}% + \setlength{\tud@dim@logowidth}{80mm}% + \setlength{\tud@dim@left}{42mm}% + \setlength{\tud@dim@right}{28mm}% + \setlength{\tud@dim@top}{35mm}% + \setlength{\tud@dim@bottom}{35mm}% + \setlength{\tud@dim@footskip}{17mm}% + \setlength{\tud@dim@heavyline}{1.4pt}% + \setlength{\tud@dim@thinline}{0.7pt}% + \def\tud@head@font@size{13}% + \else\ifdim\paperheight<594.1mm\relax% + \setlength{\tud@dim@headheight}{70mm}% + \setlength{\tud@dim@barheight}{10mm}% + \setlength{\tud@dim@headsep}{24mm}% + \setlength{\tud@dim@logox}{22mm}% + \setlength{\tud@dim@logoy}{27mm}% + \setlength{\tud@dim@logowidth}{114mm}% + \setlength{\tud@dim@left}{60mm}% + \setlength{\tud@dim@right}{40mm}% + \setlength{\tud@dim@top}{50mm}% + \setlength{\tud@dim@bottom}{50mm}% + \setlength{\tud@dim@footskip}{24mm}% + \setlength{\tud@dim@heavyline}{1.7pt}% + \setlength{\tud@dim@thinline}{1pt}% + \def\tud@head@font@size{13.5}% + \else\ifdim\paperheight<841.1mm\relax% + \setlength{\tud@dim@headheight}{100mm}% + \setlength{\tud@dim@barheight}{14mm}% + \setlength{\tud@dim@headsep}{34mm}% + \setlength{\tud@dim@logox}{31mm}% + \setlength{\tud@dim@logoy}{38mm}% + \setlength{\tud@dim@logowidth}{161.5mm}% + \setlength{\tud@dim@left}{85mm}% + \setlength{\tud@dim@right}{56.5mm}% + \setlength{\tud@dim@top}{71mm}% + \setlength{\tud@dim@bottom}{71mm}% + \setlength{\tud@dim@footskip}{34mm}% + \setlength{\tud@dim@heavyline}{1.9pt}% + \setlength{\tud@dim@thinline}{1.5pt}% + \def\tud@head@font@size{14}% + \else% + \setlength{\tud@dim@headheight}{140mm}% + \setlength{\tud@dim@barheight}{20mm}% + \setlength{\tud@dim@headsep}{48mm}% + \setlength{\tud@dim@logox}{44mm}% + \setlength{\tud@dim@logoy}{54mm}% + \setlength{\tud@dim@logowidth}{228mm}% + \setlength{\tud@dim@left}{120mm}% + \setlength{\tud@dim@right}{80mm}% + \setlength{\tud@dim@top}{100mm}% + \setlength{\tud@dim@bottom}{100mm}% + \setlength{\tud@dim@footskip}{48mm}% + \setlength{\tud@dim@heavyline}{2.1pt}% + \setlength{\tud@dim@thinline}{2pt}% + \def\tud@head@font@size{20}% + \fi\fi\fi\fi\fi% + \setlength{\tud@dim@both}{\dimexpr\tud@dim@left+\tud@dim@right\relax}% +% \end{macrocode} +% Hiermit wird sichergestellt, dass bei der Verwendung des \DDC-Logos im Fuß +% ausreichend Platz zur Verfügung steht. +% \begin{macrocode} + \setlength{\tud@dim@ddcfoot}{.6\tud@dim@headheight}% +} +% \end{macrocode} +% \end{macro}^^A \tud@head@font@size +% \end{macro}^^A \tud@geometry@set +% +% \subsection{Unterstützung der \cls{standalone}-Klasse} +% +% \changes{v2.02}{2014/07/25}{Unterstützung der \cls{standalone}"=Klasse}%^^A +% +% Mit der Klasse~\cls{standalone} können insbesondere Grafiken als separate +% Dateien erzeugt und später im Dokument eingebunden werden. Diese Klasse +% ändert allerhand an den Einstellungen der Seitenränder. Damit sich diese bei +% der Verwendung mit den \TUDScript-Klassen nicht in die Quere kommen, müssen +% für einige Einstellungen unterdrückt werden. +% +% \begin{macro}{\tud@ifsacrop} +% \changes{v2.02}{2014/09/08}{neu}%^^A +% Mit diesem Makro kann die Verwendung der Option \opt{crop} mit der Klasse +% \cls{standalone} geprüft werden. Das erste Argument wird ausgeführt, wenn +% die Klasse geladen und die Option aktiv ist. Das zweite Argument wird +% ausgeführt, wenn entweder die Option \opt{crop} deaktiviert ist oder die +% Klasse \cls{standalone} gar nicht geladen wurde. +% \begin{macrocode} +\newcommand*\tud@ifsacrop{% + \ifcsdef{ifsa@crop}{% + \ifbool{sa@crop}{\@firstoftwo}{\@secondoftwo}% + }{% + \@secondoftwo% + }% +} +% \end{macrocode} +% \end{macro}^^A \tud@ifsacrop +% +% Ist die Klasse \cls{standalone} zusammen mit der Option \opt{crop} aktiv, +% werden die Seitenränder auf die Einstellungen dieser Klasse gesetzt und das +% Laden von \pkg{scrlayer-scrpage} verhindert. +% +% \begin{macrocode} +\AtEndPreamble{% + \tud@ifsacrop{% + \PreventPackageFromLoading{scrlayer-scrpage}% + \pagestyle{empty}% + \hoffset=-72.27pt% + \voffset=-72.27pt% + \topmargin=0pt% + \headheight=0pt% + \headsep=0pt% + \marginparsep=0pt% + \marginparwidth=0pt% + \footskip=0pt% + \marginparpush=0pt% + \oddsidemargin=0pt% + \evensidemargin=0pt% + \topskip=0pt% + \textheight=\dimexpr\maxdimen% + }{}% +} +% \end{macrocode} +% +% \subsection{Definition des Seitenstils mittels \pkg{scrlayer-scrpage}} +% +% Ein zentraler Bestandteil der Vorlagen ist der Seitenkopf des \CDs. Dieser +% wird ab der Version~v2.02 mit Hilfe des Paketes \pkg{scrlayer-scrpage} +% erstellt. Dafür werden einzelnene Seitenstile erstellt, welche zum einen von +% verschiedenen Befehlen wie beispielsweise von\cs{maketitle} oder \cs{part} +% bzw. \cs{addpart} genutzt werden. Zum anderen kann der Anwender selbst diese +% entweder direkt über die Wahl des Seitenstils oder aber mit der +% \env{tudpage}"=Umgebung nutzen. +% +% \begin{pagestyle}{tudheadings} +% \changes{v2.02}{2014/06/23}{neu}%^^A +% \begin{pagestyle}{plain.tudheadings} +% \changes{v2.02}{2014/06/23}{neu}%^^A +% \begin{pagestyle}{empty.tudheadings} +% \changes{v2.02}{2014/06/23}{neu}%^^A +% Es wird ein neuer Seitenstil kreiert, der das \CD der TU~Dresden mit der +% prägenden Kopfzeile umsetzt. Dabei soll dieser Kopf auch verwendbar sein, +% wenn nicht die vom \CD vorgeschriebenen Seitenränder sondern das Paket +% \pkg{typearea} genutzt wird. Dafür wird das Logo im Kopf so wie im \CD +% vorgesehen mit dem Logo der \TnUD in den Rand und dem Schriftzug bündig zum +% Textblock gesetzt. Für den Fall, dass das Dokument nicht ausschließlich mit +% dem TUD-Kopf auf jeder Seite gesetzt wird, muss der komplette vertikale +% Satzspiegel angepasst werden, sonst wäre der obere Rand optisch viel zu groß. +% Hierfür wird das Paket \pkg{geometry} genutzt.Durch \cs{tud@geometry@process} +% werden drei Layouts erstellt. Diese können mit \cs{loadgeometry}\marg{Stil} +% geladen werden. +% \begin{macrocode} +\AtEndPreamble{% +% \end{macrocode} +% Damit der Anwender beliebige Optionen an \pkg{scrlayer-scrpage} übergeben +% kann, wird das Paket erst zum Ende der Präambel geladen, wenn dies nicht +% bereits vorher geschehen ist. +% \ToDo{Versionsanforderung rein, sobald aktuelle Version auf CTAN vorhanden} +% \begin{macrocode} + \RequirePackage{scrlayer-scrpage}[2013/12/14]% +% \end{macrocode} +% Anschließend werden verschiedene, sogeannte Layers für die einzelnen Elemente +% auf einer Seite erstellt. Dies sind das aus dem Satzspiegel nach links +% verschobene Logo der \TnUD sowie \dots +% \begin{macrocode} + \AfterPackage*{scrlayer-scrpage}{% + \DeclareNewLayer[% + background,head,align=tl,% + voffset=\tud@dim@logoy,% + contents={% + \hspace*{\dimexpr\tud@dim@logox-\tud@dim@left\relax}\tud@mainlogo% + },% + ]{tudheadings.head.mainlogo}% +% \end{macrocode} +% \dots das Zweitlogo, \dots +% \begin{macrocode} + \DeclareNewLayer[% + background,head,align=tl,% + voffset=\tud@dim@logoy,% + contents={\hfill\tud@headlogo},% + ]{tudheadings.head.logo}% +% \end{macrocode} +% \dots die obere und untere Linie des Querbalkens sowohl in der normalen +% Version, welche den Textbereich überspannt als auch in der Variante über die +% komplette Seitenbreite. Dabei muss für beide Varianten der entsprechenden +% horizontale Versatz beachtet werden. Dafür wird ggf. der Parameter \val{head} +% von \pkg{scrlayer-scrpage} verwendet. Darauf folgt \dots +% \begin{macrocode} + \DeclareNewLayer[% + background,head,align=tl,% + voffset=\dimexpr\tud@dim@headheight-.5\tud@dim@line\relax,% + contents={\if@tud@widehead\else\tud@head@rule{\textwidth}\fi},% + ]{tudheadings.head.topline}% + \DeclareNewLayer[% + background,head,align=tl,% + voffset={% + \dimexpr\tud@dim@headheight+\tud@dim@barheight-.5\tud@dim@line\relax% + },% + contents={\if@tud@widehead\else\tud@head@rule{\textwidth}\fi},% + ]{tudheadings.head.bottomline}% + \DeclareNewLayer[% + background,align=tl,% + voffset=\dimexpr\tud@dim@headheight-.5\tud@dim@line\relax,% + contents={\if@tud@widehead\tud@head@rule{\paperwidth}\fi},% + ]{tudheadings.head.topwideline}% + \DeclareNewLayer[% + background,align=tl,% + voffset={% + \dimexpr\tud@dim@headheight+\tud@dim@barheight-.5\tud@dim@line\relax% + },% + contents={\if@tud@widehead\tud@head@rule{\paperwidth}\fi},% + ]{tudheadings.head.bottomwideline}% +% \end{macrocode} +% \dots der Inhalt mit Fakultät, Einrichtung, Institut und Lehrstuhl. +% \begin{macrocode} + \DeclareNewLayer[% + background,head,align=tl,% + voffset=\dimexpr\tud@dim@headheight+\tud@dim@line\relax,% + contents={\tud@head@text@box},% + ]{tudheadings.head.text}% +% \end{macrocode} +% Außerdem wird eine weitere Ebene mit dem \DDC-Logo im Seitenfuß erstellt. +% \begin{macrocode} + \DeclareNewLayer[% + background,foot,% + contents={% + \vskip\dimexpr-\tud@dim@ddcfoot-\baselineskip+\ht\strutbox% + \hfill\tud@footlogo% + },% + ]{tudheadings.foot.ddclogo}% +% \end{macrocode} +% Aus den zuvor erstellten Ebenen werden jetzt die eigentlichen Seitenstile +% zusammengesetzt. Mit \cs{newpairofpagestyles} wird neben dem Seitenstil +% \pgs{tudheadings} der passende Seitenstil \pgs{plain.tudheadings} gleich mit +% deklariert. +% \begin{macrocode} + \newpairofpagestyles{tudheadings}{}% +% \end{macrocode} +% Allerdings führt der Befehl dazu, dass zunächst eine Vielzahl an Ebenen +% hinzugefügt wird, welche nicht benötigt werden. Deshalb werden diese mit +% \cs{RemoveLayersFromPageStyle} zunächst entfernt. +% \begin{macrocode} + \ForEachLayerOfPageStyle{tudheadings}{% + \RemoveLayersFromPageStyle{tudheadings}{#1}% + }% + \ForEachLayerOfPageStyle{plain.tudheadings}{% + \RemoveLayersFromPageStyle{plain.tudheadings}{#1}% + }% +% \end{macrocode} +% Nun folgt das Hinzufügen der Ebenen zu den jetzt leeren Seitenstilen. Damit +% die Benutzerschnittstelle von \pkg{scrlayer-scrpage} für die Fußzeile +% weiterhin durch den Anwender verwendet werden kann, werden die entsprechenden +% \pgs{scrheadings}-Ebenen verwendet. +% \begin{macrocode} + \AddLayersToPageStyle{tudheadings}{% + tudheadings.head.mainlogo,% + tudheadings.head.logo,% + tudheadings.head.topline,% + tudheadings.head.bottomline,% + tudheadings.head.topwideline,% + tudheadings.head.bottomwideline,% + tudheadings.head.text,% + tudheadings.foot.ddclogo,% + scrheadings.foot.odd,% + scrheadings.foot.even,% + scrheadings.foot.oneside,% + scrheadings.foot.above.line,% + scrheadings.foot.below.line% + }% + \AddLayersToPageStyle{plain.tudheadings}{% + tudheadings.head.mainlogo,% + tudheadings.head.logo,% + tudheadings.head.topline,% + tudheadings.head.bottomline,% + tudheadings.head.topwideline,% + tudheadings.head.bottomwideline,% + tudheadings.head.text,% + tudheadings.foot.ddclogo,% + plain.scrheadings.foot.odd,% + plain.scrheadings.foot.even,% + plain.scrheadings.foot.oneside,% + plain.scrheadings.foot.above.line,% + plain.scrheadings.foot.below.line% + }% + \DeclareNewPageStyleByLayers{empty.tudheadings}{% + tudheadings.head.mainlogo,% + tudheadings.head.logo,% + tudheadings.head.topline,% + tudheadings.head.bottomline,% + tudheadings.head.topwideline,% + tudheadings.head.bottomwideline,% + tudheadings.head.text,% + tudheadings.foot.ddclogo,% + }% +% \end{macrocode} +% Normalerweise werden durch \pkg{scrlayer-scrpage} bei der Umschaltung auf +% einen mit dem Befehl \cs{newpairofpagestyles}\marg{Seitenstil} definierten +% Seitenstil, die Seitenstile \pgs{headings} und \pgs{plain} als Alias für +% \pgs{\meta{Seitenstil}} und \pgs{plain.\meta{Seitenstil}} definiert. Hiermit +% wird zusätzlich dafür gesorgt, das der Seitenstil \pgs{empty} ebenfalls als +% Alias für \pgs{empty.tudheadings} verwendet werden kann. +% \begin{macrocode} + \AddToLayerPageStyleOptions{tudheadings}{% + onselect={\letcs\ps@empty{ps@empty.tudheadings}}% + }% + \AddToLayerPageStyleOptions{plain.tudheadings}{% + onselect={\letcs\ps@empty{ps@empty.tudheadings}}% + }% + \AddToLayerPageStyleOptions{empty.tudheadings}{% + onselect={% + \letcs\ps@empty{ps@empty.tudheadings}% + \letcs\ps@plain{ps@plain.tudheadings}% + \letcs\ps@headings{ps@tudheadings}% + }% + }% +% \end{macrocode} +% Außerdem wird der Alias-Seitenstil \pgs{tudscrheadings} definiert. +% \begin{macrocode} + \DeclareNewPageStyleAlias{tudscrheadings}{tudheadings}% + \DeclareNewPageStyleAlias{plain.tudscrheadings}{plain.tudheadings}% + \DeclareNewPageStyleAlias{empty.tudscrheadings}{empty.tudheadings}% +% \end{macrocode} +% Der TUD-Kopf erfordert einen eigenen Satzspiegel, der ggf. durch +% \cs{tud@beforepagestyle} aktiviert bzw. deaktiviert wird. +% \begin{macrocode} + \BeforeSelectAnyPageStyle{\tud@beforepagestyle{#1}}% + }% +} +% \end{macrocode} +% \end{pagestyle}^^A empty.tudheadings +% \end{pagestyle}^^A plain.tudheadings +% \end{pagestyle}^^A tudheadings +% \begin{macro}{\ps@tudpage@plain} +% \changes{v2.02}{2014/06/23}{entfernt}%^^A +% \begin{macro}{\ps@tudpage@empty} +% \changes{v2.02}{2014/06/23}{entfernt}%^^A +% Diese Befehle wurden mit der \TUDScript-Version~v2.02 entfernt. +% \end{macro}^^A \ps@tudpage@empty +% \end{macro}^^A \ps@tudpage@plain +% \begin{macro}{\tud@beforepagestyle} +% \changes{v2.02}{2014/06/23}{neu}%^^A +% \begin{macro}{\tud@currentgeometry} +% \changes{v2.02}{2014/06/23}{neu}%^^A +% Mit \cs{tud@beforepagestyle} wird beim Umschalten des Seitenstils ggf. der +% Satzspiegel geändert. +% \begin{macrocode} +\newcommand*\tud@currentgeometry{} +\newcommand*\tud@beforepagestyle[1]{% +% \end{macrocode} +% Der \pgs{tudheadings}-Seitenstil wird mit dem Befehl \cs{newpairofpagestyles} +% derart definiert, dass zwischen \pgs{tudheadings}, \pgs{plain.tudheadings} +% sowie~-- durch die Anpassungen weiter oben~-- \pgs{empty.tudheadings} auch +% mit \LaTeX-Standardseitenstilen \pgs{headings}, \pgs{plain} und \pgs{empty} +% umgeschaltet werden kann. Dies wird hiermit beachtet. +% \begin{macrocode} + \def\@tempa{#1}% + \ifstr{\sls@currentheadings}{tudheadings}{% + \ifstr{#1}{headings}{\def\@tempa{tudheadings}}{}% + \ifstr{#1}{plain}{\def\@tempa{plain.tudheadings}}{}% + \ifstr{#1}{empty}{\def\@tempa{empty.tudheadings}}{}% + }{}% +% \end{macrocode} +% Für den Fall, das ein \pgs{tudheadings}-Seitenstil geladen werden soll\dots +% \begin{macrocode} + \tud@ifinpslist{\@tempa}{% +% \end{macrocode} +% \dots werden die Einstellungen für den Seitenfuß mit \cs{tud@ddc@check} in +% \cs{@tempb} geschrieben und abhängig davon der richtige Satzspiegel geladen. +% Dabei wird zuvor mit dem Wert aus \cs{tud@currentgeometry} geprüft, ob dies +% überhaupt notwendig ist. +% \begin{macrocode} + \tud@ddc@check% +% \end{macrocode} +% Das \DDC-Logo im Fuß ist nicht aktiviert. +% \begin{macrocode} + \ifcase \@tempb\relax% + \ifstr{\tud@currentgeometry}{tudarea}{}{% + \loadgeometry{tudarea}% + \gdef\tud@currentgeometry{tudarea}% + }% +% \end{macrocode} +% Das \DDC-Logo im Fuß ist aktiviert. +% \begin{macrocode} + \else% + \ifstr{\tud@currentgeometry}{tudareaddc}{}{% + \loadgeometry{tudareaddc}% + \gdef\tud@currentgeometry{tudareaddc}% + }% + \fi% +% \end{macrocode} +% Die Länge \cs{tud@dim@headdiff} gibt an, wie groß die Differenz zwischen +% Kopfhöhe zwischen aktuellem und dem speziellen \pgs{tudheadings}-Seitenstil +% ist. Da diese in diesem Fall identisch sind, wird die Länge zu \cs{z@} +% gesetzt. +% \begin{macrocode} + \setlength{\tud@dim@headdiff}{\z@}% +% \end{macrocode} +% Hier ist der Fall, wenn kein \pgs{tudheadings}-Seitenstil geladen werden soll. +% Zusätzlich zum Satzspeigel wird außerdem der Seitenstil \pgs{empty} +% zurückgesetzt. +% \begin{macrocode} + }{% + \ifstr{\tud@currentgeometry}{typearea}{}{% + \loadgeometry{typearea}% + \gdef\tud@currentgeometry{typearea}% + \RedeclarePageStyleByLayers{empty}{}% + }% +% \end{macrocode} +% Die Länge \cs{tud@dim@headdiff} wird auf den berechneten Wert gesetzt. Nur +% für den Fall, dass die Kopfzeile zum Satzspiegel gerechnet wird und dieser +% nicht durch \pkg{typearea} berechnet wurde, muss diese Länge etwas angepasst +% werden. +% \begin{macrocode} + \setlength{\tud@dim@headdiff}{\tud@ta@headdiff}% + \ifcase \tud@geometry\relax\else% + \if@hincl% + \addtolength{\tud@dim@headdiff}{% + \dimexpr-\tud@ta@headheight-\tud@dim@headsep\relax% + }% + \fi% + \fi% + }% +% \end{macrocode} +% Die Länge \cs{tud@dim@headdiff} wird vorsichtshalber global gesetzt. +% \begin{macrocode} + \global\tud@dim@headdiff=\tud@dim@headdiff% +} +% \end{macrocode} +% Damit die Satzspiegelumstellungen nicht durchgeführt werden, wenn durch die +% folgenden \KOMAScript-Befehle Leerseiten erzeugt werden, müssen diese minimal +% angepasst werden. +% \begin{macrocode} +\patchcmd{\cleardoubleoddpageusingstyle}{\pagestyle}{% + \let\tud@beforepagestyle\@gobble\pagestyle% +}{}{\tud@patch@wrn{cleardoubleoddpageusingstyle}} +\patchcmd{\cleardoubleevenpageusingstyle}{\pagestyle}{% + \let\tud@beforepagestyle\@gobble\pagestyle% +}{}{\tud@patch@wrn{cleardoubleevenpageusingstyle}} +\patchcmd{\cleardoublepageusingstyle}{\pagestyle}{% + \let\tud@beforepagestyle\@gobble\pagestyle% +}{}{\tud@patch@wrn{cleardoublepageusingstyle}} +% \end{macrocode} +% \end{macro}^^A \tud@currentgeometry +% \end{macro}^^A \tud@beforepagestyle +% \begin{macro}{\tud@ddc@enlargepage} +% \changes{v2.02}{2014/06/23}{neu}%^^A +% Der Befehl wird für die Titelkopf- und Kapitelseiten verwendet. Er +% verkleinert die entsprechenden Seiten, wenn für diese mit dem Befehl +% \cs{thispagestyle} einer der \pgs{tudheadings}"=Seitenstile gewählt wurde +% \emph{und} des \DDC-Logo im Fuß gesetzt werden soll. +% \begin{macrocode} +\newcommand*\tud@ddc@enlargepage{% + \ifstr{\tud@currentgeometry}{tudareaddc}{}{% + \tud@ddc@check% + \ifcase \@tempb\relax\else\enlargethispage{-\tud@dim@ddcdiff}\fi% + }% +} +% \end{macrocode} +% \end{macro}^^A \tud@ddc@enlargepage +% \begin{macro}{\tud@head@text} +% \begin{macro}{\tud@head@text@first} +% \begin{macro}{\tud@head@text@second} +% \begin{macro}{\tud@head@text@delimiter} +% \begin{macro}{\tud@head@text@buffer} +% \begin{macro}{\tud@head@font} +% Diese Befehle sind Hilfsmakros, die bei der Erzeugung der Textzeile inner- und +% unterhalb des Querbalkens des TUD-Kopfes dienen. +% \begin{macrocode} +\newcommand*\tud@head@text{} +\newcommand*\tud@head@text@first{} +\newcommand*\tud@head@text@second{} +\newcommand*\tud@head@text@delimiter{} +\newcommand*\tud@head@text@buffer{} +\newcommand*\tud@head@font{} +% \end{macrocode} +% \end{macro}^^A \tud@head@font +% \end{macro}^^A \tud@head@text@buffer +% \end{macro}^^A \tud@head@text@delimiter +% \end{macro}^^A \tud@head@text@second +% \end{macro}^^A \tud@head@text@first +% \end{macro}^^A \tud@head@text +% \begin{macro}{\tud@head@rule} +% \changes{v2.02}{2014/06/23}{gewünschte Breite als Argument}%^^A +% Der Querbalken des Kopfes läuft je nach gewähltem Parameter \opt{widehead} +% entweder nur über den Textbereich oder aber über die gesamte Seitenbreite. +% Der Befehl erzeugt eine horizontale Linie mit der übergebenen Breite und +% über \cs{tud@dim@line} definierter Dicke. +% \begin{macrocode} +\newcommand*\tud@head@rule[1]{% + \color{\tud@head@color}% + \rule[\dimexpr\ht\strutbox\relax]{#1}{\tud@dim@line}% +} +% \end{macrocode} +% \end{macro}^^A \tud@head@rule +% \begin{macro}{\tud@head@text@add} +% Dieser Befehl dient zum Füllen eines Puffer-Strings. Es werden sequentiell +% alle potentiellen Felder hinzugefügt. Sollte das zuletzt hinzugefügte Feld +% dazu führen, dass der Text der Kopfzeile über den Seitenrand hinausragt, so +% wird eine zweite Zeile begonnen. In diesem Fall wird der temporäre Schalter +% \cs{@tempswa} aktiviert. Auch das Trennzeichen zwischen einzelnen Feldern +% muss gepuffert werden, da dieses nur gesetzt wird, wenn ein weiteres Feld +% nachfolgt. +% \begin{macrocode} +\newcommand*\tud@head@text@add[3][, ]{% + \def\tud@head@font{#2}% + \edef\tud@head@text{#3}% + \ifx\tud@head@text\@empty% + \def\tud@head@text@delimiter{}% + \else% + \edef\tud@head@text@delimiter{\tud@head@text@buffer}% + \def\tud@head@text@buffer{#1}% + \fi% + \if@tempswa\else% + \def\@tempa{% + \tud@head@text@first% + \tud@head@text@delimiter% + \tud@head@font% + \tud@head@text% + }% + \settowidth{\@tempdima}{\@tempa}% + \ifdim\@tempdima>\textwidth\relax% + \@tempswatrue% + \def\tud@head@text@delimiter{}% + \else% + \edef\tud@head@text@first{\@tempa}% + \fi% + \fi% + \if@tempswa% + \edef\tud@head@text@second{% + \tud@head@text@second% + \tud@head@text@delimiter% + \tud@head@font% + \tud@head@text% + }% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@head@text@add +% \begin{macro}{\tud@head@text@box} +% \changes{v2.02}{2014/06/23}{neu}%^^A +% Dieser Befehl ist der Inhalt der Ebene für den Text der Kopfzeile. +% \begin{macrocode} +\newcommand*\tud@head@text@box{% +% \end{macrocode} +% Sollte keine Fakultät angegeben sein, wird eine Warnung ausgegeben. +% \begin{macrocode} + \ifx\@faculty\@empty% + \ClassWarningNoLine{\tudcls@name}{No `\string\faculty' given}% + \faculty{}% + \fi% +% \end{macrocode} +% Die Farbe des Kopfes wird für Titel und Teileseiten durch die gewählten +% Optionen\footnote{\opt{cdtitle}, \opt{cdpart}} bestimmt.\footnote{für +% die \env{tudpage}-Umgebung kann dieser angepasst werden} +% \begin{macrocode} + \color{\tud@head@color}% +% \end{macrocode} +% Abhängig vom Schalter \cs{if@tud@cdfonts}~-- gesetzt entweder von der globalen +% Klassenoption oder vom lokalelParameter \opt{cdfont}~-- werden entweder die +% Schriften des \CDs oder aber die serifenlose Standardschrift für die Kopfzeile +% verwendet. +% \begin{macrocode} + \tud@head@font@set% +% \end{macrocode} +% Der Inhalt der Kopfzeile wird durch die angegeben Fakultät etc. vorgegeben. +% Sollte der Platz in einer Zeile dafür nicht ausreichen, wird eine zweite +% Zeile begonnen. Ob diese benötigt wird, ist abhängig vom Inhalt und von der +% sich daraus ergebenden Breite der Textzeile. Das Erzeugen der ersten und +% gegebenenfalls der zweiten Textzeile im Kopf erfolgt durch das Makro +% \cs{tud@head@text@add}\oarg{Trennzeichen}\marg{Schrift}\marg{Feld}. Der dafür +% verwendete Schalter \cs{@tempswa} und die benötigten Hilfsmakros werden +% vor der Verwendung initialisiert. +% \begin{macrocode} + \@tempswafalse% + \def\tud@head@text@first{}% + \def\tud@head@text@second{}% + \def\tud@head@text@buffer{}% + \tud@head@text@add[\enskip]{\tud@head@font@bold}{\@faculty}% + \tud@head@text@add{\tud@head@font@light}{\@department}% + \tud@head@text@add{\tud@head@font@light}{\@institute}% + \tud@head@text@add{\tud@head@font@light}{\@chair}% +% \end{macrocode} +% Sollte die zweite Textzeile zu lang sein, was bei kleinen Papierformaten +% vorkommen kann, dann wird eine Warnung ausgegeben. +% \begin{macrocode} + \settowidth{\@tempdima}{\tud@head@text@second}% + \ifdim\@tempdima>\textwidth\relax% + \tud@head@text@wrn{\the\dimexpr\@tempdima-\textwidth\relax}% + \hfuzz=\@tempdima% + \fi% +% \end{macrocode} +% Es erfolgt die Ausgabe der Textzeile(n) mit Fakultät etc. über +% \cs{tud@head@text@write} sowie einer möglichen Extrazeile. +% \begin{macrocode} + \vbox{% + \linespread{0}\selectfont% + \tud@head@text@write{\tud@head@text@first}% + \ifx\tud@head@text@second\@empty% + \ifx\@extraheadline\@empty\else% + \newline\tud@head@font@light\tud@head@text@write{\@extraheadline}% + \fi% + \else% + \newline\tud@head@text@write{\tud@head@text@second}% + \ifx\@extraheadline\@empty\else% + \newline\tud@head@font@light\@extraheadline% + \fi% + \fi% + }% +} +% \end{macrocode} +% \end{macro}^^A \tud@head@text@box +% \begin{macro}{\tud@head@text@write} +% \changes{v2.02}{2014/06/23}{Vertikaler Freiraum für Ober- und Unterlängen +% mit \cs{vphantom} eingefügt}%^^A +% \changes{v2.02}{2014/12/04}{optische Zentrierung des Zeilentextes}%^^A +% Befehl zur Ausgabe der ersten und evtl. zweiten Textzeile im TUD-Kopf +% \begin{macrocode} +\newcommand*\tud@head@text@write[1]{% + \raisebox{\dimexpr(\tud@dim@barheight+2\tud@dim@line-\totalheight)/2\relax}[% + \dimexpr\tud@dim@barheight-\depth\relax% + ][\depth]{#1\vphantom{gjpqy\"A\"O\"U}}% +} +% \end{macrocode} +% \end{macro}^^A \tud@head@text@write +% \begin{macro}{\tud@head@text@wrn} +% Warnung für den Fall, dass die Kopfinformationen breiter werden, als die +% Textbreite, was bei besonders kleinen Papierformaten geschehen kann. +% \begin{macrocode} +\newcommand\tud@head@text@wrn[1]{% + \ClassWarning{\tudcls@name}{% + The given entries for the headline\MessageBreak% + (faculty, institute etc.) are #1\MessageBreak% + too wide for the textwidth% + }% + \global\let\tud@head@text@wrn\@gobble% +} +% \end{macrocode} +% \end{macro}^^A \tud@head@text@wrn +% \begin{macro}{\tud@mainlogo@wrn} +% \changes{v2.02}{2014/06/23}{Umbenennen von \cs{tud@head@logo@wrn}}%^^A +% Warnung für den Fall, dass die Kopfinformationen breiter werden, als die +% Textbreite, was bei besonders kleinen Papierformaten geschehen kann. +% \begin{macrocode} +\newcommand*\tud@mainlogo@wrn[1]{% + \ClassWarning{\tudcls@name}{% + The selected page layout means that the\MessageBreak% + logo of TUD extends beyond the printing area.\MessageBreak% + The inner margin is smaller than BCOR\MessageBreak% + (`BCOR=\the\ta@bcor', inner margin is #1)\MessageBreak% + Maybe you should decrease the current value\MessageBreak% + of DIV (`DIV=\the\ta@div')% + }% + \global\let\tud@mainlogo@wrn\@gobble% +} +% \end{macrocode} +% \end{macro}^^A \tud@mainlogo@wrn +% +% \iffalse +%</class&body> +%<*class&option> +% \fi +% +% \subsection{Befehle, Optionen und Umsetzung der Seitenstilvarianten} +% +% \begin{option}{ddc} +% \changes{v2.02}{2014/06/23}{automatische Logowahl}%^^A +% \begin{option}{ddchead} +% \changes{v2.02}{2014/06/23}{\DDC-Logo entweder in Kopf oder Fuß}%^^A +% \begin{option}{ddcfoot} +% \changes{v2.02}{2014/06/23}{\DDC-Logo entweder in Kopf oder Fuß}%^^A +% Diese Optionen dienen zur Auswahl des \DDC-Logos auf Seiten mit dem Stil +% \pgs{tudheadings}. Die Option \opt{ddchead} setzt das Logo dabei immer in den +% Kopf, wobei ein mit \cs{headlogo} definiertes Zweitlogo gegebenenfalls +% überschrieben wird. Die Option \opt{ddcfoot} setzt das Logo immer in den Fuß. +% Mit der Option \opt{ddc} wird das Logo nur in den Kopf gesetzt, wenn kein +% Zweitlogo angegeben ist. Ist dies jedoch der Fall, wird das Logo stattdessen +% im Fuß ausgegeben. +% \begin{macro}{\tud@ddc@switch} +% \changes{v2.02}{2014/06/23}{neu}%^^A +% Dieser Befehl enthält die gültigen Werte für die Optionen \opt{ddc}, +% \opt{ddchead} sowie \opt{ddcfoot}. +% \begin{macrocode} +\newcommand*\tud@ddc@switch{} +\edef\tud@ddc@switch{% + \TUD@numkey@bool,% + {color}{2},{colour}{2},% + {colorblack}{3},{colourblack}{3},% + {gray}{4},{grey}{4},{cdgray}{4},% + {black}{5},% + {blue}{6},{cddarkblue}{6},% + {white}{7}% +} +% \end{macrocode} +% \end{macro}^^A \tud@ddc@switch +% \begin{macro}{\tud@ddc@save} +% \changes{v2.02}{2014/07/08}{neu}%^^A +% \begin{macro}{\if@tud@ddc@save} +% \changes{v2.02}{2014/07/08}{neu}%^^A +% Diese beiden Befehle werden von den Optionen \opt{ddchead} und \opt{ddcfoot} +% benötigt, um nach dem Setzen der Option den vorherigen Wert vor dem möglichen +% Beenden einer Seite mit \cs{clearpage} wiederherstellen zu können. +% \begin{macrocode} +\newcommand*\tud@ddc@save{} +\newif\if@tud@ddc@save +\@tud@ddc@savetrue +% \end{macrocode} +% \end{macro}^^A \if@tud@ddc@save +% \end{macro}^^A \tud@ddc@save +% \begin{macro}{\tud@ddc} +% \changes{v2.02}{2014/06/23}{neu}%^^A +% \begin{macro}{\if@tud@ddc@autoset} +% \changes{v2.02}{2014/06/23}{neu}%^^A +% Die Option \opt{ddc}. +% \begin{macrocode} +\newcommand*\tud@ddc{0} +\newif\if@tud@ddc@autoset +\TUD@key{ddc}[true]{% +% \end{macrocode} +% Sollte diese innerhalb des Dokumentes aufgerufen werden, so wird für den Fall, +% dass ein \pgs{tudheadings}-Seitenstil gewählt ist, ein \cs{clearpage} +% ausgeführt, da eventuell eine Änderung des Layers sowie des Satzspeigels +% notwendig ist. Anschließend wird der Schalter \cs{if@tud@ddc@autoset} +% entsprechend des angegebenen Wertes gesetzt. +% \begin{macrocode} + \TUD@set@numkey{ddc}{tud@ddc}{\tud@ddc@switch}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \tud@ifinpslist{\@nameuse{currentpagestyle}}{\clearpage}{}% + \ifcase \tud@ddc\relax% + \@tud@ddc@autosetfalse% + \else% + \@tud@ddc@autosettrue% + \fi% +% \end{macrocode} +% Abschließend wird der aktuelle Seitenstil erneut aufgerufen, um bei einem +% geänderten Fuß den notwendigen Satzspiegel zu laden. Siehe dazu auch +% \cs{tud@beforepagestyle}. +% \begin{macrocode} + \if@atdocument\expandafter\pagestyle\expandafter{\currentpagestyle}\fi% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \if@tud@ddc@autoset +% \end{macro}^^A \tud@ddc +% \begin{macro}{\tud@ddc@head} +% Die Option \opt{ddchead} dient zum zwingenden Setzen des \DDC-Logos im Kopf +% der Seiten im Stil von \pgs{tudheadings}. +% \begin{macrocode} +\newcommand*\tud@ddc@head{0} +\TUD@key{ddchead}[true]{% +% \end{macrocode} +% Der aktuelle Zustand des Schlüssels wird gesichert. Anschließend wird der +% Schlüssel mit dem neuen Wert gesetzt. +% \begin{macrocode} + \if@tud@ddc@save\let\tud@ddc@save\tud@ddc@head\fi% + \TUD@set@numkey{ddchead}{tud@ddc@head}{\tud@ddc@switch}{#1}% +% \end{macrocode} +% Sollte ein gültiger Wert für den Schlüssel übergeben worden sein, wird dieser +% lokal auf den alten Wert gesetzt, um ggf. eine neue Seite zu erzeugen. +% \begin{macrocode} + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \if@tud@ddc@save% + \begingroup% + \let\tud@ddc@head\tud@ddc@save% + \tud@ifinpslist{\@nameuse{currentpagestyle}}{\clearpage}{}% + \endgroup% + \fi% +% \end{macrocode} +% Danach werden die sich ausschließenden Optionen deaktiviert, ohne eine +% Sicherung der Werte vorzunehmen. +% \begin{macrocode} + \ifcase \tud@ddc@head\relax\else% + \@tud@ddc@savefalse% + \TUDoptions{ddc=false}% + \TUDoptions{ddcfoot=false}% + \@tud@ddc@savetrue% + \fi% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@ddc@head +% \begin{macro}{\tud@ddc@foot} +% Die Option \opt{ddcfoot} dient zum zwingenden Setzen des \DDC-Logos im Fuß +% der Seiten im Stil von \pgs{tudheadings}. Das Vorgehen beim Umschalten des +% Schlüssels ist äquivalent zur Option \opt{ddchead} +% \begin{macrocode} +\newcommand*\tud@ddc@foot{0} +\TUD@key{ddcfoot}[true]{% + \if@tud@ddc@save\let\tud@ddc@save\tud@ddc@foot\fi% + \TUD@set@numkey{ddcfoot}{tud@ddc@foot}{\tud@ddc@switch}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \if@tud@ddc@save% + \begingroup% + \let\tud@ddc@foot\tud@ddc@save% + \tud@ifinpslist{\@nameuse{currentpagestyle}}{\clearpage}{}% + \endgroup% + \fi% + \ifcase \tud@ddc@foot\relax\else% + \@tud@ddc@savefalse% + \TUDoptions{ddc=false}% + \TUDoptions{ddchead=false}% + \@tud@ddc@savetrue% + \fi% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@ddc@foot +% \begin{macro}{\tud@ddc@check} +% \changes{v2.02}{2014/06/23}{neu}%^^A +% Dieses Hilfsmakro wird aufgerufen, wenn geprüft werden soll, welche +% Einstellungen für Kopf und Fuß des Seitenstiles \pgs{tudheadings} zum Tragen +% kommen sollen. Dabei wird insbesondere geprüft, ob die automatischen Auswahl +% des \DDC-Logos aktiviert ist. Die jeweils gültige Auswahl für Kopf bzw. Fuß +% wird in \cs{@tempa} bzw. \cs{@tempb} geschrieben und kann anschließend +% ausgewertet werden. +% \begin{macrocode} +\newcommand*\tud@ddc@check{% + \let\@tempa\tud@ddc@head% + \let\@tempb\tud@ddc@foot% + \if@tud@ddc@autoset% + \ifx\tud@@headlogo\@empty% + \let\@tempa\tud@ddc% + \let\@tempb\z@% + \else% + \let\@tempa\z@% + \let\@tempb\tud@ddc% + \fi% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@ddc@check +% \end{option}^^A ddcfoot +% \end{option}^^A ddchead +% \end{option}^^A ddc +% \begin{macro}{\tud@ifinpslist} +% \changes{v2.02}{2014/06/23}{neu}%^^A +% \begin{macro}{\tud@pslist} +% \changes{v2.02}{2014/06/23}{neu}%^^A +% Mit dem Befehl \cs{tud@ifinpslist} wird geprüft, ob der übergebene +% Seitenstil~-- was auch das Makro \cs{currentpagestyle} sein kann, welches +% durch das Paket \pkg{scrlayer-scrpage} definiert wird und den aktuellen +% Seitenstil beinhaltet~-- einem aus \cs{tud@pslist} entspricht. Ist dies der +% Fall, wird das zweite Argument ausgeführt, sonst das dritte. +% \begin{macrocode} +\newcommand*\tud@ifinpslist[3]{\xifinlist{#1}{\tud@pslist}{#2}{#3}} +\newcommand*\tud@pslist{} +\forcsvlist{\listadd\tud@pslist}{% + tudheadings,plain.tudheadings,empty.tudheadings% +} +% \end{macrocode} +% \end{macro}^^A \tud@pslist +% \end{macro}^^A \tud@ifinpslist +% \begin{option}{widehead} +% \begin{macro}{\if@tud@widehead} +% \begin{macro}{\if@tud@widehead@locked} +% Der Schalter dient zur Steuerung der Breite des Querbalkens im Kopf der +% \env{tudpage}-Seite. Entweder der Querbalken liegt im Satzspiegel oder +% aber über die komplette Papierbreite. +% \begin{macrocode} +\newif\if@tud@widehead +\TUD@key@lock{widehead}[true]{% + \TUD@set@ifkey@lock{widehead}{@tud@widehead}{#1}% +} +% \end{macrocode} +% \end{macro}^^A \if@tud@widehead@locked +% \end{macro}^^A \if@tud@widehead +% \end{option}^^A widehead +% +% \iffalse +%</class&option> +%<*class&body> +% \fi +% +% \begin{macro}{\tud@mainlogo} +% \changes{v2.02}{2014/08/04}{Dateinamen der TUD-Logos geändert}%^^A +% \begin{macro}{\tud@@mainlogo} +% Mit diesem Makro wird das Logo der TU~Dresden eingebunden. Bei der Verwendung +% von pdf\LaTeX{} kann wird Farbe des Logos an die Kopffarbe angepasst. Wird +% der klassische Weg über dvi gewählt, so muss abhängig von der gewählten +% Kopffarbe das entsprechend gefärbte Logo eingebunden werden. +% +% \begin{macrocode} +\newcommand*\tud@@mainlogo{} +\newcommand*\tud@mainlogo{% +% \end{macrocode} +% Es soll sichergestellt werden, dass das bei der Verwendung von \pkg{typearea} +% über den Satzspiegel in den Seitenrand hinausragende TUD-Logo nicht außerhalb +% des Druckrandes liegt. Dies kann beispielsweise bei zweiseitigem Satz +% und/oder einem zu großen \opt{DIV}-Wertes passieren. Es wird in diesem Fall +% eine Warnung ausgegeben, damit das Problem durch den Anwender behoben werden +% kann. +% \begin{macrocode} + \setlength{\@tempdima}{% + \dimexpr\oddsidemargin+1in+\tud@dim@logox-\tud@dim@left\relax% + }% + \ifdim\@tempdima<\ta@bcor\relax\tud@mainlogo@wrn{\the\@tempdima}\fi% +% \end{macrocode} +% Es wird das Standardlogo festgelegt und dieses ggf. für eine andere Kopffarbe +% geändert. +% \begin{macrocode} + \def\tud@@mainlogo{TUD-black}% + \ifstr{\tud@head@color}{HKS41}{\def\tud@@mainlogo{TUD-blue}}{}% + \ifstr{\tud@head@color}{cddarkblue}{\def\tud@@mainlogo{TUD-blue}}{}% + \ifstr{\tud@head@color}{white}{\def\tud@@mainlogo{TUD-white}}{}% + \global\let\tud@dim@line\tud@dim@thinline% + \ifstr{\tud@head@color}{white}{\global\let\tud@dim@line\tud@dim@heavyline}{}% + \color{\tud@head@color}% + \includegraphics[width=\tud@dim@logowidth]{\tud@@mainlogo}% +} +% \end{macrocode} +% \end{macro}^^A \tud@@mainlogo +% \end{macro}^^A \tud@mainlogo +% \begin{macro}{\headlogo} +% \changes{v2.02}{2014/06/23}{Anpassung an automatische Wahl des \DDC-Logos}%^^A +% \begin{macro}{\tud@headlogo} +% \changes{v2.02}{2014/06/23}{neu, \cs{tud@head@logo} umbenannt}%^^A +% \changes{v2.02}{2014/06/23}{von \cs{tud@ddc@sethead} wurde die Auswahl des +% \DDC-Logos übernommen und erweitert}%^^A +% \begin{macro}{\tud@@headlogo} +% \changes{v2.02}{2014/06/23}{neu, \cs{tud@head@@logo} umbenannt}%^^A +% \begin{macro}{\tud@@@headlogo} +% \changes{v2.02}{2014/06/23}{Umbenennen des Befehls \cs{tud@head@@@logo}}%^^A +% \begin{macro}{\tud@headlogo@wrn} +% \changes{v2.02}{2014/06/23}{neu}%^^A +% Diese Befehle dienen zum Einbinden eines Zweitlogos im Kopf bündig zum +% rechten Seitenrand. Bei der Angabe des Logos mit +% \cs{headlogo}\oarg{Optionsliste}\marg{Dateiname} wird der Dateiname in +% \cs{tud@@headlogo} und das optionale Argument in \cs{tud@@@headlogo} +% gespeichert, damit diese später über \cs{tud@headlogo} an den Befehl +% \cs{includegraphics} weitergereicht werden können. +% \begin{macrocode} +\newcommand*\headlogo[2][]{% + \tud@ifinpslist{\@nameuse{currentpagestyle}}{\clearpage}{}% + \def\tud@@headlogo{#2}% + \def\tud@@@headlogo{#1}% + \if@atdocument\expandafter\pagestyle\expandafter{\currentpagestyle}\fi% +} +\newcommand*\tud@@headlogo{} +\newcommand*\tud@@@headlogo{} +\newcommand*\tud@headlogo{% + \tud@ddc@check% + \ifx\tud@@headlogo\@empty\else% + \ifnum\@tempa>\z@\relax\tud@headlogo@wrn\fi% + \fi% + \ifcase \@tempa\relax\or% + \def\tud@@headlogo{DDC-24}% + \ifstr{\tud@head@color}{HKS41}{\def\tud@@headlogo{DDC-27}}{}% + \ifstr{\tud@head@color}{cddarkblue}{\def\tud@@headlogo{DDC-27}}{}% + \ifstr{\tud@head@color}{white}{\def\tud@@headlogo{DDC-30}}{}% + \or% + \def\tud@@headlogo{DDC-03}% + \or% + \def\tud@@headlogo{DDC-09}% + \or% + \def\tud@@headlogo{DDC-21}% + \or% + \def\tud@@headlogo{DDC-24}% + \or% + \def\tud@@headlogo{DDC-27}% + \or% + \def\tud@@headlogo{DDC-30}% + \fi% + \ifx\tud@@headlogo\@empty\else% + \settoheight{\tud@dim@logoheight}{\tud@mainlogo}% + \pretocmd{\tud@@@headlogo}{height=\tud@dim@logoheight,}% + {}{\tud@patch@wrn{tud@@@headlogo}}% + \expandafter\includegraphics\expandafter[\tud@@@headlogo]{\tud@@headlogo}% + \fi% +} +\newcommand*\tud@headlogo@wrn{% + \ClassWarning{\tudcls@name}{% + The secondary logo given with `\string\headlogo' is\MessageBreak% + overwritten with DDC logo. Maybe you should use\MessageBreak% + `ddcfoot' or better `ddc' instead of `ddchead'% + }% + \global\let\tud@headlogo@wrn\relax% +} +% \end{macrocode} +% \end{macro}^^A \tud@headlogo@wrn +% \end{macro}^^A \tud@@@headlogo +% \end{macro}^^A \tud@@headlogo +% \end{macro}^^A \tud@headlogo +% \end{macro}^^A \headlogo +% \begin{macro}{\tud@ddc@sethead} +% \changes{v2.02}{2014/06/23}{entfernt}%^^A +% Dieser Befehl wurde mit der \TUDScript-Version~v2.02 entfernt. +% \end{macro}^^A \tud@ddc@sethead +% \begin{macro}{\tud@footlogo} +% \changes{v2.02}{2014/06/23}{neu}%^^A +% \begin{macro}{\tud@@footlogo} +% \changes{v2.02}{2014/06/23}{neu, \cs{tud@foot@logo} umbenannt}%^^A +% Diese Befehle dienen zum Einbinden des \DDC-Logos im Fuß der Seiten im Stil +% \pgs{tudheadings}. +% \begin{macrocode} +\newcommand*\tud@@footlogo{} +\newcommand*\tud@footlogo{% + \tud@ddc@check% + \ifcase \@tempb\relax\or% + \def\tud@@footlogo{DDC-22}% + \ifstr{\tud@head@color}{HKS41}{\def\tud@@footlogo{DDC-25}}{}% + \ifstr{\tud@head@color}{cddarkblue}{\def\tud@@footlogo{DDC-25}}{}% + \ifstr{\tud@head@color}{white}{\def\tud@@footlogo{DDC-28}}{}% + \or% + \def\tud@@footlogo{DDC-01}% + \or% + \def\tud@@footlogo{DDC-07}% + \or% + \def\tud@@footlogo{DDC-19}% + \or% + \def\tud@@footlogo{DDC-22}% + \or% + \def\tud@@footlogo{DDC-25}% + \or% + \def\tud@@footlogo{DDC-28}% + \fi% + \ifx\tud@@footlogo\@empty\else% + \includegraphics[height=\tud@dim@ddcfoot]{\tud@@footlogo}% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@@footlogo +% \end{macro}^^A \tud@footlogo +% \begin{macro}{\tud@ddc@setfoot} +% \changes{v2.02}{2014/06/23}{entfernt}%^^A +% Dieser Befehl wurde mit der \TUDScript-Version~v2.02 entfernt. +% \end{macro}^^A \tud@ddc@setfoot +% +% \iffalse +%</class&body> +%<*class&option> +% \fi +% +% \begin{option}{cdfoot} +% \begin{macro}{\if@tud@cdfoot} +% \begin{macro}{\tud@ps@store} +% \changes{v2.02}{2014/06/23}{neu}%^^A +% \begin{macro}{\tud@@ps@store} +% \changes{v2.02}{2014/06/23}{neu}%^^A +% \begin{macro}{\tud@ps@restore} +% \changes{v2.02}{2014/06/23}{neu}%^^A +% \begin{macro}{\tud@@ps@restore} +% \changes{v2.02}{2014/06/23}{neu}%^^A +% Dieser Seitenstil mit dem Kolumnentitel im Fuß wurde bereits für die alte +% \cls{tudbook}-Klasse bereitgestellt und soll auch hier optional angeboten +% werden. +% \begin{macrocode} +\newif\if@tud@cdfoot +\TUD@key{cdfoot}[true]{% + \TUD@set@ifkey{cdfoot}{@tud@cdfoot}{#1}% +% \end{macrocode} +% Die ursprünglichen Kopf- und Fußzeilen werden mit \cs{tud@ps@store} +% gesichert, um gegebenenfalls zurückschalten zu können. Anschließend werden +% diese mit dem neuen Stil überschrieben. +% \begin{macrocode} + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \if@atdocument% + \if@tud@cdfoot% + \tud@ps@store{headings}% + \tud@ps@store{plain}% + \tud@font@koma@set{pageheadfoot}{\upshape}% + \clearpairofpagestyles% + \ofoot[\pagemark]{% + \if@twoside\ifodd\value{page}\else\pagemark\quad\fi\fi% + {\footnotesize\headmark}% + \if@twoside\ifodd\value{page}\quad\pagemark\fi\else\quad\pagemark\fi% + }% +% \end{macrocode} +% Die ursprünglichen Kopf- und Fußzeilen werden mit \cs{tud@ps@restore} +% wiederhergestellt. +% \begin{macrocode} + \else% + \tud@ps@restore{headings}% + \tud@ps@restore{plain}% + \tud@font@koma@unset{pageheadfoot}% + \fi% + \fi% + \fi% +} +% \end{macrocode} +% Die nächsten beiden Befehle dienen zum Sichern der Kopf- und Fußzeilen\dots +% \begin{macrocode} +\newcommand*\tud@ps@store[1]{% + \tud@@ps@store{#1}{odd}{left}{head}{}% + \tud@@ps@store{#1}{odd}{right}{head}{}% + \tud@@ps@store{#1}{odd}{middle}{head}{}% + \tud@@ps@store{#1}{even}{left}{head}{}% + \tud@@ps@store{#1}{even}{right}{head}{}% + \tud@@ps@store{#1}{even}{middle}{head}{}% + \tud@@ps@store{#1}{odd}{left}{foot}{}% + \tud@@ps@store{#1}{odd}{right}{foot}{}% + \tud@@ps@store{#1}{odd}{middle}{foot}{}% + \tud@@ps@store{#1}{even}{left}{foot}{}% + \tud@@ps@store{#1}{even}{right}{foot}{}% + \tud@@ps@store{#1}{even}{middle}{foot}{}% +} +% \end{macrocode} +% \dots, wobei hierfür auf die internen Befehle von \pkg{scrlayer-scrpage} +% zurückgegriffen werden muss. +% \begin{macrocode} +\newcommand*\tud@@ps@store[4]{% + \ifcsdef{@@tud@ps@#1@#2@#3@#4}{}{% + \csletcs{@@tud@ps@#1@#2@#3@#4}{sls@ps@\@nameuse{sls@current#1}@#2@#3@#4}% + }% +} +\newcommand*\tud@ps@restore[1]{% + \tud@@ps@restore{#1}{odd}{left}{head}{}% + \tud@@ps@restore{#1}{odd}{right}{head}{}% + \tud@@ps@restore{#1}{odd}{middle}{head}{}% + \tud@@ps@restore{#1}{even}{left}{head}{}% + \tud@@ps@restore{#1}{even}{right}{head}{}% + \tud@@ps@restore{#1}{even}{middle}{head}{}% + \tud@@ps@restore{#1}{odd}{left}{foot}{}% + \tud@@ps@restore{#1}{odd}{right}{foot}{}% + \tud@@ps@restore{#1}{odd}{middle}{foot}{}% + \tud@@ps@restore{#1}{even}{left}{foot}{}% + \tud@@ps@restore{#1}{even}{right}{foot}{}% + \tud@@ps@restore{#1}{even}{middle}{foot}{}% +} +\newcommand*\tud@@ps@restore[4]{% + \ifcsdef{@@tud@ps@#1@#2@#3@#4}{% + \csletcs{sls@ps@\@nameuse{sls@current#1}@#2@#3@#4}{@@tud@ps@#1@#2@#3@#4}% + \csundef{@@tud@ps@#1@#2@#3@#4}% + }% +} +% \end{macrocode} +% Damit die Einstellungen aus der Präambel übernommen werden, wird die Option +% ggf. zu Beginn mit \cs{AtBeginDocument} aufgerufen. +% \begin{macrocode} +\AtBeginDocument{\if@tud@cdfoot\TUDoptions{cdfoot=true}\fi} +% \end{macrocode} +% \end{macro}^^A \tud@@ps@restore +% \end{macro}^^A \tud@ps@restore +% \end{macro}^^A \tud@@ps@store +% \end{macro}^^A \tud@ps@store +% \end{macro}^^A \if@tud@cdfoot +% \end{option}^^A cdfoot +% \begin{macro}{\tud@ps@headings} +% \changes{v2.02}{2014/06/23}{entfernt}%^^A +% \begin{macro}{\tud@ps@myheadings} +% \changes{v2.02}{2014/06/23}{entfernt}%^^A +% \begin{macro}{\tud@ps@plain} +% \changes{v2.02}{2014/06/23}{entfernt}%^^A +% Diese Befehle wurden bei der Umstellung auf das Paket~\pkg{scrlayer-scrpage} +% mit der \TUDScript-Version~v2.02 allesamt entfernt. Die Funktionalität wird +% seitdem durch die \pgs{tudheadings}-Seitenstile bereitgestellt. +% \end{macro}^^A \tud@ps@plain +% \end{macro}^^A \tud@ps@myheadings +% \end{macro}^^A \tud@ps@headings +% \begin{option}{geometry} +% \begin{macro}{\tud@geometry} +% \begin{macro}{\if@tud@geometry@locked} +% Für das \CD sind standardmäßig feste Seitenränder vorgegeben. Diese sind +% jedoch leider nur aus gestalterischen Motiven und ohne die Beachtung +% typographischer Belange gewählt und festgelegt worden. Beispielweise ist ein +% doppelseitiger Satz einer Abschlussarbeit im \CD nur mit einem grauenhaften +% Satzspiegel möglich. Um dem Anwender einen gewissen Spielraum zu geben, wird +% alternativ zum asymmetrischen (\opt{geomery=on}) ein symmetrischer +% Satzspiegel bereitgestellt (\opt{geomery=normal}), welcher bei einseitigem +% Satz zentriert ist und bei zweiseitigem Satz den inneren Rand kleiner setzt +% als den äußeren. Des Weiteren kann die Satzspiegelberechnung auch direkt +% durch \pkg{typearea} aus dem \KOMAScript"=Paket erfolgen +% (\opt{geomery=no}). Mit \cs{tud@geometry@process} werden alle getroffenen +% Satzspiegeloptionen umgesetzt und nachfolgend definiert. +% \begin{macrocode} +\newcommand*\tud@geometry{0} +\TUD@key@lock{geometry}[true]{% + \TUD@set@numkey@lock{geometry}{tud@geometry}{% + \TUD@numkey@bool,% + {typearea}{0},% + {tud}{1},{asymmetric}{1},{cd}{1},% + {symmetric}{2},{centred}{2},{centered}{2},% + {twoside}{3},{balanced}{3}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \if@atdocument\recalctypearea\fi% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \if@tud@geometry@locked +% \end{macro}^^A \tud@geometry +% \end{option}^^A geometry +% +% \iffalse +%</class&option> +%<*class&body> +% \fi +% +% \begin{length}{\tud@ta@textheight} +% \begin{length}{\tud@ta@topmargin} +% \begin{length}{\tud@ta@headheight} +% \begin{length}{\tud@ta@headsep} +% \begin{length}{\tud@ta@footskip} +% Diese Längen werden benötigt, um einen mit \pkg{typearea} berechneten +% Satzspiegel an \pkg{geometry} weiterzureichen und die unterschiedlichen, vom +% Satzspiegel abhängigen Seitenlayouts zu erstelen. +% \begin{macrocode} +\newlength{\tud@ta@textheight} +\newlength{\tud@ta@topmargin} +\newlength{\tud@ta@headheight} +\newlength{\tud@ta@headsep} +\newlength{\tud@ta@footskip} +% \end{macrocode} +% \end{length}^^A \tud@ta@footskip +% \end{length}^^A \tud@ta@headsep +% \end{length}^^A \tud@ta@headheight +% \end{length}^^A \tud@ta@topmargin +% \end{length}^^A \tud@ta@textheight +% \begin{length}{\tud@ta@headdiff} +% \begin{length}{\tud@ta@footdiff} +% \changes{v2.02}{2014/06/23}{entfernt}%^^A +% Eine Länge für den Ausgleich zwischen normalem und benötigtem Satzspiegel für +% das spezielle Layout des \CDs. Die Differenz zwischen den unterschiedlichen +% Kopfhöhen der Satzspiegelvarianten wird bei der Ausführung von +% \cs{tud@geometry@process} berechnet und in \cs{tud@ta@headdiff} gespeichert. +% Dabei muss unterschieden werden, ober der Satzspiegel genutzt wird, der durch +% das \CD vorgegeben ist oder der durch \pkg{typearea} berechnete. Die Länge +% \cs{tud@ta@footdiff} wurde mit der \TUDScript-Version~v2.02 entfernt. +% \begin{macrocode} +\newlength{\tud@ta@headdiff} +% \end{macrocode} +% \end{length}^^A \tud@ta@footdiff +% \end{length}^^A \tud@ta@headdiff +% \begin{macro}{\tud@geometry@restore} +% \changes{v2.02}{2014/06/27}{neu}%^^A +% Der Befehl \cs{AfterCalculatingTypearea} wird durch das Paket \pkg{typearea} +% bereitgestellt. Die durch \pkg{typearea} berechneten Längenwerte für den +% Satzspiegel werden zur Weiterverarbeitung gesichert. Für die Erstellung des +% Satzspiegels wird das Paket \pkg{geometry} verwendet. Bei der entsprechenden +% Option (\opt{geometry=no}) wird jedoch der von \pkg{typearea} berechnete +% Satzspiegel an \pkg{geometry} weitergereicht. Somit wird es möglich, +% unabhängig vom genutzten Paket\footnote{\pkg{typearea} oder \pkg{geometry}} +% zur Festlegung des Satzspiegels, diesen innerhalb des Dokumentes zu ändern. +% Damit auch Änderungen an der Papiergröße möglich sind, muss ein einzelnes +% Makro (\cs{Gm@restore@org}) aus \pkg{geometry} temporär deaktiviert werden. +% \begin{macrocode} +\newcommand*\tud@geometry@restore{} +\AfterCalculatingTypearea{% + \setlength{\tud@ta@textheight}{\textheight}% + \setlength{\tud@ta@topmargin}{\topmargin}% + \setlength{\tud@ta@headheight}{\headheight}% + \setlength{\tud@ta@headsep}{\headsep}% + \setlength{\tud@ta@footskip}{\footskip}% + \let\tud@geometry@restore\Gm@restore@org% + \if@atdocument% + \let\Gm@restore@org\relax% + \tud@geometry@process% +% \end{macrocode} +% Damit Änderungen am Satzspiegel im Dokument sicher übernommen werden, wird +% das Setzen des Satzspiegels forciert. Dafür wird \cs{tud@currentgeometry} +% zurückgesetzt und anschließend der aktuelle Seitenstil erneut geladen, um das +% erneute und korrekte Ausführen von \cs{tud@beforepagestyle} zu erzwingen. +% \begin{macrocode} + \gdef\tud@currentgeometry{}% + \expandafter\pagestyle\expandafter{\currentpagestyle}% + \fi% + \let\Gm@restore@org\tud@geometry@restore% +} +% \end{macrocode} +% \end{macro}^^A \tud@geometry@restore +% \begin{macro}{\tud@geometry@hmargin} +% \begin{macro}{\tud@geometry@vmargin} +% \begin{macro}{\tud@geometry@pmargin} +% \begin{macro}{\tud@geometry@dmargin} +% Dies sind Hilfsmakros zur Definition unterschiedicher Seitenlayouts +% (horizontale und vertikale Ränder). Es handelt sich dabei um die Definition +% der horizontalen und vertikalen Seitenränder sowie die angepassten vertikalen +% Einstellungen für die Seitenstilvarianten mit TUD-Kopf und/oder \DDC-Fuß. +% Gesetzt werden diese in Abhängigkeit von der Option \opt{geometry} im +% Makro \cs{tud@geometry@process} bzw. \cs{tud@geometry@@process}. +% \begin{macrocode} +\newcommand*\tud@geometry@hmargin{} +\newcommand*\tud@geometry@vmargin{} +\newcommand*\tud@geometry@pmargin{} +\newcommand*\tud@geometry@dmargin{} +% \end{macrocode} +% \end{macro}^^A \tud@geometry@dmargin +% \end{macro}^^A \tud@geometry@pmargin +% \end{macro}^^A \tud@geometry@vmargin +% \end{macro}^^A \tud@geometry@hmargin +% \changes{v2.02}{2014/06/29}{Verzögertes Laden von \pkg{geometry}}%^^A +% Das Paket \pkg{geometry} erlaubt eine genaue Vorgabe des Satzspiegels und +% der Seitenränder, wie es vom \CD der TU~Dresden verlangt wird. Damit dieses +% alle Satzspiegeleinstellungen korrekt vornimmt und auch alle Klassenoptionen +% korrekt verarbeitet, wird das Laden mit \cs{AtEndPreamble} bis ans Ende der +% Präambel verzögert und vorher der Satzspiegel neu berechnet. Anschließend +% erstellt \cs{tud@geometry@process} alle benötigten Satzspiegel. Durch das +% Setzen des Seitenstils wird der richtige Satzspiegel ausgewählt. Dies +% geschieht \emph{nicht}, wenn die \cls{standalone}-Klasse mit der Option +% \opt{crop} geladen wurde, um die Seitenränder nicht zu ändern. +% \begin{macrocode} +\AtEndPreamble{% + \tud@ifsacrop{}{% + \recalctypearea% + \RequirePackage{geometry}[2010/09/12]% + \tud@geometry@process% + \expandafter\pagestyle\expandafter{\currentpagestyle}% + }% +} +% \end{macrocode} +% \begin{macro}{\tud@geometry@process} +% \changes{v2.02}{2014/06/23}{diverse Anpassungen an \pkg{scrlayer-scrpage}}%^^A +% \begin{macro}{\tud@geometry@@process} +% Das Makro \cs{tud@geometry@process} setzt die Option für den gewünschten +% Satzspiegel um, sowohl für die Seitenränder als auch zur Einberechnung der +% Kopf- und/oder Fußzeile. Um mehrere Satzspiegel verwenden zu können~-- was +% für die unterschiedlichen Höhen für Kopf- und Fußzeile nötig ist~-- wird das +% Paket \pkg{geometry} verwendet. Soll \pkg{typearea} zur Satzspiegelerstellung +% genutzt werden, so werden die damit berechneten Werte an \pkg{geometry} +% weitergereicht. +% Es werden drei Layouts erstellt: normaler Satzspiegel, nur TUD-Kopf sowie +% TUD-Kopf und "~Fuß und mit \cs{savegeometry}\marg{Stil} gesichert. Damit kann +% innerhalb des Dokumentes mit dem Befehl \cs{loadgeometry}\marg{Stil} oberer +% sowie ggf. untere Seitenrand geändert werden. +% \begin{macrocode} +\newcommand*\tud@geometry@process{% +% \end{macrocode} +% Die Maßvorgaben werden entsprechend der Seitengröße gesetzt. +% \begin{macrocode} + \tud@geometry@set% +% \end{macrocode} +% Für den Fall, dass \pkg{typearea} die Satzspiegelberechnung übernimmt, werden +% die Ergebnisse aus der Berechnung direkt an \pkg{geometry} weitergereicht. +% Dazu werden die berechneten Werte in die entsprechenden Hilfsmakros +% für die Erstellung der \pkg{geometry}-Satzspiegel übergeben. +% \begin{macrocode} + \ifcase \tud@geometry\relax% + \def\tud@geometry@hmargin{% + left=\dimexpr\oddsidemargin+1in\relax,% + width=\textwidth,% + }% + \def\tud@geometry@vmargin{% + top={% + \dimexpr\tud@ta@topmargin+\tud@ta@headheight+\tud@ta@headsep+1in\relax% + },% + headheight=\tud@ta@headheight,% + headsep=\tud@ta@headsep,% + textheight=\tud@ta@textheight,% + footskip=\tud@ta@footskip,% + }% + \def\tud@geometry@pmargin{% + top={% + \dimexpr\tud@dim@headheight+\tud@dim@barheight+\tud@dim@headsep\relax% + },% + headheight=\dimexpr\tud@dim@headheight+\tud@dim@barheight\relax,% + headsep=\tud@dim@headsep,% + textheight=\dimexpr\tud@ta@textheight-\tud@ta@headdiff\relax,% + footskip=\tud@ta@footskip,% + }% + \def\tud@geometry@dmargin{% + textheight={% + \dimexpr\tud@ta@textheight-\tud@ta@headdiff-\tud@dim@ddcdiff\relax% + },% + footskip=\dimexpr\tud@ta@footskip+\tud@dim@ddcdiff\relax,% + }% +% \end{macrocode} +% Es wird die Differenz der Höhen zwischen TUD-Kopf und Standardkopfzeile +% für den \pkg{typearea}-Satzspiegel berechnet. +% \begin{macrocode} + \setlength{\tud@ta@headdiff}{\dimexpr% + \tud@dim@headheight+\tud@dim@barheight+\tud@dim@headsep% + -\tud@ta@topmargin-\tud@ta@headheight-\tud@ta@headsep-1in\relax% + }% + \setlength{\tud@dim@ddcdiff}{\dimexpr% + \tud@dim@ddcfoot-\tud@ta@footskip+\tud@dim@footskip\relax% + }% +% \end{macrocode} +% Sollte der \pkg{typearea}-Satzspiegel noch unterhalb des TUD-Kopfes liegen, +% wird der Abstand zum Kopf vergrößert. +% \begin{macrocode} + \ifdim\tud@ta@headdiff<\z@\relax% + \addtolength{\tud@dim@headsep}{-\tud@ta@headdiff}% + \fi% +% \end{macrocode} +% Hier erfolgt die Definition der Hilfsmakros für das CD-konforme asymmetrische +% bzw. an das \CD angelehnte Layout für einseitigen und zweiseitigen Satz. +% Zuerst werden die verschiedenen unterschiedlichen horizontalen Ränder für die +% unterschiedlichen Optionen definiert. Danach kommt der Gleichanteil. +% \begin{macrocode} + \else% + \ifcase \tud@geometry\or% + \def\tud@geometry@hmargin{% + left=\tud@dim@left,% + textwidth=\dimexpr\paperwidth-\tud@dim@both-\ta@bcor\relax,% + bindingoffset=\ta@bcor,% + \if@twoside asymmetric,\fi% + }% +% \end{macrocode} +% Die zweite Variante ist eigentlich nicht konform mit dem \CD. Sie ist sowohl +% im einseitigen als auch im zweiseitgigen Satz symmetrisch. +% \begin{macrocode} + \or% + \def\tud@geometry@hmargin{% + left=.5\tud@dim@both,% + textwidth=\dimexpr\paperwidth-\tud@dim@both-\ta@bcor\relax,% + bindingoffset=\ta@bcor,% + }% +% \end{macrocode} +% Eigentlich ist auch die dritte Variante nach dem \CD nicht zulässig. Sie ist +% im einseitigen Satz symmetrisch, im zweiseitgigen Satz wird die innere Seite +% schmaler gesetzt als die äußere, wobei hier auf das in den Seitenrand ragende +% TUD-Logo geachtet werden muss. +% \begin{macrocode} + \or% + \def\tud@geometry@hmargin{% + \if@twoside% + left=.4\tud@dim@both,% + twoside,% + \else% + left=.5\tud@dim@both,% + \fi% + textwidth=\dimexpr\paperwidth-\tud@dim@both-\ta@bcor\relax,% + bindingoffset=\ta@bcor,% + }% + \fi% +% \end{macrocode} +% Für alle drei Varianten der vertikale Gleichanteil. +% \begin{macrocode} + \def\tud@geometry@vmargin{% + top=\tud@dim@top,% + headheight=\tud@ta@headheight,% + headsep=\tud@dim@headsep,% + bottom=\tud@dim@bottom,% + footskip=\tud@dim@footskip,% + \tud@geometry@hincl,% + \tud@geometry@fincl,% + }% + \def\tud@geometry@pmargin{% + top={% + \dimexpr\tud@dim@headheight+\tud@dim@barheight+\tud@dim@headsep\relax% + },% + headheight=\dimexpr\tud@dim@headheight+\tud@dim@barheight\relax,% + headsep=\tud@dim@headsep,% + bottom=\tud@dim@bottom,% + footskip=\tud@dim@footskip,% + }% +% \end{macrocode} +% Wird die Fußzeile zum Satzspiegel gerechnet, ist für Seiten mit \DDC-Fuß +% etwas Handarbeit notwendig, damit dieser nicht allzu weit nach oben ragt. +% \begin{macrocode} + \def\tud@geometry@dmargin{% + \if@fincl% + bottom=\dimexpr% + \tud@dim@bottom+\tud@dim@ddcfoot+\tud@dim@footskip\relax,% + \else% + bottom=\dimexpr\tud@dim@bottom+\tud@dim@ddcfoot\relax,% + \fi% + footskip=\dimexpr\tud@dim@footskip+\tud@dim@ddcfoot\relax,% + }% +% \end{macrocode} +% Es wird die Differenz der Höhen zwischen TUD-Kopf und Standardkopfzeile +% für den Satzspiegel des \CDs berechnet. +% \begin{macrocode} + \setlength{\tud@ta@headdiff}{% + \dimexpr\tud@dim@headheight+\tud@dim@barheight% + +\tud@dim@headsep-\tud@dim@top\relax% + }% + \setlength{\tud@dim@ddcdiff}{\dimexpr% + \tud@dim@ddcfoot+2\tud@dim@footskip-\tud@dim@bottom\relax% + }% + \fi% +% \end{macrocode} +% Es wird die Differenz der Höhen zwischen TUD-Kopf und Standardkopfzeile +% für den Satzspiegel des \CDs berechnet. Außerdem wird die standardmäßige +% vertikale Verschiebung der Überschriften festgelegt. +% \begin{macrocode} + \ifdim\tud@ta@headdiff<\z@\relax\setlength{\tud@ta@headdiff}{\z@}\fi% + \global\tud@ta@headdiff=\tud@ta@headdiff% + \ifdim\tud@dim@ddcdiff<\z@\relax\setlength{\tud@dim@ddcdiff}{\z@}\fi% + \global\tud@dim@ddcdiff=\tud@dim@ddcdiff% + \setlength{\tud@dim@headingsvskip}{.6\tud@dim@headheight}% + \global\tud@dim@headingsvskip=\tud@dim@headingsvskip% +% \end{macrocode} +% Es wird \cs{tud@geometry@@process} aufgerufen, was die zuvor definierten +% Hilfsmakros nutzt, um alle benötigten Seitenlayouts optionsabhängig zu +% erstellen. +% \begin{macrocode} + \tud@geometry@@process% +} +% \end{macrocode} +% Der Befehl \cs{tud@geometry@@process} setzt mit den zuvor definierten +% Hilfsmakros die \pkg{geometry}"=Optionen für sowohl die seitlichen als auch +% die oberen sowie unteren Seitenränder und inkludiert ggf. Kopf- und Fußzeile +% in den Satzspiegel. Die unterschiedlichen Layouts sind dabei \opt{tudddc} für +% TUD-Kopf und \DDC-Fuß, \opt{tudpage} für den alleinigen TUD-Kopf sowie +% \opt{tudarea} für den normalen bzw. mit \pkg{typearea} berechneten +% Satzspiegel. +% \begin{macrocode} +\newcommand*\tud@geometry@@process{% +% \end{macrocode} +% Als erstes wird der Satzspiegel für TUD-Kopf und \DDC-Fuß erstellt. Das +% Einbeziehen der Fußzeile in den Satzspiegel erfolgt ggf. manuell bei der +% Definition von \cs{tud@geometry@dmargin}. +% \begin{macrocode} + \edef\@tempa{% + \tud@geometry@hmargin,% + \tud@geometry@pmargin,% + \tud@geometry@dmargin,% + ignorehead,ignorefoot,% + }% + \expandafter\newgeometry\expandafter{\@tempa}% + \savegeometry{tudareaddc}% +% \end{macrocode} +% Danach folgt der Seitenstil, welcher zwar den TUD-Kopf aber lediglich die +% Standardfußzeile hat. +% \begin{macrocode} + \edef\@tempa{% + \tud@geometry@hmargin,% + \tud@geometry@pmargin,% + ignorehead,% + \tud@geometry@fincl% + }% + \expandafter\newgeometry\expandafter{\@tempa}% + \savegeometry{tudarea}% +% \end{macrocode} +% Der Standardsatzspiegel wird erstellt. +% \begin{macrocode} + \edef\@tempa{% + \tud@geometry@hmargin,% + \tud@geometry@vmargin,% + }% + \expandafter\newgeometry\expandafter{\@tempa}% + \savegeometry{typearea}% +} +% \end{macrocode} +% \end{macro}^^A \tud@geometry@@process +% \end{macro}^^A \tud@geometry@process +% \begin{macro}{\tud@geometry@hincl} +% \changes{v2.02}{2014/06/23}{diverse Anpassungen an \pkg{scrlayer-scrpage}}%^^A +% \begin{macro}{\tud@geometry@fincl} +% Diese beiden Hilfsmakro werten die Optionen für das Einbeziehen von Kopf- und +% Fußzeile aus. +% \begin{macrocode} +\newcommand*\tud@geometry@hincl{% + \if@hincl% + includehead,% + \else% + ignorehead,% + \fi% +} +\newcommand*\tud@geometry@fincl{% + \if@fincl% + includefoot,% + \else% + ignorefoot,% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@geometry@fincl +% \end{macro}^^A \tud@geometry@hincl +% \begin{environment}{tudpage} +% \changes{v2.02}{2014/06/23}{an Paket \pkg{scrlayer-scrpage} angepasst}%^^A +% \begin{macro}{\tud@ps} +% \begin{macro}{\tud@ps@select} +% \changes{v2.02}{2014/07/19}{neu}%^^A +% \begin{macro}{\tud@currentpagestyle} +% \begin{macro}{\tud@currentpagestyle@set} +% \changes{v2.02}{2014/07/18}{neu}%^^A +% \begin{macro}{\tud@currentpagestyle@reset} +% \changes{v2.02}{2014/07/18}{neu}%^^A +% Durch den hohen TUD-Kopf muss bei der Verwendung dessens das Seitenlayout +% temporär umgeschaltet werden, um die Höhe des Satzspiegels zu verringern. +% Dies geschieht innerhalb dieser Umgebung reversibel mit \cs{pagestyle}. +% Dabei wird mit \cs{loadgeometry} ein Seitenumbruch erzwungen und der +% benötigte Satzspiegel geladen. +% +% Die Befehle \cs{tud@currentpagestyle@set} und +% \cs{tud@currentpagestyle@reset} sind für die Sicherung und Wiederherstellung +% des vor der Umgebung geladenen Seitenstils verantwortlich. +% +% Zu Beginn der Umgebung werden die weiter unten beschriebenen Optionen für +% diese Umgebung mit \cs{TUD@parameter@set} ausgeführt. Nach dem Beenden der +% Umgebung wird nache einem weiteren Seitenumbruch das Standardseitenlayout +% wiederhergestellt. Die gewünschte Sprache der Umgebung kann als einzelner +% Wert ohne Schlüssel angegben werden. +% \begin{macrocode} +\newcommand*\tud@ps{tudheadings} +\newcommand*\tud@ps@select{% + \expandafter\pagestyle\expandafter{\tud@ps}% +%<*book|report> + \ifstr{\tud@ps}{empty}{\renewcommand*\chapterpagestyle{empty}}{}% + \ifstr{\tud@ps}{empty.tudheadings}{% + \renewcommand*\chapterpagestyle{empty.tudheadings}% + }{}% +%</book|report> +} +\newcommand*\tud@currentpagestyle{} +\newcommand*\tud@currentpagestyle@set{% + \ifdefvoid{\tud@currentpagestyle}{% + \xdef\tud@currentpagestyle{\currentpagestyle}% + }{}% +} +\newcommand*\tud@currentpagestyle@reset{% + \expandafter\pagestyle\expandafter{\tud@currentpagestyle}% + \let\tud@currentpagestyle\relax% +} +\NewEnviron{tudpage}[1][]{% +% \end{macrocode} +% Um beim Umschalten des Seitenstils den aktuellen selbst zu behalten, wird +% dieser im Hilfsmakro \cs{tud@currentpagestyle} gespeichert. +% \begin{macrocode} + \tud@currentpagestyle@set% + \clearpage\def\tud@ps{tudheadings}% + \TUD@parameter@set[tudpage]{#1}% + \tud@ps@select% + \tud@multicols@check% +% \end{macrocode} +% Falls das \pkg{multicol}-Paket geladen ist und eine Spaltenanzahl angegeben +% ist, wird die entsprechende Umgebung gesartet, mit \cs{BODY} der Inhalt der +% \env{tudpage}-Umgebung ausgegeben und anschließend gegebenenfalls die +% \env{multicols}-Umgebung beendet. +% \begin{macrocode} + \ifnum\tud@multicols>1\relax% + \begin{multicols}{\tud@multicols}% + \fi% + \BODY% + \ifnum\tud@multicols>1\relax% + \end{multicols}% + \fi% +% \end{macrocode} +% Am Ende der Umgebung wird der vorhergehende Seitenstil zurückgesetzt und der +% dazugehörige Satzspiegel geladen. Dazu wird die Ausführung das Hilfsmakro +% \cs{@tempa} auf das Beenden der Umgebung mit \cs{aftergroup} verzögert. +% \begin{macrocode} +}[% + \aftergroup\tud@currentpagestyle@reset% + \clearpage% +] +% \end{macrocode} +% \end{macro}^^A \tud@currentpagestyle@reset +% \end{macro}^^A \tud@currentpagestyle@set +% \end{macro}^^A \tud@currentpagestyle +% \end{macro}^^A \tud@ps@select +% \end{macro}^^A \tud@ps +% \end{environment}^^A tudpage +% Im Folgenden werden die einzelnen Parameter für die \env{tudpage}"=Umgebung +% definiert. Mit \cs{TUD@parameter}\marg{Family}\marg{\dots} wird die +% Parameterfamilie festgelegt und anschließend die Definitionen getätigt. +% \begin{macrocode} +\TUD@parameter{tudpage}{% +% \end{macrocode} +% \begin{parameter}{language} +% Mit diesem Parameter kann die Sprache in der Umgebung umgeschaltet werden. Die +% Sprache kann auch ohne den entsprechenden Schlüssel direkt als Parameter +% angegeben werden. +% \begin{macrocode} + \TUD@parameter@define{language}{\selectlanguage{#1}}% +% \end{macrocode} +% \end{parameter} ^^A language +% \begin{parameter}{columns} +% Hiermit kann die Anzahl der Spalten für die Umgebung angegeben werden. Für +% mehr als zwei Spalten muss das Paket \pkg{multicols} geladen werden. Die +% Spaltenanzahl kann auch ohne den entsprechenden Schlüssel direkt Parameter +% angegeben werden. +% \begin{macrocode} + \TUD@parameter@define{columns}{\def\tud@multicols{#1}}% +% \end{macrocode} +% \end{parameter} ^^A columns +% \begin{parameter}{color} +% \begin{parameter}{colour} +% Die \opt{color}"=Option ändert die Farbe von Schrift, Querbalken und im +% pdf\LaTeX-Modus auch die des TUD-Logos. +% \begin{macrocode} + \TUD@parameter@define{color}[HKS41]{\def\tud@head@color{#1}}% + \TUD@parameter@let{colour}{color}% +% \end{macrocode} +% \end{parameter}^^A colour +% \end{parameter}^^A color +% \begin{parameter}{widehead} +% Die Breite des Querbalkens kann ebenfalls geändert werden. +% \begin{macrocode} + \TUD@parameter@define{widehead}[true]{\TUDoption{widehead}{#1}}% +% \end{macrocode} +% \end{parameter}^^A widehead +% \begin{parameter}{ddc} +% \changes{v2.02}{2014/08/16}{neu}%^^A +% \begin{parameter}{ddchead} +% \begin{parameter}{ddcfoot} +% Mit diesen Parametern kann das \DDC-Logo im Kopf bzw. Fuß eingeblendet werden. +% \begin{macrocode} + \TUD@parameter@define{ddc}[true]{\TUDoption{ddc}{#1}}% + \TUD@parameter@define{ddchead}[true]{\TUDoption{ddchead}{#1}}% + \TUD@parameter@define{ddcfoot}[true]{\TUDoption{ddcfoot}{#1}}% +% \end{macrocode} +% \end{parameter}^^A ddc +% \end{parameter}^^A ddchead +% \end{parameter}^^A ddcfoot +% \begin{parameter}{head} +% \changes{v2.02}{2014/06/30}{entfernt, Funktionalität teilweise durch Option +% \opt{ddchead} übernommen}%^^A +% \begin{parameter}{foot} +% \changes{v2.02}{2014/06/30}{entfernt, Funktinalität teilweise durch Option +% \opt{ddcfoot} übernommen}%^^A +% Diese Parameter wurden entfernt. Innerhalb der Umgebung können hierfür +% \cs{TUDoptions} mit den Schlüsseln \opt{ddchead=\dots} und \opt{ddcfoot=\dots} +% sowie \cs{headlogo} bzw. für den Querbalken \opt{widehead=true/false} genutzt +% werden. +% \end{parameter}^^A head +% \end{parameter}^^A foot +% \begin{parameter}{cdfont} +% \begin{parameter}{cdfonts} +% \changes{v2.02}{2014/08/08}{entfernt}^^A +% \begin{parameter}{tudfonts} +% \changes{v2.02}{2014/08/08}{entfernt}^^A +% Die Option \opt{cdfont} bzw. \opt{cdfonts} bestimmt, ob die Schriften des +% \CDs{} oder aber die standarmäßigen Serifenlosen für die Auszeichnugen in der +% Kopfzeile und Serifen im Inhalt verwendet werden. +% \begin{macrocode} + \TUD@parameter@define{cdfont}[true]{\TUDoption{cdfont}{#1}}% +% \end{macrocode} +% \end{parameter}^^A tudfonts +% \end{parameter}^^A cdfonts +% \end{parameter}^^A cdfont +% \begin{parameter}{barfont} +% \changes{v2.02}{2014/07/08}{neu}%^^A +% Mit der Option \opt{headfont} kann die Verwendung der Schriften des \CDs +% aktiviert werden, wenn diese im Fließtext nicht zum Einsatz kommen. +% \begin{macrocode} + \TUD@parameter@define{barfont}[true]{\TUDoption{barfont}{#1}}% +% \end{macrocode} +% \end{parameter}^^A headfont +% \begin{parameter}{pagestyle} +% \changes{v2.02}{2014/06/23}{neu}%^^A +% Mit diesem Parameter kann der verwendete Seitenstil eingestellt werden, wobei +% entweder \pgs{tudheadings} oder aber\pgs{plain.tudheadings} bzw. +% \pgs{empty.tudheadings} verwendet wird. +% \begin{macrocode} + \TUD@parameter@define{pagestyle}{% + \ifstr{#1}{empty}{\renewcommand*\tud@ps{empty.tudheadings}}{% + \ifstr{#1}{empty.tudheadings}{\renewcommand*\tud@ps{empty.tudheadings}}{% + \ifstr{#1}{plain}{\renewcommand*\tud@ps{plain.tudheadings}}{% + \ifstr{#1}{plain.tudheadings}{\renewcommand*\tud@ps{plain.tudheadings}}{% + \ifstr{#1}{headings}{\renewcommand*\tud@ps{tudheadings}}{% + \ifstr{#1}{tudheadings}{\renewcommand*\tud@ps{tudheadings}}{% + \TUD@parameter@wrn{pagestyle}{% + headings, plain, empty or any tudheadings page style type% + }% + }}}}}}% + }% +% \end{macrocode} +% \end{parameter}^^A pagestyle +% \begin{parameter}{headlogo} +% \begin{parameter}{logo} +% Das sekundäre Logo kann ebenfalls lokal geändert werden. +% \begin{macrocode} + \TUD@parameter@define{headlogo}{\headlogo{#1}}% + \TUD@parameter@let{logo}{headlogo}% +% \end{macrocode} +% \end{parameter}^^A logo +% \end{parameter}^^A headlogo +% Für den Fall, dass ein Wert nicht in der Schlüssel"=Wert"=Notation gegeben +% wird, erfolgt eine Sonderbehandlung durch \cs{tud@environmenthandler}, bei der +% erst auf eine Zahl geprüft wird und anschießend versucht wird, das Argument +% als Sprache zu setzen. Nach der Definition aller Parameter wird der Befehl +% \cs{TUD@parameter} und damit auch die aktuelle Parameterfamilie beendet. +% \begin{macrocode} + \TUD@parameter@sethandler{\tud@environmenthandler{#1}}% +} +% \end{macrocode} +% +% \iffalse +%</class&body> +% \fi +% +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr-supervisor.dtx b/Master/texmf-dist/source/latex/tudscr/tudscr-supervisor.dtx new file mode 100644 index 00000000000..cfc68f265d5 --- /dev/null +++ b/Master/texmf-dist/source/latex/tudscr/tudscr-supervisor.dtx @@ -0,0 +1,532 @@ +% \CheckSum{586} +% \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-supervisor.dtx +%<*driver> +\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi +\ProvidesFile{tudscr-supervisor.dtx}[% + 2014/11/04 v2.02 TUD-KOMA-Script\space% +%</driver> +%<package>\NeedsTeXFormat{LaTeX2e}[2011/06/27] +%<package>\ProvidesPackage{tudscrsupervisor}[% +%<*driver|package> +%!TUDVersion +%<package> package + (commands for supervisors)% +] +%</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-supervisor.dtx} +\begin{document} + \maketitle + \DocInput{\filename} +\end{document} +%</driver> +% \fi +% +% \selectlanguage{ngerman} +% +% \section{Aufgabenstellung} +% +% Diese Paket stellt für die \cls{tudscr}-Klassen eine Umgebung für die +% Aufgabenstellung einer Abschlussarbeit bereit. +% +% \StopEventually{\PrintIndex\PrintChanges} +% +% \iffalse +%<*package> +% \fi +% +% \subsection{Das Paket \pkg{tudscrsupervisor}} +% +% \begin{environment}{task} +% Die Umgebung für die Aufgabenstellung nutzt die \env{tudpage}-Umgebung. Sie +% wird auf einer neuen (rechten) Seite gesetzt. Es wird zu Beginn eine Tabelle +% mit Informationen zum Autor gesetzt. Zum Abschluss werden Betreuer, +% Hochschullehrer und ggf. Vorsitzender des Prüfungsausschusses ausgegeben. +% \begin{macrocode} +\newenvironment{task}[1][]{% +% \end{macrocode} +% Die \env{tudpage}-Umgebung wird geöffnet. Mit dem Parameter \opt{headline} +% kann die standardmäßige Überschrift überschrieben werden. +% \begin{macrocode} + \cleardoubleoddpage% + \def\@headline{}% + \TUD@parameter{tudpage}{% + \TUD@parameter@define{headline}{\def\@headline{##1}}% + \TUD@parameter@let{line}{headline}% + \TUD@parameter@sethandler{\def\@headline{##1}}% + \TUD@parameter@set{pagestyle=empty}% + }% + \tudpage[#1]% +% \end{macrocode} +% Zu Beginn wird als erstes die Überschrift und~-- die entsprechende Option +% vorausgesetzt~-- im PDF einen Lesezeichen- oder auch Outline-Eintrag gesetzt. +% \begin{macrocode} + \tudbookmark{\taskname}{task}% + \subsection*{% + \ifx\@headline\@empty% + \taskname\space% + \ifx\tasktext\@empty\else\ifx\@thesis\@empty\else% + \ignorespaces\tasktext\space\trim@spaces{\@thesis}% + \fi\fi% + \else\@headline\fi% + }% + \tud@author@table% +}{% +% \end{macrocode} +% Da auch Betreuer durch den Befehl \cs{and} getrennt werden, wird dieser für +% die korrekte Ausgabe umdefiniert. Anschließend folgt die Ausgabe in einer +% Tabelle, die Spalte der Bezeichner entspricht der aus dem oberen Teil. +% \begin{macrocode} + \def\and{% + \tabularnewline% + \ifx\supervisorothername\@empty\else\supervisorothername\@titledelim\fi% + & \def\and{\tabularnewline &}% + }% + \vskip-\lastskip% + \ifdim\parskip>\z@\vskip\parskip\else\vskip\topsep\fi\medskip% + \begingroup% + \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative% + \begin{tabular}{@{}p{\tud@dim@table}l@{}}% + \supervisorname\@titledelim & + \@supervisor\tabularnewline[\smallskipamount]% + \issuedatetext\@titledelim & \@issuedate\tabularnewline% + \duedatetext\@titledelim & \@duedate\tabularnewline% + \end{tabular}% +% \end{macrocode} +% Darunter wird etwas Platz für die Unterschriften von betreuendem Professor +% und ggf. Prüfungsausschussvorsitzenden gehalten. Auch diese beiden werden +% in einer Tabelle ausgegeben. Die \env{tudpage}-Umgebung wird beendet, und +% eine neue (rechte) Seite geöffnet. +% \begin{macrocode} + \vskip 15mm plus 10mm minus 10mm% + \ifx\@chairman\@empty\else% + \begin{tabular}{@{}l@{}}% + \@chairman\tabularnewline% + \chairmanname\tabularnewline% + \end{tabular}% + \hfill% + \fi% + \ifx\@professor\@empty\else% + \begin{tabular}{@{}l@{}}% + \@professor\tabularnewline% + \professorname\tabularnewline% + \end{tabular}% + \fi% + \par% + \endgroup% + \endtudpage% + \cleardoublepage% +} +% \end{macrocode} +% \end{environment}^^A task +% \begin{macro}{\taskform} +% Dies soll die Standardform einer Aufgabenstellung sein. Im ersten Argument +% werden kurz die Ziele motiviert und erläutert, im zweiten Argument werden im +% besten Fall die Schwerpunkte in einer \env{itemize}-Umgebung aufgeschlüsselt. +% \begin{macrocode} +\newcommand\taskform[3][]{% + \begin{task}[#1] + \vskip-\lastskip% + \ifxblank{#2}{}{\minisec{\objectivesname}#2}% + \ifxblank{#3}{}{% + \minisec{\focusname}% + \begin{itemize}\tud@RaggedRight% + #3 + \end{itemize}% + }% + \end{task}% +} +% \end{macrocode} +% \end{macro}^^A \taskform +% \begin{environment}{evaluation} +% Die Umgebung für das Gutachten nutzt ebenfalls die \env{tudpage}-Umgebung. Sie +% wird auf einer neuen (rechten) Seite gesetzt. Es wird zu Beginn eine Tabelle +% mit Informationen zum Autor gesetzt. Zum Abschluss werden Ort, Datum und +% Gutachter ausgegeben. +% \begin{macrocode} +\newenvironment{evaluation}[1][]{% +% \end{macrocode} +% Die \env{tudpage}-Umgebung wird geöffnet. Mit dem Parameter \opt{headline} +% kann die standardmäßige Überschrift überschrieben werden. Zu Beginn wird als +% erstes die Überschrift und~-- die entsprechende Option vorausgesetzt~-- im +% PDF einen Lesezeichen- oder auch Outline-Eintrag gesetzt. +% \begin{macrocode} + \cleardoubleoddpage% + \def\@headline{}% + \TUD@parameter{tudpage}{% + \TUD@parameter@define{headline}{\def\@headline{##1}}% + \TUD@parameter@let{line}{headline}% + \TUD@parameter@define{grade}{\def\@grade{##1}}% + \TUD@parameter@sethandler{\def\@headline{##1}}% + \TUD@parameter@set{pagestyle=empty}% + }% + \tudpage[#1]% + \tudbookmark{\evaluationname}{evaluation}% + \subsection*{% + \ifx\@headline\@empty% + \evaluationname\space% + \ifx\evaluationtext\@empty\else\ifx\@thesis\@empty\else% + \ignorespaces\evaluationtext\space\trim@spaces{\@thesis}% + \fi\fi% + \else\@headline\fi% + }% + \tud@author@table% +}{% +% \end{macrocode} +% Die gegebenen Note sowie Ort und Datum werden am Ende ggf. ausgegeben. +% \begin{macrocode} + \vskip-\lastskip% + \ifdim\parskip>\z@\vskip\parskip\else\vskip\topsep\fi% + \medskip% + \ifx\@grade\@empty\else% + \noindent\gradetext% + \vskip\bigskipamount% + \fi% + \ifx\@date\@empty\else% + \noindent% + \ifx\@place\@empty\else\@place,~\fi\@date% + \vskip\bigskipamount% + \fi% + \bigskip\bigskip\noindent% +% \end{macrocode} +% Der Befehl \cs{and} wird für einen möglichen Zweitgutachter angepasst. Das +% Hilfsmakro \cs{@tempa} dient zur Übernahme des richtigen Bezeichners für +% Erst- bzw. Zweitgutachter. Sollten mit \cs{referee} keine Gutachter angegeben +% sein, so werden die angegeben Betreuer verwendet. +% \begin{macrocode} + \ifx\@referee\@empty\let\@referee\@supervisor\fi% + \let\@tempa\refereename% + \def\and{% + \tabularnewline% + \@tempa% + \endtabular% + \hfill% + \tabular{@{}l@{}}% + \global\let\@tempa\refereeothername% + }% + \begin{tabular}{@{}l@{}}% + \@referee% + \tabularnewline% + \@tempa% + \end{tabular}% + \hfill\null% + \endtudpage% + \cleardoublepage% +} +% \end{macrocode} +% \end{environment}^^A evaluation +% \begin{macro}{\evaluationform} +% Dies soll die Standardform eines Gutachtens sein. Im ersten Argument wird +% kurz die Aufgabenstellung zusammengefasst, im zweiten Argument wird der +% Inhalt und die Struktur der Arbeit kurz beschrieben. Im dritten Argument +% erfolgt die Bewertung, das letzte Argument beinhaltet die Note. +% \begin{macrocode} +\newcommand\evaluationform[5][]{% + \begin{evaluation}[#1] + \vskip-\lastskip% + \ifxblank{#2}{}{\minisec{\taskname}#2}% + \ifxblank{#3}{}{\minisec{\contentname}#3}% + \ifxblank{#4}{}{\minisec{\assessmentname}#4}% + \ifxblank{#5}{}{\def\@grade{#5}}% + \end{evaluation}% +} +% \end{macrocode} +% \end{macro}^^A \evaluationform +% \begin{macro}{\tud@author@table} +% \changes{v2.01b}{2014/06/04}{Probleme mit \pkg{calc} behoben}%^^A +% \begin{length}{\tud@dim@table} +% Der Befehl \cs{tud@author@table} dient zur Ausgabe einer Tabelle mit +% Informationen zum Autor/zu den Autoren\footnote{Matrikelnummer, Jahrgang, +% Studiengang etc.} für Aufgabenstellung und Gutachten. +% \begin{macrocode} +\newlength{\tud@dim@table}% +\newcommand*\tud@author@table{% + \tud@check@author% + \begingroup% + \let\thanks\@gobble% + \let\footnote\@gobble% +% \end{macrocode} +% Der Befehl \cs{tud@split@author} ist original aus den \cls{tudscr}-Klassen +% und dient zur formatierten Ausgabe von mehreren Autoren, welche durch +% \cs{author}\marg{Autor(en)} angegeben und mit \cs{and} getrennt wurden. +% Er wird hier auf die Ausgabe der Autoren mit den jeweils zusätzlich gegebenen +% Informationen in einer Tabelle angepasst. +% \begin{macrocode} + \renewcommand*\tud@split@author[2]{% +% \end{macrocode} +% Weil alle Autoren in einer Tabelle gesetzt werden wird geprüft, welche Felder +% individuell via \cs{author} angegeben wurden. Damit die Tabellen die gleiche +% Höhe haben, auch wenn für einen Autor ein Feld ausgelassen wurde, werden alle +% insgesamt angegebenen Felder mit via \cs{tud@multiple@setfields} mit \cs{null} +% initialisiert. Anschließend werden für den aktuellen Autor angegebenen Felder +% gesetzt. +% \begin{macrocode} + \tud@multiple@setfields{\null}{##1}% +% \end{macrocode} +% Nach viel Geplänkel kommt nun die eigentliche Tabelle mit ggf. zusätzlichen +% Informationen zum Autor. +% \begin{macrocode} + \begin{tabular}{l@{}}% + \ifx\@course\@empty\else\@course\tabularnewline\fi% + \ifx\@discipline\@empty\else\@discipline\tabularnewline\fi% + \textsf{\textbf{\ignorespaces##1}}\tabularnewline% + \ifx\@matriculationnumber\@empty\else% + \@matriculationnumber\tabularnewline% + \fi% + \ifx\@matriculationyear\@empty\else% + \@matriculationyear\tabularnewline% + \fi% + \end{tabular}% +% \end{macrocode} +% Sollte ein weiterer Autor folgen, wird \cs{tabcolsep} zusätzlich eingefügt, +% um den Standardabstand bei Tabellen zu sichern, da die Tabelle vorher ohne +% rechten \enquote{Rand} gesetzt wurde, um die letzte Tabelle ggf. genau bis +% zum rechten Rand setzen zu können. +% \begin{macrocode} + \tud@multiple@@@split{##2}{~~\hspace{\tabcolsep}} + }% +% \end{macrocode} +% Zu Beginn wird eine Tabelle mit den Bezeichnern aller genutzten Feldern +% ausgegeben. Danach folgen alle Autoren. Damit ein einheitliches Layout +% entsteht und auch die Tabellen am Ende der Umgebung in der ersten Spalte die +% gleiche Breite haben wie im oberen Teil, ist die Bestimmung einer festen +% Spaltenbreite notwendig, die so breit wie der längste Bezeichner ist. +% Dafür muss festgestellt werden, welche optionalen Felder denn nun überhaupt +% genutzt werden. Dafür wird \cs{tud@multiple@setfields} mit \cs{null} als +% Argument aufgerufen, um alle potentiellen Felder erkennen zu können. +% \begin{macrocode} + \setlength{\tud@dim@table}{2em}% + \gdef\tud@multiple@field{@author}% + \tud@multiple@setfields{\null}{}% +% \end{macrocode} +% Anschließend werden die Bezeichner sowohl der obligatorischen als auch der +% genutzten, optionalen Felder expandiert. Anschließend wir mit dieser Liste +% der längste bestimmt und in \cs{tud@dim@table} gespeichert. +% \begin{macrocode} + \edef\@tempa{% + \authorname,\titlename,\supervisorname,\supervisorothername,% + \issuedatetext,\duedatetext,% + \expandafter\ifx\@matriculationnumber\@empty\else% + \matriculationnumbername% + \fi,% + \expandafter\ifx\@matriculationyear\@empty\else% + \matriculationyearname% + \fi,% + \expandafter\ifx\@course\@empty\else\coursename\fi,% + \expandafter\ifx\@discipline\@empty\else\disciplinename\fi,% + }% + \@for\@tempb:=\@tempa\do{% + \settowidth{\@tempdima}{\@tempb\@titledelim}% + \ifdim\@tempdima>\tud@dim@table\relax% + \setlength{\tud@dim@table}{\@tempdima}% + \fi% + }% + \global\tud@dim@table=\tud@dim@table% +% \end{macrocode} +% Die Tabelle mit den benötigten Bezeichnern. Damit diese bis an den Seiterand +% ohne Warnungen gesetzt werden können, wird die Auszeichnung von Absatzenden +% aufgehoben. +% \begin{macrocode} + \begingroup% + \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative% + \begin{tabular}{@{}p{\tud@dim@table}}% + \ifx\@course\@empty\else% + \coursename\@titledelim\tabularnewline% + \fi% + \ifx\@discipline\@empty\else% + \disciplinename\@titledelim\tabularnewline% + \fi% + \authorname\@titledelim\tabularnewline% + \ifx\@matriculationnumber\@empty\else% + \matriculationnumbername\@titledelim\tabularnewline% + \fi% + \ifx\@matriculationyear\@empty\else% + \matriculationyearname\@titledelim\tabularnewline% + \fi% + \end{tabular}% +% \end{macrocode} +% Folgend werden die Autoren wie schon bei \cs{maketitle} mit den gleichen +% Makros gesplittet und separat ausgegeben. +% \begin{macrocode} + \tud@multiple@split{@author}% +% \end{macrocode} +% Nach den Autoren wird der Titel über die komplette Textbreite ausgegeben. +% Danach wird der Inhalt der Aufgabenstellung ausgegeben. +% \begin{macrocode} + \vskip\smallskipamount% + \begin{tabular}{@{}p{\tud@dim@table}% + p{\dimexpr\textwidth-\tud@dim@table-2\tabcolsep\relax}@{}}% + \titlename\@titledelim & \tud@RaggedRight\textsf{\textbf{\@@title}}% + \end{tabular}% + \par% + \endgroup% + \ifdim\parskip>\z@\else\vskip\topsep\fi% + \endgroup% + \noindent\ignorespaces% +} +% \end{macrocode} +% \end{length}^^A \tud@dim@table +% \end{macro}^^A \tud@author@table +% \begin{macro}{\tud@author@checkfields} +% Der Befehl \cs{tud@author@checkfields} wird um die hier im Paket zusätzlich +% definierten Felder erweitert. +% \begin{macrocode} +\patchcmd{\tud@split@author@list}{\authormore}% + {\authormore,\course,\discipline}{}{\tud@patch@wrn{tud@split@author@list}} +% \end{macrocode} +% \end{macro}^^A \tud@author@checkfields +% \begin{environment}{notice} +% Die Umgebung für Aushänge nutzt ebenfalls die \env{tudpage}-Umgebung. Sie wird +% auf einer neuen (rechten) Seite gesetzt. Die Überschrift wird in der +% Voreinstellung auf den sprachabhängigen Bezeichner \cs{noticename} gesetzt, +% welcher allerdings mit dem Parameter \opt{headline} überschrieben werden kann. +% \begin{macrocode} +\newenvironment{notice}[1][]{% + \cleardoubleoddpage% + \def\@headline{\noticename}% + \TUD@parameter{tudpage}{% + \TUD@parameter@define{headline}{\def\@headline{##1}}% + \TUD@parameter@let{line}{headline}% + \TUD@parameter@sethandler{\def\@headline{##1}}% + \TUD@parameter@set{pagestyle=empty}% + }% + \tudpage[#1]% + \tudbookmark{\noticename}{notice}% +% \end{macrocode} +% Es wird zu Beginn das angegebene Datum oben auf der rechten Seite ausgegeben. +% Anschließend wird die Überschrift und der gegebene Titel gesetzt. +% \begin{macrocode} + \ifx\@date\@empty\else% + \begingroup% + \vspace*{-\parskip}% + \vspace*{-2\baselineskip}% + \raggedleft + \@date\par% + \vspace*{-\parskip}% + \endgroup% + \fi% + \ifx\@headline\@empty\else% + \section*{\@headline}% + \fi% +}{% +% \end{macrocode} +% Wenn keine Kontaktperson direkt angegeben wurden, werden die Informationen der +% angegeben Betreuer verwendet. Wenn eine Personenangabe gefunden wurde, werden +% die Kontaktdaten ausgegeben. +% \begin{macrocode} + \ifx\@contactperson\@empty\let\@contactperson\@supervisor\fi% + \ifx\@contactperson\@empty\else% + \vskip-\lastskip% + \ifdim\parskip>\z@\vskip\parskip\else\vskip\topsep\fi% + \subsection*{\contactpersonname}% + \noindent\tud@multiple@split{@contactperson}\hfill\null% + \fi% + \endtudpage% + \cleardoublepage% +} +% \end{macrocode} +% \end{environment}^^A notice +% \begin{macro}{\noticeform} +% Dies soll die Standardform eines Aushangs für eine Abschlussarbeit sein. Im +% ersten Argument wird kurz der Inhalt zusammengefasst, im zweiten Argument +% werden die Arbeitsschwerpunkte beschrieben. +% \begin{macrocode} +\newcommand\noticeform[3][]{% + \begin{notice}[#1] + \vskip-\lastskip% + \ifxblank{#2}{}{% + \ifx\@@title\@empty\else% + \minisec{\expandonce{\@@title}}% + \fi% + #2% + }% + \ifxblank{#3}{}{% + \minisec{\focusname}% + \begin{itemize}\tud@RaggedRight% + #3 + \end{itemize}% + }% + \end{notice}% +} +% \end{macrocode} +% \end{macro}^^A \noticeform +% \begin{macro}{\tud@split@contactperson} +% \begin{macro}{\tud@split@contactperson@list} +% Mit diesem Befehl werden für einen Aushang die Daten für einen oder mehrere +% Kontaktpersonen ausgegeben. +% \begin{macrocode} +\newcommand*\tud@split@contactperson[2]{% + \tud@multiple@setfields{\null}{#1}% + \begin{tabular}{@{}l@{}}% + \ignorespaces#1\tabularnewline% + \ifx\@office\@empty\else\@office\tabularnewline\fi% + \ifx\@telephone\@empty\else\@telephone\tabularnewline\fi% + \ifx\@emailaddress\@empty\else\@emailaddress\tabularnewline\fi% + \end{tabular}% + \tud@multiple@@@split{#2}{\hfill}% +} +\newcommand*\tud@split@contactperson@list{\office,\telephone,\emailaddress} +% \end{macrocode} +% \end{macro}^^A \tud@split@contactperson@list +% \end{macro}^^A \tud@split@contactperson +% +% \iffalse +%</package> +% \fi +% +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr-title.dtx b/Master/texmf-dist/source/latex/tudscr/tudscr-title.dtx new file mode 100644 index 00000000000..f2461fd028a --- /dev/null +++ b/Master/texmf-dist/source/latex/tudscr/tudscr-title.dtx @@ -0,0 +1,1360 @@ +% \CheckSum{1375} +% \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-title.dtx +%<*driver> +\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi +\ProvidesFile{tudscr-title.dtx}[% + 2014/11/13 v2.02 TUD-KOMA-Script (title)% +] +\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-title.dtx} +\begin{document} + \maketitle + \DocInput{\filename} +\end{document} +%</driver> +% \fi +% +% \selectlanguage{ngerman} +% +% \changes{v2.02}{2014/06/24}{Unterstützung für \pkg{titlepage} entfernt}%^^A +% +% \section{Titelei} +% +% Die Titelseite wird für die \TUDScript-Klassen bereitgestellt. +% +% \StopEventually{\PrintIndex\PrintChanges} +% +% \iffalse +%<*class&body> +% \fi +% +% \subsection{Titelseite und Titelkopf} +% +% Für alle Klassen im \CD der Technischen Universität Dresden wird eine neue +% Titelseite und ein neuer Titelkopf bereitgestellt. Es werden eine monochrome +% Version, eine Version mit leichtem Farbeinsatz und eine durchweg farbige +% Version bereitgestellt Außerdem wird hier das Aussehen und die Position des +% Titels analog zu den Überschriften auf Teile- und Kapitelseiten festgelegt. +% +% \iffalse +%</class&body> +%<*class&option> +% \fi +% +% \begin{option}{subjectthesis} +% \begin{macro}{\if@tud@subjectthesis} +% \begin{macro}{\if@tud@subjectthesis@locked} +% Die alte \cls{tudbook}-Klasse hat den Typ der Arbeit in der Betreffzeile des +% Titels gesetzt. Um dieses Verhalten nachbilden zu können, wird diese Option +% zur Verfügung gestellt. +% \begin{macrocode} +\newif\if@tud@subjectthesis +\TUD@key@lock{subjectthesis}[true]{% + \TUD@set@ifkey@lock{subjectthesis}{@tud@subjectthesis}{#1}% +} +% \end{macrocode} +% \end{macro}^^A \if@tud@subjectthesis@locked +% \end{macro}^^A \if@tud@subjectthesis +% \end{option}^^A subjectthesis +% +% \iffalse +%</class&option> +%<*class&body> +% \fi +% +% \begin{KOMAfont}{thesis} +% \begin{KOMAfont}{titlepage} +% \changes{v2.01}{2014/04/24}{Explizite Wahl der genutzten Schriftstärke}%^^A +% \changes{v2.02}{2014/08/29}{Anpassungen für \pkg{fontspec}}%^^A +% Diese Font-Elemente werden auf der Titelseite verwendet. \opt{thesis}, um den +% Typ der Arbeit und ggf. den zu erlangenden akademischen Grad zu setzen. +% Allerdings kommt letzteres nur zum Tragen, wenn die Option \opt{subthesis} +% deaktiviert ist. Es wird die gleiche Schrift wie für den Titel verwendet, +% allerdings etwas kleiner. \opt{titlepage} für alle Zusatzinformationen wie +% Autor, Datum etc. +% \begin{macrocode} +\newkomafont{thesis}{\usekomafont{title}\LARGE} +\newkomafont{titlepage}{% + \usekomafont{subject}% + \fontseries{\mddefault}% + \selectfont% + \large% +} +% \end{macrocode} +% \end{KOMAfont}^^A titlepage +% \end{KOMAfont}^^A thesis +% \begin{macro}{\tud@color@titlefont} +% \begin{macro}{\tud@color@titlepage} +% \begin{macro}{\tud@color@titlehead} +% Die Makros werden für die Hintergrundfarbe der Titelseite sowie die Farbe der +% Schriften verwendet. +% \begin{macrocode} +\newcommand*\tud@color@titlefont{black} +\newcommand*\tud@color@titlepage{white} +\newcommand*\tud@color@titlehead{black} +% \end{macrocode} +% \end{macro}^^A \tud@color@titlehead +% \end{macro}^^A \tud@color@titlepage +% \end{macro}^^A \tud@color@titlefont +% \begin{macro}{\tud@maketitle} +% \changes{v2.01a}{2014/06/03}{Fehler bei Nutzung von \cs{subtitle} behoben}%^^A +% \changes{v2.02}{2014/06/23}{\val{firstiscover} wird als Wert für die Option +% \opt{titlepage} unterstützt}%^^A +% \changes{v2.02}{2014/07/19}{Im zweispaltigen Satz wird für den Titelkopf +% \cs{tud@title@twocolumn} verwendet}%^^A +% \changes{v2.02}{2014/09/05}{Neue Parameter}%^^A +% \changes{v2.02}{2014/09/05}{Titelseite mit \cs{tud@maketitlepage}}%^^A +% \begin{macro}{\tud@titlepagenumber} +% \changes{v2.02}{2014/06/23}{neu}%^^A +% Bei der entsprechend gewählten Layoutoption, wird eine neue Titelseite im \CD +% gesetzt. Damit auf das Standardverhalten von \KOMAScript{} zurückgestellt +% werden kann, wird der ursprüngliche \cs{maketitle}-Befehl bei der Abarbeitung +% der Layoutoptionen gesichert. (siehe \cs{tud@layout@process}) und kann ggf. +% wiederhergestellt bzw. mit \cs{tud@cmd@use} verwendet werden. Ist das Layout +% des \CDs gefordert wird entweder mit \cs{tud@maketitlepage} eine Titelseite +% gesetzt~-- wobei sich diese in ihrer Struktur am originalen \cs{maketitle} +% orientiert~-- oder das Titelkopflayout wird angepasst. +% \begin{macrocode} +\newcommand*\tud@titlepagenumber{}% +\let\tud@titlepagenumber\relax% +\newcommand*\tud@maketitle[1][]{% + \begingroup% +% \end{macrocode} +% Das optionale Argument wird für das Setzen der Parameter verwendet. +% \begin{macrocode} + \TUD@parameter@set[title]{#1}% + \ifcase \tud@layout@title + \ifx\tud@titlepagenumber\relax\gdef\tud@titlepagenumber{1}\fi% + \tud@cmd@use{maketitle}[\tud@titlepagenumber]% + \else% + \if@titlepage% + \tud@maketitlepage% +% \end{macrocode} +% Neben einer kompletten Titelseite gibt es auch noch einen Titelkopf. Auch +% hierfür wird die Ausprägung festgelegt. +% \begin{macrocode} + \else% + \ifcase \tud@layout@title\relax\or\else% + \def\tud@color@titlefont{HKS41}% + \def\tud@color@titlehead{HKS41}% + \fi% +% \end{macrocode} +% Um einen Titelkopf zu setzen, wird einfach der Originalbefehl verwendet und +% nur der innere Teil (\cs{@maketitle}) angepasst. +% \begin{macrocode} + \let\@maketitle\tud@@maketitle% + \ifx\tud@titlepagenumber\relax\gdef\tud@titlepagenumber{1}\fi% +% \end{macrocode} +% Um einen zweispaltigen Satz für den Titelkopf ermöglichen zu können und +% gleichzeitig dabei den TUD-Kopf zu verwenden, wird der interne Befehl +% \cs{tud@title@twocolumn} verwendet. Damit wird der Titel selber einspaltig +% gesetzt und direkt danach der zweispaltige Satz begonnen. +% \begin{macrocode} + \if@twocolumn% + \tud@title@twocolumn[{\tud@cmd@use{maketitle}[\tud@titlepagenumber]}]% + \else% + \tud@cmd@use{maketitle}[\tud@titlepagenumber]% + \fi% + \fi% + \fi% + \endgroup% +} +% \end{macrocode} +% \end{macro}^^A \tud@titlepagenumber +% \end{macro}^^A \tud@maketitle +% \begin{parameter}{pagenumber} +% \changes{v2.02}{2014/09/05}{neu}^^A +% \begin{parameter}{cdfont} +% \changes{v2.02}{2014/09/05}{neu}^^A +% Die einzelnen Parameter dienen zur Einstellung der Titelseite und entsprechen +% in ihrem Verhalten den gleichnamigen Klassenoptionen. +% \begin{macrocode} +\TUD@parameter{title}{% + \TUD@parameter@define{pagenumber}{\def\tud@titlepagenumber{#1}}% + \TUD@parameter@define{cdfont}[true]{\TUDoption{cdfont}{#1}}% + \TUD@parameter@sethandler{\TUD@parameter@set[title]{pagenumber=#1}}% +}% +% \end{macrocode} +% \end{parameter}^^A cdfont +% \end{parameter}^^A pagenumber +% Die Befehle \cs{thanks} und \cs{footnotemark} werden mit \cs{robustify} +% behandelt, um die Makros vor dem Expandieren zu schützen. Dies ist z.\,B. für +% \cs{tud@multiple@split} aber auch für weitere Felder auf dem Titel nötig. +% \begin{macrocode} +\robustify{\thanks}% +\robustify{\footnotemark}% +% \end{macrocode} +% \begin{macro}{\tud@maketitlepage} +% \changes{v2.02}{2014/09/05}{neu}%^^A +% \begin{macro}{\tud@titleback} +% Bei der entsprechend gewählten Layoutoption, wird eine neue Titelseite im \CD +% gesetzt. Damit auf das Standardverhalten von \KOMAScript{} zurückgestellt +% werden kann, wird der standardmäßige \cs{maketitle}-Befehl nur wenn notwendig +% überschrieben (siehe \cs{tud@layout@process}) und kann ggf. wiederhergestellt +% werden. Der Befehl selbst orientiert sich dabei in seiner Struktur an dem +% originalen \cs{maketitle}. Für die ggf. farbige Ausgabe der Titelrückseite +% wird das Hilfmakro \cs{tud@titleback} definiert. Mit \cs{tud@titlepagenumber} +% kann eine Seitenzahl für den Titel~-- auch über den Befehl \cs{makecover}~-- +% angegeben werden. +% \begin{macrocode} +\newcommand*\tud@titleback{}% +\newcommand*\tud@maketitlepage{% +% \end{macrocode} +% Es wird durch die \KOMAScript-Option \opt{titlepage} unterschieden, ob eine +% Titelseite oder aber ein Titelkopf gesetzt werden soll. In Abhängigkeit davon +% werden Farben für die Schriften und den Seitenhintergrund festgelegt. Hierfür +% wird die entsprechende Layoutoption ausgewertet und entsprechend dieser die +% Werte belegt. +% \begin{macrocode} + \ifcase \tud@layout@title\relax\or\or% + \def\tud@color@titlefont{HKS41}% + \def\tud@color@titlehead{HKS41}% + \or% + \def\tud@color@titlepage{HKS41}% + \def\tud@color@titlefont{HKS41!30}% + \def\tud@color@titlehead{white}% + \fi% +% \end{macrocode} +% Die Titelseite. Es existieren die Optionen \opt{full} für eine vollständig +% farbige Seite sowie \opt{lite} für farbige Schriften und \opt{on} für den +% Standardtitel. +% \begin{macrocode} + \begin{titlepage}% +% \end{macrocode} +% Dieser Teil entspricht der Standarddefinition. Für das Setzen des Covers ist +% ein Großteil der Einstellungen irrelevant und wird übersrpungen. +% \begin{macrocode} + \ifx\tud@titlepagenumber\relax\else% + \setcounter{page}{\tud@titlepagenumber}% + \fi% +% \end{macrocode} +% Dieser Teil entspricht der Standarddefinition. Für das Setzen des Covers ist +% ein Großteil der Einstellungen irrelevant und wird übersrpungen. +% \begin{macrocode} + \if@tud@cover\else% + \let\footnotesize\small% + \let\footnoterule\relax% + \let\footnote\thanks% + \renewcommand*\thefootnote{\@fnsymbol\c@footnote}% + \let\@oldmakefnmark\@makefnmark% + \renewcommand*\@makefnmark{\rlap\@oldmakefnmark}% +% \end{macrocode} +% Das Paket \pkg{hyperref} definert im Normalfall die Fußnoten so um, dass es +% anklickbare Links erzeugt. Damit dies auf der Titelseite zu ungewollten +% Effekten führt, werden die Hyperlinks hier deaktiviert. Leider macht dies +% \pkg{hyperref} direkt beim Laden. Da die \TUDScript-Klassen aber nun mal zwei +% unterschiedliche Titel bereitstellen und die Möglichkeit bestehen soll, dass +% Layout per später Optionswahl noch zu ändern, muss der interne Code aus +% \pkg{hyperref} hier noch einmal für den TUD-Titel aufgerufen werden. +% \begin{macrocode} + \tud@footnote@unhyper% +% \end{macrocode} +% Im Gegensatz zu den \KOMAScript-Klassen wird für eine Umschlagseite die +% Option \opt{titlepage=firstiscover} nur für den Schmutztitel \cs{extratitle} +% und nicht für die eigentlcihe Titelseite unterstützt. Für ein Cover im \CD +% ist der Befehl \cs{makecover} mit den dazugehörigen Parametern zu nutzen. +% \begin{macrocode} + \ifx\@extratitle\@empty% + \if@titlepageiscoverpage% + \ClassWarning{\tudcls@name}{% + Using option `titlepage=firstiscover' is only\MessageBreak% + possible with an extra title. Alternatively you can\MessageBreak% + create a cover with `\string\makecover'% + }% + \fi% + \else% +% \end{macrocode} +% Der Teil ist aus den \KOMAScript-Klassen kopiert\dots +% \begin{macrocode} + \if@titlepageiscoverpage% + \edef\titlepage@restore{% + \noexpand\endgroup% + \noexpand\global\noexpand\@colht\the\@colht% + \noexpand\global\noexpand\@colroom\the\@colroom% + \noexpand\global\vsize\the\vsize% + \noexpand\global\noexpand\@titlepageiscoverpagefalse% + \noexpand\let\noexpand\titlepage@restore\noexpand\relax% + }% + \begingroup% + \topmargin=\dimexpr \coverpagetopmargin-1in\relax% + \oddsidemargin=\dimexpr \coverpageleftmargin-1in\relax% + \evensidemargin=\dimexpr \coverpageleftmargin-1in\relax% + \textwidth=\dimexpr% + \paperwidth-\coverpageleftmargin-\coverpagerightmargin\relax% + \textheight=\dimexpr% + \paperheight-\coverpagetopmargin-\coverpagebottommargin\relax% + \headheight=0pt% + \headsep=0pt% + \footskip=\baselineskip% + \@colht=\textheight% + \@colroom=\textheight% + \vsize=\textheight% + \columnwidth=\textwidth% + \hsize=\columnwidth% + \linewidth=\hsize% + \else% + \let\titlepage@restore\relax% + \fi% + \noindent\@extratitle\next@tdpage% + \fi% + \fi% +% \end{macrocode} +% Ist die Option \opt{tudbookmarks} aktiviert, werden für Umschlag- und +% Titelseite PDF"=Lesezeichen gesetzt. +% \begin{macrocode} + \if@tud@bookmarks% + \if@tud@cover% +%<*book|report> + \tudbookmark[0]{\coverpagename}{cover}% +%</book|report> +%<*article> + \tudbookmark[1]{\coverpagename}{cover}% +%</article> + \ifdef{\bookmarksetup}{\bookmarksetup{startatroot}}{}% + \else% +%<*book|report> + \tudbookmark[0]{\titlepagename}{title}% +%</book|report> +%<*article> + \tudbookmark[1]{\titlepagename}{title}% +%</article> + \ifdef{\bookmarksetup}{\bookmarksetup{startatroot}}{}% + \fi% + \fi% +% \end{macrocode} +% Das ganze Layout wird vertikal so verschoben, dass der Titel auf der gleichen +% Höhe steht wie die Überschriften auf Teil- und Kapitelseiten. +% \begin{macrocode} + \vspace*{\dimexpr% + \tud@dim@headdiff+\tud@dim@headingsvskip-\baselineskip+\parskip\relax% + }% + \vspace*{\pageheadingsvskip}% + \setparsizes{\z@}{\z@}{\z@\@plus1fil}\par@updaterelative% +% \end{macrocode} +% Damit die Farbeinstellungen der Schriften lokal begrenzt bleiben, wird dieser +% Teil des Titels in einer Gruppe (\cs{begingroup}) gesetzt. +% \begin{macrocode} + \begingroup% + \usekomafont{titlepage}% +% \end{macrocode} +% Da die Überschrift auf einer festen Position liegen soll, muss von allem, was +% über der Überschrift positioniert werden soll, die Höhe bestimmt werden, um +% einen entsprechenden Offset einfügen zu können. Dafür werden zwei temporäre +% Standardboxen verwendet. In diesen wird der gewünschte Inhalt für die beiden +% Felder \cs{@titlehead} bzw. \cs{@subject} abgelegt und die sich daraus +% kumulierende Höhe in \cs{@tempdima} gespeichert. Vor dem Setzen der Felder +% kann nun der \textbf{insgesamt} notwendige vertikaler Freiraum vor dem +% eigentlichen Titel für \cs{@titlehead} \textbf{und} \cs{@subject} abgezogen +% werden. Anschließend werden die beiden Boxen ausgegeben und der Aufbau der +% Titelseite kann beginnen. +% \begin{macrocode} + \setlength{\@tempdima}{\z@}% + \ifx\@titlehead\@empty\else% + \setbox0\vbox{% + \begin{minipage}[t]{\textwidth}% + {\usekomafont{titlehead}{\@titlehead\par\null}}% + \end{minipage}\newline\null% + }% + \addtolength{\@tempdima}{\dimexpr\ht0+\dp0\relax}% + \fi% +% \end{macrocode} +% Erkennen, ob in der Betreffzeile eine Abschlussarbeit ausgegeben werden soll +% und kann. +% \begin{macrocode} + \tud@letsubjectthesis% + \ifx\@subject\@empty\else% + \setbox1\vbox{{\usekomafont{subject}{\@subject\par\null}}}% + \addtolength{\@tempdima}{\dimexpr\ht1+\dp1+1pt\relax}% + \fi% + \vspace*{-\@tempdima}% + \ifx\@titlehead\@empty\else\usebox0\par\fi% + \ifx\@subject\@empty\else\usebox1\par\fi% +% \end{macrocode} +% Nachdem bereits \cs{@titlehead} und \cs{@subject} gesetzt worden, folgen nun +% die weiteren Felder wie vom \CD~-- mehr oder weniger~-- vorgegeben auf der +% Titelseite in unterschiedlichen Größen und Schriftstärken. +% \begin{macrocode} + {\usekomafont{title}{\tud@title@uppercase{\@title}\par}}% + \vskip 2ex\@plus1ex\@minus1ex% +% \end{macrocode} +% Der Untertitel wird ggf. in der gleichen Schrift gesetzt wie der Titel, +% allerdings etwas kleiner. +% \begin{macrocode} + \ifx\@subtitle\@empty\else% + {\usekomafont{subtitle}{\tud@title@uppercase{\@subtitle}\par}}% + \vskip 2ex\@plus1ex\@minus1ex% + \fi% + \vskip 2\bigskipamount% +% \end{macrocode} +% Ausgabe eines Autors oder mehrerer Autoren ggf. mit Zusatzinformationen. +% \begin{macrocode} + \tud@check@author% + \tud@multiple@split{@author}\par% + \vskip 2ex\@plus1ex\@minus1ex% +% \end{macrocode} +% Die Titelseite unterscheidet sich ein wenig, abhängig davon ob eine eine +% Abschlussarbeit gesetzt wird oder nicht. Falls dies nicht der Fall ist, dann +% wird das angegebene bzw. das heutige Datum und ggf. die Ergänzung ausgegeben. +% \begin{macrocode} + \ifx\@thesis\@empty% + \if@tud@cover\else% + \ifx\@date\@empty\else% + \vskip 2ex\@plus.1fill% + {\usekomafont{date}{\@date\space\ignorespaces\@datemore\par}}% + \fi% + \fi% + \vskip 2ex\@plus.25fill% +% \end{macrocode} +% Ist eine Abschlussarbeit angegeben, so wird zusätzlich unterschieden, ob +% diese bereits~-- gesteuert durch die Option \opt{subjectthesis}~-- in der +% Betreffzeile angegeben wurde oder aber separat und in deutlicherer Form auf +% dem Titelblatt ausgegeben werden soll. Sowohl Arbeitstyp als auf akademischer +% Grad werden dabei im Verhältnis 1:2 zwischen allen weiteren Angaben auf dem +% Titel vertikal ausgerichtet. +% \begin{macrocode} + \else% + \vskip 2ex\@plus.25fill% + \if@tud@subjectthesis\else% + {\usekomafont{thesis}{\tud@title@uppercase{\@thesis}\par}}% + \vskip 2ex\@plus1ex\@minus1ex% + \fi% +% \end{macrocode} +% Ebenfalls wird in Abhängigkeit von der Option \opt{subjectthesis} der +% angestrebte akademische Grad ausgegeben. +% \begin{macrocode} + \if@tud@cover\else% + \ifx\@graduation\@empty\else% + \def\@tempc{% + \@graduation% + \ifx\@graduationabbr\@empty\else\space\@graduationabbr\fi% + }% + {\usekomafont{titlepage}{\graduationtext\par}}% + \vskip 2ex\@plus1ex\@minus1ex% + \if@tud@subjectthesis% + {\usekomafont{subject}{\@tempc\par}}% + \else% + {\usekomafont{thesis}{\tud@title@uppercase{\@tempc}\par}}% + \fi% + \vskip 3ex\@plus1ex\@minus1ex% + \fi% + \fi% + \vskip 2ex\@plus.5fill% + \fi% +% \end{macrocode} +% Wenn Betreuer angegeben wurden, dann werden diese auf dem Titel ausgeben. Um +% die Vorlage auch für Dissertationen verwenden zu können, ist ein Feld für +% Gutachter vorgesehen. Außerdem wird für Promotionsschriften ein Feld für +% Fachreferenten bereitgehalten. Das Format der Ausgabe ist dabei identisch. +% Darauf folgend wird der betreuende Hochschullehrer ausgegeben. +% \begin{macrocode} + \if@tud@cover\else% + \tud@title@names{supervisor}% + \tud@title@names{referee}% + \tud@title@names{advisor}% + \tud@title@names{professor}% +% \end{macrocode} +% Bei einer Abschlussarbeit gehört normalerweise auch ein Abgabedatum auf den +% Titel. Sollte keines angegeben sein, so erscheint eine Warnung. Es wird an +% Stelle dessen das angegebene Enddatum oder aber das heutige Datum verwendet. +% \begin{macrocode} + \ifx\@thesis\@empty\else% + \ifdefstring{\@date}{\today}{% +% \end{macrocode} +% Durch das Paket \pkg{tudscrtask} wird das zusätzliche Feld \cs{@duedate} +% definiert, welches hier ggf. für auf ein nutzbares Datum geprüft wird. +% \begin{macrocode} + \ifdefvoid{\@duedate}{% + \ClassWarning{\tudcls@name}{% + `\string\submissiondate' or `\string\date' was not given.% + \MessageBreak% + Since a thesis is a self-contained work, an end\MessageBreak% + date should be specified by the author.\MessageBreak% + Nevertheless, today's date is used% + }% + }{% + \ClassWarning{\tudcls@name}{% + `\string\submissiondate' or `\string\date' was not given.% + \MessageBreak It's substituted by the given due date% + }% + \let\@date\@duedate% + }% + }{}% + \ifx\@date\@empty\else% + \vskip 2ex\@plus1ex\@minus1ex% + \ifstr{\datetext}{}{}{\datetext\@titledelim}% + {\usekomafont{date}{\@date\space\ignorespaces\@datemore\par}}% +% \end{macrocode} +% Zusätzlich kann noch ein Datum der mündlichen Verteidigung angegeben werden. +% \begin{macrocode} + \ifx\@defensedate\@empty\else% + \ifstr{\defensedatetext}{}{}{\defensedatetext\@titledelim}% + {\usekomafont{date}{\@defensedate\par}}% + \fi% + \fi% + \fi% + \fi% +% \end{macrocode} +% Zu guter Letzt kann das Standard-Verlagsfeld befüllt werden. +% \begin{macrocode} + \ifx\@publishers\@empty\else% + \vskip 2ex\@plus.25fill% + {\usekomafont{publishers}{\@publishers\par}}% + \vskip\z@\@plus.25fill% + \fi% + \endgroup% +% \end{macrocode} +% Die Rückseite des Titels wird~-- wie bei \KOMAScript~-- bloß bei zweiseitigem +% Satz ausgegeben. Für diese Klassen wird aufgrund der möglicherweise farbigen +% Rückseite das Hilfsmakro \cs{tud@titleback} benötigt. +% \begin{macrocode} + \let\tud@titleback\relax% + \if@twoside% + \@tempswatrue% + \ifx\@uppertitleback\@empty\ifx\@lowertitleback\@empty% + \@tempswafalse% + \fi\fi% + \if@tempswa% + \gdef\tud@titleback{% + \next@tpage% + \begin{minipage}[t]{\textwidth}% + \@uppertitleback% + \end{minipage}\par% + \vfill% + \begin{minipage}[b]{\textwidth}% + \@lowertitleback% + \end{minipage}\par% + \@thanks\let\@thanks\@empty% + }% + \fi% + \fi% +% \end{macrocode} +% Es werden Schriftart, abhängig \opt{heavyfont} die Schriftstärke, sowie die +% Farbe der Seite und des Kopfes und die Linienstärke des Querbalkens und die +% \DDC-Logos aus den Einstellungen übernommen. +% \begin{macrocode} + \def\@tempa{% + \tud@pagecolor{\tud@color@titlepage}% + \def\tud@head@color{\tud@color@titlehead}% + \color{\tud@color@titlefont}% + \addtokomafont{pagenumber}{\sffamily\color{\tud@color@titlefont}}% + \addtokomafont{footnote}{\sffamily\color{\tud@color@titlefont}}% + \thispagestyle{empty.tudheadings}% + \tud@ddc@enlargepage% + }% +% \end{macrocode} +% Bei der Ausgabe des Covers werden lediglich die Farb- und Schriftdefinitionen +% benötigt, die Seite kann danach beendet werden. +% \begin{macrocode} + \if@tud@cover% + \begingroup% + \@tempa% + \cleardoubleemptypage% + \tud@restorepagecolor% + \endgroup% + \else% +% \end{macrocode} +% Beim Titel selbst muss noch ausgewertet werden, wie die Rückseite zu +% gestalten ist. Sollte als Klassenoption das strikte Beginnen aller Teile +% oder Kapitel auf einer rechten Seite aktiviert sein (\opt{open=right}) und +% zusätzlich bei farbigem \CD auch die Rückseiten farbig geleert werden, so +% erfolgt dies auch für die Titelseite. Die Klasse \cls{tudscrartcl} setzt +% lediglich die Titelseite farbig, die Rückseite niemals. +% \begin{macrocode} +%<*book|report> + \tud@cleardoublespecialpage[\tud@titleback]{% +%</book|report> +%<*article> + \begingroup% +%</article> + \@tempa% + \begingroup% + \let\thispagestyle\@gobble% + \next@tpage% + \endgroup% +%<*article> + \tud@restorepagecolor% + \endgroup% + \tud@titleback% +%</article> +%<*book|report> + }% +%</book|report> +% \end{macrocode} +% Die Danksagung ist identisch zu \KOMAScript. +% \begin{macrocode} + \ifx\@dedication\@empty\else% + \next@tdpage\null\vfill% + {\centering\usekomafont{dedication}{\@dedication\par}}% + \vskip\z@\@plus3fill% + \@thanks\let\@thanks\@empty% + \cleardoubleemptypage% + \fi% + \fi% + \end{titlepage}% + \if@tud@cover\else% + \setcounter{footnote}{0}% + \global\let\and\relax% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@titleback +% \end{macro}^^A \tud@maketitlepage +% \begin{macro}{\tud@title@uppercase} +% Für das Setzen einzelner Felder in Majuskeln werden diese beiden Befehle +% definiert. Bei der Verwendung des Befehls \cs{thanks} auf der Titelseite soll +% sichergestellt werden, dass der Inhalt selbst nicht in Majuskeln gesetzt wird. +% \begin{macrocode} +\newcommand*\tud@title@uppercase[1]{% + \let\@tempa\relax% + \begingroup% +% \end{macrocode} +% Der Befehl \cs{thanks} wird so umdefiniert, dass der Inhalt in ein temporäres +% Makro gespeichert wird. Danach wird durch das Setzen einer temporären Box der +% Befehl \cs{thanks} ausgeführt und der Inhalt gesichert. Für die Ausführung von +% \cs{tud@makeuppercase} wird das Argument von \cs{thanks} ignoriert. Nachdem +% das gewünschte Feld in Majuskeln gesetzt wurde, wird die gespeicherte Fußnote +% ausgegeben. +% \begin{macrocode} + \def\thanks##1{\gdef\@tempa{##1}}% + \let\footnote\thanks% + \setbox0\vbox{#1}% + \let\thanks\@gobble% + \let\footnote\@gobble% + \tud@makeuppercase{#1}% + \endgroup% + \ifx\@tempa\relax\else\thanks\@tempa\fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@title@uppercase +% \begin{macro}{\tud@title@names} +% Dieser Befehl dient zur getrennten Ausgabe von mehreren, mit dem Makro +% \cs{and} separierten Einträgen in den Feldern \cs{@supervisor}, \cs{@referee} +% und \cs{@advisor}. +% \begin{macrocode} +\newcommand*\tud@title@names[1]{% + \letcs\@tempa{@#1}% + \ifx\@tempa\@empty\else% + \def\and{% + \ifcsvoid{#1othername}{\par}{% + \vskip 1ex\@plus.5ex\@minus.5ex% + {\usekomafont{titlepage}{\@nameuse{#1othername}\par}}% + }% + \let\and\par% + }% + \vskip 1ex\@plus.5ex\@minus.5ex% + {\usekomafont{titlepage}{\@nameuse{#1name}\par}}% + {\usekomafont{author}{\@nameuse{@#1}\par}}% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@title@names +% \begin{macro}{\titledelimiter} +% \begin{macro}{\@titledelim} +% Dieses Makro wird für das Trennzeichen auf der Titelseite genutzt. +% \begin{macrocode} +\newcommand*\@titledelim{:\nobreakspace} +\newcommand*\titledelimiter[1]{\gdef\@titledelim{#1}} +% \end{macrocode} +% \end{macro}^^A \@titledelim +% \end{macro}^^A \titledelimiter +% \begin{macro}{\tud@@maketitle} +% Der eigentliche Befehl für einen Titelkopf (\opt{titlepage=no}). +% \begin{macrocode} +\newcommand*\tud@@maketitle{% +% \end{macrocode} +% Ab der \KOMAScript-Version 3.11c gibt es mit \cs{@makeextratitle} einen +% neuen, separaten Befehl für das Feld \cs{@extratitle}. Falls eine frühere +% Version verwendet wird, muss der Extratitel hier mit \cs{tud@extratitle} +% gesetzt werden. +% \begin{macrocode} + \global\@topnum=\z@% + \vspace*{\dimexpr% + \tud@dim@headdiff+\tud@dim@headingsvskip-\baselineskip+\parskip\relax% + }% + \vspace*{\headingsvskip}% + \setparsizes{\z@}{\z@}{\z@\@plus1fil}\par@updaterelative% +% \end{macrocode} +% Damit die Farbeinstellungen der Schriften lokal begrenzt bleiben, wird dieser +% Teil des Titels in einer Gruppe (\cs{begingroup}) gesetzt. Außerdem werden +% wie auch für die Titelseite die Hyperlinks der Fußnoten deaktiviert. +% \begin{macrocode} + \begingroup% + \usekomafont{titlepage}% + \tud@footnote@unhyper% +% \end{macrocode} +% Ähnlich wie bei der Titelseite wird auch beim Titelkopf die Inhalte von +% \cs{@titlehead} und \cs{@subject} so nach oben verschoben, dass der Titel +% selbst auf der gewünschten Höhe landet. +% \begin{macrocode} + \setlength{\@tempdima}{\z@}% + \ifx\@titlehead\@empty\else% + \setbox0\vbox{% + \begin{minipage}[t]{\textwidth}% + {\usekomafont{titlehead}{\@titlehead\par\null}}% + \end{minipage}\newline\null% + }% + \addtolength{\@tempdima}{\dimexpr\ht0+\dp0\relax}% + \fi% +% \end{macrocode} +% Erkennen, ob in der Betreffzeile eine Abschlussarbeit ausgegeben werden soll +% und kann. Bei einem Titelkopf ist nur diese Variante möglich. +% \begin{macrocode} + \TUDoptions{subjectthesis=true}% + \tud@letsubjectthesis% + \ifx\@subject\@empty\else% + \setbox1\vbox{{\usekomafont{subject}{\@subject\par\null}}}% + \addtolength{\@tempdima}{\dimexpr\ht1+\dp1+1pt\relax}% + \fi% + \vspace*{-\@tempdima}% + \ifx\@titlehead\@empty\else\usebox0\par\fi% + \ifx\@subject\@empty\else\usebox1\par\fi% + {\usekomafont{title}{\tud@title@uppercase{\@title}\par}}% + \vskip 2ex\@plus1ex\@minus1ex% + \ifx\@subtitle\@empty\else% + {\usekomafont{subtitle}{\tud@title@uppercase{\@subtitle}\par}}% + \vskip 2ex\@plus1ex\@minus1ex% + \fi% + \vskip 2\bigskipamount% +% \end{macrocode} +% Ausgabe eines Autors oder mehrerer Autoren ggf. mit Zusatzinformationen. +% \begin{macrocode} + \tud@check@author% + \tud@multiple@split{@author}\par% + \vskip 2ex\@plus1ex\@minus1ex% +% \end{macrocode} +% Ausgabe von Datum, Verlag und Danksagung wie im Original. +% \begin{macrocode} + {\usekomafont{date}{\@date\space\ignorespaces\@datemore\par}}% + \ifx\@publishers\@empty\else% + \vskip 2ex\@plus1ex\@minus1ex% + {\usekomafont{publishers}{\@publishers\par}}% + \fi% + \ifx\@dedication\@empty\else% + \vskip 2ex\@plus1ex\@minus1ex% + {\centering\usekomafont{dedication}{\@dedication\par}}% + \fi% +% \end{macrocode} +% Falls Felder genutzt wurden, die nur auf der Titelseite, nicht aber im +% Titelkopf ausgegeben werden, dann wird eine Warnung ausgegeben. +% \begin{macrocode} + \ifx\@graduation\@empty\else\tud@title@wrn{graduation}\fi% + \ifx\@supervisor\@empty\else\tud@title@wrn{supervisor}\fi% + \ifx\@referee\@empty\else\tud@title@wrn{referee}\fi% + \ifx\@professor\@empty\else\tud@title@wrn{professor}\fi% +% \end{macrocode} +% Am Ende wird noch etwas vertikaler Abstand eingefügt. +% \begin{macrocode} + \vskip 2\bigskipamount% +% \end{macrocode} +% Wird das \DDC-Logo gesetzt, muss dafür am unteren Rand entsprechend Platz +% gelassen werden. +% \begin{macrocode} + \tud@ifinpslist{\titlepagestyle}{\tud@ddc@enlargepage}{}% + \endgroup% +} +% \end{macrocode} +% \end{macro}^^A \tud@@maketitle +% Es wird die Angabe einer kollaborativen Autorenschaft ermöglicht, wo für +% jeden einzelnen Autor weitere Angaben (Matrikelnummer etc.) gemacht werden +% können. Hierfür ist eine spezielle Art der Eingabe im Dokument notwendig. +% \begin{macro}{\tud@multiple@split} +% \begin{macro}{\tud@multiple@@split} +% \begin{macro}{\tud@multiple@@@split} +% \begin{macro}{\tud@multiple@field} +% Mehrere Autoren werden durch \cs{and} voneinander getrennt. Damit alle +% zusätzlichen Felder für alle Autoren einzeln nutzbar sind, muss der Inhalt +% des Feldes \cs{@author} an jedem \cs{and}-Befehl getrennt und für jeden Teil +% separat ausgewertet. Dafür wird der Befehl \cs{tud@multiple@@split} definiert, +% welcher allgemein gehalten ist um diesen auch für andere Felder nutzen zu +% können. Das obligatorische Argument ist dabei das Feld mit dem auszuwertenden +% Inhalt, der jeweils an \cs{and} getrennt werden soll. Dieses wird in +% \cs{tud@multiple@field} gespeichert. +% \begin{macrocode} +\newcommand*\tud@multiple@field{} +\newcommand*\tud@multiple@split[1]{% + \gdef\tud@multiple@field{#1}% + \begingroup% + \let\and\relax% +% \end{macrocode} +% Das Feld wird mit \cs{and} terminiert, um der Definition von +% \cs{tud@multiple@@split} in jedem Fall zu entsprechen. +% \begin{macrocode} + \edef\@tempa{\csname#1\endcsname\and}% + \expandafter\endgroup% + \expandafter\tud@multiple@@split\@tempa\relax% +} +% \end{macrocode} +% Das Makro \cs{tud@multiple@@split} wird so definiert, dass der Befehl +% \cs{and} als Separator für die einzelnen Argumente dient. Mit den beiden +% freigestellten Argumenten kann das Makro zur eigentlichen Ausgabe aufgerufen +% werden, welches aus dem gegebenen Feld (\cs{tud@multiple@field}) konstruiert +% wird (\cs{tud@split\meta{Feld}}). An dieses wird der jeweils aktuelle Autor +% im ersten Argument und die restlichen im zweiten Argument übergeben. +% \begin{macrocode} +\newcommand*\tud@multiple@@split{}% +\def\tud@multiple@@split#1\and#2\relax{% + \expandafter\csname tud@split\tud@multiple@field\endcsname{#1}{#2}% +} +% \end{macrocode} +% Der Befehl \cs{tud@multiple@@@split} prüft zum Schluss, ob noch weitere +% Autoren angegeben sind. Sollte dies der Fall sein, so wird der Inhalt des +% zweiten Argumentes ausgeführt und \cs{tud@multiple@@split} ein weiteres Mal +% aufgerufen, um so sequentiell alle Autoren abzuarbeiten. Dafür muss +% \cs{tud@multiple@@@split} innerhalb des verarbeitenden Makro +% (\cs{tud@split\meta{Feld}}) aufgerufen werden. +% \begin{macrocode} +\newcommand*\tud@multiple@@@split[2]{% + \ifx\relax#1\relax% + \def\@tempb{}% + \else% + \def\@tempb{#2\tud@multiple@@split#1\relax}% + \fi% + \@tempb% +} +% \end{macrocode} +% \end{macro}^^A \tud@multiple@field +% \end{macro}^^A \tud@multiple@@@split +% \end{macro}^^A \tud@multiple@@split +% \end{macro}^^A \tud@multiple@split +% \begin{macro}{\tud@multiple@setfields} +% Der Befehl \cs{tud@multiple@setfields}\marg{Initialisierung}\marg{Teilinhalt} +% wird verwendet, um innerhalb des Feldes \cs{@tud@multiple@field} zu prüfen, ob +% sich darin bestimmte Befehle aus \cs{tud@split\\meta{Feld}@list} zum Setzen +% zusätzlicher Informationen befinden. Sollte dies der Fall sein, so werden +% diese mit \meta{Initialisierung} initialisiert. Anschließend wird der +% übergebene Teilinhalt mit \cs{setbox0}\cs{vtop}\marg{\#1} in eine Box +% expandiert. Dieser Trick führt dazu, dass die Felder bereits gesetzt werden, +% ohne eine Ausgabe zu erzeugen. +% \begin{macrocode} +\newcommand*\tud@multiple@setfields[2]{% + \letcs\@tempa{tud@split\tud@multiple@field @list}% + \let\and\relax% + \@for\@tempb:=\@tempa\do{% + \ifx\@tempb\@empty\else% + \begingroup% + \protected@expandtwoargs\in@{\@tempb}{\@nameuse{\tud@multiple@field}}% + \ifin@ \@tempb{#1}\fi% + \endgroup% + \fi% + }% + \begingroup% + \let\thanks\@gobble% + \let\footnote\@gobble% + \setbox0\vtop{#2}% + \endgroup% +} +% \end{macrocode} +% \end{macro}^^A \tud@multiple@setfields +% \begin{macro}{\tud@check@author} +% \changes{v2.02}{2014/08/17}{neu}%^^A +% \begin{macro}{\tud@split@author} +% \changes{v2.02}{2014/07/25}{neu, aus Umbenennung \cs{tud@split@@author}}%^^A +% \begin{macro}{\tud@split@author@list} +% \changes{v2.02}{2014/07/25}{neu, Umbenennung \cs{tud@split@@author@list}}%^^A +% \begin{macro}{\tud@newline} +% Das Makro \cs{tud@split@author} dient der formatierten Ausgabe aller +% Informationen für mehrere Autoren auf der Titelseite. Falls das Autorenfeld +% nicht gesetzt wurde, wird mit \cs{tud@check@author} die standardmäßig +% vorhandene Warnung ausgegeben und danach das Feld als leer definiert. +% \begin{macrocode} +\newcommand*\tud@newline{} +\newcommand*\tud@check@author{% + \ifpatchable{\@author}{\@latex@warning@no@line}{\@author\gdef\@author{}}{}% +} +\newcommand*\tud@split@author[2]{% +% Zu Beginn werden alle Felder, welche innerhalb des \meta{Feld}-Argumentes +% angegeben sind, initial gelöscht (erstes Argument \cs{tud@multiple@setfields}) +% Anschließend werden die Felder des aktuellen Teils gefüllt (zweites Argument +% \cs{tud@multiple@setfields}). +% \begin{macrocode} + \tud@multiple@setfields{}{#1}% +% \end{macrocode} +% Um die Abstände definiert zu setzen, wird \cs{tud@newline} verwendet. Sobald +% auch nur eine zusätzliche Information ausgegeben werden soll, wird ein etwas +% kleiner Abstand eingefügt. Anschließend wird jede Information einfach in +% einer neuen Zeile ausgegeben. +% \begin{macrocode} + \def\tud@newline{\vskip .5ex\let\tud@newline\newline}% +% \end{macrocode} +% Die Felder \cs{@author} und ggf. \cs{@authormore} werden sowohl auf der +% Titelseite als auch im Titelkopf jedoch nicht auf der Umschlagseite +% ausgegeben. +% \begin{macrocode} + {\usekomafont{author}{\ignorespaces#1}}% + \if@tud@cover\else% + \ifx\@authormore\@empty\else% + \tud@newline% + \@authormore% + \fi% +% \end{macrocode} +% Nur auf der Titelseite erfolgt die Ausgabe von Geburtsdatum, Geburtsort, +% Matrikelnummer und Immatrikulationsjahr. Sollte ein Titelkopf verwendet +% werden, so wird für jedes gesetzte Feld eine Warnung ausgegeben. +% \begin{macrocode} + \ifx\@dateofbirth\@empty\else% + \if@titlepage% + \tud@newline% + \ifstr{\dateofbirthtext}{}% + {}{\dateofbirthtext\@titledelim}\@dateofbirth% + \ifx\@placeofbirth\@empty\else% + \space\placeofbirthtext\unskip\space\@placeofbirth% + \fi% + \else% + \tud@title@wrn{dateofbirth}% + \fi% + \fi% + \ifx\@matriculationnumber\@empty\else% + \if@titlepage% + \tud@newline% + \ifstr{\matriculationnumbername}{}% + {}{\matriculationnumbername\@titledelim}% + \@matriculationnumber% + \else% + \tud@title@wrn{matriculationnumber}% + \fi% + \fi% + \ifx\@matriculationyear\@empty\else% + \if@titlepage% + \tud@newline% + \ifstr{\matriculationyearname}{}% + {}{\matriculationyearname\@titledelim}% + \@matriculationyear% + \else% + \tud@title@wrn{matriculationyear}% + \fi% + \fi% + \fi% +% \end{macrocode} +% Durch den Aufruf von \cs{tud@multiple@@@split} wird das übergebene \meta{Feld} +% sukzessive abgearbeitet. +% \begin{macrocode} + \tud@multiple@@@split{#2}{\vskip 2ex}% +} +% \end{macrocode} +% Innerhalb von \cs{tud@split@author@list} werden die Feldbefehle hinterlegt, +% die durch \cs{tud@multiple@setfield} geprüft und ggf. initialisert werden +% sollen. +% \begin{macrocode} +\newcommand*\tud@split@author@list{% + \authormore,\matriculationyear,\enrolmentyear,% + \matriculationnumber,\studentid,\matriculationid,% + \placeofbirth,\birthplace,\dateofbirth,\birthday,% +} +% \end{macrocode} +% \end{macro}^^A \tud@newline +% \end{macro}^^A \tud@split@author@list +% \end{macro}^^A \tud@split@author +% \end{macro}^^A \tud@check@author +% \begin{macro}{\maketitleonecolumn} +% \changes{v2.02}{2014/08/16}{einspaltiger Text obligatorisch}%^^A +% \begin{macro}{\@maketitleonecolumn} +% \changes{v2.02}{2014/08/12}{entfernt}%^^A +% \begin{macro}{\tud@title@twocolumn} +% \begin{macro}{\tud@title@twocolumn@box} +% Zum Setzen eines einspaltigen Titels mit einspaltiger Zusammenfassung bei +% einem Titelkopf~-- dank der Hilfe von Markus Kohm.% +% \footnote{\url{http://www.komascript.de/node/1699}} +% +% Der Befehl \cs{maketitleonecolumn}\oarg{Parameter}\oarg{Inhalt} kann bei +% zweispaltigem Satz dazu genutzt werden, einen einspaltigen Titel zu bekommen. +% Beim der Verwendung einer Titelseite wird lediglich der Titel sowie +% anschließend ggf. \meta{Inhalt} einspaltig ausgegeben. Beim Satz eines +% Titelkopfes wird der Befehl \cs{tud@title@twocolumn} zur Ausgabe genutzt. +% \begin{macrocode} +\RequirePackage{afterpage}[1995/10/27] +\newcommand\maketitleonecolumn[2][]{% +% \end{macrocode} +% Hier erfolgt die Unterscheidung der Ausgabe, abhängig von der Option +% \opt{titlepage}. +% \begin{macrocode} + \if@twocolumn% + \if@titlepage% + \maketitle[#1]% + \onecolumn{#2}\twocolumn% + \else% + \tud@title@twocolumn[{\vspace*{.9\baselineskip}\maketitle[#1]{#2}}]% + \fi% + \else% + \ClassError{\tudcls@name}{% + `\string\maketitleonecolumn' can only be used in twocolumn mode% + }{}% + \fi% +} +% \end{macrocode} +% Es folgt die Verarbeitung des Inhaltes des Titelkopfes, welcher einspaltig +% gesetzt werden soll. Damit sich dieser auch über mehrere Seiten erstrecken +% kann, wird mit einer Box gearbeitet. +% \begin{macrocode} +\newsavebox\tud@title@twocolumn@box +\newcommand\tud@title@twocolumn[1][]{% +% \end{macrocode} +% Zunächst wird auf einseitigen Satz umgeschaltet. Der zu schreibende Inhalt +% wird in einer Box gespeichert. Während des Zusammenbaus der Box sind keine +% expliziten \cs{newpage}- oder \cs{clearpage}-Befehle erlaubt. +% \begin{macrocode} + \onecolumn% + \begingroup% + \let\clearpage\relax% + \let\newpage\relax% + \global\setbox\tud@title@twocolumn@box\vbox{#1\bigskip}% + \endgroup% +% \end{macrocode} +% Für den speziellen Satzspiegel mit dem \DDC-Logo im Fuß ist im Zweifelsfall +% etwas Anpassungarbeit von Nöten. Sollte dieser für die Titelseite benötigt +% werden, der entsprechende Seitenstil ist aber nicht geladen, so wird für die +% folgende Ausgaberoutine im ersten Durchlauf der Platz auf der Titelseite +% reduziert. +% \begin{macrocode} + \setlength{\@tempdimc}{\textheight}% + \tud@ifinpslist{\titlepagestyle}{% + \ifstr{\tud@currentgeometry}{tudareaddc}{}{% + \tud@ddc@check% + \ifcase \@tempb\relax\else% + \setlength{\@tempdimc}{\dimexpr\textheight-\tud@dim@ddcdiff}% + \fi% + }{}% + }{}% +% \end{macrocode} +% Jetzt werden der Inhalt stückweise so lange auf einzelnen Seiten ausgeben, +% bis der immer kleiner werdende Rest in der Box auf eine Seite passt. Dabei +% sollen für das seitenweise Zerteilen des Inhaltes innerhalb der Box dieselben +% Rahmenbedingungen für den Seitenaufbau gelten, wie auch im normalen Dokument. +% Nach der Ausgabe der ersten vollständigen Seite wird der verfügbare Platz auf +% das normale Maß zurückgesetzt. +% \begin{macrocode} + \@whiledim\@tempdimc<\ht\tud@title@twocolumn@box\do{% + \splittopskip\topskip% + \splitmaxdepth\maxdepth% + \vsplit\tud@title@twocolumn@box to \@tempdimc% + \clearpage% + \setlength{\@tempdimc}{\textheight}% + }% +% \end{macrocode} +% Der Rest wir einfach als optionales Argument von \cs{twocolumn} ausgegeben. +% \begin{macrocode} + \twocolumn[\unvbox\tud@title@twocolumn@box]% +% \end{macrocode} +% Sollte der einspaltige Teil bereits auf der Titelseite selbst beendet worden +% sein, so muss im zweispaltigen Satz für beide Spalten der Platz eingeschränkt +% werden. Leider ist das Vergrößern zweier Spalten in \LaTeXe nicht trivial +% möglich, weshalb hierfür wird das Paket \pkg{afterpage} benötigt wird. Es +% wird die aktuelle und mit \cs{afterpage} die nächstfolgende Spalte verkürzt. +% \begin{macrocode} + \ifdim\@tempdimc<\textheight\relax% + \enlargethispage{-\tud@dim@ddcdiff}% + \afterpage{\enlargethispage{-\tud@dim@ddcdiff}}% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@title@twocolumn@box +% \end{macro}^^A \tud@title@twocolumn +% \end{macro}^^A \@maketitleonecolumn +% \end{macro}^^A \maketitleonecolumn +% \begin{macro}{\tud@letsubjectthesis} +% Bei der Verwendung der Option \opt{subjectthesis} wird zum einen geprüft, ob +% das Feld \cs{@thesis} gesetzt ist und zum anderen, ob das Feld \cs{@subject} +% auch leer ist. +% \begin{macrocode} +\newcommand*\tud@letsubjectthesis{% + \if@tud@subjectthesis\ifx\@thesis\@empty\else% + \ifx\@subject\@empty\else% + \ClassWarning{\tudcls@name}{% + The option `subjectthesis' was activated.\MessageBreak% + The field `subject' will be overwritten with the\MessageBreak% + given thesis% + }% + \fi% + \let\@subject\@thesis% + \fi\fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@letsubjectthesis +% \begin{macro}{\tud@title@wrn} +% Bei der Nutzung eines Titelkopfes wird bloß eine reduzierte Menge an +% Informationen ausgegeben. Darauf wird der Anwender ggf. hingewiesen. +% \begin{macrocode} +\newcommand*\tud@title@wrn[1]{% + \ClassWarning{\tudcls@name}{% + `\@backslashchar#1' has to be used with\MessageBreak% + activated titlepage option% + }% +} +% \end{macrocode} +% \end{macro}^^A \tud@title@wrn +% \begin{macro}{\next@tdpage} +% \changes{v2.02}{2014/05/17}{entfernt}%^^A +% \begin{macro}{\tud@extratitle} +% \changes{v2.02}{2014/06/23}{entfernt}%^^A +% Mit \TUDScript~v2.02 wurde die Bereitstellung dieser beiden Befehle aufgrund +% der zwingenden Verwendung von \KOMAScript{}~v3.12 entfernt. +% \end{macro}^^A \tud@extratitle +% \end{macro}^^A \next@tdpage +% +% \subsection{Cover} +% +% Zusätzlich zur eigentlichen Titelseite kann für Druckerzeugnisse eine +% separate Umschlagseite erzeugt werden. Um die Gestaltung dieser anzupassen, +% wurden Einstellungsmöglichkeiten vorgesehen, die insbesondere den verwendeten +% Satzspiegel betreffen. +% \begin{macro}{\makecover} +% \changes{v2.02}{2014/06/23}{Warnung für die Option \opt{titlepage} mit dem +% Wert \val{firstiscover}}%^^A +% \changes{v2.02}{2014/08/08}{\cs{makecover} jetzt auch ohne \CD verwendbar}^^A +% \begin{macro}{\if@tud@cover} +% \begin{macro}{\tud@coverpagetopmargin} +% \changes{v2.02}{2014/08/12}{neu}^^A +% Der Befehl ist für ein Cover bei einem gebundenen Werk zu verwenden. +% \begin{macrocode} +\newif\if@tud@cover +\newcommand*\tud@coverpagetopmargin{} +\let\tud@coverpagetopmargin\coverpagetopmargin +\newcommand*\makecover[1][]{% +% \changes{v2.02}{2014/08/12}{Satzspiegel bei \opt{cdlayout=false} +% anpassbar}%^^A +% \end{macrocode} +% Ist die Option \opt{titlepage=firstiscover} aktiv, wird eine Warnung erzeugt. +% \begin{macrocode} + \if@titlepageiscoverpage% + \ClassWarning{\tudcls@name}{% + Using both option `titlepage=firstiscover' and\MessageBreak% + `\string\makecover' together isn't supported. The\MessageBreak% + option `titlepage=firstiscover' will be ignorded. If you\MessageBreak% + want to create an individual cover, you have to use\MessageBreak% + `\string\extratitle' instead of `\string\makecover'.\MessageBreak% + See also the documentation of KOMA-Script% + }% + \@titlepageiscoverpagefalse% + \fi% +% \end{macrocode} +% Die Erscheinung des Covers lässt sich durch wenige Optionen etwas anpassen. +% Standardmäßig ist das Cover farblos, die farbige Darstellung wird durch die +% Klassenoption \opt{cdcover} gewählt. Außerdem wird normalerwe ein Layout +% erzeugt, welches sich genau an die Vorgaben des \CDs hält und außerdem die +% Binderandkorrektur \emph{nicht} beachtet. Optional kann das Cover im +% Satzspiegel erstellt werden. Zuletzt ist die Verwendung der Schriften des +% \CDs deaktivierbar. +% \begin{macrocode} + \clearpage% + \begingroup% + \let\thanks\@gobble% + \let\footnote\@gobble% + \TUD@parameter@set[cover]{#1}% + \let\tud@layout@title\tud@layout@cover% + \tud@layout@process% +% \end{macrocode} +% Wird der Parameter \opt{cdlayout} aktiviert, werden die Seitenränder wie +% durch das \CD vorgegeben eingestellt. Andernfalls entsprechen diese den +% Einstellungen des Satzspiegels und können mit \cs{coverpage\dots margin} +% durch den Anwender angepasst werden. Der mit \cs{coverpagetopmargin} +% zusätzlich eingefügte, obere Seitenrand wird bei aktiviertem Parameter +% \opt{cdlayout} im Normalfall~-- sprich ohne eine Änderung des Befehls +% \cs{coverpagetopmargin}~-- durch \cs{tud@coverpagetopmargin} ausgeglichen, um +% den Titel auf der Umschlagseite in der richtigen vertikalen Position +% erscheinen zu lassen. +% \begin{macrocode} + \if@tud@cover@cdlayout% + \ifcase \tud@layout@cover\relax% + \let\coverpagetopmargin\tud@dim@top% + \else% + \def\coverpagetopmargin{% + \dimexpr\tud@dim@headheight+\tud@dim@barheight+\tud@dim@headsep\relax% + }% + \fi% + \let\coverpagebottommargin\tud@dim@bottom% + \let\coverpageleftmargin\tud@dim@left% + \let\coverpagerightmargin\tud@dim@right% + \else% + \ifcase \tud@layout@cover\relax\else% + \expandafter\def\expandafter\coverpagetopmargin\expandafter{% + \coverpagetopmargin-\tud@coverpagetopmargin% + }% + \fi% + \fi% +% \end{macrocode} +% Für den Fall, dass eine Umschlagseite gesetzt werden soll, die nicht im \CD +% erscheint, wird einfach das originale \cs{maketitle} aufgerufen und dabei +% die Option \opt{titlepage=firstiscover} verwendet, um die Seitenränder +% anpassen zu können. Außerdem werden ein mit \cs{extatitle} gegebener +% Schmutztitel ebenso ignoriert, wie Danksagung oder Einträge für die Rückseite. +% \begin{macrocode} + \ifcase \tud@layout@cover\relax% + \KOMAoptions{titlepage=firstiscover}% + \let\@extratitle\@empty% + \let\@uppertitleback\@empty% + \let\@lowertitleback\@empty% + \let\@dedication\@empty% + \ifx\tud@titlepagenumber\relax\gdef\tud@titlepagenumber{1}\fi% + \tud@cmd@use{maketitle}[\tud@titlepagenumber]% + \else% +% \end{macrocode} +% Der Befehl verwendet das Layout des Titels im \CD. Allerdings werden nicht +% alle sondern nur für ein Cover relavante Angaben ausgegeben. Der Schalter +% \cs{if@tud@cover} wird innerhalb des Befehles \cs{tud@maketitle} genutzt, um +% die Unterscheidung zu machen, ob es sich bei der aktuellen Ausgabe um das +% Cover oder aber die Titelseite handelt. +% \begin{macrocode} + \@tud@covertrue% + \@titlepagetrue% +% \end{macrocode} +% Der Satzspiegel wird hierfür äquivalent zu den \KOMAScript-Klassen gesetzt, +% wenn die Option \opt{titlepage=firstiscover} aktiviert ist. +% \begin{macrocode} + \edef\titlepage@restore{% + \noexpand\endgroup% + \noexpand\global\noexpand\@colht\the\@colht% + \noexpand\global\noexpand\@colroom\the\@colroom% + \noexpand\global\vsize\the\vsize% + \noexpand\let\noexpand\titlepage@restore\noexpand\relax% + }% + \begingroup% + \topmargin=\dimexpr \coverpagetopmargin-1in\relax% + \oddsidemargin=\dimexpr \coverpageleftmargin-1in\relax% + \evensidemargin=\dimexpr \coverpageleftmargin-1in\relax% + \textwidth=\dimexpr% + \paperwidth-\coverpageleftmargin-\coverpagerightmargin\relax% +% \end{macrocode} +% Bei der Höhe des Textbereiches und der Kopfzeile muss unterschieden werden, +% ob der Satzspiegel im \CD oder aber im Buchblock erfolgen soll. +% \begin{macrocode} + \if@tud@cover@cdlayout% + \textheight=\dimexpr% + \paperheight-\coverpagetopmargin-\coverpagebottommargin\relax% + \headheight=0pt% + \headsep=0pt% + \else% + \textheight=\dimexpr\paperheight-\coverpagebottommargin% + -\tud@dim@headheight-\tud@dim@barheight% + -\tud@dim@headsep-\tud@dim@bottom\relax% + \headheight=\dimexpr\tud@dim@headheight+\tud@dim@barheight\relax% + \headsep=\tud@dim@headsep% + \fi% + \footskip=\tud@dim@footskip% + \@colht=\textheight% + \@colroom=\textheight% + \vsize=\textheight% + \columnwidth=\textwidth% + \hsize=\columnwidth% + \linewidth=\hsize% + \tud@dim@headdiff=\z@% +% \end{macrocode} +% Weil bereits die Titelseite normalerweise die Seitenzahl eins bekommt, kann es +% bei der Verwendung des Paketes \pkg{hyperref} zu einer Warnung aufgrund der +% doppelt verwendeten Seitenzahl kommen. Um dies zu verhindern, werden die +% Seitenanker für das Cover deaktiviert. +% \begin{macrocode} + \ifdef{\hypersetup}{\hypersetup{pageanchor=false}}{}% +% \end{macrocode} +% Die Ausgabe des Covers und ggf. das Wiederherstellen des Satzspiegels. +% \begin{macrocode} + \tud@maketitle% + \clearpage% + \csname titlepage@restore\endcsname% + \fi% + \endgroup% +} +% \end{macrocode} +% \end{macro}^^A \tud@coverpagetopmargin +% \end{macro}^^A \if@tud@cover +% \end{macro}^^A \makecover +% \begin{parameter}{pagenumber} +% \begin{parameter}{cdfont} +% \begin{parameter}{cdfonts} +% \changes{v2.02}{2014/08/08}{entfernt}^^A +% \begin{parameter}{tudfonts} +% \changes{v2.02}{2014/08/08}{entfernt}^^A +% \begin{parameter}{cdlayout} +% \changes{v2.02}{2014/06/23}{neu}%^^A +% \begin{macro}{\if@tud@cover@cdlayout} +% Die einzelnen Parameter dienen zur Einstellung der Umschlagseite und +% entsprechen in ihrem Verhalten den gleichnamigen Klassenoptionen~-- +% \opt{cdlayout} ausgenommen. +% \begin{macrocode} +\newbool@lock{@tud@cover@cdlayout} +\TUD@parameter{cover}{% + \TUD@parameter@define{pagenumber}{\def\tud@titlepagenumber{#1}}% + \TUD@parameter@define{cdfont}[true]{\TUDoption{cdfont}{#1}}% + \TUD@parameter@define{cdlayout}[true]{% + \ifstr{#1}{true}{\setbool@lock{@tud@cover@cdlayout}{true}}{% + \ifstr{#1}{on}{\setbool@lock{@tud@cover@cdlayout}{true}}{% + \ifstr{#1}{yes}{\setbool@lock{@tud@cover@cdlayout}{true}}{% + \ifstr{#1}{false}{\setbool@lock{@tud@cover@cdlayout}{false}}{% + \ifstr{#1}{no}{\setbool@lock{@tud@cover@cdlayout}{false}}{% + \ifstr{#1}{off}{\setbool@lock{@tud@cover@cdlayout}{false}}{% + \TUD@parameter@wrn{cdlayout}{true,false}% + }}}}}}% + }% + \TUD@parameter@sethandler{% + \ifxnumber{#1}{% + \TUD@parameter@set[cover]{pagenumber=#1}% + }{% + \TUD@parameter@set[cover]{cdlayout=#1}% + }% + }% +}% +% \end{macrocode} +% \end{macro}^^A \if@tud@cover@cdlayout +% \end{parameter}^^A cdlayout +% \end{parameter}^^A tudfonts +% \end{parameter}^^A cdfonts +% \end{parameter}^^A cdfont +% \end{parameter}^^A pagenumber +% +% \iffalse +%</class&body> +% \fi +% +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr-twocolfix.dtx b/Master/texmf-dist/source/latex/tudscr/tudscr-twocolfix.dtx new file mode 100644 index 00000000000..ab4738a5131 --- /dev/null +++ b/Master/texmf-dist/source/latex/tudscr/tudscr-twocolfix.dtx @@ -0,0 +1,180 @@ +% \CheckSum{119} +% \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-twocolfix.dtx +%<*driver> +\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi +\ProvidesFile{tudscr-twocolfix.dtx}[% + 2014/11/21 v2.02 TUD-KOMA-Script\space% +%</driver> +%<package>\NeedsTeXFormat{LaTeX2e}[2011/06/27] +%<package>\ProvidesPackage{twocolfix}[% +%<*driver|package> +%!TUDVersion +%<package> package + (twocolumn layout bugfix)% +] +%</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-twocolfix.dtx} +\begin{document} + \maketitle + \DocInput{\filename} +\end{document} +%</driver> +% \fi +% +% \selectlanguage{ngerman} +% +% \changes{v2.02}{2014/07/10}{Versionsnummer angepasst}%^^A +% +% \section{Bugfix für den zweispaltigen Satz} +% +% Der \LaTeXe-Kernel enthält einen Fehler, der Kapitelüberschriften im +% zweispaltigen Layout höher setzt, als im einspaltigen. Der Fehler ist zwar +% schon länger bekannt,\footnote{\url{% +% http://www.latex-project.org/cgi-bin/ltxbugs2html?pr=latex/3126}} allerdings +% noch nicht in \pkg{ltxfix2e} übernommen worden. Das Paket \pkg{twocolfix} +% soll das Problem beheben. Eine Integration dieses Bugfixes in \KOMAScript{} +% wurde bereits bei Markus Kohm angefragt,\footnote{\url{% +% http://www.komascript.de/node/1681}} jedoch von ihm bis jetzt nicht weiter +% verfolgt. +% +% \StopEventually{\PrintIndex\PrintChanges} +% +% \iffalse +%<*package> +% \fi +% +% \subsection{Das Paket \pkg{twocolfix}} +% +% Es wird der fehlerhafte Befehl aus dem \LaTeXe-Kernel neu definiert. +% Allerdingds definieren die \KOMAScript"=Klassen das Makro \cs{@topnewpage} +% um und sichern vorher das Original in \cs{scr@topnewpage}. Daher wird der +% neue Befehl erst temporär definiert. +% \begin{macrocode} +\long\def \@tempa [#1]{% + \@nodocument% + \@next\@currbox\@freelist{}{}% + \global \setbox\@currbox% + \vbox {% + \break% + \prevdepth\z@% + \begingroup% + \normalcolor% + \hsize\textwidth% +% \end{macrocode} +% Damit der Inhalt des optionale Argumentes mit den gleichen Absatzeinstellungen +% gesetzt wird, darf der Befehl \cs{@parboxrestore} nicht aufgerufen werden. +% Alternativ müsste \KOMAScript{} eine Option bereitstellen, mit der sich die +% Einstellungen für Absätze wiederherstellen lassen. +% \begin{macrocode} +% \@parboxrestore +% \KOMAoptions{parskip=last} + \col@number \@ne% + \ignorespaces #1\par% + \ifdim\parskip>\z@\null\fi% + \vskip -\dbltextfloatsep% + \endgroup% + \ifdim\parskip>\z@\vskip\parskip\else\null\fi% + \vskip -\topskip% + }% + \begingroup% + \splitmaxdepth\maxdepth \splittopskip\topskip% + \setbox\@tempboxa \vsplit\@currbox to\z@% + \endgroup% + \ifdim \ht\@currbox>\textheight% + \ht\@currbox \textheight% + \fi% + \global \count\@currbox \tw@% + \@tempdima -\ht\@currbox% + \advance \@tempdima -\dbltextfloatsep% + \global \advance \@colht \@tempdima% + \ifx \@dbltoplist \@empty% + \else% + \@latexerr{Float(s) lost}\@ehb% + \let \@dbltoplist \@empty% + \fi% + \@cons \@dbltoplist \@currbox% + \global \@dbltopnum \m@ne% + \ifdim \@colht<2.5\baselineskip% + \@latex@warning@no@line {Optional argument of \noexpand\twocolumn + too tall on page \thepage}% + \@emptycol% + \if@firstcolumn% + \else% + \@emptycol% + \fi% + \else% + \global \vsize \@colht% + \global \@colroom \@colht% + \@floatplacement% + \fi% +} +% \end{macrocode} +% Nachdem der Befehl zuerst temporär definert wurde, wird nun abhängig von der +% aktiven Klasse der notwendige Befehl mit der neuen Definition überschrieben. +% \begin{macrocode} +\@ifundefined{scr@topnewpage} + {\let\@topnewpage\@tempa} + {\let\scr@topnewpage\@tempa} +% \end{macrocode} +% +% \iffalse +%</package> +% \fi +% +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr-version.dtx b/Master/texmf-dist/source/latex/tudscr/tudscr-version.dtx new file mode 100644 index 00000000000..afd592063fa --- /dev/null +++ b/Master/texmf-dist/source/latex/tudscr/tudscr-version.dtx @@ -0,0 +1,249 @@ +% \CheckSum{101} +% \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-version.dtx +% \fi +% +% \iffalse +% Nicht verwirren lassen! In dieser Datei steht die Dokumentation und der Code +% vor dem Treiber. Das ist notwendig, weil der Code bereits am Anfang des +% Treibers selbst benötigt wird. +% \fi +% +% \selectlanguage{ngerman} +% +% \changes{v1.0}{2012/10/31}{\TUDScript-Bundle erstellt und erstmalig +% veröffentlicht}%^^A +% \changes{v2.00}{2014/04/21}{\TUDScript-Bundle auf \pkg{docstrip} umgestellt +% und stark erweitert}%^^A +% \changes{v2.01}{2014/04/24}{Anpassungen in Dokumentation und +% Schriftinstallation, Fehlerkorrekturen}%^^A +% \changes{v2.02}{2014/05/14}{Probleme mit \pkg{calc} behoben}%^^A +% \changes{v2.02}{2014/05/16}{Mehrere Befehle für die Kompatibilität mit +% anderen Paketen umbenannt}%^^A +% +% \section{Version des \texorpdfstring{\TUDScript}{TUD-KOMA-Script}-Bundles} +% +% Für alle Klassen und Paketen, die zum \TUDScript-Bundle auf \KOMAScript-Basis +% gehören wird als erstes die aktuelle Version festgelgt. +% +% \StopEventually{\PrintIndex\PrintChanges} +% +% \begin{macro}{\TUDVersion} +% Dieses Makro gibt an, zu welcher \TUDScript"~Version die Datei gehört. Die +% Klassen und Pakete des Bundles verwenden dieses Makro außerdem zur eigenen +% Versionsangabe. +% \begin{macro}{\@TUDVersion} +% \changes{v2.02}{2014/07/22}{Expandieren der Versionsangabe bei der Verwendung +% von \pkg{docstrip} ermöglicht}%^^A +% Je nachdem, ob \cs{TUDVersion} bereits definiert ist oder nicht, wird die +% Definition überprüft oder eine globale Definition vorgenommen. Da das Ganze +% auch bei der Erstellung der Dokumentation geschieht, wird \cs{makeatletter} +% innerhalb einer Gruppe verwendet. +% \begin{macrocode} +\begingroup% + \catcode`\@11\relax% +%<*!(package|class)> + \ifx\newcommand\undefined% + \gdef\@TUDVersion#1{% + \gdef\TUDVersion{\space\space#1}% + \aftergroup\endinput% + }% + \else% +%</!(package|class)> + \ifx\TUDVersion\undefined% + \newcommand*\@TUDVersion[1]{\gdef\TUDVersion{#1}}% + \else% + \newcommand*\@TUDVersion[1]{% + \def\@tempa{#1}% + \ifx\TUDVersion\@tempa\else% + \@latex@warning@no@line{% + \noexpand\TUDVersion\space is `\TUDVersion',\MessageBreak% + but `#1' was expected!\MessageBreak% + You should not use classes, packages or files from\MessageBreak% + different TUD-KOMA-Script-Bundle versions% + }% + \fi% + }% + \fi% +%<*!(package|class)> + \fi% +%</!(package|class)> + \@TUDVersion{2014/12/17 v2.02 TUD-KOMA-Script}% +\endgroup% +% \end{macrocode} +% \end{macro}^^A \@TUDVersion +% \end{macro}^^A \TUDVersion +% +% \iffalse +%<*driver> +% \fi +\ProvidesFile{tudscr-version.dtx}[\TUDVersion\space (versions)] +% \iffalse +\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-version.dtx} +\begin{document} + \maketitle + \DocInput{\filename} +\end{document} +%</driver> +% \fi +% +% \begin{macro}{\tudscrmail} +% \begin{macrocode} +\providecommand*\tudscrmail{tudscr@gmail.com} +% \end{macrocode} +% \end{macro}^^A \tudscrmail +% +% \iffalse +%<*class> +% \fi +% +% \begin{macro}{\cls@name} +% \begin{macro}{\scrcls@name} +% \begin{macro}{\tudcls@name} +% Für die \TUDScript-Klassen werden hier einmalig die Namen der jeweiligen +% Klassen definiert. +% \begin{macrocode} +%<*article> +\newcommand*\cls@name{article} +\newcommand*\scrcls@name{scrartcl} +\newcommand*\tudcls@name{tudscrartcl} +%</article> +%<*report> +\newcommand*\cls@name{report} +\newcommand*\scrcls@name{scrreprt} +\newcommand*\tudcls@name{tudscrreprt} +%</report> +%<*book> +\newcommand*\cls@name{book} +\newcommand*\scrcls@name{scrbook} +\newcommand*\tudcls@name{tudscrbook} +%</book> +%<*doc> +\newcommand*\cls@name{doc} +\newcommand*\scrcls@name{scrdoc} +\newcommand*\tudcls@name{tudscrdoc} +%</doc> +%<*inherit> +\newcommand*\tudinh@name{tudscrreprt} +%</inherit> +% \end{macrocode} +% \end{macro}^^A \tudcls@name +% \end{macro}^^A \scrcls@name +% \end{macro}^^A \cls@name +% Der Quelltext für das Bereitstellen der Klassen. Es wird als Basis die +% korrespondierende \KOMAScript-Klasse geladen. +% \begin{macrocode} +%<*article|book|report> +\NeedsTeXFormat{LaTeX2e}[2011/06/27] +\ProvidesClass{\tudcls@name}[% +%!TUDVersion + document class (\cls@name)% +] +% \end{macrocode} +% Beim Verwenden der Klassen wird in der log-Datei ein Vermerk mit \cs{typeout} +% erstellt. +% \begin{macrocode} +\typeout{The Corporate Design of Technische Universitaet Dresden} +\typeout{Class: \tudcls@name} +\typeout{Version: \TUDVersion} +\typeout{Author: Falk Hanisch (\tudscrmail)} +\typeout{http://latex.wcms-file3.tu-dresden.de/phpBB3/index.php} +%</article|book|report> +% \end{macrocode} +% +% \iffalse +%</class> +%<*package&tudscr> +% \fi +% +% \subsection{Verwendbarkeit von \TUDScript-Paketen} +% +% Einige Pakete sind nur mit den \TUDScript-Klassen verwendbar. Diese erzeugen +% einen Fehler, wenn sie nicht mit diesen verwendet werden. +% \begin{macrocode} +\@ifundefined{tudcls@name}{% + \PackageError{% +%<comp> tudscrcomp% +%<manual> tudscrmanual% +%<supervisor> tudscrsupervisor% + }{Unsupported class found}{% + This package can only be used with a class out of the\MessageBreak% + tudscr bundle (tudscrartcl, tudscrreprt, tudscrbook)% + } + \endinput +}{} +% \end{macrocode} +% +% \iffalse +%</package&tudscr> +% \fi +% +% \subsection{Das \TUDScript-Logo} +% Der Schriftzug von \TUDScript. +% \begin{macro}{\TUDScript} +% \begin{macrocode} +\@ifundefined{TUDScript}{% + \DeclareRobustCommand{\TUDScript}{% + \ifdin{TUD-KOMA-SCRIPT}{% + \textsf{T\kern.05em U\kern.05em D\kern.1em-\kern.1em}\KOMAScript% + }\csname xspace\endcsname% + }% +}{} +% \end{macrocode} +% \end{macro}^^A \TUDScript +% +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr.ins b/Master/texmf-dist/source/latex/tudscr/tudscr.ins new file mode 100644 index 00000000000..c821e9aafce --- /dev/null +++ b/Master/texmf-dist/source/latex/tudscr/tudscr.ins @@ -0,0 +1,192 @@ +\input docstrip.tex +\begingroup +\catcode`\%=12 \catcode`\*=14 +\gdef\processLineX%#1{* + \ifcase\ifx%#10\else + \ifx<#11\else + \ifx!#12\else 3\fi\fi\fi\relax + \expandafter\putMetaComment\or + \expandafter\checkOption\or + \expandafter\expandVariable\or + \expandafter\removeComment\fi + #1} +\endgroup +\def\expandVariable!#1\endLine{% + \advance\codeLinesPassed\@ne + \maybeMsg{x}% + \edef\inLine{\csname #1\endcsname}% + \let\do\putline@do + \activefiles +} +\@@input tudscr-version.dtx + +\keepsilent + +\preamble + +============================================================================ + + TUD-KOMA-Script + Copyright (c) Falk Hanisch <tudscr[at]gmail.com>, 2012-2014 + +============================================================================ + + 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, + 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 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. + +============================================================================ + +\endpreamble + +\askforoverwritefalse + +\usedir{tex/latex/tudscr} +\generate{% + \usepreamble\defaultpreamble% + \file{tudscrbase.sty}{% + \from{tudscr-version.dtx}{package}% + \from{tudscr-base.dtx}{package}% + } + \file{tudscrbook.cls}{% + \from{tudscr-version.dtx}{class,book}% + \from{tudscr-base.dtx}{load}% + \from{tudscr-fonts.dtx}{class,option}% + \from{tudscr-pagestyle.dtx}{class,book,option}% + \from{tudscr-layout.dtx}{class,book,option}% + \from{tudscr-frontmatter.dtx}{class,book,option}% + \from{tudscr-title.dtx}{class,book,option}% + \from{tudscr-misc.dtx}{class,book,option}% + \from{tudscr-comp.dtx}{class,book,option}% + \from{tudscr-base.dtx}{execute}% + \from{tudscr-fonts.dtx}{class,body}% + \from{tudscr-color.dtx}{class,body}% + \from{tudscr-fields.dtx}{class,body}% + \from{tudscr-locale.dtx}{class,book,body}% + \from{tudscr-pagestyle.dtx}{class,book,body}% + \from{tudscr-layout.dtx}{class,book,body}% + \from{tudscr-frontmatter.dtx}{class,book,body}% + \from{tudscr-title.dtx}{class,book,body}% + \from{tudscr-misc.dtx}{class,book,body}% + \from{tudscr-comp.dtx}{class,book,body}% + } + \file{tudscrreprt.cls}{% + \from{tudscr-version.dtx}{class,report}% + \from{tudscr-base.dtx}{load}% + \from{tudscr-fonts.dtx}{class,option}% + \from{tudscr-pagestyle.dtx}{class,report,option}% + \from{tudscr-layout.dtx}{class,report,option}% + \from{tudscr-frontmatter.dtx}{class,report,option}% + \from{tudscr-title.dtx}{class,report,option}% + \from{tudscr-misc.dtx}{class,report,option}% + \from{tudscr-comp.dtx}{class,report,option}% + \from{tudscr-base.dtx}{execute}% + \from{tudscr-fonts.dtx}{class,body}% + \from{tudscr-color.dtx}{class,body}% + \from{tudscr-fields.dtx}{class,body}% + \from{tudscr-locale.dtx}{class,report,body}% + \from{tudscr-pagestyle.dtx}{class,report,body}% + \from{tudscr-layout.dtx}{class,report,body}% + \from{tudscr-frontmatter.dtx}{class,report,body}% + \from{tudscr-title.dtx}{class,report,body}% + \from{tudscr-misc.dtx}{class,report,body}% + \from{tudscr-comp.dtx}{class,report,body}% + } + \file{tudscrartcl.cls}{% + \from{tudscr-version.dtx}{class,article}% + \from{tudscr-base.dtx}{load}% + \from{tudscr-fonts.dtx}{class,option}% + \from{tudscr-pagestyle.dtx}{class,article,option}% + \from{tudscr-layout.dtx}{class,article,option}% + \from{tudscr-frontmatter.dtx}{class,article,option}% + \from{tudscr-title.dtx}{class,article,option}% + \from{tudscr-misc.dtx}{class,article,option}% + \from{tudscr-comp.dtx}{class,article,option}% + \from{tudscr-base.dtx}{execute}% + \from{tudscr-fonts.dtx}{class,body}% + \from{tudscr-color.dtx}{class,body}% + \from{tudscr-fields.dtx}{class,body}% + \from{tudscr-locale.dtx}{class,article,body}% + \from{tudscr-pagestyle.dtx}{class,article,body}% + \from{tudscr-layout.dtx}{class,article,body}% + \from{tudscr-frontmatter.dtx}{class,article,body}% + \from{tudscr-title.dtx}{class,article,body}% + \from{tudscr-misc.dtx}{class,article,body}% + \from{tudscr-comp.dtx}{class,article,body}% + } +} +\generate{% + \usepreamble\defaultpreamble% + \file{tudscrsupervisor.sty}{% + \from{tudscr-version.dtx}{package,supervisor,tudscr}% + \from{tudscr-supervisor.dtx}{package}% + \from{tudscr-fields.dtx}{package,supervisor}% + \from{tudscr-locale.dtx}{package,supervisor}% + } + \file{tudscrcomp.sty}{% + \from{tudscr-version.dtx}{package,comp,tudscr}% + \from{tudscr-comp.dtx}{package}% + } + \file{tudscrcolor.sty}{% + \from{tudscr-version.dtx}{package}% + \from{tudscr-color.dtx}{package}% + } + \file{twocolfix.sty}{% + \from{tudscr-twocolfix.dtx}{package}% + } + \file{mathswap.sty}{% + \from{tudscr-mathswap.dtx}{package}% + } + \file{tudscrfonts.sty}{% + \from{tudscr-version.dtx}{package}% + \from{tudscr-fonts.dtx}{package,identify}% + \from{tudscr-base.dtx}{load}% + \from{tudscr-fonts.dtx}{package,option}% + \from{tudscr-fonts.dtx}{package,body}% + } +} +\generate{% + \usepreamble\defaultpreamble% + \file{tudscrdoc.cls}{% + \from{tudscr-version.dtx}{class,doc}% + \from{tudscr-doc.dtx}{class,doc}% + \from{tudscr-misc.dtx}{class,doc}% + } +} +\generate{% + \usepreamble\defaultpreamble% + \file{tudscrman.sty}{% + \from{tudscr-version.dtx}{package,manual,tudscr}% + \from{tudscr-manual.dtx}{package,identify}% + \from{tudscr-base.dtx}{load}% + \from{tudscr-manual.dtx}{package,option}% + \from{tudscr-base.dtx}{}% + \from{tudscr-manual.dtx}{package,body}% + \from{tudscr-misc.dtx}{package,manual}% + } + \usepreamble\defaultpreamble% + \file{tudscrman.cls}{% + \from{tudscr-version.dtx}{class,inherit}% + \from{tudscr-manual.dtx}{class,identify}% + \from{tudscr-base.dtx}{load}% + \from{tudscr-manual.dtx}{class,option}% + \from{tudscr-base.dtx}{execute,inherit}% + \from{tudscr-manual.dtx}{class,body}% + \from{tudscr-misc.dtx}{class,manual}% + } +} +\endbatchfile |