summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/tudscr/source/tudscr-fonts.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/tudscr/source/tudscr-fonts.dtx')
-rw-r--r--macros/latex/contrib/tudscr/source/tudscr-fonts.dtx4268
1 files changed, 4268 insertions, 0 deletions
diff --git a/macros/latex/contrib/tudscr/source/tudscr-fonts.dtx b/macros/latex/contrib/tudscr/source/tudscr-fonts.dtx
new file mode 100644
index 0000000000..228304d9ee
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/tudscr-fonts.dtx
@@ -0,0 +1,4268 @@
+% \CheckSum{3123}
+% \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-fonts.dtx
+%<*dtx>
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+% \fi
+%
+\ProvidesFile{tudscr-fonts.dtx}[2019/08/27 v2.06d TUD-Script\space%
+%
+% \iffalse
+%</dtx>
+%<package&identify>\ProvidesPackage{tudscrfonts}[%
+%<*package&identify>
+%!TUD@Version
+%</package&identify>
+%<package&identify> package
+%<*dtx|package&identify>
+% \fi
+ (corporate design fonts)%
+]
+% \iffalse
+%</dtx|package&identify>
+%<*dtx>
+\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-fonts.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
+% \changes{v2.02}{2014/08/29}{Verwendung von \pkg{mweights} unnötig}^^A
+% \changes{v2.02}{2014/08/29}{Unterstützung für \pkg{fontspec}}^^A
+% \changes{v2.04}{2015/02/27}{Interaktion mit Paketen insbesondere für
+% den Mathematiksatz verbessert}^^A
+% \changes{v2.04c}{2015/11/29}{Bugfix für \pkg{fontspec} bei fehlenden
+% Schriften}^^A
+%
+% \section{Die Hausschrift der \TnUD}
+%
+% Für das \TUDCD wird die Schrift \OpenSans benötigt. Die Type1-Variante wird
+% mit diesen Klassen mitgeliefert, die OTF-Variante muss entweder durch das
+% Paket \pkg{opensans} oder über das System bereitgestellt werden. Hier werden
+% die Optionen und Befehle zur Verwendung der Schriften im Dokument definiert.
+%
+% Die Schriften des \CDs können nicht nur mit den \TUDScript-Klassen sondern
+% auch mit anderen \LaTeX-Dokumentklassen verwendet werden. Hierfür wird das
+% Paket \pkg{tudscrfonts} bereitgestellt. Damit kann auf die Installtion der
+% Schriftfamilien für die alten Klassen verzichtet werden. Im Vergleich zu
+% dieser Installation werden dabei fehlende Glyphen ergänzt und Probleme beim
+% Kerning behoben.
+%
+% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
+%
+% \iffalse
+%<*class&option>
+% \fi
+%
+% \subsection{%
+% Verwendung durch die \TUDScript-Klassen und das Paket \pkg{tudscrfonts}%
+% }
+%
+% Die Schriften des \TUDCDs werden standardmäßig durch die \TUDScript-Klassen
+% verwendet. Für Dokumentklassen, welche nicht zum \TUDScript-Bundle gehören,
+% können diese über das Paket \pkg{tudscrfonts} geladen werden.
+% \begin{macrocode}
+\PreventPackageFromLoading[%
+ \ClassWarning{\TUD@Class@Name}{%
+ The package `tudscrfonts' must not be used with\MessageBreak%
+ a TUD-Script class%
+ }%
+]{tudscrfonts}
+% \end{macrocode}
+%
+% \iffalse
+%</class&option>
+%<*package&identify>
+% \fi
+%
+% Sollte keine \KOMAScript-Klasse genutzt werden, wird zusätzlich das Paket
+% \pkg{scrextend} benötigt.
+% \begin{macrocode}
+\ifcsname KOMAClassName\endcsname\else
+ \RequirePackage{scrextend}[2013/12/19]
+\fi
+% \end{macrocode}
+% Wird das Paket \pkg{tudscrfonts} nach einer der Klassen verwendet, welche die
+% veralteten Schriftfamilien für \Univers und \DIN definieren, so wird eine
+% Warnung mit dem Hinweis auf das Paket \pkg{fix-tudscrfonts} ausgegeben.
+% \begin{macrocode}
+\@tempswafalse%
+\@for\@tempa:={%
+ tudbook,tudbeamer,tudfax,tudform,tudhaus,tudletter,tudposter,tudmathposter%
+}\do{%
+ \@ifclassloaded{\@tempa}{%
+ \if@tempswa\else\@tempswatrue\let\@tempb\@tempa\fi%
+ }{}%
+}%
+\if@tempswa%
+ \@ifpackageloaded{fix-tudscrfonts}{}{%
+ \PackageWarning{tudscrfonts}{%
+ As you loaded class `\@tempb', you should\MessageBreak%
+ load `fix-tudscrfonts' before the class\MessageBreak%
+ with `\string\RequirePackage'%
+ }%
+ }%
+\fi%
+% \end{macrocode}
+%
+% \iffalse
+%</package&identify>
+%<*body>
+% \fi
+%
+% \begin{macro}{\tud@cdfont@wrn}
+% \changes{v2.06}{2018/06/17}{neu}^^A
+% \begin{macro}{\tud@cdmath@wrn}
+% \changes{v2.06}{2019/06/17}{neu}^^A
+% Diese beiden Makros dienen als zentrale Hooks, die während der Initialiserung
+% der Schrfiten des \CDs befüllt werden, falls beispielsweise Warnungen wegen
+% fehlender Schriftdateien oder inkompatibler Pakete ausgegeben werden müssen.
+% Diese werden gegebebfalls nur einmalig bei der Aktivierung der Schriften des
+% \CDs ausgegeben.
+% \begin{macrocode}
+\newcommand*\tud@cdfont@wrn{\global\let\tud@cdfont@wrn\relax}
+\newcommand*\tud@cdmath@wrn{\global\let\tud@cdmath@wrn\relax}
+% \end{macrocode}
+% \end{macro}^^A \tud@cdmath@wrn
+% \end{macro}^^A \tud@cdfont@wrn
+%
+% \subsection{Auswahl des Fontformates}
+%
+% 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.
+%
+% \begin{macro}{\if@tud@x@fontspec@enabled}
+% \changes{v2.02}{2014/08/29}{neu}^^A
+% Wird das Paket \pkg{fontspec} durch den Nutzer geladen, wird der passende
+% Schlüssel gesetzt und die Schrifteinstellungen erfolgen mit den dazugehörigen
+% Befehlen. Dies wurde in früheren Versionen mit der Option \opt{fontspec}
+% realisiert, die auch weiterhin bereitgehalten wird. Nach dem Laden des Paketes
+% wird geprüft, ob diesem mit den entsprechenden Optionen das Bereitstellen der
+% Mathematikschriften überlassen wurde. In diesem Fall wird eine entsprechende
+% Warnung an \cs{tud@cdmath@wrn} angehängt.
+% \begin{macrocode}
+\newif\if@tud@x@fontspec@enabled
+\PassOptionsToPackage{no-math}{fontspec}
+\AfterPackage*{fontspec}{%
+ \@ifpackagelater{fontspec}{2017/01/24}{%
+ \@tud@x@fontspec@enabledtrue%
+ \@tud@res@swafalse%
+ \@ifpackagewith{fontspec}{no-math}{}{\@tud@res@swatrue}%
+ \@ifpackagewith{fontspec}{math}{\@tud@res@swatrue}{}%
+ \if@tud@res@swa%
+ \appto\tud@cdmath@wrn{%
+%<*class>
+ \ClassWarningNoLine{\TUD@Class@Name}%
+%</class>
+%<*package>
+ \PackageWarningNoLine{tudscrfonts}%
+%</package>
+ {%
+ It's recommended to load package `fontspec'\MessageBreak%
+ with option `no-math', if you want to use the\MessageBreak%
+ corporate design fonts in math mode%
+ }%
+ }%
+ \fi%
+ }{%
+ \@tud@x@fontspec@enabledfalse%
+%<*class>
+ \ClassWarningNoLine{\TUD@Class@Name}%
+%</class>
+%<*package>
+ \PackageWarningNoLine{tudscrfonts}%
+%</package>
+ {%
+ Version `2017/01/24' of package `fontspec' is needed,\MessageBreak%
+ but only version\MessageBreak%
+ `\csname ver@fontspec.sty\endcsname'\MessageBreak%
+ is available, so a fallback layout is used%
+ }%
+ }%
+}
+% \end{macrocode}
+% Bei der Nutzung des Pakets \pkg{unicode-math} kann es ebenfalls zu Problemen
+% mit den mathematischen Schriften kommen, weshalb auch hier eine Warnung an
+% \cs{tud@cdmath@wrn} angehängt wird.
+% \begin{macrocode}
+\AfterPackage*{unicode-math}{%
+ \appto\tud@cdmath@wrn{%
+%<*class>
+ \ClassWarningNoLine{\TUD@Class@Name}%
+%</class>
+%<*package>
+ \PackageWarningNoLine{tudscrfonts}%
+%</package>
+ {%
+ The usage of package `unicode-math' will\MessageBreak%
+ most likely cause erroneous outputs in math mode\MessageBreak%
+ with corporate design fonts%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@x@fontspec@enabled
+% \begin{macro}{\if@tud@x@mweights@enabled}
+% \changes{v2.04}{2015/04/24}{Erkennung des Paketes \pkg{mweights}}^^A
+% Das Paket \pkg{mweights} wird geladen, um unterschiedliche Schriftschnitte
+% für beispielsweise die TypeWriter-Schriften nutzen zu können.
+% \begin{macrocode}
+\TUD@RecommendPackage{mweights}[2017/03/30]%
+\newif\if@tud@x@mweights@enabled
+\AfterPackage*{mweights}{\@tud@x@mweights@enabledtrue}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@x@mweights@enabled
+%
+% \subsection{Prüfen der Schriftverfügbarkeit}
+%
+% Nachfolgend werden Makros definiert, mit denen geprüft werden kann, ob die
+% notwendigen Schriften im passenden Fontformat auch installiert sind. Seit
+% 2018 wird \OpenSans als die Hausschrift verwendet. Um weiterhin noch alte
+% Dokumente mit den Schriften \Univers und \DIN nutzen zu können, werden die
+% entsprechenden Befehle ebenfalls vorgehalten.
+%
+% \begin{macro}{\if@tud@cdfont@fam@exist}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\if@tud@cdfont@db@exist}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\tud@cdfont@fam}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\tud@cdfont@fam@lf}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\tud@cdfont@fam@osf}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\tud@cdfont@db}
+% Zu Beginn werden Schalter und Hilfsmakros sowohl für den Fließtext\dots
+% \begin{macrocode}
+\newif\if@tud@cdfont@fam@exist
+\newif\if@tud@cdfont@db@exist
+\newcommand*\tud@cdfont@fam{opensans-TLF}
+\newcommand*\tud@cdfont@fam@lf{opensans-TLF}
+\newcommand*\tud@cdfont@fam@osf{opensans-TOsF}
+\if@tud@cdoldfont@active
+ \renewcommand*\tud@cdfont@fam{lun}
+ \renewcommand*\tud@cdfont@fam@lf{lun}
+ \renewcommand*\tud@cdfont@fam@osf{lun}
+ \newcommand*\tud@cdfont@db{0m6}
+\fi
+% \end{macrocode}
+% \end{macro}^^A \tud@cdfont@db
+% \end{macro}^^A \tud@cdfont@fam@osf
+% \end{macro}^^A \tud@cdfont@fam@lf
+% \end{macro}^^A \tud@cdfont@fam
+% \end{macro}^^A \if@tud@cdfont@db@exist
+% \end{macro}^^A \if@tud@cdfont@fam@exist
+% \begin{macro}{\tud@ttfont@fam}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\tud@ttfont@rb}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\tud@ttfont@lm}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \dots als auch für die TypeWriter-Schriften definiert.
+% \begin{macrocode}
+\newcommand*\tud@ttfont@fam{tudtt}
+\newcommand*\tud@ttfont@rb{tudtt}
+\newcommand*\tud@ttfont@lm{lmtt}
+% \end{macrocode}
+% \end{macro}^^A \tud@ttfont@lm
+% \end{macro}^^A \tud@ttfont@rb
+% \end{macro}^^A \tud@ttfont@fam
+% \begin{macro}{\if@tud@ttfont@rb@exist}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% Die TypeWriter-Schrift aus \pkg{roboto-mono} kann nur genutzt werden, wenn
+% diese tatsächlich auch vorhanden ist.
+% \begin{macrocode}
+\newif\if@tud@ttfont@rb@exist
+\IfFileExists{roboto-mono.sty}{%
+ \@tud@ttfont@rb@existtrue%
+}{%
+ \TUD@key@preset{ttfont}{lmodern}%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@ttfont@rb@exist
+% \begin{macro}{\tud@cdfont@check}
+% \changes{v2.04}{2015/03/10}{neu}^^A
+% \begin{macro}{\tud@cdfont@@check}
+% \changes{v2.06}{2018/07/12}{Auswahl der Schriftfamilie angepasst}^^A
+% \changes{v2.06b}{2019/07/17}{Verwendung von \cs{tud@if@fdfileexists}}^^A
+% \begin{macro}{\tud@cdfont@@@check}
+% \changes{v2.06}{2019/06/18}{neu}^^A
+% \changes{v2.06b}{2019/07/17}{Verwendung von \cs{tud@if@fdfileexists}}^^A
+% \begin{macro}{\tud@cdfont@missing}
+% \changes{v2.05l}{2017/03/29}{neu}^^A
+% Mit \cs{tud@cdfont@check} wird geprüft, ob die Schrift \OpenSans respektive
+% die veralteten Schriften \Univers und \DIN im OTF-Format respektive im
+% Type1-Format vorhanden sind. Die Schriftschnitte der \OpenSans werden für
+% beide Formate vom Paket \pkg{opensans} geliefert, die veralteten Schriften
+% \Univers und \DIN müssen aus lizenrechtlichen Gründen installiert werden. Bei
+% Nichtvorhandensein der Schriften wird eine Warnung ausgegeben sowie eine
+% Rückfallebene definiert.
+% \begin{macrocode}
+\newcommand*\tud@cdfont@check{%
+ \if@tud@cdoldfont@active%
+ \tud@cdfont@@check{Univers}{%
+ Light,,Bold,Black,%
+ LightOblique,Oblique,BoldOblique,BlackOblique%
+ }{\tud@cdfont@fam@lf}{@tud@cdfont@fam@exist}%
+ \tud@cdfont@@check{DIN}{Bold}{\tud@cdfont@db}{@tud@cdfont@db@exist}%
+ \tud@cdfont@@@check{OT1,OML,OMS}{\tud@cdfont@fam@lf}%
+ \tud@cdfont@@@check{OT1,OML,OMS}{\tud@cdfont@db}%
+ \else%
+% \end{macrocode}
+% Die Version von \pkg{opensans} wird geprüft. Das Paket \pkg{iwona} wird
+% genutzt, um fehlende Glyphen und Symbole für die Mathematikschriften des \CDs
+% zu ergänzen.
+% \begin{macrocode}
+ \@ifpackageloaded{opensans}{%
+%<*class>
+ \ClassWarningNoLine{\TUD@Class@Name}%
+%</class>
+%<*package>
+ \PackageWarningNoLine{tudscrfonts}%
+%</package>
+ {%
+ You should not load package `opensans'\MessageBreak%
+ manually but just use option `cdfont=true'%
+ }%
+ }{}%
+ \if@tud@cdfont@active%
+ \TUD@CheckPackage{opensans}{2019/06/20}%
+ \TUD@CheckPackage{iwona}{2005/10/03}%
+ \fi%
+ \tud@cdfont@@check{OpenSans}{%
+ Light,Regular,SemiBold,Bold,ExtraBold,%
+ LightItalic,Italic,SemiBoldItalic,BoldItalic,ExtraBoldItalic%
+ }{\tud@cdfont@fam@lf,\tud@cdfont@fam@osf}{@tud@cdfont@fam@exist}%
+ \fi%
+}
+% \end{macrocode}
+% Dieses Makro prüft auf das Vorhandensein der Schriften für den Fließtext.
+% Im optionalen Argument wird das Trennzeichen zwischen dem Hauptnamen für die
+% OTF-Schriften aus dem ersten obligatorischen Argument und der Liste der
+% Bezeichnungen für die einzelnen Schriftschnitte im zweiten obligatorischen
+% Argument angegeben. Die darauffolgenden Argumente enthalten die zu prüfenden
+% Type1-Schriftfamilien und die Bezeichnung des zu setzenden Schalters.
+% \begin{macrocode}
+\newcommand*\tud@cdfont@@check[5][-]{%
+ \@tud@res@swatrue%
+ \def\tud@res@a##1{%
+ \@tud@res@swafalse%
+ \tud@cdfont@missing{##1}{\tud@cdfont@wrn}%
+ }%
+% \end{macrocode}
+% Für jede der OTF-Schriften wird eine Warnung ausgegeben, falls diese nicht
+% installiert ist. Um sicher zu gehen, dass das Layout komplett genutzt werden
+% kann, ist es hinreichend, wenn eine der benötigten Schriften nicht existiert,
+% um die Rückfallebene zu aktivieren.
+% \begin{macrocode}
+ \if@tud@x@fontspec@enabled%
+ \def\tud@res@b##1{\IfFontExistsTF{##1}{}{\tud@res@a{##1}}}%
+ \@for\tud@res@c:={#3}\do{%
+ \expandafter\IfArgIsEmpty\expandafter{\tud@res@c}%
+ {\tud@res@b{#2}}%
+ {\tud@res@b{#2#1\tud@res@c}}%
+ }%
+ \else%
+% \end{macrocode}
+% Ist \pkg{fontspec} nicht aktiv, wird auf die Type1-Schriften für den
+% Fließtext für die aktuelle Kodierung im gleichen Maße geprüft.
+% \begin{macrocode}
+ \def\tud@res@b##1##2{%
+% \end{macrocode}
+% Der Schalter \cs{if@tud@res@swa} wird \val{false} gesetzt, falls die Schrift
+% gefunden wurde. Der zu prüfenden Schriftname wird dabei in unterschiedlichen
+% Varianten getestet, da \cs{IfFileExists} auf unixoiden Betriebssystemen
+% case-sensitiv ist.
+% \begin{macrocode}
+ \tud@if@fdfileexists{##1}{##2}{}{%
+% \end{macrocode}
+% Existiert die Schrift nicht, wird die entsprechende Warnung ausgegeben.
+% \begin{macrocode}
+ \begingroup%
+ \edef\tud@res@a{%
+ \endgroup%
+ \noexpand\tud@res@a{##1##2.fd}%
+ }%
+ \tud@res@a%
+ }%
+ }%
+ \@for\tud@res@c:={#4}\do{\tud@res@b{\encodingdefault}{\tud@res@c}}%
+ \fi%
+% \end{macrocode}
+% Zuletzt wird der angegebene Schalter gesetzt.
+% \begin{macrocode}
+ \if@tud@res@swa%
+ \booltrue{#5}%
+ \else%
+ \boolfalse{#5}%
+ \fi%
+}
+% \end{macrocode}
+% Hiermit wird auf Type1-Schriften in den notwendigen Kodierungen für den
+% Mathematiksatz geprüft. Warnungen für fehlende Schriften werden dem Hook
+% \cs{tud@cdmath@wrn} hinzugefügt.
+% \begin{macrocode}
+\newcommand*\tud@cdfont@@@check[2]{%
+ \@tud@res@swatrue%
+ \def\tud@res@a##1##2{%
+ \@tud@res@swafalse%
+ \tud@cdfont@missing[##1]{##2}{\tud@cdmath@wrn}%
+ }%
+ \def\tud@res@b##1##2{%
+ \tud@if@fdfileexists{##1}{##2}{}{%
+ \begingroup%
+ \edef\tud@res@a{%
+ \endgroup%
+ \noexpand\tud@res@a{##1}{##1##2.fd}%
+ }%
+ \tud@res@a%
+ }%
+ }%
+ \@for\tud@res@c:={#1}\do{\tud@res@b{\tud@res@c}{#2}}%
+% \end{macrocode}
+% Wurde mindestens eine notwendige nicht gefunden, wird \opt{cdmath=false}
+% gesetzt. War diese zuvor aktiv, wird eine Warnung dazu ausgegeben.
+% \begin{macrocode}
+ \if@tud@res@swa\else%
+ \AtBeginDocument{%
+ \if@tud@cdmath@active%
+%<*class>
+ \ClassWarning{\TUD@Class@Name}%
+%</class>
+%<*package>
+ \PackageWarning{tudscrfonts}%
+%</package>
+ {%
+ Some math font encodings are missing. \MessageBreak%
+ The option `cdmath=false' is executed. You should\MessageBreak%
+ either use this option by yourself or install\MessageBreak%
+ all necessary fonts with a installation script\MessageBreak%
+ listed in the manual
+ }%
+ \fi%
+ \TUDoptions{cdmath=false}%
+ }%
+ \fi%
+}
+% \end{macrocode}
+% Das Makro für die Erstellung einer Warnung bei fehlenden Schriften. Diese
+% wird an den Hook im letzten Argument angehängt.
+% \begin{macrocode}
+\newcommand*\tud@cdfont@missing[3][\encodingdefault]{%
+ \begingroup%
+ \def\tud@res@a{%
+ `#2' font\MessageBreak%
+ not found for `#1' encoding. \MessageBreak%
+ }%
+ \if@tud@x@fontspec@enabled%
+ \ifstr{\encodingdefault}{#1}{%
+ \appto\tud@res@a{%
+ It seems, you haven't installed the required\MessageBreak%
+ OTF-font on your system. You should provide\MessageBreak%
+ the fonts manually to your OS\MessageBreak%
+ \if@tud@cdoldfont@active\else%
+ or install package `opensans'\MessageBreak%
+ \fi%
+ }%
+ }{}%
+ \else%
+ \if@tud@cdoldfont@active%
+ \def\tud@res@b{T1,OT1,OMS,OML}%
+ \else%
+ \def\tud@res@b{T1,OT1,T2A,T2B,T2C,X2,LGR}%
+ \fi%
+ \@tud@res@swafalse%
+ \@for\tud@res@c:=\tud@res@b\do{%
+ \ifstr{\tud@res@c}{#1}{\@tud@res@swatrue}{}%
+ }%
+% \end{macrocode}
+% Wird eine unterstützte Kodierung verwendet, müssen die Schriften installiert
+% werden.
+% \begin{macrocode}
+ \if@tud@res@swa%
+ \appto\tud@res@a{%
+ You should %
+ \if@tud@cdoldfont@active%
+ try to install the necessary fonts\MessageBreak%
+ with a installation script listed in the manual%
+ \else%
+ install package `opensans'%
+ \fi%
+ . \MessageBreak%
+ }%
+ \else%
+ \ifstr{\encodingdefault}{#1}{%
+ \ifstr{TU}{#1}{%
+ \appto\tud@res@a{%
+ You should either load package `fontspec'\MessageBreak%
+ or %
+ }%
+ }{%
+ \appto\tud@res@a{Please }%
+ }%
+ \appto\tud@res@a{%
+ choose a possible encoding with package\MessageBreak%
+ `fontenc' (\tud@res@b). \MessageBreak%
+ }%
+ }{}%
+ \fi%
+ \fi%
+ \appto\tud@res@a{A fallback layout is used}%
+ \edef\tud@res@c{%
+%<*class>
+ \etex@unexpanded{\ClassWarning{\TUD@Class@Name}}%
+%</class>
+%<*package>
+ \etex@unexpanded{\PackageWarning{tudscrfonts}}%
+%</package>
+ {\tud@res@a}
+ }%
+ \xappto#3{\expandonce\tud@res@c}%
+ \endgroup%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@cdfont@missing
+% \end{macro}^^A \tud@cdfont@@@check
+% \end{macro}^^A \tud@cdfont@@check
+% \end{macro}^^A \tud@cdfont@check
+%
+% \subsection{Kompatibilität der Schriften}
+% \subsubsection{Majuskel-ß für Unicode-Prozessoren}
+%
+% Es wird für die Majuskelvariante der Glyphe \enquote*{ß} eine Rückfallebene
+% (Substitution mit \enquote*{SS}) definiert, da diese für Unicode-Engines
+% standardmäßig nicht bereitgestellt wird. Um diese zu erkennen, wird auf die
+% gleiche Methodik wie im Paket \pkg{newunicodechar} zurückgegriffen.
+% \begin{macrocode}
+\begingroup
+\catcode`\^=7
+\catcode30=12
+\catcode`\!=12
+\edef\tud@reserved{\@gobble^^^^0021}
+\expandafter\endgroup
+% \end{macrocode}
+% Wurde eine Unicode-Engine erkannt (|^^^^0021| wird als ein Token gelesen),
+% dann werden die Kodierungen für kleines und großes \enquote*{ß} dahingehend
+% angepasst, dass diese \enquote*{ss} bzw. \enquote*{SS} verwenden, wenn die
+% entsprechende Glyphe nicht vorhanden ist.
+% \begin{macrocode}
+\ifx\tud@reserved\@empty\relax
+ \RequirePackage{newunicodechar}[2012/11/12]%
+ \uccode"00DF="1E9E%
+ \lccode"1E9E="00DF%
+ \newunicodechar{^^^^00df}{\iffontchar\font"00DF \symbol{"00DF}\else ss\fi}%
+ \newunicodechar{^^^^1e9e}{\iffontchar\font"1E9E \symbol{"1E9E}\else SS\fi}%
+\fi
+% \end{macrocode}
+%
+% \subsubsection{Ausrichtung von Überschriften und das Paket \pkg{ragged2e}}
+%
+% \begin{macro}{\tud@raggedright}
+% \begin{macro}{\tud@RaggedRight}
+% Die Überschriften sollen laut \CD linksbündig und ohne 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. Diese Makros dienen 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}
+\newcommand*\tud@RaggedRight{\raggedright}
+\AfterPackage*{ragged2e}{%
+ \ifundef{\LaTeXraggedright}{}{%
+ \renewcommand*\tud@raggedright{\LaTeXraggedright}%
+ }%
+ \renewcommand*\tud@RaggedRight{\RaggedRight}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@RaggedRight
+% \end{macro}^^A \tud@raggedright
+%
+% \subsubsection{Anpassungen für das Paket \pkg{siunitx}}
+%
+% \begin{macro}{\lseries}
+% \begin{macro}{\if@tud@x@siunitx@enabled}
+% \changes{v2.05m}{2017/05/29}{neu}
+% Das Paket \pkg{siunitx} nutzt den Befehl \cs{lseries} für den Fall, dass für
+% den Fließtext eine Schrift die Serie \val{l} verwendet. Dem wird hier
+% Rechnung getragen. Außerdem muss bei der Auswahl der Schriften evtl. auf das
+% Paket reagiert werden, weil es sich bei der Definition der Schriften für den
+% Mathematikmodus auf \cs{familydefault} bzw. \cs{rmfamily} verlässt.
+% \begin{macrocode}
+\newif\if@tud@x@siunitx@enabled
+\AfterPackage*{siunitx}{%
+ \@tud@x@siunitx@enabledtrue%
+ \providecommand*\lseries{\fontseries{l}\selectfont}%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@x@siunitx@enabled
+% \end{macro}^^A \lseries
+%
+% \subsubsection{Anpassungen für die Klasse \cls{beamer}}
+%
+% Die \cls{beamer}-Klasse lädt standardmäßig serifenlose Mathematikschriften.
+% Dies soll verhindert werden, damit die Auswahl über die Option \opt{cdmath}
+% erfolgen kann.
+% \begin{macrocode}
+%<*package>
+\AfterClass*{beamer}{\usefonttheme[onlymath]{serif}}
+%</package>
+% \end{macrocode}
+%
+% \subsubsection{Mathematikschriften in Verbindung mit dem Paket \pkg{bm}}
+%
+% \begin{macro}{\if@tud@x@bm@requested}
+% Das Paket \pkg{bm} stellt den Befehl \cs{bm} für fette und kursive Symbole im
+% Mathematiksatz bereit. Damit dies funktioniert, muss das Laden des Paketes
+% auf das Ende der Präambel verzögert werden, um zuvor alle Einstellungen für
+% die mathematischen Symbole vornehmen zu können.
+% \begin{macrocode}
+\newif\if@tud@x@bm@requested
+%<*package>
+\@ifpackageloaded{bm}{%
+ \PackageWarning{tudscrfonts}{%
+ Package `bm' must be loaded after `tudscrfonts'. \MessageBreak%
+ Otherwise the functionality can not be guaranteed%
+ }%
+}{%
+%</package>
+\PreventPackageFromLoading[\@tud@x@bm@requestedtrue]{bm}
+%<*package>
+}
+%</package>
+% \end{macrocode}
+% \end{macro}^^A \if@tud@x@bm@requested
+%
+% \iffalse
+%</body>
+%<*option>
+% \fi
+%
+% \subsection{Schriftauswahl und -optionen}
+%
+% Hier werden die Optionen und Befehle zur Schriftauswahl definiert.
+%
+% \subsubsection{Schriften für den Fließtext}
+% \begin{option}{cdfont}
+% \changes{v2.02}{2014/07/08}{Schlüsselwerte für \opt{cdhead}}^^A
+% \changes{v2.02}{2014/08/29}{Schlüsselwerte für \opt{fontspec}}^^A
+% \changes{v2.05}{2016/04/04}{Schlüsselwerte für \val{ultrabold}}^^A
+% \changes{v2.05l}{2017/03/29}{Standardeinstellungen für \opt{cdmath}}^^A
+% \begin{macro}{\if@tud@cdfont@active}
+% \changes{v2.06}{2018/06/26}{neu}^^A
+% \begin{macro}{\if@tud@cdfont@heavy}
+% \changes{v2.06}{2018/06/26}{neu}^^A
+% \begin{macro}{\if@tud@cdfont@ultrabold}
+% \changes{v2.05}{2016/04/04}{neu}^^A
+% \begin{macro}{\if@tud@cdfont@lining}
+% \changes{v2.06}{2018/07/10}{neu}^^A
+% \begin{macro}{\tud@cdfont@activate}
+% \changes{v2.06}{2018/07/02}{neu}^^A
+% \begin{macro}{\tud@cdfont@deactivate}
+% \changes{v2.06}{2018/07/24}{neu}^^A
+% 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
+% Minuskelziffern im Fließtext aktivieren. Außerdem kann eingestellt werden, ob
+% für den Mathematiksatz serifenlose Schriften zum Einsatz kommen sollen.
+% \ToDo{%
+% Option evtl. überarbeiten und nicht mehr im Dokument zulassen;
+% das macht alles um einiges einfacher, siehe \opt{cdoldfont}, \opt{cdmath}
+% }[v2.07]
+% \begin{macrocode}
+\newif\if@tud@cdfont@active
+\newif\if@tud@cdfont@heavy
+\newif\if@tud@cdfont@ultrabold
+\newif\if@tud@cdfont@lining
+\@tud@cdfont@liningtrue
+\TUD@key{cdfont}[true]{%
+ \TUD@set@numkey{cdfont}{@tempa}{%
+ \TUD@bool@numkey,%
+ {light}{1},{lightfont}{1},{lite}{1},{litefont}{1},{noheavyfont}{1},%
+ {heavy}{2},{heavyfont}{2},{bold}{2},{boldfont}{2},%
+ {normalbold}{3},{boldnormal}{3},%
+ {ultrabold}{4},{boldultra}{4},{heavybold}{4},{boldheavy}{4},%
+ {extendedbold}{4},{boldextended}{4},%
+ {lf}{5},{lfigures}{5},{liningfigures}{5},{lining}{5},%
+ {ln}{5},{lnumbers}{5},{liningnumbers}{5},%
+ {nf}{5},{nfigures}{5},{normalfigures}{5},%
+ {nn}{5},{nnumbers}{5},{normalnumbers}{5},%
+ {osf}{6},{osfigures}{6},{oldfigures}{6},{oldstylefigures}{6},{oldstyle}{6},%
+ {osn}{6},{osnumbers}{6},{oldnumbers}{6},{oldstylenumbers}{6},%
+ {nomath}{7},{nocdmath}{7},%
+ {serifmath}{7},{serif}{7},{nosansmath}{7},{nosans}{7},%
+ {math}{8},{cdmath}{8},{sansmath}{8},{sans}{8},%
+ {upgreek}{9},{uprightgreek}{9},{uprightgreeks}{9},%
+ {slgreek}{10},{slantedgreek}{10},{slantedgreeks}{10},%
+ {itgreek}{10},{italicgreek}{10},{italicgreeks}{10},%
+ {texgreek}{11},{latexgreek}{11},{texgreeks}{11},{latexgreeks}{11},%
+ {standardgreek}{11},{standardgreeks}{11},%
+ {fontspec}{12},{luatex}{12},{lualatex}{12}{xetex}{12},{xelatex}{12},%
+ {nofontspec}{13},{nfss}{13},{pdftex}{13},{pdflatex}{13}%
+%<*class>
+ ,{nohead}{14},{nocdhead}{14},{noheadfont}{14},{noheadcdfont}{14},%
+ {nocdheadfont}{14},{nobar}{14},{nobarfont}{14},%
+ {head}{15},{headfont}{15},{cdhead}{15},{headcdfont}{15},{cdheadfont}{15},%
+ {bar}{15},{barfont}{15},%
+ {lighthead}{15},{lightheadfont}{15},{lightfonthead}{15},%
+ {lightcdhead}{15},{lightheadcdfont}{15},{lightcdheadfont}{15},%
+ {lightbar}{15},{lightbarfont}{15},{lightfontbar}{15},%
+ {headlight}{15},{headfontlight}{15},{headlightfont}{15},%
+ {cdheadlight}{15},{headcdfontlight}{15},{cdheadfontlight}{15},%
+ {barlight}{15},{barfontlight}{15},{barlightfont}{15},%
+ {litehead}{15},{liteheadfont}{15},{litefonthead}{15},%
+ {litecdhead}{15},{liteheadcdfont}{15},{litecdheadfont}{15},%
+ {litebar}{15},{litebarfont}{15},{litefontbar}{15},%
+ {headlite}{15},{headfontlite}{15},{headlitefont}{15},%
+ {cdheadlite}{15},{headcdfontlite}{15},{cdheadfontlite}{15},%
+ {barlite}{15},{barfontlite}{15},{barlitefont}{15},%
+ {noheavyhead}{15},{noheavyheadfont}{15},{noheavyfonthead}{15},%
+ {noheavycdhead}{15},{noheavyheadcdfont}{15},{noheavycdheadfont}{15},%
+ {noheavybar}{15},{noheavybarfont}{15},{noheavyfontbar}{15},%
+ {headnoheavy}{15},{headfontnoheavy}{15},{headnoheavyfont}{15},%
+ {cdheadnoheavy}{15},{headcdfontnoheavy}{15},{cdheadfontnoheavy}{15},%
+ {barnoheavy}{15},{barfontnoheavy}{15},{barnoheavyfont}{15},%
+ {heavyhead}{16},{heavyheadfont}{16},{heavyfonthead}{16},%
+ {heavycdhead}{16},{heavyheadcdfont}{16},{heavycdheadfont}{16},%
+ {heavybar}{16},{heavybarfont}{16},{heavyfontbar}{16},%
+ {headheavy}{16},{headfontheavy}{16},{headheavyfont}{16},%
+ {cdheadheavy}{16},{headcdfontheavy}{16},{cdheadfontheavy}{16},%
+ {barheavy}{16},{barfontheavy}{16},{barheavyfont}{16}%
+%</class>
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+% \end{macrocode}
+% Die ersten drei Werte dienen zum Umschalten auf die Schriften des \CDs für
+% den Fließtext.
+% \begin{macrocode}
+ \ifcase\@tempa\relax% false
+ \tud@cdfont@deactivate%
+ \or% true
+ \@tud@cdfont@heavyfalse%
+ \tud@cdfont@activate%
+ \or% heavy
+ \@tud@cdfont@heavytrue%
+ \tud@cdfont@activate%
+% \end{macrocode}
+% Für die Definition der fetten Schriftstärke kommt je nach Einstellung ein
+% anderer Schriftschnitt zum Einsatz.
+% \begin{macrocode}
+ \or% normalbold
+ \@tud@cdfont@ultraboldfalse%
+ \tud@cdfont@activate%
+ \or% ultrabold
+ \@tud@cdfont@ultraboldtrue%
+ \tud@cdfont@activate%
+% \end{macrocode}
+% Hier wird die Art der Ziffern für den Fleißtext festgelegt.
+% \begin{macrocode}
+ \or% liningfigures
+ \@tud@cdfont@liningtrue%
+ \tud@cdfont@activate%
+ \or% oldstylefigures
+ \@tud@cdfont@liningfalse%
+ \tud@cdfont@activate%
+% \end{macrocode}
+% Die Mathematikschriften.
+% \begin{macrocode}
+ \or% nomath
+ \TUDoptions{cdmath=false}%
+ \or% math
+ \TUDoptions{cdmath=true}%
+% \end{macrocode}
+% Die Neigung der großen griechischen Buchstaben.
+% \begin{macrocode}
+ \or% uprightgreek
+ \TUDoptions{slantedgreek=false}%
+ \or% slantedgreek
+ \TUDoptions{slantedgreek=true}%
+ \or% standardgreek
+ \TUDoptions{slantedgreek=standard}%
+% \end{macrocode}
+% Die Verwendung von \pkg{fontspec}.
+% \begin{macrocode}
+ \or% fontspec
+ \TUDoptions{fontspec=true}%
+ \or% nofontspec
+ \TUDoptions{fontspec=false}%
+% \end{macrocode}
+% Die Schrift für den Querbalken.
+% \begin{macrocode}
+%<*class>
+ \or% nohead
+ \TUDoptions{cdhead=false}%
+ \or% head
+ \TUDoptions{cdhead=true}%
+ \or% heavyhead
+ \TUDoptions{cdhead=heavy}%
+%</class>
+ \fi%
+% \end{macrocode}
+% Wird kein gültiger Wert für die Option angegeben, so wird davon ausgegangen,
+% dass es sich bei diesem um die gewünschte Schriftgröße handelt.
+% \begin{macrocode}
+ \else%
+ \tud@lowerstring\tud@res@a{#1}%
+ \ifdimen{\tud@res@a}{%
+ \ifdim\tud@res@a>\z@\relax%
+ \TUDoptions{fontsize=#1}%
+ \tud@cdfont@activate%
+ \FamilyKeyStateProcessed%
+ \fi%
+ }{}%
+ \fi%
+}
+\newcommand*\tud@cdfont@activate{%
+ \@tud@cdfont@activetrue%
+% \end{macrocode}
+% Die Schrift im Querbalken wird bei den Klassen angepasst.
+% \begin{macrocode}
+%<*class>
+ \if@tud@cdfont@heavy%
+ \tud@locked@num@preset{tud@head@font@num}{2}%
+ \else%
+ \tud@locked@num@preset{tud@head@font@num}{1}%
+ \fi%
+%</class>
+ \TUD@SpecialOptionAtDocument{tud@font@set}%
+ \tud@locked@bool@preset{@tud@cdmath@active}{true}%
+ \TUD@SpecialOptionAtDocument{tud@math@set}%
+}
+\newcommand*\tud@cdfont@deactivate{%
+ \@tud@cdfont@activefalse%
+%<*class>
+ \tud@locked@num@preset{tud@head@font@num}{0}%
+%</class>
+ \TUD@SpecialOptionAtDocument{tud@font@set}%
+ \tud@locked@bool@preset{@tud@cdmath@active}{false}%
+ \TUD@SpecialOptionAtDocument{tud@math@set}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@cdfont@deactivate
+% \end{macro}^^A \tud@cdfont@activate
+% \end{macro}^^A \if@tud@cdfont@lining
+% \end{macro}^^A \if@tud@cdfont@ultrabold
+% \end{macro}^^A \if@tud@cdfont@heavy
+% \end{macro}^^A \if@tud@cdfont@active
+% \end{option}^^A cdfont
+% \begin{option}{cdoldfont}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\if@tud@cdoldfont@active}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\if@tud@cdoldfont@nodin}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% Seit 2018 wird \OpenSans als Hausschrift im \TUDCD genutzt. Für die Nutzung
+% der vormals verwendeten Schriften \Univers und \DIN für ältere Dokumente wird
+% die Option \pkg{cdoldfont} bereitgestellt. Damit werden die Befehle zur
+% Schriftauswahl für die \TUDScript-Klassen oder das Paket \pkg{tudscrfonts}
+% entsprechend angepasst.
+% \begin{macrocode}
+\newif\if@tud@cdoldfont@active
+\newif\if@tud@cdoldfont@nodin
+\TUD@key{cdoldfont}[true]{%
+ \TUD@set@numkey{cdoldfont}{@tempa}{%
+ \TUD@bool@numkey,%
+ {din}{1},{dinbold}{1},%
+ {nodin}{2},{nodinbold}{2},%
+ {onlydin}{3},{onlydinbold}{3}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\@tempa\relax% false
+ \@tud@cdoldfont@activefalse%
+ \@tud@cdoldfont@nodintrue%
+% \end{macrocode}
+% Achtung, nicht verwirren lassen! Mit \opt{cdoldfonts=false} kann beim Laden
+% der Klasse die Verwendung der alten Schriften deaktiviert werden. Dabei wird
+% nicht beeinflusst, ob die Schriften des \CDs (\opt{cdfont=true/false}) denn
+% überhaupt zum Einsatz kommen. Nachdem die Klasse geladen wurde, wird jedoch
+% \opt{cdoldfonts} eingefroren, ist diese aktiv, kann sie ab diesem Zeitpunkt
+% nicht mehr deaktiviert werden. Dann kann mit \opt{cdoldfonts=false} quasi das
+% gleiche Verhalten wie mit \opt{cdfont=false} erzeugt werden.
+% \begin{macrocode}
+ \if@tud@cdoldfont@active%
+ \tud@cdfont@deactivate%
+ \fi%
+ \or% true/din
+ \@tud@cdoldfont@activetrue%
+ \@tud@cdoldfont@nodinfalse%
+ \tud@cdfont@activate%
+ \or% nodin
+ \@tud@cdoldfont@activetrue%
+ \@tud@cdoldfont@nodintrue%
+ \tud@cdfont@activate%
+ \or% onlydin
+ \@tud@cdoldfont@activetrue%
+ \@tud@cdoldfont@nodinfalse%
+ \tud@cdfont@deactivate%
+ \fi%
+ \else%
+ \@tud@cdoldfont@activetrue%
+ \TUDoptions{cdfont=#1}%
+ \fi%
+}
+%<*class>
+\AtEndOfClass%
+%</class>
+%<*package>
+\AtEndOfPackage%
+%</package>
+{%
+ \if@tud@cdoldfont@active%
+% \end{macrocode}
+% Der aktive Zustand der Option \opt{cdoldfont} wird \enquote{eingefroren}.
+% \begin{macrocode}
+ \let\@tud@cdoldfont@activefalse\@tud@cdoldfont@activetrue%
+% \end{macrocode}
+% Wenn die Option \opt{cdoldfont} beim Laden der Klasse aktiviert wurde, kann
+% sie auch im Dokument genutzt werden. Um möglichst einfach alte Dokumente mit
+% den alten Schriften setzen zu können, wird die Option \opt{cdfont} in diesem
+% Fall um die alten Werte erweitert.
+% \begin{macrocode}
+ \TUD@key[.comp]{cdfont}{%
+ \TUD@set@numkey{cdfont}{@tempa}{%
+ {din}{1},{dinbold}{1},%
+ {nodin}{2},{nodinbold}{2},%
+ {onlydin}{3},{onlydinbold}{3}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \TUDoptions{cdoldfont=#1}%
+ \fi%
+ }%
+% \end{macrocode}
+% Andernfalls wird \opt{cdoldfont} schlichtweg deaktiviert.
+% \begin{macrocode}
+ \else%
+ \TUD@key{cdoldfont}[]{%
+%<*class>
+ \ClassError{\TUD@Class@Name}%
+%</class>
+%<*package>
+ \PackageError{tudscrfonts}%
+%</package>
+ {Option `cdoldfont' not active}{%
+ Option `cdoldfont' must be activated while loading the\MessageBreak%
+%<*class>
+ class `\TUD@Class@Name'\space%
+%</class>
+%<*package>
+ package `tudscrfonts'\space%
+%</package>
+ but you have tried to set it up later.%
+ }%
+ \FamilyKeyStateProcessed%
+ }%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@cdoldfont@nodin
+% \end{macro}^^A \if@tud@cdoldfont@active
+% \end{option}^^A cdoldfont
+% \begin{option}{fontsize}
+% \changes{v2.04}{2015/04/24}{Option aus \KOMAScript{} erweitert}^^A
+% \begin{macro}{\if@tud@x@scr@fontsize@set}
+% \changes{v2.05}{2015/07/24}{neu}^^A
+% Die genutzte Grundschriftgröße kann mit der \KOMAScript-Option \opt{fontsize}
+% eingestellt werden. Um ein aktives Setzen der Schriftgröße zu erkennen, wird
+% für das Laden der \TUDScript-Klasse ein Schlüssel definiert, der den Wert an
+% \KOMAScript{} weiterreicht.
+% \begin{macrocode}
+\newif\if@tud@x@scr@fontsize@set
+\TUD@key{fontsize}{%
+ \TUD@set@dimenkey{fontsize}{\@tempa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+% \end{macrocode}
+% Für das Paket wird geprüft, ob die gerade abgearbeitete Option global als
+% Klassenoption angegeben wurde. Für den Fall, dass dies nicht so ist~-- die
+% Option also lokal dem Paket selbst übergeben wurde~--, wird eine Warnung mit
+% dem Hinweis auf das vorgeschlagene Vorgehen ausgegeben.
+% \begin{macrocode}
+%<*package>
+ \@expandtwoargs\in@{,\CurrentOption,}{,\@globaloptionslist,}%
+ \ifin@\else%
+ \edef\tud@res@a{%
+ \noexpand\PackageWarning{tudscrfonts}%
+ {%
+ The key `\CurrentOption' should only be\MessageBreak%
+ used as class option%
+ }%
+ }%
+ \expandafter\AtEndOfPackage\expandafter{\tud@res@a}%
+ \fi
+%</package>
+ \@tud@x@scr@fontsize@settrue%
+ \TUD@KOMAoptions{fontsize=#1}%
+ \fi%
+}
+%<*class>
+\AtEndOfClass%
+%</class>
+%<*package>
+\AtEndOfPackage%
+%</package>
+{%
+ \RelaxFamilyKey{TUD}{fontsize}%
+ \DefineFamilyMember{KOMA}%
+ \DefineFamilyKey{KOMA}{fontsize}{%
+ \@tud@x@scr@fontsize@settrue%
+%<*class>
+ \ClassWarning{\TUD@Class@Name}%
+%</class>
+%<*package>
+ \PackageWarning{tudscrfonts}%
+%</package>
+ {%
+ The key `fontsize=#1' should only be\MessageBreak%
+ used as class option%
+ }%
+ \TUD@SpecialOptionAtDocument{tud@font@set}%
+ \FamilyKeyStateProcessed%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@x@scr@fontsize@set
+% \end{option}^^A fontsize
+% \begin{option}{relspacing}
+% \changes{v2.05}{2015/12/17}{neu}^^A
+% \begin{macro}{\if@tud@relspacing}
+% \changes{v2.05}{2015/12/17}{neu}^^
+% Die Option \opt{relspacing} setzt einige Abstände und Längen in Abhängigkeit
+% der aktuellen Grundschriftgröße, wenn sie aktiviert wurde. Die verwendete
+% Grundschriftgröße kann mit der \KOMAScript-Option \opt{fontsize} eingestellt
+% werden. Die Definiton der Längen wird durch das Makro \cs{tud@font@skip@set}
+% vorgenommen.
+% \begin{macrocode}
+\newif\if@tud@relspacing
+\TUD@key{relspacing}[true]{%
+ \TUD@set@numkey{relspacing}{@tempa}{%
+ \TUD@bool@numkey,%
+ {absolute}{0},{classic}{0},{standard}{0},%
+ {relative}{1},{fontsize}{1},{font}{1},{size}{1}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\@tempa\relax% false
+ \@tud@relspacingfalse%
+ \or% true
+ \@tud@relspacingtrue%
+ \fi%
+ \TUD@SpecialOptionAtDocument{tud@font@skip@set}%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@relspacing
+% \end{option}^^A relspacing
+%
+% \iffalse
+%</option>
+%<*body>
+% \fi
+%
+% \begin{macro}{\tud@x@fontspec@init}
+% \changes{v2.06}{2018/06/28}{neu}^^A
+% Dieses Makro wird bei der Initialisierun der Schriftfamilien aufgerufen,
+% falls \pkg{fontspec} aktiv ist. Das erste Argument enthält den NFSS-Namen
+% der Schriftfamilie, das zweite Argument spezifiziert die Schriften für die
+% jeweiligen Schriftschnitte.
+% \begin{macrocode}
+\newcommand*\tud@x@fontspec@init[2]{%
+% \end{macrocode}
+% Durch die Verwendung des optionalen Argumentes von \cs{defaultfontfeatures}
+% werden die gewünschten Features einem Schriftfamiliennamen zugewiesen. Diese
+% können anschließend einfach bspw. mit \cs{setsansfont}\marg{Name} genutzt
+% werden. Damit alle Änderungen lokal bleiben, werden die Argumente in einer
+% Gruppe expandiert.
+% \begin{macrocode}
+ \begingroup%
+ \edef\tud@res@a{%
+ \noexpand\defaultfontfeatures[#1]{%
+ NFSSFamily=#1,%
+ Ligatures=TeX,%
+ BoldFont={},%
+ ItalicFont={},%
+ BoldItalicFont={},%
+ SmallCapsFont={},%
+ #2%
+ }%
+ }%
+% \end{macrocode}
+% Damit die Schrift mit ihrem NFSS-Namen auf jeden Fall definiert ist, auch
+% wenn die Schriften des \CDs nicht aktiviert wurden, wird \cs{newfontfamily}
+% aufgerufen.
+% \begin{macrocode}
+ \edef\tud@res@b{%
+ \noexpand\newfontfamily%
+ \expandafter\noexpand\csname tud@x@fontspec@fam@#1\endcsname{#1}%
+ }%
+% \end{macrocode}
+% Die expandierten Argumente werden nach der Gruppe ausgeführt.
+% \begin{macrocode}
+ \edef\tud@res@c{%
+ \endgroup\expandonce\tud@res@a\expandonce\tud@res@b%
+ }%
+ \tud@res@c%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@x@fontspec@init
+% \begin{macro}{\tud@x@fontspec@set}
+% \changes{v2.06}{2018/08/31}{neu}^^A
+% Das Paket \pkg{fontspec} ermöglicht es leider nicht, mit \cs{newfontfamily}
+% bereits definierte Schriftfamilien für die Zuweisung mit \cs{setmainfont}
+% etc. zu nutzen. Deshalb wird folgendes Hilfsmakro definiert, welches diese
+% Aufgabe übernimmt.
+% \begin{macrocode}
+\newcommand*\tud@x@fontspec@set[2]{%
+ \begingroup%
+ \edef\tud@res@a{%
+ \expandafter\noexpand\csname tud@x@fontspec@fam@#2\endcsname%
+ }%
+ \edef\tud@res@a{%
+ \endgroup%
+ \noexpand\DeclareRobustCommand%
+ \expandafter\noexpand\csname #1family\endcsname{%
+ \expandafter\noexpand\csname tud@x@fontspec@fam@#2\endcsname%
+ }%
+ \def\expandafter\noexpand\csname #1default\endcsname{\tud@cdfont@fam}%
+ }%
+ \tud@res@a%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@x@fontspec@set
+% \begin{macro}{\tud@font@set}
+% \changes{v2.04}{2015/03/01}{Unterstützung für das Paket \pkg{mweights}}^^A
+% \begin{macro}{\bfseries@rm}
+% \changes{v2.04}{2015/04/24}{Unterstützung für das Paket \pkg{mweights}}^^A
+% \begin{macro}{\mdseries@rm}
+% \changes{v2.04}{2015/04/24}{Unterstützung für das Paket \pkg{mweights}}^^A
+% \begin{macro}{\bfseries@sf}
+% \changes{v2.04}{2015/04/24}{Unterstützung für das Paket \pkg{mweights}}^^A
+% \begin{macro}{\mdseries@sf}
+% \changes{v2.04}{2015/04/24}{Unterstützung für das Paket \pkg{mweights}}^^A
+% \begin{macro}{\bfseries@tt}
+% \changes{v2.04}{2015/04/24}{Unterstützung für das Paket \pkg{mweights}}^^A
+% \begin{macro}{\mdseries@tt}
+% \changes{v2.04}{2015/04/24}{Unterstützung für das Paket \pkg{mweights}}^^A
+% \begin{macro}{\rmdef@ult}
+% \changes{v2.04}{2015/04/24}{Unterstützung für das Paket \pkg{mweights}}^^A
+% \begin{macro}{\sfdef@ult}
+% \changes{v2.04}{2015/04/24}{Unterstützung für das Paket \pkg{mweights}}^^A
+% \begin{macro}{\ttdef@ult}
+% \changes{v2.04}{2015/04/24}{Unterstützung für das Paket \pkg{mweights}}^^A
+% \begin{macro}{\bfdef@ult}
+% \changes{v2.04}{2015/04/24}{Unterstützung für das Paket \pkg{mweights}}^^A
+% \begin{macro}{\mddef@ult}
+% \changes{v2.04}{2015/04/24}{Unterstützung für das Paket \pkg{mweights}}^^A
+% Mit \cs{tud@font@set} werden entweder die normalen oder aber die Schriften
+% des \CDs aktiviert. Dabei werden die Pakete \pkg{fontspec} und \pkg{mweights}
+% beachtet.
+% \begin{macrocode}
+\newcommand*\tud@font@set{%
+% \end{macrocode}
+% Ist die Verwendung der Schriften des \CDs gewünscht, werden die Schnitte der
+% Standardschriften vorher vorher gesichert, um diese später vollständig
+% wiederherstellen zu können.
+% \begin{macrocode}
+ \if@tud@cdfont@active%
+ \tud@cs@store{rmdefault}%
+ \tud@cs@store{sfdefault}%
+ \tud@cs@store{ttdefault}%
+ \tud@cs@store{bfdefault}%
+ \tud@cs@store{mddefault}%
+ \tud@cs@store{updefault}%
+ \tud@cs@store{sldefault}%
+ \tud@cs@store{itdefault}%
+ \tud@cs@store{familydefault}%
+ \tud@cs@store{seriesdefault}%
+ \tud@cs@store{shapedefault}%
+ \if@tud@x@mweights@enabled%
+ \tud@cs@store{bfseries@rm}%
+ \tud@cs@store{mdseries@rm}%
+ \tud@cs@store{bfseries@sf}%
+ \tud@cs@store{mdseries@sf}%
+ \tud@cs@store{bfseries@tt}%
+ \tud@cs@store{mdseries@tt}%
+ \fi%
+% \end{macrocode}
+% Das Paket \pkg{fontspec} definiert u.\,U. die Familienauswahlbefehle um, so
+% dass diese ebenfalls gesichert werden.
+% \begin{macrocode}
+ \if@tud@x@fontspec@enabled%
+ \tud@cs@store{rmfamily}%
+ \tud@cs@store{sffamily}%
+ \tud@cs@store{ttfamily}%
+ \fi%
+% \end{macrocode}
+% Zunächst werden die Standardwerte für die Schriftfamilien gesetzt.
+% \begin{macrocode}
+ \renewcommand*\rmdefault{\sfdefault}%
+ \renewcommand*\updefault{n}%
+ \renewcommand*\itdefault{it}%
+ \renewcommand*\sldefault{sl}%
+ \renewcommand*\familydefault{\sfdefault}%
+ \renewcommand*\seriesdefault{\mddefault}%
+ \renewcommand*\shapedefault{\updefault}%
+% \end{macrocode}
+% Danach erfolgt die Definition der Schriften des \CDs.
+% \begin{macrocode}
+ \tud@cdfont@set%
+ \tud@ttfont@set%
+ \if@tud@x@mweights@enabled%
+ \edef\bfseries@rm{\tud@cdfont@bf}%
+ \edef\mdseries@rm{\tud@cdfont@md}%
+ \edef\bfseries@sf{\tud@cdfont@bf}%
+ \edef\mdseries@sf{\tud@cdfont@md}%
+ \edef\bfseries@tt{\tud@ttfont@bf}%
+ \edef\mdseries@tt{\tud@ttfont@md}%
+ \fi%
+ \let\bfdefault\tud@cdfont@bf%
+ \let\mddefault\tud@cdfont@md%
+% \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%
+ \tud@cs@restore{rmdefault}%
+ \tud@cs@restore{sfdefault}%
+ \tud@cs@restore{ttdefault}%
+ \tud@cs@restore{bfdefault}%
+ \tud@cs@restore{mddefault}%
+ \tud@cs@restore{updefault}%
+ \tud@cs@restore{sldefault}%
+ \tud@cs@restore{itdefault}%
+ \tud@cs@restore{familydefault}%
+ \tud@cs@restore{seriesdefault}%
+ \tud@cs@restore{shapedefault}%
+ \if@tud@x@mweights@enabled%
+ \tud@cs@restore{bfseries@rm}%
+ \tud@cs@restore{mdseries@rm}%
+ \tud@cs@restore{bfseries@sf}%
+ \tud@cs@restore{mdseries@sf}%
+ \tud@cs@restore{bfseries@tt}%
+ \tud@cs@restore{mdseries@tt}%
+ \fi%
+ \if@tud@x@fontspec@enabled%
+ \tud@cs@restore{rmfamily}%
+ \tud@cs@restore{sffamily}%
+ \tud@cs@restore{ttfamily}%
+ \fi%
+ \fi%
+ \if@tud@x@mweights@enabled%
+ \edef\rmdef@ult{\rmdefault}%
+ \edef\sfdef@ult{\sfdefault}%
+ \edef\ttdef@ult{\ttdefault}%
+ \edef\bfdef@ult{\bfdefault}%
+ \edef\mddef@ult{\mddefault}%
+ \edef\famdef@ult{\familydefault}%
+ \fi%
+% \end{macrocode}
+% Zum Ende werden einige Abstände abhängig von der gewählten Schriftgröße
+% definiert. Danach wird gewählte Standardschrift aktiviert und für die Klassen
+% das Layout erneuert.
+% \begin{macrocode}
+ \tud@font@skip@set%
+ \normalfont\selectfont%
+%<*class>
+ \tud@cd@process%
+ \global\@tud@head@font@settrue%
+%</class>
+}
+% \end{macrocode}
+% \end{macro}^^A \mddef@ult
+% \end{macro}^^A \bfdef@ult
+% \end{macro}^^A \ttdef@ult
+% \end{macro}^^A \sfdef@ult
+% \end{macro}^^A \rmdef@ult
+% \end{macro}^^A \mdseries@tt
+% \end{macro}^^A \bfseries@tt
+% \end{macro}^^A \mdseries@sf
+% \end{macro}^^A \bfseries@sf
+% \end{macro}^^A \mdseries@rm
+% \end{macro}^^A \bfseries@rm
+% \end{macro}^^A \tud@font@set
+% \begin{macro}{\tud@cdfont@set}
+% \changes{v2.06}{2018/06/28}{neu}^^A
+% \begin{macro}{\tud@cdfont@@set}
+% \changes{v2.06}{2018/06/28}{neu}^^A
+% \begin{macro}{\tud@cdfont@md}
+% \changes{v2.06}{2018/06/28}{neu}^^A
+% \begin{macro}{\tud@cdfont@bf}
+% \changes{v2.06}{2018/06/28}{neu}^^A
+% \begin{macro}{\tud@cdfont@ebf}
+% \changes{v2.06}{2018/06/28}{neu}^^A
+% Hiermit erfolgt die eigentliche Auswahl der Schriftfamilien für das \CD.
+% \begin{macrocode}
+\newcommand*\tud@cdfont@set{%
+ \if@tud@cdfont@fam@exist%
+ \if@tud@cdfont@lining%
+ \let\tud@cdfont@fam\tud@cdfont@fam@lf%
+ \else%
+ \let\tud@cdfont@fam\tud@cdfont@fam@osf%
+ \fi%
+% \end{macrocode}
+% Das Aktivieren der Schriften erfolgt entweder mit dem Paket \pkg{fontspec}
+% oder\dots
+% \begin{macrocode}
+ \if@tud@x@fontspec@enabled%
+ \tud@x@fontspec@set{sf}{\tud@cdfont@fam}%
+% \end{macrocode}
+% \dots nach dem NFSS.
+% \begin{macrocode}
+ \else%
+ \renewcommand*\sfdefault{\tud@cdfont@fam}%
+ \fi%
+ \tud@cdfont@@set%
+ \fi%
+% \end{macrocode}
+% Sollte versucht werden, die Schriften zu aktivieren, obwohl diese nicht
+% installiert sind, werden die entsprechenden Warnungen ausgegeben.
+% \begin{macrocode}
+ \tud@cdfont@wrn%
+}
+\newcommand*\tud@cdfont@md{m}
+\newcommand*\tud@cdfont@bf{b}
+\newcommand*\tud@cdfont@ebf{bx}
+\newcommand*\tud@cdfont@@set{%
+ \if@tud@cdfont@heavy%
+ \renewcommand*\tud@cdfont@md{m}%
+ \if@tud@cdfont@ultrabold%
+ \renewcommand*\tud@cdfont@bf{b}%
+ \renewcommand*\tud@cdfont@ebf{eb}%
+ \else%
+ \renewcommand*\tud@cdfont@bf{sb}%
+ \renewcommand*\tud@cdfont@ebf{b}%
+ \fi%
+ \else%
+ \renewcommand*\tud@cdfont@md{l}%
+ \if@tud@cdfont@ultrabold%
+ \renewcommand*\tud@cdfont@bf{sb}%
+ \renewcommand*\tud@cdfont@ebf{b}%
+ \else%
+ \renewcommand*\tud@cdfont@bf{m}%
+ \renewcommand*\tud@cdfont@ebf{sb}%
+ \fi%
+ \fi%
+}
+\if@tud@cdoldfont@active
+ \renewcommand*\tud@cdfont@@set{%
+ \if@tud@cdfont@heavy%
+ \renewcommand*\tud@cdfont@md{m}%
+ \if@tud@cdfont@ultrabold%
+ \renewcommand*\tud@cdfont@bf{eb}%
+ \renewcommand*\tud@cdfont@ebf{eb}%
+ \else%
+ \renewcommand*\tud@cdfont@bf{b}%
+ \renewcommand*\tud@cdfont@ebf{eb}%
+ \fi%
+ \else%
+ \renewcommand*\tud@cdfont@md{l}%
+ \if@tud@cdfont@ultrabold%
+ \renewcommand*\tud@cdfont@bf{b}%
+ \renewcommand*\tud@cdfont@ebf{eb}%
+ \else%
+ \renewcommand*\tud@cdfont@bf{m}%
+ \renewcommand*\tud@cdfont@ebf{b}%
+ \fi%
+ \fi%
+ }%
+\fi
+% \end{macrocode}
+% \end{macro}^^A \tud@cdfont@ebf
+% \end{macro}^^A \tud@cdfont@bf
+% \end{macro}^^A \tud@cdfont@md
+% \end{macro}^^A \tud@cdfont@@set
+% \end{macro}^^A \tud@cdfont@set
+% \begin{macro}{\tud@font@skip@set}
+% \changes{v2.04}{2015/02/17}{neu}^^A
+% \begin{macro}{\tud@font@skip@@set}
+% \changes{v2.04}{2015/03/27}{neu}^^A
+% \begin{macro}{\smallskipamount}
+% \changes{v2.04}{2015/04/24}{Wert abhängig von der Schriftgröße}^^A
+% \begin{macro}{\medskipamount}
+% \changes{v2.04}{2015/04/24}{Wert abhängig von der Schriftgröße}^^A
+% \begin{macro}{\bigskipamount}
+% \changes{v2.04}{2015/04/24}{Wert abhängig von der Schriftgröße}^^A
+% \begin{macro}{\abovecaptionskip}
+% \changes{v2.04}{2015/04/24}{Wert abhängig von der Schriftgröße}^^A
+% \begin{macro}{\belowcaptionskip}
+% \begin{macro}{\columnsep}
+% \changes{v2.04}{2015/04/24}{Wert abhängig von der Schriftgröße}^^A
+% Mit diesem Befehl wird nach der Auswahl der Schriftgröße die Länge einiger
+% Abstände angepasst, die bei den \KOMAScript-Klassen nicht abhängig von dieser
+% sind.
+% \begin{macrocode}
+\newcommand*\tud@font@skip@set{%
+% \end{macrocode}
+% Es werden die Standardeinstellungen abhängig von \opt{cdfont} entweder
+% wiederhergestellt oder gesichert und neu definiert.
+% \begin{macrocode}
+ \if@tud@relspacing%
+ \tud@skip@store{smallskipamount}%
+ \tud@skip@store{medskipamount}%
+ \tud@skip@store{bigskipamount}%
+ \tud@skip@store{abovecaptionskip}%
+ \tud@skip@store{belowcaptionskip}%
+ \tud@skip@store{columnsep}%
+ \tud@font@skip@@set%
+ \else%
+ \tud@skip@restore{smallskipamount}%
+ \tud@skip@restore{medskipamount}%
+ \tud@skip@restore{bigskipamount}%
+ \tud@skip@restore{abovecaptionskip}%
+ \tud@skip@restore{belowcaptionskip}%
+ \tud@skip@restore{columnsep}%
+ \fi%
+}
+% \end{macrocode}
+% Hiermit erfolgt das eigentliche Setzen der Abstände.
+% \begin{macrocode}
+\newcommand*\tud@font@skip@@set{%
+ \smallskipamount=\partopsep%
+ \medskipamount=\partopsep%
+ \multiply\medskipamount by 2%
+ \bigskipamount=\partopsep%
+ \multiply\bigskipamount by 4%
+ \tud@skip@set{abovecaptionskip}{\dimexpr\bigskipamount*5/6\relax}%
+ \tud@skip@set{belowcaptionskip}{\z@}%
+ \tud@skip@set{columnsep}{1.1\baselineskip}%
+}
+% \end{macrocode}
+% \end{macro}^^A \columnsep
+% \end{macro}^^A \belowcaptionskip
+% \end{macro}^^A \abovecaptionskip
+% \end{macro}^^A \bigskipamount
+% \end{macro}^^A \medskipamount
+% \end{macro}^^A \smallskipamount
+% \end{macro}^^A \tud@font@skip@@set
+% \end{macro}^^A \tud@font@skip@set
+% \begin{macro}{\tud@cdfont@init}
+% \changes{v2.04}{2015/03/10}{neu}^^A
+% \begin{macro}{\cdfontln}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\cdfontrn}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\cdfontsn}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\cdfontbn}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\cdfontxn}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\cdfontli}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\cdfontri}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\cdfontsi}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\cdfontbi}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\cdfontxi}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\textcdln}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\textcdrn}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\textcdsn}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\textcdbn}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\textcdxn}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\textcdli}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\textcdri}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\textcdsi}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\textcdbi}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\textcdxs}
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% Das Makro \cs{tud@cdfont@init} wird für die Defintion aller Befehle zur
+% Auswahl der Schriften des \CDs verwendet.
+% \begin{macrocode}
+\newcommand*\tud@cdfont@init{%
+% \end{macrocode}
+% Zur Nutztung der OTF"~Schriften werden mit \cs{tud@x@fontspec@init} alle
+% benötigten Schriftfamilien mit ihren einzelnen Schriftschnitten definiert.
+% \begin{macrocode}
+ \if@tud@cdfont@fam@exist%
+ \if@tud@x@fontspec@enabled%
+ \def\tud@res@a{%
+ UprightFont={OpenSans-Regular},%
+ FontFace={l}{n}{OpenSans-Light},%
+ FontFace={m}{n}{OpenSans-Regular},%
+ FontFace={sb}{n}{OpenSans-SemiBold},%
+ FontFace={b}{n}{OpenSans-Bold},%
+ FontFace={bx}{n}{OpenSans-Bold},%
+ FontFace={eb}{n}{OpenSans-ExtraBold},%
+ FontFace={l}{it}{OpenSans-LightItalic},%
+ FontFace={m}{it}{OpenSans-Italic},%
+ FontFace={sb}{it}{OpenSans-SemiBoldItalic},%
+ FontFace={b}{it}{OpenSans-BoldItalic},%
+ FontFace={bx}{it}{OpenSans-BoldItalic},%
+ FontFace={eb}{it}{OpenSans-ExtraBoldItalic}%
+ }%
+ \tud@x@fontspec@init{\tud@cdfont@fam@osf}{Numbers=OldStyle,\tud@res@a}%
+ \tud@x@fontspec@init{\tud@cdfont@fam@lf}{\tud@res@a}%
+% \end{macrocode}
+% Da einige Befehle mit \cs{DeclareTextSymbolDefault} für den Textmodus
+% definiert werden und dabei lediglich die Kodierung auf \val{OMS} oder
+% \val{OML} jedoch nicht den Namen der Schriftfamilie anpassen, werden hierfür
+% Aliasbefehle definiert, welche sich der Schriften des Paketes \pkg{iwona}
+% bedienen.
+% \begin{macrocode}
+ \else%
+ \IfFileExists{omliwona.fd}{%
+ \input{omliwona.fd}%
+ \@for\tud@res@a:={l,m,sb,b,eb}\do{%
+ \csletcs{OML/\tud@cdfont@fam@lf/\tud@res@a/it}%
+ {OML/iwona/\tud@res@a/it}%
+ \csletcs{OML/\tud@cdfont@fam@osf/\tud@res@a/it}%
+ {OML/iwona/\tud@res@a/it}%
+ }%
+ }{}%
+ \IfFileExists{omsiwona.fd}{%
+ \input{omsiwona.fd}%
+ \@for\tud@res@a:={l,m,sb,b,eb}\do{%
+ \csletcs{OMS/\tud@cdfont@fam@lf/\tud@res@a/n}%
+ {OMS/iwona/\tud@res@a/n}%
+ \csletcs{OMS/\tud@cdfont@fam@osf/\tud@res@a/n}%
+ {OMS/iwona/\tud@res@a/n}%
+ }%
+ }{}%
+ \AtBeginDocument{%
+ \ifcsundef{textrightarrow}{}{%
+ \tud@cs@store{textrightarrow}%
+ \renewrobustcmd*{\textrightarrow}{%
+ \begingroup%
+ \if@tud@cdfont@active\fontfamily{iwona}\selectfont\fi%
+ \tud@cs@use{textrightarrow}%
+ \endgroup%
+ }%
+ }%
+ }%
+ \fi%
+% \end{macrocode}
+% Es werden mehrere Schalter zur expliziten Auswahl für die Schriftschnitte
+% \textcdln{Open~Sans~Light}, \textcdrn{Open~Sans~Regular},
+% \textcdsn{Open~Sans~SemiBold}, \textcdbn{Open~Sans~Bold} und
+% \textcdxn{Open~Sans~ExtraBold} sowie \textcdli{Open~Sans~Light~Italic},
+% \textcdri{Open~Sans~Regular~Italic}, \textcdsi{Open~Sans~SemiBold}
+% \textcdbi{Open~Sans~Bold~Italic} und \textcdxi{Open~Sans~ExtraBold~Italic}
+% definiert. Diese können so im Dokument unabhängig von der Option
+% \opt{cdfont} genutzt werden.
+% \begin{macrocode}
+ \newrobustcmd*\cdfontln{\usefont{\encodingdefault}{\tud@cdfont@fam}{l}{n}}
+ \newrobustcmd*\cdfontrn{\usefont{\encodingdefault}{\tud@cdfont@fam}{m}{n}}
+ \newrobustcmd*\cdfontsn{\usefont{\encodingdefault}{\tud@cdfont@fam}{sb}{n}}
+ \newrobustcmd*\cdfontbn{\usefont{\encodingdefault}{\tud@cdfont@fam}{b}{n}}
+ \newrobustcmd*\cdfontxn{\usefont{\encodingdefault}{\tud@cdfont@fam}{eb}{n}}
+ \newrobustcmd*\cdfontli{\usefont{\encodingdefault}{\tud@cdfont@fam}{l}{it}}
+ \newrobustcmd*\cdfontri{\usefont{\encodingdefault}{\tud@cdfont@fam}{m}{it}}
+ \newrobustcmd*\cdfontsi{\usefont{\encodingdefault}{\tud@cdfont@fam}{sb}{it}}
+ \newrobustcmd*\cdfontbi{\usefont{\encodingdefault}{\tud@cdfont@fam}{b}{it}}
+ \newrobustcmd*\cdfontxi{\usefont{\encodingdefault}{\tud@cdfont@fam}{eb}{it}}
+% \end{macrocode}
+% Sind die notwendigen Schriften nicht installiert, werden die Schalter für die
+% Rückfallebene so definiert, dass diese eine Warnung ausgeben.
+% \begin{macrocode}
+ \else%
+ \tud@cdfont@fallback\cdfontln{OpenSans-Light}{md}{up}
+ \tud@cdfont@fallback\cdfontrn{OpenSans-Regular}{md}{up}
+ \tud@cdfont@fallback\cdfontsn{OpenSans-SemiBold}{md}{up}
+ \tud@cdfont@fallback\cdfontbn{OpenSans-Bold}{bf}{up}
+ \tud@cdfont@fallback\cdfontxn{OpenSans-ExtraBold}{bf}{up}
+ \tud@cdfont@fallback\cdfontli{OpenSans-LightItalic}{md}{it}
+ \tud@cdfont@fallback\cdfontri{OpenSans-Italic}{md}{it}
+ \tud@cdfont@fallback\cdfontsi{OpenSans-SemiBoldItalic}{md}{it}
+ \tud@cdfont@fallback\cdfontbi{OpenSans-BoldItalic}{bf}{it}
+ \tud@cdfont@fallback\cdfontxi{OpenSans-ExtraBoldItalic}{bf}{it}
+ \fi%
+% \end{macrocode}
+% Außerdem werden für die Schriften noch die entsprechenden Textauswahlbefehle
+% bereitgestellt.
+% \begin{macrocode}
+ \newcommand*\textcdln{}%
+ \newcommand*\textcdrn{}%
+ \newcommand*\textcdsn{}%
+ \newcommand*\textcdbn{}%
+ \newcommand*\textcdxn{}%
+ \newcommand*\textcdli{}%
+ \newcommand*\textcdri{}%
+ \newcommand*\textcdsi{}%
+ \newcommand*\textcdbi{}%
+ \newcommand*\textcdxi{}%
+ \DeclareTextFontCommand\textcdln{\cdfontln}%
+ \DeclareTextFontCommand\textcdrn{\cdfontrn}%
+ \DeclareTextFontCommand\textcdsn{\cdfontsn}%
+ \DeclareTextFontCommand\textcdbn{\cdfontbn}%
+ \DeclareTextFontCommand\textcdxn{\cdfontxn}%
+ \DeclareTextFontCommand\textcdli{\cdfontli}%
+ \DeclareTextFontCommand\textcdri{\cdfontri}%
+ \DeclareTextFontCommand\textcdsi{\cdfontsi}%
+ \DeclareTextFontCommand\textcdbi{\cdfontbi}%
+ \DeclareTextFontCommand\textcdxi{\cdfontxi}%
+}
+% \end{macrocode}
+% \end{macro}^^A \textcdxi
+% \end{macro}^^A \textcdbi
+% \end{macro}^^A \textcdsi
+% \end{macro}^^A \textcdri
+% \end{macro}^^A \textcdli
+% \end{macro}^^A \textcdxn
+% \end{macro}^^A \textcdbn
+% \end{macro}^^A \textcdsn
+% \end{macro}^^A \textcdrn
+% \end{macro}^^A \textcdln
+% \end{macro}^^A \cdfontxi
+% \end{macro}^^A \cdfontbi
+% \end{macro}^^A \cdfontsi
+% \end{macro}^^A \cdfontri
+% \end{macro}^^A \cdfontli
+% \end{macro}^^A \cdfontxn
+% \end{macro}^^A \cdfontbn
+% \end{macro}^^A \cdfontsn
+% \end{macro}^^A \cdfontrn
+% \end{macro}^^A \cdfontln
+% \end{macro}^^A \tud@cdfont@init
+% \begin{macro}{\univln}
+% \begin{macro}{\univrn}
+% \begin{macro}{\univbn}
+% \begin{macro}{\univxn}
+% \begin{macro}{\univls}
+% \begin{macro}{\univrs}
+% \begin{macro}{\univbs}
+% \begin{macro}{\univxs}
+% \begin{macro}{\dinbn}
+% \begin{macro}{\tud@db}
+% \begin{macro}{\tud@db@wrn}
+% \begin{macro}{\textuln}
+% \begin{macro}{\texturn}
+% \begin{macro}{\textubn}
+% \begin{macro}{\textuxn}
+% \begin{macro}{\textuls}
+% \begin{macro}{\texturs}
+% \begin{macro}{\textubs}
+% \begin{macro}{\textuxs}
+% \begin{macro}{\textdbn}
+% Die Definition der Befehle der veralteten Schriften des \CDs.
+% \begin{macrocode}
+\if@tud@cdoldfont@active
+ \renewcommand*\tud@cdfont@init{%
+ \if@tud@cdfont@fam@exist%
+ \if@tud@x@fontspec@enabled%
+ \def\tud@res@a{%
+ UprightFont={Univers},%
+ FontFace={l}{n}{Univers-Light},%
+ FontFace={m}{n}{Univers},%
+ FontFace={b}{n}{Univers-Bold},%
+ FontFace={bx}{n}{Univers-Bold},%
+ FontFace={eb}{n}{Univers-Black},%
+ FontFace={l}{it}{Univers-LightOblique},%
+ FontFace={m}{it}{Univers-Oblique},%
+ FontFace={b}{it}{Univers-BoldOblique},%
+ FontFace={bx}{it}{Univers-BoldOblique},%
+ FontFace={eb}{it}{Univers-BlackOblique}%
+ }%
+ \tud@x@fontspec@init{\tud@cdfont@fam@lf}{\tud@res@a}%
+ \fi%
+% \end{macrocode}
+% Die Schalter zur expliziten Auswahl für die \Univers-Schriftschnitte.
+% \begin{macrocode}
+ \newrobustcmd*\univln{\usefont{\encodingdefault}{\tud@cdfont@fam}{l}{n}}
+ \newrobustcmd*\univrn{\usefont{\encodingdefault}{\tud@cdfont@fam}{m}{n}}
+ \newrobustcmd*\univbn{\usefont{\encodingdefault}{\tud@cdfont@fam}{b}{n}}
+ \newrobustcmd*\univxn{\usefont{\encodingdefault}{\tud@cdfont@fam}{eb}{n}}
+ \newrobustcmd*\univls{\usefont{\encodingdefault}{\tud@cdfont@fam}{l}{sl}}
+ \newrobustcmd*\univrs{\usefont{\encodingdefault}{\tud@cdfont@fam}{m}{sl}}
+ \newrobustcmd*\univbs{\usefont{\encodingdefault}{\tud@cdfont@fam}{b}{sl}}
+ \newrobustcmd*\univxs{\usefont{\encodingdefault}{\tud@cdfont@fam}{eb}{sl}}
+% \end{macrocode}
+% Sind die notwendigen Schriften nicht installiert, werden die Schalter für die
+% Rückfallebene so definiert, dass diese eine Warnung ausgeben.
+% \begin{macrocode}
+ \else%
+ \tud@cdfont@fallback\univln{Univers-Light}{md}{up}
+ \tud@cdfont@fallback\univrn{Univers}{md}{up}
+ \tud@cdfont@fallback\univbn{Univers-Bold}{bf}{up}
+ \tud@cdfont@fallback\univxn{Univers-Black}{bf}{up}
+ \tud@cdfont@fallback\univls{Univers-LightOblique}{md}{sl}
+ \tud@cdfont@fallback\univrs{Univers-Oblique}{md}{sl}
+ \tud@cdfont@fallback\univbs{Univers-BoldOblique}{bf}{sl}
+ \tud@cdfont@fallback\univxs{Univers-BlackOblique}{bf}{sl}
+ \fi%
+% \end{macrocode}
+% 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}%
+% \end{macrocode}
+% Diese werden auch für die Definition der neuen Schriftauswahlbefehle genutzt.
+% \begin{macrocode}
+ \newrobustcmd*\cdfontln{\univln}%
+ \newrobustcmd*\cdfontrn{\univrn}%
+ \newrobustcmd*\cdfontsn{\univrn}%
+ \newrobustcmd*\cdfontbn{\univbn}%
+ \newrobustcmd*\cdfontxn{\univxn}%
+ \newrobustcmd*\cdfontli{\univls}%
+ \newrobustcmd*\cdfontri{\univrs}%
+ \newrobustcmd*\cdfontsi{\univrs}%
+ \newrobustcmd*\cdfontbi{\univbs}%
+ \newrobustcmd*\cdfontxi{\univxs}%
+ \newcommand*\textcdln{}%
+ \newcommand*\textcdrn{}%
+ \newcommand*\textcdsn{}%
+ \newcommand*\textcdbn{}%
+ \newcommand*\textcdxn{}%
+ \newcommand*\textcdli{}%
+ \newcommand*\textcdri{}%
+ \newcommand*\textcdsi{}%
+ \newcommand*\textcdbi{}%
+ \newcommand*\textcdxi{}%
+ \DeclareTextFontCommand\textcdln{\cdfontln}%
+ \DeclareTextFontCommand\textcdrn{\cdfontrn}%
+ \DeclareTextFontCommand\textcdsn{\cdfontsn}%
+ \DeclareTextFontCommand\textcdbn{\cdfontbn}%
+ \DeclareTextFontCommand\textcdxn{\cdfontxn}%
+ \DeclareTextFontCommand\textcdli{\cdfontli}%
+ \DeclareTextFontCommand\textcdri{\cdfontri}%
+ \DeclareTextFontCommand\textcdsi{\cdfontsi}%
+ \DeclareTextFontCommand\textcdbi{\cdfontbi}%
+ \DeclareTextFontCommand\textcdxi{\cdfontxi}%
+% \end{macrocode}
+% Anschließend wird für \DIN äquivalent verfahren.
+% \begin{macrocode}
+ \if@tud@cdfont@db@exist%
+ \if@tud@x@fontspec@enabled%
+ \def\tud@res@a{%
+ UprightFont={DIN-Bold},%
+ FontFace={l}{n}{DIN-Bold},%
+ FontFace={m}{n}{DIN-Bold},%
+ FontFace={b}{n}{DIN-Bold},%
+ FontFace={bx}{n}{DIN-Bold},%
+ FontFace={eb}{n}{DIN-Bold},%
+ FontFace={l}{it}{Font=DIN-Bold,FakeSlant=0.15},%
+ FontFace={m}{it}{Font=DIN-Bold,FakeSlant=0.15},%
+ FontFace={b}{it}{Font=DIN-Bold,FakeSlant=0.15},%
+ FontFace={bx}{it}{Font=DIN-Bold,FakeSlant=0.15},%
+ FontFace={eb}{it}{Font=DIN-Bold,FakeSlant=0.15}%
+ }%
+ \tud@x@fontspec@init{\tud@cdfont@db}{\tud@res@a}%
+ \fi%
+% \end{macrocode}
+% Bei der Schriftauswahl wird die entsprechende Mathematikschrift aktiviert.
+% \begin{macrocode}
+ \newrobustcmd*\tud@db{%
+ \usefont{\encodingdefault}{\tud@cdfont@db}{b}{n}%
+ \if@tud@cdmath@active\mathversion{tuddin}\fi%
+ }%
+ \newrobustcmd*\dinbn{\tud@db}%
+% \end{macrocode}
+% Da der Schalter \cs{dinbn} innerhalb der Überschriften verwendet wird, sollte
+% dieser zumindest auch auf den Überschriftenstil schalten, falls die benötigte
+% Schrift selbst nicht installiert ist.
+% \begin{macrocode}
+ \else%
+ \newrobustcmd*\tud@db{\tud@db@wrn\sectfont}%
+ \newcommand*\tud@db@wrn{%
+%<*class>
+ \ClassWarning{\TUD@Class@Name}%
+%</class>
+%<*package>
+ \PackageWarning{tudscrfonts}%
+%</package>
+ {%
+ Font `DIN-Bold' is not available and therefore\MessageBreak
+ can not be used for headings%
+ }%
+ \global\let\tud@db@wrn\relax%
+ }%
+ \newrobustcmd*\dinbn{\tud@cdfont@fallback@wrn{DIN-Bold}\sectfont}%
+ \fi%
+ \newcommand*\textdbn{}%
+ \DeclareTextFontCommand\textdbn{\dinbn}%
+ }%
+\fi
+% \end{macrocode}
+% \end{macro}^^A \textdbn
+% \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
+% \end{macro}^^A \tud@db@wrn
+% \end{macro}^^A \tud@db
+% \end{macro}^^A \dinbn
+% \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}{\tud@cdfont@fallback}
+% \changes{v2.05}{2015/12/14}{neu}^^A
+% \begin{macro}{\tud@cdfont@fallback@wrn}
+% \changes{v2.05}{2015/12/14}{neu}^^A
+% Hier wird die Rückfallebene für die Schriftschalter sowie die dazugehörige
+% Warnung definiert.
+% \begin{macrocode}
+\newcommand*\tud@cdfont@fallback[4]{%
+ \newrobustcmd*#1{%
+ \tud@cdfont@fallback@wrn{#2}%
+ \sffamily\csuse{#3series}\csuse{#4shape}%
+ }%
+}
+\newcommand*\tud@cdfont@fallback@wrn[1]{%
+%<*class>
+ \ClassWarning{\TUD@Class@Name}%
+%</class>
+%<*package>
+ \PackageWarning{tudscrfonts}%
+%</package>
+ {%
+ The requested font `#1'\MessageBreak%
+ is not available, a fallback layout is used%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@cdfont@fallback@wrn
+% \end{macro}^^A \tud@cdfont@fallback
+% \begin{macro}{\cdfont}
+% \changes{v2.04}{2015/03/04}{neu}^^A
+% \begin{macro}{\tudfont}
+% \changes{v2.04}{2015/04/24}{\cls{tudmathposter} wird unterstützt}^^A
+% \begin{macro}{\textcd}
+% \changes{v2.04}{2015/03/04}{neu}^^A
+% \begin{macro}{\tud@cdfont@get}
+% \changes{v2.04}{2015/03/04}{neu}^^A
+% \changes{v2.06}{2018/06/29}{für \OpenSans überarbeitet}^^A
+% \begin{macro}{\tud@cdfont@trim}
+% \changes{v2.04}{2015/03/04}{neu}^^A
+% \changes{v2.06}{2018/06/29}{für \OpenSans überarbeitet}^^A
+% \begin{macro}{\tud@cdfont@@trim}
+% \changes{v2.04}{2015/03/04}{neu}^^A
+% Die Klassen \cls{tudposter} und \cls{tudmathposter} definieren den Befehl
+% \cs{tudfont}, mit welchem die Schriften des \CDs der \TnUD auch mit Klarnamen
+% ausgewählt werden können. Zur Kompatibilität wird der Befehl \cs{cdfont}
+% definiert, welcher die gleiche Funktionalität bereitstellt. Zusätzlich wird
+% der Befehl \cs{textcd} bereitgestellt, der die Auswahl der Schrift als
+% Textbefehl ermöglicht.
+% \begin{macrocode}
+\newcommand*\cdfont[1]{%
+ \tud@cdfont@get{#1}%
+ \ifx\@tempc\relax\else%
+ \csuse{cdfont\@tempc}%
+ \fi%
+}
+\newcommand*\textcd[2]{%
+ \tud@cdfont@get{#1}%
+ \ifx\@tempc\relax%
+ \textsf{#2}%
+ \else%
+ \csuse{textcd\@tempc}{#2}%
+ \fi%
+}
+\if@tud@cdoldfont@active
+ \renewcommand*\cdfont[1]{%
+ \tud@cdfont@get{#1}%
+ \ifx\@tempc\relax\else%
+ \ifstr{\@tempc}{dinbn}{\dinbn}{\csuse{univ\@tempc}}%
+ \fi%
+ }%
+ \renewcommand*\textcd[2]{%
+ \tud@cdfont@get{#1}%
+ \ifx\@tempc\relax%
+ \textsf{#2}%
+ \else%
+ \ifstr{\@tempc}{dinbn}{\textdbn{#2}}{\csuse{textu\@tempc}{#2}}%
+ \fi%
+ }%
+\fi
+\newcommand*\tud@cdfont@get[1]{%
+ \tud@cdfont@trim\@tempa{#1}%
+ \ifstr{\@tempa}{l}{\def\@tempc{ln}}{%
+ \ifstr{\@tempa}{}{\def\@tempc{rn}}{%
+ \ifstr{\@tempa}{r}{\def\@tempc{rn}}{%
+ \ifstr{\@tempa}{s}{\def\@tempc{sn}}{%
+ \ifstr{\@tempa}{b}{\def\@tempc{bn}}{%
+ \ifstr{\@tempa}{x}{\def\@tempc{xn}}{%
+ \ifstr{\@tempa}{li}{\def\@tempc{li}}{%
+ \ifstr{\@tempa}{il}{\def\@tempc{li}}{%
+ \ifstr{\@tempa}{i}{\def\@tempc{ri}}{%
+ \ifstr{\@tempa}{ri}{\def\@tempc{ri}}{%
+ \ifstr{\@tempa}{ir}{\def\@tempc{ri}}{%
+ \ifstr{\@tempa}{si}{\def\@tempc{si}}{%
+ \ifstr{\@tempa}{is}{\def\@tempc{si}}{%
+ \ifstr{\@tempa}{bi}{\def\@tempc{bi}}{%
+ \ifstr{\@tempa}{ib}{\def\@tempc{bi}}{%
+ \ifstr{\@tempa}{xi}{\def\@tempc{xi}}{%
+ \ifstr{\@tempa}{ix}{\def\@tempc{xi}}{%
+ \let\@tempc\relax%
+%<*class>
+ \ClassWarning{\TUD@Class@Name}%
+%</class>
+%<*package>
+ \PackageWarning{tudscrfonts}%
+%</package>
+ {The font `#1' is unknown}%
+ }}}}}}}}}}}}}}}}}%
+}
+\if@tud@cdoldfont@active
+ \renewcommand*\tud@cdfont@get[1]{%
+ \tud@cdfont@trim\@tempa{#1}%
+ \ifstr{\@tempa}{45}{\def\@tempc{ln}}{%
+ \ifstr{\@tempa}{55}{\def\@tempc{rn}}{%
+ \ifstr{\@tempa}{65}{\def\@tempc{bn}}{%
+ \ifstr{\@tempa}{75}{\def\@tempc{xn}}{%
+ \ifstr{\@tempa}{45oblique}{\def\@tempc{ls}}{%
+ \ifstr{\@tempa}{55oblique}{\def\@tempc{rs}}{%
+ \ifstr{\@tempa}{65oblique}{\def\@tempc{bs}}{%
+ \ifstr{\@tempa}{75oblique}{\def\@tempc{xs}}{%
+ \ifstr{\@tempa}{oblique45}{\def\@tempc{ls}}{%
+ \ifstr{\@tempa}{oblique55}{\def\@tempc{rs}}{%
+ \ifstr{\@tempa}{oblique65}{\def\@tempc{bs}}{%
+ \ifstr{\@tempa}{oblique75}{\def\@tempc{xs}}{%
+ \ifstr{\@tempa}{din}{\def\@tempc{dinbn}}{%
+ \ifstr{\@tempa}{din65}{\def\@tempc{dinbn}}{%
+ \let\@tempc\relax%
+%<*class>
+ \ClassWarning{\TUD@Class@Name}%
+%</class>
+%<*package>
+ \PackageWarning{tudscrfonts}%
+%</package>
+ {The font `#1' is unknown}%
+ }}}}}}}}}}}}}}%
+ }%
+\fi
+\newcommand*\tud@cdfont@trim[2]{%
+ \protected@edef\@tempa{\trim@spaces{#2}}%
+ \tud@lowerstring{\@tempa}{\@tempa}%
+ \tud@cdfont@@trim{ }{}%
+ \tud@cdfont@@trim{-}{}%
+ \tud@cdfont@@trim{_}{}%
+ \tud@cdfont@@trim{~}{}%
+ \tud@cdfont@@trim{opensans}{}%
+ \tud@cdfont@@trim{light}{l}%
+ \tud@cdfont@@trim{regular}{r}%
+ \tud@cdfont@@trim{book}{r}%
+ \tud@cdfont@@trim{semibold}{s}%
+ \tud@cdfont@@trim{demi}{s}%
+ \tud@cdfont@@trim{extrabold}{x}%
+ \tud@cdfont@@trim{black}{x}%
+ \tud@cdfont@@trim{bold}{b}%
+ \tud@cdfont@@trim{italic}{i}%
+ \tud@cdfont@@trim{oblique}{i}%
+ \tud@cdfont@@trim{slanted}{i}%
+ \let#1\@tempa%
+}
+\if@tud@cdoldfont@active
+ \renewcommand*\tud@cdfont@trim[2]{%
+ \protected@edef\@tempa{\trim@spaces{#2}}%
+ \tud@lowerstring{\@tempa}{\@tempa}%
+ \tud@cdfont@@trim{ }{}%
+ \tud@cdfont@@trim{-}{}%
+ \tud@cdfont@@trim{_}{}%
+ \tud@cdfont@@trim{~}{}%
+ \tud@cdfont@@trim{ce}{}%
+ \tud@cdfont@@trim{ff}{}%
+ \tud@cdfont@@trim{univers}{}%
+ \tud@cdfont@@trim{60}{65}%
+ \tud@cdfont@@trim{light}{45}%
+ \tud@cdfont@@trim{regular}{55}%
+ \tud@cdfont@@trim{bold}{65}%
+ \tud@cdfont@@trim{black}{75}%
+ \tud@cdfont@@trim{4545}{45}%
+ \tud@cdfont@@trim{5555}{55}%
+ \tud@cdfont@@trim{6565}{65}%
+ \tud@cdfont@@trim{7575}{75}%
+ \tud@cdfont@@trim{italic}{oblique}%
+ \tud@cdfont@@trim{slanted}{oblique}%
+ \let#1\@tempa%
+ }%
+\fi
+\newcommand*\tud@cdfont@@trim[2]{%
+ \def\@tempb##1#1##2\relax{\def\@tempa{##1#2##2}}%
+ \@expandtwoargs\in@{#1}{\@tempa}%
+ \@whilesw\ifin@\fi{%
+ \expandafter\@tempb\@tempa\relax%
+ \@expandtwoargs\in@{#1}{\@tempa}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@cdfont@@trim
+% \end{macro}^^A \tud@cdfont@trim
+% \end{macro}^^A \tud@cdfont@get
+% \end{macro}^^A \textcd
+% \end{macro}^^A \tudfont
+% \end{macro}^^A \cdfont
+%
+% \iffalse
+%</body>
+%<*option>
+% \fi
+%
+% \subsubsection{TypeWriter-Schriften}
+%
+% \begin{option}{ttfont}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\tud@ttfont@num}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% Mit dieser Option regelt, ob die TypeWriter-Schriften durch den Anwender
+% manuell eingestellt werden oder aber die entsprechenden Schriften aus den
+% Paketen \pkg{lmodern} oder \pkg{roboto-mono} zum Einsatz kommt.
+% \begin{macrocode}
+\newcommand*\tud@ttfont@num{0}
+\TUD@key{ttfont}[true]{%
+ \TUD@set@numkey{ttfont}{@tempa}{%
+ \TUD@bool@numkey,%
+ {roboto}{1},{roboto-mono}{1},{robo}{1},%
+ {lm}{2},{lmtt}{2},{lmodern}{2}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\@tempa\relax% false
+ \renewcommand*\tud@ttfont@num{0}%
+ \or% roboto
+ \renewcommand*\tud@ttfont@num{1}%
+ \or% lmodern
+ \renewcommand*\tud@ttfont@num{2}%
+ \fi%
+ \TUD@SpecialOptionAtDocument{tud@font@set}%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@ttfont@num
+% \end{option}^^A ttfont
+%
+% \iffalse
+%</option>
+%<*body>
+% \fi
+%
+% \begin{macro}{\tud@ttfont@set}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\tud@ttfont@@set}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\tud@ttfont@md}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\tud@ttfont@bf}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\tud@ttfont@ebf}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% Die Auswahl der TypeWriter-Schrift.
+% \begin{macrocode}
+\newcommand*\tud@ttfont@set{%
+ \if@tud@ttfont@rb@exist\else\ifnum\tud@ttfont@num=\@ne\relax%
+%<*class>
+ \ClassWarning{\TUD@Class@Name}%
+%</class>
+%<*package>
+ \PackageWarning{tudscrfonts}%
+%</package>
+ {%
+ The package `roboto-mono' is missing so the\MessageBreak%
+ typewriter font of package `lmodern' is used%
+ }%
+ \TUDoptions{ttfont=lmodern}%
+ \fi\fi%
+ \ifcase\tud@ttfont@num\relax% false
+ \let\tud@ttfont@fam\ttdefault%
+ \or% roboto
+ \let\tud@ttfont@fam\tud@ttfont@rb%
+ \or% lmodern
+ \let\tud@ttfont@fam\tud@ttfont@lm%
+ \fi%
+ \ifcase\tud@ttfont@num\relax\else% !false
+ \if@tud@x@fontspec@enabled%
+% \end{macrocode}
+% Das Setzen der TypeWriter-Schriften aus dem Paket \pkg{lmodern} erfolgt nur,
+% wenn diese nicht standardmäßig durch \pkg{fontspec} aktiviert ist.
+% \begin{macrocode}
+ \ifx\ttdefault\tud@ttfont@fam\else%
+ \tud@x@fontspec@set{tt}{\tud@ttfont@fam}%
+ \fi%
+ \else%
+ \renewcommand*\ttdefault{\tud@ttfont@fam}%
+ \fi%
+ \fi%
+ \tud@ttfont@@set%
+}
+\newcommand*\tud@ttfont@md{}
+\newcommand*\tud@ttfont@bf{}
+\newcommand*\tud@ttfont@ebf{}
+\newcommand*\tud@ttfont@@set{%
+ \ifcase\tud@ttfont@num\relax%
+ \ifundef{\mdseries@tt}{%
+ \edef\tud@ttfont@md{\tud@cs@use{mddefault}}%
+ }{%
+ \edef\tud@ttfont@md{\mdseries@tt}%
+ }%
+ \ifundef{\bfseries@tt}{%
+ \edef\tud@ttfont@bf{\tud@cs@use{bfdefault}}%
+ }{%
+ \edef\tud@ttfont@bf{\bfseries@tt}%
+ }%
+ \edef\tud@ttfont@ebf{\tud@ttfont@bf}%
+ \or% roboto
+ \renewcommand*\tud@ttfont@md{\tud@cdfont@md}%
+ \renewcommand*\tud@ttfont@bf{\tud@cdfont@bf}%
+ \renewcommand*\tud@ttfont@ebf{\tud@cdfont@ebf}%
+ \else% lmodern
+ \if@tud@cdfont@heavy%
+ \renewcommand*\tud@ttfont@md{m}%
+ \renewcommand*\tud@ttfont@bf{b}%
+ \renewcommand*\tud@ttfont@ebf{b}%
+ \else%
+ \renewcommand*\tud@ttfont@md{l}%
+ \if@tud@cdfont@ultrabold%
+ \renewcommand*\tud@ttfont@bf{b}%
+ \renewcommand*\tud@ttfont@ebf{b}%
+ \else%
+ \renewcommand*\tud@ttfont@bf{m}%
+ \renewcommand*\tud@ttfont@ebf{b}%
+ \fi%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@ttfont@ebf
+% \end{macro}^^A \tud@ttfont@bf
+% \end{macro}^^A \tud@ttfont@md
+% \end{macro}^^A \tud@ttfont@@set
+% \end{macro}^^A \tud@ttfont@set
+% \begin{macro}{\tud@ttfont@init}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\tud@ttfont@rb@scale}
+% \changes{v2.06}{2018/08/30}{neu}^^A
+% Mit \cs{tud@ttfont@init} erfolgt die Defintion der TypeWriter-Schriften.
+% \begin{macrocode}
+\newcommand*\tud@ttfont@init{%
+% \end{macrocode}
+% Für die \texttt{RobotoMono} wird der Skalierungsfaktor fest definiert.
+% \begin{macrocode}
+ \newcommand*\tud@ttfont@rb@scale{0.9}%
+ \if@tud@x@fontspec@enabled%
+ \if@tud@ttfont@rb@exist%
+ \tud@x@fontspec@init{\tud@ttfont@rb}{%
+ Scale={\tud@ttfont@rb@scale},%
+ UprightFont={RobotoMono-Regular},%
+ FontFace={l}{n}{RobotoMono-Light},%
+ FontFace={m}{n}{RobotoMono-Regular},%
+ FontFace={sb}{n}{RobotoMono-Medium},%
+ FontFace={b}{n}{RobotoMono-Bold},%
+ FontFace={bx}{n}{RobotoMono-Bold},%
+ FontFace={eb}{n}{RobotoMono-Bold},%
+ FontFace={l}{it}{RobotoMono-LightItalic},%
+ FontFace={m}{it}{RobotoMono-Italic},%
+ FontFace={sb}{it}{RobotoMono-MediumItalic},%
+ FontFace={b}{it}{RobotoMono-BoldItalic},%
+ FontFace={bx}{it}{RobotoMono-BoldItalic},%
+ FontFace={eb}{it}{RobotoMono-BoldItalic}%
+ }%
+ \fi%
+% \end{macrocode}
+% Gewöhnlich ist die Schrift \texttt{lmtt} via \pkg{fontspec} voreingestellt.
+% Allerdings wird diese von einigen Paketen mit \cs{setmonofont} überschrieben.
+% Für diesen Fall wird die Schriftfamilie \texttt{lmtt} mit den Mitteln von
+% \pkg{fontspec} definiert.
+% \begin{macrocode}
+ \ifx\ttdefault\tud@ttfont@lm\else%
+ \tud@x@fontspec@init{\tud@ttfont@lm}{%
+ UprightFont={LMMono10-Regular},%
+ FontFace={l}{n}{LMMonoLt10-Regular},%
+ FontFace={m}{n}{LMMono10-Regular},%
+ FontFace={b}{n}{LMMonoLt10-Bold},%
+ FontFace={bx}{n}{LMMonoLt10-Bold},%
+ FontFace={l}{it}{LMMonoLt10-Oblique},%
+ FontFace={m}{it}{LMMonoSlant10-Regular},%
+ FontFace={b}{it}{LMMonoLt10-BoldOblique},%
+ FontFace={bx}{it}{LMMonoLt10-BoldOblique}%
+ }%
+ \fi%
+ \else%
+% \end{macrocode}
+% Existiert das Paket \pkg{roboto-mono}, wird die Schriftfamilie \val{tudtt}
+% definiert und die passenden Type1-Schriften für diese definiert.
+% \begin{macrocode}
+ \if@tud@ttfont@rb@exist%
+% \end{macrocode}
+% Der Skalierungsfaktor für das NFSS gesetzt.
+% \begin{macrocode}
+ \edef\tud@ttfont@rb@scale{s*[\tud@ttfont@rb@scale]}%
+ \begingroup%
+ \def\tud@res@c##1##2{%
+ \tud@lowerstring\tud@res@a{##1}%
+ \DeclareFontFamily{##1}{\tud@ttfont@rb}{\hyphenchar\font=\m@ne}%
+% \end{macrocode}
+% Das temporäre Makro verlangt im ersten Argument die NFSS-Serie, im zweiten
+% den Teil des Dateinamens der \texttt{RobotoMono} für aufrechte Metriken und
+% im dritten Argument den für kursive.
+% \begin{macrocode}
+ \def\tud@res@b####1####2####3{%
+ \DeclareFontShape{##1}{\tud@ttfont@rb}{####1}{n}{%
+ <->\tud@ttfont@rb@scale RobotoMono-####2-tlf-\tud@res@a%
+ }{}%
+ \DeclareFontShape{##1}{\tud@ttfont@rb}{####1}{it}{%
+ <->\tud@ttfont@rb@scale RobotoMono-####3-tlf-\tud@res@a%
+ }{}%
+ \DeclareFontShape{##1}{\tud@ttfont@rb}{####1}{sl}{%
+ <->ssub*\tud@ttfont@rb/####1/it%
+ }{}%
+% \end{macrocode}
+% Kapitälchen sind nicht für alle Kodierungen definiert, weshalb diese nur
+% optional definiert werden.
+% \begin{macrocode}
+ \ifbool{##2}{%
+ \DeclareFontShape{##1}{\tud@ttfont@rb}{####1}{sc}{%
+ <->\tud@ttfont@rb@scale RobotoMono-####2-tlf-sc-\tud@res@a%
+ }{}%
+ \DeclareFontShape{##1}{\tud@ttfont@rb}{####1}{scit}{%
+ <->\tud@ttfont@rb@scale RobotoMono-####3-tlf-sc-\tud@res@a%
+ }{}%
+ \DeclareFontShape{##1}{\tud@ttfont@rb}{####1}{scsl}{%
+ <->ssub*\tud@ttfont@rb/####1/scit%
+ }{}%
+ }{}%
+ }%
+ \tud@res@b{l}{Light}{LightItalic}%
+ \tud@res@b{m}{Regular}{Italic}%
+ \tud@res@b{sb}{Medium}{MediumItalic}%
+ \tud@res@b{b}{Bold}{BoldItalic}%
+ \tud@res@b{bx}{Bold}{BoldItalic}%
+ }%
+ \tud@res@c{OT1}{true}%
+ \tud@res@c{T1}{true}%
+ \ifcsundef{T@TS1}{}{\tud@res@c{TS1}{false}}%
+ \endgroup%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@ttfont@rb@scale
+% \end{macro}^^A \tud@ttfont@init
+%
+% \iffalse
+%</body>
+%<*option>
+% \fi
+%
+% \subsubsection{Schriften für den Mathematiksatz}
+%
+% Für den mathematischen Satz werden ergänzend zur \OpenSans die Symbole aus
+% dem Paket \pkg{mdsymbol} genutzt. Diese werden bereits bei der Erstellung der
+% Type1-Schriften eingefügt.
+%
+% Die veralteten Schriften des \CDs \Univers und \DIN besitzen keine Glyphen für
+% den Mathematiksatz. Daher 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 die darin enthaltenen Glyphen direkt bei der Installation
+% der Schriften eingebunden werden.
+%
+% \begin{option}{cdmath}
+% \begin{macro}{\if@tud@cdmath@active}
+% \begin{macro}{\if@tud@cdmath@active@locked}
+% Mit dieser Option kann die genutzte Standardschrift für den Mathematiksatz
+% für das gesamte Dokument umgestellt werden.
+% \ToDo{%
+% Option evtl. überarbeiten und nicht mehr im Dokument zulassen;
+% andernfalls müssten alle bereitgestellte Befehle für den Mathematiksatz
+% gesichert und neu definiert werden, weil diese ggf. von anderen Paketen
+% umdefiniert werden. Bspw. \cs{the}\cs{mathcode`!}
+% }[v2.07]
+% \begin{macrocode}
+\tud@locked@newbool{@tud@cdmath@active}
+\tud@locked@bool@preset{@tud@cdmath@active}{true}%
+\TUD@key{cdmath}[true]{%
+ \TUD@set@numkey{cdmath}{@tempa}{%
+ \TUD@bool@numkey,%
+ {serifmath}{0},{serif}{0},{nosansmath}{0},{nosans}{0},%
+ {sansmath}{1},{sans}{1},%
+ {upgreek}{2},{uprightgreek}{2},{uprightgreeks}{2},%
+ {slgreek}{3},{slantedgreek}{3},{slantedgreeks}{3},%
+ {itgreek}{3},{italicgreek}{3},{italicgreeks}{3},%
+ {texgreek}{4},{latexgreek}{4},{texgreeks}{4},{latexgreeks}{4},%
+ {standardgreek}{4},{standardgreeks}{4}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\@tempa\relax% false
+ \tud@locked@bool@set{@tud@cdmath@active}{false}%
+ \TUD@SpecialOptionAtDocument{tud@math@set}%
+ \or% true
+ \tud@locked@bool@set{@tud@cdmath@active}{true}%
+ \TUD@SpecialOptionAtDocument{tud@math@set}%
+ \or% uprightgreek
+ \TUDoptions{slantedgreek=false}%
+ \or% slantedgreek
+ \TUDoptions{slantedgreek=true}%
+ \or% standardgreek
+ \TUDoptions{slantedgreek=standard}%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@cdmath@active@locked
+% \end{macro}^^A \if@tud@cdmath@active
+% \end{option}^^A cdmath
+% \begin{option}{slantedgreek}
+% \begin{option}{slantedGreek}
+% \begin{option}{slantedGreeks}
+% \changes{v2.04}{2015/02/27}{neu}^^A
+% \begin{macro}{\if@tud@slantedgreek}
+% Mit dieser Option kann die Neigung der griechischen Majuskeln geändert werden.
+% \begin{macrocode}
+\newcommand*\tud@slantedgreek@num{0}
+\TUD@key{slantedgreek}[true]{%
+ \TUD@set@numkey{slantedgreek}{@tempa}{%
+ \TUD@bool@numkey,%
+ {up}{0},{upright}{0},%
+ {sl}{1},{slanted}{1},{it}{1},{italic}{1},%
+ {standard}{2},{std}{2},{tex}{2},{latex}{2},{stdgrk}{2},{stdgrks}{2},%
+ {standardgreek}{2},{standardgreeks}{2},%
+ {texgreek}{2},{latexgreek}{2},{texgreeks}{2},{latexgreeks}{2}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifcase\@tempa\relax% upright
+ \renewcommand*\tud@slantedgreek@num{0}%
+ \or% slanted
+ \renewcommand*\tud@slantedgreek@num{1}%
+ \or% standard
+ \renewcommand*\tud@slantedgreek@num{2}%
+ \fi%
+ \TUD@SpecialOptionAtDocument{tud@math@set}%
+ \fi%
+}
+\TUD@key{slantedGreek}[true]{\TUDoptions{slantedgreek=#1}}
+\TUD@key{slantedGreeks}[true]{\TUDoptions{slantedgreek=#1}}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@slantedgreek
+% \end{option}^^A slantedGreeks
+% \end{option}^^A slantedGreek
+% \end{option}^^A slantedgreek
+% \begin{option}{lgrgreek}
+% \changes{v2.06}{2019/06/13}{neu}^^A
+% \begin{option}{lgrgreeks}
+% \changes{v2.06}{2019/06/13}{neu}^^A
+% \begin{option}{LGRgreek}
+% \changes{v2.06}{2019/06/13}{neu}^^A
+% \begin{option}{LGRgreeks}
+% \changes{v2.06}{2019/06/13}{neu}^^A
+% \begin{macro}{\if@tud@lgrgreeks}
+% \changes{v2.06}{2019/06/13}{neu}^^A
+% Mit dieser Option lässt sich die Nutzung von griechischen Glyphen der aus der
+% LGR-Kodierung der aktuellen Schriftfamilie für den Mathematiksatz aktivieren.
+% \begin{macrocode}
+\newif\if@tud@lgrgreeks
+\TUD@key{lgrgreeks}[true]{\TUD@set@ifkey{lgrgreeks}{@tud@lgrgreeks}{#1}}
+\TUD@key{lgrgreek}[true]{\TUDoptions{lgrgreeks=#1}}
+\TUD@key{LGRgreeks}[true]{\TUDoptions{lgrgreeks=#1}}
+\TUD@key{LGRgreek}[true]{\TUDoptions{lgrgreeks=#1}}
+% \end{macrocode}
+% \end{macro}^^A \if@tud@lgrgreeks
+% \end{option}^^A LGRgreeks
+% \end{option}^^A LGRgreek
+% \end{option}^^A lgrgreeks
+% \end{option}^^A lgrgreek
+%
+% \iffalse
+%</option>
+%<*body>
+% \fi
+%
+% \begin{macro}{\tud@if@issymbolfont}
+% \changes{v2.06}{2019/06/17}{neu}^^A
+% \begin{macro}{\tud@if@ismathalphabet}
+% \changes{v2.06}{2019/06/17}{neu}^^A
+% Diese Abfragen prüfen, ob der gegebene Bezeichner bzw. das gegebene Makro
+% für eine Deklaration mit \cs{DeclareSymbolFont} bzw. \cs{DeclareMathAlphabet}
+% verwendet wurde.
+% \begin{macrocode}
+\newcommand*\tud@if@issymbolfont[1]{%
+ \begingroup%
+ \edef\tud@res@a{%
+ \noexpand\in@\expandafter\noexpand%
+ \csname sym#1\endcsname%
+ {\expandonce\group@list}%
+ }%
+ \tud@res@a%
+ \ifin@%
+ \aftergroup\@firstoftwo%
+ \else%
+ \aftergroup\@secondoftwo%
+ \fi%
+ \endgroup%
+}
+\@onlypreamble\tud@if@issymbolfont
+\newcommand*\tud@if@ismathalphabet[1]{%
+ \begingroup%
+ \edef\tud@res@a{%
+ \noexpand\in@\expandafter\noexpand%
+ \csname\expandafter\@gobble\string#1\space\endcsname%
+ {\expandonce\alpha@list}%
+ }%
+ \tud@res@a%
+ \ifin@%
+ \aftergroup\@firstoftwo%
+ \else%
+ \aftergroup\@secondoftwo%
+ \fi%
+ \endgroup%
+}
+\@onlypreamble\tud@if@ismathalphabet
+% \end{macrocode}
+% \end{macro}^^A \tud@if@ismathalphabet
+% \end{macro}^^A \tud@if@issymbolfont
+% \begin{macro}{\tud@math@loop@greeks@all}
+% \changes{v2.04}{2015/03/10}{neu}^^A
+% \begin{macro}{\tud@math@loop@greeks@uc}
+% \changes{v2.06}{2018/07/17}{neu}^^A
+% \begin{macro}{\tud@math@loop@greeks@lc}
+% \changes{v2.06}{2018/07/17}{neu}^^A
+% Um Änderungen an den griechischen Glyphen vornehmen zu können, wird das Makro
+% \cs{tud@math@loop@greeks@all} definiert, mit dem eine Namensliste der Glyphen
+% durchlaufen wird. Dabei wird in Majuskeln und Minuskeln unterschieden.
+% \begin{macrocode}
+\newcommand*\tud@math@loop@greeks@all[1]{%
+ \tud@math@loop@greeks@uc{#1}%
+ \tud@math@loop@greeks@lc{#1}%
+}
+\newcommand*\tud@math@loop@greeks@uc[1]{%
+ \@for\@tempa:={%
+ Gamma,Delta,Theta,Lambda,Xi,Pi,Sigma,Upsilon,Phi,Psi,Omega%
+ }\do{\expandafter#1\expandafter{\@tempa}}%
+}
+\newcommand*\tud@math@loop@greeks@lc[1]{%
+ \@for\@tempa:={%
+ alpha,beta,gamma,delta,epsilon,zeta,eta,theta,iota,kappa,lambda,%
+ mu,nu,xi,pi,rho,sigma,tau,upsilon,phi,chi,psi,omega,%
+ varepsilon,vartheta,varpi,varrho,varsigma,varphi%
+ }\do{\expandafter#1\expandafter{\@tempa}}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@math@loop@greeks@lc
+% \end{macro}^^A \tud@math@loop@greeks@uc
+% \end{macro}^^A \tud@math@loop@greeks@all
+% \begin{macro}{\tud@math@declare@lgrgreeks}
+% \changes{v2.06}{2019/06/18}{neu}^^A
+% Hiermit werden die beiden Symbolschriften \val{tudupgrk} und \val{tuditgrk}
+% in der LGR-Kodierung definiert. Diese werden insbesondere für die \OpenSans
+% benötigt, da das Paket \pkg{opensans} keine Schriften in mathematischen
+% Kodierungen enthält. Das etrste Argument enthält die zu deklarierende
+% Schriftfamilie, zweites und drittes Argument die Schriftstärke für normale
+% und fette Glyphen, die letzten beiden die Schriftgestalt für aufrechte und
+% kursive Variante.
+% \begin{macrocode}
+\newcommand*\tud@math@declare@lgrgreeks[5]{%
+ \ifundef{\T@LGR}{\DeclareFontEncoding{LGR}{}{}}{}%
+ \tud@if@issymbolfont{tudupgrk}{%
+ \SetSymbolFont{tudupgrk}{normal}{LGR}{#1}{#2}{#4}%
+ }{%
+ \DeclareSymbolFont{tudupgrk}{LGR}{#1}{#2}{#4}%
+ }%
+ \SetSymbolFont{tudupgrk}{bold}{LGR}{#1}{#3}{#4}%
+ \tud@if@issymbolfont{tuditgrk}{%
+ \SetSymbolFont{tuditgrk}{normal}{LGR}{#1}{#2}{#5}%
+ }{%
+ \DeclareSymbolFont{tuditgrk}{LGR}{#1}{#2}{#5}%
+ }%
+ \SetSymbolFont{tuditgrk}{bold}{LGR}{#1}{#3}{#5}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@math@declare@lgrgreeks
+% \begin{macro}{\tud@math@map@greeks}
+% \changes{v2.06}{2018/07/02}{neu}^^A
+% \begin{macro}{\tud@math@map@@greeks}
+% \changes{v2.06}{2018/07/02}{neu}^^A
+% \begin{macro}{\tud@math@map@@@greeks}
+% \changes{v2.06}{2018/07/02}{neu}^^A
+% \begin{macro}{\tud@math@supplement@greeks}
+% \changes{v2.06}{2019/06/19}{neu}^^A
+% \begin{macro}{\upDelta}
+% \begin{macro}{\upGamma}
+% \begin{macro}{\upLambda}
+% \begin{macro}{\upOmega}
+% \begin{macro}{\upPhi}
+% \begin{macro}{\upPi}
+% \begin{macro}{\upPsi}
+% \begin{macro}{\upSigma}
+% \begin{macro}{\upTheta}
+% \begin{macro}{\upUpsilon}
+% \begin{macro}{\upXi}
+% \begin{macro}{\upalpha}
+% \begin{macro}{\upbeta}
+% \begin{macro}{\upgamma}
+% \begin{macro}{\updelta}
+% \begin{macro}{\upepsilon}
+% \begin{macro}{\upzeta}
+% \begin{macro}{\upeta}
+% \begin{macro}{\uptheta}
+% \begin{macro}{\upiota}
+% \begin{macro}{\upkappa}
+% \begin{macro}{\uplambda}
+% \begin{macro}{\upmu}
+% \begin{macro}{\upnu}
+% \begin{macro}{\upxi}
+% \begin{macro}{\uppi}
+% \begin{macro}{\uprho}
+% \begin{macro}{\upsigma}
+% \begin{macro}{\uptau}
+% \begin{macro}{\upupsilon}
+% \begin{macro}{\upphi}
+% \begin{macro}{\upchi}
+% \begin{macro}{\uppsi}
+% \begin{macro}{\upomega}
+% \begin{macro}{\upvarepsilon}
+% \begin{macro}{\upvartheta}
+% \begin{macro}{\upvarpi}
+% \begin{macro}{\upvarrho}
+% \begin{macro}{\upvarsigma}
+% \begin{macro}{\upvarphi}
+% \begin{macro}{\itDelta}
+% \begin{macro}{\itGamma}
+% \begin{macro}{\itLambda}
+% \begin{macro}{\itOmega}
+% \begin{macro}{\itPhi}
+% \begin{macro}{\itPi}
+% \begin{macro}{\itPsi}
+% \begin{macro}{\itSigma}
+% \begin{macro}{\itTheta}
+% \begin{macro}{\itUpsilon}
+% \begin{macro}{\itXi}
+% \begin{macro}{\italpha}
+% \begin{macro}{\itbeta}
+% \begin{macro}{\itgamma}
+% \begin{macro}{\itdelta}
+% \begin{macro}{\itepsilon}
+% \begin{macro}{\itzeta}
+% \begin{macro}{\iteta}
+% \begin{macro}{\ittheta}
+% \begin{macro}{\itiota}
+% \begin{macro}{\itkappa}
+% \begin{macro}{\itlambda}
+% \begin{macro}{\itmu}
+% \begin{macro}{\itnu}
+% \begin{macro}{\itxi}
+% \begin{macro}{\itpi}
+% \begin{macro}{\itrho}
+% \begin{macro}{\itsigma}
+% \begin{macro}{\ittau}
+% \begin{macro}{\itupsilon}
+% \begin{macro}{\itphi}
+% \begin{macro}{\itchi}
+% \begin{macro}{\itpsi}
+% \begin{macro}{\itomega}
+% \begin{macro}{\itvarepsilon}
+% \begin{macro}{\itvartheta}
+% \begin{macro}{\itvarpi}
+% \begin{macro}{\itvarrho}
+% \begin{macro}{\itvarsigma}
+% \begin{macro}{\itvarphi}
+% \begin{macro}{\otherDelta}
+% \begin{macro}{\otherGamma}
+% \begin{macro}{\otherLambda}
+% \begin{macro}{\otherOmega}
+% \begin{macro}{\otherPhi}
+% \begin{macro}{\otherPi}
+% \begin{macro}{\otherPsi}
+% \begin{macro}{\otherSigma}
+% \begin{macro}{\otherTheta}
+% \begin{macro}{\otherUpsilon}
+% \begin{macro}{\otherXi}
+% \begin{macro}{\otheralpha}
+% \begin{macro}{\otherbeta}
+% \begin{macro}{\othergamma}
+% \begin{macro}{\otherdelta}
+% \begin{macro}{\otherepsilon}
+% \begin{macro}{\otherzeta}
+% \begin{macro}{\othereta}
+% \begin{macro}{\othertheta}
+% \begin{macro}{\otheriota}
+% \begin{macro}{\otherkappa}
+% \begin{macro}{\otherlambda}
+% \begin{macro}{\othermu}
+% \begin{macro}{\othernu}
+% \begin{macro}{\otherxi}
+% \begin{macro}{\otherpi}
+% \begin{macro}{\otherrho}
+% \begin{macro}{\othersigma}
+% \begin{macro}{\othertau}
+% \begin{macro}{\otherupsilon}
+% \begin{macro}{\otherphi}
+% \begin{macro}{\otherchi}
+% \begin{macro}{\otherpsi}
+% \begin{macro}{\otheromega}
+% \begin{macro}{\othervarepsilon}
+% \begin{macro}{\othervartheta}
+% \begin{macro}{\othervarpi}
+% \begin{macro}{\othervarrho}
+% \begin{macro}{\othervarsigma}
+% \begin{macro}{\othervarphi}
+% Es gibt eine Vielzahl von Paketen, die das Setzen von aufrechten griechischen
+% Glyphen adressieren. Allerdings gibt es keinen einheitlichen Standard, was
+% die Nomenklatur der Auswahlbefehle betrifft. Mit diesem Makro wird nach den
+% am häufigsten auftretenden Varianten für die Auswahl für aufrechte und
+% kursive Glyphen gesucht, um diese auf die von \TUDScript verwendete
+% Nomenklatur abzubilden, damit diese unabhängig von der Einstellung für
+% \opt{cdmath} genutzt werden kann und somit neben den normalen Makros für die
+% zusätzlichen Befehle (\cs{up\meta{Bezeichner}}, \cs{it\meta{Bezeichner}})
+% für das explizite Auswählen aufrechter und kursiver Buchstaben bereitstehen.
+% \begin{macrocode}
+\newcommand*\tud@math@map@greeks{%
+ \tud@math@loop@greeks@all\tud@math@map@@greeks%
+ \tud@math@loop@greeks@uc\tud@math@map@@@greeks%
+ \tud@math@supplement@greeks%
+}
+\newcommand*\tud@math@map@@greeks[1]{%
+ \ifcsundef{it#1}{%
+ \@for\tud@res@a:={#1sl,sl#1,#1it}\do{%
+ \ifcsundef{\tud@res@a}{}{\csedef{it#1}{\csname\tud@res@a\endcsname}}%
+ }%
+ }{}%
+ \ifcsundef{up#1}{%
+ \ifcsundef{#1up}{}{\csedef{up#1}{\csname#1up\endcsname}}%
+ }{}%
+ \ifcsundef{other#1}{%
+ \ifcsundef{#1other}{}{\csedef{other#1}{\csname#1other\endcsname}}%
+ }{}%
+}
+% \end{macrocode}
+% Einige Pakete stellen für griechische Majuskeln die Befehle \cs{var\dots}
+% bereit, um diese im kursiven Schnitt zu setzen. Weiterhin existiert für
+% aufrechte Majuskeln auch noch die Form \cs{Up\meta{Bezeichner}}. Diese werden
+% ebenfalls ausgewertet und ggf. auf die \TUDScript-Nomenklatur abgebildet.
+% \begin{macrocode}
+\newcommand*\tud@math@map@@@greeks[1]{%
+ \ifcsundef{it#1}{%
+ \ifcsundef{var#1}{}{\csedef{it#1}{\csname var#1\endcsname}}%
+ }{}%
+ \ifcsundef{up#1}{%
+ \tud@lowerstring\tud@res@a{#1}%
+ \edef\tud@res@a{Up\tud@res@a}%
+ \ifcsundef{\tud@res@a}{}{\csedef{up#1}{\csname\tud@res@a\endcsname}}%
+ }{}%
+}
+% \end{macrocode}
+% Mit diesem Makro werden in letztendlich~-- nachdem \cs{tud@math@map@greeks}
+% bereits ausgeführt wurde~-- die standardmäßig definierten Symbolschriften
+% \val{operators} und \val{letters} geprüft, ob diese in den Kodierungen
+% \val{OT1} bzw. \val{OML} genutzt werden. Trifft dies zu, so werden die
+% Schriftfamilien der Symbolschriften genutzt, um die Auswahlbefehle für die
+% griechischen Glyphen zu definieren, sofern dies noch notwendig ist.
+% \begin{macrocode}
+\newcommand*\tud@math@supplement@greeks{%
+% \end{macrocode}
+% Um keine globalen Änderungen vorzunehmen, wird die normale Mathematikversion
+% in einer Gruppe durchsucht. Alle mit \cs{DeclareMathSymbol} vorzunehmenden
+% Deklarationen werden in \cs{tud@res@c} gesichert und nach der Gruppe
+% aufgerufen.
+% \begin{macrocode}
+ \begingroup%
+ \newcommand*\tud@math@operators@enc{}%
+ \newcommand*\tud@math@operators@fam{}%
+ \newcommand*\tud@math@letters@enc{}%
+ \newcommand*\tud@math@letters@fam{}%
+ \def\getanddefine@fonts##1##2{%
+ \ifx\symoperators##1%
+ \expandafter\tud@res@a\string##2\@nil%
+ \else\ifx\symletters##1%
+ \expandafter\tud@res@b\string##2\@nil%
+ \fi\fi%
+ }%
+ \def\tud@res@a##1##2/##3/##4\@nil{%
+ \def\tud@math@operators@enc{##2}%
+ \def\tud@math@operators@fam{##3}%
+ }%
+ \def\tud@res@b##1##2/##3/##4\@nil{%
+ \def\tud@math@letters@enc{##2}%
+ \def\tud@math@letters@fam{##3}%
+ }%
+ \tud@cs@use{mv@normal}%
+ \let\tud@res@c\@empty%
+ \ifstr{\tud@math@letters@enc}{\detokenize{OML}}{%
+ \def\tud@res@a##1{%
+ \ifcsundef{it##1}{%
+ \eappto\tud@res@c{%
+ \noexpand\DeclareMathSymbol{\csname it##1\endcsname}%
+ {\noexpand\mathalpha}{letters}{\the\tud@res@cnt}%
+ }%
+ }{}%
+ \advance\tud@res@cnt\@ne\relax%
+ }%
+ \tud@res@cnt=\z@\relax%
+ \tud@math@loop@greeks@all\tud@res@a%
+ }{}%
+ \ifstr{\tud@math@operators@enc}{\detokenize{OT1}}{%
+ \def\tud@res@a##1{%
+ \ifcsundef{up##1}{%
+ \eappto\tud@res@c{%
+ \noexpand\DeclareMathSymbol{\csname up##1\endcsname}%
+ {\noexpand\mathalpha}{operators}{\the\tud@res@cnt}%
+ }%
+ }{}%
+ \advance\tud@res@cnt\@ne\relax%
+ }%
+ \tud@res@cnt=\z@\relax%
+ \tud@math@loop@greeks@uc\tud@res@a%
+ }{}%
+% \end{macrocode}
+% Mit der Option \opt{lgrgreeks} besteht zusätzlich die Möglichkeit, fehlende
+% Glyphen aus einer potenziell sinnvollen Schriftfamilie in der LGR-Kodierung
+% zu ergänzen. Wird eine solche gefunden, wird diese in \cs{tud@res@a} abgelegt.
+% \begin{macrocode}
+ \let\tud@res@a\@empty%
+ \if@tud@lgrgreeks%
+ \tud@if@fdfileexists{LGR}{\tud@cs@use{familydefault}}{%
+ \def\tud@res@a{\tud@cs@use{familydefault}}%
+ }{%
+ \tud@if@fdfileexists{LGR}{\tud@math@letters@fam}{%
+ \let\tud@res@a\tud@math@letters@fam%
+ }{%
+ \tud@if@fdfileexists{LGR}{\tud@math@operators@fam}{%
+ \let\tud@res@a\tud@math@operators@fam%
+ }{}%
+ }%
+ }%
+ \fi%
+% \end{macrocode}
+% Die Gruppe wird beendet, die in \cs{tud@res@c} gesicherten Deklarationen
+% werden ausgeführt, und der Inhalt von \cs{tud@res@a} wird erhalten.
+% \begin{macrocode}
+ \edef\tud@res@a{%
+ \endgroup%
+ \expandonce\tud@res@c%
+ \edef\noexpand\tud@res@a{\tud@res@a}%
+ }%
+ \tud@res@a%
+ \ifx\tud@res@a\@empty\else%
+% \end{macrocode}
+% Mit der gefunden LGR-Schriftfamilie werden alle bisher nicht vorhanden
+% aufrechte und kursive griechische Glyphen aus den entsprechenden Slots
+% ergänzt.
+% \begin{macrocode}
+ \tud@math@declare@lgrgreeks{\tud@res@a}%
+ {\tud@cs@use{mddefault}}{\tud@cs@use{bfdefault}}%
+ {\tud@cs@use{updefault}}{\tud@cs@use{itdefault}}%
+ \let\tud@res@c\@empty%
+ \def\tud@res@b##1##2{%
+ \ifcsundef{it##1}{%
+ \eappto\tud@res@c{%
+ \noexpand\DeclareMathSymbol{\csname it##1\endcsname}%
+ {\noexpand\mathalpha}{tuditgrk}{##2}%
+ }%
+ }{}%
+ \ifcsundef{up##1}{%
+ \eappto\tud@res@c{%
+ \noexpand\DeclareMathSymbol{\csname up##1\endcsname}%
+ {\noexpand\mathalpha}{tudupgrk}{##2}%
+ }%
+ }{}%
+ }%
+ \tud@res@b{Gamma}{71}%
+ \tud@res@b{Delta}{68}%
+ \tud@res@b{Theta}{74}%
+ \tud@res@b{Lambda}{76}%
+ \tud@res@b{Xi}{88}%
+ \tud@res@b{Pi}{80}%
+ \tud@res@b{Sigma}{83}%
+ \tud@res@b{Upsilon}{85}%
+ \tud@res@b{Phi}{70}%
+ \tud@res@b{Psi}{89}%
+ \tud@res@b{Omega}{87}%
+ \tud@res@b{alpha}{97}%
+ \tud@res@b{beta}{98}%
+ \tud@res@b{gamma}{103}%
+ \tud@res@b{delta}{100}%
+ \tud@res@b{epsilon}{101}%
+ \tud@res@b{zeta}{122}%
+ \tud@res@b{eta}{104}%
+ \tud@res@b{theta}{106}%
+ \tud@res@b{iota}{105}%
+ \tud@res@b{kappa}{107}%
+ \tud@res@b{lambda}{108}%
+ \tud@res@b{mu}{109}%
+ \tud@res@b{nu}{110}%
+ \tud@res@b{xi}{120}%
+ \tud@res@b{pi}{112}%
+ \tud@res@b{rho}{114}%
+ \tud@res@b{sigma}{115}%
+ \tud@res@b{tau}{116}%
+ \tud@res@b{upsilon}{117}%
+ \tud@res@b{phi}{102}%
+ \tud@res@b{chi}{113}%
+ \tud@res@b{psi}{121}%
+ \tud@res@b{omega}{119}%
+ \tud@res@c%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \othervarphi
+% \end{macro}^^A \othervarsigma
+% \end{macro}^^A \othervarrho
+% \end{macro}^^A \othervarpi
+% \end{macro}^^A \othervartheta
+% \end{macro}^^A \othervarepsilon
+% \end{macro}^^A \otheromega
+% \end{macro}^^A \otherpsi
+% \end{macro}^^A \otherchi
+% \end{macro}^^A \otherphi
+% \end{macro}^^A \otherupsilon
+% \end{macro}^^A \othertau
+% \end{macro}^^A \othersigma
+% \end{macro}^^A \otherrho
+% \end{macro}^^A \otherpi
+% \end{macro}^^A \otherxi
+% \end{macro}^^A \othernu
+% \end{macro}^^A \othermu
+% \end{macro}^^A \otherlambda
+% \end{macro}^^A \otherkappa
+% \end{macro}^^A \otheriota
+% \end{macro}^^A \othertheta
+% \end{macro}^^A \othereta
+% \end{macro}^^A \otherzeta
+% \end{macro}^^A \otherepsilon
+% \end{macro}^^A \otherdelta
+% \end{macro}^^A \othergamma
+% \end{macro}^^A \otherbeta
+% \end{macro}^^A \otheralpha
+% \end{macro}^^A \otherXi
+% \end{macro}^^A \otherUpsilon
+% \end{macro}^^A \otherTheta
+% \end{macro}^^A \otherSigma
+% \end{macro}^^A \otherPsi
+% \end{macro}^^A \otherPi
+% \end{macro}^^A \otherPhi
+% \end{macro}^^A \otherOmega
+% \end{macro}^^A \otherLambda
+% \end{macro}^^A \otherGamma
+% \end{macro}^^A \otherDelta
+% \end{macro}^^A \itvarphi
+% \end{macro}^^A \itvarsigma
+% \end{macro}^^A \itvarrho
+% \end{macro}^^A \itvarpi
+% \end{macro}^^A \itvartheta
+% \end{macro}^^A \itvarepsilon
+% \end{macro}^^A \itomega
+% \end{macro}^^A \itpsi
+% \end{macro}^^A \itchi
+% \end{macro}^^A \itphi
+% \end{macro}^^A \itupsilon
+% \end{macro}^^A \ittau
+% \end{macro}^^A \itsigma
+% \end{macro}^^A \itrho
+% \end{macro}^^A \itpi
+% \end{macro}^^A \itxi
+% \end{macro}^^A \itnu
+% \end{macro}^^A \itmu
+% \end{macro}^^A \itlambda
+% \end{macro}^^A \itkappa
+% \end{macro}^^A \itiota
+% \end{macro}^^A \ittheta
+% \end{macro}^^A \iteta
+% \end{macro}^^A \itzeta
+% \end{macro}^^A \itepsilon
+% \end{macro}^^A \itdelta
+% \end{macro}^^A \itgamma
+% \end{macro}^^A \itbeta
+% \end{macro}^^A \italpha
+% \end{macro}^^A \itXi
+% \end{macro}^^A \itUpsilon
+% \end{macro}^^A \itTheta
+% \end{macro}^^A \itSigma
+% \end{macro}^^A \itPsi
+% \end{macro}^^A \itPi
+% \end{macro}^^A \itPhi
+% \end{macro}^^A \itOmega
+% \end{macro}^^A \itLambda
+% \end{macro}^^A \itGamma
+% \end{macro}^^A \itDelta
+% \end{macro}^^A \upvarphi
+% \end{macro}^^A \upvarsigma
+% \end{macro}^^A \upvarrho
+% \end{macro}^^A \upvarpi
+% \end{macro}^^A \upvartheta
+% \end{macro}^^A \upvarepsilon
+% \end{macro}^^A \upomega
+% \end{macro}^^A \uppsi
+% \end{macro}^^A \upchi
+% \end{macro}^^A \upphi
+% \end{macro}^^A \upupsilon
+% \end{macro}^^A \uptau
+% \end{macro}^^A \upsigma
+% \end{macro}^^A \uprho
+% \end{macro}^^A \uppi
+% \end{macro}^^A \upxi
+% \end{macro}^^A \upnu
+% \end{macro}^^A \upmu
+% \end{macro}^^A \uplambda
+% \end{macro}^^A \upkappa
+% \end{macro}^^A \upiota
+% \end{macro}^^A \uptheta
+% \end{macro}^^A \upeta
+% \end{macro}^^A \upzeta
+% \end{macro}^^A \upepsilon
+% \end{macro}^^A \updelta
+% \end{macro}^^A \upgamma
+% \end{macro}^^A \upbeta
+% \end{macro}^^A \upalpha
+% \end{macro}^^A \upXi
+% \end{macro}^^A \upUpsilon
+% \end{macro}^^A \upTheta
+% \end{macro}^^A \upSigma
+% \end{macro}^^A \upPsi
+% \end{macro}^^A \upPi
+% \end{macro}^^A \upPhi
+% \end{macro}^^A \upOmega
+% \end{macro}^^A \upLambda
+% \end{macro}^^A \upGamma
+% \end{macro}^^A \upDelta
+% \end{macro}^^A \tud@math@supplement@greeks
+% \end{macro}^^A \tud@math@map@@@greeks
+% \end{macro}^^A \tud@math@map@@greeks
+% \end{macro}^^A \tud@math@map@greeks
+% \begin{macro}{\tud@math@checkslanted@greeks}
+% \changes{v2.05d}{2016/09/22}{neu}^^A
+% Für die Verwendung der griechischen Glyphen im Mathematikmodus wird versucht,
+% ein hohes Maß an Kompatibilität für andere Pakete zu gewährleisten. Es wird
+% versucht zu erkennen, ob Pakete mit einer Option wie \opt{slantedGreek},
+% \opt{frenchmath} oder ähnlichem geladen wurde. Hierfür wird nach Definitionen
+% für \cs{upalpha} als auch \cs{itGamma} gesucht. Existieren die Makros nicht,
+% wird zumindest auf die aktuelle Definition von \cs{Gamma} geprüft und mit der
+% standardmäßigen Variant der Glyphe verglichen. Wurde eine passende Definition
+% gefunden, wird die Option \opt{slantedgreek} voreingestellt.
+% \begin{macrocode}
+\newcommand*\tud@math@checkslanted@greeks{%
+ \begingroup%
+% \end{macrocode}
+% Wird keine Änderung durch Pakete erkannt, werden ab \TUDScript-Version~v2.06
+% die Glyphen kursiv gesetzt. Dies betrifft insbesondere die Majuskeln, welche
+% bei \LaTeX{} normalerweise aufrecht gesetzt werden.
+% \begin{macrocode}
+ \def\tud@res@c{%
+ \tud@if@v@lower{2.06}{%
+ \TUD@key@preset{slantedgreek}{standard}%
+ }{%
+ \TUD@key@preset{slantedgreek}{true}%
+ }%
+ }%
+ \@tud@res@swafalse%
+ \ifcsdef{upalpha}{%
+ \ifx\upalpha\alpha%
+ \@tud@res@swatrue%
+ \fi%
+ }{}%
+% \end{macrocode}
+% Existiert \cs{upalpha} und ist mit \cs{alpha} identisch, werden \emph{alle}
+% griechischen Glyphen aufrecht gesetzt.
+% \begin{macrocode}
+ \if@tud@res@swa%
+ \def\tud@res@c{\TUD@key@preset{slantedgreek}{false}}%
+ \else%
+% \end{macrocode}
+% Existiert \cs{itGamma} und ist mit \cs{Gamma} oder\dots
+% \begin{macrocode}
+ \ifcsdef{itGamma}{%
+ \ifx\itGamma\Gamma%
+ \@tud@res@swatrue%
+ \fi%
+ }{%
+% \end{macrocode}
+% \dots\cs{Gamma} entspricht einer möglichen Standarddefnition,\dots
+% \begin{macrocode}
+ \let\tud@res@a\relax%
+ \let\tud@res@b\relax%
+ \DeclareMathSymbol{\tud@res@a}{\mathalpha}{letters}{0}%
+ \DeclareMathSymbol{\tud@res@b}{\mathord}{letters}{0}%
+ \ifx\Gamma\tud@res@a\relax\@tud@res@swatrue\fi%
+ \ifx\Gamma\tud@res@b\relax\@tud@res@swatrue\fi%
+ }%
+% \end{macrocode}
+% \dots werden \emph{alle} griechischen Glyphen kursiv gesetzt.
+% \begin{macrocode}
+ \if@tud@res@swa%
+ \def\tud@res@c{\TUD@key@preset{slantedgreek}{true}}%
+ \fi%
+ \fi%
+ \edef\tud@res@c{\endgroup\expandonce\tud@res@c}%
+ \tud@res@c%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@math@checkslanted@greeks
+% \begin{macro}{\tud@cdmath@init}
+% \changes{v2.06}{2018/07/02}{neu}^^A
+% \begin{macro}{\tud@cdmath@@init}
+% \changes{v2.06}{2018/07/02}{neu}^^A
+% \changes{v2.06a}{2019/07/09}{Bugfix für \pkg{mathastext} Eingabekodierung}^^A
+% \begin{macro}{\tud@x@mathastext@enc}
+% \changes{v2.06a}{2019/07/09}{neu}^^A
+% \begin{macro}{\mv@tudnormal}
+% \begin{macro}{\mv@tudbold}
+% \begin{macro}{\mv@tuddin}
+% \begin{macro}{\tud@mathversion}
+% \changes{v2.06}{2019/06/17}{neu}^^A
+% \begin{macro}{\MTDeclareVersion}
+% \changes{v2.06}{2019/06/17}{neu}^^A
+% \begin{macro}{\MTversion@@}
+% \changes{v2.06}{2019/06/17}{neu}^^A
+% Die folgenden Befehle dienen allesamt für das Bereitstellen der Schriften des
+% \CDs im mathematischen Satz. Hierbei kommt das Paket \pkg{mathastext} zum
+% Einsatz, falls \OpenSans verwendet wird.
+% \begin{macrocode}
+\newcommand*\mv@tudnormal{}
+\newcommand*\mv@tudbold{}
+\newcommand*\mv@tuddin{}
+% \end{macrocode}
+% Um das Umschalten der Mathematikversion mit \cs{mathversion} auch nutzen zu
+% können, wenn \pkg{mathastext} für die Schriften des \CDs aktiv ist, wird ein
+% Wrappermakro benötigt, welches im Bedarfsfall\cs{MTversion*} aufruft. Hierfür
+% wird zunächst auf die gewünschte Mathematikversion, danach der originale
+% Befehl \cs{mathversion} wiederhergestellt, aufgerufen und anschließend wieder
+% auf das Wrappermakro \cs{tud@mathversion} zurückgesetzt.
+% \begin{macrocode}
+\AfterPackage*{mathastext}{%
+ \newrobustcmd*\tud@mathversion[1]{%
+ \begingroup%
+ \let\tud@res@a\relax%
+ \if@tud@cdmath@active%
+ \ifstr{#1}{normal}{%
+ \def\tud@res@a{tudnormal}%
+ }{%
+ \ifstr{#1}{bold}{%
+ \def\tud@res@a{tudbold}%
+ }{}%
+ }%
+ \fi%
+ \edef\tud@res@a{%
+ \endgroup%
+ \noexpand\tud@cs@restore{mathversion}%
+ \ifx\tud@res@a\relax%
+ \noexpand\mathversion{#1}%
+ \else%
+ \noexpand\MTversion*{\tud@res@a}%
+ \fi%
+ \noexpand\tud@cs@store{mathversion}%
+ \noexpand\tud@cs@letltx{mathversion}{tud@mathversion}%
+ }%
+ \tud@res@a%
+ }%
+ \AtEndPreamble{%
+ \tud@cs@store{mathversion}%
+ \tud@cs@letltx{mathversion}{tud@mathversion}%
+ }%
+}
+% \end{macrocode}
+% Mit \cs{tud@cdmath@init} werden für den Mathematikmodus die Schriften im
+% \CD deklariert.
+% \begin{macrocode}
+\newcommand*\tud@cdmath@init{%
+% \end{macrocode}
+% Für die Schriftfamilie \OpenSans existieren leider bisher keine Kodierung für
+% den Mathematikmodus (\val{OML}, \val{OMS}, \val{OMX}), weshalb hierfür das
+% Paket \pkg{mathastext} genutzt wird, um trotzdem einen mathematischen Satz zu
+% ermöglichen. Dabei wird die Computer~Modern in der \val{LGR}~Kodierung
+% zwingend benötigt.
+%
+% Für die LGR-Kodierung werden die Bundles \pkg{cbfonts} und \pkg{cbfonts-fd}
+% benötigt. Leider lässt sich momentan nur auf letzteres testen. Für ersteres
+% ließe sich |\font\testfont=grmn1200|\footnote{\file{ltxcheck.tex}} oder
+% \verb+\immediate\openin\pathfont="|kpsewhich grmn1200.tfm"+\ignorespaces%
+% \footnote{\url{https://tex.stackexchange.com/questions/306980/}} oder nutzen.
+% Beide Ansätze sind aber nicht vollends stimmig. Der erste funktioniert nicht,
+% sobald der Anwender \val{-interaction-mode} selbst definiert und für den
+% zweiten müssen zumindest eingeschränkte Schreibrechte aktiviert sein.
+% \begin{macrocode}
+ \@tud@res@swafalse%
+ \if@tud@cdfont@fam@exist%
+ \@tud@res@swatrue%
+ \if@tud@cdoldfont@active\else%
+ \tud@if@fdfileexists{LGR}{cmr}{}{%
+ \@tud@res@swafalse%
+ \def\tud@res@a{%
+%<*class>
+ \ClassWarningNoLine{\TUD@Class@Name}%
+%</class>
+%<*package>
+ \PackageWarningNoLine{tudscrfonts}%
+%</package>
+ {%
+ The packages `cbfonts/cbgreek' and\MessageBreak%
+ `cbfonts-fd' have to be installed for using\MessageBreak%
+ corporate design fonts in math mode. As they\MessageBreak%
+ are not, standard math versions are applied%
+ }%
+ }%
+ \if@tud@cdmath@active%
+ \tud@res@a%
+ \else%
+ \eappto\tud@cdmath@wrn{\expandonce\tud@res@a}%
+ \fi%
+ }%
+ \fi%
+ \fi%
+% \end{macrocode}
+% Um die Mathematikschriften sauber zu definieren, ist das Laden von bestimmten
+% Paketen durch den Anwender ungünstig. Deshalb wird für diesen Fall eine
+% Warnung ausgegeben.
+% \begin{macrocode}
+ \if@tud@res@swa%
+ \if@tud@cdoldfont@active\else%
+ \if@tud@cdmath@active%
+ \def\tud@res@a##1{%
+%<*class>
+ \ClassWarningNoLine{\TUD@Class@Name}%
+%</class>
+%<*package>
+ \PackageWarningNoLine{tudscrfonts}%
+%</package>
+ {%
+ You should not load package `##1'\MessageBreak%
+ manually when option `cdmath=true' is active as\MessageBreak%
+ TUD-Script uses package `mathastext' internally\MessageBreak%
+ with a specific set of required options for the\MessageBreak%
+ math font setup%
+ }%
+ }%
+ \@ifpackageloaded{sansmath}{%
+ \tud@res@a{sansmath}%
+ }{}%
+ \@ifpackageloaded{mathastext}{%
+ \tud@res@a{mathastext}%
+ }{}%
+ \fi%
+ \PassOptionsToPackage{%
+ subdued,defaultmathsizes,nosmalldelims,noequal,%
+ defaultrm,defaultbf,defaultit,defaultsf,defaulttt%
+ }{mathastext}%
+ \RequirePackage{mathastext}[2018/08/22]%
+ \tud@math@declare@lgrgreeks{cmr}{m}{bx}{n}{it}%
+ \fi%
+ \providecommand*\MTDeclareVersion[6][]{\DeclareMathVersion{##2}}%
+ \providecommand*\MTversion@@[1]{}%
+ \tud@cdmath@@init{\tud@cdfont@fam@lf}{\tud@ttfont@fam}%
+% \end{macrocode}
+% Die Symbole für aufrechte und kursive griechische Glyphen werden definiert.
+% Da im Paket \pkg{opensans} keine mathematischen Schriftkodierungen enthalten
+% sind, wird in diesem Fall auf die LGR-Kodierung zurückgegriffen.
+% \ToDo{kann mit \pkg{opensans-math} raus}[v2.??]
+% \begin{macrocode}
+ \if@tud@cdoldfont@active%
+ \tud@res@cnt=\z@\relax%
+ \tud@math@loop@greeks@uc\tud@cdmath@declare@greek@uc%
+ \tud@math@loop@greeks@lc\tud@cdmath@declare@greek@lc%
+ \else%
+ \tud@cdmath@declare@greek@lgr%
+ \fi%
+% \end{macrocode}
+% Abschließend werden einzelne Zeichen für die Mathematikversionen definiert.
+% \begin{macrocode}
+ \tud@cdmath@declare@char{*}{\mathbin}{symbols}{"03}%
+% \end{macrocode}
+% Nach der Definition der griechischen Glyphen werden diese~-- inklusive aller
+% Auswahlvariationen~-- deklariert.
+% \begin{macrocode}
+ \tud@cdmath@also@greeks%
+% \end{macrocode}
+% Sollten die notwendigen Schriftfamilien nicht gefunden worden sein, werden
+% keine separaten Mathematikversionen definiert.
+% \begin{macrocode}
+ \else%
+ \let\mv@tudnormal\mv@normal%
+ \let\mv@tudbold\mv@bold%
+ \if@tud@cdoldfont@active%
+ \let\mv@tuddin\mv@bold%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% Mit \cs{tud@cdmath@@init} werden die notwendigen Mathematikversionen und die
+% dazugehörigen Symbolschriften sowie Alphabete deklariert.
+% \begin{macrocode}
+\newcommand*\tud@x@mathastext@enc{OT1}
+\newcommand*\tud@cdmath@@init[2]{%
+% \end{macrocode}
+% Mit \cs{tud@cdfont@@set} werden die Schriftstärken gemäß den ausgewählten
+% Schriftoptionen aktiviert (\cs{tud@cdfont@md}, \cs{tud@cdfont@bf},
+% \cs{tud@cdfont@ebf}), um diese auch für die Mathematikschriften zu nutzen.
+% \begin{macrocode}
+ \tud@cdfont@@set%
+ \tud@ttfont@@set%
+% \end{macrocode}
+% Die Deklaration der Mathematikversionen für die alten Schriften. Auch für die
+% Schrift \DIN werden mathematische Glyphen bereitgestellt. Diese wurden schon
+% bei der Installation aus dem \pkg{iwona}-Paket entnommen. Die verwendeten
+% Symbole stammen aus diesem Paket.
+% \begin{macrocode}
+ \if@tud@cdoldfont@active%
+ \DeclareMathVersion{tudnormal}%
+ \DeclareMathVersion{tudbold}%
+ \DeclareMathVersion{tuddin}%
+ \SetSymbolFont{operators}{tudnormal}{OT1}{#1}{\tud@cdfont@md}{n}%
+ \SetSymbolFont{operators}{tudbold}{OT1}{#1}{\tud@cdfont@bf}{n}%
+ \SetSymbolFont{operators}{tuddin}{OT1}{\tud@cdfont@db}{b}{n}%
+ \SetSymbolFont{letters}{tudnormal}{OML}{#1}{\tud@cdfont@md}{sl}%
+ \SetSymbolFont{letters}{tudbold}{OML}{#1}{\tud@cdfont@bf}{sl}%
+ \SetSymbolFont{letters}{tuddin}{OML}{\tud@cdfont@db}{b}{sl}%
+ \SetSymbolFont{symbols}{tudnormal}{OMS}{#1}{\tud@cdfont@md}{n}%
+ \SetSymbolFont{symbols}{tudbold}{OMS}{#1}{\tud@cdfont@bf}{n}%
+ \SetSymbolFont{symbols}{tuddin}{OMS}{\tud@cdfont@db}{b}{n}%
+ \SetSymbolFont{largesymbols}{tudnormal}{OMX}{iwona}{\tud@cdfont@md}{n}%
+ \SetSymbolFont{largesymbols}{tudbold}{OMX}{iwona}{\tud@cdfont@bf}{n}%
+ \SetSymbolFont{largesymbols}{tuddin}{OMX}{iwona}{ebc}{n}%
+ \SetMathAlphabet{\mathnormal}{tudnormal}{OML}{#1}{\tud@cdfont@md}{sl}%
+ \SetMathAlphabet{\mathnormal}{tudbold}{OML}{#1}{\tud@cdfont@bf}{sl}%
+ \SetMathAlphabet{\mathnormal}{tuddin}{OML}{\tud@cdfont@db}{b}{sl}%
+ \tud@if@ismathalphabet{\mathbold}{%
+ \SetMathAlphabet{\mathbold}{tudnormal}{OML}{#1}{\tud@cdfont@bf}{sl}%
+ \SetMathAlphabet{\mathbold}{tudbold}{OML}{#1}{\tud@cdfont@ebf}{sl}%
+ \SetMathAlphabet{\mathbold}{tuddin}{OML}{\tud@cdfont@db}{b}{sl}%
+ }{}%
+ \else%
+% \end{macrocode}
+% Für \OpenSans wird mangels der Kodierungen \val{OML}, \val{OMS} und \val{OMX}
+% im Paket \pkg{opensans} zur Deklaration der Mathematikversionen der Befehl
+% \cs{MTDeclareVersion} aus dem Paket \pkg{mathastext} genutzt. Dabei wird die
+% Kodierung der Mathematikschriften identisch zur genutzten Eingabekodierung
+% für den Text gesetzt, da diese in der Version \val{v1.3t} nicht problemfrei
+% unabhängig davon gewählt werden kann. Sämtliche fehlenden Kodierungen werden
+% notdürftig mit dem Paket \pkg{iwona} definiert. Zur Definition griechischer
+% Glyphen wird die LGR-Kodierung der \OpenSans genutzt.
+% \begin{macrocode}
+ \edef\tud@res@b{\encodingdefault}%
+ \@tfor\tud@res@a:={T1}{TU}{EU1}{EU2}\do{%
+ \ifx\tud@res@a\tud@res@b%
+ \let\tud@x@mathastext@enc\tud@res@b%
+ \@break@tfor
+ \fi%
+ }%
+ \MTDeclareVersion[it]{tudnormal}%
+ {\tud@x@mathastext@enc}{#1}{\tud@cdfont@md}{n}%
+ \MTDeclareVersion[it]{tudbold}%
+ {\tud@x@mathastext@enc}{#1}{\tud@cdfont@bf}{n}%
+ \SetSymbolFont{operators}{tudnormal}{OT1}{iwona}{\tud@cdfont@md}{n}%
+ \SetSymbolFont{operators}{tudbold}{OT1}{iwona}{\tud@cdfont@bf}{n}%
+% \end{macrocode}
+% \ToDo{%
+% sollte \pkg{opensans-math} irgendwann einmal real werden, dann würde es
+% sich anbieten, die OML-Kodierung ähnlich zu \pkg{euler[vm]} auf eine
+% U-Kodierung zu erweitern und aufrechte griechische Glyphen einzubinden, um
+% ein Alphabet zu sparen. Siehe Kodierungen FML/FMS, LML/LMS, LBL/LBS, LS1/LS2
+% }[v2.??]
+% \begin{macrocode}
+ \SetSymbolFont{letters}{tudnormal}{OML}{iwona}{\tud@cdfont@md}{it}%
+ \SetSymbolFont{letters}{tudbold}{OML}{iwona}{\tud@cdfont@bf}{it}%
+%^^A \SetSymbolFont{letters}{tudnormal}{U}{#1m}{\tud@cdfont@md}{it}%
+%^^A \SetSymbolFont{letters}{tudbold}{U}{#1m}{\tud@cdfont@bf}{it}%
+ \SetSymbolFont{symbols}{tudnormal}{OMS}{iwona}{\tud@cdfont@md}{n}%
+ \SetSymbolFont{symbols}{tudbold}{OMS}{iwona}{\tud@cdfont@bf}{n}%
+ \SetSymbolFont{largesymbols}{tudnormal}{OMX}{iwona}{\tud@cdfont@md}{n}%
+ \SetSymbolFont{largesymbols}{tudbold}{OMX}{iwona}{\tud@cdfont@bf}{n}%
+ \SetSymbolFont{tudupgrk}{tudnormal}{LGR}{#1}{\tud@cdfont@md}{n}%
+ \SetSymbolFont{tuditgrk}{tudnormal}{LGR}{#1}{\tud@cdfont@md}{it}%
+ \SetSymbolFont{tudupgrk}{tudbold}{LGR}{#1}{\tud@cdfont@bf}{n}%
+ \SetSymbolFont{tuditgrk}{tudbold}{LGR}{#1}{\tud@cdfont@bf}{it}%
+%^^A \SetMathAlphabet{\mathnormal}{tudnormal}{U}{#1m}{\tud@cdfont@md}{it}%
+%^^A \SetMathAlphabet{\mathnormal}{tudbold}{U}{#1m}{\tud@cdfont@bf}{it}%
+ \tud@if@ismathalphabet{\mathbold}{%
+ \SetMathAlphabet{\mathbold}{tudnormal}%
+ {\tud@x@mathastext@enc}{#1}{\tud@cdfont@bf}{it}%
+ \SetMathAlphabet{\mathbold}{tudbold}%
+ {\tud@x@mathastext@enc}{#1}{\tud@cdfont@ebf}{it}%
+%^^A \SetMathAlphabet{\mathbold}{tudnormal}{U}{#1m}{\tud@cdfont@bf}{it}%
+%^^A \SetMathAlphabet{\mathbold}{tudbold}{U}{#1m}{\tud@cdfont@ebf}{it}%
+ }{}%
+ \fi%
+ \SetMathAlphabet{\mathrm}{tudnormal}{OT1}{#1}{\tud@cdfont@md}{n}%
+ \SetMathAlphabet{\mathrm}{tudbold}{OT1}{#1}{\tud@cdfont@bf}{n}%
+ \SetMathAlphabet{\mathbf}{tudnormal}{OT1}{#1}{\tud@cdfont@bf}{n}%
+ \SetMathAlphabet{\mathbf}{tudbold}{OT1}{#1}{\tud@cdfont@ebf}{n}%
+ \SetMathAlphabet{\mathsf}{tudnormal}{OT1}{#1}{\tud@cdfont@md}{n}%
+ \SetMathAlphabet{\mathsf}{tudbold}{OT1}{#1}{\tud@cdfont@bf}{n}%
+ \SetMathAlphabet{\mathit}{tudnormal}{OT1}{#1}{\tud@cdfont@md}{it}%
+ \SetMathAlphabet{\mathit}{tudbold}{OT1}{#1}{\tud@cdfont@bf}{it}%
+ \SetMathAlphabet{\mathtt}{tudnormal}{OT1}{#2}{\tud@ttfont@md}{n}%
+ \SetMathAlphabet{\mathtt}{tudbold}{OT1}{#2}{\tud@ttfont@bf}{n}%
+ \if@tud@cdoldfont@active%
+ \SetMathAlphabet{\mathrm}{tuddin}{OT1}{\tud@cdfont@db}{b}{n}%
+ \SetMathAlphabet{\mathbf}{tuddin}{OT1}{\tud@cdfont@db}{b}{n}%
+ \SetMathAlphabet{\mathsf}{tuddin}{OT1}{\tud@cdfont@db}{b}{n}%
+ \SetMathAlphabet{\mathit}{tuddin}{OT1}{\tud@cdfont@db}{b}{sl}%
+ \SetMathAlphabet{\mathtt}{tuddin}{OT1}{#2}{\tud@ttfont@ebf}{n}%
+ \fi%
+ \IfFileExists{ueus.fd}{%
+ \SetMathAlphabet{\mathcal}{tudnormal}{U}{eus}{m}{n}%
+ \SetMathAlphabet{\mathcal}{tudbold}{U}{eus}{b}{n}%
+ \if@tud@cdoldfont@active%
+ \SetMathAlphabet{\mathcal}{tuddin}{U}{eus}{b}{n}%
+ \fi%
+ }{}%
+ \tud@if@ismathalphabet{\mathfrak}{%
+ \IfFileExists{ueuf.fd}{%
+ \SetMathAlphabet{\mathfrak}{tudnormal}{U}{euf}{m}{n}%
+ \SetMathAlphabet{\mathfrak}{tudbold}{U}{euf}{b}{n}%
+ \if@tud@cdoldfont@active%
+ \SetMathAlphabet{\mathfrak}{tuddin}{U}{euf}{b}{n}%
+ \fi%
+ }{}%
+ }{}%
+% \end{macrocode}
+% Das Paket \pkg{cmbright} stelt zusätzlich noch Schriftschnitte für die
+% Symbolschriften \val{AMSa} und \val{AMSb} bereit, welche gegebenenfalls für
+% die alten Schriften geladen werden.
+% \begin{macrocode}
+ \AtBeginDocument{%
+ \@tud@res@swafalse%
+ \tud@if@issymbolfont{AMSa}{\@tud@res@swatrue}{}%
+ \tud@if@issymbolfont{AMSb}{\@tud@res@swatrue}{}%
+ \if@tud@res@swa%
+ \if@tud@cdoldfont@active%
+ \DeclareFontFamily{U}{\tud@cdfont@fam@lf a}{}%
+ \DeclareFontShape{U}{\tud@cdfont@fam@lf a}{m}{n}{<->cmbras10}{}%
+ \SetSymbolFont{AMSa}{tudnormal}{U}{\tud@cdfont@fam@lf a}{m}{n}%
+ \SetSymbolFont{AMSa}{tudbold}{U}{\tud@cdfont@fam@lf a}{m}{n}%
+ \DeclareFontFamily{U}{\tud@cdfont@fam@lf b}{}%
+ \DeclareFontShape{U}{\tud@cdfont@fam@lf b}{m}{n}{<->cmbrbs10}{}%
+ \SetSymbolFont{AMSb}{tudnormal}{U}{\tud@cdfont@fam@lf b}{m}{n}%
+ \SetSymbolFont{AMSb}{tudbold}{U}{\tud@cdfont@fam@lf b}{m}{n}%
+% \end{macrocode}
+% Wurde ein Paket geladen, welches die \pkg{amsfonts}-Schriftfamilie definiert,
+% so wird bei der Verwendung von \OpenSans eine Information ausgegeben, dass im
+% Zweifel das Paket \pkg{mdsymbol} besser zu den Schriften des \CDs passt.
+% \begin{macrocode}
+ \else%
+ \@ifpackageloaded{mdsymbol}{}{%
+ \appto\tud@cdmath@wrn{%
+%<*class>
+ \ClassInfoNoLine{\TUD@Class@Name}%
+%</class>
+%<*package>
+ \PackageInfoNoLine{tudscrfonts}%
+%</package>
+ {%
+ You may load package `mdsymbol' in order to\MessageBreak%
+ get symbols matching the used math font%
+ }%
+ }%
+ }%
+ \fi%
+ \fi%
+% \end{macrocode}
+% Wurde das Paket \pkg{fontspec} mit der Option \opt{math} geladen, so wird
+% durch dieses die Symbolschrift \val{legacymaths} erstellt. Diese wird
+% gegebenenfalls für die Mathematikversionen sinnvoll definiert.
+% \begin{macrocode}
+ \tud@if@issymbolfont{legacymaths}{%
+ \SetSymbolFont{legacymaths}{tudnormal}{OT1}{#1}{\tud@cdfont@md}{n}%
+ \SetSymbolFont{legacymaths}{tudbold}{OT1}{#1}{\tud@cdfont@bf}{n}%
+ \if@tud@cdoldfont@active%
+ \SetSymbolFont{legacymaths}{tuddin}{OT1}{\tud@cdfont@db}{b}{n}%
+ \fi%
+ }{}%
+% \end{macrocode}
+% Daran anschließend wird die zuvor definierte Schrift in einer Box verwendet,
+% um das Laden der Schriftdefinitionen am Dokumentbeginn zu forcieren.
+% \begin{macrocode}
+ \if@tud@cdoldfont@active%
+ \if@tud@cdmath@active%
+ \sbox\z@{\mathversion{tudnormal}$ $\mathversion{tuddin}$ $}%
+ \fi%
+ \fi%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \MTversion@@
+% \end{macro}^^A \MTDeclareVersion
+% \end{macro}^^A \tud@mathversion
+% \end{macro}^^A \mv@tuddin
+% \end{macro}^^A \mv@tudbold
+% \end{macro}^^A \mv@tudnormal
+% \end{macro}^^A \tud@x@mathastext@enc
+% \end{macro}^^A \tud@cdmath@@init
+% \end{macro}^^A \tud@cdmath@init
+% \begin{macro}{\tud@cdmath@declare@symb}
+% \changes{v2.06}{2019/06/19}{neu}^^A
+% \begin{macro}{\tud@cdmath@declare@alias}
+% \changes{v2.06}{2019/06/19}{neu}^^A
+% \begin{macro}{\tud@cdmath@symb@list}
+% \changes{v2.06}{2019/06/19}{neu}^^A
+% \begin{macro}{\tud@cdmath@declare@char}
+% \changes{v2.06}{2019/06/19}{neu}^^A
+% \begin{macro}{\tud@cdmath@char@list}
+% \changes{v2.06}{2019/06/19}{neu}^^A
+% \begin{macro}{\tud@DeclareMathSymbol}
+% \changes{v2.06}{2019/06/19}{neu}^^A
+% Mit \cs{tud@cdmath@declare@symb} und \cs{tud@cdmath@declare@char} können
+% Glyhen respektive einzelne Zeichen definiert werden, welche über das Makro
+% \cs{tud@cdmath@symbols@set} nur zum Einsatz kommen, wenn \opt{cdmath=true}
+% aktiviert wurde. Damit können in den unterschiedlichen Mathematikversionen
+% Symbole wie beispielsweise \cs{alpha} unterschiedlich kodiert werden, was
+% über die einfache Verwendung von \cs{DeclareMathSymbol} nicht möglich ist.
+% \begin{macrocode}
+\newcommand*\tud@cdmath@symb@list{}
+\newcommand*\tud@cdmath@declare@symb[4]{%
+ \listeadd\tud@cdmath@symb@list{#1}%
+ \tud@DeclareMathSymbol{#1}{#2}{#3}{#4}%
+}
+% \end{macrocode}
+% Hiermit kann ein Alias-Befehl für ein Symbol definiert werden.
+% \begin{macrocode}
+\newcommand*\tud@cdmath@declare@alias[2]{%
+ \listeadd\tud@cdmath@symb@list{#1}%
+ \ifcsdef{tud@cdmath@symbol@#2}{%
+ \csedef{tud@cdmath@symbol@#1}{\csname tud@cdmath@symbol@#2\endcsname}%
+ }{}%
+}
+\newcommand*\tud@cdmath@char@list{}
+\newcommand*\tud@cdmath@declare@char[4]{%
+ \listeadd\tud@cdmath@char@list{#1}%
+ \tud@DeclareMathSymbol{#1}{#2}{#3}{#4}%
+}
+% \end{macrocode}
+% Die an \cs{tud@cdmath@declare@symb} und \cs{tud@cdmath@declare@char}
+% übergebene Bezeichner für Auswahlbefehle erhalten \cs{tud@cdmath@symbol@} als
+% Präfix, wodurch sich die Definitionen für die einzelnen Mathematikversionen
+% beliebig tauschen lassen.
+% \begin{macrocode}
+\newcommand*\tud@DeclareMathSymbol[4]{%
+ \begingroup%
+ \edef\tud@res@a{%
+ \endgroup%
+ \noexpand\DeclareMathSymbol%
+ {\csname tud@cdmath@symbol@#1\endcsname}%
+ {\etex@unexpanded{#2}}{#3}{#4}%
+ }%
+ \tud@res@a%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@DeclareMathSymbol
+% \end{macro}^^A \tud@cdmath@char@list
+% \end{macro}^^A \tud@cdmath@declare@char
+% \end{macro}^^A \tud@cdmath@symb@list
+% \end{macro}^^A \tud@cdmath@declare@alias
+% \end{macro}^^A \tud@cdmath@declare@symb
+% \begin{macro}{\tud@cdmath@symbols@set}
+% \changes{v2.04}{2015/03/10}{neu}^^A
+% \begin{macro}{\tud@cdmath@symbols@toks}
+% \changes{v2.06}{2019/06/19}{neu}^^A
+% \begin{macro}{\tud@cdmath@symbols@set@cmd}
+% \changes{v2.06}{2019/06/19}{neu}^^A
+% \begin{macro}{\tud@cdmath@symbols@set@chr}
+% \changes{v2.06}{2019/06/19}{neu}^^A
+% \begin{macro}{\tud@cdmath@symbols@reset}
+% \changes{v2.04}{2015/03/10}{neu}^^A
+% Mit diesen beiden Befehlen kann innerhalb des Dokumentes problemlos zwischen
+% mathematischen Symbolen und Zeichen für die Schriften des \CDs, welche mit
+% \cs{tud@cdmath@declare@symb} sowie \cs{tud@cdmath@declare@char} deklariert
+% wurden, und den normalen gewechselt werden.
+% \begin{macrocode}
+\newtoks\tud@cdmath@symbols@toks
+\newcommand*\tud@cdmath@symbols@set{%
+% \end{macrocode}
+% Die Sicherung der alten Definitionen erfolgt nur einmalig. Die Liste der
+% Symbole respektive Zeichen wird durchlaufen und die erfolgten Definitionen
+% werden umgesetzt.
+% \begin{macrocode}
+ \expandafter\IfArgIsEmpty\expandafter{\the\tud@cdmath@symbols@toks}{%
+ \forlistloop\tud@cdmath@symbols@set@cmd\tud@cdmath@symb@list%
+ \forlistloop\tud@cdmath@symbols@set@chr\tud@cdmath@char@list%
+% \end{macrocode}
+% Wird das Tokenregister abgerufen, soll es anschließend auch wieder geleert
+% werden.
+% \begin{macrocode}
+ \addto@hook\tud@cdmath@symbols@toks{\tud@cdmath@symbols@toks{}}%
+ }{}%
+}
+% \end{macrocode}
+% Beim Setzen der Mathematikversion im \CD wird zur Wiederherstellung der
+% Standardmathematikversion das Vorgehen im Token \cs{tud@cdmath@symbols@toks}
+% definiert.
+% \begin{macrocode}
+\newcommand*\tud@cdmath@symbols@set@cmd[1]{%
+% \end{macrocode}
+% Existiert ein Befehl in der Standardmathematikversion, dann wird dieser
+% gesichert und später wiederhergestellt. Andernfalls wird er wieder undefinert
+% gesetzt.
+% \begin{macrocode}
+ \ifcsdef{#1}{%
+ \tud@cs@store{#1}%
+ \addto@hook\tud@cdmath@symbols@toks{\tud@cs@restore{#1}}%
+ }{%
+ \addto@hook\tud@cdmath@symbols@toks{\csundef{#1}}%
+ }%
+% \end{macrocode}
+% Nur wenn ein gewünschtes Symbol auch existiert, wird es gesetzt. Damit können
+% Symbole für \opt{cdmath=true} auch gezielt undefiniert gesetzt werden.
+% \begin{macrocode}
+ \ifcsdef{tud@cdmath@symbol@#1}{%
+ \tud@cs@letltx{#1}{tud@cdmath@symbol@#1}%
+ }{%
+ \csundef{#1}%
+ }%
+}
+% \end{macrocode}
+% Für einzelne Zeichen ist das Vorgehen vom Prinzip her gleich. Allerdings wird
+% hier der zu sichernde \cs{mathcode} direkt in \cs{tud@cdmath@symbols@toks}
+% geschrieben.
+% \begin{macrocode}
+\newcommand*\tud@cdmath@symbols@set@chr[1]{%
+ \edef\tud@res@a{\global\mathcode`#1=\the\mathcode`#1\relax}%
+ \eaddto@hook\tud@cdmath@symbols@toks{\tud@res@a}%
+% \end{macrocode}
+% Für das Überschreiben des \cs{mathcode} des gewünschen \meta{Zeichen} wird
+% dieser aus der Bedeutung von \cs{tud@cdmath@symbols@\meta{Zeichen}} mit
+% \cs{meaning} herausgelöst.
+% \begin{macrocode}
+ \begingroup%
+ \edef\tud@res@a{\expandafter\meaning\csname tud@cdmath@symbol@#1\endcsname}%
+ \def\tud@res@b##1"##2\@nil{"##2}%
+ \edef\tud@res@c{\expandafter\tud@res@b\tud@res@a\@nil}%
+ \edef\tud@res@a{%
+ \endgroup%
+ \global\mathcode`#1=\tud@res@c%
+ }%
+ \tud@res@a%
+}
+% \end{macrocode}
+% Für das Zurücksetzen muss lediglich das Tokenregister aufgerufen werden.
+% \begin{macrocode}
+\newcommand*\tud@cdmath@symbols@reset{\the\tud@cdmath@symbols@toks}
+% \end{macrocode}
+% \end{macro}^^A \tud@cdmath@symbols@reset
+% \end{macro}^^A \tud@cdmath@symbols@set@chr
+% \end{macro}^^A \tud@cdmath@symbols@set@cmd
+% \end{macro}^^A \tud@cdmath@symbols@toks
+% \end{macro}^^A \tud@cdmath@symbols@set
+% \begin{macro}{\tud@cdmath@declare@greek@uc}
+% \changes{v2.04}{2015/03/10}{neu}^^A
+% \begin{macro}{\tud@cdmath@symbol@upGamma}
+% \begin{macro}{\tud@cdmath@symbol@upDelta}
+% \begin{macro}{\tud@cdmath@symbol@upTheta}
+% \begin{macro}{\tud@cdmath@symbol@upLambda}
+% \begin{macro}{\tud@cdmath@symbol@upXi}
+% \begin{macro}{\tud@cdmath@symbol@upPi}
+% \begin{macro}{\tud@cdmath@symbol@upSigma}
+% \begin{macro}{\tud@cdmath@symbol@upUpsilon}
+% \begin{macro}{\tud@cdmath@symbol@upPhi}
+% \begin{macro}{\tud@cdmath@symbol@upPsi}
+% \begin{macro}{\tud@cdmath@symbol@upOmega}
+% \begin{macro}{\tud@cdmath@symbol@itGamma}
+% \begin{macro}{\tud@cdmath@symbol@itDelta}
+% \begin{macro}{\tud@cdmath@symbol@itTheta}
+% \begin{macro}{\tud@cdmath@symbol@itLambda}
+% \begin{macro}{\tud@cdmath@symbol@itXi}
+% \begin{macro}{\tud@cdmath@symbol@itPi}
+% \begin{macro}{\tud@cdmath@symbol@itSigma}
+% \begin{macro}{\tud@cdmath@symbol@itUpsilon}
+% \begin{macro}{\tud@cdmath@symbol@itPhi}
+% \begin{macro}{\tud@cdmath@symbol@itPsi}
+% \begin{macro}{\tud@cdmath@symbol@itOmega}
+% In Anlehnung an verschiedene Pakete für Mathematikschriften werden Symbole
+% für aufrechte und kursive Majuskeln der griechischen Lettern definiert. Damit
+% auch bei diesen Buchstaben ein Umschalten für die unterschiedlichen Schriften
+% möglich ist, wird eine interne Version definiert und im Bedarfsfall der
+% dazugehörige \LaTeX-Befehl mit dieser überschrieben. Hierfür sind die beiden
+% Befehle \cs{tud@cdmath@symbols@set} und \cs{tud@cdmath@symbols@reset}
+% verantwortlich.
+% \ToDo{Codierungen \val{LS1/LS2}; siehe \pkg{stix,libertinust1math}}[v2.??]
+% \begin{macrocode}
+\newcommand*\tud@cdmath@declare@greek@uc[1]{%
+ \tud@cdmath@declare@symb{it#1}{\mathalpha}{letters}{\the\tud@res@cnt}%
+ \tud@cdmath@declare@symb{up#1}{\mathalpha}{operators}{\the\tud@res@cnt}%
+ \advance\tud@res@cnt\@ne\relax%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@cdmath@symbol@itOmega
+% \end{macro}^^A \tud@cdmath@symbol@itPsi
+% \end{macro}^^A \tud@cdmath@symbol@itPhi
+% \end{macro}^^A \tud@cdmath@symbol@itUpsilon
+% \end{macro}^^A \tud@cdmath@symbol@itSigma
+% \end{macro}^^A \tud@cdmath@symbol@itPi
+% \end{macro}^^A \tud@cdmath@symbol@itXi
+% \end{macro}^^A \tud@cdmath@symbol@itLambda
+% \end{macro}^^A \tud@cdmath@symbol@itTheta
+% \end{macro}^^A \tud@cdmath@symbol@itDelta
+% \end{macro}^^A \tud@cdmath@symbol@itGamma
+% \end{macro}^^A \tud@cdmath@symbol@upOmega
+% \end{macro}^^A \tud@cdmath@symbol@upPsi
+% \end{macro}^^A \tud@cdmath@symbol@upPhi
+% \end{macro}^^A \tud@cdmath@symbol@upUpsilon
+% \end{macro}^^A \tud@cdmath@symbol@upSigma
+% \end{macro}^^A \tud@cdmath@symbol@upPi
+% \end{macro}^^A \tud@cdmath@symbol@upXi
+% \end{macro}^^A \tud@cdmath@symbol@upLambda
+% \end{macro}^^A \tud@cdmath@symbol@upTheta
+% \end{macro}^^A \tud@cdmath@symbol@upDelta
+% \end{macro}^^A \tud@cdmath@symbol@upGamma
+% \end{macro}^^A \tud@cdmath@declare@greek@uc
+% \begin{macro}{\tud@cdmath@declare@greek@lc}
+% \changes{v2.06}{2018/07/17}{neu}^^A
+% \begin{macro}{\tud@cdmath@symbol@upalpha}
+% \begin{macro}{\tud@cdmath@symbol@upbeta}
+% \begin{macro}{\tud@cdmath@symbol@upgamma}
+% \begin{macro}{\tud@cdmath@symbol@updelta}
+% \begin{macro}{\tud@cdmath@symbol@upepsilon}
+% \begin{macro}{\tud@cdmath@symbol@upzeta}
+% \begin{macro}{\tud@cdmath@symbol@upeta}
+% \begin{macro}{\tud@cdmath@symbol@uptheta}
+% \begin{macro}{\tud@cdmath@symbol@upiota}
+% \begin{macro}{\tud@cdmath@symbol@upkappa}
+% \begin{macro}{\tud@cdmath@symbol@uplambda}
+% \begin{macro}{\tud@cdmath@symbol@upmu}
+% \begin{macro}{\tud@cdmath@symbol@upnu}
+% \begin{macro}{\tud@cdmath@symbol@upxi}
+% \begin{macro}{\tud@cdmath@symbol@uppi}
+% \begin{macro}{\tud@cdmath@symbol@uprho}
+% \begin{macro}{\tud@cdmath@symbol@upsigma}
+% \begin{macro}{\tud@cdmath@symbol@uptau}
+% \begin{macro}{\tud@cdmath@symbol@upupsilon}
+% \begin{macro}{\tud@cdmath@symbol@upphi}
+% \begin{macro}{\tud@cdmath@symbol@upchi}
+% \begin{macro}{\tud@cdmath@symbol@uppsi}
+% \begin{macro}{\tud@cdmath@symbol@upomega}
+% \begin{macro}{\tud@cdmath@symbol@upvarepsilon}
+% \begin{macro}{\tud@cdmath@symbol@upvartheta}
+% \begin{macro}{\tud@cdmath@symbol@upvarpi}
+% \begin{macro}{\tud@cdmath@symbol@upvarrho}
+% \begin{macro}{\tud@cdmath@symbol@upvarsigma}
+% \begin{macro}{\tud@cdmath@symbol@upvarphi}
+% \begin{macro}{\tud@cdmath@symbol@italpha}
+% \begin{macro}{\tud@cdmath@symbol@itbeta}
+% \begin{macro}{\tud@cdmath@symbol@itgamma}
+% \begin{macro}{\tud@cdmath@symbol@itdelta}
+% \begin{macro}{\tud@cdmath@symbol@itepsilon}
+% \begin{macro}{\tud@cdmath@symbol@itzeta}
+% \begin{macro}{\tud@cdmath@symbol@iteta}
+% \begin{macro}{\tud@cdmath@symbol@ittheta}
+% \begin{macro}{\tud@cdmath@symbol@itiota}
+% \begin{macro}{\tud@cdmath@symbol@itkappa}
+% \begin{macro}{\tud@cdmath@symbol@itlambda}
+% \begin{macro}{\tud@cdmath@symbol@itmu}
+% \begin{macro}{\tud@cdmath@symbol@itnu}
+% \begin{macro}{\tud@cdmath@symbol@itxi}
+% \begin{macro}{\tud@cdmath@symbol@itpi}
+% \begin{macro}{\tud@cdmath@symbol@itrho}
+% \begin{macro}{\tud@cdmath@symbol@itsigma}
+% \begin{macro}{\tud@cdmath@symbol@ittau}
+% \begin{macro}{\tud@cdmath@symbol@itupsilon}
+% \begin{macro}{\tud@cdmath@symbol@itphi}
+% \begin{macro}{\tud@cdmath@symbol@itchi}
+% \begin{macro}{\tud@cdmath@symbol@itpsi}
+% \begin{macro}{\tud@cdmath@symbol@itomega}
+% \begin{macro}{\tud@cdmath@symbol@itvarepsilon}
+% \begin{macro}{\tud@cdmath@symbol@itvartheta}
+% \begin{macro}{\tud@cdmath@symbol@itvarpi}
+% \begin{macro}{\tud@cdmath@symbol@itvarrho}
+% \begin{macro}{\tud@cdmath@symbol@itvarsigma}
+% \begin{macro}{\tud@cdmath@symbol@itvarphi}
+% Aufrechte griechische Minuskeln sind in den mathematischen Kodierungen von
+% \LaTeXe{} leider nicht enthalten, weshalb diese hier auch nicht für die
+% normale OML-Kodierung deklariert werden können.
+% \begin{macrocode}
+\newcommand*\tud@cdmath@declare@greek@lc[1]{%
+ \tud@cdmath@declare@symb{it#1}{\mathalpha}{letters}{\the\tud@res@cnt}%
+% \end{macrocode}
+% Für aufrechte griechische Minuskeln gibt es gewöhnlich keine Symbolschrift,
+% weshalb ein einfacher Eintrag \cs{up\meta{Bezeichner}} in die Liste
+% {tud@cdmath@symb@list} gesetzt wird, was in Verbindung mit einem fehlenden
+% Symbol \cs{tud@cdmath@symbol@\meta{Bezeichner}} zu einem undefinierten
+% cs{up\meta{Bezeichner}} bei \opt{cdmath=true} führt.
+% \ToDo{falls irgendwann erweiterte OML-Kodierung existiert, dann nutzen}[v2.??]
+% \begin{macrocode}
+%^^A \tud@cdmath@declare@symb{it##1}{\mathalpha}{letters}%
+%^^A {\the\numexpr\tud@res@cnt+128\relax}%
+ \listeadd\tud@cdmath@symb@list{up#1}%
+ \advance\tud@res@cnt\@ne\relax%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@cdmath@symbol@itvarphi
+% \end{macro}^^A \tud@cdmath@symbol@itvarsigma
+% \end{macro}^^A \tud@cdmath@symbol@itvarrho
+% \end{macro}^^A \tud@cdmath@symbol@itvarpi
+% \end{macro}^^A \tud@cdmath@symbol@itvartheta
+% \end{macro}^^A \tud@cdmath@symbol@itvarepsilon
+% \end{macro}^^A \tud@cdmath@symbol@itomega
+% \end{macro}^^A \tud@cdmath@symbol@itpsi
+% \end{macro}^^A \tud@cdmath@symbol@itchi
+% \end{macro}^^A \tud@cdmath@symbol@itphi
+% \end{macro}^^A \tud@cdmath@symbol@itupsilon
+% \end{macro}^^A \tud@cdmath@symbol@ittau
+% \end{macro}^^A \tud@cdmath@symbol@itsigma
+% \end{macro}^^A \tud@cdmath@symbol@itrho
+% \end{macro}^^A \tud@cdmath@symbol@itpi
+% \end{macro}^^A \tud@cdmath@symbol@itxi
+% \end{macro}^^A \tud@cdmath@symbol@itnu
+% \end{macro}^^A \tud@cdmath@symbol@itmu
+% \end{macro}^^A \tud@cdmath@symbol@itlambda
+% \end{macro}^^A \tud@cdmath@symbol@itkappa
+% \end{macro}^^A \tud@cdmath@symbol@itiota
+% \end{macro}^^A \tud@cdmath@symbol@ittheta
+% \end{macro}^^A \tud@cdmath@symbol@iteta
+% \end{macro}^^A \tud@cdmath@symbol@itzeta
+% \end{macro}^^A \tud@cdmath@symbol@itepsilon
+% \end{macro}^^A \tud@cdmath@symbol@itdelta
+% \end{macro}^^A \tud@cdmath@symbol@itgamma
+% \end{macro}^^A \tud@cdmath@symbol@itbeta
+% \end{macro}^^A \tud@cdmath@symbol@italpha
+% \end{macro}^^A \tud@cdmath@symbol@upvarphi
+% \end{macro}^^A \tud@cdmath@symbol@upvarsigma
+% \end{macro}^^A \tud@cdmath@symbol@upvarrho
+% \end{macro}^^A \tud@cdmath@symbol@upvarpi
+% \end{macro}^^A \tud@cdmath@symbol@upvartheta
+% \end{macro}^^A \tud@cdmath@symbol@upvarepsilon
+% \end{macro}^^A \tud@cdmath@symbol@upomega
+% \end{macro}^^A \tud@cdmath@symbol@uppsi
+% \end{macro}^^A \tud@cdmath@symbol@upchi
+% \end{macro}^^A \tud@cdmath@symbol@upphi
+% \end{macro}^^A \tud@cdmath@symbol@upupsilon
+% \end{macro}^^A \tud@cdmath@symbol@uptau
+% \end{macro}^^A \tud@cdmath@symbol@upsigma
+% \end{macro}^^A \tud@cdmath@symbol@uprho
+% \end{macro}^^A \tud@cdmath@symbol@uppi
+% \end{macro}^^A \tud@cdmath@symbol@upxi
+% \end{macro}^^A \tud@cdmath@symbol@upnu
+% \end{macro}^^A \tud@cdmath@symbol@upmu
+% \end{macro}^^A \tud@cdmath@symbol@uplambda
+% \end{macro}^^A \tud@cdmath@symbol@upkappa
+% \end{macro}^^A \tud@cdmath@symbol@upiota
+% \end{macro}^^A \tud@cdmath@symbol@uptheta
+% \end{macro}^^A \tud@cdmath@symbol@upeta
+% \end{macro}^^A \tud@cdmath@symbol@upzeta
+% \end{macro}^^A \tud@cdmath@symbol@upepsilon
+% \end{macro}^^A \tud@cdmath@symbol@updelta
+% \end{macro}^^A \tud@cdmath@symbol@upgamma
+% \end{macro}^^A \tud@cdmath@symbol@upbeta
+% \end{macro}^^A \tud@cdmath@symbol@upalpha
+% \end{macro}^^A \tud@cdmath@declare@greek@lc
+% \begin{macro}{\tud@cdmath@declare@greek@lgr}
+% \changes{v2.06}{2019/06/19}{neu}^^A
+% \begin{macro}{\tud@cdmath@declare@greek@@lgr}
+% \changes{v2.06}{2019/06/19}{neu}^^A
+% \changes{v2.06d}{2019/08/27}{Ligaturen für Lua\LaTeX{} deaktiviert}^^A
+% Die \OpenSans hält die griechischen Glyphen nur in der LGR-Kodierung bereit.
+% Hiermit werden diese für den mathematischen Satz definiert. Die übergebenen
+% Argumente an das Makro \cs{tud@cdmath@declare@greek@@lgr} sind Bezeichnung
+% und LGR-Slot der Glyphe.
+% \begin{macrocode}
+\newcommand*\tud@cdmath@declare@greek@lgr{%
+ \tud@cdmath@declare@greek@@lgr{Gamma}{71}%
+ \tud@cdmath@declare@greek@@lgr{Delta}{68}%
+ \tud@cdmath@declare@greek@@lgr{Theta}{74}%
+ \tud@cdmath@declare@greek@@lgr{Lambda}{76}%
+ \tud@cdmath@declare@greek@@lgr{Xi}{88}%
+ \tud@cdmath@declare@greek@@lgr{Pi}{80}%
+ \tud@cdmath@declare@greek@@lgr{Sigma}{83}%
+ \tud@cdmath@declare@greek@@lgr{Upsilon}{85}%
+ \tud@cdmath@declare@greek@@lgr{Phi}{70}%
+ \tud@cdmath@declare@greek@@lgr{Psi}{89}%
+ \tud@cdmath@declare@greek@@lgr{Omega}{87}%
+ \tud@cdmath@declare@greek@@lgr{alpha}{97}%
+ \tud@cdmath@declare@greek@@lgr{beta}{98}%
+ \tud@cdmath@declare@greek@@lgr{gamma}{103}%
+ \tud@cdmath@declare@greek@@lgr{delta}{100}%
+ \tud@cdmath@declare@greek@@lgr{epsilon}{101}%
+ \tud@cdmath@declare@greek@@lgr{zeta}{122}%
+ \tud@cdmath@declare@greek@@lgr{eta}{104}%
+ \tud@cdmath@declare@greek@@lgr{theta}{106}%
+ \tud@cdmath@declare@greek@@lgr{iota}{105}%
+ \tud@cdmath@declare@greek@@lgr{kappa}{107}%
+ \tud@cdmath@declare@greek@@lgr{lambda}{108}%
+ \tud@cdmath@declare@greek@@lgr{mu}{109}%
+ \tud@cdmath@declare@greek@@lgr{nu}{110}%
+ \tud@cdmath@declare@greek@@lgr{xi}{120}%
+ \tud@cdmath@declare@greek@@lgr{pi}{112}%
+ \tud@cdmath@declare@greek@@lgr{rho}{114}%
+ \tud@cdmath@declare@greek@@lgr{sigma}{115}%
+ \tud@cdmath@declare@greek@@lgr{tau}{116}%
+ \tud@cdmath@declare@greek@@lgr{upsilon}{117}%
+ \tud@cdmath@declare@greek@@lgr{phi}{102}%
+ \tud@cdmath@declare@greek@@lgr{chi}{113}%
+ \tud@cdmath@declare@greek@@lgr{psi}{121}%
+ \tud@cdmath@declare@greek@@lgr{omega}{119}%
+ \tud@cdmath@declare@greek@@lgr{varepsilon}{101}%
+ \tud@cdmath@declare@greek@@lgr{vartheta}{106}%
+ \tud@cdmath@declare@greek@@lgr{varpi}{119}%
+ \tud@cdmath@declare@greek@@lgr{varrho}{114}%
+ \tud@cdmath@declare@greek@@lgr{varsigma}{99}%
+ \tud@cdmath@declare@greek@@lgr{varphi}{102}%
+}
+\newcommand*\tud@cdmath@declare@greek@@lgr[2]{%
+ \tud@cdmath@declare@symb{it#1}{\mathalpha}{tuditgrk}{#2}%
+ \tud@cdmath@declare@symb{up#1}{\mathalpha}{tudupgrk}{#2}%
+% \end{macrocode}
+% Normalerweise sollten Ligaturen für angrenzende Glyphen (boundary ligatures)
+% im Mathematikmodus deaktiviert werden. Bei Lua\LaTeX{} ist dies jedoch nicht
+% der Fall, weshalb hier etwas nachgeholfen werden muss, indem nach der Glyphe
+% schlichtweg ein Klammernpaar in der richtigen Kodierung eingefügt wird.
+% \begin{macrocode}
+ \scr@ifluatex{%
+ \begingroup%
+ \def\tud@res@a{\if@tud@cdmath@active\fontencoding{LGR}\selectfont{}\fi}%
+ \def\tud@res@b##1{%
+ \csxdef{tud@cdmath@symbol@##1}{%
+ {%
+ \mathchar\expandafter\the\csuse{tud@cdmath@symbol@##1}%
+ \expandonce\tud@res@a%
+ }%
+ }%
+ }%
+ \tud@res@b{it#1}%
+ \tud@res@b{up#1}%
+ \endgroup%
+ }{}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@cdmath@declare@greek@@lgr
+% \end{macro}^^A \tud@cdmath@declare@greek@lgr
+% \begin{macro}{\tud@cdmath@also@greeks}
+% \changes{v2.06}{2019/06/19}{neu}^^A
+% \begin{macro}{\tud@cdmath@also@@greeks}
+% \changes{v2.06}{2019/06/19}{neu}^^A
+% \begin{macro}{\tud@cdmath@also@@@greeks}
+% \changes{v2.06}{2019/06/19}{neu}^^A
+% Das ist quasi das Gegenstück zu \cs{tud@math@map@greeks}. Alle bekannten
+% Variationen der Auswahlbefehle für griechische Glyphen werden durch die
+% Definitionen für die Mathematikschriften im \CD gespiegelt.
+% \begin{macrocode}
+\newcommand*\tud@cdmath@also@greeks{%
+ \tud@math@loop@greeks@all\tud@cdmath@also@@greeks%
+ \tud@math@loop@greeks@uc\tud@cdmath@also@@@greeks%
+}
+\newcommand*\tud@cdmath@also@@greeks[1]{%
+ \tud@cdmath@declare@alias{#1}{it#1}%
+ \tud@cdmath@declare@alias{other#1}{up#1}%
+ \ifcsundef{#1up}{}{%
+ \tud@cdmath@declare@alias{#1up}{up#1}%
+ }%
+ \@for\tud@res@a:={#1sl,sl#1,#1it}\do{%
+ \ifcsundef{\tud@res@a}{}{%
+ \expandafter\tud@cdmath@declare@alias\expandafter{\tud@res@a}{it#1}%
+ }%
+ }%
+ \ifcsundef{#1other}{}{%
+ \tud@cdmath@declare@alias{#1other}{other#1}%
+ }%
+}
+\newcommand*\tud@cdmath@also@@@greeks[1]{%
+ \tud@lowerstring\tud@res@a{#1}%
+ \edef\tud@res@a{Up\tud@res@a}%
+ \ifcsundef{\tud@res@a}{}{%
+ \expandafter\tud@cdmath@declare@alias\expandafter{\tud@res@a}{up#1}%
+ }%
+ \ifcsundef{var#1}{}{%
+ \expandafter\tud@cdmath@declare@alias\expandafter{var#1}{it#1}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@cdmath@also@@@greeks
+% \end{macro}^^A \tud@cdmath@also@@greeks
+% \end{macro}^^A \tud@cdmath@also@greeks
+% \begin{macro}{\tud@math@set}
+% Mit diesem Befehl werden die Einstellungen für den Mathematiksatz übernommen.
+% Die Option \opt{cdmath} wird ausgewertet, 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 respektive wiederhergestellt.
+% \begin{macrocode}
+\newcommand*\tud@math@set{%
+% \end{macrocode}
+% Beim Aktivieren der Mathematikschriften im \CD werden einmalig alle Warnungen
+% ausgegeben, falls bei der Initialisierung Probleme aufgetreten sind und
+% dementsprechend der Hook \cs{tud@cdmath@wrn} gefüllt wurde.
+% \begin{macrocode}
+ \if@tud@cdmath@active%
+ \tud@cdmath@wrn%
+ \tud@cs@store{mv@normal}%
+ \tud@cs@store{mv@bold}%
+ \let\mv@normal\mv@tudnormal%
+ \let\mv@bold\mv@tudbold%
+ \tud@cdmath@symbols@set%
+% \end{macrocode}
+% Anschließend erfolgt~-- abhängig von der Option \opt{slantedgreek}~-- die
+% Einstellung der Neigung der griechischen Glyphen.
+% \begin{macrocode}
+ \ifcase\tud@slantedgreek@num\relax% upright
+ \tud@math@loop@greeks@all\tud@math@upright@greeks%
+ \or% slanted
+ \tud@math@loop@greeks@all\tud@math@slanted@greeks%
+ \or% standard
+ \tud@math@loop@greeks@uc\tud@math@upright@greeks%
+ \tud@math@loop@greeks@lc\tud@math@slanted@greeks%
+ \fi%
+ \else%
+ \tud@cs@restore{mv@normal}%
+ \tud@cs@restore{mv@bold}%
+ \tud@cdmath@symbols@reset%
+ \fi%
+ \mathversion{normal}%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@math@set
+% \begin{macro}{\tud@math@upright@greeks}
+% \changes{v2.06}{2018/07/02}{neu}^^A
+% \begin{macro}{\tud@math@slanted@greeks}
+% \changes{v2.06}{2018/07/02}{neu}^^A
+% Mit den beiden Befehlen kann die Definition der griechischen Buchstaben
+% entweder auf aufrecht bzw. kursiv gesetzt werden.
+% \begin{macrocode}
+\newcommand*\tud@math@upright@greeks[1]{%
+ \ifcsundef{up#1}{}{%
+ \csletcs{#1}{up#1}%
+ \csletcs{other#1}{it#1}%
+ }%
+}
+\newcommand*\tud@math@slanted@greeks[1]{%
+ \ifcsundef{up#1}{}{%
+ \csletcs{#1}{it#1}%
+ \csletcs{other#1}{up#1}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@math@slanted@greeks
+% \end{macro}^^A \tud@math@upright@greeks
+% Sämtliche Schrifteinstellungen erfolgen erst am Ende der Präambel, um etwaige
+% Einstellungen irgendwelcher Schriftpakete beachten zu können. Dabei erfolgt
+% das Setzen der Mathematikschriften durch \cs{AtBeginDocument} innerhalb von
+% \cs{AtEndPreamble} am Ende \emph{aller} \cs{AtBeginDocument}.
+% \begin{macrocode}
+\AtEndPreamble{%
+% \end{macrocode}
+% Falls das Paket \pkg{mweights} geladen wurde, werden im Bedarfsfall die vom
+% Paket erwarteten Makros für die Schriftstärken der einzelnen Schriftfamilien
+% definiert. Beim Aufruf von \cs{tud@font@set} werden diese anschließend
+% gesichert.
+% \begin{macrocode}
+ \if@tud@x@mweights@enabled%
+ \ifundef{\bfseries@rm}{\edef\bfseries@rm{\bfdefault}}{}%
+ \ifundef{\mdseries@rm}{\edef\mdseries@rm{\mddefault}}{}%
+ \ifundef{\bfseries@sf}{\edef\bfseries@sf{\bfdefault}}{}%
+ \ifundef{\mdseries@sf}{\edef\mdseries@sf{\mddefault}}{}%
+ \ifundef{\bfseries@tt}{\edef\bfseries@tt{\bfdefault}}{}%
+ \ifundef{\mdseries@tt}{\edef\mdseries@tt{\mddefault}}{}%
+ \fi%
+% \end{macrocode}
+% Hier wird auf das Vorhandensein aller benötigten Schriften geprüft.
+% \begin{macrocode}
+ \tud@cdfont@check%
+% \end{macrocode}
+% Damit \pkg{tudscrfonts} reibungslos mit den nachfolgenden Definitionen
+% funktioniert, wird im Bedarfsfall der Befehl \cs{sectfont} vorgehalten.
+% \begin{macrocode}
+%<package> \ifdef{\sectfont}{}{\let\sectfont\relax}%
+% \end{macrocode}
+% Nachdem auf die Schriften geprüft wurde, werden noch die Schriftschalter und
+% die dazugehörigen Befehle definiert. Auch die mathematischen Schriften werden
+% initialisiert.
+% \begin{macrocode}
+ \tud@cdfont@init%
+ \tud@ttfont@init%
+ \tud@cdmath@init%
+% \end{macrocode}
+% Die Einstellungen für den Mathematiksatz erfolgen erst zu Dokumentbeginn, um
+% auf Einstellungen von anderen Schriftpaketen reagieren zu können. Da es
+% so gut wie keine freien OpenType-Schriften für den mathmatischen Formelsatz
+% gibt, werden \emph{immer} die Type1-Schriften verwendet, falls diese
+% installiert sind. Wurde jedoch das Paket \pkg{bm} angefordert, so müssen die
+% Mathematikschriften spätestens zum Ende der Präambel initialisiert werden.
+% \begin{macrocode}
+ \if@tud@x@bm@requested%
+ \UnPreventPackageFromLoading{bm}%
+ \if@tud@cdmath@active%
+ \tud@cs@store{mv@normal}%
+ \tud@cs@store{mv@bold}%
+ \let\mv@normal\mv@tudnormal%
+ \let\mv@bold\mv@tudbold%
+ \fi%
+ \RequirePackage{bm}[2017/01/16]%
+ \tud@cs@restore{mv@normal}%
+ \tud@cs@restore{mv@bold}%
+ \fi%
+% \end{macrocode}
+% Wurde das Paket \pkg{siunitx} geladen, so werden die Schrifteinstellungen
+% mit \opt{cdfont}|=|\val{false} deaktiviert und zu Beginn des Dokumentes
+% auf die aktuelle Einstellung gesetzt.
+% \begin{macrocode}
+ \if@tud@x@siunitx@enabled%
+ \if@tud@cdfont@active%
+ \if@tud@cdfont@heavy%
+ \def\tud@reserved{\TUDoptions{cdfont=heavy}}%
+ \else%
+ \def\tud@reserved{\TUDoptions{cdfont=true}}%
+ \fi%
+ \else%
+ \def\tud@reserved{\TUDoptions{cdfont=false}}%
+ \fi%
+ \expandafter\AfterEndPreamble\expandafter{\tud@reserved}%
+ \TUDoptions{cdfont=false}%
+ \fi%
+% \end{macrocode}
+% Damit die Schrift im Dokument später noch umgestellt werden kann, werden
+% sämtliche Einstellungen erst am Ende der Präambel gesichert. Deshalb wird
+% der dafür verantwortliche Befehl \cs{tud@font@set} 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.
+% \begin{macrocode}
+ \tud@font@set%
+ \AtBeginDocument{%
+% \end{macrocode}
+% Bereitstellung der Auswahlbefehle für griechische Glyphen in der Nomenklatur
+% von \TUDScript (\cs{up\meta{Bezeichner}}, \cs{it\meta{Bezeichner}}).
+% \begin{macrocode}
+ \tud@math@map@greeks%
+% \end{macrocode}
+% Für die griechischen Glyphen wird mit \cs{tud@math@checkslanted@greeks}
+% geprüft, ob diese durch ein Paket explizit auf kursive Majuskeln oder eine
+% vollständig aufrechte Variante gesetzt wurden. Ist dies der Fall, wird der
+% Standardwert für die Option \opt{slantedgreek} entsprechend angepasst.
+% \begin{macrocode}
+ \tud@math@checkslanted@greeks%
+% \end{macrocode}
+% Nachdem alle Vorbereitungen getroffen wurden, werden die Schriften für den
+% mathematischen Satz nun endlich gesetzt.
+% \begin{macrocode}
+ \tud@math@set%
+ }%
+}
+% \end{macrocode}
+%
+% \iffalse
+%<*class>
+% \fi
+%
+% \subsubsection{Schriften für die speziellen Seitenstile}
+%
+% \begin{macro}{\tud@head@font@set}
+% \changes{v2.02}{2014/07/08}{Unterstützung für \opt{cdhead} hinzugefügt}^^A
+% \changes{v2.03}{2015/01/30}{Bugfix für die Änderung von \cs{spaceskip} durch
+% das Paket \pkg{ragged2e}}^^A
+% \begin{macro}{\tud@head@cdfont@set}%
+% \changes{v2.06}{2018/06/29}{neu}^^A
+% \begin{macro}{\tud@head@font@light}
+% \begin{macro}{\tud@head@font@bold}
+% \begin{macro}{\tud@head@font@@bold}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% 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@fontsize} gespeichert. Das Makro \cs{tud@head@font@@bold}
+% wird verwendet, um die Einstellung der fetten Schriften ohne die fixierte
+% Schriftgröße nutzen zu können.
+% \begin{macrocode}
+\newcommand*\tud@head@font@light{}
+\newcommand*\tud@head@font@bold{}
+%<poster>\newcommand*\tud@head@font@@bold{}
+\newcommand*\tud@head@font@set{%
+% \end{macrocode}
+% Die Option \opt{cdhead} wird ausgewertet. Sollte diese inkompatibel gesetzt
+% sein, wird eine Warnung ausgegeben.
+% \begin{macrocode}
+ \if@tud@cdfont@active\ifcase\tud@head@font@num\relax% false
+ \if@tud@head@font@set%
+ \ClassWarning{\TUD@Class@Name}{%
+ It isn't possible to use `cdhead=false'\MessageBreak%
+ together with `cdfont=true'%
+ }%
+ \fi%
+ \if@tud@cdfont@heavy%
+ \TUDoptions{cdhead=heavy}%
+ \else%
+ \TUDoptions{cdhead=true}%
+ \fi%
+ \fi\fi%
+% \end{macrocode}
+% Die Schriften für die Kopfzeile werden hier definiert. Abhängig von
+% \cs{if@tud@cdfont@active} werden entweder die Schriften des \CDs oder die
+% serifenlose Standardschrift für die Kopfzeile verwendet. Die Rückfallebene:
+% \begin{macrocode}
+ \if@tud@head@font@set%
+ \if@tud@x@mweights@enabled%
+ \DeclareFixedFont{\tud@head@font@light}{\encodingdefault}%
+ {\sfdefault}{\mdseries@sf}{\updefault}{\tud@head@fontsize}%
+ \DeclareFixedFont{\tud@head@font@bold}{\encodingdefault}%
+ {\sfdefault}{\bfseries@sf}{\updefault}{\tud@head@fontsize}%
+%<*poster>
+ \protected\gdef\tud@head@font@@bold{%
+ \usefont{\encodingdefault}{\sfdefault}{\bfseries@sf}{\updefault}%
+ }%
+%</poster>
+ \else%
+ \DeclareFixedFont{\tud@head@font@light}{\encodingdefault}%
+ {\sfdefault}{\mddefault}{\updefault}{\tud@head@fontsize}%
+ \DeclareFixedFont{\tud@head@font@bold}{\encodingdefault}%
+ {\sfdefault}{\bfdefault}{\updefault}{\tud@head@fontsize}%
+%<*poster>
+ \protected\gdef\tud@head@font@@bold{%
+ \usefont{\encodingdefault}{\sfdefault}{\bfdefault}{\updefault}%
+ }%
+%</poster>
+ \fi%
+ \ifcase\tud@head@font@num\relax\else% true/heavy
+ \tud@head@cdfont@set%
+ \fi%
+ \global\@tud@head@font@setfalse%
+ \global\@tud@head@text@settrue%
+ \fi%
+}
+% \end{macrocode}
+% Hiermit werden die eigentlichen Schriften des \CDs gesetzt.
+% \begin{macrocode}
+\newcommand*\tud@head@cdfont@set{%
+ \if@tud@cdfont@fam@exist%
+ \ifcase\tud@head@font@num\relax\or% true
+ \DeclareFixedFont{\tud@head@font@light}{\encodingdefault}%
+ {\tud@cdfont@fam@lf}{l}{n}{\tud@head@fontsize}%
+ \DeclareFixedFont{\tud@head@font@bold}{\encodingdefault}%
+ {\tud@cdfont@fam@lf}{sb}{n}{\tud@head@fontsize}%
+%<*poster>
+ \protected\gdef\tud@head@font@@bold{%
+ \usefont{\encodingdefault}{\tud@cdfont@fam@lf}{sb}{n}%
+ }%
+%</poster>
+ \or% heavy
+ \DeclareFixedFont{\tud@head@font@light}{\encodingdefault}%
+ {\tud@cdfont@fam@lf}{m}{n}{\tud@head@fontsize}%
+ \DeclareFixedFont{\tud@head@font@bold}{\encodingdefault}%
+ {\tud@cdfont@fam@lf}{b}{n}{\tud@head@fontsize}%
+%<*poster>
+ \protected\gdef\tud@head@font@@bold{%
+ \usefont{\encodingdefault}{\tud@cdfont@fam@lf}{b}{n}%
+ }%
+%</poster>
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% Und noch die Variante für die alten Schriften.
+% \begin{macrocode}
+\if@tud@cdoldfont@active
+ \renewcommand*\tud@head@cdfont@set{%
+ \if@tud@cdfont@fam@exist%
+ \ifcase\tud@head@font@num\relax\or% true
+ \DeclareFixedFont{\tud@head@font@light}{\encodingdefault}%
+ {\tud@cdfont@fam@lf}{l}{n}{\tud@head@fontsize}%
+ \or% heavy
+ \DeclareFixedFont{\tud@head@font@light}{\encodingdefault}%
+ {\tud@cdfont@fam@lf}{m}{n}{\tud@head@fontsize}%
+ \fi%
+ \DeclareFixedFont{\tud@head@font@bold}{\encodingdefault}%
+ {\tud@cdfont@fam@lf}{b}{n}{\tud@head@fontsize}%
+%<*poster>
+ \protected\gdef\tud@head@font@@bold{%
+ \usefont{\encodingdefault}{\tud@cdfont@fam@lf}{b}{n}%
+ }%
+%</poster>
+ \fi%
+ }%
+\fi
+% \end{macrocode}
+% \end{macro}^^A \tud@head@font@@bold
+% \end{macro}^^A \tud@head@font@bold
+% \end{macro}^^A \tud@head@font@light
+% \end{macro}^^A \tud@head@cdfont@set
+% \end{macro}^^A \tud@head@font@set
+%
+% \iffalse
+%</class>
+%</body>
+% \fi
+%
+% \Finale
+%
+\endinput