summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/tudscr/source/tudscr-misc.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/tudscr/source/tudscr-misc.dtx')
-rw-r--r--macros/latex/contrib/tudscr/source/tudscr-misc.dtx715
1 files changed, 715 insertions, 0 deletions
diff --git a/macros/latex/contrib/tudscr/source/tudscr-misc.dtx b/macros/latex/contrib/tudscr/source/tudscr-misc.dtx
new file mode 100644
index 0000000000..72beb47c8a
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/tudscr-misc.dtx
@@ -0,0 +1,715 @@
+% \CheckSum{324}
+% \iffalse meta-comment
+%
+% TUD-Script -- Corporate Design of Technische Universität Dresden
+% ----------------------------------------------------------------------------
+%
+% Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2019
+%
+% ----------------------------------------------------------------------------
+%
+% This work may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License, version 1.3c of the license. The latest
+% version of this license is in http://www.latex-project.org/lppl.txt and
+% version 1.3c or later is part of all distributions of LaTeX 2005/12/01
+% or later and of this work. This work has the LPPL maintenance status
+% "author-maintained". The current maintainer and author of this work
+% is Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz
+% in der Version 1.3c, verteilt und/oder verändert werden. Die aktuelle
+% Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und
+% Version 1.3c oder später ist Teil aller Verteilungen von LaTeX 2005/12/01
+% oder später und dieses Werks. Dieses Werk hat den LPPL-Verwaltungs-Status
+% "author-maintained", wird somit allein durch den Autor verwaltet. Der
+% aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% \fi
+%
+% \CharacterTable
+% {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
+%<*dtx>
+% \fi
+%
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\ProvidesFile{tudscr-misc.dtx}[2019/08/20 v2.06c TUD-Script\space%
+ (miscellaneous)%
+]
+%
+% \iffalse
+\documentclass[english,ngerman,xindy]{tudscrdoc}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+\usepackage{babel}
+\usepackage{tudscrfonts}
+\KOMAoptions{parskip=half-}
+\usepackage{bookmark}
+\usepackage[babel]{microtype}
+
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{tudscr-misc.dtx}
+\title{\file{\filename}}
+\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
+\date{\fileversion\nobreakspace(\filedate)}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.02}{2014/06/23}{Paket \pkg{titlepage} nicht weiter unterstützt}^^A
+% \changes{v2.02}{2014/07/08}{\cs{FamilyKeyState} wird von Optionen genutzt}^^A
+%
+% \section{Verschiedenes für das \TUDScript-Bundle}
+%
+% Alles, wofür sich eine separate Datei nicht lohnt, landet hier.
+%
+% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
+%
+% \iffalse
+%<*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@key{tudbookmarks}[true]{%
+ \TUD@set@ifkey{tudbookmarks}{@tud@bookmarks}{#1}%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@bookmarks
+% \end{option}^^A tudbookmarks
+%
+% \iffalse
+%</class&option>
+%<*class&body>
+% \fi
+%
+% \begin{macro}{\tudbookmark}
+% \begin{macro}{\tud@x@hyperref@realfootnotes}
+% Die Befehle zum Eintragen der Sprungmarken. Im Dokument kann \cs{tudbookmark}
+% auch vom Anwender genutzt werden, um weitere Lesezeichen abhängig von der
+% Option \opt{tudbookmarks} manuell zu erzeugen.
+%
+% Für die Titelseite werden~-- wie auch durch das Paket \pkg{hyperref}~-- die
+% Fußnoten mit dem Befehl \cs{tud@x@hyperref@realfootnotes} auf den originalen
+% Zustand zurückgesetzt.
+% \begin{macrocode}
+\newcommand*\tudbookmark[1][]{\@gobbletwo}
+\newcommand*\tud@x@hyperref@realfootnotes{}
+\AfterPackage{hyperref}{%
+ \renewcommand*\tudbookmark[3][]{%
+ \relax%
+ \if@tud@bookmarks%
+ \phantomsection%
+ \ifblank{#1}{\pdfbookmark{#2}{#3}}{\pdfbookmark[#1]{#2}{#3}}%
+ \fi%
+ }%
+ \renewcommand*\tud@x@hyperref@realfootnotes{%
+ \let\Hy@saved@footnotemark\@footnotemark%
+ \let\Hy@saved@footnotetext\@footnotetext%
+ \let\@footnotemark\H@@footnotemark%
+ \let\@footnotetext\H@@footnotetext%
+ }%
+ \pdfstringdefDisableCommands{\let\NoCaseChange\@firstofone}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@x@hyperref@realfootnotes
+% \end{macro}^^A \tudbookmark
+% \begin{macro}{\tud@x@bookmark@startatroot}
+% \changes{v2.05}{2015/08/05}{neu}^^A
+% Wird das Paket \pkg{bookmark} geladen, können die erzeugten Outlines gezielt
+% auf der obersten Ebene erzeugt werden.
+% \begin{macrocode}
+\newcommand*\tud@x@bookmark@startatroot{\relax}
+\AfterPackage{bookmark}{%
+ \renewcommand*\tud@x@bookmark@startatroot{%
+ \if@tud@bookmarks\bookmarksetup{startatroot}\fi%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@x@bookmark@startatroot
+% \begin{environment}{titlepage}
+% \changes{v2.05}{2015/08/05}{neu}^^A
+% \begin{macro}{\@maketitle}
+% \changes{v2.05}{2015/08/05}{neu}^^A
+% \begin{macro}{\tud@maketitle@inpage}
+% \changes{v2.05}{2015/08/05}{neu}^^A
+% Ist die Option \opt{tudbookmarks} aktiviert, werden für Umschlag- und
+% Titelseite PDF"=Lesezeichen bzw. Outline-Einträge erzeugt.
+% \begin{macrocode}
+%<*book|report|article>
+\apptocmd{\titlepage}{%
+ \tud@x@bookmark@startatroot%
+ \@tud@res@swafalse%
+ \if@tud@coverpage\@tud@res@swatrue\fi%
+ \if@titlepageiscoverpage\@tud@res@swatrue\fi%
+ \if@tud@res@swa%
+ \tudbookmark[%
+%<book|report> 0%
+%<article> 1%
+ ]{\coverpagename}{cover}%
+ \else%
+ \tudbookmark[%
+%<book|report> 0%
+%<article> 1%
+ ]{\titlepagename}{title}%
+ \fi%
+}{}{\tud@patch@wrn{titlepage}}
+%</book|report|article>
+% \end{macrocode}
+% Dies geschieht außerdem auch für die Titelköpfe.
+% \begin{macrocode}
+\pretocmd{\tud@maketitle@inpage}{%
+ \tud@x@bookmark@startatroot%
+ \tudbookmark[%
+%<book|report> 0%
+%<article|poster> 1%
+ ]{\titlename}{title}%
+}{}{\tud@patch@wrn{tud@maketitle@inpage}}
+\pretocmd{\@maketitle}{%
+ \tud@x@bookmark@startatroot%
+ \tudbookmark[%
+%<book|report> 0%
+%<article|poster> 1%
+ ]{\titlename}{title}%
+}{}{\tud@patch@wrn{@maketitle}}
+% \end{macrocode}
+% \end{macro}^^A \tud@maketitle@inpage
+% \end{macro}^^A \@maketitle
+% \end{environment}^^A titlepage
+% \begin{macro}{\tableofcontents}
+% \begin{macro}{\listoffigures}
+% \begin{macro}{\listoftables}
+% Für die Verzeichnisse geschieht dies auch. Für das Inhaltsverzeichnis ist
+% hierfür etwas mehr Aufwand notwendig. Für dieses wird im Normalfall keine
+% PDF-Outline erzeugt. Deshalb ist hier ein wenig Trickserei notwendig, um zwar
+% einen Outline-Eintrag für das Inhaltsverzeichnis zu erzeugen, dieses dabei
+% aber nicht in sich selbst einzutragen.
+% \begin{macrocode}
+\BeforeTOCHead[toc]{%
+ \tud@x@bookmark@startatroot%
+ \let\@tempc\relax%
+ \iftocfeature{toc}{totoc}{}{%
+ \if@tud@bookmarks%
+ \setuptoc{toc}{totoc}%
+ \tud@cs@store{addtocontents}%
+ \def\@tempc{%
+ \unsettoc{toc}{totoc}%
+ \tud@cs@restore{addtocontents}%
+ }%
+ \let\addtocontents\@gobbletwo%
+ \fi%
+ }%
+}
+\AfterTOCHead[toc]{\@tempc}
+\BeforeTOCHead[lof]{\tud@x@bookmark@startatroot}
+\BeforeTOCHead[lot]{\tud@x@bookmark@startatroot}
+% \end{macrocode}
+% \end{macro}^^A \listoftables
+% \end{macro}^^A \listoffigures
+% \end{macro}^^A \tableofcontents
+%
+% \iffalse
+%</class&body>
+%<*class&option>
+% \fi
+%
+% \subsection{Fußnoten in Überschriften}
+%
+% Eigentlich sollte die Option \opt{footnotes}|=|\val{symbolheadings} es
+% ermöglichen, Fußnoten mit Symbolen in Überschriften zu verwenden. Umgesetzt
+% werden sollte dies mit dem Paket \pkg{footmisc}. Da dieses aber mit
+% Inkompatibilitäten zu \pkg{hyperref} und \KOMAScript{} aufwartet, wird darauf
+% leider verzichtet.
+%^^A% \begin{option}{footnotes}
+%^^A% \changes{v2.02}{2014/06/27}{neu}^^A
+%^^A% \begin{macro}{\if@tud@symbolheadings}
+%^^A% \changes{v2.02}{2014/06/27}{neu}^^A
+%^^A% \begin{macro}{\tud@sec@note}
+%^^A% \changes{v2.02}{2014/06/27}{neu}^^A
+%^^A% \begin{counter}{symbolheadings}
+%^^A% \changes{v2.02}{2014/06/27}{neu}^^A
+%^^A% Die \KOMAScript-Option \opt{footnotes} wird um den Schlüssel
+%^^A% \val{symbolheadings} erweitert, mit welchem eingestellt werden kann, ob
+%^^A% in den Überschriften Symbole für die Fußnoten anstelle von Zahlen
+%^^A% verwendet werden sollen.
+%^^A% \begin{macrocode}
+%^^A\newif\if@tud@symbolheadings
+%^^A\TUD@key{footnotes}{%
+%^^A \TUD@set@numkey{footnotes}{@tempa}{%
+%^^A {nosymbolheadings}{0},{numberheadings}{0},%
+%^^A {symbolheadings}{1}%
+%^^A }{#1}%
+%^^A \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+%^^A \ifcase\@tempa\relax% nosymbolheadings
+%^^A \@tud@symbolheadingsfalse%
+%^^A \or% symbolheadings
+%^^A \@tud@symbolheadingstrue%
+%^^A \fi%
+%^^A \fi%
+%^^A}
+%^^A% \end{macrocode}
+%^^A% Mit \cs{tud@sec@note} wird die Option \opt{footnotes=symbolheadings}
+%^^A% umgesetzt. Hierfür wird das Paket \pkg{footmisc} benötigt.
+%^^A% \begin{macrocode}
+%^^A\newcommand*\tud@sec@note[1]{%
+%^^A \ClassWarning{\TUD@Class@Name}{%
+%^^A You have to load package `footmisc' with\MessageBreak%
+%^^A option `stable' in order to use\MessageBreak%
+%^^A footnotes with symbols in headings%
+%^^A }%
+%^^A}
+%^^A\AfterPackage{footmisc}{%
+%^^A \@ifpackagewith{footmisc}{stable}{%
+%^^A \renewcommand*\tud@sec@note[1]{%
+%^^A \begingroup%
+%^^A \if@tud@symbolheadings%
+%^^A \let\c@footnote\c@symbolheadings%
+%^^A \def\thefootnote{\fnsymbol{symbolheadings}}%
+%^^A \fi%
+%^^A \footnote{#1}%
+%^^A \endgroup%
+%^^A }%
+%^^A }{}%
+%^^A}
+%^^A% \end{macrocode}
+%^^A% Bei aktivierter Option \opt{footnotes}|=|\val{symbolheadings} wird
+%^^A% dieser Zähler für die Symboleauswahl von Fußnoten in Überschirften
+%^^A% inkrementiert.
+%^^A% \begin{macrocode}
+%^^A\AtEndOfClass{%
+%^^A%<book|report> \newcounter{symbolheadings}[chapter]
+%^^A%<article|poster> \newcounter{symbolheadings}
+%^^A}
+%^^A% \end{macrocode}
+%^^A% \end{counter}^^A symbolheadings
+%^^A% \end{macro}^^A \tud@sec@note
+%^^A% \end{macro}^^A \if@tud@symbolheadings
+%^^A% \end{option}^^A footnotes
+%
+% \subsection{Papierformat und Schriftgröße}
+%
+% Insbesondere für Poster aber auch für alle anderen \TUDScript-Klassen wird
+% überprüft, ob nach einer Änderung des Standardpapierformates auch die
+% Schriftgröße durch den Anwender angepasst wurde. Diese wird jedoch nicht auf
+% Plausibilität geprüft, da der Aufwand hierfür relativ hoch wäre. Vielmehr
+% wird davon ausgegangen, dass die explizite Angabe der Schriftgröße bewusst
+% und dem Papierformat sowie den verwendeten Textspalten entsprechend erfolgt.
+%
+% \begin{macro}{\tud@x@scr@checkoptions}
+% \changes{v2.06}{2018/07/31}{neu}^^A
+% \begin{macro}{\tud@x@scr@pt}
+% \changes{v2.06}{2018/07/31}{neu}^^A
+% Das Makro \cs{tud@x@scr@checkoptions} wird mit \cs{DeclareOption*} für alle
+% Optionen aufgerufen, welche kein Mitglied der Familie~\val{TUD} sind. Damit
+% kann auf nicht definierte Schlüssel reagiert werden. Anschließend werden diese
+% an die zugrundeliegende \KOMAScript-Klasse weitergereicht.
+% \begin{macrocode}
+\newcommand*\tud@x@scr@checkoptions{%
+ \expandafter\tud@x@scr@pt\CurrentOption pt\@nil%
+ \PassOptionsToClass{\CurrentOption}{\TUD@Class@KOMA}%
+}
+% \end{macrocode}
+% Wird die Schriftgröße im veralteten Format \val{\dots pt} übergeben, so wird
+% der Schalter \cs{if@tud@x@scr@fontsize@set} auf \val{true} gesetzt.
+% \begin{macrocode}
+\newcommand*\tud@x@scr@pt{}
+\def\tud@x@scr@pt #1pt#2\@nil{%
+ \ifstr{#2}{pt}{\ifnumber{#1}{\@tud@x@scr@fontsize@settrue}{}}{}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@x@scr@pt
+% \end{macro}^^A \tud@x@scr@checkoptions
+%
+% \iffalse
+%</class&option>
+%<*class&body>
+% \fi
+%
+% Wurde das Papierformat jedoch nicht die Schriftgröße geändert, wird eine
+% Warnung erzeugt.
+% \begin{macrocode}
+\AtBeginDocument{%
+ \if@tud@x@scr@fontsize@set\else%
+ \@tud@res@swafalse%
+ \ifdim\tud@len@layoutwidth<208mm\relax\@tud@res@swatrue\fi%
+ \ifdim\tud@len@layoutwidth>212mm\relax\@tud@res@swatrue\fi%
+ \ifdim\tud@len@layoutheight<295mm\relax\@tud@res@swatrue\fi%
+ \ifdim\tud@len@layoutheight>299mm\relax\@tud@res@swatrue\fi%
+ \if@tud@res@swa%
+ \ClassWarningNoLine{\TUD@Class@Name}{%
+ You've set a layout size, which is different from\MessageBreak%
+ default (paper=a4, paper=portrait). Therefore you\MessageBreak%
+ should additionally specify an explicit font size. \MessageBreak%
+ See the manual for further information%
+ }%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+%
+% \iffalse
+%</class&body>
+%<*class&!inherit|package&fonts>
+%<*option>
+% \fi
+%
+% \subsection{Sukkzessives Abarbeiten von Optionen im Dokument}
+%
+% Werden mit \cs{TUDoptions} nach \cs{begin\{document\}} mehrere Layoutoptionen
+% gleichzeitig angegeben, muss dafür Sorge getragen werden, dass diese in der
+% korrekten Reihenfolge abgearbeitet werden.
+%
+% Das Makro \cs{TUD@SpecialOptionAtDocument} kann innerhalb von \cs{TUD@key}
+% verwendet werden, um einen im obligatorischen Argument angegebenen Schalter
+% zu aktivieren. Dabei wird über \cs{tud@atdocument@hook} garantiert, dass der
+% Befehl \cs{tud@atdocument@process}, welcher für die Abarbeitung der einzelnen
+% Makros in der richtigen Reihenfolge verantwortlich ist, lediglich einmal über
+% \cs{AtEndOfFamilyOptions*} ausgeführt wird.
+%
+% \begin{macro}{\TUD@SpecialOptionAtDocument}
+% \changes{v2.05}{2016/06/14}{neu}^^A
+% \begin{macro}{\tud@atdocument@hook}
+% \changes{v2.05}{2016/06/14}{neu}^^A
+% \begin{macrocode}
+\newcommand*\tud@atdocument@hook{}
+\let\tud@atdocument@hook\relax
+\newcommand*\TUD@SpecialOptionAtDocument[1]{}
+\AfterEndPreamble{%
+ \renewcommand*\TUD@SpecialOptionAtDocument[1]{%
+ \ifx\tud@atdocument@hook\relax%
+ \gdef\tud@atdocument@hook{\global\let\tud@atdocument@hook\relax}%
+ \AtEndOfFamilyOptions*{%
+ \tud@atdocument@hook%
+ \tud@atdocument@process%
+ }%
+ \fi%
+ \gappto\tud@atdocument@hook{\global\booltrue{@#1}}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@atdocument@hook
+% \end{macro}^^A \TUD@SpecialOptionAtDocument
+%
+% \iffalse
+%</option>
+%<*body>
+% \fi
+%
+% \begin{macro}{\tud@atdocument@process}
+% \changes{v2.05}{2016/06/14}{neu}^^A
+% \begin{macro}{\if@tud@font@set}
+% \changes{v2.05}{2016/06/14}{neu}^^A
+% \begin{macro}{\if@tud@math@set}
+% \changes{v2.05}{2016/06/14}{neu}^^A
+% \begin{macro}{\if@tud@font@skip@set}
+% \changes{v2.05}{2016/06/14}{neu}^^A
+% \begin{macro}{\if@tud@x@scr@headings@reset}
+% \changes{v2.05}{2016/06/14}{neu}^^A
+% \begin{macro}{\if@tud@cd@process}
+% \changes{v2.05}{2016/06/14}{neu}^^A
+% \begin{macro}{\if@tud@cdgeometry@process}
+% \changes{v2.05}{2016/06/14}{neu}^^A
+% Das Makro \cs{tud@atdocument@process} wird im Dokument ausgeführt, wenn
+% mindestens eine Option gesetzt wurde, welche \cs{TUD@SpecialOptionAtDocument}
+% verwendet. Je nachdem, welche Schalter insgesamt aktiviert wurden, werden die
+% dazugehörigen Befehle für die Einstellungen von Schriften, Layout und/oder
+% Satzspiegel in der richtigen Reihenfolge ausgeführt.
+% \begin{macrocode}
+\newif\if@tud@font@set
+\newif\if@tud@math@set
+\newif\if@tud@font@skip@set
+%<*class>
+\newif\if@tud@x@scr@headings@reset
+\newif\if@tud@cd@process
+\newif\if@tud@cdgeometry@process
+%</class>
+\newcommand*\tud@atdocument@process{%
+ \if@tud@font@set%
+ \tud@font@set%
+ \global\@tud@font@setfalse%
+ \global\@tud@font@skip@setfalse%
+%<class> \global\@tud@cd@processfalse%
+ \fi%
+ \if@tud@font@skip@set%
+ \tud@font@skip@set%
+ \global\@tud@font@skip@setfalse%
+ \fi%
+ \if@tud@math@set%
+ \tud@math@set%
+ \global\@tud@math@setfalse%
+ \fi%
+%<*class>
+ \if@tud@x@scr@headings@reset%
+ \tud@x@scr@headings@reset%
+ \global\@tud@x@scr@headings@resetfalse%
+ \global\@tud@cd@processfalse%
+ \fi%
+ \if@tud@cd@process%
+ \tud@cd@process%
+ \global\@tud@cd@processfalse%
+ \fi%
+ \if@tud@cdgeometry@process%
+ \tud@cdgeometry@process%
+ \global\@tud@cdgeometry@processfalse%
+ \fi%
+%</class>
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@cdgeometry@process
+% \end{macro}^^A \if@tud@cd@process
+% \end{macro}^^A \if@tud@x@scr@headings@reset
+% \end{macro}^^A \if@tud@font@skip@set
+% \end{macro}^^A \if@tud@math@set
+% \end{macro}^^A \if@tud@font@set
+% \end{macro}^^A \tud@atdocument@process
+%
+% \iffalse
+%</body>
+%</class&!inherit|package&fonts>
+%<*execute>
+%<*class&!inherit|package&fonts>
+% \fi
+%
+% \subsection{Versionsabhängige Voreinstellungen}
+%
+% Voreinstellungen von neu eingeführten Optionen, welche die resultierende
+% Ausgabe entscheidend verändern könnten, werden hier versionsabhängig gesetzt.
+% Hierfür wird der Schlüssel \opt{tudscrver} des Mitglieds \val{.comp} vor
+% allen anderen Schlüsseln ausgewertet. Danach kann mit \cs{tud@if@v@lower} auf
+% die gewählte Kompatibilitäsversion getestet werden.
+% \begin{macrocode}
+\DeclareOption*{}
+\FamilyProcessOptions[.comp]{TUD}\relax
+% \end{macrocode}
+% Ab der \TUDScript-Version~v2.05 werden einige vertikale Abstände abhängig von
+% der Schriftgröße definiert. Sollte eine frühere Kompatibilitätseinstellung
+% angegeben worden sein, wird dieses verhalten deaktiviert.
+% \begin{macrocode}
+\tud@if@v@lower{2.05}{%
+ \TUD@key@preset{relspacing}{false}%
+}{%
+ \TUD@key@preset{relspacing}{true}%
+}
+% \end{macrocode}
+% Ab \TUDScript-Version~v2.06 werden die verwendeten Schriften auf \OpenSans
+% gesetzt, für die Komptibilität zu vorherigen Versionen auf \Univers und \DIN.
+% \begin{macrocode}
+\tud@if@v@lower{2.06}{%
+%<!(class&poster)> \TUD@key@preset{cdoldfont}{true}%
+%<class&poster> \TUD@key@preset{cdoldfont}{ultrabold}%
+ \TUD@key@preset{ttfont}{lmodern}%
+%<class> \TUD@key@preset{headings}{light}%
+}{%
+%<!(class&poster)> \TUD@key@preset{cdfont}{true}%
+%<class&poster> \TUD@key@preset{cdfont}{ultrabold}%
+ \TUD@key@preset{ttfont}{roboto}%
+%<class> \TUD@key@preset{headings}{heavy}%
+}
+% \end{macrocode}
+%
+% \iffalse
+%</class&!inherit|package&fonts>
+% \fi
+%
+% \subsection{Durchreichen von Optionen und Standardoptionen}
+%
+% Durchreichen aller Klassenoptionen an die \KOMAScript-Klasse bzw. an die
+% genutzte \TUDScript-Elternklasse. Für Klassen wird vor dem Durchreichen noch
+% geprüft, ob ein spezielles Papierformat angegeben wurde.
+% \begin{macrocode}
+%<*package>
+%<*fonts>
+\DeclareOption*{\KOMAoptions{\CurrentOption}}
+%</fonts>
+%<*fixfonts>
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{tudscrfonts}}
+%</fixfonts>
+%<*comp>
+\DeclareOption*{\TUDoptions{\CurrentOption}}
+%</comp>
+%</package>
+%<*class>
+%<*!inherit>
+\DeclareOption*{\tud@x@scr@checkoptions}
+%</!inherit>
+%<*inherit>
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\TUD@Class@Parent}}
+%</inherit>
+%</class>
+% \end{macrocode}
+% Es werden die Standardoptionen ausgeführt. Für die Klasse \cls{tudscrposter}
+% werden die Farben aktiviert.
+% \begin{macrocode}
+%<*package&tutorial>
+\KOMAoptions{headings=small}
+\TUDoptions{cdfoot=true}
+%</package&tutorial>
+\TUDExecuteOptions{%
+%<*package>
+%<*fixfonts>
+ headings=heavy%
+%</fixfonts>
+%<*tutorial>
+ ToDo=true%
+%</tutorial>
+%</package>
+%<*class&!inherit>
+%<*book|report|article>
+ cd=true,tudbookmarks=true%
+%</book|report|article>
+%<*poster>
+ cd=bicolor,tudbookmarks=false%
+%</poster>
+%</class&!inherit>
+}
+\TUDProcessOptions\relax
+% \end{macrocode}
+% Die korrespindierende \KOMAScript-Klasse bzw. \TUDScript-Elternklasse wird
+% geladen.
+% \begin{macrocode}
+%<*class&!inherit>
+\LoadClass{\TUD@Class@KOMA}[2018/03/30]
+%</class&!inherit>
+%<*class&inherit>
+%<manual>\PassOptionsToClass{ttfont=roboto}{\TUD@Class@Parent}
+\LoadClass{\TUD@Class@Parent}
+%</class&inherit>
+% \end{macrocode}
+%
+% \iffalse
+%<*class&!inherit|package&fonts>
+% \fi
+%
+% \subsection{Optionen ohne späte Wahlmöglichkeit}
+%
+% Einige Optionen können nur zum Zeitpunkt des Ladens einer Klasse oder eines
+% Paketes respektive in der Präambel gesetzt werden. Diese müssen \emph{nach}
+% \cs{TUDProcessOptions} mit \cs{TUD@key@toolate} redefiniert werden.
+%
+% \begin{macro}{\TUD@key@toolate}
+% \changes{v2.06c}{2019/08/20}{neu}^^A
+% Dieser Befehl definiert eine Fehlermeldung für Schlüssel respektive Optionen,
+% die zu spät verwendet wurden, wobei er innerhalb der Makros \cs{AtEndOfClass},
+% \cs{AtEndOfClass}, \cs{AtEndPreamble} etc. genutzt werden sollte. Wird dieser
+% noch im Kontext von Klasse oder Paket (\verb=\@currname.\@currext-h@@k=)
+% verwendet, wird gemeldet, dass der Schlüssel allein beim Laden der Klasse
+% respektive des Paketes genutzt werden darf. Andernfalls wird die zwingende
+% Verwendung in der Präambel angemerkt.
+% \begin{macrocode}
+\newcommand*\TUD@key@toolate[1]{%
+ \csedef{tud@key@#1@error}{%
+%<*class>
+ \noexpand\ClassError{\noexpand\TUD@Class@Name}%
+%</class>
+%<*package&fonts>
+ \noexpand\PackageError{tudscrfonts}%
+%</package&fonts>
+ {Option `#1' too late}{%
+ Option `#1' can only be set\space%
+ \ifcsname \@currname.\@currext-h@@k\endcsname%
+ as optional \MessageBreak argument while loading\space%
+%<*class>
+ class `\noexpand\TUD@Class@Name'%
+%</class>
+%<*package&fonts>
+ package `tudscrfonts'%
+%</package&fonts>
+ \else%
+ in the preamble
+ \fi%
+ \MessageBreak but you have tried to set it up later.%
+ }%
+ }%
+ \TUD@key{#1}[]%
+ {%
+ \csuse{tud@key@#1@error}
+ \FamilyKeyStateProcessed%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \TUD@key@toolate
+%
+%
+% \iffalse
+%</class&!inherit|package&fonts>
+%</execute>
+%<*body>
+% \fi
+%
+% \subsection{Anpassungen für das Paket \pkg{textcase}}
+%
+% \begin{macro}{\@uclcnotmath}
+% \begin{macro}{\tud@x@textcase@uclcnotmath}
+% \changes{v2.02}{2014/06/27}{\pkg{textcase}: Ignorieren von Fußnoten im
+% Argument des Befehls \cs{MakeTextUppercase}}^^A
+% \changes{v2.03}{2015/01/21}{\pkg{textcase}: Ignorieren des Befehls
+% \cs{@mkboth} im Argument des Befehls \cs{MakeTextUppercase}}^^A
+% Damit Fußnoten innerhalb von \cs{MakeTextUppercase} nicht in Majuskeln
+% gesetzt werden, wird der interne Befehl \cs{@uclcnotmath} aus dem Paket
+% \pkg{textcase} angepasst.
+% \begin{macrocode}
+\if@tud@cdoldfont@active
+ \RequirePackage{textcase}[2004/10/07]
+ \AfterPackage*{textcase}{%
+ \robustify\NoCaseChange%
+ \newcommand*\tud@x@textcase@uclcnotmath{%
+ \@nonchangecase\hologo%
+ \def\footnote##1##{\toks@{\noexpand\footnote##1}\@footnote}%
+ \def\@footnote##1{\NoCaseChange{\the\toks@{##1}}}%
+ \def\@mkboth##1##2{\NoCaseChange{\@mkboth{##1}{##2}}}%
+ }%
+ \patchcmd{\@uclcnotmath}{\@nonchangecase\ensuremath}{%
+ \@nonchangecase\ensuremath\tud@x@textcase@uclcnotmath%
+ }{}{\tud@patch@wrn{@uclcnotmath}}%
+ }%
+\fi
+\TUD@deprecated@cs{NoCaseChange}{@firstofone}
+% \end{macrocode}
+% \end{macro}^^A \tud@x@textcase@uclcnotmath
+% \end{macro}^^A \@uclcnotmath
+%
+% \iffalse
+%</body>
+% \fi
+%
+% \Finale
+%
+\endinput