texlive[64085] Master/texmf-dist: tudscr (9aug22)

commits+karl at tug.org commits+karl at tug.org
Tue Aug 9 22:01:55 CEST 2022


Revision: 64085
          http://tug.org/svn/texlive?view=revision&revision=64085
Author:   karl
Date:     2022-08-09 22:01:54 +0200 (Tue, 09 Aug 2022)
Log Message:
-----------
tudscr (9aug22)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/tudscr/LICENSE.md
    trunk/Master/texmf-dist/doc/latex/tudscr/README.md
    trunk/Master/texmf-dist/doc/latex/tudscr/tudscr.pdf
    trunk/Master/texmf-dist/doc/latex/tudscr/tudscr_print.pdf
    trunk/Master/texmf-dist/doc/latex/tudscr/tudscrsource.pdf
    trunk/Master/texmf-dist/doc/latex/tudscr/tutorials/mathswap.pdf
    trunk/Master/texmf-dist/doc/latex/tudscr/tutorials/mathtype.pdf
    trunk/Master/texmf-dist/doc/latex/tudscr/tutorials/treatise.pdf
    trunk/Master/texmf-dist/source/latex/tudscr/doc/examples/mathswap-example.tex
    trunk/Master/texmf-dist/source/latex/tudscr/doc/examples/treatise-example.tex
    trunk/Master/texmf-dist/source/latex/tudscr/doc/tudscr-installation.tex
    trunk/Master/texmf-dist/source/latex/tudscr/doc/tudscr-introduction.tex
    trunk/Master/texmf-dist/source/latex/tudscr/doc/tudscr-mainclasses.tex
    trunk/Master/texmf-dist/source/latex/tudscr/doc/tudscr-packages.tex
    trunk/Master/texmf-dist/source/latex/tudscr/doc/tudscr.tex
    trunk/Master/texmf-dist/source/latex/tudscr/doc/tutorials/mathswap.tex
    trunk/Master/texmf-dist/source/latex/tudscr/doc/tutorials/mathtype.tex
    trunk/Master/texmf-dist/source/latex/tudscr/doc/tutorials/treatise.tex
    trunk/Master/texmf-dist/source/latex/tudscr/tudscr-area.dtx
    trunk/Master/texmf-dist/source/latex/tudscr/tudscr-base.dtx
    trunk/Master/texmf-dist/source/latex/tudscr/tudscr-color.dtx
    trunk/Master/texmf-dist/source/latex/tudscr/tudscr-comp.dtx
    trunk/Master/texmf-dist/source/latex/tudscr/tudscr-doc.dtx
    trunk/Master/texmf-dist/source/latex/tudscr/tudscr-fields.dtx
    trunk/Master/texmf-dist/source/latex/tudscr/tudscr-fonts.dtx
    trunk/Master/texmf-dist/source/latex/tudscr/tudscr-frontmatter.dtx
    trunk/Master/texmf-dist/source/latex/tudscr/tudscr-layout.dtx
    trunk/Master/texmf-dist/source/latex/tudscr/tudscr-localization.dtx
    trunk/Master/texmf-dist/source/latex/tudscr/tudscr-manual.dtx
    trunk/Master/texmf-dist/source/latex/tudscr/tudscr-mathswap.dtx
    trunk/Master/texmf-dist/source/latex/tudscr/tudscr-misc.dtx
    trunk/Master/texmf-dist/source/latex/tudscr/tudscr-pagestyle.dtx
    trunk/Master/texmf-dist/source/latex/tudscr/tudscr-supervisor.dtx
    trunk/Master/texmf-dist/source/latex/tudscr/tudscr-texindy.dtx
    trunk/Master/texmf-dist/source/latex/tudscr/tudscr-title.dtx
    trunk/Master/texmf-dist/source/latex/tudscr/tudscr-twocolfix.dtx
    trunk/Master/texmf-dist/source/latex/tudscr/tudscr-version.dtx
    trunk/Master/texmf-dist/source/latex/tudscr/tudscr.ins
    trunk/Master/texmf-dist/source/latex/tudscr/tudscrsource.tex
    trunk/Master/texmf-dist/tex/latex/tudscr/fix-tudscrfonts.sty
    trunk/Master/texmf-dist/tex/latex/tudscr/mathswap.sty
    trunk/Master/texmf-dist/tex/latex/tudscr/tudscrartcl.cls
    trunk/Master/texmf-dist/tex/latex/tudscr/tudscrbase.sty
    trunk/Master/texmf-dist/tex/latex/tudscr/tudscrbook.cls
    trunk/Master/texmf-dist/tex/latex/tudscr/tudscrcolor.sty
    trunk/Master/texmf-dist/tex/latex/tudscr/tudscrcomp.sty
    trunk/Master/texmf-dist/tex/latex/tudscr/tudscrdoc.cls
    trunk/Master/texmf-dist/tex/latex/tudscr/tudscrfonts.sty
    trunk/Master/texmf-dist/tex/latex/tudscr/tudscrmanual.cls
    trunk/Master/texmf-dist/tex/latex/tudscr/tudscrposter.cls
    trunk/Master/texmf-dist/tex/latex/tudscr/tudscrreprt.cls
    trunk/Master/texmf-dist/tex/latex/tudscr/tudscrsupervisor.sty
    trunk/Master/texmf-dist/tex/latex/tudscr/twocolfix.sty

Added Paths:
-----------
    trunk/Master/texmf-dist/source/latex/tudscr/doc/tutorials.bat
    trunk/Master/texmf-dist/source/latex/tudscr/tudscr-gitinfo.dtx
    trunk/Master/texmf-dist/tex/latex/tudscr/tudscr-gitinfo.sty
    trunk/Master/texmf-dist/tex/latex/tudscr/tudscrmanual.sty

Removed Paths:
-------------
    trunk/Master/texmf-dist/tex/latex/tudscr/tudscrcomp-book.sty
    trunk/Master/texmf-dist/tex/latex/tudscr/tudscrcomp-poster.sty
    trunk/Master/texmf-dist/tex/latex/tudscr/tudscrtutorial.sty

Modified: trunk/Master/texmf-dist/doc/latex/tudscr/LICENSE.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tudscr/LICENSE.md	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/doc/latex/tudscr/LICENSE.md	2022-08-09 20:01:54 UTC (rev 64085)
@@ -2,7 +2,7 @@
  TUD-Script – Corporate Design of Technische Universität Dresden
 ----------------------------------------------------------------------------
 
- Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2021
+ Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2022
 
 ----------------------------------------------------------------------------
 
@@ -19,7 +19,7 @@
 
 ----------------------------------------------------------------------------
 
- However, only members of the  Technische Universität Dresden are permitted 
+ However, only members of the Technische Universität Dresden are permitted 
  to publish documents in the corporate design, in particular with the use 
  of an official logo.
 

Modified: trunk/Master/texmf-dist/doc/latex/tudscr/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tudscr/README.md	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/doc/latex/tudscr/README.md	2022-08-09 20:01:54 UTC (rev 64085)
@@ -2,9 +2,9 @@
  TUD-Script – Corporate Design of Technische Universität Dresden
 ----------------------------------------------------------------------------
 
- Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2021
+ Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2022
 
- tudscr 2021/07/15 v2.06n
+ tudscr 2022/08/09 v2.06o
 
  This material is subject to the LaTeX Project Public License version 1.3c
  or later.<br>
@@ -59,6 +59,16 @@
 Versionen
 ---------
 
+**v2.06o** (2022/08/09)
++ Schriftstärke im Mathematikmodus wird passend zu den Einstellungen für den 
+  Fließtext (`cdfont=light/heavy/normalbold/ultrabold`) gewählt
++ Kombination `cd=true` und `cdfont=false` verwendet Open Sans in Überschriften
++ `relspacing=true` Schriftgröße hat stärkeren Einfluss, unsauberer Übergang zu
+  nicht vordefinierten Zwischengrößen behoben
++ **tudscrposter** Umgebungen `figurehere` und `tablehere`
++ Verwendung der Symbole `\textleftarrow`, `\textrightarrow`, `\textuparrow`,
+  `\textdownarrow` sowie `\textlangle` und `\textrangle` aus Paket **iwona**
+
 **v2.06n** (2021/07/15)
 + Fix für **siunitx**
 
@@ -284,6 +294,15 @@
 Versions
 --------
 
+**v2.06o** (2022/08/09)
++ font face in math mode matches text mode settings 
+  (`cdfont=light/heavy/normalbold/ultrabold`)
++ combination `cd=true` and `cdfont=false` uses Open Sans in headings
++ `relspacing=true` depends on selected font size
++ **tudscrposter** environments `figurehere` und `tablehere`
++ symbols for `\textleftarrow`, `\textrightarrow`, `\textuparrow`,
+  `\textdownarrow` as well as `\textlangle` and `\textrangle` from **iwona**
+
 **v2.06n** (2021/07/15)
 + bug fix for **siunitx**
 

Modified: trunk/Master/texmf-dist/doc/latex/tudscr/tudscr.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/tudscr/tudscr_print.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/tudscr/tudscrsource.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/tudscr/tutorials/mathswap.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/tudscr/tutorials/mathtype.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/tudscr/tutorials/treatise.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/latex/tudscr/doc/examples/mathswap-example.tex
===================================================================
--- trunk/Master/texmf-dist/source/latex/tudscr/doc/examples/mathswap-example.tex	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/source/latex/tudscr/doc/examples/mathswap-example.tex	2022-08-09 20:01:54 UTC (rev 64085)
@@ -17,7 +17,6 @@
 \mathswapon
 
 \(4.523,58\)
-
 \(4,523.58\)
 
 \begingroup

Modified: trunk/Master/texmf-dist/source/latex/tudscr/doc/examples/treatise-example.tex
===================================================================
--- trunk/Master/texmf-dist/source/latex/tudscr/doc/examples/treatise-example.tex	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/source/latex/tudscr/doc/examples/treatise-example.tex	2022-08-09 20:01:54 UTC (rev 64085)
@@ -107,7 +107,6 @@
   title     = {The \TeX book},
   date      = {1984},
   maintitle = {Computers \& Typesetting},
-  volume    = {A},
   publisher = {Addison-Wesley},
   location  = {Reading, Massachusetts},
   language  = {english},

Modified: trunk/Master/texmf-dist/source/latex/tudscr/doc/tudscr-installation.tex
===================================================================
--- trunk/Master/texmf-dist/source/latex/tudscr/doc/tudscr-installation.tex	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/source/latex/tudscr/doc/tudscr-installation.tex	2022-08-09 20:01:54 UTC (rev 64085)
@@ -450,7 +450,7 @@
 
 \minisec{\hologo{TeX}~Live~Portable}
 Das folgende Vorgehen wurde mit Windows getestet. Empfehlungen für die portable 
-Installation für unixoide Betriebssysteme können an \mailto{\tudscrmail} 
+Installation für unixoide Betriebssysteme können an \mailto{\TUDScriptContact} 
 gesendet werden.
 \begin{enumerate}
 \item Installation von \Distribution{\hologo{TeX}~Live~Portable} in 
@@ -562,6 +562,6 @@
 \end{quoting}
 %
 Die so erstellte Logdatei kann \emph{mit einer kurzen Fehlerbeschreibung} 
-entweder im \Forum* gepostet oder direkt per E"~Mail an \mailto{\tudscrmail} 
-gesendet werden.
+entweder im \Forum* gepostet oder per E"~Mail an \mailto{\TUDScriptContact}
+gesendet werden.%
 \index{Installation!Schriftinstallation|!)}%

Modified: trunk/Master/texmf-dist/source/latex/tudscr/doc/tudscr-introduction.tex
===================================================================
--- trunk/Master/texmf-dist/source/latex/tudscr/doc/tudscr-introduction.tex	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/source/latex/tudscr/doc/tudscr-introduction.tex	2022-08-09 20:01:54 UTC (rev 64085)
@@ -1,12 +1,11 @@
 \chapter{Einleitung}
 %
-Zur Verwendung der \TUDScript-Klassen in der Version~\vTUDScript{} werden 
-sowohl die \KOMAScript"=Klassen~\vKOMAScript{} oder später als auch die 
-Hausschrift des \CDs \OpenSans aus dem Paket \Package{opensans} zwingend 
-benötigt. Außerdem müssen durch die genutzte \hologo{LaTeX}"=Distribution 
-weitere Pakete bereitgestellt werden, die unter \autoref{sec:packages:needed} 
-aufgeführt sind. Beim Einsatz einer der Distributionen
-\index{Distribution}%
+Zur Verwendung von \TUDScript~\vTUDScript{} wird sowohl 
+\KOMAScript~\vKOMAScript{} oder später als auch die Hausschrift des 
+\CDs \OpenSans aus dem Paket \Package{opensans} zwingend benötigt. Außerdem 
+müssen durch die genutzte \hologo{LaTeX}"=Distribution weitere Pakete 
+bereitgestellt werden, die unter \autoref{sec:packages:needed} aufgeführt sind. 
+Beim Einsatz einer der Distributionen\index{Distribution} 
 \Distribution{\hologo{TeX}~Live}|?|,
 \Distribution{Mac\hologo{TeX}}|?| und 
 \Distribution{\hologo{MiKTeX}}|?|

Modified: trunk/Master/texmf-dist/source/latex/tudscr/doc/tudscr-mainclasses.tex
===================================================================
--- trunk/Master/texmf-dist/source/latex/tudscr/doc/tudscr-mainclasses.tex	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/source/latex/tudscr/doc/tudscr-mainclasses.tex	2022-08-09 20:01:54 UTC (rev 64085)
@@ -2118,8 +2118,8 @@
   \textbf{Wert} & \textbf{Bezeichner} & \textbf{Deutsch} & \textbf{Englisch}
   \tabularnewline
   \midrule
+  \typecast{habil}{habilitationname}  
   \typecast{diss}{dissertationname}
-  \typecast{doctoral}{dissertationname}
   \typecast{phd}{dissertationname}
   \typecast{diploma}{diplomathesisname}
   \typecast{master}{masterthesisname}

Modified: trunk/Master/texmf-dist/source/latex/tudscr/doc/tudscr-packages.tex
===================================================================
--- trunk/Master/texmf-dist/source/latex/tudscr/doc/tudscr-packages.tex	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/source/latex/tudscr/doc/tudscr-packages.tex	2022-08-09 20:01:54 UTC (rev 64085)
@@ -998,7 +998,8 @@
       literate=%
         {ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
         {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
-        {~}{{\textasciitilde}}1 {ß}{{\ss}}1
+        {ß}{{\ss}}1 {~}{{\textasciitilde}}1
+        {»}{{\guillemetright}}1 {«}{{\guillemetleft}}1
     }
   \end{Code}\vspace{-\baselineskip}%
 \item[coseoul]

Modified: trunk/Master/texmf-dist/source/latex/tudscr/doc/tudscr.tex
===================================================================
--- trunk/Master/texmf-dist/source/latex/tudscr/doc/tudscr.tex	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/source/latex/tudscr/doc/tudscr.tex	2022-08-09 20:01:54 UTC (rev 64085)
@@ -1,4 +1,4 @@
-\documentclass[english,ngerman,ttfont=roboto]{tudscrmanual}
+\documentclass[english,ngerman]{tudscrmanual}
 \iftutex
   \usepackage{fontspec}
 \else
@@ -13,14 +13,13 @@
     {ß}{{\ss}}1 {~}{{\textasciitilde}}1
     {»}{{\guillemetright}}1 {«}{{\guillemetleft}}1
 }
+\usepackage{babel}
+\usepackage[babel]{microtype}
+
 \usepackage{bookmark}
-
-\TUDoption{ToDo}{true}
 \KOMAoptions{headings=optiontoheadandtoc}
 
-%\tracinglabels[all]
-%\tracingmarkup
-
+\GitHubBase{\TUDScriptRepository}
 \begin{document}
 \newrobustcmd*\cdurl{%
   \begingroup%
@@ -36,14 +35,10 @@
 }{%
   \subtitle{Benutzerhandbuch\thanks{\href{tudscr_print}{Druckversion}}}%
 }
+\author{Falk Hanisch\TUDScriptContactTitle}
+\publishers{\url{\TUDScriptRepository}}
+\date{2022-08-09}
 
-\author{%
-  Falk Hanisch%
-  \expandafter\emailaddress\expandafter{\tudscrmail}%
-}
-\publishers{\GitHubRepo'[]}
-\date{2021-07-15}
-
 \makeatletter
 \begingroup%
   \def\and{, }%
@@ -140,14 +135,15 @@
   davor (\Option*{open=right}) sowie danach (\Option*{open=left}). Setzen von 
   speziellen Inhalten auf diesen Seiten äquivalent zu \Macro*{setpartpreamble} 
   bzw. \Macro*{setchapterpreamble}; ggf. temporär umschalten bzw. Warnung bei 
-  Konflikt.
-  \url{http://latex.wcms-file3.tu-dresden.de/phpBB3/viewtopic.php?f=11&t=396}
+  Konflikt. \Forum<396>
 }[v2.07]
 
 \ToDo[imp]{Alle Datumsangaben auf YYYY-MM-DD umstellen}[v2.07]
 
 \ToDo[imp]{LyX: layout-Dateien in das Projekt integrieren lassen?}[v2.07]
-\ToDo[imp]{\Package*{glossaries}: Paket für Stile aus Tutorial}[v2.07]
+\ToDo[imp]{%
+  \Package*{glossaries}: Paket für Stile aus Tutorial, siehe auch \Forum<535>
+}[v2.07]
 
 \ToDo[imp]{TeXstudio: cwl-Dateien über docstrip, separate .ins-Datei}[v2.07]
 \ToDo[rls]{TeXstudio: alle *.cwl erneuern, automatisch über *.dtx}
@@ -154,11 +150,10 @@
 
 \ToDo[rls]{GitHub auf offene Issues prüfen}
 \ToDo[rls]{\emph{alle} dtx-Dateien der vorherigen Version mit WinMerge sichten}
+\ToDo[rls]{Datumsangaben \emph{aller} dtx-Dateien prüfen}%: ^((?!%).)*\d{4}(/|-)
 \ToDo[rls]{Layout und Umbrüche kontrollieren}
 \ToDo[rls]{Datum in tudscr-version.dtx, tudscr-comp.dtx, Handbuch \& README}
-\ToDo[rls]{%
-  Release auf GitHub und CTAN, Tag für Homepage und im Forum ändern\\ 
-  {\small\url{http://latex.wcms-file3.tu-dresden.de/phpBB3/viewtopic.php?t=303}}%
-}
+\ToDo[rls]{Release auf GitHub und CTAN, Tag für Homepage und \Forum<303> ändern}
+
 \ListOfToDo
 \end{document}

Modified: trunk/Master/texmf-dist/source/latex/tudscr/doc/tutorials/mathswap.tex
===================================================================
--- trunk/Master/texmf-dist/source/latex/tudscr/doc/tutorials/mathswap.tex	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/source/latex/tudscr/doc/tutorials/mathswap.tex	2022-08-09 20:01:54 UTC (rev 64085)
@@ -5,14 +5,17 @@
   \usepackage[T1]{fontenc}
   \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
 \fi
+\usepackage{babel}
+\usepackage[babel]{microtype}
 
-\usepackage{tudscrtutorial}
+\usepackage{tudscrmanual}
 \lstset{%
   inputencoding=utf8,extendedchars=true,
   literate=%
     {ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
     {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
-    {~}{{\textasciitilde}}1 {ß}{{\ss}}1
+    {ß}{{\ss}}1 {~}{{\textasciitilde}}1
+    {»}{{\guillemetright}}1 {«}{{\guillemetleft}}1
 }
 
 \usepackage{mathswap}
@@ -19,30 +22,34 @@
 \usepackage{bookmark}
 
 \begin{document}
-\begin{Bundle}{\Package{mathswap}}
-\date{07.11.2016}
-\author{Falk Hanisch\thanks{\noexpand\scriptsize\noexpand\mailto{\tudscrmail}}}
+\subject{Mathematiksatz in \hologo{LaTeX}}
 \title{Änderung der Trennzeichen im Mathematikmodus}
+\author{Falk Hanisch\TUDScriptContactTitle}
+\date{2016-11-07}
+
 \makeatletter
 \begingroup%
   \def\and{, }%
   \let\thanks\@gobble%
   \let\footnote\@gobble%
+  \let\emailaddress\@gobble%
   \hypersetup{%
-    pdfauthor = {\@author},%
-    pdftitle = {\@title},%
-    pdfsubject = {Mathematiksatz in LaTeX},%
+    pdfauthor   = {\@author},%
+    pdftitle    = {\@title},%
+    pdfsubject  = {\@subject},%
     pdfkeywords = {LaTeX, \TUDScript, Tutorial, Mathematiksatz},%
   }%
 \endgroup%
 \markright{\@title}
 \makeatother
+
+\begin{Bundle}{\Package{mathswap}}
 \StartTutorial[%
-  Werden in einer wissenschaftlichen Abhandlung vielerlei Daten importiert und 
-  beispielsweise tabellarisch dargestellt, kann es durchaus sein, dass diese 
-  importierten Datensätze bezüglich der darin enthaltenen Gruppierungs- und 
-  Dezimaltrennzeichen nicht dem Zahlenformat entsprechen, welches für die 
-  verwendete Dokumentsprache normalerweise notwendig wäre.
+  Sollen in einer wissenschaftlichen Abhandlung unterschiedliche Datensätze 
+  importiert und beispielsweise tabellarisch dargestellt werden, kann es 
+  durchaus sein, dass die enthaltenen Gruppierungs- und Dezimaltrennzeichen 
+  nicht dem für die verwendete Dokumentsprache geforderten Zahlenformat 
+  entsprechen.
   
   Dieses Tutorial behandelt die typografischen Eigenheiten von Gruppierungs- 
   und Dezimaltrennzeichen bei der Angabe von Zahlen in einem
@@ -134,7 +141,6 @@
 }
 \begin{Trunk*}
 \(4.523,58\)
-
 \end{Trunk*}
 %
 Wird die gleiche Zahl in englischer Formatierung angegeben, funktioniert dies 

Modified: trunk/Master/texmf-dist/source/latex/tudscr/doc/tutorials/mathtype.tex
===================================================================
--- trunk/Master/texmf-dist/source/latex/tudscr/doc/tutorials/mathtype.tex	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/source/latex/tudscr/doc/tutorials/mathtype.tex	2022-08-09 20:01:54 UTC (rev 64085)
@@ -1,4 +1,4 @@
-\documentclass[english,ngerman]{tudscrartcl}
+\documentclass[english,ngerman,cdfont=false]{tudscrartcl}
 \iftutex
   \usepackage{fontspec}
 \else
@@ -5,14 +5,17 @@
   \usepackage[T1]{fontenc}
   \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
 \fi
+\usepackage{babel}
+\usepackage[babel]{microtype}
 
-\usepackage{tudscrtutorial}
+\usepackage{tudscrmanual}
 \lstset{%
   inputencoding=utf8,extendedchars=true,
   literate=%
     {ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
     {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
-    {~}{{\textasciitilde}}1 {ß}{{\ss}}1
+    {ß}{{\ss}}1 {~}{{\textasciitilde}}1
+    {»}{{\guillemetright}}1 {«}{{\guillemetleft}}1
 }
 
 \usepackage{mathtools}
@@ -19,36 +22,39 @@
 \usepackage{bookmark}
 
 \begin{document}
+\subject{Mathematiksatz in \hologo{LaTeX}}
+\title{Ein Beitrag zum mathematischen Satz in \hologo{LaTeX}}
+\author{Falk Hanisch\TUDScriptContactTitle}
 \date{07.11.2016}
-\author{Falk Hanisch\thanks{\noexpand\scriptsize\noexpand\mailto{\tudscrmail}}}
-\title{Ein Beitrag zum mathematischen Satz in \hologo{LaTeX}}
+
 \makeatletter
 \begingroup%
   \def\and{, }%
   \let\thanks\@gobble%
   \let\footnote\@gobble%
+  \let\emailaddress\@gobble%
   \hypersetup{%
-    pdfauthor = {\@author},%
-    pdftitle = {\@title},%
-    pdfsubject = {Mathematiksatz in LaTeX},%
+    pdfauthor   = {\@author},%
+    pdftitle    = {\@title},%
+    pdfsubject  = {\@subject},%
     pdfkeywords = {LaTeX, \TUDScript, Tutorial, Mathematiksatz},%
   }%
 \endgroup%
 \markright{\@title}
 \makeatother
+
 \StartTutorial[%
   Im mathematischen Satz sollten lediglich Formelzeichen für physikalische 
   Größen und Variablen sowie Funktions- und Operatorzeichen mit frei wählbarer 
   Bedeutung kursiv geschrieben werden. Dagegen werden Einheiten und ihre 
   Vorsätze, Zahlen, Funktions- und Operatorzeichen mit feststehender Bedeutung 
-  sowie Chemische Elemente und Verbindungen aufrecht gesetzt. Weiterhin werden 
-  Indizes, welche ein Formelzeichen näher beschreiben, ebenfalls aufrecht 
-  gesetzt. Dieses Tutorial zeigt, wie mit einfachen Mitteln die Auszeichnung 
-  von beschreibenden Indizes bei Formelzeichen typografisch korrekt erfolgen 
-  kann.
+  sowie chemische Elemente und Verbindungen ebenso wie Indizes, welche ein 
+  Formelzeichen näher beschreiben, aufrecht gesetzt. Dieses Tutorial zeigt, wie 
+  mit einfachen Mitteln die Auszeichnung von Indizes bei Formelzeichen 
+  typografisch korrekt erfolgen kann.
 ]
 Bevor das eigentliche Tutorial beginnt, werden sowohl eine Dokumentklasse als 
-auch die für jedes \hologo{pdfLaTeX}-Dokument meiner Meinung nach sinnvollen 
+auch die für jedes \hologo{LaTeX}"~Dokument meiner Meinung nach sinnvollen 
 Pakete geladen.
 %
 \begin{Preamble}

Modified: trunk/Master/texmf-dist/source/latex/tudscr/doc/tutorials/treatise.tex
===================================================================
--- trunk/Master/texmf-dist/source/latex/tudscr/doc/tutorials/treatise.tex	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/source/latex/tudscr/doc/tutorials/treatise.tex	2022-08-09 20:01:54 UTC (rev 64085)
@@ -1,7 +1,9 @@
 \RequirePackage{fix-cm}
 \documentclass[%
   english,ngerman,%
-  cdgeometry=no,DIV=12,automark%
+  cdgeometry=no,DIV=12,%
+  automark,%
+  listof=toc,%
 ]{tudscrartcl}
 \iftutex
   \usepackage{fontspec}
@@ -9,19 +11,22 @@
   \usepackage[T1]{fontenc}
   \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
 \fi
+\usepackage{babel}
+\usepackage[babel]{microtype}
 
-\usepackage{tudscrtutorial}
+\usepackage{tudscrmanual}
 \lstset{%
   inputencoding=utf8,extendedchars=true,
   literate=%
     {ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
     {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
-    {~}{{\textasciitilde}}1 {ß}{{\ss}}1
+    {ß}{{\ss}}1 {~}{{\textasciitilde}}1
+    {»}{{\guillemetright}}1 {«}{{\guillemetleft}}1
 }
 \lstset{escapechar=§}
 
 \usepackage{lmodern}
-\TUDoptions{cdfont=false}
+\TUDoptions{cd=false,cdfont=false,cdtitle=true}
 \KOMAoptions{headings=normal}
 
 \usepackage{tudscrsupervisor}
@@ -59,32 +64,9 @@
 }
 \usepackage{csquotes}
 \usepackage[backend=biber,style=alphabetic]{biblatex}
+\DefineBibliographyStrings{ngerman}{urlseen = {Am:}}
 \addbibresource{\jobname.bib}
-\DefineBibliographyStrings{ngerman}{urlseen = {Am:}}
 
-\usepackage{enumitem}
-
-\usepackage{caption}
-\DeclareCaptionSubType[alph]{figure}
-\DeclareCaptionSubType[alph]{table}
-\usepackage{floatrow}
-\renewcommand{\floatpagefraction}{0.7}
-
-\usepackage{tikz}
-\usetikzlibrary{chains}
-\usetikzlibrary{decorations.markings}
-\tikzset{on grid}
-
-% TODO pst-pdf funktioniert momentan nicht mit hyperref 
-%      github.com/rolfn/pst-pdf/issues/6
-\usepackage{pstricks,pst-node}
-
-\makeatletter
-\newcommand*\pcolumnfuzz[1]{\pretocmd{\@endpbox}{\hfuzz=#1}{}{}}
-\makeatother
-
-\usepackage{bookmark}
-
 \begin{filecontents}{\jobname.bib}
 @book{talbot2012,
   author    = {Nicola L. C. Talbot},
@@ -123,9 +105,9 @@
   title        = {Feinheiten bei wissenschaftlichen Publikationen~--
                   Mikrotypographie"=Regeln, Teil~I},
   journaltitle = {Die \TeX{}nische Komödie},
-  year         = {1997},
+  year         = {1996},
   month        = {2},
-  volume       = {4/96},
+  volume       = {4},
   pages        = {23-40},
   url          = {http://www.dante.de/tex/Dokumente/dtk-neubauer.pdf},
   urldate      = {2014-12-01},
@@ -137,7 +119,7 @@
   journaltitle = {Die \TeX{}nische Komödie},
   year         = {1997},
   month        = {5},
-  volume       = {1/97},
+  volume       = {1},
   pages        = {25--44},
   url          = {http://www.dante.de/tex/Dokumente/dtk-neubauer.pdf},
   urldate      = {2014-12-01},
@@ -158,26 +140,53 @@
 }
 \end{filecontents}
 
+\usepackage{enumitem}
 
+\usepackage{caption}
+\DeclareCaptionSubType[alph]{figure}
+\DeclareCaptionSubType[alph]{table}
+\usepackage{floatrow}
+\renewcommand{\floatpagefraction}{0.7}
+
+\usepackage{tikz}
+\usetikzlibrary{chains}
+\usetikzlibrary{decorations.markings}
+\tikzset{on grid}
+
+% TODO pst-pdf funktioniert momentan nicht mit hyperref 
+%      github.com/rolfn/pst-pdf/issues/6
+%      --> luapstricks ?
+\usepackage{pstricks,pst-node}
+
+\makeatletter
+\newcommand*\pcolumnfuzz[1]{\pretocmd\@endpbox{\hfuzz=#1}{}{}}
+\makeatother
+
+\usepackage{bookmark}
+
 \begin{document}
-\date{29.03.2017}
-\author{Falk Hanisch\thanks{\noexpand\scriptsize\noexpand\mailto{\tudscrmail}}}
+\subject{Tutorial für \hologo{LaTeX}}
 \title{%
   Ein Anwenderleitfaden für das Erstellen einer wissenschaftlichen Abhandlung%
 }
+\author{Falk Hanisch\TUDScriptContactTitle}
+\date{2017-03-29}
+
 \makeatletter
 \begingroup%
   \def\and{, }%
   \let\thanks\@gobble%
   \let\footnote\@gobble%
+  \let\emailaddress\@gobble%
   \hypersetup{%
-    pdfauthor = {\@author},%
-    pdftitle = {\@title},%
-    pdfsubject = {Tutorial für LaTeX},%
+    pdfauthor   = {\@author},%
+    pdftitle    = {\@title},%
+    pdfsubject  = {Tutorial für LaTeX},%
     pdfkeywords = {LaTeX, \TUDScript, Tutorial, Anwenderleitfaden},%
   }%
 \endgroup%
 \makeatother
+
 \StartTutorial[%
   Der Versuch, ein allumfassendes Tutorial für eine wissenschaftliche Arbeit 
   zur Verfügung zu stellen gleicht der beschwerlichen Suche nach einer 
@@ -1594,7 +1603,6 @@
   title     = {The \TeX book},
   date      = {1984},
   maintitle = {Computers \& Typesetting},
-  volume    = {A},
   publisher = {Addison-Wesley},
   location  = {Reading, Massachusetts},
   language  = {english},

Added: trunk/Master/texmf-dist/source/latex/tudscr/doc/tutorials.bat
===================================================================
--- trunk/Master/texmf-dist/source/latex/tudscr/doc/tutorials.bat	                        (rev 0)
+++ trunk/Master/texmf-dist/source/latex/tudscr/doc/tutorials.bat	2022-08-09 20:01:54 UTC (rev 64085)
@@ -0,0 +1,2 @@
+cd tutorials
+pdflatex -shell-escape "\input {treatise.tex}"


Property changes on: trunk/Master/texmf-dist/source/latex/tudscr/doc/tutorials.bat
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Modified: trunk/Master/texmf-dist/source/latex/tudscr/tudscr-area.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tudscr/tudscr-area.dtx	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/source/latex/tudscr/tudscr-area.dtx	2022-08-09 20:01:54 UTC (rev 64085)
@@ -1,10 +1,10 @@
-% \CheckSum{2307}
 % \iffalse meta-comment
+%/GitFileInfo=tudscr-area.dtx
 %
 %  TUD-Script -- Corporate Design of Technische Universität Dresden
 % ----------------------------------------------------------------------------
 %
-%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2021
+%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2022
 %
 % ----------------------------------------------------------------------------
 %
@@ -23,33 +23,19 @@
 %
 % \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-area.dtx
+% \iffalse ins:batch + dtx:driver
+%<*ins>
+\ifx\documentclass\undefined
+  \input docstrip.tex
+  \ifToplevel{\batchinput{tudscr.ins}}
+\else
+  \let\endbatchfile\relax
+\fi
+\endbatchfile
+%</ins>
 %<*dtx>
-% \fi%
-%
-\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
-\ProvidesFile{tudscr-area.dtx}[2020/06/18 v2.06g TUD-Script\space%
-  (type or page area)%
-]
-%
-% \iffalse
+\ProvidesFile{tudscr-area.dtx}[2022/08/09]
+\RequirePackage{tudscr-gitinfo}
 \documentclass[english,ngerman,xindy]{tudscrdoc}
 \iftutex
   \usepackage{fontspec}
@@ -59,18 +45,11 @@
 \fi
 \usepackage{babel}
 \usepackage{tudscrfonts}
-\KOMAoptions{parskip=half-}
-\usepackage{bookmark}
 \usepackage[babel]{microtype}
 
-\CodelineIndex
-\RecordChanges
-\GetFileInfo{tudscr-area.dtx}
-\title{\file{\filename}}
-\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
-\date{\fileversion\nobreakspace(\filedate)}
-
+\GitHubBase{\TUDScriptRepository}
 \begin{document}
+  \author{Falk Hanisch\TUDScriptContactTitle}
   \maketitle
   \tableofcontents
   \DocInput{\filename}
@@ -86,6 +65,8 @@
 % \changes{v2.05}{2016/04/03}{Unterstützung von Schnittmarken mit den Paketen
 %   \pkg{geometry} und \pkg{crop}}^^A
 %
+%
+%
 % \section{Der Satzspiegel für \TUDScript}
 %
 % Das \CD verlangt (eigentlich) einen fest vorgegebenen Satzspiegel. Für das
@@ -93,16 +74,14 @@
 % andere als glücklich gewählt. Insbesondere für den doppelseitigen Satz ist
 % das Standardlayout nicht gut nutzbar. Für die \TUDScript-Klassen wird 
 % deshalb die Abweichung vom sonst fest vorgegebenen Satzspiegel ermöglicht.
-% \ToDo{%
+% \ToDo{
 %   Unterstützung von PDF-Boxen für die Druckausgabe
 %^^A\url{https://groups.google.com/forum/#!topic/de.comp.text.tex/1gouJ0Zov6o}
-%^^A\url{http://tex.stackexchange.com/questions/248902/}
+%^^A\url{http://tex.stackexchange.com/q/248902}
 %^^A\url{https://wiki.scribus.net/canvas/PDF_Boxes_:_mediabox,_cropbox,_bleedbox,_trimbox,_artbox}
 %^^A\url{http://www.prepressure.com/pdf/basics/page-boxes}
-% }[v2.07]
+% }[v2.08]
 %
-% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
-%
 % \iffalse
 %<*class&body>
 % \fi
@@ -123,7 +102,7 @@
 % zu zentrieren. Diese Einstellung geht beim Laden eines neuen Satzspiegels mit 
 % \cs{loadgeometry} verloren. Hiermit wird das Problem behoben.
 %    \begin{macrocode}
-\newif\if at tud@x at crop@center
+\tud at newif\if at tud@x at crop@center
 \AfterPackage{crop}{%
   \CheckCommand*\CROP at center{%
     \voffset\stockheight
@@ -133,7 +112,7 @@
     \advance\hoffset-\paperwidth
     \hoffset.5\hoffset
   }%
-  \pretocmd{\CROP at center}{%
+  \pretocmd\CROP at center{%
     \@tud at x@crop at centertrue%
   }{}{\tud at patch@wrn{CROP at center}}%
 }
@@ -159,12 +138,12 @@
 % ausgeführt, wenn entweder die Option \opt{crop} deaktiviert ist oder die 
 % Klasse \cls{standalone} gar nicht geladen wurde.
 %    \begin{macrocode}
-\newif\if at tud@x at standalone@crop
+\tud at newif\if at tud@x at standalone@crop
 \AfterClass*{standalone}{\let\if at tud@x at standalone@crop\ifsa at crop}
 %    \end{macrocode}
 % \end{macro}^^A \if at tud@x at standalone@crop
 %
-% \subsection{Definition der Größen und Maße in abhängig vom Papierformat}
+% \subsection{Definition der Größen und Maße abhängig vom Papierformat}
 %
 % Die \TUDScript-Klassen sollen neben den vom \CD vorgegebenen Seitenrändern 
 % weitere Satzspiegel ermöglichen und u.\,a. auch die Nutzung des Paketes
@@ -174,40 +153,40 @@
 % Seitenränder direkt gewählt oder aber die mit \pkg{typearea} berechneten Maße
 % an \pkg{geometry} durchgereicht.
 %
-% \begin{length}{\tud at len@widemargin}
-% \begin{length}{\tud at len@slimmargin}
-% \begin{length}{\tud at len@both}
+% \begin{length}{\tud at dim@widemargin}
+% \begin{length}{\tud at dim@slimmargin}
+% \begin{length}{\tud at dim@bothmargin}
 % Die Seitenränder für links und rechts sowie deren Summe, welche später für
 % weitere Satzspiegeleinstelungen dazu verwendet wird, diese anteilig zu 
 % verteilen.
 %    \begin{macrocode}
-\newlength\tud at len@widemargin
-\newlength\tud at len@slimmargin
-\newlength\tud at len@both
+\tud at newdim\tud at dim@widemargin
+\tud at newdim\tud at dim@slimmargin
+\tud at newdim\tud at dim@bothmargin
 %    \end{macrocode}
-% \end{length}^^A \tud at len@both
-% \end{length}^^A \tud at len@slimmargin
-% \end{length}^^A \tud at len@widemargin
-% \begin{length}{\tud at len@topmargin}
-% \begin{length}{\tud at len@barheight}
-% \begin{length}{\tud at len@headsep}
-% \begin{length}{\tud at len@footsep}
+% \end{length}^^A \tud at dim@bothmargin
+% \end{length}^^A \tud at dim@slimmargin
+% \end{length}^^A \tud at dim@widemargin
+% \begin{length}{\tud at dim@topmargin}
+% \begin{length}{\tud at dim@barheight}
+% \begin{length}{\tud at dim@headsep}
+% \begin{length}{\tud at dim@footsep}
 % Es folgen die speziellen Maße für die Seiten mit dem TUD-Kopf, also die Höhe
 % oberhalb des Querbalkens, die Höhe des Querbalkens selbst sowie der vertikale
 % (Mindest"~)Abstand zwischen Querbalken und Textkörper sowie der Fußzeile.
 %    \begin{macrocode}
-\newlength\tud at len@topmargin
-\newlength\tud at len@barheight
-\newlength\tud at len@headsep
-\newlength\tud at len@footsep
+\tud at newdim\tud at dim@topmargin
+\tud at newdim\tud at dim@barheight
+\tud at newdim\tud at dim@headsep
+\tud at newdim\tud at dim@footsep
 %    \end{macrocode}
-% \end{length}^^A \tud at len@footsep
-% \end{length}^^A \tud at len@headsep
-% \end{length}^^A \tud at len@barheight
-% \end{length}^^A \tud at len@topmargin
-% \begin{length}{\tud at len@logox}
-% \begin{length}{\tud at len@logoy}
-% \begin{length}{\tud at len@logowidth}
+% \end{length}^^A \tud at dim@footsep
+% \end{length}^^A \tud at dim@headsep
+% \end{length}^^A \tud at dim@barheight
+% \end{length}^^A \tud at dim@topmargin
+% \begin{length}{\tud at dim@logox}
+% \begin{length}{\tud at dim@logoy}
+% \begin{length}{\tud at dim@logowidth}
 % Außerdem müssen Abmessungen und Position des TUD-Logos definiert werden,
 % genauer der horizontale (Soll"~)Abstand zwischen linkem Seitenrand und Logo,
 % der vertikale (Soll"~)Abstand zwischen oberem Seitenrand und Logo sowie die
@@ -214,61 +193,61 @@
 % Breite und Höhe\footnote{Proportionen sind durch die Grafik vorgegeben} des 
 % Logos.
 %    \begin{macrocode}
-\newlength\tud at len@logox
-\newlength\tud at len@logoy
-\newlength\tud at len@logowidth
+\tud at newdim\tud at dim@logox
+\tud at newdim\tud at dim@logoy
+\tud at newdim\tud at dim@logowidth
 %    \end{macrocode}
-% \end{length}^^A \tud at len@logowidth
-% \end{length}^^A \tud at len@logoy
-% \end{length}^^A \tud at len@logox
-% \begin{length}{\tud at len@line}
+% \end{length}^^A \tud at dim@logowidth
+% \end{length}^^A \tud at dim@logoy
+% \end{length}^^A \tud at dim@logox
+% \begin{length}{\tud at dim@line}
 % \changes{v2.02}{2014/06/23}{neu}^^A
-% \begin{length}{\tud at len@heavyline}
-% \begin{length}{\tud at len@thinline}
+% \begin{length}{\tud at dim@heavyline}
+% \begin{length}{\tud at dim@thinline}
 % Die Linienstärke der Outline im Kopf ist für ein monochromes Layout schmaler
 % als im Layout mit farbigem Hintergrund.\footnote{monochrom 
-% \cs{tud at len@thinline}, koloriert \cs{tud at len@heavyline}} Da im Dokument beide 
-% Varianten vorkommen können, wird die Breite \cs{tud at len@line} durch den
-% Seitenstil situativ entweder auf den Wert von \cs{tud at len@thinline} oder aber
-% \cs{tud at len@heavyline} gesetzt.
+% \cs{tud at dim@thinline}, koloriert \cs{tud at dim@heavyline}} Da im Dokument beide 
+% Varianten vorkommen können, wird die Breite \cs{tud at dim@line} durch den
+% Seitenstil situativ entweder auf den Wert von \cs{tud at dim@thinline} oder aber
+% \cs{tud at dim@heavyline} gesetzt.
 %    \begin{macrocode}
-\newlength\tud at len@line
-\newlength\tud at len@heavyline
-\newlength\tud at len@thinline
+\tud at newdim\tud at dim@line
+\tud at newdim\tud at dim@heavyline
+\tud at newdim\tud at dim@thinline
 %    \end{macrocode}
-% \end{length}^^A \tud at len@thinline
-% \end{length}^^A \tud at len@heavyline
-% \end{length}^^A \tud at len@line
-% \begin{length}{\tud at len@areaheadvskip}
+% \end{length}^^A \tud at dim@thinline
+% \end{length}^^A \tud at dim@heavyline
+% \end{length}^^A \tud at dim@line
+% \begin{length}{\tud at dim@areaheadvskip}
 % \changes{v2.02}{2014/06/23}{neu}^^A
-% \begin{length}{\tud at len@areadiff}
-% \begin{length}{\tud at len@areavskip}
+% \begin{length}{\tud at dim@areadiff}
+% \begin{length}{\tud at dim@areavskip}
 % Die Längen für den vertikalen Standardversatz der Überschriften sowie die 
 % Differenz der Kopfhöhen von normalem und TUD-Kopf-Satzspiegel. Die Differenz 
 % zwischen den unterschiedlichen Kopfhöhen der Satzspiegelvarianten wird durch
-% \cs{tud at cdgeometry@@process} berechnet und dabei in \cs{tud at len@areadiff} 
+% \cs{tud at cdgeometry@@process} berechnet und dabei in \cs{tud at dim@areadiff} 
 % gespeichert. Dabei muss unterschieden werden, ober der Satzspiegel des \CDs 
 % oder der durch \pkg{typearea} berechnete respektive durch den Anwender mit 
 % \pkg{geometry} vorgegebene genutzt wird. Davon abhängig wird zum Ausgleich 
-% die Länge \cs{tud at len@areavskip} definiert.
+% die Länge \cs{tud at dim@areavskip} definiert.
 %    \begin{macrocode}
-\newlength\tud at len@areaheadvskip
-\newlength\tud at len@areadiff
-\newlength\tud at len@areavskip
+\tud at newdim\tud at dim@areaheadvskip
+\tud at newdim\tud at dim@areadiff
+\tud at newdim\tud at dim@areavskip
 %    \end{macrocode}
-% \end{length}^^A \tud at len@areavskip
-% \end{length}^^A \tud at len@areadiff
-% \end{length}^^A \tud at len@areaheadvskip
-% \begin{length}{\tud at len@ddcdiff}
+% \end{length}^^A \tud at dim@areavskip
+% \end{length}^^A \tud at dim@areadiff
+% \end{length}^^A \tud at dim@areaheadvskip
+% \begin{length}{\tud at dim@ddcdiff}
 % \changes{v2.02}{2014/06/23}{neu}^^A
-% Zu guter Letzt noch die Länge \cs{tud at len@ddcdiff} für den Höhenausgleich des 
+% Zu guter Letzt noch die Länge \cs{tud at dim@ddcdiff} für den Höhenausgleich des 
 % Seitenfußes, welcher bei der Verwendung des \DDC-Logos in der Fußzeile bei 
 % Version~v2.02 für den Satzspiegel notwendig war. Dieser etwas verschrobene
 % Satzspiegel wird im Kompatibilitätsmodus weiterhin angeboten.
 %    \begin{macrocode}
-\tud at if@v at lower{2.03}{\newlength\tud at len@ddcdiff}{}
+\tud at if@v at lower{2.03}{\tud at newdim\tud at dim@ddcdiff}{}
 %    \end{macrocode}
-% \end{length}^^A \tud at len@ddcdiff
+% \end{length}^^A \tud at dim@ddcdiff
 % \begin{macro}{\tud at head@fontsize}
 % Für den Querbalken wird außerdem die zu verwendende Schriftgröße definiert.
 %    \begin{macrocode}
@@ -277,7 +256,7 @@
 % \end{macro}^^A \tud at head@fontsize
 % \begin{macro}{\tud at cdgeometry@set}
 % \changes{v2.03}{2015/01/23}{Längenberechnung für den Satzspiegel an 
-%   Referenzlänge \cs{tud at len@widemargin} gekoppelt}^^A
+%   Referenzlänge \cs{tud at dim@widemargin} gekoppelt}^^A
 % \changes{v2.05}{2015/07/15}{Fallunterscheidung an DIN-B-Reihe angepasst}^^A
 % \changes{v2.05}{2016/04/03}{Option \opt{layout} von \pkg{geometry} möglich}^^A
 % \begin{macro}{\if at tud@cdgeometry at adjust}
@@ -290,18 +269,18 @@
 % \changes{v2.06g}{2020/06/18}{neu}^^A
 % \begin{macro}{\tud at cdgeometry@papersize at last}
 % \changes{v2.06g}{2020/06/18}{neu}^^A
-% \begin{length}{\tud at len@layoutwidth}
+% \begin{length}{\tud at dim@layoutwidth}
 % \changes{v2.05}{2016/04/03}{neu}^^A
-% \begin{length}{\tud at len@layoutheight}
+% \begin{length}{\tud at dim@layoutheight}
 % \changes{v2.05}{2016/04/03}{neu}^^A
-% \begin{length}{\tud at len@layouthoffset}
+% \begin{length}{\tud at dim@layouthoffset}
 % \changes{v2.05}{2016/04/03}{neu}^^A
-% \begin{length}{\tud at len@layoutvoffset}
+% \begin{length}{\tud at dim@layoutvoffset}
 % \changes{v2.05}{2016/04/03}{neu}^^A
 % Hiermit werden in Abhängigkeit der gewählten Papiergröße die Maße für die
 % Größe der Kopfzeile, die Position des Logos, die Seitenränder sowie die
 % Schriftgröße in der Kopfzeile definiert. Aufgerufen wird der Befehl durch
-% \cs{tud at cdgeometry@@process}. Dabei fungiert \cs{tud at len@widemargin} als 
+% \cs{tud at cdgeometry@@process}. Dabei fungiert \cs{tud at dim@widemargin} als 
 % Bezugslänge. Die maßgebliche Papiergröße ist DIN~A4 bzw. DIN~B4. Die Längen
 % für alle anderen Papiermaße unterscheiden sich um den Faktor~$\sqrt{2}$,
 % wobei das Format DIN~A5 nach den Vorgaben des \CDs übersprungen wird. 
@@ -311,49 +290,49 @@
 % Mit der Einstellung \opt{cdgeometry}|=|\val{adapted} wird auch das Format 
 % DIN~A5 mit den skalierten Seitenrändern erstellt.
 %    \begin{macrocode}
-\newif\if at tud@cdgeometry at adjust
-\newlength\tud at len@layoutwidth
-\newlength\tud at len@layoutheight
-\newlength\tud at len@layouthoffset
-\newlength\tud at len@layoutvoffset
+\tud at newif\if at tud@cdgeometry at adjust
+\tud at newdim\tud at dim@layoutwidth
+\tud at newdim\tud at dim@layoutheight
+\tud at newdim\tud at dim@layouthoffset
+\tud at newdim\tud at dim@layoutvoffset
 \newcommand*\tud at cdgeometry@set{%
   \tud at cdgeometry@assignlayout%
   \tud at if@v at lower{2.05}{%
-    \ifdim\tud at len@layoutheight<\dimexpr105mm+1.5mm\relax%
+    \ifdim\tud at dim@layoutheight<\dimexpr105mm+1.5mm\relax%
       \def\@tempa{0}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr148mm+1.5mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr148mm+1.5mm\relax%
       \def\@tempa{1}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr229mm+2mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr229mm+2mm\relax%
       \def\@tempa{2}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr297mm+2mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr297mm+2mm\relax%
       \def\@tempa{3}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr420mm+2mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr420mm+2mm\relax%
       \def\@tempa{4}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr594mm+2mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr594mm+2mm\relax%
       \def\@tempa{5}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr841mm+3mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr841mm+3mm\relax%
       \def\@tempa{6}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr1189mm+3mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr1189mm+3mm\relax%
       \def\@tempa{7}%
     \else%
       \def\@tempa{8}%
     \fi\fi\fi\fi\fi\fi\fi\fi%
   }{%
-    \ifdim\tud at len@layoutheight<\dimexpr125mm+1.5mm\relax%
+    \ifdim\tud at dim@layoutheight<\dimexpr125mm+1.5mm\relax%
       \def\@tempa{0}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr176mm+2mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr176mm+2mm\relax%
       \def\@tempa{1}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr250mm+2mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr250mm+2mm\relax%
       \def\@tempa{2}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr353mm+2mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr353mm+2mm\relax%
       \def\@tempa{3}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr500mm+2mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr500mm+2mm\relax%
       \def\@tempa{4}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr707mm+3mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr707mm+3mm\relax%
       \def\@tempa{5}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr1000mm+3mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr1000mm+3mm\relax%
       \def\@tempa{6}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr1414mm+3mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr1414mm+3mm\relax%
       \def\@tempa{7}%
     \else%
       \def\@tempa{8}%
@@ -390,20 +369,20 @@
         calculate a proper type area%
       }%
     \fi%
-    \tud at divide\@tempa{\tud at len@layoutheight}{148mm}%
-    \setlength\tud at len@widemargin{15mm}%
-    \setlength\tud at len@widemargin{\@tempa\tud at len@widemargin}%
-    \setlength\tud at len@heavyline{0.5pt}%
-    \setlength\tud at len@heavyline{\@tempa\tud at len@heavyline}%
-    \setlength\tud at len@thinline{0.25pt}%
-    \setlength\tud at len@thinline{\@tempa\tud at len@thinline}%
-    \setlength\@tempdima{4.5pt}%
-    \setlength\@tempdima{\@tempa\@tempdima}%
+    \tud at divide\@tempa{\tud at dim@layoutheight}{148mm}%
+    \tud at setdim\tud at dim@widemargin{15mm}%
+    \tud at setdim\tud at dim@widemargin{\@tempa\tud at dim@widemargin}%
+    \tud at setdim\tud at dim@heavyline{0.5pt}%
+    \tud at setdim\tud at dim@heavyline{\@tempa\tud at dim@heavyline}%
+    \tud at setdim\tud at dim@thinline{0.25pt}%
+    \tud at setdim\tud at dim@thinline{\@tempa\tud at dim@thinline}%
+    \tud at setdim\@tempdima{4.5pt}%
+    \tud at setdim\@tempdima{\@tempa\@tempdima}%
     \edef\tud at head@fontsize{\strip at pt\@tempdima}%
   \or% <=A6/B6
-    \setlength\tud at len@widemargin{15mm}%
-    \setlength\tud at len@heavyline{0.5pt}%
-    \setlength\tud at len@thinline{0.25pt}%
+    \tud at setdim\tud at dim@widemargin{15mm}%
+    \tud at setdim\tud at dim@heavyline{0.5pt}%
+    \tud at setdim\tud at dim@thinline{0.25pt}%
     \renewcommand*\tud at head@fontsize{4.5}%
 %    \end{macrocode}
 % Für Formate der Klasse~5 gibt es zwei Varianten. Entweder, es wird sich an 
@@ -415,40 +394,40 @@
   \or% <=A5/B5
     \ifnum\tud at cdgeometry@calc at num=\z@\relax% restricted
       \@tud at cdgeometry@adjusttrue%
-      \setlength\tud at len@widemargin{30mm}%
-      \setlength\tud at len@heavyline{1pt}%
-      \setlength\tud at len@thinline{0.5pt}%
+      \tud at setdim\tud at dim@widemargin{30mm}%
+      \tud at setdim\tud at dim@heavyline{1pt}%
+      \tud at setdim\tud at dim@thinline{0.5pt}%
       \renewcommand*\tud at head@fontsize{9}%
     \else%
-      \setlength\tud at len@widemargin{21.213203mm}%
-      \setlength\tud at len@heavyline{0.707107pt}%
-      \setlength\tud at len@thinline{0.353553pt}%
+      \tud at setdim\tud at dim@widemargin{21.213203mm}%
+      \tud at setdim\tud at dim@heavyline{0.707107pt}%
+      \tud at setdim\tud at dim@thinline{0.353553pt}%
       \renewcommand*\tud at head@fontsize{6.363961}%
     \fi%
   \or% <=A4/B4
-    \setlength\tud at len@widemargin{30mm}%
-    \setlength\tud at len@heavyline{1pt}%
-    \setlength\tud at len@thinline{0.5pt}%
+    \tud at setdim\tud at dim@widemargin{30mm}%
+    \tud at setdim\tud at dim@heavyline{1pt}%
+    \tud at setdim\tud at dim@thinline{0.5pt}%
     \renewcommand*\tud at head@fontsize{9}%
   \or% <=A3/B3
-    \setlength\tud at len@widemargin{42.426407mm}%
-    \setlength\tud at len@heavyline{1.414214pt}%
-    \setlength\tud at len@thinline{0.707107pt}%
+    \tud at setdim\tud at dim@widemargin{42.426407mm}%
+    \tud at setdim\tud at dim@heavyline{1.414214pt}%
+    \tud at setdim\tud at dim@thinline{0.707107pt}%
     \renewcommand*\tud at head@fontsize{12.727922}%
   \or% <=A2/B2
-    \setlength\tud at len@widemargin{60mm}%
-    \setlength\tud at len@heavyline{2pt}%
-    \setlength\tud at len@thinline{1pt}%
+    \tud at setdim\tud at dim@widemargin{60mm}%
+    \tud at setdim\tud at dim@heavyline{2pt}%
+    \tud at setdim\tud at dim@thinline{1pt}%
     \renewcommand*\tud at head@fontsize{18}%
   \or% <=A1/B1
-    \setlength\tud at len@widemargin{84.852814mm}%
-    \setlength\tud at len@heavyline{2.828427pt}%
-    \setlength\tud at len@thinline{1.414214pt}%
+    \tud at setdim\tud at dim@widemargin{84.852814mm}%
+    \tud at setdim\tud at dim@heavyline{2.828427pt}%
+    \tud at setdim\tud at dim@thinline{1.414214pt}%
     \renewcommand*\tud at head@fontsize{25.455844}%
   \or% <=A0/B0
-    \setlength\tud at len@widemargin{120mm}%
-    \setlength\tud at len@heavyline{4pt}%
-    \setlength\tud at len@thinline{2pt}%
+    \tud at setdim\tud at dim@widemargin{120mm}%
+    \tud at setdim\tud at dim@heavyline{4pt}%
+    \tud at setdim\tud at dim@thinline{2pt}%
     \renewcommand*\tud at head@fontsize{36}%
   \else% >A0/B0
 %    \end{macrocode}
@@ -464,15 +443,15 @@
         calculate a proper type area%
       }%
     \fi%
-    \tud at divide\@tempa{\tud at len@layoutheight}{1189mm}%
-    \setlength\tud at len@widemargin{120mm}%
-    \setlength\tud at len@widemargin{\@tempa\tud at len@widemargin}%
-    \setlength\tud at len@heavyline{4pt}%
-    \setlength\tud at len@heavyline{\@tempa\tud at len@heavyline}%
-    \setlength\tud at len@thinline{2pt}%
-    \setlength\tud at len@thinline{\@tempa\tud at len@thinline}%
-    \setlength\@tempdima{36pt}%
-    \setlength\@tempdima{\@tempa\@tempdima}%
+    \tud at divide\@tempa{\tud at dim@layoutheight}{1189mm}%
+    \tud at setdim\tud at dim@widemargin{120mm}%
+    \tud at setdim\tud at dim@widemargin{\@tempa\tud at dim@widemargin}%
+    \tud at setdim\tud at dim@heavyline{4pt}%
+    \tud at setdim\tud at dim@heavyline{\@tempa\tud at dim@heavyline}%
+    \tud at setdim\tud at dim@thinline{2pt}%
+    \tud at setdim\tud at dim@thinline{\@tempa\tud at dim@thinline}%
+    \tud at setdim\@tempdima{36pt}%
+    \tud at setdim\@tempdima{\@tempa\@tempdima}%
     \edef\tud at head@fontsize{\strip at pt\@tempdima}%
   \fi%
 %    \end{macrocode}
@@ -480,12 +459,12 @@
 % Format DIN~A4.
 %    \begin{macrocode}
   \ifnum\tud at cdgeometry@calc at num=\tw@\relax%
-    \tud at divide\@tempa{\tud at len@layoutheight}{297mm}%
-    \setlength\tud at len@widemargin{\@tempa\tud at len@widemargin}%
-    \setlength\tud at len@heavyline{\@tempa\tud at len@heavyline}%
-    \setlength\tud at len@thinline{\@tempa\tud at len@thinline}%
-    \setlength\@tempdima{\tud at head@fontsize pt}%
-    \setlength\@tempdima{\@tempa\@tempdima}%
+    \tud at divide\@tempa{\tud at dim@layoutheight}{297mm}%
+    \tud at setdim\tud at dim@widemargin{\@tempa\tud at dim@widemargin}%
+    \tud at setdim\tud at dim@heavyline{\@tempa\tud at dim@heavyline}%
+    \tud at setdim\tud at dim@thinline{\@tempa\tud at dim@thinline}%
+    \tud at setdim\@tempdima{\tud at head@fontsize pt}%
+    \tud at setdim\@tempdima{\@tempa\@tempdima}%
     \edef\tud at head@fontsize{\strip at pt\@tempdima}%
   \fi%
 %    \end{macrocode}
@@ -494,24 +473,22 @@
 % forciert.
 %    \begin{macrocode}
   \global\@tud at head@font at settrue%
-  \setlength\tud at len@slimmargin{\dimexpr2\tud at len@widemargin/3\relax}%
-  \setlength\tud at len@both{\dimexpr5\tud at len@widemargin/3\relax}%
-  \setlength\tud at len@topmargin{\dimexpr7\tud at len@widemargin/6\relax}%
-  \setlength\tud at len@barheight{\dimexpr\tud at len@widemargin/6\relax}%
-  \setlength\tud at len@headsep{\dimexpr2\tud at len@widemargin/5\relax}%
-  \setlength\tud at len@logox{\dimexpr1.1\tud at len@widemargin/3\relax}%
-  \setlength\tud at len@logoy{\dimexpr0.45\tud at len@widemargin\relax}%
-  \setlength\tud at len@logowidth{\dimexpr1.9\tud at len@widemargin\relax}%
-  \setlength\tud at len@footsep{%
-    \dimexpr\tud at len@widemargin-.6\tud at len@topmargin\relax%
-  }%
+  \tud at setdim\tud at dim@slimmargin{\tud at dim@widemargin*2/3}%
+  \tud at setdim\tud at dim@bothmargin{\tud at dim@widemargin*5/3}%
+  \tud at setdim\tud at dim@topmargin{\tud at dim@widemargin*7/6}%
+  \tud at setdim\tud at dim@barheight{\tud at dim@widemargin/6}%
+  \tud at setdim\tud at dim@headsep{\tud at dim@widemargin*2/5}%
+  \tud at setdim\tud at dim@logox{\tud at dim@widemargin*11/30}%
+  \tud at setdim\tud at dim@logoy{\tud at dim@widemargin*9/20}%
+  \tud at setdim\tud at dim@logowidth{\tud at dim@widemargin*19/10}%
+  \tud at setdim\tud at dim@footsep{\tud at dim@widemargin-\tud at dim@topmargin*3/5}%
 %    \end{macrocode}
 % Wird die Gestaltungshöhe DIN~A5 im Raster verwendet, werden die Abstände 
 % zwischen Kopf- unf Fußzeile angepasst.
 %    \begin{macrocode}
   \if at tud@cdgeometry at adjust%
-    \setlength\tud at len@headsep{\dimexpr.707107\tud at len@headsep\relax}%
-    \setlength\tud at len@footsep{\dimexpr.707107\tud at len@footsep\relax}%
+    \tud at setdim\tud at dim@headsep{.707107\tud at dim@headsep}%
+    \tud at setdim\tud at dim@footsep{.707107\tud at dim@footsep}%
   \fi%
   \tud at cdgeometry@papersize at store%
 }
@@ -520,11 +497,11 @@
 % dem Paket \pkg{geometry} angegeben wurde, entsprechend gesetzt.
 %    \begin{macrocode}
 \newcommand*\tud at cdgeometry@assignlayout{%
-  \ifdim\tud at len@layoutwidth<\p@\relax%
-    \setlength\tud at len@layoutwidth{\paperwidth}%
+  \ifdim\tud at dim@layoutwidth<\p@\relax%
+    \tud at setdim\tud at dim@layoutwidth{\paperwidth}%
   \fi%
-  \ifdim\tud at len@layoutheight<\p@\relax%
-    \setlength\tud at len@layoutheight{\paperheight}%
+  \ifdim\tud at dim@layoutheight<\p@\relax%
+    \tud at setdim\tud at dim@layoutheight{\paperheight}%
   \fi%
 }
 %    \end{macrocode}
@@ -549,8 +526,8 @@
     }%
     \ifx\tud at res@a\tud at cdgeometry@papersize at last\else%
       \appto\tud at res@b{%
-        \setlength\tud at len@layoutwidth{\z@}%
-        \setlength\tud at len@layoutheight{\z@}%
+        \tud at setdim\tud at dim@layoutwidth{\z@}%
+        \tud at setdim\tud at dim@layoutheight{\z@}%
         \tud at x@geometry at fixmargins%
       }%
     \fi%
@@ -557,10 +534,10 @@
   \tud at res@b%
 }
 %    \end{macrocode}
-% \end{length}^^A \tud at len@layoutvoffset
-% \end{length}^^A \tud at len@layouthoffset
-% \end{length}^^A \tud at len@layoutheight
-% \end{length}^^A \tud at len@layoutwidth
+% \end{length}^^A \tud at dim@layoutvoffset
+% \end{length}^^A \tud at dim@layouthoffset
+% \end{length}^^A \tud at dim@layoutheight
+% \end{length}^^A \tud at dim@layoutwidth
 % \end{macro}^^A \tud at cdgeometry@papersize at last
 % \end{macro}^^A \tud at cdgeometry@papersize at store
 % \end{macro}^^A \tud at cdgeometry@resetlayout
@@ -581,7 +558,7 @@
 % Option \opt{cdgeometry} temporär deaktiviert. Dies geschieht, um lediglich 
 % die im Hintergrund verwendeten Makros neu zu setzen.
 %    \begin{macrocode}
-\newif\if at tud@cdgeometry at reset
+\tud at newif\if at tud@cdgeometry at reset
 \newcommand*\tud at cdgeometry@reset[1]{%
   \@tud at cdgeometry@resettrue%
   \TUDoptions{cdgeometry=#1}%
@@ -661,7 +638,7 @@
 % definierte Satzspiegel geladen werden. Falls jedoch eine Neuberechnung 
 % erfolgte, wird auf das Laden verzichtet (\cs{if at tud@cdgeometry at reset}).
 %    \begin{macrocode}
-    \if at atdocument%
+    \tud at if@preamble{}{%
       \if at tud@cdgeometry at reset\else% false
         \ifcase\tud at cdgeometry@num\relax%
           \tud at loadgeometry{current at typearea}%
@@ -672,7 +649,7 @@
         \fi%
         \TUD at SpecialOptionAtDocument{tud at cdgeometry@process}%
       \fi%
-    \fi%
+    }%
   \fi%
 }
 %    \end{macrocode}
@@ -681,7 +658,7 @@
 % \end{macro}^^A \tud at cdgeometry@num
 % \end{option}^^A cdgeometry
 % \begin{option}{extrabottommargin}
-% \begin{macro}{\tud at dim@extrabottommargin}
+% \begin{macro}{\tud at extrabottommargin@dim}
 % Diese Option dient dazu, die Höhe des Fußes anzupassen. Dies ist jedoch nur 
 % möglich, wenn der Satzspiegel des \CDs verwendet wird. Kommt \pkg{typearea} 
 % zum Einsatz, ist die Option wirkungslos. Da für die Länge ggf. auch Werte 
@@ -688,42 +665,43 @@
 % angegeben werden können, die abhängig von der Schriftgröße sind, wird die 
 % Ausführung dieser Option verzögert.
 %    \begin{macrocode}
-\newcommand*\tud at dim@extrabottommargin{\z@}
+\newcommand*\tud at extrabottommargin@dim{0pt}
 \TUD at key{extrabottommargin}{%
-  \TUD at set@dimenkey{extrabottommargin}{\tud at dim@extrabottommargin}{#1}%
+  \TUD at set@dimkey{extrabottommargin}{\tud at extrabottommargin@dim}{#1}%
   \ifx\FamilyKeyState\FamilyKeyStateProcessed%
     \TUD at SpecialOptionAtDocument{tud at cdgeometry@process}%
   \fi%
 }
 %    \end{macrocode}
-% \end{macro}^^A \tud at dim@extrabottommargin
+% \end{macro}^^A \tud at extrabottommargin@dim
 % \begin{option}{bleedmargin}
 % \changes{v2.05}{2016/06/14}{neu}^^A
-% \begin{macro}{\tud at dim@bleedmargin}
+% \begin{macro}{\tud at bleedmargin@dim}
 % \changes{v2.05}{2016/04/03}{neu}^^A
 % Wird entweder das Paket \pkg{crop} oder aber die Option \opt{layout} des 
 % Paketes \pkg{geometry} für Schnittmarken verwendet, werden alle farbigen 
 % Elemente des Layouts dahingehend vergrößert, dass beim Zuschneiden des 
 % Papierbogens \emph{in die Farbe} geschnitten wird. Verantwortlich hierfür ist 
-% das Makro \cs{tud at dim@bleedmargin}, welches natürlich auch vom Anwender mit
+% das Makro \cs{tud at bleedmargin@dim}, welches natürlich auch vom Anwender mit
 % der Option \opt{bleedmargin} beliebig gesetzt werden kann. Als Standardwert 
 % werden 5\% der größten Randbreite gesetzt.
+% \ToDo{^^A%
+%   Was genau ist der Unterschied zwischen cropmargin und bleedmargin? 
+%   Wo kommt der Standardwert her? Sinnvoll für Standardklassen?
+% }[v2.07]^^A
 %    \begin{macrocode}
-\newcommand*\tud at dim@bleedmargin{.2in}
+\newcommand*\tud at bleedmargin@dim{.2in}
 \TUD at key{bleedmargin}{%
-  \TUD at set@dimenkey{bleedmargin}{\tud at dim@bleedmargin}{#1}%
+  \TUD at set@dimkey{bleedmargin}{\tud at bleedmargin@dim}{#1}%
 %    \end{macrocode}
 % Negative Werte sind nicht möglich, diese werden automatisch korrigiert.
 %    \begin{macrocode}
   \ifx\FamilyKeyState\FamilyKeyStateProcessed%
-    \ifdim\dimexpr\tud at dim@bleedmargin\relax<\z@\relax%
-      \def\@tempa-##1\@nil{\def\tud at dim@bleedmargin{##1}}%
-      \@tempa#1\@nil%
-    \fi%
+    \tud at length@setabsolute\tud at bleedmargin@dim%
   \fi%
 }
 %    \end{macrocode}
-% \end{macro}^^A \tud at dim@bleedmargin
+% \end{macro}^^A \tud at bleedmargin@dim
 % \end{option}^^A bleedmargin
 % \end{option}^^A extrabottommargin
 % \begin{option}{twoside}
@@ -733,12 +711,12 @@
 %    \begin{macrocode}
 \DefineFamilyMember{KOMA}
 \DefineFamilyKey{KOMA}{twoside}{%
+  \FamilyKeyStateUnknownValue%
   \TUD at SpecialOptionAtDocument{tud at cdgeometry@process}%
-  \FamilyKeyStateProcessed%
 }
 \DefineFamilyKey{KOMA}{twocolumn}{%
+  \FamilyKeyStateUnknownValue%
   \TUD at SpecialOptionAtDocument{tud at cdgeometry@process}%
-  \FamilyKeyStateProcessed%
 }
 %    \end{macrocode}
 % \end{option}^^A twocolumn
@@ -751,9 +729,9 @@
 %
 % \subsection{Realisierung der Satzspiegeleinstellungen}
 % Das Paket \pkg{geometry} erlaubt eine genaue Vorgabe des Satzspiegels und
-% der Seitenränder, wie es vom \CD der \TnUD verlangt wird.
-% \ToDo{Satzspiegel ohne \pkg{geometry}; besser über \cs{storeareas}?!}[v2.07]%
-% \ToDo{Benutzerschnittstelle äquivalent zu \pkg{geometry}}[v2.07]%
+% der Seitenränder, wie es vom \TUDCD verlangt wird.
+% \ToDo{Satzspiegel ohne \pkg{geometry}; besser über \cs{storeareas}?!}[v2.07]
+% \ToDo{Benutzerschnittstelle äquivalent zu \pkg{geometry}}[v2.07]
 % \begin{macro}{\tud at cdgeometry@process}
 % \changes{v2.05}{2015/11/29}{neu}^^A
 % Mit \cs{tud at cdgeometry@process} bzw. \cs{tud at cdgeometry@@process} erfolgt die
@@ -786,11 +764,11 @@
 % sämtliche Einstellungen für den Satzspiegel unterdrückt.
 %    \begin{macrocode}
 \if at tud@x at standalone@crop
-  \PreventPackageFromLoading{geometry}%
-  \let\tud at cdgeometry@process\relax%
+  \PreventPackageFromLoading{geometry}
+  \let\tud at cdgeometry@process\relax
 \else
-  \RequirePackage{geometry}[2010/09/12]%
-\fi%
+  \RequirePackage{geometry}
+\fi
 \AfterPackage*{geometry}{%
   \CheckCommand*\Gm at initnewgm{%
     \Gm at passfalse
@@ -947,7 +925,7 @@
 % und \cs{newgeometry} angepasst, weshalb diese vorher gesichert werden.
 % \ToDo{erweiterte Möglichkeiten von \cs{newgeometry} dokumentieren}[v2.07]
 %    \begin{macrocode}
-  \newif\if at tud@x at geometry@enabled%
+  \tud at newif\if at tud@x at geometry@enabled%
   \@tud at x@geometry at enabledtrue%
   \tud at cs@store{geometry}%
   \tud at cs@store{newgeometry}%
@@ -967,7 +945,7 @@
 %    \begin{macrocode}
   \renewcommand*\restoregeometry[1][custom]{%
     \tud at cdgeometry@reset{#1}%
-    \if at atdocument%
+    \tud at if@preamble{}{%
       \ifcase\tud at cdgeometry@num\relax% false
         \tud at loadgeometry{init at typearea}%
         \@tud at x@geometry at fixmarginstrue%
@@ -976,7 +954,7 @@
         \@tud at x@geometry at fixmarginstrue%
       \fi%
       \tud at cdgeometry@process%
-    \fi%
+    }%
   }%
 %    \end{macrocode}
 % Sollte im Dokument durch den Anwender der Satzspiegel manuell geändert 
@@ -984,9 +962,9 @@
 % angepasst werden. Hierfür wird am Ende von \cs{Gm at changelayout} ein Patch 
 % eingehängt.
 %    \begin{macrocode}
-  \apptocmd{\Gm at changelayout}{%
+  \apptocmd\Gm at changelayout{%
     \if at tud@x at geometry@enabled%
-      \if at atdocument%
+      \tud at if@preamble{}{%
         \@tud at x@geometry at fixmarginstrue%
         \ifcase\tud at cdgeometry@num\relax% false
           \tud at cdgeometry@reset{typearea}%
@@ -994,7 +972,7 @@
           \tud at cdgeometry@reset{custom}%
         \fi%
         \tud at cdgeometry@process%
-      \fi%
+      }%
     \fi%
   }{}{\tud at patch@wrn{Gm at changelayout}}%
 %    \end{macrocode}
@@ -1005,12 +983,12 @@
 % mehrmals wiederverwendet werden, müssen diese u.U. korrigert bzw. auf ihren 
 % ursprünglichen Wert zurückgesetzt werden.
 %    \begin{macrocode}
-  \newif\if at tud@x at geometry@fixmargins%
+  \tud at newif\if at tud@x at geometry@fixmargins%
   \newcommand*\tud at x@geometry at fixmargins{%
     \ifGm at pass\else%
-      \addtolength\oddsidemargin{-\tud at len@layouthoffset}%
-      \addtolength\evensidemargin{-\tud at len@layouthoffset}%
-      \addtolength\topmargin{-\tud at len@layoutvoffset}%
+      \tud at addtodim\oddsidemargin{-\tud at dim@layouthoffset}%
+      \tud at addtodim\evensidemargin{-\tud at dim@layouthoffset}%
+      \tud at addtodim\topmargin{-\tud at dim@layoutvoffset}%
       \@tud at x@geometry at fixmarginsfalse%
     \fi%
   }%
@@ -1072,16 +1050,19 @@
         \tud at cdgeometry@assignlayout%
         \edef\tud at res@a{%
           \endgroup%
-            \noexpand\setlength\noexpand\tud at len@layoutwidth{\the\paperwidth}%
-            \noexpand\setlength\noexpand\tud at len@layoutheight{\the\paperheight}%
+            \unexpanded{\tud at setdim\tud at dim@layoutwidth}{\the\paperwidth}%
+            \unexpanded{\tud at setdim\tud at dim@layoutheight}{\the\paperheight}%
         }%
       \tud at res@a%
     \fi%
-    \ifstr{#2}{newgeometry}{%
-      \eappto\Gm at restore@org{%
+    \tud at if@strequal{#2}{newgeometry}{%
+      \edef\@tempb{%
         \noexpand\paperwidth=\the\paperwidth\relax%
         \noexpand\paperheight=\the\paperheight\relax%
       }%
+      \expandafter\apptocmd\expandafter\Gm at restore@org\expandafter{%
+        \@tempb%
+      }{}{\tud at patch@wrn{Gm at restore@org}}%
 %    \end{macrocode}
 % Wird der Befehl verwendet, wenn eigentlich \pkg{typearea} aktiv ist, so 
 % werden lediglich die Einstellungen zu \prm{paper} und \prm{layout} beachtet. 
@@ -1115,7 +1096,7 @@
 % Das folgende Konstrukt ist aus der Idee entstanden, die Parameter \val{paper} 
 % sowie \val{layout} des Paketes \pkg{geometry} auf die passenden Optionen von 
 % \KOMAScript{} abbilden zu können und insbesondere Schnittmarken für alle 
-% Seitenstile bereitzustellen.%
+% Seitenstile bereitzustellen.
 % \ToDo{%
 %   Leider ist aus der dem Versuch, eine halbwegs einheitliche Schnittstelle 
 %   zwischen den Paketen \pkg{typearea} und \pkg{geometry} zu schaffen, ein
@@ -1144,11 +1125,11 @@
       \tud at x@geometry at area@def{paper}{\paperwidth:#1}%
     }%
     \TUD at parameter@def{layout}{%
-      \ifstr{#1}{false}{%
-        \setlength\tud at len@layoutwidth{\z@}%
-        \setlength\tud at len@layoutheight{\z@}%
-        \setlength\tud at len@layouthoffset{\z@}%
-        \setlength\tud at len@layoutvoffset{\z@}%
+      \tud at if@strequal{#1}{false}{%
+        \tud at setdim\tud at dim@layoutwidth{\z@}%
+        \tud at setdim\tud at dim@layoutheight{\z@}%
+        \tud at setdim\tud at dim@layouthoffset{\z@}%
+        \tud at setdim\tud at dim@layoutvoffset{\z@}%
       }{%
         \tud at x@geometry at area@def{layout}{#1}%
       }%
@@ -1165,25 +1146,25 @@
       \@tempa#1,,\@nil%
     }%
     \TUD at parameter@def{layoutwidth}{%
-      \tud at x@geometry at area@def{layout}{#1:\tud at len@layoutheight}%
+      \tud at x@geometry at area@def{layout}{#1:\tud at dim@layoutheight}%
     }%
     \TUD at parameter@def{layoutheight}{%
-      \tud at x@geometry at area@def{layout}{\tud at len@layoutwidth:#1}%
+      \tud at x@geometry at area@def{layout}{\tud at dim@layoutwidth:#1}%
     }%
     \TUD at parameter@def{layoutoffset}{%
       \def\@tempa##1,##2,##3\@nil{%
         \IfArgIsEmpty{##2}{%
-          \setlength\tud at len@layouthoffset{##1}%
-          \setlength\tud at len@layoutvoffset{##1}%
+          \tud at setdim\tud at dim@layouthoffset{##1}%
+          \tud at setdim\tud at dim@layoutvoffset{##1}%
         }{%
-          \setlength\tud at len@layouthoffset{##1}%
-          \setlength\tud at len@layoutvoffset{##2}%
+          \tud at setdim\tud at dim@layouthoffset{##1}%
+          \tud at setdim\tud at dim@layoutvoffset{##2}%
         }%
       }%
       \@tempa#1,,\@nil%
     }%
-    \TUD at parameter@def{layouthoffset}{\setlength\tud at len@layouthoffset{#1}}%
-    \TUD at parameter@def{layoutvoffset}{\setlength\tud at len@layoutvoffset{#1}}%
+    \TUD at parameter@def{layouthoffset}{\tud at setdim\tud at dim@layouthoffset{#1}}%
+    \TUD at parameter@def{layoutvoffset}{\tud at setdim\tud at dim@layoutvoffset{#1}}%
     \TUD at parameter@def{bleedmargin}{\TUDoption{bleedmargin}{#1}}%
     \TUD at parameter@handler at macro{%
       \eappto\tud at x@geometry at parameter{%
@@ -1198,24 +1179,28 @@
 % Werte für \val{paper} und \val{layout} werden abgefangen und für die beiden 
 % Befehle \cs{geometry} und \cs{newgeometry} aufgearbeitet. Alle anderen werden 
 % einfach an \pkg{geometry} durchgereicht. Dies geschieht über die jeweiligen
-% Hilfsmakros \cs{tud at x@geometry@\dots} für \val{paper}, \val{layout} sowie
+% Hilfsmakros |\tud at x@geometry at ...| für \val{paper}, \val{layout} sowie
 % \val{parameter} für alles Übrige.
 %    \begin{macrocode}
   \newcommand*\tud at x@geometry at area@def[2]{%
-    \tud at lowerstring{\@tempa}{#2}%
+    \tud at strlowercase\@tempa{#2}%
     \def\@tempb##1paper##2\@nil{%
-      \ifstr{##2}{paper}{\def\@tempa{##1}}{}%
+      \tud at if@strequal{##2}{paper}{\def\@tempa{##1}}{}%
     }%
     \expandafter\@tempb\@tempa paper\@nil%
     \@tempswafalse%
-    \ifstr{\@tempa}{seascape}{\@tempswatrue}{}%
-    \ifstr{\@tempa}{landscape}{\@tempswatrue}{}%
-    \ifstr{\@tempa}{portrait}{\@tempswatrue}{}%
-    \ifstr{\@tempa}{letter}{\@tempswatrue}{}%
-    \ifstr{\@tempa}{executive}{\@tempswatrue}{}%
-    \ifstr{\@tempa}{legal}{\@tempswatrue}{}%
+    \TUD at set@numkey{paper}{@tempc}{%
+      {seascape}{0},{landscape}{0},{portrait}{0},%
+      {letter}{0},{executive}{0},{legal}{0}%
+    }{\@tempa}%
+    \@tempswafalse%
+    \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+      \ifcase\@tempc\relax%
+        \@tempswatrue%
+      \fi%
+    \fi%
     \if at tempswa\else%
-      \ifx\@tempa\@empty\relax\else%
+      \ifx\@tempa\@empty\else%
         \def\@tempb##1##2\@nil{%
           \if ##1a\@tempswatrue%
             \else\if ##1b\@tempswatrue%
@@ -1224,7 +1209,7 @@
           \fi\fi\fi\fi%
           \if at tempswa%
             \@tempswafalse%
-            \IfArgIsEmpty{##2}{}{\ifnumber{##2}{\@tempswatrue}{}}%
+            \IfArgIsEmpty{##2}{}{\Ifnumber{##2}{\@tempswatrue}{}}%
           \fi%
         }%
         \expandafter\@tempb\@tempa\@nil%
@@ -1240,7 +1225,7 @@
         \if at tempswa\else%
           \def\tud at reserved##1:##2:##3:##4\@nil{%
             \if at tempswa\else%
-              \ifstr{\@tempa}{##1}{%
+              \tud at if@strequal{\@tempa}{##1}{%
                 \@tempswatrue%
                 \def\@tempa{##2##4:##3##4}%
               }{}%
@@ -1287,7 +1272,7 @@
 % \emph{Dies geschieht hier direkt und nicht in einer Gruppe,} weil der Aufruf 
 % von \cs{tud at x@geometry at area@set}|{layout}| lokal erfolgt.
 %    \begin{macrocode}
-          \ifstr{#1}{layout}{\let\scr at setpaperorientation\relax}{}%
+          \tud at if@strequal{#1}{layout}{\let\scr at setpaperorientation\relax}{}%
           \KOMAoption{paper}{##1:##2}%
         }%
       }%
@@ -1334,16 +1319,16 @@
 %    \begin{macrocode}
         \tud at cdgeometry@assignlayout%
         \@tud at res@swafalse%
-        \ifdim\tud at len@layoutwidth=\paperwidth\relax\else\@tud at res@swatrue\fi%
-        \ifdim\tud at len@layoutheight=\paperheight\relax\else\@tud at res@swatrue\fi%
+        \ifdim\tud at dim@layoutwidth=\paperwidth\relax\else\@tud at res@swatrue\fi%
+        \ifdim\tud at dim@layoutheight=\paperheight\relax\else\@tud at res@swatrue\fi%
         \edef\tud at res@a{%
           \endgroup%
-          \etex at unexpanded{\def#1}{%
+          \unexpanded{\def#1}{%
             layoutoffset={%
-              \the\tud at len@layouthoffset,\the\tud at len@layoutvoffset%
+              \the\tud at dim@layouthoffset,\the\tud at dim@layoutvoffset%
             }%
             \if at tud@res at swa%
-              ,layoutsize={\the\tud at len@layoutwidth,\the\tud at len@layoutheight}%
+              ,layoutsize={\the\tud at dim@layoutwidth,\the\tud at dim@layoutheight}%
             \fi%
           }%
         }%
@@ -1367,33 +1352,34 @@
 %    \begin{macrocode}
   \newcommand*\tud at x@geometry at set[1]{%
     \@tud at x@geometry at enabledfalse%
+    \tud at if@preamble{%
 %    \end{macrocode}
+% In der Präambel werden mit \cs{Gm at initnewgm} vor jedem Satzspiegel die zuvor
+% gemachten Einstellungen zurückgesetzt.
+%    \begin{macrocode}
+      \Gm at initnewgm%
+      \edef\@tempa{papersize={\the\paperwidth,\the\paperheight},#1}%
+      \def\@tempc{\tud at cs@use{geometry}}%
+      \expandafter\@tempc\expandafter{\@tempa,driver=none}%
+    }{%
+%    \end{macrocode}
 % Um etwaige Änderungen am Papierformat innerhalb des Dokumentes beachten zu 
 % können, werden die aktuellen Maße für das Papierformat an \cs{Gm at restore@org} 
 % angehangen.
 %    \begin{macrocode}
-    \if at atdocument%
       \edef\@tempa{#1}%
       \tud at cs@store{Gm at restore@org}%
-      \eappto\Gm at restore@org{%
+      \edef\@tempb{%
         \noexpand\paperwidth=\the\paperwidth\relax%
         \noexpand\paperheight=\the\paperheight\relax%
       }%
+      \expandafter\apptocmd\expandafter\Gm at restore@org\expandafter{%
+        \@tempb%
+      }{}{\tud at patch@wrn{Gm at restore@org}}%
       \def\@tempc{\tud at cs@use{newgeometry}}%
       \expandafter\@tempc\expandafter{\@tempa}%
       \tud at cs@restore{Gm at restore@org}%
-    \else%
-%    \end{macrocode}
-% Zu Beginn des Dokumentes werden mit \cs{Gm at initnewgm} vor jedem Satzspiegel
-% die zuvor gemachten Einstellungen zurückgesetzt.
-%    \begin{macrocode}
-      \Gm at initnewgm%
-      \edef\@tempa{%
-        paperwidth=\the\paperwidth,paperheight=\the\paperheight,#1%
-      }%
-      \def\@tempc{\tud at cs@use{geometry}}%
-      \expandafter\@tempc\expandafter{\@tempa,driver=none}%
-    \fi%
+    }%
     \@tud at x@geometry at enabledtrue%
   }%
 %    \end{macrocode}
@@ -1505,7 +1491,7 @@
 %    \begin{macrocode}
       \ifcase\tud at cdgeometry@num\relax%
         \edef\tud at cdgeometry@hmargin{%
-          left=\the\dimexpr\oddsidemargin+1in-\ta at bcor\relax,%
+          left=\the\dimexpr\glueexpr\oddsidemargin+1in-\ta at bcor\relax\relax,%
           textwidth=\the\textwidth,%
           \tud at cdgeometry@mpincl,%
           marginparwidth=\the\marginparwidth,%
@@ -1523,8 +1509,7 @@
             top=\the\dimexpr\topmargin+1in\relax,%
           \else%
             includehead=false,%
-            top=\the\dimexpr\topmargin%
-              +\headheight+\headsep+1in\relax,%
+            top=\the\dimexpr\topmargin+\headheight+\headsep+1in\relax,%
           \fi%
           headheight=\the\headheight,%
           headsep=\the\headsep,%
@@ -1534,11 +1519,13 @@
         }%
 %    \end{macrocode}
 % Und nun für den benutzerdefinierten Satzspiegel.
+% \ToDo{Angabe von BCOR zerschießt den gewünschten Satzspiegel}[v2.07]
 %    \begin{macrocode}
       \else% custom
         \ifGm at pass\else%
           \edef\tud at cdgeometry@hmargin{%
-            left=\the\dimexpr\oddsidemargin+1in-\Gm at bindingoffset\relax,%
+            left=\the\dimexpr\glueexpr\oddsidemargin+1in%
+              -\Gm at bindingoffset\relax\relax,%
             textwidth=\the\textwidth,%
             \ifGm at includemp%
               includemp=true,%
@@ -1560,8 +1547,7 @@
               top=\the\dimexpr\topmargin+1in\relax,%
             \else%
               includehead=false,%
-              top=\the\dimexpr\topmargin%
-                +\headheight+\headsep+1in\relax,%
+              top=\the\dimexpr\topmargin+\headheight+\headsep+1in\relax,%
             \fi%
             headheight=\the\headheight,%
             headsep=\the\headsep,%
@@ -1576,6 +1562,15 @@
         \fi%
       \fi%
 %    \end{macrocode}
+% Die Einstellungen für zweiseitigen respektive zweispaltigen Satz.
+%    \begin{macrocode}
+      \if at twoside%
+        \appto\tud at cdgeometry@hmargin{,twoside}%
+      \fi%
+      \if at twocolumn%
+        \appto\tud at cdgeometry@hmargin{,twocolumn}%
+      \fi%
+%    \end{macrocode}
 % Es wird die Höhendifferenz zwischen TUD-Kopf und Standardkopfzeile für den
 % benutzerdefnierten bzw. \pkg{typearea}-Satzspiegel berechnet. Für den 
 % Satzspiegel mit TUD-Kopf muss unterschieden werden, ob der Abstand zwischen
@@ -1584,23 +1579,23 @@
 % benutzerdefinierten bzw. \pkg{typearea}-Satzspiegel noch unterhalb des
 % TUD-Kopfes liegen, wird der Abstand zum Kopf vergrößert.
 %    \begin{macrocode}
-      \setlength\tud at len@areadiff{%
-        \dimexpr\tud at len@topmargin+\tud at len@barheight+\tud at len@headsep%
-          -\topmargin-\headheight-\headsep-1in\relax%
+      \tud at setdim\tud at dim@areadiff{%
+        \tud at dim@topmargin+\tud at dim@barheight+\tud at dim@headsep%
+          -\topmargin-\headheight-\headsep-1in%
       }%
-      \ifdim\tud at len@areadiff<\z@\relax%
-        \addtolength\tud at len@headsep{-\tud at len@areadiff}%
-        \setlength\@tempdima{\z@}%
+      \ifdim\tud at dim@areadiff<\z@\relax%
+        \tud at addtodim\tud at dim@headsep{-\tud at dim@areadiff}%
+        \tud at setdim\@tempdima{\z@}%
       \else%
-        \setlength\@tempdima{\tud at len@areadiff}%
+        \tud at setdim\@tempdima{\tud at dim@areadiff}%
       \fi%
       \edef\tud at cdgeometry@tudmargin{%
         ignorehead=true,%
-        top=\the\dimexpr\tud at len@topmargin+\tud at len@barheight%
-          +\tud at len@headsep\relax,%
-        headheight=\the\dimexpr\tud at len@topmargin+\tud at len@barheight%
-          -\tud at len@logoy\relax,%
-        headsep=\the\tud at len@headsep,%
+        top=\the\dimexpr\tud at dim@topmargin+\tud at dim@barheight%
+          +\tud at dim@headsep\relax,%
+        headheight=\the\dimexpr\tud at dim@topmargin+\tud at dim@barheight%
+          -\tud at dim@logoy\relax,%
+        headsep=\the\tud at dim@headsep,%
         textheight=\the\dimexpr\textheight-\@tempdima\relax%
       }%
 %    \end{macrocode}
@@ -1608,14 +1603,14 @@
 % separaten Satzspiegel.
 %    \begin{macrocode}
       \tud at if@v at lower{2.03}{%
-        \setlength\tud at len@ddcdiff{%
-          \dimexpr.6\tud at len@topmargin-\footskip+\tud at len@headsep%
-            +\footheight-1.25\baselineskip\relax%
+        \tud at setdim\tud at dim@ddcdiff{%
+          \tud at dim@topmargin*3/5-\footskip+\tud at dim@headsep%
+            +\footheight-1\baselineskip*5/4%
         }%
         \edef\tud at cdgeometry@ddcmargin{%
-          textheight=\the\dimexpr\textheight-\tud at len@areadiff%
-            -\tud at len@ddcdiff\relax,%
-          footskip=\the\dimexpr\footskip+\tud at len@ddcdiff\relax%
+          textheight=\the\dimexpr\textheight-\tud at dim@areadiff%
+            -\tud at dim@ddcdiff\relax,%
+          footskip=\the\dimexpr\footskip+\tud at dim@ddcdiff\relax%
         }%
       }{}%
 %    \end{macrocode}
@@ -1623,7 +1618,7 @@
 % Warnung ausgegeben, dass diese für den \pkg{typearea}-Satzspiegel wirkungslos
 % ist.
 %    \begin{macrocode}
-      \ifdim\dimexpr\tud at dim@extrabottommargin\relax=\z@\relax\else%
+      \ifdim\dimexpr\tud at extrabottommargin@dim\relax=\z@\relax\else%
         \begingroup%
           \edef\tud at res@a{%
             The key `extrabottommargin' is ineffective\MessageBreak%
@@ -1650,13 +1645,13 @@
 % Seitenrand (\cs{@tempdima}), die Textbreite (\cs{@tempdimb}) sowie die Breite 
 % der Randnotizen (\cs{@tempdimc}). Danach kommt der Gleichanteil.
 %    \begin{macrocode}
-    \else%  true/symmetric/twoside
-      \ifcase\tud at cdgeometry@num\relax\or\or%  true
-        \setlength\@tempdima{\tud at len@widemargin}%
+    \else% true/symmetric/twoside
+      \ifcase\tud at cdgeometry@num\relax\or\or% true
+        \tud at setdim\@tempdima{\tud at dim@widemargin}%
         \if at reversemargin%
-          \setlength\@tempdimc{\tud at len@widemargin}%
+          \tud at setdim\@tempdimc{\tud at dim@widemargin}%
         \else%
-          \setlength\@tempdimc{\tud at len@slimmargin}%
+          \tud at setdim\@tempdimc{\tud at dim@slimmargin}%
         \fi%
 %    \end{macrocode}
 % Die zweite Variante ist eigentlich nicht konform mit dem \CD. Sie ist sowohl
@@ -1663,8 +1658,8 @@
 % im einseitigen als auch im zweiseitgigen Satz symmetrisch.
 %    \begin{macrocode}
       \or% symmetric
-        \setlength\@tempdima{.5\tud at len@both}%
-        \setlength\@tempdimc{.5\tud at len@both}%
+        \tud at setdim\@tempdima{\tud at dim@bothmargin/2}%
+        \tud at setdim\@tempdimc{\tud at dim@bothmargin/2}%
 %    \end{macrocode}
 % Eigentlich ist auch die dritte Variante nach dem \CD nicht zulässig. Sie ist
 % im einseitigen Satz symmetrisch, im zweiseitgigen Satz wird die innere Seite
@@ -1673,16 +1668,16 @@
 %    \begin{macrocode}
       \or% twoside
         \if at twoside%
-          \setlength\@tempdima{.4\tud at len@both}%
+          \tud at setdim\@tempdima{\tud at dim@bothmargin*2/5}%
         \else%
-          \setlength\@tempdima{.5\tud at len@both}%
+          \tud at setdim\@tempdima{\tud at dim@bothmargin/2}%
         \fi%
-        \setlength\@tempdimc{.5\tud at len@both}%
+        \tud at setdim\@tempdimc{\tud at dim@bothmargin/2}%
         \if at twoside%
           \if at reversemargin%
-            \setlength\@tempdimc{.4\tud at len@both}%
+            \tud at setdim\@tempdimc{\tud at dim@bothmargin*2/5}%
           \else%
-            \setlength\@tempdimc{.6\tud at len@both}%
+            \tud at setdim\@tempdimc{\tud at dim@bothmargin*3/5}%
           \fi%
         \fi%
       \fi%
@@ -1690,12 +1685,10 @@
 % Die \emph{Berechnung} der Textbreite ist für alle Varainten identisch. Danach 
 % erfolgt die Zuweisung zum Makro.
 %    \begin{macrocode}
-      \addtolength\@tempdimc{-\headsep}%
-      \setlength\@tempdimb{%
-        \dimexpr\tud at len@layoutwidth-\tud at len@both-\ta at bcor\relax%
-      }%
+      \tud at addtodim\@tempdimc{-\headsep}%
+      \tud at setdim\@tempdimb{\tud at dim@layoutwidth-\tud at dim@bothmargin-\ta at bcor}%
       \if at mincl%
-        \addtolength\@tempdimb{-\@tempdimc}%
+        \tud at addtodim\@tempdimb{-\@tempdimc}%
       \fi%
       \edef\tud at cdgeometry@hmargin{%
         left=\the\@tempdima,%
@@ -1702,7 +1695,7 @@
         textwidth=\the\@tempdimb,%
         \tud at cdgeometry@mpincl,%
         marginparwidth=\the\@tempdimc,%
-        marginparsep=\the\dimexpr.5\headsep\relax,%
+        marginparsep=\the\dimexpr\headsep/2\relax,%
         \if at reversemargin%
           reversemarginpar=true,%
         \else%
@@ -1727,66 +1720,67 @@
       \tud at if@v at lower{2.03}{%
         \edef\tud at cdgeometry@vmargin{%
           \tud at cdgeometry@hincl,%
-          top=\the\dimexpr.5\tud at len@both\relax,%
+          top=\the\dimexpr\tud at dim@bothmargin/2\relax,%
           headheight=\the\headheight,%
-          headsep=\the\tud at len@headsep,%
-          bottom=\the\dimexpr.5\tud at len@both+\tud at dim@extrabottommargin\relax,%
+          headsep=\the\tud at dim@headsep,%
+          bottom=\the\dimexpr\glueexpr\tud at dim@bothmargin/2%
+            +\tud at extrabottommargin@dim\relax\relax,%
           \tud at cdgeometry@fincl,%
-          footskip=\the\dimexpr\tud at len@headsep+\footheight%
-            -1.25\baselineskip\relax%
+          footskip=\the\dimexpr\tud at dim@headsep+\footheight%
+            -1\baselineskip*5/4\relax%
         }%
       }{%
         \edef\tud at cdgeometry@vmargin{%
           \tud at cdgeometry@hincl,%
-          top=\the\tud at len@slimmargin,%
+          top=\the\tud at dim@slimmargin,%
           headheight=\the\headheight,%
           headsep=\the\headsep,%
-          bottom=\the\dimexpr\tud at len@widemargin%
-            +\tud at dim@extrabottommargin\relax,%
+          bottom=\the\dimexpr\glueexpr\tud at dim@widemargin%
+            +\tud at extrabottommargin@dim\relax\relax,%
           \tud at cdgeometry@fincl,%
-          footskip=\the\dimexpr\tud at len@footsep+\footheight\relax%
+          footskip=\the\dimexpr\tud at dim@footsep+\footheight\relax%
         }%
       }%
       \edef\tud at cdgeometry@tudmargin{%
         ignorehead=true,%
-        top=\the\dimexpr\tud at len@topmargin+\tud at len@barheight%
-          +\tud at len@headsep\relax,%
-        headheight=\the\dimexpr\tud at len@topmargin+\tud at len@barheight%
-          -\tud at len@logoy\relax,%
-        headsep=\the\tud at len@headsep%
+        top=\the\dimexpr\tud at dim@topmargin+\tud at dim@barheight%
+          +\tud at dim@headsep\relax,%
+        headheight=\the\dimexpr\tud at dim@topmargin+\tud at dim@barheight%
+          -\tud at dim@logoy\relax,%
+        headsep=\the\tud at dim@headsep%
       }%
 %    \end{macrocode}
 % Es wird die Differenz der Höhen zwischen TUD-Kopf und Standardkopfzeile
 % für den Satzspiegel des \CDs berechnet.
 %    \begin{macrocode}
-      \setlength\tud at len@areadiff{%
-        \dimexpr\tud at len@topmargin+\tud at len@barheight+\tud at len@headsep%
-          -\tud at len@slimmargin\relax%
+      \tud at setdim\tud at dim@areadiff{%
+        \tud at dim@topmargin+\tud at dim@barheight+\tud at dim@headsep%
+          -\tud at dim@slimmargin%
       }%
 %    \end{macrocode}
 % Für die Kompatibilitätsvariante wieder mal die Extrawurst.
 %    \begin{macrocode}
       \tud at if@v at lower{2.03}{%
-        \setlength\tud at len@areadiff{%
-          \dimexpr\tud at len@topmargin+\tud at len@barheight+\tud at len@headsep%
-            -.5\tud at len@both\relax%
+        \tud at setdim\tud at dim@areadiff{%
+          \tud at dim@topmargin+\tud at dim@barheight+\tud at dim@headsep%
+            -\tud at dim@bothmargin/2%
         }%
 %    \end{macrocode}
 % Wird die Fußzeile zum Satzspiegel gerechnet, ist für Seiten mit \DDC-Fuß 
 % etwas Handarbeit notwendig, damit dieser nicht allzu weit nach oben ragt.
 %    \begin{macrocode}
-        \setlength\tud at len@ddcdiff{.6\tud at len@topmargin}%
+        \tud at setdim\tud at dim@ddcdiff{\tud at dim@topmargin*3/5}%
         \edef\tud at cdgeometry@ddcmargin{%
           \if at fincl%
-            bottom=\the\dimexpr.5\tud at len@both+\tud at dim@extrabottommargin%
-              +\tud at len@ddcdiff+\tud at len@headsep+\footheight%
-              -1.25\baselineskip\relax,%
+            bottom=\the\dimexpr\glueexpr\tud at dim@bothmargin/2%
+              +\tud at extrabottommargin@dim+\tud at dim@ddcdiff+\tud at dim@headsep%
+              +\footheight-1\baselineskip*5/4\relax\relax,%
           \else%
-            bottom=\the\dimexpr.5\tud at len@both+\tud at dim@extrabottommargin%
-              +\tud at len@ddcdiff\relax,%
+            bottom=\the\dimexpr\glueexpr\tud at dim@bothmargin/2%
+              +\tud at extrabottommargin@dim+\tud at dim@ddcdiff\relax\relax,%
           \fi%
-          footskip=\the\dimexpr\tud at len@headsep+\footheight%
-            -1.25\baselineskip+\tud at len@ddcdiff\relax,%
+          footskip=\the\dimexpr\tud at dim@headsep+\footheight%
+            -1\baselineskip*5/4+\tud at dim@ddcdiff\relax,%
         }%
       }{}%
     \fi%
@@ -1796,14 +1790,14 @@
 % vertikale Verschiebung der Überschriften festgelegt, wobei hier insbesondere 
 % auf die Gestaltungshöhe DIN~A5 geachtet werden muss.
 %    \begin{macrocode}
-    \ifdim\tud at len@areadiff<\z@\relax\setlength\tud at len@areadiff{\z@}\fi%
-    \global\tud at len@areadiff=\tud at len@areadiff%
+    \ifdim\tud at dim@areadiff<\z@\relax\tud at setdim\tud at dim@areadiff{\z@}\fi%
+    \global\tud at dim@areadiff=\tud at dim@areadiff%
 %<*book|report|article>
-    \setlength\tud at len@areaheadvskip{.22\tud at len@topmargin}%
+    \tud at setdim\tud at dim@areaheadvskip{\tud at dim@topmargin*11/50}%
     \if at tud@cdgeometry at adjust%
-      \setlength\tud at len@areaheadvskip{.5\tud at len@areaheadvskip}%
+      \tud at setdim\tud at dim@areaheadvskip{\tud at dim@areaheadvskip/2}%
     \fi%
-    \global\tud at len@areaheadvskip=\tud at len@areaheadvskip%
+    \global\tud at dim@areaheadvskip=\tud at dim@areaheadvskip%
 %</book|report|article>
 %    \end{macrocode}
 % Für den Satzspiegel der Version~v2.02 wird außerdem die Länge für den höheren 
@@ -1810,8 +1804,8 @@
 % Seitenfuß gesetzt.
 %    \begin{macrocode}
     \tud at if@v at lower{2.03}{%
-      \ifdim\tud at len@ddcdiff<\z@\relax\setlength\tud at len@ddcdiff{\z@}\fi%
-      \global\tud at len@ddcdiff=\tud at len@ddcdiff%
+      \ifdim\tud at dim@ddcdiff<\z@\relax\tud at setdim\tud at dim@ddcdiff{\z@}\fi%
+      \global\tud at dim@ddcdiff=\tud at dim@ddcdiff%
     }{}%
 %    \end{macrocode}
 % Es wird \cs{tud at cdgeometry@@@process} aufgerufen, was die zuvor definierten
@@ -1880,11 +1874,11 @@
 % Falls die (abermalige) Erstellung der Satzspiegel im Dokument erfolgt, sollte 
 % anschließend auch der richtige Satzspiegel wieder ausgewählt werden.
 %    \begin{macrocode}
-    \if at atdocument%
-      \ifstr{\tud at currentgeometry}{stdarea}{}{%
+    \tud at if@preamble{}{%
+      \tud at if@strequal{\tud at currentgeometry}{stdarea}{}{%
         \expandafter\tud at loadgeometry\expandafter{\tud at currentgeometry}%
       }%
-    \fi%
+    }%
   }%
 %    \end{macrocode}
 % \end{macro}^^A \tud at cdgeometry@ddcmargin
@@ -1929,11 +1923,12 @@
 % \end{macro}^^A \tud at cdgeometry@hincl
 % \begin{macro}{\tud at cdgeometry@@init}
 % \changes{v2.04}{2015/03/10}{neu}^^A
-% Damit alle Satzspiegeleinstellungen korrekt vorgenommen und auch alle
-% Klassenoptionen korrekt verarbeitet werden, wird die Berechnung erstmalig mit
-% \cs{AtEndPreamble} am Ende der Präambel ausgeführt. Dabei werden sowohl der
-% benutzerdefinierte Satzspiegel als auch die durch \pkg{typearea} berechneten
-% Einstellungen gesichert.
+% Damit alle Satzspiegeleinstellungen vollständig vorgenommen und auch alle
+% Klassenoptionen korrekt verarbeitet werden, wird die Berechnung erstmalig 
+% am Ende der Präambel mit \cs{AtEndPreamble}|{|\cs{tud at cdgeometry@init}|}| 
+% ausgeführt, nachdem der Ladezustandes des Paketes \pkg{scrlayer-scrpage}
+% geprüft wurde. Dabei werden sowohl der benutzerdefinierte Satzspiegel als
+% auch die durch \pkg{typearea} berechneten Einstellungen gesichert.
 %    \begin{macrocode}
   \newcommand*\tud at cdgeometry@@init{%
     \csuse{@ta at usegeometryfalse}%
@@ -1943,8 +1938,8 @@
 % Bei der Initialisierung der zusätzlichen Satzspiegel soll keine Warnung 
 % bezüglich der Angabe eines vergrößerten Fußbereichs erscheinen.
 %    \begin{macrocode}
-    \tud at cs@store{tud at dim@extrabottommargin}%
-    \def\tud at dim@extrabottommargin{\z@}%
+    \tud at cs@store{tud at extrabottommargin@dim}%
+    \def\tud at extrabottommargin@dim{0pt}%
 %    \end{macrocode}
 % Zunächst werden die benutzerdefinierten Einstellungen für den Satzspiegel 
 % gesichert.
@@ -1952,7 +1947,7 @@
     \tud at cdgeometry@reset{custom}%
     \begingroup%
       \epreto\tud at x@geometry at init{%
-        paperwidth=\the\paperwidth,paperheight=\the\paperheight,%
+        papersize={\the\paperwidth,\the\paperheight},%
         \tud at cdgeometry@layout,%
         \tud at cdgeometry@mpincl,%
         \if at reversemargin%
@@ -1988,19 +1983,19 @@
 % Alle gesammelten Warnungen von \pkg{typearea} werden dem initialisierten
 % Satzspiegel hinzugefügt.
 %    \begin{macrocode}
-    \def\tud at res@b##1{%
-      \eappto\Gm at restore@@init at typearea{%
-        \noexpand\PackageWarningNoLine{typearea}{##1}%
-      }%
+    \def\do##1{%
+      \apptocmd\Gm at restore@@init at typearea{%
+        ##1%
+      }{}{\tud at patch@wrn{Gm at restore@@init at typearea}}%
     }%
-    \forlistloop\tud at res@b{\tud at res@a}%
+    \dolistloop{\tud at res@a}%
 %    \end{macrocode}
 % Hier werden die temporär geäanderten Einstellungen zurückgesetzt.
 %    \begin{macrocode}
     \tud at cs@restore{tud at cdgeometry@num}%
-    \tud at cs@restore{tud at dim@extrabottommargin}%
+    \tud at cs@restore{tud at extrabottommargin@dim}%
 %    \end{macrocode}
-% Der Kopf im \CD der \TnUD erfordert einen eigenen Satzspiegel, der ggf. durch 
+% Der Kopf im \TUDCD erfordert einen eigenen Satzspiegel, der ggf. durch 
 % \cs{tud at BeforeSelectAnyPageStyle} aktiviert bzw. deaktiviert wird.
 %    \begin{macrocode}
     \BeforeSelectAnyPageStyle{\tud at BeforeSelectAnyPageStyle{##1}}%
@@ -2036,7 +2031,7 @@
 % werden zwei~-- für die KOmpatibilitätsvariante drei~-- Layouts erstellt.
 % Diese können mit \cs{loadgeometry}\marg{Stil} geladen werden.
 %    \begin{macrocode}
-  \newcommand*\tud at currentgeometry{}
+  \newcommand*\tud at currentgeometry{}%
   \newcommand*\tud at BeforeSelectAnyPageStyle[1]{%
 %    \end{macrocode}
 % Der \pgs{tudheadings}-Seitenstil wird mit dem Befehl \cs{newpairofpagestyles}
@@ -2044,7 +2039,7 @@
 % auch mit \LaTeX-Standardseitenstilen \pgs{headings} bzw. \pgs{plain} 
 % umgeschaltet werden kann. Dies wird hiermit beachtet.
 %    \begin{macrocode}
-    \ifstr{#1}{\GetRealPageStyle{#1}}{%
+    \tud at if@strequal{#1}{\GetRealPageStyle{#1}}{%
 %    \end{macrocode}
 % Für den Fall, das ein \pgs{tudheadings}-Seitenstil geladen werden soll, muss 
 % der dazugehörige Satzspiegel ausgewählt werden\dots
@@ -2066,7 +2061,7 @@
 % Das \DDC-Logo im Fuß ist nicht aktiviert.
 %    \begin{macrocode}
           \ifcase\@tempb\relax% \tud at ddc@foot at num=false
-            \ifstr{\tud at currentgeometry}{tudarea}{}{%
+            \tud at if@strequal{\tud at currentgeometry}{tudarea}{}{%
               \tud at loadgeometry{tudarea}%
               \gdef\tud at currentgeometry{tudarea}%
             }%
@@ -2074,7 +2069,7 @@
 % Das \DDC-Logo im Fuß ist aktiviert.
 %    \begin{macrocode}
           \else% \tud at ddc@foot at num!=false
-            \ifstr{\tud at currentgeometry}{tudareaddc}{}{%
+            \tud at if@strequal{\tud at currentgeometry}{tudareaddc}{}{%
               \tud at loadgeometry{tudareaddc}%
               \gdef\tud at currentgeometry{tudareaddc}%
             }%
@@ -2083,60 +2078,47 @@
 % Ab der Version~v2.03 ist nur noch ein Satzspiegel vonnöten.
 %    \begin{macrocode}
         }{%
-          \ifstr{\tud at currentgeometry}{tudarea}{}{%
+          \tud at if@strequal{\tud at currentgeometry}{tudarea}{}{%
             \tud at loadgeometry{tudarea}%
             \gdef\tud at currentgeometry{tudarea}%
           }%
         }%
 %    \end{macrocode}
-% Die Länge \cs{tud at len@areavskip} gibt an, wie groß die Differenz zwischen 
+% Die Länge \cs{tud at dim@areavskip} gibt an, wie groß die Differenz zwischen 
 % Kopfhöhe zwischen aktuellem und dem speziellen \pgs{tudheadings}-Seitenstil 
 % ist. Da diese in diesem Fall identisch sind, wird die Länge zu \cs{z@} 
 % gesetzt.
 %    \begin{macrocode}
-        \setlength\tud at len@areavskip{\z@}%
+        \tud at setdim\tud at dim@areavskip{\z@}%
 %    \end{macrocode}
-% Im Seitenfuß wird für die Seitenzahl und ggf. die Kolumnentitel die passende 
-% Schrift verwendet.
-%    \begin{macrocode}
-        \tud at komafont@set{pagenumber}{\usekomafont{tudheadings}}%
-        \tud at komafont@set{pagefoot}{\usekomafont{tudheadings}}%
-%    \end{macrocode}
-% Dies ist der Fall, wenn kein \pgs{tudheadings}-Seitenstil geladen werden soll.
-% Zusätzlich zum Satzspeigel wird außerdem der Seitenstil \pgs{empty} 
+% Das ist der Zweig, wenn kein \pgs{tudheadings}-Seitenstil geladen werden 
+% soll. Zusätzlich zum Satzspeigel wird außerdem der Seitenstil \pgs{empty} 
 % zurückgesetzt.
 %    \begin{macrocode}
       }{%
-        \ifstr{\tud at currentgeometry}{stdarea}{}{%
+        \tud at if@strequal{\tud at currentgeometry}{stdarea}{}{%
           \tud at loadgeometry{stdarea}%
           \gdef\tud at currentgeometry{stdarea}%
         }%
 %    \end{macrocode}
-% Die Länge \cs{tud at len@areavskip} wird auf den berechneten Wert gesetzt. 
+% Die Länge \cs{tud at dim@areavskip} wird auf den berechneten Wert gesetzt. 
 % Nur für den Fall, dass die Kopfzeile zum Satzspiegel gerechnet wird und 
 % dieser nicht durch \pkg{typearea} berechnet wurde, muss diese Länge etwas
 % angepasst werden.
 %    \begin{macrocode}
-        \setlength\tud at len@areavskip{\tud at len@areadiff}%
+        \tud at setdim\tud at dim@areavskip{\tud at dim@areadiff}%
         \ifnum\tud at cdgeometry@num>\@ne\relax% true/symmetric/twoside
           \if at hincl%
-            \addtolength\tud at len@areavskip{%
-              \dimexpr-\headheight-\tud at len@headsep\relax%
-            }%
+            \tud at addtodim\tud at dim@areavskip{-\headheight-\tud at dim@headsep}%
           \fi%
         \fi%
-%    \end{macrocode}
-% Die Schriften für Seitenzahl und Kolumnentitel werden zurückgesetzt.
-%    \begin{macrocode}
-        \tud at komafont@unset{pagenumber}%
-        \tud at komafont@unset{pagefoot}%
       }%
 %    \end{macrocode}
-% Die Länge \cs{tud at len@areavskip} wird vorsichtshalber global gesetzt.
+% Die Länge \cs{tud at dim@areavskip} wird vorsichtshalber global gesetzt.
 %    \begin{macrocode}
-      \global\tud at len@areavskip=\tud at len@areavskip%
+      \global\tud at dim@areavskip=\tud at dim@areavskip%
     }{}%
-  }
+  }%
 %    \end{macrocode}
 % \end{macro}^^A \tud at currentgeometry
 % \end{macro}^^A \tud at BeforeSelectAnyPageStyle
@@ -2165,26 +2147,26 @@
 %    \begin{macrocode}
 \newcommand*\tud at x@typearea at before{%
   \tud at cdgeometry@resetlayout%
-  \tud at skip@store{paperheight}%
-  \tud at skip@store{paperwidth}%
+  \tud at cslength@store{paperheight}%
+  \tud at cslength@store{paperwidth}%
   \begingroup%
     \tud at cdgeometry@assignlayout%
     \edef\tud at res@a{%
       \endgroup%
-      \etex at unexpanded{\setlength\paperheight}{\the\tud at len@layoutheight}%
-      \etex at unexpanded{\setlength\paperwidth}{\the\tud at len@layoutwidth}%
+      \unexpanded{\tud at setdim\paperheight}{\the\tud at dim@layoutheight}%
+      \unexpanded{\tud at setdim\paperwidth}{\the\tud at dim@layoutwidth}%
     }%
   \tud at res@a%
 }
 \newcommand*\tud at x@typearea at after{%
-  \tud at skip@restore{paperheight}%
-  \tud at skip@restore{paperwidth}%
-  \if at atdocument%
+  \tud at cslength@restore{paperheight}%
+  \tud at cslength@restore{paperwidth}%
+  \tud at if@preamble{%
+    \TUD at key@preset{cdgeometry}{false}%
+  }{%
     \tud at cdgeometry@reset{typearea}%
     \tud at cdgeometry@process%
-  \else%
-    \TUD at key@preset{cdgeometry}{false}%
-  \fi%
+  }%
 }
 \newcommand*\tud at x@typearea at init{\recalctypearea}%
 %    \end{macrocode}
@@ -2192,18 +2174,18 @@
 %    \begin{macrocode}
 \xpretocmd{\typearea}{%
   \tud at x@typearea at before%
-  \def\tud at x@typearea at init{\typearea[#1]{#2}}%
+  \def\tud at x@typearea at init{\typearea[{#1}]{#2}}%
 }{}{\tud at patch@wrn{typearea}}
 \xapptocmd{\typearea}{\tud at x@typearea at after}{}{\tud at patch@wrn{typearea}}
 \xpretocmd{\areaset}{%
   \tud at x@typearea at before%
   \begingroup%
-    \setlength\@tempdima{#2}%
-    \setlength\@tempdimb{#3}%
+    \tud at setdim\@tempdima{#2}%
+    \tud at setdim\@tempdimb{#3}%
     \edef\tud at res@a{%
       \endgroup%
-      \noexpand\def\noexpand\tud at x@typearea at init{%
-        \noexpand\areaset[#1]{\the\@tempdima}{\the\@tempdimb}%
+      \def\noexpand\tud at x@typearea at init{%
+        \unexpanded{\areaset[{#1}]}{\the\@tempdima}{\the\@tempdimb}%
       }%
     }%
   \tud at res@a%
@@ -2216,17 +2198,17 @@
 %    \begin{macrocode}
 \tud at cs@store{storeareas}
 \renewcommand*\storeareas[1]{%
-  \begingroup
+  \begingroup%
     \tud at x@geometry at fixmargins%
     \tud at cs@use{storeareas}{#1}%
-    \def\tud at res@b##1{\unexpanded{\setlength##1}{\the##1}}%
+    \def\tud at res@b##1{\unexpanded{\tud at setdim##1}{\the##1}}%
     \edef\tud at res@a{%
       \endgroup%
-      \etex at unexpanded{\def#1}{%
-        \tud at res@b{\tud at len@layoutwidth}%
-        \tud at res@b{\tud at len@layoutheight}%
-        \tud at res@b{\tud at len@layouthoffset}%
-        \tud at res@b{\tud at len@layoutvoffset}%
+      \unexpanded{\def#1}{%
+        \tud at res@b{\tud at dim@layoutwidth}%
+        \tud at res@b{\tud at dim@layoutheight}%
+        \tud at res@b{\tud at dim@layouthoffset}%
+        \tud at res@b{\tud at dim@layoutvoffset}%
         \expandonce#1%
         \def\noexpand\tud at cdgeometry@num{\tud at cdgeometry@num}%
       }%
@@ -2269,17 +2251,23 @@
   \tud at cs@store{PackageWarningNoLine}%
   \renewcommand*\PackageWarningNoLine[2]{%
     \@tud at res@swatrue%
-    \ifstr{##1}{typearea}{%
-      \ifstrstart{##2}{Bad type area settings!}{\@tud at res@swafalse}{}%
-      \ifstrstart{##2}{%
+    \tud at if@strequal{##1}{typearea}{%
+      \tud at if@strstart{##2}{%
+        Bad type area settings!%
+      }{\@tud at res@swafalse}{}%
+      \tud at if@strstart{##2}{%
         Maybe no optimal type area settings!%
       }{\@tud at res@swafalse}{}%
-      \ifstrstart{##2}{Very low DIV value!}{\@tud at res@swafalse}{}%
+      \tud at if@strstart{##2}{%
+        Very low DIV value!%
+      }{\@tud at res@swafalse}{}%
     }{}%
     \if at tud@res at swa%
-      \tud at cs@use{PackageWarning}{##1}{##2}%
+      \tud at cs@use{PackageWarningNoLine}{##1}{##2}%
     \else%
-      \IfArgIsEmpty{#1}{}{\listeadd#1{##2}}%
+      \IfArgIsEmpty{#1}{}{%
+        \listeadd#1{\noexpand\tud at cs@use{PackageWarningNoLine}{##1}{##2}}%
+      }%
     \fi%
   }%
 }
@@ -2315,8 +2303,8 @@
     \let\tud at cdgeometry@@init\relax%
   }%
   \newcommand*\tud at cdgeometry@@process{%
-    \setlength\tud at len@layoutwidth{\paperwidth}%
-    \setlength\tud at len@layoutheight{\paperheight}%
+    \tud at setdim\tud at dim@layoutwidth{\paperwidth}%
+    \tud at setdim\tud at dim@layoutheight{\paperheight}%
     \tud at cdgeometry@set%
   }%
   \newcommand*\tud at x@geometry at fixmargins{}%
@@ -2347,14 +2335,23 @@
 % folgenden \KOMAScript-Befehle Leerseiten erzeugt werden, müssen diese minimal
 % angepasst werden.
 %    \begin{macrocode}
-\patchcmd{\cleardoubleoddpageusingstyle}{\pagestyle}{%
-  \let\tud at BeforeSelectAnyPageStyle\@gobble\pagestyle%
+\patchcmd\cleardoubleoddpageusingstyle{%
+  \pagestyle%
+}{%
+  \let\tud at BeforeSelectAnyPageStyle\@gobble%
+  \pagestyle%
 }{}{\tud at patch@wrn{cleardoubleoddpageusingstyle}}
-\patchcmd{\cleardoubleevenpageusingstyle}{\pagestyle}{%
-  \let\tud at BeforeSelectAnyPageStyle\@gobble\pagestyle%
+\patchcmd\cleardoubleevenpageusingstyle{%
+  \pagestyle%
+}{%
+  \let\tud at BeforeSelectAnyPageStyle\@gobble%
+  \pagestyle%
 }{}{\tud at patch@wrn{cleardoubleevenpageusingstyle}}
-\patchcmd{\cleardoublepageusingstyle}{\pagestyle}{%
-  \let\tud at BeforeSelectAnyPageStyle\@gobble\pagestyle%
+\patchcmd\cleardoublepageusingstyle{%
+  \pagestyle%
+}{%
+  \let\tud at BeforeSelectAnyPageStyle\@gobble%
+  \pagestyle%
 }{}{\tud at patch@wrn{cleardoublepageusingstyle}}
 %    \end{macrocode}
 % \end{macro}^^A \cleardoublepageusingstyle
@@ -2372,10 +2369,10 @@
 \tud at if@v at lower{2.03}{%
   \newcommand*\tud at ddc@enlargepage[1][]{%
     \tud at if@tudheadings{#1}{%
-      \ifstr{\tud at currentgeometry}{tudareaddc}{}{%
+      \tud at if@strequal{\tud at currentgeometry}{tudareaddc}{}{%
         \tud at ddc@check%
         \ifcase\@tempb\relax\else% \tud at ddc@foot at num!=false
-          \enlargethispage{-\tud at len@ddcdiff}%
+          \enlargethispage{-\tud at dim@ddcdiff}%
         \fi%
       }%
     }{}%
@@ -2388,6 +2385,6 @@
 %</class&body>
 % \fi
 %
-% \Finale
+% \PrintBackMatter
 %
 \endinput

Modified: trunk/Master/texmf-dist/source/latex/tudscr/tudscr-base.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tudscr/tudscr-base.dtx	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/source/latex/tudscr/tudscr-base.dtx	2022-08-09 20:01:54 UTC (rev 64085)
@@ -1,10 +1,10 @@
-% \CheckSum{842}
 % \iffalse meta-comment
+%/GitFileInfo=tudscr-base.dtx
 %
 %  TUD-Script -- Corporate Design of Technische Universität Dresden
 % ----------------------------------------------------------------------------
 %
-%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2021
+%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2022
 %
 % ----------------------------------------------------------------------------
 %
@@ -23,44 +23,19 @@
 %
 % \fi
 %
-% \CharacterTable
-%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-%   Digits        \0\1\2\3\4\5\6\7\8\9
-%   Exclamation   \!     Double quote  \"     Hash (number) \#
-%   Dollar        \$     Percent       \%     Ampersand     \&
-%   Acute accent  \'     Left paren    \(     Right paren   \)
-%   Asterisk      \*     Plus          \+     Comma         \,
-%   Minus         \-     Point         \.     Solidus       \/
-%   Colon         \:     Semicolon     \;     Less than     \<
-%   Equals        \=     Greater than  \>     Question mark \?
-%   Commercial at \@     Left bracket  \[     Backslash     \\
-%   Right bracket \]     Circumflex    \^     Underscore    \_
-%   Grave accent  \`     Left brace    \{     Vertical bar  \|
-%   Right brace   \}     Tilde         \~}
-%
-% \iffalse
-%%% From File: tudscr-base.dtx
+% \iffalse ins:batch + dtx:driver
+%<*ins>
+\ifx\documentclass\undefined
+  \input docstrip.tex
+  \ifToplevel{\batchinput{tudscr.ins}}
+\else
+  \let\endbatchfile\relax
+\fi
+\endbatchfile
+%</ins>
 %<*dtx>
-% \fi
-%
-\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
-\ProvidesFile{tudscr-base.dtx}[2020/09/29 v2.06j TUD-Script\space%
-%
-% \iffalse
-%</dtx>
-%<package&base>\ProvidesPackage{tudscrbase}[%
-%<*package&base>
-%!TUD at Version
-%</package&base>
-%<package&base>  package
-%<*dtx|package&base>
-% \fi
-  (basics for the bundle)%
-]
-% \iffalse
-%</dtx|package&base>
-%<*dtx>
+\ProvidesFile{tudscr-base.dtx}[2022/08/09]
+\RequirePackage{tudscr-gitinfo}
 \documentclass[english,ngerman,xindy]{tudscrdoc}
 \iftutex
   \usepackage{fontspec}
@@ -70,18 +45,11 @@
 \fi
 \usepackage{babel}
 \usepackage{tudscrfonts}
-\KOMAoptions{parskip=half-}
-\usepackage{bookmark}
 \usepackage[babel]{microtype}
 
-\CodelineIndex
-\RecordChanges
-\GetFileInfo{tudscr-base.dtx}
-\title{\file{\filename}}
-\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
-\date{\fileversion\nobreakspace(\filedate)}
-
+\GitHubBase{\TUDScriptRepository}
 \begin{document}
+  \author{Falk Hanisch\TUDScriptContactTitle}
   \maketitle
   \tableofcontents
   \DocInput{\filename}
@@ -93,6 +61,8 @@
 %
 % \changes{v2.02}{2014/06/23}{Paket \pkg{titlepage} nicht weiter unterstützt}^^A
 %
+%
+%
 % \section{Das Paket \pkg{tudscrbase} -- Basisdefinitionen für \TUDScript}
 %
 % Für die Erstellung der \TUDScript-Klassen werden die dafür benötigten Pakete
@@ -99,15 +69,24 @@
 % eingebunden und Steuerungsbefehle definiert. Die Klassen sowie einige Pakete
 % benötigen das Paket und laden dieses auch.
 %
-% \ToDo{%
-%    Schnittstelle äquivalent zu \cs{KOMA at kav@\dots}? Dann hierfür 
-%    \pkg{etoolbox}-Listen und \cs{listadd} sowie \cs{listremove} nutzen
-% }[v2.??]
-% \ToDo{%
+%    \begin{macrocode}
+%<*package&base>
+\ProvidesPackage{tudscrbase}[%
+%!TUD at Version
+  package (basics for the bundle)%
+]
+%</package&base>
+%    \end{macrocode}
+%
+% \ToDo{
+%   Schnittstelle äquivalent zu \cs{KOMA at kav@...}? Dann hierfür 
+%   \pkg{etoolbox}-Listen und \cs{listadd} sowie \cs{listremove} nutzen
+% }[v2.08]
+% \ToDo{
 %   Teile im Quelltext suchen, die nur einmalig durchlaufen werden müssen 
 %   (bspw. notwendige Pakete und Schriften) und über aux-Eintrag abkürzen?!
-%   siehe \cs{TUD at CheckPackage}%
-% }[v2.??]
+%   siehe \cs{TUD at CheckPackage}
+% }[v2.07]
 %^^A\BeforeClosingMainAux{%
 %^^A  \if at tud@xxx\if at filesw%
 %^^A    \immediate\write\@mainaux{%
@@ -117,62 +96,248 @@
 %^^A}
 %
 %
-% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
 %
 %    \begin{macrocode}
 %<*load>
-\RequirePackage{tudscrbase}[\TUD at Version]
+\RequirePackage{tudscrbase}[%
+%!TUD at Version
+]
 %</load>
 %    \end{macrocode}
 %
-% \subsection{Notwendige Pakete für \TUDScript}
-%
 % \iffalse
 %<*package&base>
 % \fi
 %
+% \subsection{Notwendige Kompatibilitätseinstellung für \KOMAScript}
+%
+% Die installierte Version und die gewählte Kompatibilitätseinstellung von 
+% \KOMAScript{} wird gerpüft.
+%    \begin{macrocode}
+\AtBeginDocument{%
+  \ifcsundef{scr at v@first}{}{%
+%    \end{macrocode}
+% Es wird gerpüft, ob die mindestens benötigte \KOMAScript-Version
+% (v\csuse{TUD at KOMAVersionNumber}) verfügbar ist. Sollte dies nicht der Fall
+% sein, wird ein Fehler erzeugt.
+%    \begin{macrocode}
+    \ifcsundef{scr at v@\TUD at KOMAVersionNumber}{%
+      \PackageError{tudscrbase}{%
+        KOMA-Script v\TUD at KOMAVersionNumber\space is required%
+      }{%
+        \TUD at Version\space must be used at least with\MessageBreak%
+        \TUD at KOMAVersion, but only\MessageBreak%
+        \KOMAScriptVersion\space was found.%
+      }%
+    }{%
+%    \end{macrocode}
+% Ist die mindestens nötige Version von \KOMAScript{} installiert, wird 
+% geprüft, ob die Kompatibilitätseinstellung akzeptabel ist.
+%    \begin{macrocode}
+      \expandafter\ifnum\scr at v@is at lt{3.12}\relax%
+        \PackageError{tudscrbase}{%
+          KOMA-Script compatibility level too low%
+        }{%
+          \TUD at Version\space must be used at least with\MessageBreak%
+          `version=3.12' KOMA-Script compatibility option.%
+        }%
+      \fi%
+    }%
+  }%
+}
+%    \end{macrocode}
+%
+% \subsection{Notwendige Pakete für \TUDScript}
+%
+% \changes{v2.06f}{2020/01/14}{Anpassungen für \pkg{scrbase} \val{v3.28}}^^A
 % Das Paket \pkg{scrbase} wird zur Optionsdefinition benötigt, \pkg{scrlfile} 
 % für verschiedene Hooks vor sowie nach Klassen und Paketen.
-% \ToDo{Provisorium entfernen}[v2.07]
 %    \begin{macrocode}
-\providecommand*{\ifstr}{\Ifstr}
-\providecommand*{\ifstrstart}{\Ifstrstart}
-\providecommand*{\ifisskip}{\Ifisskip}
-\providecommand*{\ifdimen}{\Ifdimen}
-\providecommand*{\ifisdimen}{\Ifisdimen}
-\providecommand*{\ifisdimension}{\Ifisdimension}
-\providecommand*{\ifnumber}{\Ifnumber}
-\RequirePackage{scrbase}[2020/09/21]
-\RequirePackage{iftex}[2019/11/07]
+\RequirePackage{scrbase}[%
+%!TUD at KOMAVersion
+]
 %    \end{macrocode}
 % Die folgenden Pakete werden für die Manipulation bereits definierter
-% Makros sowie zur erweiterten Auswertung boolescher Ausdrücke benötigt.
+% Makros, zur erweiterten Auswertung boolescher Ausdrücke und allgemein zur
+% Ablaufsteuerung benötigt.
 %    \begin{macrocode}
-\RequirePackage{etoolbox}[2011/01/03]
-\RequirePackage{xpatch}[2012/10/02]
-\RequirePackage{letltxmacro}[2016/05/16]
-\RequirePackage{etexcmds}[2011/02/16]
+\RequirePackage{iftex}
+\RequirePackage{etoolbox}
+\RequirePackage{xpatch}
+\RequirePackage{letltxmacro}
 %    \end{macrocode}
 % Das Paket \pkg{kvsetkeys} erweitert \pkg{keyval} um die Möglichkeit, das
 % Verhalten bei der Angabe eines nicht definierten Schlüssels festzulegen.
-% \ToDo{sollte eigentlich auch mit KOMA-Option \val{@else@} gehen}[v2.07]
+% \ToDo{sollte auch mit KOMA-Option \val{@else@} gehen, besser raus}[v2.07]
 %    \begin{macrocode}
-\RequirePackage{kvsetkeys}[2012/04/25]
+\RequirePackage{kvsetkeys}
 %    \end{macrocode}
 % Mit dem Paket \pkg{trimspaces} können eventuell vorhandene Leerzeichen aus
 % einem Argument entfernt. Dies wird beispielsweise beim Einlesen von Feldern 
 % oder bei der expliziten Auswahl einer Schrift des \CD sgenutzt.
 %    \begin{macrocode}
-\RequirePackage{trimspaces}[2009/09/17]
+\RequirePackage{trimspaces}
 %    \end{macrocode}
+% Für \pkg{hyperref} werden \cs{TUDScript} und \cs{KOMAScript} deaktiviert.
+%    \begin{macrocode}
+\AfterPackage*{hyperref}{%
+  \pdfstringdefDisableCommands{%
+    \def\TUDScript{TUD-Script}%
+    \def\KOMAScript{KOMA-Script}%
+  }%
+}
+%    \end{macrocode}
 %
 % \subsection{Grundlegende Befehle für \TUDScript}
+% \subsubsection{Erweiterte Definition von \TeX-Primitiven}
+%
+% Mit \LaTeX{} lassen sich einige Primitiven definieren, ohne zu Prüfen, ob 
+% ggf. bereits eine Definition vorhanden ist. Dies wird hiermit umgangen.
+% \begin{macro}{\tud at newif}
+% \changes{v2.06o}{2022/07/27}{neu}^^A
+% \begin{macro}{\tud at newcount}
+% \changes{v2.06o}{2022/07/27}{neu}^^A
+% \begin{macro}{\tud at newtoks}
+% \changes{v2.06o}{2022/07/27}{neu}^^A
+% \begin{macro}{\tud at newread}
+% \changes{v2.06o}{2022/07/27}{neu}^^A
+% \begin{macro}{\tud at newwrite}
+% \changes{v2.06o}{2022/07/27}{neu}^^A
+%    \begin{macrocode}
+\newcommand*\tud at newif[1]{\@ifdefinable#1{\newif#1}}
+\newcommand*\tud at newcount[1]{\@ifdefinable#1{\newcount#1}}
+\newcommand*\tud at newtoks[1]{\@ifdefinable#1{\newtoks#1}}
+\newcommand*\tud at newread[1]{\@ifdefinable#1{\newread#1}}
+\newcommand*\tud at newwrite[1]{\@ifdefinable#1{\newwrite#1}}
+%    \end{macrocode}
+% \end{macro}^^A \tud at newwrite
+% \end{macro}^^A \tud at newread
+% \end{macro}^^A \tud at newtoks
+% \end{macro}^^A \tud at newcount
+% \end{macro}^^A \tud at newif
+%
+% \subsubsection{Definition von Längen-Registern}
+%
+% \begin{macro}{\tud at newglue}
+% \changes{v2.06o}{2022/07/28}{neu}^^A
+% \begin{macro}{\tud at newdim}
+% \changes{v2.06o}{2022/07/28}{neu}^^A
+% \begin{macro}{\tud at setglue}
+% \changes{v2.06o}{2022/07/28}{neu}^^A
+% \begin{macro}{\tud at setdim}
+% \changes{v2.06o}{2022/07/28}{neu}^^A
+% \begin{macro}{\tud at addtoglue}
+% \changes{v2.06o}{2022/07/28}{neu}^^A
+% \begin{macro}{\tud at addtodim}
+% \changes{v2.06o}{2022/07/28}{neu}^^A
+% Der \LaTeX"~Kernel stellt lediglich \cs{newlength} zur Verfügung, um bereits 
+% bestehende Makros nicht zu überschreiben. Soll jedoch ein \cs{dimen}-Register 
+% definiert werden, gibt es keinen entsprechenden Befehl. Auch die Zuweisung 
+% von Längenwerte kann mit \cs{setlength} nicht sauber erfolgen, da nicht 
+% geprüft wird, ob die Zuweisung an ein \cs{skip}"~ oder \cs{dimen}-Register 
+% erfolgt. Deshalb werden hier für diese Aufgabe interne Befehle definiert.
+% Siehe dazu auch \GitHubRepo(latex3/latex2e)<227>.
+%    \begin{macrocode}
+\newcommand*\tud at newglue[1]{\@ifdefinable#1{\newskip#1}}
+\newcommand*\tud at newdim[1]{\@ifdefinable#1{\newdimen#1}}
+\newrobustcmd*\tud at setglue[2]{%
+  \ifdefdimen{#1}{%
+    \PackageWarning{tudscrbase}{%
+      You tried to assign dimen \string#1\MessageBreak%
+      so \string\tud at setdim\space is used%
+    }%
+    \tud at setdim{#1}{#2}%
+  }{%
+    \setlength#1{\glueexpr#2\relax}%
+  }%
+}
+\newrobustcmd*\tud at setdim[2]{%
+  \begingroup%
+    \@tud at res@swafalse%
+    \setlength\@tempskipa{\glueexpr#2\relax}%
+    \ifdim\gluestretch\@tempskipa=\z@\relax\else%
+      \@tud at res@swatrue%
+    \fi%
+    \ifdim\glueshrink\glueexpr\@tempskipa\relax=\z@\relax\else%
+      \@tud at res@swatrue%
+    \fi%
+    \if at tud@res at swa%
+      \PackageWarning{tudscrbase}{%
+        You tried to use \string\tud at setdim\string#1\MessageBreak%
+        with glue \detokenize{#2} (\the\@tempskipa)\MessageBreak%
+        but only the base value is used%
+      }%
+    \fi%
+  \endgroup%
+  \setlength#1{\dimexpr\glueexpr#2\relax\relax}%
+}
+\newrobustcmd*\tud at addtoglue[2]{%
+  \tud at setglue#1{\glueexpr#1+#2\relax}%
+}
+\newrobustcmd*\tud at addtodim[2]{%
+  \tud at setdim#1{\glueexpr#1+#2\relax}%
+}
+%    \end{macrocode}
+% \end{macro}^^A \tud at addtodim
+% \end{macro}^^A \tud at addtoglue
+% \end{macro}^^A \tud at setdim
+% \end{macro}^^A \tud at setglue
+% \end{macro}^^A \tud at newdim
+% \end{macro}^^A \tud at newglue
+% \begin{macro}{\tud at res@glue}
+% \changes{v2.06}{2019/06/21}{neu}^^A
+% Und gleich noch eine temporäre Länge mit dazu.
+%    \begin{macrocode}
+\tud at newglue\tud at res@glue
+%    \end{macrocode}
+% \end{macro}^^A \tud at res@glue
+% \begin{macro}{\tud at if@lengthregister}
+% \changes{v2.06o}{2022/07/28}{neu}^^A
+% Prüft, ob der übergebene Befehl ein \cs{skip}"~ oder \cs{dimen}-Register ist.
+%    \begin{macrocode}
+\newcommand*\tud at if@lengthregister[1]{%
+  \begingroup%
+    \@tud at res@swafalse%
+    \ifdeflength{#1}{\@tud at res@swatrue}{}%
+    \ifdefdimen{#1}{\@tud at res@swatrue}{}%
+    \if at tud@res at swa%
+      \aftergroup\@firstoftwo%
+    \else%
+      \aftergroup\@secondoftwo%
+    \fi%
+  \endgroup%
+}
+%    \end{macrocode}
+% \end{macro}^^A \tud at if@lengthregister
+% \begin{macro}{\tud at length@setabsolute}
+% \changes{v2.06o}{2022/07/28}{neu}^^A
+% Um Schlüssel für Längen definieren zu können, die zwingend positiv sind, kann 
+% dieses Makro genutzt werden. Übergeben werden muss entweder eine Länge oder 
+% ein Makro, welches einen Längenausdruck enthält.
+%    \begin{macrocode}
+\newcommand*\tud at length@setabsolute[1]{%
+  \tud at if@lengthregister{#1}{%
+    \ifdim#1<\z@%
+      \setlength#1{-\glueexpr#1\relax}%
+    \fi%
+  }{%
+    \protected at edef#1{%
+      \noexpand\ifdim\noexpand\glueexpr\expandonce#1\relax<\z at -\noexpand\fi%
+      \noexpand\glueexpr\expandonce#1\relax%
+    }%
+  }%
+}
+%    \end{macrocode}
+% \end{macro}^^A \tud at length@setabsolute
+%
 % \subsubsection{Temporäre Makros zur internen Verwendung durch \TUDScript}
 %
 % Hier werden Makros definiert, die allein für die interne temporäre Nutzung 
 % gedacht sind.
-% \ToDo{Sämtliche \cs{@temp\dots}-Makros auf \cs{tud at res@\dots} ändern}[v2.??]
-% \ToDo{\cs{tud at reserved} in \cs{tud at res@?}, Achtung bei Dopplungen!}[v2.??]
+% \ToDo{sämtliche \cs{@temp...}-Makros auf \cs{tud at res@...} ändern}[v2.07]
+% \ToDo{\cs{tud at reserved} in \cs{tud at res@...}, Achtung bei Dopplungen!}[v2.07]
+% \ToDo{Schlüssel sollten weiterhin \cs{@temp...}-Makros verwenden}[v2.07]
+% \ToDo{Makros mit \val{@num} in count ändern}[v2.07]
 % \begin{macro}{\tud at reserved}
 % \changes{v2.05}{2015/10/27}{neu}^^A
 % \begin{macro}{\tud at res@a}
@@ -181,12 +346,12 @@
 % \changes{v2.06}{2018/07/12}{neu}^^A
 % \begin{macro}{\tud at res@c}
 % \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\tud at res@d}
+% \changes{v2.06}{2018/07/12}{neu}^^A
 % \begin{macro}{\if at tud@res at swa}
 % \changes{v2.06}{2018/07/12}{neu}^^A
 % \begin{macro}{\tud at res@cnt}
 % \changes{v2.06}{2019/06/13}{neu}^^A
-% \begin{macro}{\tud at res@read}
-% \changes{v2.06}{2019/06/21}{neu}^^A
 % Makros zur temporären Verwendung.
 %    \begin{macrocode}
 \newcommand*\tud at reserved{}
@@ -193,13 +358,13 @@
 \newcommand*\tud at res@a{}
 \newcommand*\tud at res@b{}
 \newcommand*\tud at res@c{}
-\newif\if at tud@res at swa
-\newcount\tud at res@cnt
-\newread\tud at res@read
+\newcommand*\tud at res@d{}
+\tud at newif\if at tud@res at swa
+\tud at newcount\tud at res@cnt
 %    \end{macrocode}
-% \end{macro}^^A \tud at res@read
 % \end{macro}^^A \tud at res@cnt
 % \end{macro}^^A \if at tud@res at swa
+% \end{macro}^^A \tud at res@d
 % \end{macro}^^A \tud at res@c
 % \end{macro}^^A \tud at res@b
 % \end{macro}^^A \tud at res@a
@@ -206,35 +371,89 @@
 % \end{macro}^^A \tud at reserved
 % \begin{macro}{\tud at toks@}
 % \changes{v2.05}{2015/11/01}{neu}^^A
-% \begin{macro}{\eaddto at hook}
+% \begin{macro}{\addto at hook@expandafter}
 % \changes{v2.05}{2015/11/01}{neu}^^A
 % Es wird ein token-Regsiter reserviert, welches im weiteren Verlauf an allen
-% möglichen Punkten verwendet wird. Mit \cs{eaddto at hook} wird~-- in Ergänzung
-% zu \cs{addto at hook}~-- ein Makro zum Anfügen des expandierten Arguments an ein 
-% token-Register bereitgestellt.
+% möglichen Punkten verwendet wird. Mit \cs{addto at hook@expandafter} wird~-- in 
+% Ergänzung zu \cs{addto at hook} aus dem \LaTeX"~Kernel~-- ein Makro zum Anfügen
+% des expandierten Arguments an ein token-Register bereitgestellt.
 %    \begin{macrocode}
-\newtoks\tud at toks@
-\newcommand*\eaddto at hook[2]{%
+\tud at newtoks\tud at toks@
+\newcommand*\addto at hook@expandafter[2]{%
   \expandafter\addto at hook\expandafter#1\expandafter{#2}%
 }
 %    \end{macrocode}
-% \end{macro}^^A \eaddto at hook
+% \end{macro}^^A \addto at hook@expandafter
 % \end{macro}^^A \tud at toks@
 %
-% \subsubsection{Robuster Test auf leeres Argument}
+% \subsubsection{Verzweigung für Präambel und Dokument}
 %
-% \begin{macro}{\ifxblank}
-% Hiermit kann ein Argument geprüft werden, ob dieses blank ist (leer oder
-% Leerzeichen). In seiner Syntax ist er identisch zu \cs{ifblank}, allerdings
-% expandiert er im Gegensatz zu diesem das gegebene Argument.
+% \begin{macro}{\tud at if@preamble}
+% \changes{v2.05o}{2022/07/25}{als Ersatz für \cs{if at atdocument}}^^A
+% Mit \KOMAScript~v3.37 wurde das Aktivieren des Schalters \cs{if at atdocument} 
+% aufgrund des stark veränderten und damit leider nur bedingt deterministischen 
+% \hrfn{https://sourceforge.net/p/koma-script/tickets/23/}{Hook-Managements} 
+% des Kernels auf |begindocument/before| verschoben. Dieser Befehl wird als
+% Gegenstück definiert und führt in Abhängigkeit von |begindocument/after| 
+% Quelltext verzweigt aus.
 %    \begin{macrocode}
-\newcommand*\ifxblank{\ifstr{}}
+\newcommand*\tud at if@preamble{}
+\let\tud at if@preamble\@firstoftwo
+\AfterEndPreamble{\let\tud at if@preamble\@secondoftwo}
 %    \end{macrocode}
-% \end{macro}^^A \ifxblank
+% \end{macro}^^A \tud at if@preamble
 %
-% \subsubsection{Test auf booleschen Ausdruck in Form eines Strings}
+% \subsubsection{Strings}
+% \minisec{Expandierte Tests}
 %
-% \begin{macro}{\ifstrbool}
+% \begin{macro}{\tud at if@strequal}
+% \changes{v2.06o}{2022/07/28}{neu}^^A
+% \begin{macro}{\tud at if@strstart}
+% \changes{v2.06o}{2022/07/28}{neu}^^A
+% \begin{macro}{\tud at if@strempty}
+% \changes{v2.06o}{2022/07/28}{neu}^^A
+% \begin{macro}{\tud at if@strblank}
+% \changes{v2.06o}{2022/07/28}{neu}^^A
+% Hiermit wird geprüft, ob ein String gleich, leer oder blank (Leerzeichen)
+% ist, wobei die gegebene Argumente expandiert werden. In ihrer Syntax sind 
+% sie identisch zu den aus aus \pkg{etoolbox} stammenden und unterlagerten
+% Befehlen \cs{ifstrequal}, \cs{ifstrempty} und \cs{ifblank}. Der Befehl 
+% \cs{tud at if@strstart} nutzt \cs{Ifstrstart} von \KOMAScript.
+%    \begin{macrocode}
+\newcommand*\tud at if@strequal[2]{%
+  \begingroup%
+    \protected at edef\tud at res@a{%
+      \endgroup%
+      \noexpand\ifstrequal{#1}{#2}%
+    }%
+  \tud at res@a%
+}
+\newcommand*\tud at if@strstart[2]{%
+  \begingroup%
+    \protected at edef\tud at res@a{%
+      \endgroup%
+      \noexpand\Ifstrstart{\noexpand\detokenize{#1}}{\noexpand\detokenize{#2}}%
+    }%
+  \tud at res@a%
+}
+\newcommand*\tud at if@strempty{\tud at if@strequal{}}
+\newcommand*\tud at if@strblank[1]{%
+  \begingroup%
+    \protected at edef\tud at res@a{%
+      \endgroup%
+      \noexpand\ifblank{#1}%
+    }%
+  \tud at res@a%
+}
+%    \end{macrocode}
+% \end{macro}^^A \tud at if@strblank
+% \end{macro}^^A \tud at if@strempty
+% \end{macro}^^A \tud at if@strstart
+% \end{macro}^^A \tud at if@strequal
+%
+% \minisec{Test auf booleschen Ausdruck in Form eines Strings}
+%
+% \begin{macro}{\tud at if@strbool}
 % \changes{v2.03}{2015/01/09}{neu}^^A
 % Dieser Befehl dient zum Testen, ob ein gegebener String als boolescher 
 % Ausdruck interpretiert werden kann. Ist der String als \enquote{wahr} 
@@ -241,44 +460,115 @@
 % interpretierbar, wird das zweite Argument ausgeführt. Kann der String als 
 % \enquote{falsch} angesehen werden, dementsprechen das dritte. Ist der String 
 % kein logischer Wert, kommt das letzte Argument zum Tragen. Die Syntax lautet:
-% 
-% \cs{ifstrbool}\marg{Argument}\marg{Wahr}\marg{Falsch}\marg{Andernfalls}
+% \newline
+% \cs{tud at if@strbool}\marg{Argument}\marg{Wahr}\marg{Falsch}\marg{Andernfalls}
 %    \begin{macrocode}
-\newcommand*\ifstrbool[4]{%
-  \ifstr{#1}{true}{#2}{%
-    \ifstr{#1}{on}{#2}{%
-      \ifstr{#1}{yes}{#2}{%
-        \ifstr{#1}{false}{#3}{%
-          \ifstr{#1}{no}{#3}{%
-            \ifstr{#1}{off}{#3}{%
-              #4%
-            }%
-          }%
-        }%
+\newcommand*\tud at if@strbool[4]{%
+  \TUD at set@ifkey{strbool}{@tempswa}{#1}%
+  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+    \if at tempswa#2\else#3\fi%
+  \else%
+    #4
+  \fi%
+}
+%    \end{macrocode}
+% \end{macro}^^A \tud at if@strbool
+%
+% \minisec{Erzwungene Kleinschreibung von Strings}
+%
+% \begin{macro}{\tud at strlowercase}
+% Dieses Makro expandiert das zweite Argument, setzt es in Minuskeln und
+% speichert das Ergebnis in den im ersten Argument angegebenen Befehl. Dies 
+% wird zum Beispiel benötigt, um bestimmte Werte bei Schlüssel-Wert-Paaren,
+% Schlüsselwörtern in einigen Feldern oder auch Einheiten bei Längenangaben
+% sicher erkennen zu können. Die Syntax lautet:
+% \newline
+% \cs{tud at strlowercase}\marg{Zielmakro}\marg{String} benutzt.
+%    \begin{macrocode}
+\newcommand*\tud at strlowercase[2]{%
+  \protected at edef#1{%
+    \lowercase{\def\noexpand#1{#2}}%
+  }#1%
+}
+%    \end{macrocode}
+% \end{macro}^^A \tud at strlowercase
+%
+% \minisec{Ausgabe einer Länge als Strings}
+%
+% \begin{macro}{\tud at strlength}
+% \changes{v2.06o}{2022/07/28}{neu}^^A
+% Die direkte Verwendung von \cs{the} auf ein \cs{skip}-Register hat zur Folge, 
+% dass die Einheit \val{pt} mit die Charactercodes \val{12} zurückgegeben 
+% werden, was bei der Weiterverarbeitung unter Umständen Probleme bereitet. 
+% Dieses Makro löst das Problem.
+%    \begin{macrocode}
+\newcommand*\tud at strlength[2]{%
+  \begingroup%
+    \def\tud at res@c{\glueexpr#2\relax}%
+    \edef\tud at res@a{\strip at pt\dimexpr\tud at res@c\relax pt}%
+    \edef\tud at res@b{\strip at pt\dimexpr\gluestretch\tud at res@c\relax}%
+    \ifdim\tud at res@b\p@=\z@\relax\else%
+      \eappto\tud at res@a{%
+        \space\@plus\space\tud at res@b%
+        \ifcase\gluestretchorder\tud at res@c pt\or fil\or fill\or filll\fi%
       }%
+    \fi%
+    \edef\tud at res@b{\strip at pt\dimexpr\glueshrink\tud at res@c\relax}%
+    \ifdim\tud at res@b\p@=\z@\relax\else%
+      \eappto\tud at res@a{%
+        \space\@minus\space\tud at res@b%
+        \ifcase\glueshrinkorder\tud at res@c pt\or fil\or fill\or filll\fi%
+      }%
+    \fi%
+    \edef\tud at res@a{%
+      \endgroup%
+      \unexpanded{\def#1}{\tud at res@a}%
     }%
-  }%
+  \tud at res@a%
 }
 %    \end{macrocode}
-% \end{macro}^^A \ifstrbool
+% \end{macro}^^A \tud at strlength
 %
+% \minisec{Entfernen aller Leerzeichen in Strings}
+%
+% \begin{macro}{\tud at remove@spaces at within}
+% Hiermit können in einem gegebenen String \emph{alle} Leerzeichen enthaltenen 
+% entfernt werden. Dies wird verwendet, um für \cs{TUD at set@gluekey} sowie 
+% \cs{TUD at set@dimkey} eine Warnung auszugeben, falls das übergebene Argument 
+% fehlerhaft formatiert ist, wobei Unterschiede bei Leerzeichen ignoriert 
+% werden sollen.
+%    \begin{macrocode}
+\newcommand*\tud at remove@spaces at within[1]{%
+  \begingroup%
+    \protected at edef\tud at res@a{\noexpand\zap at space#1\space\noexpand\@empty}%
+    \protected at edef\tud at res@a{%
+      \endgroup%
+      \unexpanded{\def#1}{\tud at res@a}%
+    }%
+  \tud at res@a%
+}
+%    \end{macrocode}
+% \end{macro}^^A \tud at remove@spaces at within
+%
 % \subsubsection{Test auf eine verwendbare Sprache}
 %
 % \begin{macro}{\iflanguageloaded}
 % \changes{v2.05}{2015/11/23}{neu}^^A
 % Hiermit kann getestet werden, ob das Argument als Sprache nutzbar ist.
-% \ToDo{ist Befehl noch sinnvoll? use polyglossia \cs{xpg@[b]loaded}?}[v2.07]
-% \ToDo{für polyglossia auch mit \cs{ifbabellanguageloaded} testen?}[v2.07]
-% \ToDo{besser nur als internen Befehl definieren \cs{tud at if@...}?!}[v2.07]
 %    \begin{macrocode}
-\newcommand*\iflanguageloaded[1]{%
-  \PackageWarning{tudscrbase}{%
-    Whether package `babel' nor package `polyglossia' has been loaded%
+\AtEndPreamble{%
+  \providecommand*\iflanguageloaded[1]{%
+    \PackageWarning{tudscrbase}{%
+      `\string\iflanguageloaded' is not defined. Loading\MessageBreak%
+      either package `babel' or package `polyglossia'\MessageBreak%
+      is recommended%
+    }%
+    \def\iflanguageloaded##1{\expandafter\@secondoftwo}%
+    \iflanguageloaded{#1}%
   }%
-  \expandafter\@secondoftwo%
 }
 \AfterPackage*{babel}{%
-  \renewcommand*\iflanguageloaded[1]{%
+  \providecommand*\iflanguageloaded[1]{%
     \@expandtwoargs\in@{,#1,}{,\bbl at loaded,}%
     \ifin@%
       \expandafter\@firstoftwo%
@@ -287,13 +577,12 @@
     \fi%
   }%
 }
-\BeforePackage{polyglossia}{\undef\iflanguageloaded}
 %    \end{macrocode}
 % \end{macro}^^A \iflanguageloaded
 %
 % \subsubsection{Expansion geschützter Makros}
 %
-% Im \LaTeX-Kernel wird der Befehl \cs{@expandtwoargs} definiert, welcher zwei 
+% Im \LaTeX"~Kernel wird der Befehl \cs{@expandtwoargs} definiert, welcher zwei
 % Argumente in ein angegebenes Makro vollständig expandiert. Dabei erfolgt die 
 % Expansion der beiden Argumente aufgrund der standardmäßigen Verwendung von 
 % \cs{edef} allerdings vollständig und ohne die Beachtung von \cs{protect}.
@@ -310,7 +599,7 @@
 %
 % \subsubsection{Division für rationale Zahlen}
 %
-% Mit \LaTeXe{} kann~-- ohne die Verwendung zusätzlicher Pakete~-- nicht ohne 
+% Mit \LaTeX{} kann~-- ohne die Verwendung zusätzlicher Pakete~-- nicht ohne 
 % Weiteres eine Division durchgeführt werden, die als Ergenis eine rationale 
 % Zahl liefert. Dem wird hier Abhilfe geleistet.
 % \begin{macro}{\tud at divide}
@@ -335,19 +624,21 @@
 %    \begin{macrocode}
     \ifdim\@tempdima>\@tempdimb\relax%
       \@whiledim\@tempdimb>1pt\relax\do{%
-        \setlength\@tempdima{.1\@tempdima}%
-        \setlength\@tempdimb{.1\@tempdimb}%
+        \setlength\@tempdima{\dimexpr\@tempdima/10\relax}%
+        \setlength\@tempdimb{\dimexpr\@tempdimb/10\relax}%
       }%
       \setlength\@tempdimc{\@tempdima}%
     \else%
       \@whiledim\@tempdima>1pt\relax\do{%
-        \setlength\@tempdima{.1\@tempdima}%
-        \setlength\@tempdimb{.1\@tempdimb}%
+        \setlength\@tempdima{\dimexpr\@tempdima/10\relax}%
+        \setlength\@tempdimb{\dimexpr\@tempdimb/10\relax}%
       }%
       \setlength\@tempdimc{\@tempdimb}%
     \fi%
     \@tempcnta=1\relax%
-    \@whiledim\dimexpr\@tempcnta\@tempdimc\relax<.01\maxdimen\do{%
+    \@whiledim%
+      \dimexpr\@tempcnta\@tempdimc\relax<\dimexpr\maxdimen/100\relax%
+    \do{%
       \multiply\@tempcnta by 10\relax%
     }%
 %    \end{macrocode}
@@ -354,10 +645,8 @@
 % Mit dem im temporären Zählerregister \cs{@tempcnta} gespeicherten Faktor 
 % wird der Dividend erweitert und der berechnete Quotient wieder gekürzt.
 %    \begin{macrocode}
-    \setlength\@tempdimc{%
-      \dimexpr(\@tempcnta\@tempdima / \@tempdimb * \p@)\relax%
-    }%
-    \setlength\@tempdimc{\dimexpr \@tempdimc/\@tempcnta\relax}%
+    \setlength\@tempdimc{\dimexpr(\@tempcnta\@tempdima/\@tempdimb*\p@)\relax}%
+    \setlength\@tempdimc{\dimexpr\@tempdimc/\@tempcnta\relax}%
 %    \end{macrocode}
 % Das Ergebnis wird in das angegebene Makro expandiert.
 %    \begin{macrocode}
@@ -367,24 +656,6 @@
 %    \end{macrocode}
 % \end{macro}^^A \tud at divide
 %
-% \subsubsection{Erzwungene Kleinschreibung von Strings}
-%
-% Um angegebene Werte bei Schlüssel-Wert-Paaren oder Schlüsselwörter in
-% bestimmten Feldern mit Sicherheit erkennen zu können, werden diese zwingend 
-% in Kleinbuchstaben geschieben.
-% \begin{macro}{\tud at lowerstring}
-% Das Makro wird mit \cs{tud at lowerstring}\marg{Zielmakro}\marg{String} benutzt.
-% \ToDo{geht das eleganter als mit \cs{expandafter}?}[v2.07]
-%    \begin{macrocode}
-\newcommand*\tud at lowerstring[2]{%
-  \protected at edef#1{#2}%
-  \lowercase\expandafter{%
-    \expandafter\def\expandafter #1\expandafter{#1}%
-  }%
-}
-%    \end{macrocode}
-% \end{macro}^^A \tud at lowerstring
-%
 % \subsubsection{Test auf vorhandene Dateien von Schriftdefinitionen}
 %
 % \begin{macro}{\tud at if@fdfileexists}
@@ -401,7 +672,7 @@
 % Varianten getestet. Zunächst die Standardvariante in Kleinschreibung\dots
 %    \begin{macrocode}
     \@tud at res@swatrue%
-    \tud at lowerstring\tud at res@a{#1#2.fd}%
+    \tud at strlowercase\tud at res@a{#1#2.fd}%
     \IfFileExists{\tud at res@a}{\@tud at res@swafalse}{}%
 %    \end{macrocode}
 % \dots gefolgt von der Variante mit Kleinschreibung der Kodierung und dem 
@@ -408,7 +679,7 @@
 % Namen der Schrift wie angegeben\dots
 %    \begin{macrocode}
     \if at tud@res at swa%
-      \tud at lowerstring\tud at res@a{#1}%
+      \tud at strlowercase\tud at res@a{#1}%
       \edef\tud at res@a{\tud at res@a#2.fd}%
       \IfFileExists{\tud at res@a}{\@tud at res@swafalse}{}%
     \fi%
@@ -437,14 +708,11 @@
 % \begin{macro}{\tud at cs@letltx}
 % \changes{v2.06}{2019/06/13}{\cs{LetLtxMacro} zum Sichern originärer Makros}^^A
 % \begin{macro}{\tud at cs@store}
-% \changes{v2.06}{2018/07/15}{%
-%   mit \cs{DeclareRobustCommand} definierte Befehle unterstüzt%
-% }^^A
+% \changes{v2.06}{2018/07/15}{mit \cs{DeclareRobustCommand} definierte Befehle
+%   werden unterstüzt}^^A
 % \begin{macro}{\tud at cs@restore}
-% \changes{v2.06}{2018/07/15}{%
-%    stellt originäre Makros auch wieder her, wenn diese mit \cs{undef} 
-%    zwischendurch \emph{undefiniert} gesetzt wurden%
-% }^^A
+% \changes{v2.06}{2018/07/15}{stellt originäre Makros auch wieder her, wenn
+%   diese mit \cs{undef} zwischendurch \emph{undefiniert} gesetzt wurden}^^A
 % \begin{macro}{\tud at cs@reset}
 % \begin{macro}{\tud at cs@update}
 % \changes{v2.04}{2015/03/03}{neu}^^A
@@ -458,6 +726,7 @@
 %
 % Der Befehl \cs{tud at cs@letltx} nutzt intern \cs{LetLtxMacro} aus dem Paket 
 % \pkg{letltxmacro}, um auch robust definierte Befehle korrekt zu sichern.
+% \ToDo{Kernel stellt mittlerweiele \cs{NewCommandCopy} bereit}[v2.07]
 %    \begin{macrocode}
 \newcommand*\tud at cs@letltx[2]{%
   \expandafter\expandafter\expandafter\LetLtxMacro%
@@ -465,12 +734,12 @@
 }
 %    \end{macrocode}
 % Mit dem Aufruf \cs{tud at cs@store}\marg{Befehlsname} wird der im Argument 
-% angegebene Befehl in einem neuem Makro \cs{@@tud@\meta{Befehlsname}}
+% angegebene Befehl in einem neuem Makro |\@@tud@|\meta{Befehlsname}
 % gespeichert. Dieser kann danach beliebig angepasst werden. Soll der Befehl zu
 % einem späteren Zeitpunkt auf den Orginalzustand zurücksetzen, kann hierfür
 % jederzeit der Befehl \cs{tud at cs@reset}\marg{Befehlsname} verwendet werden.
 % Durch das Makro \cs{tud at cs@restore}\marg{Befehlsname} wird das mit
-% \cs{tud at cs@store} erstellte Hilfsmakro zusätzlich noch  gelöscht. Der
+% \cs{tud at cs@store} erstellte Hilfsmakro zusätzlich noch gelöscht. Der
 % ursprüngliche Befehl kann als solcher mit \cs{tud at cs@use}\marg{Befehlsname}
 % weiterhin genutzt werden. Ein zuvor bereits gesicherter Befehl kann mit 
 % \cs{tud at cs@update}\marg{Befehlsname} auf die momentane Definition 
@@ -477,9 +746,10 @@
 % aktualisiert werden.
 %    \begin{macrocode}
 \newrobustcmd*\tud at cs@store[1]{%
-  \tud at cs@check{#1}%
-  \ifcsdef{@@tud@#1}{}{%
-    \tud at cs@letltx{@@tud@#1}{#1}%
+  \tud at cs@check{#1}{%
+    \ifcsdef{@@tud@#1}{}{%
+      \tud at cs@letltx{@@tud@#1}{#1}%
+    }%
   }%
 }
 \newrobustcmd*\tud at cs@restore[1]{%
@@ -497,30 +767,34 @@
 %    \end{macrocode}
 % Die eigentliche Wiederherstellung.
 %    \begin{macrocode}
-  \tud at cs@check{#1}%
-  \ifcsdef{@@tud@#1}{%
-    \tud at cs@letltx{#1}{@@tud@#1}%
-    \csundef{@@tud@#1}%
-  }{}%
+  \tud at cs@check{#1}{%
+    \ifcsdef{@@tud@#1}{%
+      \tud at cs@letltx{#1}{@@tud@#1}%
+      \csundef{@@tud@#1}%
+    }{}%
+  }%
 }
 \newrobustcmd*\tud at cs@reset[1]{%
-  \tud at cs@check{#1}%
-  \ifcsdef{@@tud@#1}{%
-    \tud at cs@letltx{#1}{@@tud@#1}%
-  }{}%
+  \tud at cs@check{#1}{%
+    \ifcsdef{@@tud@#1}{%
+      \tud at cs@letltx{#1}{@@tud@#1}%
+    }{}%
+  }%
 }
 \newrobustcmd*\tud at cs@update[1]{%
-  \tud at cs@check{#1}%
-  \ifcsdef{@@tud@#1}{%
-    \tud at cs@letltx{@@tud@#1}{#1}%
-  }{}%
+  \tud at cs@check{#1}{%
+    \ifcsdef{@@tud@#1}{%
+      \tud at cs@letltx{@@tud@#1}{#1}%
+    }{}%
+  }%
 }
 \newrobustcmd*\tud at cs@use[1]{%
-  \tud at cs@check{#1}%
-  \ifcsdef{@@tud@#1}{%
-    \csuse{@@tud@#1}%
-  }{%
-    \csuse{#1}%
+  \tud at cs@check{#1}{%
+    \ifcsdef{@@tud@#1}{%
+      \csuse{@@tud@#1}%
+    }{%
+      \csuse{#1}%
+    }%
   }%
 }
 %    \end{macrocode}
@@ -529,14 +803,24 @@
 % Fall sein, wird ein Fehler ausgegeben.
 %    \begin{macrocode}
 \newrobustcmd*\tud at cs@check[1]{%
-  \ifcsdef{#1}{}{%
-    \PackageError{tudscrbase}{%
-      `\@backslashchar#1' is not defined}{%
-      The command `\@backslashchar#1' was never defined. \MessageBreak%
-      Please contact the TUD-Script maintainer\MessageBreak%
-      via \tudscrmail. A bugfix is urgently required.%
-    }%
-  }%
+  \begingroup%
+    \ifcsdef{#1}{\@tud at res@swatrue}{\@tud at res@swafalse}%
+    \if at tud@res at swa%
+      \ifcscounter{#1}{\@tud at res@swafalse}{}%
+      \ifcslength{#1}{\@tud at res@swafalse}{}%
+      \ifcsdimen{#1}{\@tud at res@swafalse}{}%
+    \fi%
+    \if at tud@res at swa%
+      \aftergroup\@firstofone%
+    \else%
+      \PackageError{tudscrbase}{`\@backslashchar#1' is not a defined macro}{%
+        The macro `\@backslashchar#1' was never defined. \MessageBreak%
+        Please contact the TUD-Script maintainer\MessageBreak%
+        via \TUDScriptContact. A bugfix is urgently required.%
+      }%
+      \aftergroup\@gobble%
+    \fi%
+  \endgroup%
 }
 %    \end{macrocode}
 % \end{macro}^^A \tud at cs@check
@@ -546,78 +830,74 @@
 % \end{macro}^^A \tud at cs@restore
 % \end{macro}^^A \tud at cs@store
 % \end{macro}^^A \tud at cs@letltx
-% \begin{macro}{\tud at skip@store}
+% \begin{macro}{\tud at cslength@store}
 % \changes{v2.04}{2015/03/02}{neu}^^A
-% \changes{v2.05}{2016/07/13}{Verwendung von \cs{tud at skip@check}}^^A
-% \begin{macro}{\tud at skip@restore}
+% \changes{v2.05}{2016/07/13}{Verwendung von \cs{tud at cslength@check}}^^A
+% \begin{macro}{\tud at cslength@restore}
 % \changes{v2.04}{2015/03/02}{neu}^^A
-% \changes{v2.05}{2016/07/13}{Verwendung von \cs{tud at skip@check}}^^A
-% \begin{macro}{\tud at skip@reset}
+% \changes{v2.05}{2016/07/13}{Verwendung von \cs{tud at cslength@check}}^^A
+% \begin{macro}{\tud at cslength@reset}
 % \changes{v2.05}{2016/07/13}{neu}^^A
-% \begin{macro}{\tud at skip@set}
-% \changes{v2.04}{2015/05/05}{neu}^^A
-% \changes{v2.05}{2016/07/13}{Verwendung von \cs{tud at skip@check}}^^A
-% \begin{macro}{\tud at skip@check}
+% \begin{macro}{\tud at cslength@check}
 % \changes{v2.05}{2016/07/13}{neu}^^A
 % Hiermit können~-- äquivalent zum Sichern und Wiederherstellen von Befehlen~-- 
 % Längenregister abgespeichert werden.
 %    \begin{macrocode}
-\newcommand*\tud at skip@store[1]{%
-  \tud at skip@check{#1}{%
-    \ifcsdef{@@tud at skip@#1}{}{%
-      \csedef{@@tud at skip@#1}{\expandafter\the\csname #1\endcsname}%
-    }%
+\newcommand*\tud at cslength@store[1]{%
+  \tud at cslength@check{#1}{%
+    \ifcsundef{@@tud at length@#1}{%
+      \csedef{@@tud at length@#1}{\expandafter\the\csname #1\endcsname}%
+    }{}%
   }%
 }
-\newcommand*\tud at skip@restore[1]{%
-  \tud at skip@check{#1}{%
-    \ifcsdef{@@tud at skip@#1}{%
-      \csname #1\endcsname=\csname @@tud at skip@#1\endcsname%
-      \csundef{@@tud at skip@#1}%
-    }{}%
+\newcommand*\tud at cslength@restore[1]{%
+  \tud at cslength@check{#1}{%
+    \ifcsundef{@@tud at length@#1}{}{%
+      \expandafter\setlength\csname #1\endcsname{%
+        \csname @@tud at length@#1\endcsname%
+      }%
+      \csundef{@@tud at length@#1}%
+    }%
   }%
 }
-\newcommand*\tud at skip@reset[1]{%
-  \tud at skip@check{#1}{%
-    \ifcsdef{@@tud at skip@#1}{%
-      \csname#1\endcsname=\csname @@tud at skip@#1\endcsname%
-    }{}%
+\newcommand*\tud at cslength@reset[1]{%
+  \tud at cslength@check{#1}{%
+    \ifcsundef{@@tud at length@#1}{}{%
+      \expandafter\setlength\csname #1\endcsname{%
+        \csname @@tud at length@#1\endcsname%
+      }%
+    }%
   }%
 }
-\newcommand*\tud at skip@set[2]{%
-  \tud at skip@check{#1}{%
-    \expandafter\setlength\csname #1\endcsname{#2}%
+\newcommand*\tud at cslength@check[1]{%
+  \expandafter\tud at if@lengthregister\expandafter{\csname #1\endcsname}{%
+    \expandafter\@firstofone%
+  }{%
+    \PackageError{tudscrbase}{`\@backslashchar#1' is not a defined length}{%
+      The length `\@backslashchar#1' was never defined. \MessageBreak%
+      Please contact the TUD-Script maintainer\MessageBreak%
+      via \TUDScriptContact. A bugfix is urgently required.%
+    }%
+    \expandafter\@gobble%
   }%
 }
-\newcommand*\tud at skip@check[1]{%
-  \begingroup%
-    \@tempswafalse%
-    \expandafter\ifisskip\expandafter{\csname#1\endcsname}{\@tempswatrue}{}%
-    \expandafter\ifisdimen\expandafter{\csname#1\endcsname}{\@tempswatrue}{}%
-    \if at tempswa%
-      \aftergroup\@firstofone%
-    \else%
-      \aftergroup\@gobble%
-    \fi%
-  \endgroup%
-}
 %    \end{macrocode}
-% \end{macro}^^A \tud at skip@check
-% \end{macro}^^A \tud at skip@set
-% \end{macro}^^A \tud at skip@reset
-% \end{macro}^^A \tud at skip@restore
-% \end{macro}^^A \tud at skip@store
+% \end{macro}^^A \tud at cslength@check
+% \end{macro}^^A \tud at cslength@reset
+% \end{macro}^^A \tud at cslength@restore
+% \end{macro}^^A \tud at cslength@store
 % \begin{macro}{\tud at patch@wrn}
 % \TUDScript verwendet die Möglichkeiten von \pkg{etoolbox} und \pkg{xpatch}, 
 % um mit den Makros  (\cs{[x]apptocmd}, \cs{[x]pretocmd}, \cs{[x]patchcmd}) 
 % bereits definierte Befehle anzupassen. Falls dies nicht gelingt, wird eine 
 % Warnung ausgegeben, die hier definiert wird.
+% \ToDo{generelle Schnittstelle schaffen und failure hier behandeln}[v2.07]
 %    \begin{macrocode}
 \newcommand*\tud at patch@wrn[1]{%
   \PackageWarning{tudscrbase}{%
     It wasn't possible to patch `\@backslashchar#1'\MessageBreak%
     Please contact the TUD-Script maintainer\MessageBreak%
-    via \tudscrmail. Without a bugfix an\MessageBreak%
+    via \TUDScriptContact. Without a bugfix an\MessageBreak%
     erroneous output may occur%
   }%
 }
@@ -637,8 +917,12 @@
 % Zuerst ein paar Makros zur einfacheren Verwendung.
 %    \begin{macrocode}
 \DefineFamily{TUD}
-\newcommand*\TUDProcessOptions{\FamilyProcessOptions{TUD}}
-\newcommand*\TUDExecuteOptions{\FamilyExecuteOptions{TUD}}
+\newcommand*\TUDProcessOptions[1][.\@currname.\@currext]{%
+  \FamilyProcessOptions[{#1}]{TUD}%
+}
+\newcommand*\TUDExecuteOptions[1][.\@currname.\@currext]{%
+  \FamilyExecuteOptions[{#1}]{TUD}%
+}
 \newcommand*\TUDoptions{\FamilyOptions{TUD}}
 \newcommand*\TUDoption{\FamilyOption{TUD}}
 %    \end{macrocode}
@@ -663,7 +947,7 @@
 % aber in bestimmten Fällen eine Option in Abhängigkeit von einer anderen
 % unterschiedliche Standardwerte annehmen soll, wird dafür eine Möglichkeit
 % geschaffen. Hierfür wird für jede Option ein korrelierende Schalter 
-% \cs{if at tud@key@\meta{Schlüssel}@set} definiert. Dieser wird auf \val{true} 
+% |\if at tud@key@|\meta{Schlüssel}|@set| definiert. Dieser wird auf \val{true} 
 % gesetzt, sobald der Schlüssel explizit gesetzt wurde, womit ein Standardwert 
 % einer Klassenoption überschrieben werden kann. Das Setzen der Standardwerte 
 % erfolgt intern mit dem Befehl \cs{TUD at key@preset}.
@@ -671,7 +955,7 @@
 \newcommand*\TUD at key[2][.\@currname.\@currext]{%
 %    \end{macrocode}
 % Basierend auf dem Namen des Schalters wird die notwendige, boolesche Variable
-% erzeugt (\cs{if at tud@key@\meta{Schlüssel}@set}), welche im Falle des direkten
+% erzeugt (|\if at tud@key@|\meta{Schlüssel}|@set|), welche im Falle des direkten
 % Aufrufs des Schlüssels, ein Überschreiben mit einem Standardwert verhindert.
 %    \begin{macrocode}
   \providebool{@tud at key@#2 at set}%
@@ -699,7 +983,7 @@
   }%
 }
 %    \end{macrocode}
-% Es kann intern über \cs{if at tud@key@\meta{Schlüssel}@set} geprüft werden, ob
+% Es kann intern über |\if at tud@key@|\meta{Schlüssel}|@set| geprüft werden, ob
 % einem Schlüssel ein explizites Wert zugewiesen wurde. Sollte dies nicht der
 % Fall sein, kann dieser hiermit intern beliebig angepasst werden. Da es durch 
 % das Setzen der Option mit \cs{TUDoption} zu einer Sperrung kommt, muss diese
@@ -716,34 +1000,41 @@
 % \end{macro}^^A \TUD at key@@define
 % \end{macro}^^A \TUD at key@define
 % \end{macro}^^A \TUD at key
+%
+% Die folgenden Befehle dienen zum Verarbeiten der Optionen, wobei prinzipiell 
+% auch eine freie Definition mit anschließender Abarbeitung ohne diese möglich 
+% ist.
+%
 % \begin{macro}{\TUD at set@ifkey}
 % \changes{v2.06}{2018/08/01}{forcierte Kleinschreibung Schlüsselwerte}^^A
+% Hiermit wird der Option ein einfacher Schalterwert zugewiesen.
+%    \begin{macrocode}
+\newcommand*\TUD at set@ifkey[3]{%
+  \begingroup%
+    \tud at strlowercase\tud at res@a{#3}%
+    \edef\tud at res@a{%
+      \endgroup%
+      \unexpanded{\FamilySetBool{TUD}{#1}{#2}}{\tud at res@a}%
+    }%
+  \tud at res@a%
+}
+%    \end{macrocode}
+% \end{macro}^^A \TUD at set@ifkey
 % \begin{macro}{\TUD at set@numkey}
 % \changes{v2.02}{2014/11/05}{neu}^^A
 % \changes{v2.06}{2018/08/01}{forcierte Kleinschreibung Schlüsselwerte}^^A
 % \begin{macro}{\TUD at bool@numkey}
 % \changes{v2.03}{2015/01/09}{neu}^^A
-% \begin{macro}{\TUD at set@dimenkey}
-% \changes{v2.05}{2016/06/15}{neu}^^A
-% \changes{v2.06}{2018/08/01}{forcierte Kleinschreibung Schlüsselwerte}^^A
-% \begin{macro}{\TUD at unknown@keyval}
-% Dies sind die Befehle zum Setzen der Optionen. Diese können entweder als
-% Schalter (\cs{TUD at set@ifkey}) oder aber mit mehreren möglichen Werten
-% (\cs{TUD at set@numkey}) definiert werden. Prinzipiell ist auch eine freie
-% Definition mit anschließender Abarbeitung ohne die zuvor genannten Befehle
-% möglich.
+% Hiermit werden für eine Option mehrere mögliche Werte definiert. 
 %    \begin{macrocode}
-\newcommand*\TUD at set@ifkey[3]{%
-  \tud at lowerstring\tud at res@a{#3}%
-  \edef\tud at res@b{%
-    \etex at unexpanded{\FamilySetBool{TUD}{#1}{#2}}{\tud at res@a}%
-  }\tud at res@b%
-}
 \newcommand*\TUD at set@numkey[4]{%
-  \tud at lowerstring\tud at res@a{#4}%
-  \edef\tud at res@b{%
-    \etex at unexpanded{\FamilySetNumerical{TUD}{#1}{#2}{#3}}{\tud at res@a}%
-  }\tud at res@b%
+  \begingroup%
+    \tud at strlowercase\tud at res@a{#4}%
+    \edef\tud at res@a{%
+      \endgroup%
+      \unexpanded{\FamilySetNumerical{TUD}{#1}{#2}{#3}}{\tud at res@a}%
+    }%
+  \tud at res@a%
 }
 %    \end{macrocode}
 % Um Dopplungen im Code zu vermeiden, werden für die numerische Schlüssel die 
@@ -753,16 +1044,322 @@
   {false}{0},{off}{0},{no}{0},{true}{1},{on}{1},{yes}{1}%
 }
 %    \end{macrocode}
-% Mit \cs{TUD at set@dimenkey} wird der übergebene Längenwert im spezifiezierten 
-% Makro gespeichert.
+% \end{macro}^^A \TUD at bool@numkey
+% \end{macro}^^A \TUD at set@numkey
+% \begin{macro}{\TUD at set@gluekey}
+% \changes{v2.06o}{2022/08/01}{neu}^^A
+% \begin{macro}{\tud at normalize@gluekey}
+% \changes{v2.06o}{2022/08/01}{neu}^^A
+% \begin{macro}{\tud at normalize@@gluekey}
+% \changes{v2.06o}{2022/08/01}{neu}^^A
+% \begin{macro}{\tud at validate@gluekey}
+% \changes{v2.06o}{2022/08/01}{neu}^^A
+% Mit \cs{TUD at set@gluekey} und \cs{TUD at set@dimkey} wird der übergebene Wert
+% entweder als Skip (Länge mit Kleister) oder Dimension (Länge ohne Kleister)
+% im spezifizierten Makro gespeichert, wobei auf eine gültige Eingabe geprüft 
+% wird.
+%
+% Wurde ein Argument übergeben, dass in einen String expandiert, ist einiger
+% Aufwand notwendig, da das zugrunde liegende \cs{FamilySetLength} einen Fehler
+% wirft, wenn eine Längenangabe mit falscher Einheit übergeben wird. Das 
+% optionale Argument gibt die gewünschte Längeneinheit an, falls diese im 
+% Argument nicht spezifiert wurde.
 %    \begin{macrocode}
-\newcommand*\TUD at set@dimenkey[3]{%
-  \tud at lowerstring\tud at res@a{#3}%
-  \edef\tud at res@b{%
-    \etex at unexpanded{\FamilySetUseLengthMacro{TUD}{#1}{#2}}{\tud at res@a}%
-  }\tud at res@b%
+\newcommand*\TUD at set@gluekey[4][pt]{%
+  \begingroup%
+    \tud at strlowercase\tud at res@a{#4}%
+%    \end{macrocode}
+% Es wird geprüft, ob das Argument zu einem String expandiert. Ist dies der
+% Fall, wird die vermeintliche Längenangabe mit \cs{tud at normalize@gluekey} 
+% normalisiert, wobei das Resultat in das Makro im ersten Argument des Befehls
+% zurückgeschrieben wird. Sollte das Normalisieren nicht gelingen, wird ein
+% leerer Wert zurückgegeben. 
+%    \begin{macrocode}
+    \edef\tud at res@b{\detokenize\expandafter{\tud at res@a}}%
+    \edef\tud at res@c{\detokenize\expandafter{\@backslashchar}}%
+    \@expandtwoargs\in@{\tud at res@c}{\tud at res@b}%
+    \ifin@\else%
+      \tud at normalize@gluekey\tud at res@a{#1}%
+    \fi%
+%    \end{macrocode}
+% Konnte eine Längenangabe interpretiert werden, wird für ein falsch 
+% formatiertes Argument mit \cs{tud at validate@gluekey} ggf. eine Warnung
+% ausgegeben und anschließend der gültige Wert gesetzt.
+%    \begin{macrocode}
+    \protected at edef\tud at res@a{%
+      \endgroup%
+      \ifx\tud at res@a\@empty%
+        \noexpand\FamilyKeyStateUnknownValue%
+      \else%
+        \unexpanded{\tud at validate@gluekey{#2}}{\tud at res@a}{#4}%
+        \unexpanded{\FamilySetUseLengthMacro{TUD}{#2}{#3}}{\tud at res@a}%
+      \fi%
+    }%
+  \tud at res@a%
 }
 %    \end{macrocode}
+% Das Makro \cs{tud at normalize@gluekey} erhält im ersten Argument den zu
+% interpretierenden String und im zweiten die ggf. zu setzende Einheit. Dieser
+% String wird in den Basiswert und möglichen Kleister aufgetrennt, wobei
+% hierbei auch eine vertauschte und eigentlich fehlerhafte Angabe von Kleister
+% in der Form |... minus ... plus ...| verarbeitet wird.
+%    \begin{macrocode}
+\newcommand*\tud at normalize@gluekey[2]{%
+  \begingroup%
+    \edef\tud at res@c{#1}%
+    \def\tud at res@a##1plus##2plus##3\@nil{%
+      \let\tud at res@a\@empty%
+      \tud at res@b##1minusminus\@nil%
+      \tud at res@b##2minusminus\@nil%
+    }%
+%    \end{macrocode}
+% Die vier Token \marg{Grundwert}\marg{negativ}\marg{positiv}\marg{negativ} 
+% werden in \cs{tud at res@a} geschrieben, wobei der zweite Token mit negativem
+% Kleister gesetzt ist, falls dieser \emph{vor} dem positiven angegeben wurde.
+%    \begin{macrocode}
+    \def\tud at res@b##1minus##2minus##3\@nil{%
+      \eappto\tud at res@a{{\trim at spaces{##1}}{\trim at spaces{##2}}}%
+    }%
+    \expandafter\tud at res@a\tud at res@c plusplus\@nil%
+%    \end{macrocode}
+% Hier wird dementsprechend \cs{tud at res@a} auf drei Token reduziert und so
+% definiert, dass auf den Grundwert erst der positive und danach der negative 
+% Kleister folgt.
+%    \begin{macrocode}
+    \def\tud at res@b##1##2##3##4{%
+      \IfArgIsEmpty{##2}{%
+        \def\tud at res@a{{##1}{##3}{##4}}%
+      }{%
+        \def\tud at res@a{{##1}{##3}{##2}}%
+      }%
+    }%
+    \expandafter\tud at res@b\tud at res@a%
+%    \end{macrocode}
+% Jeder der drei Token wird nun mit \cs{tud at normalize@@gluekey} geprüft, ob 
+% es sich tatsächlich um eine Dimensionsangabe oder zumindest einen Zahlenwert 
+% handelt. Für letzteren Fall wird die übergebene Einheit angehangen. Kann ein
+% Token nicht als Dimensionsangabe interpretiert werden~-- das übergebene Makro 
+% wird zu \cs{relax} gesetzt~-- wird der Prozess abgebrochen.
+%    \begin{macrocode}
+    \edef\tud at res@b{%
+      \unexpanded{\@tfor\tud at res@b:=}\tud at res@a%
+    }%
+    \let\tud at res@c\@empty%
+    \@tud at res@swatrue%
+    \tud at res@b\do{%
+      \tud at normalize@@gluekey\tud at res@a{\tud at res@b}{#2}%
+      \ifx\tud at res@a\relax%
+        \@tud at res@swafalse%
+        \@break at tfor%
+      \else%
+        \eappto\tud at res@c{{\tud at res@a}}%
+      \fi%
+    }%
+%    \end{macrocode}
+% Nach dem Durchlauf enthält \cs{tud at res@c} alle drei zuvor extrahierten Token, 
+% die ggf. um eine Einheit ergänzt wurden, falls diese gegeben waren. Der erste 
+% Token erhält folgend eine Sonderbehandlung. Wenn dieser leer ist, wird er auf 
+% alle Fälle gesetzt, da es sonst zu Problemen bei der Wertzuweisung an ein 
+% Längenregister gibt.
+%    \begin{macrocode}
+    \let\tud at res@a\@empty%
+    \if at tud@res at swa%
+      \def\tud at res@b##1##2##3{%
+        \IfArgIsEmpty{##1}{\def\tud at res@b{0#2}}{\def\tud at res@b{##1}}%
+        \Ifdimen{\tud at res@b}{%
+          \edef\tud at res@a{%
+            \tud at res@b%
+            \IfArgIsEmpty{##2}{}{\space\@plus\space##2}%
+            \IfArgIsEmpty{##3}{}{\space\@minus\space##3}%
+          }%
+        }{}%
+      }%
+      \expandafter\tud at res@b\tud at res@c%
+    \fi%
+    \edef\tud at res@c{%
+      \endgroup%
+      \unexpanded{\def#1}{\tud at res@a}%
+    }%
+  \tud at res@c%
+}
+%    \end{macrocode}
+% Diese Makro behandelt die einzelnen extrahierten Token. Dabei müssen zuerst 
+% die Vorzeichen beachtet werden, welches erst in \cs{tud at res@b} gesichert und 
+% anschließend von \cs{tud at res@a} entfernt wird.
+%    \begin{macrocode}
+\newcommand*\tud at normalize@@gluekey[3]{%
+  \begingroup%
+    \edef\tud at res@a{#2}%
+    \@tud at res@swafalse%
+    \expandafter\if\expandafter\@car\tud at res@a\relax\@nil+\@tud at res@swatrue\fi%
+    \expandafter\if\expandafter\@car\tud at res@a\relax\@nil-\@tud at res@swatrue\fi%
+    \if at tud@res at swa%
+      \protected at edef\tud at res@b{\expandafter\@car\tud at res@a\relax\@nil}%
+      \protected at edef\tud at res@a{\expandafter\@gobble\tud at res@a}%
+    \else%
+      \let\tud at res@b\@empty%
+    \fi%
+%    \end{macrocode}
+% Danach wird mit \cs{Ifdimen} geprüft, ob die Angabe tatsächlich eine Länge
+% ist. Hier kommt zum Tragen, das \cs{Ifdimen} auch wahr ist, wenn lediglich 
+% eine gültige Einheit ohne Maßzahl (\cs{Ifdimen}|{pt}|) angegeben wird.
+% Für Werte ohne Dimensionsangabe wird gegebenenfalls einfach das optionale
+% Argument als intendierte angenommen. Sollte es sich bei dem Argument nicht um
+% einen String sondern um eine \TeX"~Primitive oder ein geschütztes Makro
+% handeln, wird kein \val{true}-Zweig durchlaufen.
+%    \begin{macrocode}
+    \@tud at res@swatrue%
+    \Ifdimen{\tud at res@a}{}{%
+      \Ifdimen{\tud at res@a#3}{%
+        \appto\tud at res@a{#3}%
+      }{%
+        \@tud at res@swafalse%
+      }%
+    }%
+%    \end{macrocode}
+% Wertangaben ohne Betrag werden ignoriert.
+%    \begin{macrocode}
+    \if at tud@res at swa%
+      \Ifisdimension{\tud at res@a}{}{%
+        \let\tud at res@a\@empty%
+        \let\tud at res@b\@empty%
+      }%
+    \else%
+%    \end{macrocode}
+% Sollte keine gültige Dimension angegeben worden sein, wird nun geprüft, ob es 
+% sich um eine dehnbare Länge handelt. Diese \emph{muss} mit einer Maßzahl 
+% genutzt werden. Fehlt diese, wird \val{1} angenommen. Außerdem ist zu 
+% beachten, dass es insgesamt drei Abstufungen der dehnbaren Ausdrücke 
+% existieren.
+%    \begin{macrocode}
+      \def\tud at res@c##1fil##2fil##3\@nil{%
+        \IfArgIsEmpty{##1}{\def\tud at res@a{1}}{\def\tud at res@a{##1}}%
+        \Ifdimen{\tud at res@a pt}{\@tud at res@swatrue}{\@tud at res@swafalse}%
+        \if at tud@res at swa%
+          \appto\tud at res@a{fil##2}%
+          \tud at if@strequal{##2}{}{}{%
+            \tud at if@strequal{##2}{l}{}{%
+              \tud at if@strequal{##2}{ll}{}{\@tud at res@swafalse}%
+            }%
+          }%
+        \fi%
+      }%
+      \expandafter\tud at res@c\tud at res@a filfil\@nil%
+    \fi%
+%    \end{macrocode}
+% Das Vorzeichen nicht vergessen!
+%    \begin{macrocode}
+    \edef\tud at res@c{%
+      \endgroup%
+      \if at tud@res at swa%
+        \unexpanded{\def#1}{\tud at res@b\tud at res@a}%
+      \else%
+        \unexpanded{\let#1\relax}%
+      \fi%
+    }%
+  \tud at res@c%
+}
+%    \end{macrocode}
+% Mit diesem Makro wird ganz am Ende des Interpretationsprozesses das Ergebnis 
+% mit dem angegbenen Argument verglichen und eine Warnung erzeugt, falls die 
+% Formatierung des Argumentes es notwendig machte, dieses zu interpretieren.
+%    \begin{macrocode}
+\newcommand*\tud at validate@gluekey[3]{%
+  \begingroup%
+%    \end{macrocode}
+% Unterschiede bei Leerzeichen sollen keine Warnung erzeugen.
+%    \begin{macrocode}
+    \protected at edef\tud at res@a{#2}%
+    \protected at edef\tud at res@b{#3}%
+    \tud at remove@spaces at within\tud at res@a%
+    \tud at remove@spaces at within\tud at res@b%
+    \ifx\tud at res@a\tud at res@b%
+      \aftergroup\@gobble%
+    \else%
+      \aftergroup\@firstofone%
+    \fi%
+  \endgroup{%
+    \PackageWarning{tudscrbase}{%
+      The length `#3'\MessageBreak%
+      seems to be wrong formatted. Assuming, you meant\MessageBreak%
+      `#1=#2'%
+    }%
+  }%
+}
+%    \end{macrocode}
+% \end{macro}^^A \tud at validate@gluekey
+% \end{macro}^^A \tud at normalize@@gluekey
+% \end{macro}^^A \tud at normalize@gluekey
+% \end{macro}^^A \TUD at set@gluekey
+% \begin{macro}{\TUD at set@dimkey}
+% \changes{v2.05}{2016/06/15}{neu}^^A
+% \changes{v2.06}{2018/08/01}{forcierte Kleinschreibung Schlüsselwerte}^^A
+% Zur Angabe von Dimensionen wird auf \cs{TUD at set@gluekey} zurückgegriffen 
+% und anschließend geprüft, ob das Argument für \cs{dimen} genutzt werden kann.
+%    \begin{macrocode}
+\newcommand*\TUD at set@dimkey[4][pt]{%
+  \begingroup%
+    \TUD at set@gluekey[{#1}]{#2}{\tud at res@a}{#4}%
+    \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+%    \end{macrocode}
+% Das Ergebnis der Wertzuweisung an \cs{TUD at set@gluekey} wurde im Makro
+% \cs{tud at res@a} gespeichert. Handelt es sich beim Argument um ein
+% \cs{skip}"~Register oder eine \cs{glueexpr}, kann nicht sichergestellt 
+% werden, dass diesem später doch noch Kleister hinzugefügt wird, weshalb diese
+% nicht akzeptiert werden.
+%    \begin{macrocode}
+      \@tud at res@swafalse%
+      \Ifisskip{\tud at res@a}{%
+        \protected at edef\tud at res@a{\dimexpr\tud at res@a\relax}%
+        \def\tud at res@b{a \string\skip\space register}%
+        \@tud at res@swatrue%
+      }{%
+        \Ifisglueexpr{\tud at res@a}{%
+          \protected at edef\tud at res@a{\dimexpr\tud at res@a\relax}%
+          \def\tud at res@b{a glue expression}%
+          \@tud at res@swatrue%
+        }{%
+%    \end{macrocode}
+% Ebenso wird direkt angegebener Kleister entfernt. Nicht über das Konstrukt 
+% mit \cs{@tempdima} und \cs{glueexpr} wundern. Ohne das Paket \pkg{calc} ist 
+% die Zuweisung von Kleister als String an ein \cs{dimen}-Register nicht ohne 
+% weiteres möglich. Die Verwendung \cs{glueexpr} dient quasi als Umschlag.
+%    \begin{macrocode}
+          \Ifisglue{\tud at res@a}{%
+            \Ifisdimension{\tud at res@a}{}{%
+              \setlength\@tempdima{\dimexpr\glueexpr\tud at res@a\relax\relax}%
+              \tud at strlength\tud at res@a{\@tempdima}%
+              \def\tud at res@b{something containing glue}%
+              \@tud at res@swatrue%
+            }%
+          }{}%
+        }%
+      }%
+%    \end{macrocode}
+% Sollte einer der zuvor beschriebenen Fälle aufgetreten sein, wird eine 
+% Warnung ausgegeben.
+%    \begin{macrocode}
+      \if at tud@res at swa%
+        \PackageWarning{tudscrbase}{%
+          Using option `#2' with\MessageBreak%
+          \tud at res@b\space(#4)\MessageBreak%
+          is not recommended. You should consider to use\MessageBreak%
+          an expression for a dimen instead. Setting\MessageBreak%
+          `#2=\tud at res@a'%
+        }%
+      \fi%
+      \protected at edef\tud at res@a{%
+        \endgroup%
+        \unexpanded{\FamilySetUseLengthMacro{TUD}{#2}{#3}}{\tud at res@a}%
+      }%
+    \else%
+      \def\tud at res@a{\endgroup\FamilyKeyStateUnknownValue}%
+    \fi%
+  \tud at res@a%
+}
+%    \end{macrocode}
+% \end{macro}^^A \TUD at set@dimkey
+% \begin{macro}{\TUD at unknown@keyval}
 % Dieser Befehl wird lediglich pro forma definiert. An diesen kann eine Liste 
 % möglicher Wertzuweisungen übergeben werden, welche durch \KOMAScript{} 
 % derzeit jedoch nicht abgearbeitet und ausgegeben wird.
@@ -770,10 +1367,9 @@
 \newcommand*\TUD at unknown@keyval{\FamilyUnknownKeyValue{TUD}}
 %    \end{macrocode}
 % \end{macro}^^A \TUD at unknown@keyval
-% \end{macro}^^A \TUD at set@dimenkey
-% \end{macro}^^A \TUD at set@numkey
-% \end{macro}^^A \TUD at bool@numkey
-% \end{macro}^^A \TUD at set@ifkey
+%
+% \subsubsection{Voreinstellungen für abhängige Optionen}
+%
 % \begin{macro}{\tud at locked@newnum}
 % \begin{macro}{\tud at locked@num at preset}
 % \begin{macro}{\tud at locked@num at set}
@@ -781,10 +1377,11 @@
 % definieren, für das mit \cs{tud at locked@num at preset}\marg{Name}\marg{Definition}
 % eine Voreinstellung definiert werden kann, solange der Wert nicht mit
 % \cs{tud at locked@num at set}\marg{Name}\marg{Definition} explizit überschrieben
-% wurde.
+% wurde. Damit ist es möglich, Voreinstellungen abhängig von anderen Optionen 
+% zu realisieren.
 %    \begin{macrocode}
 \newcommand*\tud at locked@newnum[2]{%
-  \expandafter\newcommand\expandafter*\csname#1\endcsname{#2}%
+  \expandafter\newcommand\expandafter*\csname #1\endcsname{#2}%
   \newbool{#1 at locked}%
   \tud at num@set{#1}{#2}%
 }
@@ -799,8 +1396,15 @@
   \booltrue{#1 at locked}%
 }
 \newcommand*\tud at num@set[2]{%
-  \ifcsdef{#1}{%
-    \ifnumber{#2}{%
+  \ifcsundef{#1}{%
+    \PackageError{tudscrbase}{%
+      `\@backslashchar#1' was never defined%
+    }{%
+      You tried using the numerical expression `\@backslashchar#1'\MessageBreak%
+      but you didn't define it with `\string\tud at locked@newnum'.%
+    }%
+  }{%
+    \Ifnumber{#2}{%
       \csdef{#1}{#2}%
     }{%
       \PackageError{tudscrbase}{%
@@ -810,13 +1414,6 @@
         to value `#2', which isn't numerical.%
       }%
     }%
-  }{%
-    \PackageError{tudscrbase}{%
-      `\@backslashchar#1' was never defined%
-    }{%
-      You tried using the numerical expression `\@backslashchar#1'\MessageBreak%
-      but you didn't define it with `\string\tud at locked@newnum'.%
-    }%
   }%
 }
 %    \end{macrocode}
@@ -850,7 +1447,7 @@
   \booltrue{#1 at locked}%
 }
 \newcommand*\tud at bool@set[2]{%
-  \ifstrbool{#2}{\booltrue{#1}}{\boolfalse{#1}}{%
+  \tud at if@strbool{#2}{\booltrue{#1}}{\boolfalse{#1}}{%
     \PackageError{tudscrbase}{%
       `#2' is not a valid boolean expression%
     }{%
@@ -872,7 +1469,7 @@
 % \begin{macro}{\TUD at parameter@@family}
 % \begin{macro}{\TUD at parameter@checkfamily}
 % Mit \cs{TUD at parameter@family}\marg{Familienname}\marg{Definitionen} können
-% Schlüssel"=Wert"=Parameter für die optionalen Argumente von Befehle definiert
+% für die optionalen Argumente von Befehlen Schlüssel-Wert-Parameter definiert
 % werden. Das erste Argument definiert den Familiennamen für den jeweiligen 
 % Befehl, welcher eindeutig gewählt werden sollte. Dieser wird im Hilfsmakro
 % \cs{TUD at parameter@@family} gesichert. Dies soll im Zusammenspiel mit dem 
@@ -882,10 +1479,10 @@
 % Parameter für den Benutzer bewerkstelligen~-- ohne die Angabe der Familie 
 % nur innerhalb des zweiten Argumentes von \cs{TUD at parameter@family} verwendet
 % werden können.
-% \ToDo{%
-%  Eine Katastrophe, dringend überarbeiten; generelle Lösung mit \cs{toks@}?%
-%  KOMA-Option \val{@else@} verwenden?
-% }[v2.07]%
+% \ToDo{
+%   Eine Katastrophe, dringend überarbeiten; generelle Lösung mit \cs{toks@}? 
+%   KOMA-Option \val{@else@} verwenden?
+% }[v2.07]
 %    \begin{macrocode}
 \newcommand*\TUD at parameter@@family{}
 \newcommand*\TUD at parameter@family[2]{%
@@ -897,7 +1494,7 @@
 % Dieser Befehl prüft, ob eine Familie für den Paramter definiert wurde.
 %    \begin{macrocode}
 \newcommand*\TUD at parameter@checkfamily[2]{%
-  \ifxblank{#1}{%
+  \tud at if@strblank{#1}{%
     \PackageError{tudscrbase}{%
       No family for \@backslashchar#2 defined%
     }{%
@@ -953,7 +1550,7 @@
   \IfArgIsEmpty{#2}{}{%
 %    \end{macrocode}
 % Hierfür wird die angegebene Parameterliste sukzessive abgearbeitet. Elemente, 
-% welche in Schlüssel"=Wert"=Syntax angegeben wurden, bleiben unverändert\dots
+% welche in Schlüssel-Wert-Syntax angegeben wurden, bleiben unverändert\dots
 %    \begin{macrocode}
     \let\@tempb\@empty%
     \def\@tempa##1{%
@@ -1016,15 +1613,15 @@
 % Das erste obligatorische Argument von \cs{TUD at parameter@handler at macro} wird 
 % für die Verarbeitung unbekannter Schlüssel-Wert-Paare genutzt, das zweite für 
 % einfache optionale Argumente.
-% \ToDo{%
-%  Eine Katastrophe, dringend überarbeiten; generelle Lösung mit \cs{toks@}?%
-%  KOMA-Option \val{@else@} verwenden?
-% }[v2.07]%
+% \ToDo{
+%   Eine Katastrophe, dringend überarbeiten; generelle Lösung mit \cs{toks@}? 
+%   KOMA-Option \val{@else@} verwenden?
+% }[v2.07]
 %    \begin{macrocode}
 \newcommand*\TUD at parameter@handler at macro[3][\TUD at parameter@@family]{%
   \TUD at parameter@checkfamily{#1}{TUD at parameter@handler at macro}%
   \expandafter\kv at set@family at handler\expandafter{#1}{%
-    \ifstr{\kv at key}{\TUD at parameter@nokey}{#3}{#2}%
+    \tud at if@strequal{\kv at key}{\TUD at parameter@nokey}{#3}{#2}%
   }%
 }
 %    \end{macrocode}
@@ -1041,7 +1638,7 @@
   \protected at edef\@tempa{%
     \noexpand\TUD at parameter@set{#1}{#2=\noexpand\kv at value}%
   }%
-  \def\@tempb{\TUD at parameter@handler at macro[#1]{\kv at handled@false}}%
+  \def\@tempb{\TUD at parameter@handler at macro[{#1}]{\kv at handled@false}}%
   \expandafter\@tempb\expandafter{\@tempa}%
 }
 %    \end{macrocode}
@@ -1056,22 +1653,24 @@
 %    \begin{macrocode}
 \newcommand*\TUD at parameter@handler at default[2][\TUD at parameter@@family]{%
   \TUD at parameter@checkfamily{#1}{TUD at parameter@handler at default}%
-  \ifxblank{#2}{%
+  \tud at if@strblank{#2}{%
     \def\@tempa{\let\tud at reserved\relax}%
   }{%
     \def\@tempa{\def\tud at reserved{#2=\kv at value}}%
   }%
   \appto\@tempa{%
-    \ifstr{\kv at value}{twocolumn}{\def\kv at value{2}}{}%
-    \ifnumber{\kv at value}{\def\tud at reserved{columns=\kv at value}}{}%
+    \tud at if@strequal{\kv at value}{twocolumn}{\def\kv at value{2}}{}%
+    \Ifnumber{\kv at value}{\def\tud at reserved{columns=\kv at value}}{}%
     \iflanguageloaded{\kv at value}{\def\tud at reserved{language=\kv at value}}{}%
     \ifx\tud at reserved\relax%
-      \PackageError{tudscrbase}{%
-        Unknown default value `\kv at value'%
-      }{%
-        If `\kv at value' is a language, you haven't loaded it. \MessageBreak%
-        Otherwise, there's no handler for the given value. \MessageBreak%
-        You should specify a certian key (<key>=\kv at value).%
+      \tud at if@strblank{\kv at value}{}{%
+        \PackageError{tudscrbase}{%
+          Unknown default value `\kv at value'%
+        }{%
+          If `\kv at value' is a language, you haven't loaded it. \MessageBreak%
+          Otherwise, there's no handler for the given value. \MessageBreak%
+          You should specify a certian key (<key>=\kv at value).%
+        }%
       }%
     \fi%
   }%
@@ -1080,24 +1679,25 @@
       \noexpand\TUD at parameter@set{#1}{\noexpand\tud at reserved}%
     \noexpand\fi%
   }%
-  \def\@tempb{\TUD at parameter@handler at macro[#1]{\kv at handled@false}}%
+  \def\@tempb{\TUD at parameter@handler at macro[{#1}]{\kv at handled@false}}%
   \expandafter\@tempb\expandafter{\@tempa}%
 }
 %    \end{macrocode}
 % \end{macro}^^A \TUD at parameter@handler at default
-% \begin{macro}{\TUD at parameter@error}
-% Das Makro \cs{TUD at parameter@wrn}\marg{Parameter}\marg{Werteliste} gibt für
+% \begin{macro}{\TUD at parameter@err}
+% Das Makro \cs{TUD at parameter@err}\marg{Parameter}\marg{Werteliste} gibt für
 % den Fall einer ungültigen Wertzuweisung an einen bestimmten \meta{Parameter}
-% eine Warnung mit einem entsprechenden Hinweis auf gültige Werte innerhalb von
+% einen Fehler mit einem entsprechenden Hinweis auf gültige Werte innerhalb von
 % \meta{Werteliste} aus.
 %    \begin{macrocode}
-\newcommand*\TUD at parameter@error[2]{%
+\newcommand*\TUD at parameter@err[2]{%
   \PackageError{tudscrbase}{Unsupported value for parameter `#1'}{%
     `#1' can only be used with values:\MessageBreak#2%
+    \MessageBreak Please choose a valid one.%
   }%
 }
 %    \end{macrocode}
-% \end{macro}^^A \TUD at parameter@error
+% \end{macro}^^A \TUD at parameter@err
 %
 % \subsection{Ausführung von paketspezifischem Quellcode}
 %
@@ -1105,11 +1705,16 @@
 % Ladezustand eines Paketes auszuführen.
 % \begin{macro}{\TUD at UnwindPackage}
 % \changes{v2.05}{2015/10/28}{neu}^^A
+% \changes{v2.06o}{2022/08/02}{Sternversion}^^A
 % Dieser Befehl dient zur Ausführung von Quelltext, falls ein Paket bis zum 
 % Ende der Dokumentpräambel nicht geladen wurde. Im ersten obligatorischen
-% Argument wird das Paket angegeben, im zweiten der Quellcode.
+% Argument wird das Paket angegeben, im zweiten der Quellcode. Die Sternversion 
+% führt den Quellcode auch nach dem Laden des Paketes aus.
 %    \begin{macrocode}
-\newcommand*\TUD at UnwindPackage[2]{\AtEndPreamble{\@ifpackageloaded{#1}{}{#2}}}
+\NewDocumentCommand\TUD at UnwindPackage{s m m}{%
+  \IfBooleanT{#1}{\AfterPackage*{#2}{#3}}%
+  \AtEndPreamble{\@ifpackageloaded{#2}{}{#3}}%
+}
 \@onlypreamble\TUD at UnwindPackage
 %    \end{macrocode}
 % \end{macro}^^A \TUD at UnwindPackage
@@ -1125,12 +1730,13 @@
 % zu laden. Ist das Paket gar nicht installiert, wird durch den Aufruf von 
 % \cs{RequirePackage} ein Fehler erzeugt respektive MiKTeX zur automatischen 
 % Nachinstallation animiert.
+% \ToDo{.aux schreiben, wenn existent und so ggf. nur einmalig ausführen}[v2.07]
 %    \begin{macrocode}
 \newcommand*\TUD at CheckPackage[2]{%
   \tud at if@packagelater at exists{#1}{#2}{}{%
     \PackageWarningNoLine{tudscrbase}{%
       The version `#2' of package `#1'\MessageBreak%
-      is urgently required. An erroneous output\MessageBreak
+      is urgently required. An erroneous output\MessageBreak%
       may occur. Please update your distribution%
     }%
     \IfFileExists{#1.sty}{}{\RequirePackage{#1}[#2]}%
@@ -1139,9 +1745,11 @@
 \@onlypreamble\TUD at CheckPackage
 %    \end{macrocode}
 % Hiermit wird geprüft, ob ein installiertes Paket in einer bestimmten Version
-% installiert ist, ohne dieses zu laden. Hierfür wird die Datei zeilenweise 
-% gelesen, bis der Eintrag \cs{ProvidesPackage\marg{Paketname}\oarg{Version}} 
-% gefunden wird. 
+% vorhanden ist, ohne dieses zu laden. Hierfür wird die Datei zeilenweise 
+% gelesen, bis der Eintrag \cs{ProvidesPackage}\marg{Paketname}\oarg{Version} 
+% gefunden wird.
+% \ToDo{kann \cs{@ifl at t@r} ersetzt werden?}[v2.07]
+% \ToDo{Name in \cs{IfPackageExistsAtLeastTF} ändern}[v2.07]
 %    \begin{macrocode}
 \newcommand*\tud at if@packagelater at exists[2]{%
   \begingroup%
@@ -1148,14 +1756,15 @@
     \let\tud at res@a\@empty%
     \def\tud at res@b[##1]{\def\tud at res@a{##1}}%
     \def\ProvidesPackage##1{%
-      \@ifnextchar[%]
-        {\tud at res@b}{\tud at res@b[]}%
+      \kernel at ifnextchar[%]
+        {\tud at res@b}%
+        {\tud at res@b[]}%
     }%
     \IfFileExists{#1.sty}{%
-      \openin\tud at res@read=#1.sty%
+      \openin\@inputcheck=#1.sty%
       \@tud at res@swatrue%
       \loop%
-        \read\tud at res@read to\tud at res@c%
+        \read\@inputcheck to\tud at res@c%
         \@expandtwoargs\in@{\string\ProvidesPackage}%
           {\expandafter\detokenize\expandafter{\tud at res@c}}%
         \ifin@%
@@ -1162,12 +1771,12 @@
           \@tud at res@swafalse%
           \tud at res@c%
         \fi%
-        \ifeof\tud at res@read\@tud at res@swafalse\fi%
+        \ifeof\@inputcheck\@tud at res@swafalse\fi%
         \if at tud@res at swa%
       \repeat%
-      \closein\tud at res@read%
+      \closein\@inputcheck%
     }{}%
-    \edef\tud at res@a{\endgroup\noexpand\@ifl at t@r{\tud at res@a}{#2}}
+    \edef\tud at res@a{\endgroup\noexpand\@ifl at t@r{\tud at res@a}{#2}}%
   \tud at res@a%
 }
 \@onlypreamble\tud at if@packagelater at exists
@@ -1176,6 +1785,7 @@
 % \end{macro}^^A \TUD at CheckPackage
 % \begin{macro}{\TUD at RecommendPackage}
 % \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\TUD at Recommend@Package}
 % Bestimmte Pakete sind für die Funktionalität von \TUDScript empfohlen, aber 
 % nicht zwingend erforderlich. Sind diese nicht vorhanden, wird eine Warnung 
 % ausgegeben.
@@ -1182,12 +1792,12 @@
 %    \begin{macrocode}
 \newcommand*\TUD at RecommendPackage[1]{%
   \kernel at ifnextchar[%]
-    {\TUD@@RecommendPackage#1}%
-    {\TUD@@RecommendPackage#1[]}%
+    {\TUD at Recommend@Package#1}%
+    {\TUD at Recommend@Package#1[]}%
 }
 \@onlypreamble\TUD at RecommendPackage
-\newcommand*\TUD@@RecommendPackage{}
-\def\TUD@@RecommendPackage#1[#2]{%
+\newcommand*\TUD at Recommend@Package{}
+\def\TUD at Recommend@Package#1[#2]{%
   \IfFileExists{#1.sty}{%
     \RequirePackage{#1}[#2]%
   }{%
@@ -1197,8 +1807,9 @@
     }%
   }%
 }
-\@onlypreamble\TUD@@RecommendPackage
+\@onlypreamble\TUD at Recommend@Package
 %    \end{macrocode}
+% \end{macro}^^A \TUD at Recommend@Package
 % \end{macro}^^A \TUD at RecommendPackage
 % \begin{macro}{\TUD at AfterPackage@set}
 % \changes{v2.04}{2015/03/09}{neu}^^A
@@ -1214,18 +1825,17 @@
   \AfterAtEndOfPackage*{#1}{\booltrue{@tud@#1 at loaded}}%
 }
 \newcommand*\TUD at AfterPackage@do[2]{%
-  \ifcsdef{if at tud@#1 at loaded}{%
-    \if at atdocument%
-      \ifbool{@tud@#1 at loaded}{#2}{}%
-    \else%
-      \AfterAtEndOfPackage*{#1}{#2}%
-    \fi%
-  }{%
+  \ifcsundef{if at tud@#1 at loaded}{%
     \PackageError{tudscrbase}{\string\TUD at AfterPackage@set{#1} missing}{%
       You have to set \string\TUD at AfterPackage@set{#1} before\MessageBreak%
-      the usage of \string\TUD at AfterPackage@do{#1}{<code>} is\MessageBreak%
-      possible.%
+      using \string\TUD at AfterPackage@do{#1}{<code>}.%
     }%
+  }{%
+    \tud at if@preamble{%
+      \AfterAtEndOfPackage*{#1}{#2}%
+    }{%
+      \ifbool{@tud@#1 at loaded}{#2}{}%
+    }%
   }%
 }
 %    \end{macrocode}
@@ -1251,13 +1861,14 @@
 \ifundef{\KOMAClassName}{%
   \renewcommand*\TUD at KOMAoptions[1]{%
     \PackageWarning{tudscrbase}{%
-      You should load package `scrextend' right after the\MessageBreak%
-      documentclass. Option \string\TUD at KOMAoptions{`#1'} is gobbled%
+      You should load package `scrextend' right after\MessageBreak%
+      the documentclass. The following option is gobbled:\MessageBreak%
+      \string\KOMAoptions{`#1'}%
     }%
   }%
-  \AfterPackage*{scrextend}{\let\TUD at KOMAoptions\KOMAoptions}%
+  \AfterPackage*{scrextend}{\def\TUD at KOMAoptions{\KOMAoptions}}%
 }{%
-  \let\TUD at KOMAoptions\KOMAoptions%
+  \def\TUD at KOMAoptions{\KOMAoptions}%
 }
 %</package&base>
 %    \end{macrocode}
@@ -1284,7 +1895,6 @@
 % \fi
 %
 % \section{Zusätzliches für die \TUDScript-Klassen}
-%
 % \subsection{Erweiterung von \KOMAScript-Schriftelementen}
 %
 % \begin{macro}{\tud at komafont@set}
@@ -1294,7 +1904,7 @@
 % Es wird die Möglichkeit geschaffen, bestimmten Schriftelementen weitere
 % Eigenschaften mitzugeben. Damit dies optionsabhängig geschehen kann und
 % \cs{addtokomafont} nur einmalig verwendete werden muss, wird im Zweifelsfall
-% einem Schriftelement ein Hilfsmakro \cs{tud at komafont@\meta{Element}} 
+% einem Schriftelement ein Hilfsmakro |\tud at komafont@|\meta{Element} 
 % zugewiesen, welches intern angepasst werden kann. Mit \cs{tud at komafont@set} 
 % werden dem angegebenen Element die gewünschten Schriftattribute zugeteilt.
 %    \begin{macrocode}
@@ -1345,7 +1955,7 @@
 % \env{tudpage} wird das Paket \pkg{environ} für die Umgebungsdefinition
 % benötigt.
 %    \begin{macrocode}
-\RequirePackage{environ}[2013/04/01]
+\RequirePackage{environ}
 %    \end{macrocode}
 %
 % Innerhalb dieser Umgebungen soll es außerdem möglich sein, ein mehrspaltiges 
@@ -1397,13 +2007,15 @@
         which now will be loaded automatically%
       }%
     }{}%
-    \RequirePackage{graphicx}[1999/02/16]%
+    \RequirePackage{graphicx}
   }%
 %    \end{macrocode}
 % Mit dem Paket \pkg{tudscrcolor} werden die Befehle für die Auswahl der Farben
 % des \CDs definiert, welches wiederum \pkg{xcolor} lädt.
 %    \begin{macrocode}
-  \RequirePackage{tudscrcolor}[\TUD at Version]%
+  \RequirePackage{tudscrcolor}[%
+%!TUD at Version
+  ]%
 }
 %    \end{macrocode}
 %
@@ -1411,60 +2023,6 @@
 %</class&body>
 % \fi
 %
-% \Finale
+% \PrintBackMatter
 %
 \endinput
-
-%
-% \begin{macro}{\TUD at noworlater}
-% \changes{v2.05}{2015/07/03}{neu implementiert}^^A
-% \begin{macro}{\TUD at noworlater@simple}
-% \changes{v2.05}{2015/07/03}{neu}^^A
-% Hiermit kann die Abarbeitung der Optionen an das Ende der verwendeten 
-% Klasse bzw. des Paketes verzögert werden. Aufgrund der Besonderheiten der
-% Befehle \cs{AtEndOfClass} und \cs{AtEndOfPackage} können diese nicht
-% innerhalb von \pkg{tudscrbase} sondern erst außerhalb nach dem Laden
-% definiert werden. Damit keine Probleme dabei auftreten, falls das Paket
-% geladen wird ohne daran anschließend die notwendigen Redefinitionen
-% durchzuführen, werden die beiden Varianten des Befehls \cs{TUD at noworlater} 
-% im Paket definiert. 
-%
-% Im ersten Argument von \cs{TUD at noworlater} wird einer der wertzuweisenden
-% Befehle für Optionen (\cs{TUD at set@\dots}) erwartet. Dieser wird immer
-% ausgeführt, um ungültige Wertzuweisungen einer Option, welche als globale
-% Klassenoption angegeben wurde, über die \LaTeX-Standardroutine als Warnung
-% auszugeben. Bei der eigentlichen~-- sprich verzögerten~-- Ausführung der
-% Option wird die Wertzuweisung abermals ausgeführt, gefolgt von der im 
-% zweiten Argument definierten Abarbeitung dieser.
-%    \begin{macrocode}
-%<*package&base>
-\newcommand*\TUD at noworlater[2]{}
-\newcommand*\TUD at noworlater@simple[2]{%
-  \PackageWarning{tudscrbase}{%
-    The content of \string\TUD at noworlater will be executed immediately%
-  }%
-  #1#2%
-}
-\let\TUD at noworlater\TUD at noworlater@simple
-%</package&base>
-%    \end{macrocode}
-% Nach dem Laden des Paketes wird geprüft, ob die ursprüngliche Definition 
-% des Befehls aus dem Paket noch besteht. Ist dies der Fall, wird der Befehl
-% zur Verzögerung an das Ende der Klasse bzw. des Paketes umdefiniert.
-%    \begin{macrocode}
-%<*load>
-\ifx\TUD at noworlater\TUD at noworlater@simple
-%<*class>
-  \renewcommand*\TUD at noworlater[2]{#1\AtEndOfClass{#1#2}}%
-  \AtEndOfClass{\renewcommand*\TUD at noworlater[2]{#1#2}}%
-%</class>
-%<*package>
-  \renewcommand*\TUD at noworlater[2]{#1\AtEndOfPackage{#1#2}}%
-  \AtEndOfPackage{\renewcommand*\TUD at noworlater[2]{#1#2}}%
-%</package>
-\fi
-%</load>
-%    \end{macrocode}
-% \end{macro}^^A \TUD at noworlater@simple
-% \end{macro}^^A \TUD at noworlater
-%

Modified: trunk/Master/texmf-dist/source/latex/tudscr/tudscr-color.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tudscr/tudscr-color.dtx	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/source/latex/tudscr/tudscr-color.dtx	2022-08-09 20:01:54 UTC (rev 64085)
@@ -1,10 +1,10 @@
-% \CheckSum{216}
 % \iffalse meta-comment
+%/GitFileInfo=tudscr-color.dtx
 %
 %  TUD-Script -- Corporate Design of Technische Universität Dresden
 % ----------------------------------------------------------------------------
 %
-%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2021
+%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2022
 %
 % ----------------------------------------------------------------------------
 %
@@ -23,44 +23,19 @@
 %
 % \fi
 %
-% \CharacterTable
-%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-%   Digits        \0\1\2\3\4\5\6\7\8\9
-%   Exclamation   \!     Double quote  \"     Hash (number) \#
-%   Dollar        \$     Percent       \%     Ampersand     \&
-%   Acute accent  \'     Left paren    \(     Right paren   \)
-%   Asterisk      \*     Plus          \+     Comma         \,
-%   Minus         \-     Point         \.     Solidus       \/
-%   Colon         \:     Semicolon     \;     Less than     \<
-%   Equals        \=     Greater than  \>     Question mark \?
-%   Commercial at \@     Left bracket  \[     Backslash     \\
-%   Right bracket \]     Circumflex    \^     Underscore    \_
-%   Grave accent  \`     Left brace    \{     Vertical bar  \|
-%   Right brace   \}     Tilde         \~}
-%
-% \iffalse
-%%% From File: tudscr-color.dtx
+% \iffalse ins:batch + dtx:driver
+%<*ins>
+\ifx\documentclass\undefined
+  \input docstrip.tex
+  \ifToplevel{\batchinput{tudscr.ins}}
+\else
+  \let\endbatchfile\relax
+\fi
+\endbatchfile
+%</ins>
 %<*dtx>
-% \fi
-%
-\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
-\ProvidesFile{tudscr-color.dtx}[2019/06/28 v2.06 TUD-Script\space%
-%
-% \iffalse
-%</dtx>
-%<package>\ProvidesPackage{tudscrcolor}[%
-%<*package>
-%!TUD at Version
-%</package>
-%<package>  package
-%<*dtx|package>
-% \fi
-  (corporate design colors)%
-]
-% \iffalse
-%</dtx|package>
-%<*dtx>
+\ProvidesFile{tudscr-color.dtx}[2022/08/09]
+\RequirePackage{tudscr-gitinfo}
 \documentclass[english,ngerman,xindy]{tudscrdoc}
 \iftutex
   \usepackage{fontspec}
@@ -70,18 +45,11 @@
 \fi
 \usepackage{babel}
 \usepackage{tudscrfonts}
-\KOMAoptions{parskip=half-}
-\usepackage{bookmark}
 \usepackage[babel]{microtype}
 
-\CodelineIndex
-\RecordChanges
-\GetFileInfo{tudscr-color.dtx}
-\title{\file{\filename}}
-\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
-\date{\fileversion\nobreakspace(\filedate)}
-
+\GitHubBase{\TUDScriptRepository}
 \begin{document}
+  \author{Falk Hanisch\TUDScriptContactTitle}
   \maketitle
   \tableofcontents
   \DocInput{\filename}
@@ -91,6 +59,8 @@
 %
 % \selectlanguage{ngerman}
 %
+%
+%
 % \section{Das Paket \pkg{tudscrcolor} -- Die Farben des \CDs}
 %
 % Das \TUDCD legt nicht nur die zu nutzenden Schriften und das Layout sondern 
@@ -99,7 +69,16 @@
 % zur Farbauswahl wie \cs{color}\marg{Farbe} oder \cs{textcolor}\marg{Farbe} 
 % verwendet werden.
 %
-% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
+%    \begin{macrocode}
+% \iffalse
+%<*package>
+\ProvidesPackage{tudscrcolor}[%
+%!TUD at Version
+  package (corporate design colors)%
+]
+%</package>
+% \fi
+%    \end{macrocode}
 %
 % \iffalse
 %<*package>
@@ -110,17 +89,21 @@
 % \begin{option}{newcolors}
 % \begin{option}{reduced}
 % \begin{option}{oldcolors}
+% \begin{option}{extended}
 % \begin{option}{full}
 % Das Paket kann entweder mit einfachen, für \TUDScript ausreichenden oder 
 % erweiterten Farbdefinitionen geladen werden. Letztere definieren zusätzliche 
 % Farbbezeichnungen für die Kompatibilität zu alten TUD-Klassen.
+% \ToDo{Optionen oldcolors und colormodel mit key-value-interface!}[v2.07]
 %    \begin{macrocode}
 \DeclareOption{newcolors}{\let\tud at setcolors@add\relax}
 \DeclareOption{reduced}{\let\tud at setcolors@add\relax}
 \DeclareOption{oldcolors}{\let\tud at setcolors@add\tud at setcolors@old}
+\DeclareOption{extended}{\let\tud at setcolors@add\tud at setcolors@old}
 \DeclareOption{full}{\let\tud at setcolors@add\tud at setcolors@old}
 %    \end{macrocode}
 % \end{option}^^A full
+% \end{option}^^A extended
 % \end{option}^^A oldcolors
 % \end{option}^^A reduced
 % \end{option}^^A newcolors
@@ -258,172 +241,26 @@
 % \begin{macro}{\tud at setcolors@add}
 % \begin{macro}{\tud at setcolors@old}
 % Die erweiterten Farbbefehle werden durch \pkg{tudscrcolor} definiert, wenn
-% das Paket explizit mit der Option \opt{oldcolors} geladen wird. Damit werden 
+% das Paket explizit mit der Option \opt{extended} geladen wird. Damit werden 
 % alle gängigen Farbdefinitionen der vielen Insellösungen des \LaTeX-Universums
 % an der \TnUD unterstützt.
 %    \begin{macrocode}
 \newcommand*\tud at setcolors@add{}
 \newcommand*\tud at setcolors@old{%
-  \colorlet{HKS41K10}{HKS41!10}%
-  \colorlet{HKS41K20}{HKS41!20}%
-  \colorlet{HKS41K30}{HKS41!30}%
-  \colorlet{HKS41K40}{HKS41!40}%
-  \colorlet{HKS41K50}{HKS41!50}%
-  \colorlet{HKS41K60}{HKS41!60}%
-  \colorlet{HKS41K70}{HKS41!70}%
-  \colorlet{HKS41K80}{HKS41!80}%
-  \colorlet{HKS41K90}{HKS41!90}%
-  \colorlet{HKS41K100}{HKS41!100}%
-  \colorlet{HKS92K10}{HKS92!10}%
-  \colorlet{HKS92K20}{HKS92!20}%
-  \colorlet{HKS92K30}{HKS92!30}%
-  \colorlet{HKS92K40}{HKS92!40}%
-  \colorlet{HKS92K50}{HKS92!50}%
-  \colorlet{HKS92K60}{HKS92!60}%
-  \colorlet{HKS92K70}{HKS92!70}%
-  \colorlet{HKS92K80}{HKS92!80}%
-  \colorlet{HKS92K90}{HKS92!90}%
-  \colorlet{HKS92K100}{HKS92!100}%
-  \colorlet{HKS44K10}{HKS44!10}%
-  \colorlet{HKS44K20}{HKS44!20}%
-  \colorlet{HKS44K30}{HKS44!30}%
-  \colorlet{HKS44K40}{HKS44!40}%
-  \colorlet{HKS44K50}{HKS44!50}%
-  \colorlet{HKS44K60}{HKS44!60}%
-  \colorlet{HKS44K70}{HKS44!70}%
-  \colorlet{HKS44K80}{HKS44!80}%
-  \colorlet{HKS44K90}{HKS44!90}%
-  \colorlet{HKS44K100}{HKS44!100}%
-  \colorlet{HKS36K10}{HKS36!10}%
-  \colorlet{HKS36K20}{HKS36!20}%
-  \colorlet{HKS36K30}{HKS36!30}%
-  \colorlet{HKS36K40}{HKS36!40}%
-  \colorlet{HKS36K50}{HKS36!50}%
-  \colorlet{HKS36K60}{HKS36!60}%
-  \colorlet{HKS36K70}{HKS36!70}%
-  \colorlet{HKS36K80}{HKS36!80}%
-  \colorlet{HKS36K90}{HKS36!90}%
-  \colorlet{HKS36K100}{HKS36!100}%
-  \colorlet{HKS33K10}{HKS33!10}%
-  \colorlet{HKS33K20}{HKS33!20}%
-  \colorlet{HKS33K30}{HKS33!30}%
-  \colorlet{HKS33K40}{HKS33!40}%
-  \colorlet{HKS33K50}{HKS33!50}%
-  \colorlet{HKS33K60}{HKS33!60}%
-  \colorlet{HKS33K70}{HKS33!70}%
-  \colorlet{HKS33K80}{HKS33!80}%
-  \colorlet{HKS33K90}{HKS33!90}%
-  \colorlet{HKS33K100}{HKS33!100}%
-  \colorlet{HKS57K10}{HKS57!10}%
-  \colorlet{HKS57K20}{HKS57!20}%
-  \colorlet{HKS57K30}{HKS57!30}%
-  \colorlet{HKS57K40}{HKS57!40}%
-  \colorlet{HKS57K50}{HKS57!50}%
-  \colorlet{HKS57K60}{HKS57!60}%
-  \colorlet{HKS57K70}{HKS57!70}%
-  \colorlet{HKS57K80}{HKS57!80}%
-  \colorlet{HKS57K90}{HKS57!90}%
-  \colorlet{HKS57K100}{HKS57!100}%
-  \colorlet{HKS65K10}{HKS65!10}%
-  \colorlet{HKS65K20}{HKS65!20}%
-  \colorlet{HKS65K30}{HKS65!30}%
-  \colorlet{HKS65K40}{HKS65!40}%
-  \colorlet{HKS65K50}{HKS65!50}%
-  \colorlet{HKS65K60}{HKS65!60}%
-  \colorlet{HKS65K70}{HKS65!70}%
-  \colorlet{HKS65K80}{HKS65!80}%
-  \colorlet{HKS65K90}{HKS65!90}%
-  \colorlet{HKS65K100}{HKS65!100}%
-  \colorlet{HKS07K10}{HKS07!10}%
-  \colorlet{HKS07K20}{HKS07!20}%
-  \colorlet{HKS07K30}{HKS07!30}%
-  \colorlet{HKS07K40}{HKS07!40}%
-  \colorlet{HKS07K50}{HKS07!50}%
-  \colorlet{HKS07K60}{HKS07!60}%
-  \colorlet{HKS07K70}{HKS07!70}%
-  \colorlet{HKS07K80}{HKS07!80}%
-  \colorlet{HKS07K90}{HKS07!90}%
-  \colorlet{HKS07K100}{HKS07!100}%
-  \colorlet{HKS41-10}{HKS41!10}%
-  \colorlet{HKS41-20}{HKS41!20}%
-  \colorlet{HKS41-30}{HKS41!30}%
-  \colorlet{HKS41-40}{HKS41!40}%
-  \colorlet{HKS41-50}{HKS41!50}%
-  \colorlet{HKS41-60}{HKS41!60}%
-  \colorlet{HKS41-70}{HKS41!70}%
-  \colorlet{HKS41-80}{HKS41!80}%
-  \colorlet{HKS41-90}{HKS41!90}%
-  \colorlet{HKS41-100}{HKS41!100}%
-  \colorlet{HKS92-10}{HKS92!10}%
-  \colorlet{HKS92-20}{HKS92!20}%
-  \colorlet{HKS92-30}{HKS92!30}%
-  \colorlet{HKS92-40}{HKS92!40}%
-  \colorlet{HKS92-50}{HKS92!50}%
-  \colorlet{HKS92-60}{HKS92!60}%
-  \colorlet{HKS92-70}{HKS92!70}%
-  \colorlet{HKS92-80}{HKS92!80}%
-  \colorlet{HKS92-90}{HKS92!90}%
-  \colorlet{HKS92-100}{HKS92!100}%
-  \colorlet{HKS44-10}{HKS44!10}%
-  \colorlet{HKS44-20}{HKS44!20}%
-  \colorlet{HKS44-30}{HKS44!30}%
-  \colorlet{HKS44-40}{HKS44!40}%
-  \colorlet{HKS44-50}{HKS44!50}%
-  \colorlet{HKS44-60}{HKS44!60}%
-  \colorlet{HKS44-70}{HKS44!70}%
-  \colorlet{HKS44-80}{HKS44!80}%
-  \colorlet{HKS44-90}{HKS44!90}%
-  \colorlet{HKS44-100}{HKS44!100}%
-  \colorlet{HKS36-10}{HKS36!10}%
-  \colorlet{HKS36-20}{HKS36!20}%
-  \colorlet{HKS36-30}{HKS36!30}%
-  \colorlet{HKS36-40}{HKS36!40}%
-  \colorlet{HKS36-50}{HKS36!50}%
-  \colorlet{HKS36-60}{HKS36!60}%
-  \colorlet{HKS36-70}{HKS36!70}%
-  \colorlet{HKS36-80}{HKS36!80}%
-  \colorlet{HKS36-90}{HKS36!90}%
-  \colorlet{HKS36-100}{HKS36!100}%
-  \colorlet{HKS33-10}{HKS33!10}%
-  \colorlet{HKS33-20}{HKS33!20}%
-  \colorlet{HKS33-30}{HKS33!30}%
-  \colorlet{HKS33-40}{HKS33!40}%
-  \colorlet{HKS33-50}{HKS33!50}%
-  \colorlet{HKS33-60}{HKS33!60}%
-  \colorlet{HKS33-70}{HKS33!70}%
-  \colorlet{HKS33-80}{HKS33!80}%
-  \colorlet{HKS33-90}{HKS33!90}%
-  \colorlet{HKS33-100}{HKS33!100}%
-  \colorlet{HKS57-10}{HKS57!10}%
-  \colorlet{HKS57-20}{HKS57!20}%
-  \colorlet{HKS57-30}{HKS57!30}%
-  \colorlet{HKS57-40}{HKS57!40}%
-  \colorlet{HKS57-50}{HKS57!50}%
-  \colorlet{HKS57-60}{HKS57!60}%
-  \colorlet{HKS57-70}{HKS57!70}%
-  \colorlet{HKS57-80}{HKS57!80}%
-  \colorlet{HKS57-90}{HKS57!90}%
-  \colorlet{HKS57-100}{HKS57!100}%
-  \colorlet{HKS65-10}{HKS65!10}%
-  \colorlet{HKS65-20}{HKS65!20}%
-  \colorlet{HKS65-30}{HKS65!30}%
-  \colorlet{HKS65-40}{HKS65!40}%
-  \colorlet{HKS65-50}{HKS65!50}%
-  \colorlet{HKS65-60}{HKS65!60}%
-  \colorlet{HKS65-70}{HKS65!70}%
-  \colorlet{HKS65-80}{HKS65!80}%
-  \colorlet{HKS65-90}{HKS65!90}%
-  \colorlet{HKS65-100}{HKS65!100}%
-  \colorlet{HKS07-10}{HKS07!10}%
-  \colorlet{HKS07-20}{HKS07!20}%
-  \colorlet{HKS07-30}{HKS07!30}%
-  \colorlet{HKS07-40}{HKS07!40}%
-  \colorlet{HKS07-50}{HKS07!50}%
-  \colorlet{HKS07-60}{HKS07!60}%
-  \colorlet{HKS07-70}{HKS07!70}%
-  \colorlet{HKS07-80}{HKS07!80}%
-  \colorlet{HKS07-90}{HKS07!90}%
-  \colorlet{HKS07-100}{HKS07!100}%
+  \def\tud at res@a##1{%
+    \@for\tud at res@b:={10,20,30,40,50,60,70,80,90,100}\do{%
+      \colorlet{##1K\tud at res@b}{##1!\tud at res@b}%
+      \colorlet{##1-\tud at res@b}{##1!\tud at res@b}%
+    }%
+  }%
+  \tud at res@a{HKS41}%
+  \tud at res@a{HKS92}%
+  \tud at res@a{HKS44}%
+  \tud at res@a{HKS36}%
+  \tud at res@a{HKS33}%
+  \tud at res@a{HKS57}%
+  \tud at res@a{HKS65}%
+  \tud at res@a{HKS07}%
 }
 %    \end{macrocode}
 % \end{macro}^^A \tud at setcolors@old
@@ -439,7 +276,7 @@
 \DeclareOption*{\PassOptionsToPackage{\CurrentOption}{xcolor}}
 \ExecuteOptions{reduced}
 \ProcessOptions\relax
-\RequirePackage{xcolor}[2007/01/21]
+\RequirePackage{xcolor}
 \tud at setcolors@do%
 %    \end{macrocode}
 %
@@ -447,6 +284,6 @@
 %</package>
 % \fi
 %
-% \Finale
+% \PrintBackMatter
 %
 \endinput

Modified: trunk/Master/texmf-dist/source/latex/tudscr/tudscr-comp.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tudscr/tudscr-comp.dtx	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/source/latex/tudscr/tudscr-comp.dtx	2022-08-09 20:01:54 UTC (rev 64085)
@@ -1,10 +1,10 @@
-% \CheckSum{1461}
 % \iffalse meta-comment
+%/GitFileInfo=tudscr-comp.dtx
 %
 %  TUD-Script -- Corporate Design of Technische Universität Dresden
 % ----------------------------------------------------------------------------
 %
-%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2021
+%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2022
 %
 % ----------------------------------------------------------------------------
 %
@@ -23,48 +23,19 @@
 %
 % \fi
 %
-% \CharacterTable
-%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-%   Digits        \0\1\2\3\4\5\6\7\8\9
-%   Exclamation   \!     Double quote  \"     Hash (number) \#
-%   Dollar        \$     Percent       \%     Ampersand     \&
-%   Acute accent  \'     Left paren    \(     Right paren   \)
-%   Asterisk      \*     Plus          \+     Comma         \,
-%   Minus         \-     Point         \.     Solidus       \/
-%   Colon         \:     Semicolon     \;     Less than     \<
-%   Equals        \=     Greater than  \>     Question mark \?
-%   Commercial at \@     Left bracket  \[     Backslash     \\
-%   Right bracket \]     Circumflex    \^     Underscore    \_
-%   Grave accent  \`     Left brace    \{     Vertical bar  \|
-%   Right brace   \}     Tilde         \~}
-%
-% \iffalse
-%%% From File: tudscr-comp.dtx
+% \iffalse ins:batch + dtx:driver
+%<*ins>
+\ifx\documentclass\undefined
+  \input docstrip.tex
+  \ifToplevel{\batchinput{tudscr.ins}}
+\else
+  \let\endbatchfile\relax
+\fi
+\endbatchfile
+%</ins>
 %<*dtx>
-% \fi
-%
-\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
-\ProvidesFile{tudscr-comp.dtx}[2021/07/15 v2.06n TUD-Script\space%
-%
-% \iffalse
-%</dtx>
-%<*package&identify>
-%<comp&base>\ProvidesPackage{tudscrcomp}[%
-%<comp&book>\ProvidesPackage{tudscrcomp-book}[%
-%<comp&poster>\ProvidesPackage{tudscrcomp-poster}[%
-%<fixfonts>\ProvidesPackage{fix-tudscrfonts}[%
-%!TUD at Version
-%<comp>  package
-%<fixfonts>  package for font fixes
-%</package&identify>
-%<*dtx|package&identify>
-% \fi
-  (compatibility for old tud(scr) classes)%
-]
-% \iffalse
-%</dtx|package&identify>
-%<*dtx>
+\ProvidesFile{tudscr-comp.dtx}[2022/08/09]
+\RequirePackage{tudscr-gitinfo}
 \documentclass[english,ngerman,xindy]{tudscrdoc}
 \iftutex
   \usepackage{fontspec}
@@ -74,18 +45,11 @@
 \fi
 \usepackage{babel}
 \usepackage{tudscrfonts}
-\KOMAoptions{parskip=half-}
-\usepackage{bookmark}
 \usepackage[babel]{microtype}
 
-\CodelineIndex
-\RecordChanges
-\GetFileInfo{tudscr-comp.dtx}
-\title{\file{\filename}}
-\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
-\date{\fileversion\nobreakspace(\filedate)}
-
+\GitHubBase{\TUDScriptRepository}
 \begin{document}
+  \author{Falk Hanisch\TUDScriptContactTitle}
   \maketitle
   \tableofcontents
   \DocInput{\filename}
@@ -100,6 +64,8 @@
 % \changes{v2.04}{2015/04/22}{\pkg{tudscrfonts}: Unterstützung veralteter 
 %   Posterklassen}^^A
 %
+%
+%
 % \section{Kompatibilität zu früheren \TUDScript-Versionen}
 %
 % Mit der Version v2.02 wurde eine Menge~-- teilweise sehr tiefgreifend~-- an 
@@ -110,7 +76,19 @@
 % betreffen sowohl die Klassen selber als auch die zusätzlich bereitgestellten 
 % Pakete.
 %
-% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
+%    \begin{macrocode}
+%<*package&identify>
+%<comp>\ProvidesPackage{tudscrcomp}%
+%<fixfonts>\ProvidesPackage{fix-tudscrfonts}%
+[%
+%!TUD at Version
+%<comp>  package
+%<fixfonts>  package for font fixes
+  (compatibility for old tud(scr) classes)%
+]
+%<comp>\TUD at Class@Check{tudscrcomp}
+%</package&identify>
+%    \end{macrocode}
 %
 % \iffalse
 %<*class|package&fonts>
@@ -123,7 +101,7 @@
 % \changes{v2.03}{2015/02/05}{neu}^^A
 % \begin{macro}{\TUD at deprecated@@cs}
 % \changes{v2.06}{2018/08/07}{neu}^^A
-% \begin{macro}{\TUD at deprecated@lengthcs}
+% \begin{macro}{\TUD at deprecated@length}
 % \changes{v2.05}{2016/06/20}{neu}^^A
 % Um alte Optionen und Befehle dem Anwender bei der Verwendung kenntlich zu 
 % machen, werden entsprechende Warnungen definiert. Für Optionen wird dabei
@@ -195,21 +173,28 @@
   }{}%
 }
 %<*class>
-\newcommand*\TUD at deprecated@lengthcs[2][]{%
-  \ifdim\csuse{#2}<\maxdimen\relax%
-    \ClassWarning{\TUD at Class@Name}{%
-      Using the length `\@backslashchar#2' is deprecated. \MessageBreak%
-      You should use option `#2' instead%
-    }%
-    \csxdef{tud at dim@#2}{\the\csuse{#2}}%
-    \expandafter\setlength\csname #2\endcsname{\maxdimen}%
-    \global\csuse{#2}=\csuse{#2}%
-    #1%
+\newcommand*\TUD at deprecated@length[1]{%
+  \ifdim#1<\maxdimen\relax%
+    \begingroup%
+      \tud at strlength\tud at res@a{#1}%
+      \edef\tud at res@b{\expandafter\@gobble\string#1}%
+      \ClassWarning{\TUD at Class@Name}{%
+        Setting length `\string#1' is deprecated. \MessageBreak%
+        The option `\tud at res@b=\tud at res@a'\MessageBreak%
+        is used instead%
+      }%
+      \edef\tud at res@a{%
+        \endgroup%
+        \noexpand\TUDoption{\tud at res@b}{\tud at res@a}%
+        \global\noexpand\csletcs{tud@\tud at res@b @dim}{tud@\tud at res@b @dim}%
+      }%
+    \tud at res@a%
+    \global\setlength#1{\maxdimen}%
   \fi%
 }
 %</class>
 %    \end{macrocode}
-% \end{macro}^^A \TUD at deprecated@lengthcs
+% \end{macro}^^A \TUD at deprecated@length
 % \end{macro}^^A \TUD at deprecated@@cs
 % \end{macro}^^A \TUD at deprecated@cs
 % \end{macro}^^A \TUD at deprecated@key
@@ -223,8 +208,8 @@
 % Standardmäßig werden die Klassen in der aktuellen Version geladen. Mit 
 % \opt{tudscrver}|=|\val{\meta{Version}} kann auf das Verhalten einer früheren
 % Version geschaltet werden. Die eingestellte Kompatibilität wird als Zahl in 
-% \cs{tud at v@comp} gespeichert. In den Makros \cs{tud at v@\meta{Version}} werden
-% die zugehörigen Nummern gespeichert.
+% \cs{tud at v@comp} gespeichert. In den Makros |\tud at v@|\meta{Version} werden die
+% zugehörigen Nummern gespeichert.
 %    \begin{macrocode}
 \newcommand*\tud at v@comp{\tud at v@last}
 %    \end{macrocode}
@@ -279,30 +264,6 @@
 {%
   \RelaxFamilyKey[.comp]{TUD}{tudscrver}%
   \TUD at key@toolate{tudscrver}%
-%    \end{macrocode}
-% Außerdem wird darauf geachtet, dass die mindestens benötigte Version von
-% \KOMAScript{} installiert ist. (\cs{\TUD at Version@KOMA}: \TUD at Version@KOMA). 
-% Sollte dies nicht der Fall sein, wird ein Fehler erzeugt.
-%    \begin{macrocode}
-%<*class>
-  \ifcsdef{scr at v@\TUD at Version@KOMA}{%
-    \ifnum\scr at compatibility<\csuse{scr at v@3.12}\relax%
-      \ClassError{\TUD at Class@Name}{%
-        KOMA-Script compatibility level too low%
-      }{%
-        \TUD at Version\space must be used at least with\MessageBreak%
-        `version=3.12' KOMA-Script compatibility option.%
-      }%
-    \fi%
-  }{%
-    \ClassError{\TUD at Class@Name}{%
-      KOMA-Script v\TUD at Version@KOMA is required%
-    }{%
-      \TUD at Version\space must at least be used with\MessageBreak%
-      KOMA-Script v\TUD at Version@KOMA, but \KOMAScriptVersion was found.%
-    }%
-  }%
-%</class>
 }
 %    \end{macrocode}
 % \end{macro}^^A \tud at v@comp
@@ -314,84 +275,16 @@
 % \changes{v2.02}{2014/08/22}{neu}^^A
 % \begin{macro}{\tud at v@2.01}
 % \changes{v2.02}{2014/08/22}{neu}^^A
-% \begin{macro}{\tud at v@2.01a}
-% \changes{v2.02}{2014/08/22}{neu}^^A
-% \begin{macro}{\tud at v@2.01b}
-% \changes{v2.02}{2014/08/22}{neu}^^A
 % \begin{macro}{\tud at v@2.02}
 % \changes{v2.02}{2014/08/22}{neu}^^A
 % \begin{macro}{\tud at v@2.03}
 % \changes{v2.03}{2015/01/13}{neu}^^A
-% \begin{macro}{\tud at v@2.03a}
-% \changes{v2.03a}{2015/06/12}{neu}^^A
 % \begin{macro}{\tud at v@2.04}
 % \changes{v2.04}{2015/02/18}{neu}^^A
-% \begin{macro}{\tud at v@2.04a}
-% \changes{v2.04a}{2015/07/24}{neu}^^A
-% \begin{macro}{\tud at v@2.04b}
-% \changes{v2.04b}{2015/10/06}{neu}^^A
-% \begin{macro}{\tud at v@2.04c}
-% \changes{v2.04c}{2015/11/29}{neu}^^A
-% \begin{macro}{\tud at v@2.04d}
-% \changes{v2.04d}{2016/03/26}{neu}^^A
-% \begin{macro}{\tud at v@2.04e}
-% \changes{v2.04e}{2016/06/17}{neu}^^A
 % \begin{macro}{\tud at v@2.05}
 % \changes{v2.05}{2015/07/03}{neu}^^A
-% \begin{macro}{\tud at v@2.05a}
-% \changes{v2.05a}{2015/08/24}{neu}^^A
-% \begin{macro}{\tud at v@2.05b}
-% \changes{v2.05b}{2015/09/09}{neu}^^A
-% \begin{macro}{\tud at v@2.05c}
-% \changes{v2.05c}{2015/09/15}{neu}^^A
-% \begin{macro}{\tud at v@2.05d}
-% \changes{v2.05d}{2015/09/21}{neu}^^A
-% \begin{macro}{\tud at v@2.05e}
-% \changes{v2.05e}{2016/10/10}{neu}^^A
-% \begin{macro}{\tud at v@2.05f}
-% \changes{v2.05f}{2016/10/12}{neu}^^A
-% \begin{macro}{\tud at v@2.05g}
-% \changes{v2.05g}{2017/01/26}{neu}^^A
-% \begin{macro}{\tud at v@2.05h}
-% \changes{v2.05h}{2017/02/04}{neu}^^A
-% \begin{macro}{\tud at v@2.05i}
-% \changes{v2.05i}{2017/02/17}{neu}^^A
-% \begin{macro}{\tud at v@2.05k}
-% \changes{v2.05k}{2017/03/27}{neu}^^A
-% \begin{macro}{\tud at v@2.05l}
-% \changes{v2.05l}{2017/03/29}{neu}^^A
-% \begin{macro}{\tud at v@2.05m}
-% \changes{v2.05m}{2017/05/30}{neu}^^A
 % \begin{macro}{\tud at v@2.06}
 % \changes{v2.06}{2018/06/26}{neu}^^A
-% \begin{macro}{\tud at v@2.06a}
-% \changes{v2.06a}{2019/07/09}{neu}^^A
-% \begin{macro}{\tud at v@2.06b}
-% \changes{v2.06b}{2019/07/17}{neu}^^A
-% \begin{macro}{\tud at v@2.06c}
-% \changes{v2.06c}{2019/08/20}{neu}^^A
-% \begin{macro}{\tud at v@2.06d}
-% \changes{v2.06d}{2019/08/27}{neu}^^A
-% \begin{macro}{\tud at v@2.06e}
-% \changes{v2.06e}{2019/10/23}{neu}^^A
-% \begin{macro}{\tud at v@2.06f}
-% \changes{v2.06f}{2020/01/14}{neu}^^A
-% \begin{macro}{\tud at v@2.06g}
-% \changes{v2.06g}{2020/06/18}{neu}^^A
-% \begin{macro}{\tud at v@2.06h}
-% \changes{v2.06h}{2020/06/25}{neu}^^A
-% \begin{macro}{\tud at v@2.06i}
-% \changes{v2.06i}{2020/07/27}{neu}^^A
-% \begin{macro}{\tud at v@2.06j}
-% \changes{v2.06j}{2020/09/29}{neu}^^A
-% \begin{macro}{\tud at v@2.06k}
-% \changes{v2.06k}{2020/11/10}{neu}^^A
-% \begin{macro}{\tud at v@2.06l}
-% \changes{v2.06l}{2021/03/30}{neu}^^A
-% \begin{macro}{\tud at v@2.06m}
-% \changes{v2.06m}{2021/07/06}{neu}^^A
-% \begin{macro}{\tud at v@2.06n}
-% \changes{v2.06n}{2021/07/15}{neu}^^A
 % \begin{macro}{\tud at v@last}
 % \changes{v2.02}{2014/08/22}{neu}^^A
 % \changes{v2.03}{2015/01/13}{angepasst}^^A
@@ -403,87 +296,19 @@
 \csdef{tud at v@first}{0}
 \csdef{tud at v@2.00}{0}
 \csdef{tud at v@2.01}{0}
-\csdef{tud at v@2.01a}{0}
-\csdef{tud at v@2.01b}{0}
 \csdef{tud at v@2.02}{0}
 \csdef{tud at v@2.03}{1}
-\csdef{tud at v@2.03a}{1}
 \csdef{tud at v@2.04}{2}
-\csdef{tud at v@2.04a}{2}
-\csdef{tud at v@2.04b}{2}
-\csdef{tud at v@2.04c}{2}
-\csdef{tud at v@2.04d}{2}
-\csdef{tud at v@2.04e}{2}
 \csdef{tud at v@2.05}{3}
-\csdef{tud at v@2.05a}{3}
-\csdef{tud at v@2.05b}{3}
-\csdef{tud at v@2.05c}{3}
-\csdef{tud at v@2.05d}{3}
-\csdef{tud at v@2.05e}{3}
-\csdef{tud at v@2.05f}{3}
-\csdef{tud at v@2.05g}{3}
-\csdef{tud at v@2.05h}{3}
-\csdef{tud at v@2.05i}{3}
-\csdef{tud at v@2.05k}{3}
-\csdef{tud at v@2.05l}{3}
-\csdef{tud at v@2.05m}{3}
 \csdef{tud at v@2.06}{4}
-\csdef{tud at v@2.06a}{4}
-\csdef{tud at v@2.06b}{4}
-\csdef{tud at v@2.06c}{4}
-\csdef{tud at v@2.06d}{4}
-\csdef{tud at v@2.06e}{4}
-\csdef{tud at v@2.06f}{4}
-\csdef{tud at v@2.06g}{4}
-\csdef{tud at v@2.06h}{4}
-\csdef{tud at v@2.06i}{4}
-\csdef{tud at v@2.06j}{4}
-\csdef{tud at v@2.06k}{4}
-\csdef{tud at v@2.06l}{4}
-\csdef{tud at v@2.06m}{4}
-\csdef{tud at v@2.06n}{4}
 \csdef{tud at v@last}{4}
 %    \end{macrocode}
 % \end{macro}^^A \tud at v@last
-% \end{macro}^^A \tud at v@2.06n
-% \end{macro}^^A \tud at v@2.06m
-% \end{macro}^^A \tud at v@2.06l
-% \end{macro}^^A \tud at v@2.06k
-% \end{macro}^^A \tud at v@2.06j
-% \end{macro}^^A \tud at v@2.06i
-% \end{macro}^^A \tud at v@2.06h
-% \end{macro}^^A \tud at v@2.06g
-% \end{macro}^^A \tud at v@2.06f
-% \end{macro}^^A \tud at v@2.06e
-% \end{macro}^^A \tud at v@2.06d
-% \end{macro}^^A \tud at v@2.06c
-% \end{macro}^^A \tud at v@2.06b
-% \end{macro}^^A \tud at v@2.06a
 % \end{macro}^^A \tud at v@2.06
-% \end{macro}^^A \tud at v@2.05m
-% \end{macro}^^A \tud at v@2.05l
-% \end{macro}^^A \tud at v@2.05k
-% \end{macro}^^A \tud at v@2.05i
-% \end{macro}^^A \tud at v@2.05h
-% \end{macro}^^A \tud at v@2.05g
-% \end{macro}^^A \tud at v@2.05f
-% \end{macro}^^A \tud at v@2.05e
-% \end{macro}^^A \tud at v@2.05d
-% \end{macro}^^A \tud at v@2.05c
-% \end{macro}^^A \tud at v@2.05b
-% \end{macro}^^A \tud at v@2.05a
 % \end{macro}^^A \tud at v@2.05
-% \end{macro}^^A \tud at v@2.04e
-% \end{macro}^^A \tud at v@2.04d
-% \end{macro}^^A \tud at v@2.04c
-% \end{macro}^^A \tud at v@2.04b
-% \end{macro}^^A \tud at v@2.04a
 % \end{macro}^^A \tud at v@2.04
-% \end{macro}^^A \tud at v@2.03a
 % \end{macro}^^A \tud at v@2.03
 % \end{macro}^^A \tud at v@2.02
-% \end{macro}^^A \tud at v@2.01b
-% \end{macro}^^A \tud at v@2.01a
 % \end{macro}^^A \tud at v@2.01
 % \end{macro}^^A \tud at v@2.00
 % \end{macro}^^A \tud at v@first
@@ -496,12 +321,16 @@
 %    \begin{macrocode}
 \newcommand*\tud at v@get[2]{%
   \begingroup%
-    \def\@tempa{\kernel at ifnextchar v{\@tempb}{\@tempb v}}%
+    \def\@tempa{%
+      \kernel at ifnextchar v%
+        {\@tempb}%
+        {\@tempb v}%
+    }%
     \def\@tempb v##1\@nil{\def\@tempc{##1}}%
     \@tempa #2\@nil%
     \edef\tud at reserved{%
       \endgroup%
-      \etex at unexpanded{\def#1}{\@tempc}%
+      \unexpanded{\def#1}{\@tempc}%
     }%
   \tud at reserved%
 }
@@ -515,13 +344,7 @@
 \newcommand*\tud at if@v at lower[1]{%
   \begingroup%
     \tud at v@get\@tempa{#1}%
-    \ifcsdef{tud at v@\@tempa}{%
-      \ifnum\tud at v@comp<\csuse{tud at v@\@tempa}\relax%
-        \def\tud at reserved{\endgroup\@firstoftwo}%
-      \else%
-        \def\tud at reserved{\endgroup\@secondoftwo}%
-      \fi%
-    }{%
+    \ifcsundef{tud at v@\@tempa}{%
       \def\tud at reserved{%
 %<*class>
         \ClassWarningNoLine{\TUD at Class@Name}%
@@ -535,6 +358,12 @@
         }%
         \endgroup\@firstoftwo%
       }%
+    }{%
+      \ifnum\tud at v@comp<\csuse{tud at v@\@tempa}\relax%
+        \def\tud at reserved{\endgroup\@firstoftwo}%
+      \else%
+        \def\tud at reserved{\endgroup\@secondoftwo}%
+      \fi%
     }%
   \tud at reserved%
 }
@@ -790,7 +619,7 @@
 % Früher musste die Unterstützung für die Schriftauswahl via \pkg{fontspec} 
 % manuell über die folgende Option aktiviert werden.
 %    \begin{macrocode}
-\newif\if at tud@x at fontspec@requested
+\tud at newif\if at tud@x at fontspec@requested
 \TUD at key{fontspec}[true]{%
   \TUD at set@ifkey{fontspec}{@tud at x@fontspec at requested}{#1}%
   \ifx\FamilyKeyState\FamilyKeyStateProcessed%
@@ -809,7 +638,7 @@
 %    \end{macrocode}
 % Da dieser Prozess sehr tief in die Schriftauswahl eingreift und das Laden des
 % Paketes die Schriftauswahl für das ganze Dokument verändert, wird diese 
-% Option nur beim Laden der Klasse dzw. des Paketes zugelassen.
+% Option nur beim Laden der Klasse bzw. des Paketes zugelassen.
 %    \begin{macrocode}
 %<*class>
 \AtEndOfClass%
@@ -820,7 +649,7 @@
 {%
   \TUD at key@toolate{fontspec}%
   \if at tud@x at fontspec@requested%
-    \RequirePackage{fontspec}[2017/01/24]%
+    \RequirePackage{fontspec}
   \fi%
 }
 %    \end{macrocode}
@@ -841,11 +670,12 @@
 % Um die Höhe von Logos im Fußbereich der \pgs{tudheadings}-Seitenstile 
 % einheitlich festzulegen, gab es bis einschließlich der Version~v2.04 die 
 % Länge \cs{footlogoheight} anstelle der Option \opt{footlogoheight}. Sollte 
-% der Anwender diese anpassen, wird \cs{tud at dim@footlogoheight} auf diesen Wert 
-% gesetzt und eine Warnung erzeugt.
+% der Anwender die Länge anpassen, wird dies mit \cs{TUD at deprecated@length} an 
+% der entsprechenden Stelle geprüft und die korrespondierende Option auf 
+% diesen Wert gesetzt, wobei eine Warnung erzeugt wird.
 %    \begin{macrocode}
-\newlength\footlogoheight
-\setlength\footlogoheight{\maxdimen}
+\tud at newglue\footlogoheight
+\tud at setdim\footlogoheight{\maxdimen}
 %    \end{macrocode}
 % \end{length}^^A \footlogoheight
 % \begin{length}{\pageheadingsvskip}
@@ -855,13 +685,14 @@
 % Mit diesen Längen konnte der Anwender vor der Version~v2.05 die Überschriften 
 % von Titel, Teilen und Kapiteln vertikal verschieben. Diese Funktionalität 
 % wird seitdem mit den Optionen \opt{headingsvskip} und \opt{pageheadingsvskip} 
-% abgedeckt.
+% abgedeckt. Auch hier wird eine Warnung erzeugt, falls der Anwender diesen 
+% Wert ändern sollte.
 %    \begin{macrocode}
 %<*book|report|article>
-\newlength\pageheadingsvskip
-\setlength\pageheadingsvskip{\maxdimen}
-\newlength\headingsvskip
-\setlength\headingsvskip{\maxdimen}
+\tud at newglue\pageheadingsvskip
+\tud at setdim\pageheadingsvskip{\maxdimen}
+\tud at newglue\headingsvskip
+\tud at setdim\headingsvskip{\maxdimen}
 %</book|report|article>
 %    \end{macrocode}
 % \end{length}^^A \headingsvskip
@@ -1041,6 +872,7 @@
 % \begin{macro}{\tud at ifdin}
 % \changes{v2.06}{2018/08/02}{neu}^^A
 % Der Befehl \cs{ifdin} ist für \OpenSans hinfällig.
+% \ToDo{ifdin nicht mehr definieren, Alternativ (IfDIN[active][TF])?}[v2.07]
 %    \begin{macrocode}
 \TUD at deprecated@cs{ifdin}{@secondoftwo}
 %    \end{macrocode}
@@ -1060,8 +892,8 @@
   \fi%
 }
 \if at tud@cdoldfont at active
-  \newcommand*\ifdin{}%
-  \let\ifdin\tud at ifdin%
+  \newcommand*\ifdin{}
+  \let\ifdin\tud at ifdin
 \fi
 %    \end{macrocode}
 % \end{macro}^^A \tud at ifdin
@@ -1103,9 +935,9 @@
 %
 % \section{Das Paket \pkg{tudscrcomp} -- Kompatibilität veralteter Klassen}
 %
-% Neben den \TUDScript-Klassen gibt es zahlreiche andere \LaTeX-Umsetzungen des 
-% \CDs der \TnUD. Um eine Migration von diesen \enquote{veralteten} Klassen
-% zu erleichtern, wird das Paket \pkg{tudscrcomp} bereitgestellt. Mit diesem 
+% Neben den \TUDScript-Klassen gibt es zahlreiche andere \LaTeX-Umsetzungen 
+% des \TUDCDs. Um eine Migration von diesen \enquote{veralteten} Klassen zu 
+% erleichtern, wird das Paket \pkg{tudscrcomp} bereitgestellt. Mit diesem 
 % können bei der Verwendung von \TUDScript die meisten Optionen und Befehle 
 % genutzt werden, welche durch die Klasse \cls{tudbook} und teilweise vormals 
 % durch die Klassen die \TUDScript-Klassen in der Version~v1.0 sowie die 
@@ -1113,7 +945,7 @@
 %
 % \iffalse
 %<*package&comp>
-%<*base>
+%<*identify>
 % \fi
 %
 % \subsection{Erkennen der geladenen Klasse}
@@ -1120,20 +952,29 @@
 %
 % Damit je nach geladener Klasse die passenden Kompatibilitätseinstellungen und 
 % -befehle bereitgestellt werden können, wird auf die geladene Klasse geprüft.
-% Danach wird das dazu passende Paket geladen.
+% \begin{macro}{\tud at comp@on at main@class}
+% \begin{macro}{\tud at comp@on at poster@class}
 %    \begin{macrocode}
-\PassOptionsToPackage{oldcolors}{tudscrcolor}
+\@tud at res@swafalse%
+\newcommand*\tud at comp@on at main@class{\@gobble}
+\@tfor\tud at res@a:={tudscrbook}{tudscrreprt}{tudscrartcl}\do{%
+  \@ifclassloaded{\tud at res@a}{\@tud at res@swatrue}{}%
+  \if at tud@res at swa%
+    \renewcommand*\tud at comp@on at main@class{\@firstofone}%
+    \@break at tfor%
+  \fi%
+}%
+\newcommand*\tud at comp@on at poster@class{\@gobble}
 \@ifclassloaded{tudscrposter}{%
-  \RequirePackageWithOptions{tudscrcomp-poster}[\TUD at Version]%
-}{%
-  \RequirePackageWithOptions{tudscrcomp-book}[\TUD at Version]%
-}
+  \renewcommand*\tud at comp@on at poster@class{\@firstofone}%
+}{}%
 %    \end{macrocode}
+% \end{macro}^^A \tud at comp@on at poster@class
+% \end{macro}^^A \tud at comp@on at main@class
 %
 % \iffalse
-%</base>
-%<*!base>
-%<*body>
+%</identify>
+%<*option>
 % \fi
 %
 % \subsection{Gemeinsame Optionen und Befehle für alle Klassen}
@@ -1141,10 +982,20 @@
 % Zunächst werden alle Optionen und Befehle definiert, die unabhängig von der 
 % geladenen Klasse generell bereitgestellt werden.
 %
+%    \begin{macrocode}
+\PassOptionsToPackage{extended}{tudscrcolor}
+%    \end{macrocode}
+%
+% \iffalse
+%</option>
+%<*body>
+% \fi
+%
 % \begin{macro}{\einrichtung}
 % \begin{macro}{\fachrichtung}
 % \begin{macro}{\institut}
 % \begin{macro}{\professur}
+% \begin{macro}{\moreauthor}
 % Es werden Aliasbefehle für die Eingabefelder definiert.
 %    \begin{macrocode}
 \newcommand*\einrichtung{\faculty}
@@ -1151,11 +1002,15 @@
 \newcommand*\fachrichtung{\department}
 \newcommand*\institut{\institute}
 \newcommand*\professur{\chair}
+\newcommand*\moreauthor{\authormore}
 %    \end{macrocode}
+% \end{macro}^^A \moreauthor
 % \end{macro}^^A \professur
 % \end{macro}^^A \institut
 % \end{macro}^^A \fachrichtung
 % \end{macro}^^A \einrichtung
+% \begin{macro}{\tudfont}
+% \changes{v2.04}{2015/04/24}{\cls{tudmathposter} wird unterstützt}^^A
 % \begin{macro}{\dinBold}
 % \changes{v2.05}{2015/07/13}{neu}^^A
 % \begin{macro}{\dinfamily}
@@ -1162,15 +1017,16 @@
 % \changes{v2.05}{2015/07/13}{neu}^^A
 % Für die explizite Schriftauswahl gibt es ebenfalls zwei ältere Befehle.
 %    \begin{macrocode}
+\newcommand*\tudfont{\cdfont}
 \newcommand*\dinBold{\dinbn}
 \newcommand*\dinfamily{\dinbn}
 %    \end{macrocode}
 % \end{macro}^^A \dinfamily
 % \end{macro}^^A \dinBold
+% \end{macro}^^A \tudfont
 %
 % \iffalse
 %</body>
-%<*book>
 %<*option>
 % \fi
 %
@@ -1231,28 +1087,30 @@
 %<*body>
 % \fi
 %
-% \begin{macro}{\moreauthor}
+% Die folgenden Makros werden für die Hauptklassen definiert.
+%    \begin{macrocode}
+\tud at comp@on at main@class{%
+%    \end{macrocode}
+%
 % \begin{macro}{\submitdate}
+% \begin{macro}{\submittedon}
 % \begin{macro}{\supervisorII}
 % \begin{macro}{\supervisedby}
 % \begin{macro}{\supervisedIIby}
-% \begin{macro}{\submittedon}
 % Es werden weitere Aliasbefehle für die Eingabefelder der \cls{tudbook}-Klasse 
 % definiert.
 %    \begin{macrocode}
-\newcommand*\moreauthor{\authormore}
 \newcommand*\submitdate{\date}
-\newcommand*\supervisorII[1]{\g at addto@macro\@supervisor{\and #1}}
+\newcommand*\submittedon[1]{\gdef\datetext{#1}}
+\newcommand*\supervisorII[1]{\g at addto@macro\@supervisor{\and\space#1}}
 \newcommand*\supervisedby[1]{\gdef\supervisorname{#1}}
 \newcommand*\supervisedIIby[1]{\gdef\supervisorothername{#1}}
-\newcommand*\submittedon[1]{\gdef\datetext{#1}}
 %    \end{macrocode}
-% \end{macro}^^A \submittedon
 % \end{macro}^^A \supervisedIIby
 % \end{macro}^^A \supervisedby
 % \end{macro}^^A \supervisorII
+% \end{macro}^^A \submittedon
 % \end{macro}^^A \submitdate
-% \end{macro}^^A \moreauthor
 % \begin{macro}{\dissertation}
 % Bei der Definition des Typs der Abschlussarbeit mit \cs{dissertation} wird
 % die Lokalisierungsvariable \cs{dissertationname} verwendet und die Feldnamen
@@ -1265,41 +1123,13 @@
 }
 %    \end{macrocode}
 % \end{macro}^^A \dissertation
-% \begin{environment}{theglossary}
-% \begin{macro}{\glossaryname}
-% \begin{macro}{\glossitem}
-% Eine rudimentäre Umgebung für ein Glossar.
-%    \begin{macrocode}
-\AtBeginDocument{%
-  \ifundef{\theglossary}{%
-    \providecommand*\glossaryname{Glossar}%
-    \newenvironment{theglossary}[1][]{%
-      \PackageWarning{tudscrcomp}{%
-        Using the environment `theglossary' is not\MessageBreak%
-        recommended. You should rather use an appropriate\MessageBreak%
-        package such as glossaries%
-      }%
-      \let\bibname\glossaryname%
-      \bib at heading%
-      #1%
-      \list{}{%
-        \setlength\labelsep{\z@}%
-        \setlength\labelwidth{\z@}%
-        \setlength\itemindent{-\leftmargin}%
-      }%
-    }{\endlist}%
-    \newcommand\glossitem[1]{\item[] #1\par}%
-  }{}%
-}
-%    \end{macrocode}
-% \end{macro}^^A \glossitem
-% \end{macro}^^A \glossaryname
-% \end{environment}^^A theglossary
 % \begin{macro}{\chapterpage}
 % \begin{macro}{\if at tud@comp at chapterpage}
 % \begin{macro}{\tud at comp@chapterpage at set}
 % \begin{macro}{\tud at comp@chapterpage at unset}
 % \begin{macro}{\tud at comp@chapterpage at wrn}
+% \begin{macro}{\tud at chapter@pre}
+% \begin{macro}{\tud at chapter@app}
 % Die alte \cls{tudbook}-Klasse stellt den Befehl \cs{chapterpage} bereit.
 % Mit diesem ist es möglich, das Verhalten der Kapitelseiten~-- welches durch
 % die Option \opt{chapterpage} gesteuert wird~-- temporär umzuschalten, also
@@ -1314,7 +1144,7 @@
 % ursprünglichen Zustand geschaltet und der globale Schalter
 % \cs{if at tud@comp at chapterpage} zurückgesetzt.
 %    \begin{macrocode}
-\newif\if at tud@comp at chapterpage
+\tud at newif\if at tud@comp at chapterpage
 \newcommand*\chapterpage{%
   \global\@tud at comp@chapterpagetrue%
   \tud at comp@chapterpage at wrn%
@@ -1338,7 +1168,7 @@
 %    \begin{macrocode}
 \newcommand*\tud at comp@chapterpage at wrn{%
   \PackageWarning{tudscrcomp}{%
-    The command \string\chapterpage\space is not\MessageBreak%
+    The command `\string\chapterpage'\space is not\MessageBreak%
     recommended. You should use the same style for\MessageBreak%
     chapters throughout the document%
   }%
@@ -1345,32 +1175,78 @@
   \global\let\tud at comp@chapterpage at wrn\relax%
 }
 %    \end{macrocode}
-% \end{macro}^^A \tud at comp@chapterpage at wrn
-% \end{macro}^^A \tud at comp@chapterpage at unset
-% \end{macro}^^A \tud at comp@chapterpage at set
-% \end{macro}^^A \if at tud@comp at chapterpage
-% \end{macro}^^A \chapterpage
-% \begin{macro}{\tud at chapter@pre}
-% \begin{macro}{\tud at chapter@app}
 % Hier erfolgt die notwendige Anpassungen der internen Gliederungsbefehle.
 %    \begin{macrocode}
 \AtEndPreamble{%
+  \ifundef{\if at chapter}{%
+    \newif\if at chapter%
+    \ifundef{\chapter}{\@chapterfalse}{\@chaptertrue}%
+  }{}%
   \if at chapter%
-    \pretocmd{\tud at chapter@pre}{\tud at comp@chapterpage at set}%
-      {}{\tud at patch@wrn{tud at chapter@pre}}%
-    \apptocmd{\tud at chapter@app}{\tud at comp@chapterpage at unset}%
-      {}{\tud at patch@wrn{tud at chapter@app}}%
+    \pretocmd\tud at chapter@pre{%
+      \tud at comp@chapterpage at set%
+    }{}{\tud at patch@wrn{tud at chapter@pre}}%
+    \apptocmd\tud at chapter@app{%
+      \tud at comp@chapterpage at unset%
+    }{}{\tud at patch@wrn{tud at chapter@app}}%
+  \else%
+    \renewcommand*\tud at comp@chapterpage at wrn{%
+      \PackageWarning{tudscrcomp}{%
+        The command `\string\chapterpage'\space is not\MessageBreak%
+        active as the used document class does not provide\MessageBreak%
+        any chapters via `\string\chapter'%
+      }%
+      \global\let\tud at comp@chapterpage at wrn\relax%
+    }%
   \fi%
 }
 %    \end{macrocode}
 % \end{macro}^^A \tud at chapter@app
 % \end{macro}^^A \tud at chapter@pre
+% \end{macro}^^A \tud at comp@chapterpage at wrn
+% \end{macro}^^A \tud at comp@chapterpage at unset
+% \end{macro}^^A \tud at comp@chapterpage at set
+% \end{macro}^^A \if at tud@comp at chapterpage
+% \end{macro}^^A \chapterpage
+% \begin{environment}{theglossary}
+% \begin{macro}{\glossaryname}
+% \begin{macro}{\glossitem}
+% Eine rudimentäre Umgebung für ein Glossar.
+%    \begin{macrocode}
+\AfterEndPreamble{%
+  \ifundef{\theglossary}{%
+    \providecommand*\glossaryname{Glossar}%
+    \newenvironment{theglossary}[1][]{%
+      \PackageWarning{tudscrcomp}{%
+        Using the environment `theglossary' is not\MessageBreak%
+        recommended. You should rather use an appropriate\MessageBreak%
+        package such as glossaries%
+      }%
+      \let\bibname\glossaryname%
+      \bib at heading%
+      #1%
+      \list{}{%
+        \setlength\labelsep{\z@}%
+        \setlength\labelwidth{\z@}%
+        \setlength\itemindent{-\leftmargin}%
+      }%
+    }{\endlist}%
+    \newcommand\glossitem[1]{\item[] #1\par}%
+  }{}%
+}
+%    \end{macrocode}
+% \end{macro}^^A \glossitem
+% \end{macro}^^A \glossaryname
+% \end{environment}^^A theglossary
 %
+% Das waren die Makros für die Hauptklassen.
+%    \begin{macrocode}
+}
+%    \end{macrocode}
 %
+%
 % \iffalse
 %</body>
-%</book>
-%<*poster>
 %<*option>
 % \fi
 %
@@ -1379,11 +1255,53 @@
 % Die hier bereitgestellten Optionen und Befehle werden durch die Klasse 
 % \cls{tudmathposter} bzw. \cls{tudposter} definiert.
 %
+% \begin{option}{loadpackages}
+% \changes{v2.06o}{2022/08/02}{neu}^^A
+% Die Klasse \cls{tudmathposter} lädt allerhand Pakete. Dies ist jedoch für den 
+% Anwender alles andere als vorteilhaft, da dadurch unter Umständen Konflikte
+% mit anderen Paketen entstehen oder der Nutzer im Zweifelsfall gar nicht weiß, 
+% dass verwendete Befehle aus bestimmten Paketen entspringen. Dennoch wird aus
+% Kompatibilitätsgründen diese Option bereitgestellt, um die Pakete ggf. Ende
+% der Präambel zu laden.
+%    \begin{macrocode}
+\tud at comp@on at poster@class{%
+\tud at newif\if at tud@comp at loadpackages
+\TUD at key{loadpackages}[true]{%
+  \TUD at set@ifkey{loadpackages}{@tud at comp@loadpackages}{#1}%
+}
+\AtEndPreamble{\TUD at key@toolate{loadpackages}}
+}
+%    \end{macrocode}
+% \end{option}^^A loadpackages
+%
+% \iffalse
+%</option>
+%<*body>
+% \fi
+%
+%    \begin{macrocode}
+\tud at comp@on at poster@class{%
+\AtEndPreamble{%
+  \if at tud@comp at loadpackages%
+    \RequirePackage{calc}
+    \RequirePackage{textcomp}
+    \RequirePackage{tabularx}
+  \fi%
+}
+}
+%    \end{macrocode}
+%
+% \iffalse
+%</body>
+%<*option>
+% \fi
+%
 % \begin{option}{bluebg}
 % \changes{v2.05}{2016/04/17}{neu}^^A
 % Mit der Option \opt{bluebg} kann der Hintergrund des Posters in \val{HKS41} 
 % gesetzt werden.
 %    \begin{macrocode}
+\tud at comp@on at poster@class{%
 \TUD at key{bluebg}[true]{%
   \TUD at set@ifkey{bluebg}{@tempswa}{#1}%
   \ifx\FamilyKeyState\FamilyKeyStateProcessed%
@@ -1394,6 +1312,7 @@
     \fi%
   \fi%
 }
+}
 %    \end{macrocode}
 % \end{option}^^A bluebg
 %
@@ -1402,6 +1321,11 @@
 %<*body>
 % \fi
 %
+% Die folgenden Makros werden für die Posterklasse definiert.
+%    \begin{macrocode}
+\tud at comp@on at poster@class{%
+%    \end{macrocode}
+%
 % \begin{layerpagestyle}{tudposter}
 % \changes{v2.05}{2016/07/26}{neu}^^A
 % Der Seitenstil \pgs{tudposter} wird als Alias für \pgs{empty.tudheadings} 
@@ -1425,17 +1349,20 @@
 % das Makro \cs{tud at split@author at list} um diese Befehle erweitert.
 %    \begin{macrocode}
 \newrobustcmd*\telefon{\telephone}
-\patchcmd{\tud at split@author at list}{telephone}{%
-  telephone,telefon%
-}{}{\tud at patch@wrn{tud at split@author at list}}
+\patchcmd\tud at split@author at list
+  {telephone}
+  {telephone,telefon}
+  {}{\tud at patch@wrn{tud at split@author at list}}
 \newrobustcmd*\fax{\telefax}
-\patchcmd{\tud at split@author at list}{telefax}{%
-  telefax,fax%
-}{}{\tud at patch@wrn{tud at split@author at list}}
+\patchcmd\tud at split@author at list
+  {telefax}
+  {telefax,fax}
+  {}{\tud at patch@wrn{tud at split@author at list}}
 \newrobustcmd*\email[1]{\emailaddress*{#1}}
-\patchcmd{\tud at split@author at list}{emailaddress}{%
-  emailaddress,email%
-}{}{\tud at patch@wrn{tud at split@author at list}}
+\patchcmd\tud at split@author at list
+  {emailaddress}
+  {emailaddress,email}
+  {}{\tud at patch@wrn{tud at split@author at list}}
 %    \end{macrocode}
 % \end{macro}^^A \tud at split@author at list
 % \end{macro}^^A \email
@@ -1461,12 +1388,12 @@
 % \changes{v2.05}{2016/04/17}{neu}^^A
 % \begin{macro}{\drittlogo}
 % \changes{v2.05}{2016/04/17}{neu}^^A
-% Die Makros zur Angabe von Logo-Dateien (\cs{\dots{}logofile}) werden auf die 
-% passenden \TUDScript-Befehle gelegt. Die Änderung der Makros, welche für die 
-% Einbindung der Logos verantwortlich sind (\cs{\dots{}logo}), wird allerdings
-% nicht unterstützt.
+% Die Makros zur Angabe von Logo-Dateien (|\...logofile|) werden auf die
+% passenden \TUDScript-Befehle gelegt. Die Änderung der Makros, welche für die
+% Einbindung der Logos verantwortlich sind (|\...logo|), wird allerdings nicht
+% unterstützt.
 %    \begin{macrocode}
-\newcommand*\zweitlogofile[2][]{\headlogo[#1]{#2}}
+\newcommand*\zweitlogofile[2][]{\headlogo[{#1}]{#2}}
 \newcommand*\zweitlogo[1]{%
   \PackageWarning{tudscrcomp}{%
     It isn't possible to redefine the definition for\MessageBreak%
@@ -1474,7 +1401,7 @@
     documentation of \string\headlogo%
   }%
 }
-\newcommand*\institutslogofile[2][]{\footlogo[#1]{,,,,,,,#2,}}
+\newcommand*\institutslogofile[2][]{\footlogo[{#1}]{,,,,,,,#2,}}
 \newcommand*\institutslogo[1]{%
   \PackageWarning{tudscrcomp}{%
     It isn't possible to redefine the definition for\MessageBreak%
@@ -1526,7 +1453,7 @@
 % zu umgehen. Sei's drum. Für die Umsetzung werden die Basisgliederungsbefehle 
 % geklont und anschließend der gewünschte vertikale Abstand vor der Überschrift 
 % entfernt.
-% \ToDo{Klonen Gliederungsebenen über Makro (Markus fragen?!)}[v2.??]
+% \ToDo{Klonen Gliederungsebenen über Makro (Markus fragen?!)}[v2.08]
 %    \begin{macrocode}
 \newcommand*\topsectionnumdepth{\sectionnumdepth}
 \newcommand*\scr at topsection@sectionindent{\scr at section@sectionindent}
@@ -1575,16 +1502,16 @@
 % Layout zentriert gesetzt werden. Eine Mischung von unterschiedlichen Stilen 
 % gleichartiger Ebenen ist aus sicht von Typographie und Layout eher fraglich.
 %    \begin{macrocode}
-\newcommand*\centersection[2][\@nil]{%
+\NewDocumentCommand\centersection{o m}{%
   \tud at comp@centersection{section}{#1}{#2}%
 }
-\newcommand*\centersubsection[2][\@nil]{%
+\NewDocumentCommand\centersubsection{o m}{%
   \tud at comp@centersection{subsection}{#1}{#2}%
 }
-\newcommand*\topcentersection[2][\@nil]{%
+\NewDocumentCommand\topcentersection{o m}{%
   \tud at comp@centersection{topsection}{#1}{#2}%
 }
-\newcommand*\topcentersubsection[2][\@nil]{%
+\NewDocumentCommand\topcentersubsection{o m}{%
   \tud at comp@centersection{topsubsection}{#1}{#2}%
 }
 %    \end{macrocode}
@@ -1595,11 +1522,11 @@
 \newcommand*\tud at comp@centersection[3]{%
   \tud at cs@store{raggedsection}%
   \let\raggedsection\centering%
-  \ifx#2\@nil\relax%
+  \IfValueTF{#2}{%
+    \csuse{#1}[{#2}]{#3}%
+  }{%
     \csuse{#1}{#3}%
-  \else%
-    \csuse{#1}[#2]{#3}%
-  \fi%
+  }
   \tud at cs@restore{raggedsection}%
 }
 %    \end{macrocode}
@@ -1631,29 +1558,37 @@
 \setcounter{secnumdepth}{\m at ne}
 %    \end{macrocode}
 % \end{counter}^^A secnumdepth
-% \begin{macro}{\fusszeile}
+% \begin{environment}{farbtabellen}
 % \changes{v2.05}{2016/04/17}{neu}^^A
-% \begin{macro}{\footcolumn}
+% \begin{macro}{\if at tud@comp at graytable}
 % \changes{v2.05}{2016/04/17}{neu}^^A
-% Mit diesen Befehlen lässt sich der Inhalt des Fußbereiches angepassen. Wird
-% in einem und/oder beiden Argumente von \cs{footcontent} ein Stern \val{*} 
-% verwendet, so bleibt der bisherige Inhalt erhalten.
+% \begin{macro}{\blautabelle}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% \begin{macro}{\grautabelle}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% Außerdem wird eine Umgebung für farbige Tabellen sowie zwei Umschaltbefehle 
+% für die farbliche Ausprägung der Tabellenzeilen definiert.
 %    \begin{macrocode}
-\newcommand*\fusszeile[2][]{\footcontent[#1]{#2}}
-\newcommand*\footcolumn[2]{%
-  \ifnumber{#1}{%
-    \ifcase#1\relax%
-      \footcontent{#2}%
-    \or%
-      \footcontent{#2}[*]%
-    \or%
-      \footcontent{*}[#2]%
-    \fi%
-  }{}%
+\tud at newif\if at tud@comp at graytable
+\newcommand*\blautabelle{\@tud at comp@graytablefalse}
+\newcommand*\grautabelle{\@tud at comp@graytabletrue}
+\newenvironment{farbtabellen}{%
+  \if at tud@comp at graytable%
+    \rowcolors{1}{HKS92!20}{HKS92!10}%
+  \else%
+    \rowcolors{1}{HKS41!20}{HKS41!10}%
+  \fi%
+}{}
+%    \end{macrocode}
+% \end{macro}^^A \grautabelle
+% \end{macro}^^A \blautabelle
+% \end{macro}^^A \if at tud@comp at graytable
+% \end{environment}^^A farbtabellen
+%
+% Das waren die Makros für die Posterklassen.
+%    \begin{macrocode}
 }
 %    \end{macrocode}
-% \end{macro}^^A \footcolumn
-% \end{macro}^^A \fusszeile
 %
 % \iffalse
 %</body>
@@ -1660,20 +1595,88 @@
 %<*option>
 % \fi
 %
+% Zuletzt wir die Option für das Laden von \pkg{colortbl} durchgereicht.
+%    \begin{macrocode}
+\tud at comp@on at poster@class{%
+\PassOptionsToPackage{table}{xcolor}
+}
+%    \end{macrocode}
+%
+% \begin{option}{cropmargin}
+% \changes{v2.06o}{2022/08/03}{neu}^^A
+% \begin{macro}{\tud at cropmargin@set}
+% \changes{v2.06o}{2022/08/03}{neu}^^A
+% \begin{macro}{\schnittrand}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% Nun geht es an das Makro \cs{schnittrand}. Zur Intension dieses Befehls gab
+% es im \GitHubRepo(tud-cd/tud-cd)<6> bereits eine angeregte Diskussion.
+% \ToDo{Für \cls{tudscrposter} bzw alle Klassen übernehmen?}[v2.07]
+%    \begin{macrocode}
+\tud at comp@on at poster@class{%
+\newcommand*\tud at cropmargin@set{}%
+\preto\tud at cdgeometry@@init{\tud at cropmargin@set}%
+\TUD at key{cropmargin}[5mm]{%
+  \TUD at set@dimkey[mm]{cropmargin}{\@tempa}{#1}%
+  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+    \edef\tud at cropmargin@set{%
+      \noexpand\geometry{%
+        papersize={%
+          \the\dimexpr(\@tempa)*2+\paperwidth\relax,%
+          \the\dimexpr(\@tempa)*2+\paperheight\relax%
+        },%
+        layoutsize={\the\paperwidth,\the\paperheight},%
+        layoutoffset=\the\dimexpr\@tempa\relax,%
+        showcrop%
+      }%
+    }%
+  \fi%
+}
+%    \end{macrocode}
+% Da die Option direkt auf das Seitenlayout zugreift und mehrmalige Aufrufe 
+% sich beeinflussen würden, werden diese zum Ende der Präambel unterbunden.
+%    \begin{macrocode}
+\AtEndPreamble{\TUD at key@toolate{cropmargin}}%
+%    \end{macrocode}
+% Nachdem die passende Option definiert wurde, wird noch \cs{schnittrand} 
+% ausgewertet und verarbeitet. Dies geschieht zum spätestmöglichen Zeitpunkt, 
+% damit dieser Befehl irgendwo innerhalb der Präambel definiert werden kann.
+%    \begin{macrocode}
+\preto\tud at cdgeometry@init{%
+  \ifundef{\schnittrand}{}{%
+    \TUDoptions{cropmargin=\schnittrand}%
+    \ifx\FamilyKeyState\FamilyKeyStateProcessed\else%
+      \PackageErrorNoLine{tudscrcomp}{%
+        Wrong definition for `\string\schnittrand'%
+      }{%
+        The definition of `\string\schnittrand' does not expand\MessageBreak%
+        to a valid dimension expression.%
+      }%
+    \fi%
+  }%
+}
+}
+%    \end{macrocode}
+% \end{macro}^^A \schnittrand
+% \end{macro}^^A \tud at cropmargin@set
+% \end{option}^^A cropmargin
+%
+% \begin{option}{tudmathfoot}
+% \changes{v2.05}{2016/04/17}{neu}^^A
 % \begin{option}{tudmathposterfoot}
+% \begin{option}{cdfoot}
+% \begin{macro}{\if at tud@mathfoot}
 % \changes{v2.05}{2016/04/17}{neu}^^A
-% \begin{macro}{\if at tud@mathposterfoot}
-% \changes{v2.05}{2016/04/17}{neu}^^A
-% Mit der Option \opt{tudmathposterfoot} kann die Darstellung des Fußes im 
-% Poster angepasst werden. Die Klasse \cls{tudmathposter} setzt den Fußbereich
-% in zwei asymmetrischen Spalten, wohingegen die \TUDScript-Klassen diesen
-% zentriert und symmetrisch zum Satzspiegel platzieren.
+% Mit der Option \opt{tudmathfoot} kann die Darstellung des Fußes im Poster
+% angepasst werden. Die Klasse \cls{tudmathposter} setzt den Fußbereich in zwei
+% asymmetrischen Spalten, wohingegen die \TUDScript-Klassen diesen zentriert
+% und symmetrisch zum Satzspiegel platzieren.
 %    \begin{macrocode}
-\newif\if at tud@mathposterfoot
-\TUD at key{tudmathposterfoot}[true]{%
-  \TUD at set@ifkey{tudmathposterfoot}{@tud at mathposterfoot}{#1}%
+\tud at comp@on at poster@class{%
+\tud at newif\if at tud@mathfoot
+\TUD at key{tudmathfoot}[true]{%
+  \TUD at set@ifkey{tudmathfoot}{@tud at mathfoot}{#1}%
   \ifx\FamilyKeyState\FamilyKeyStateProcessed%
-    \if at tud@mathposterfoot%
+    \if at tud@mathfoot%
       \footcontent[\small]{%
         \tud at footcontent@@left{}%
       }[%
@@ -1688,26 +1691,30 @@
     \fi%
   \fi%
 }
+\TUD at key{tudmathposterfoot}[true]{\TUDoptions{tudmathfoot=#1}}%
 %    \end{macrocode}
 % Die Option \opt{cdfoot} wird um Werte für die Einstellung des Posterfußes
 % erweitert.
 %    \begin{macrocode}
-\TUD at key{cdfoot}[true]{%
+\TUD at key{cdfoot}{%
   \TUD at set@numkey{cdfoot}{@tempa}{%
-    {tudscrposter}{0},{tudscrposterfoot}{0},{cdposter}{0},{poster}{0},%
-    {tudmathposter}{1},{tudmathposterfoot}{1},{mathposter}{1},{tudposter}{1}%
+    {tudscrposter}{0},{tudscrposterfoot}{0},{cdposter}{0},{tudscr}{0},%
+    {tudmathposter}{1},{tudmathfoot}{1},{tudmathposterfoot}{1},{tudmath}{1}%
   }{#1}%
   \ifx\FamilyKeyState\FamilyKeyStateProcessed%
     \ifcase\@tempa\relax% tudscrposter
-      \TUDoptions{tudmathposterfoot=false}%
+      \TUDoptions{tudmathfoot=false}%
     \else% tudmathposter
-      \TUDoptions{tudmathposterfoot=true}%
+      \TUDoptions{tudmathfoot=true}%
     \fi%
   \fi%
 }
+}
 %    \end{macrocode}
-% \end{macro}^^A \if at tud@mathposterfoot
+% \end{macro}^^A \if at tud@mathfoot
+% \end{option}^^A cdfoot
 % \end{option}^^A tudmathposterfoot
+% \end{option}^^A tudmathfoot
 %
 % \iffalse
 %</option>
@@ -1714,10 +1721,30 @@
 %<*body>
 % \fi
 %
+% \begin{macro}{\fusszeile}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% \begin{macro}{\footcolumn}
+% \changes{v2.05}{2016/04/17}{neu}^^A
 % \begin{macro}{\tud at footcontent@use}
-% \begin{macro}{\tud at comp@mathposterwidth}
-% \changes{v2.05}{2016/04/17}{neu}^^A
-% Um die Option \opt{tudmathposterfoot} umzusetzen, muss für die Ausgabe des 
+% Mit diesen Befehlen lässt sich der Inhalt des Fußbereiches angepassen. Wird
+% in einem und/oder beiden Argumente von \cs{footcontent} ein Stern \val{*} 
+% verwendet, so bleibt der bisherige Inhalt erhalten.
+%    \begin{macrocode}
+\tud at comp@on at poster@class{%
+\newcommand*\fusszeile[2][]{\footcontent[{#1}]{#2}}
+\newcommand*\footcolumn[2]{%
+  \Ifnumber{#1}{%
+    \ifcase#1\relax%
+      \footcontent{#2}%
+    \or%
+      \footcontent{#2}[*]%
+    \or%
+      \footcontent{*}[{#2}]%
+    \fi%
+  }{}%
+}
+%    \end{macrocode}
+% Um die Option \opt{tudmathfoot} umzusetzen, muss für die Ausgabe des 
 % Fußbereichs eine Anpassung des Makros \cs{tud at footcontent@use} erfolgen.
 % Normalerweise wird der Fußbereich in zwei gleichbreite Spalten über die
 % komplette Textbreite aufgeteilt. Dahingegen werden durch die Klasse 
@@ -1724,161 +1751,25 @@
 % \cls{tudmathposter} beide Fußspalten nicht über den kompletten Textbereich
 % verteilt, sondern es verbleibt etwas ungenutzter Platz rechts davon, welcher
 % für ein etwaiges Logo verwendet wird. Dieses Verhalten kann über die Option 
-% \opt{tudmathposterfoot} aktiviert werden und wird hier nachgebildet.
+% \opt{tudmathfoot} aktiviert werden und wird hier nachgebildet.
 %    \begin{macrocode}
-\newcommand*\tud at comp@mathposterwidth{4.2\tud at len@widemargin}
-\patchcmd{\tud at footcontent@use}{%
-  \hsize=\dimexpr#2-\@tempdimc\relax%
+\patchcmd\tud at footcontent@use{%
+  \tud at footcontent@@use{\tud at res@glue}%
 }{%
-  \if at tud@mathposterfoot%
-    \hsize=\dimexpr\tud at comp@mathposterwidth\relax%
+  \if at tud@mathfoot%
+    \tud at footcontent@@use{\glueexpr\tud at dim@widemargin*21/5\relax}%
   \else%
-    \hsize=\dimexpr#2-\@tempdimc\relax%
+    \tud at footcontent@@use{\@tud at res@glue}%
   \fi%
 }{}{\tud at patch@wrn{tud at footcontent@use}}
-\patchcmd{\tud at footcontent@use}{%
-  \hsize=\dimexpr(#2-\columnsep)/2\relax%
-}{%
-  \if at tud@mathposterfoot%
-    \hsize=\dimexpr(\tud at comp@mathposterwidth-\columnsep)/2\relax%
-  \else%
-    \hsize=\dimexpr(#2-\columnsep)/2\relax%
-  \fi%
-}{}{\tud at patch@wrn{tud at footcontent@use}}
-\patchcmd{\tud at footcontent@use}{%
-  \hsize=\dimexpr(#2-\columnsep)/2-\@tempdimc\relax%
-}{%
-  \if at tud@mathposterfoot%
-    \hsize=\dimexpr(\tud at comp@mathposterwidth-\columnsep)/2\relax%
-  \else%
-    \hsize=\dimexpr(#2-\columnsep)/2-\@tempdimc\relax%
-  \fi%
-}{}{\tud at patch@wrn{tud at footcontent@use}}
+}
 %    \end{macrocode}
-% \end{macro}^^A \tud at comp@mathposterwidth
 % \end{macro}^^A \tud at footcontent@use
-% \begin{environment}{figurehere}
-% \changes{v2.05}{2016/04/17}{neu}^^A
-% \begin{environment}{tablehere}
-% \changes{v2.05}{2016/04/17}{neu}^^A
-% Weiterhin stellt die Klasse \cls{tudmathposter} zwei Umgebungen bereit, mit 
-% denen sich Tabellen und Bilder an einer bestimmten Stelle exakt platzieren 
-% lassen. Prinzipiell könnte hierfür auch das Paket \pkg{float} zum Einsatz 
-% kommen.
-% \ToDo{Für \cls{tudscrposter} übernehmen?}[v2.07]
-%    \begin{macrocode}
-\newenvironment{figurehere}{%
-  \def\@captype{figure}%
-  \renewcommand*\caption{\captionof{figure}}%
-  \renewcommand*\captionabove{\captionaboveof{figure}}%
-  \renewcommand*\captionbelow{\captionbelowof{figure}}%
-  \vskip\intextsep%
-  \vbox \bgroup%
-    \hsize=\columnwidth%
-    \@parboxrestore%
-    \ignorespaces%
-}{%
-  \egroup%
-  \vskip\intextsep%
-  \ignorespaces%
-}
-\newenvironment{tablehere}{%
-  \def\@captype{table}%
-  \renewcommand*\caption{\captionof{table}}%
-  \renewcommand*\captionabove{\captionaboveof{table}}%
-  \renewcommand*\captionbelow{\captionbelowof{table}}%
-  \vskip\intextsep%
-  \vbox \bgroup%
-    \hsize=\columnwidth%
-    \@parboxrestore%
-    \ignorespaces%
-}{%
-  \egroup%
-  \vskip\intextsep%
-  \ignorespaces%
-}
-%    \end{macrocode}
-% \end{environment}^^A tablehere
-% \end{environment}^^A figurehere
-% \begin{environment}{farbtabellen}
-% \changes{v2.05}{2016/04/17}{neu}^^A
-% \begin{macro}{\if at tud@comp at graytable}
-% \changes{v2.05}{2016/04/17}{neu}^^A
-% \begin{macro}{\blautabelle}
-% \changes{v2.05}{2016/04/17}{neu}^^A
-% \begin{macro}{\grautabelle}
-% \changes{v2.05}{2016/04/17}{neu}^^A
-% Außerdem wird eine Umgebung für farbige Tabellen sowie zwei Umschaltbefehle 
-% für die farbliche Ausprägung der Tabellenzeilen definiert.
-%    \begin{macrocode}
-\PassOptionsToPackage{table}{xcolor}
-\newif\if at tud@comp at graytable
-\newcommand*\blautabelle{\@tud at comp@graytablefalse}
-\newcommand*\grautabelle{\@tud at comp@graytabletrue}
-\newenvironment{farbtabellen}{%
-  \if at tud@comp at graytable%
-    \rowcolors{1}{HKS92!20}{HKS92!10}%
-  \else%
-    \rowcolors{1}{HKS41!20}{HKS41!10}%
-  \fi%
-}{}
-%    \end{macrocode}
-% \end{macro}^^A \grautabelle
-% \end{macro}^^A \blautabelle
-% \end{macro}^^A \if at tud@comp at graytable
-% \end{environment}^^A farbtabellen
-% \begin{macro}{\schnittrand}
-% \changes{v2.05}{2016/04/17}{neu}^^A
-% Zu guter Letzt geht es an das Makro \cs{schnittrand}. Zur Intension dieses 
-% Befehls gab es auf \hrfn{https://github.com/tud-cd/tud-cd/issues/6}{GitHub}
-% bereits eine angeregte Diskussion. Deshalb wird das Makro als Wertzuweisung
-% für die Option \opt{bleedmargin} genutzt.
-% \ToDo{Für \cls{tudscrposter} übernehmen?}[v2.07]
-%    \begin{macrocode}
-\ifundef{\schnittrand}{}{%
-  \ifisdimension{\schnittrand}{%
-    \edef\@tempa{%
-      paperwidth=\the\dimexpr\paperwidth+\schnittrand*2\relax,%
-      paperheight=\the\dimexpr\paperheight+\schnittrand*2\relax,%
-      layout=\the\paperwidth:\the\paperheight,%
-      layoutoffset=\the\dimexpr\schnittrand\relax,%
-      showcrop%
-    }%
-    \expandafter\geometry\expandafter{\@tempa}%
-  }{%
-    \PackageErrorNoLine{tudscrcomp}{%
-      Wrong definition for `\string\schnittrand'%
-    }{%
-      The definition of `\string\schnittrand' does not expand to\MessageBreak%
-      a valid dimension expression.%
-    }%
-  }%
-}%
-%    \end{macrocode}
-% \end{macro}^^A \schnittrand
+% \end{macro}^^A \footcolumn
+% \end{macro}^^A \fusszeile
 %
-% Die Klasse \cls{tudmathposter} lädt allerhand Pakete. Dies ist jedoch für den 
-% Anwender alles andere als vorteilhaft, da dadurch unter Umständen Konflikte
-% mit anderen Paketen entstehen oder der Nutzer im Zweifelsfall gar nicht weiß, 
-% dass verwendete Befehle aus bestimmten Paketen entspringen. Dennoch werden 
-% aus Kompatibilitätsgründen einige Pakete geladen, um bestehende Dokumente 
-% trotz alledem nach der Portierung kompiliert werden können. Um den Nutzer die 
-% Möglichkeit zu geben, die Pakete selber ggf. mit Optionen zu laden, erfolgt 
-% die Anforderung der Pakete erst am ende der Präambel.
-%    \begin{macrocode}
-\AtEndPreamble{%
-  \RequirePackage{amsmath}[2016/06/28]%
-  \RequirePackage{amsfonts}[2013/01/14]%
-  \RequirePackage{calc}[2014/10/28]%
-  \RequirePackage{textcomp}[2016/06/19]%
-  \RequirePackage{tabularx}[2016/02/03]%
-}
-%    \end{macrocode}
-%
 % \iffalse
 %</body>
-%</poster>
-%</!base>
 %</package&comp>
 % \fi
 %
@@ -1888,7 +1779,7 @@
 %   Bereitstellung der Schriften für veraltete Klassen}^^A
 %
 % Das Paket \pkg{fix-tudscrfonts} bietet die Schriftfamilien des \TUDCDs im 
-% \TUDScript-Stil für die \enquote{veralteten} Klassen von Klaus Bergmann sowie
+% \TUDScript-Stil für die \enquote{veralteten} Klassen von Klaus~Bergmann sowie
 % die Posterklassen an. 
 %
 % \iffalse
@@ -1901,7 +1792,9 @@
 %    \begin{macrocode}
 \AtEndPreamble{%
   \tud at fixfonts@class at check%
-  \RequirePackage{tudscrfonts}[\TUD at Version]%
+  \RequirePackage{tudscrfonts}[%
+%!TUD at Version
+  ]%
 }
 %    \end{macrocode}
 %
@@ -1908,15 +1801,15 @@
 % \subsection{Verwendbarkeit und Ladezeitpunkt von \pkg{fix-tudscrfonts}}
 %
 % Da das Paket eine Vielzahl an Anpassungen der Schriftbefehle vornimmt sowie
-% die Definition von \LaTeXe-Standardbefehlen bereits vor dem Laden der
-% eigentlichen Dokumentklasse sichern muss, kann dieses Paket ausschließlich 
-% vor \cs{documentclass} mit \cs{RequirePackage} geladen werden.
+% die Definition von \LaTeX-Standardbefehlen bereits vor dem Laden der
+% eigentlichen Klasse sichern muss, kann dieses Paket ausschließlich vor
+% \cs{documentclass} mit \cs{RequirePackage} geladen werden.
 %
 % \begin{macro}{\tud at fixfonts@class at check}
 % \changes{v2.05}{2016/01/02}{neu}^^A
 % Dieser Befehl wird nach dem Laden einer unterstützten Klasse zu \cs{relax} 
-% gesetzt. Sollte das Paket jedoch erst nach einer Dokumentklasse geladen 
-% werden, so wird ein Fehler ausgegeben.
+% gesetzt. Sollte das Paket jedoch erst nach einer Klasse geladen werden, so
+% wird ein Fehler ausgegeben.
 %    \begin{macrocode}
 \ifx\usepackage\RequirePackage
   \newcommand*\tud at fixfonts@class at check{%
@@ -1926,8 +1819,8 @@
     }%
   }%
 %    \end{macrocode}
-% Wird das Paket mit einer nicht unterstützten Dokumentklasse verwendet, wird
-% ebenfalls ein Fehler ausgegeben.
+% Wird das Paket mit einer nicht unterstützten Klasse verwendet, wird ebenfalls
+% ein Fehler ausgegeben.
 %    \begin{macrocode}
 \else
   \newcommand*\tud at fixfonts@class at check{%
@@ -1999,6 +1892,8 @@
     \tud at cs@store{shapedefault}%
     \tud at cs@store{normalfont}%
     \let\normalfont\relax%
+    \let\abovecaptionskip\relax%
+    \let\belowcaptionskip\relax%
     \PassOptionsToClass{serifmath}{#1}%
   }%
   \AfterClass{#1}{%
@@ -2019,6 +1914,10 @@
     \tud at cs@restore{seriesdefault}%
     \tud at cs@restore{shapedefault}%
     \tud at cs@restore{normalfont}%
+    \newlength\abovecaptionskip%
+    \newlength\belowcaptionskip%
+    \setlength\abovecaptionskip{10\p@}%
+    \setlength\belowcaptionskip{0\p@}%
     #2%
     \AfterPackage{tudscrfonts}{%
       \def\dinBold{\dinbn}%
@@ -2151,29 +2050,41 @@
 % zwingend in \DIN gesetzt werden.
 %    \begin{macrocode}
 \tud at fixfonts@class at adapt{tudbook}{%
-  \patchcmd{\@makechapterhead}{\dinBold\Huge\bfseries}{%
+  \patchcmd\@makechapterhead{%
+    \dinBold\Huge\bfseries%
+  }{%
     \tud at sec@fontface%
     \if at color\color{HKS41-100}\fi%
     \Huge%
   }{}{\tud at patch@wrn{@makechapterhead}}%
-  \patchcmd{\@makechapterhead}{\MakeUppercase}{%
+  \patchcmd\@makechapterhead{%
+    \MakeUppercase%
+  }{%
     \tud at sec@format%
   }{}{\tud at patch@wrn{@makechapterhead}}%
-  \patchcmd{\@makeschapterhead}{\dinBold\Huge\bfseries}{%
+  \patchcmd\@makeschapterhead{%
+    \dinBold\Huge\bfseries%
+  }{%
     \tud at sec@fontface%
     \if at color\color{HKS41-100}\fi%
     \Huge%
   }{}{\tud at patch@wrn{@makeschapterhead}}%
-  \patchcmd{\@makeschapterhead}{\MakeUppercase}{%
+  \patchcmd\@makeschapterhead{%
+    \MakeUppercase%
+  }{%
     \tud at sec@format%
   }{}{\tud at patch@wrn{@makeschapterhead}}%
-  \patchcmd{\section}{\dinBold\Large\bfseries\MakeUppercase}{%
+  \patchcmd\section{%
+    \dinBold\Large\bfseries\MakeUppercase%
+  }{%
     \tud at sec@fontface%
     \if at color\color{HKS41-100}\fi%
     \Large%
     \tud at sec@format%
   }{}{\tud at patch@wrn{section}}%
-  \patchcmd{\showtitle}{\dinBold\Huge\bfseries\MakeUppercase}{%
+  \patchcmd\showtitle{%
+    \dinBold\Huge\bfseries\MakeUppercase%
+  }{%
     \tud at sec@fontface%
     \if at colortitle\color{HKS41-30}\fi%
     \Huge%
@@ -2208,6 +2119,7 @@
 % Es werden einige Einstellungen für die Überschriften angepasst.
 %    \begin{macrocode}
 \tud at fixfonts@class at adapt{tudmathposter}{%
+  \ifunivers\PassOptionsToPackage{cdoldfont}{tudscrfonts}\fi%
   \def\raggedtitle{\tud at raggedright}%
   \renewcommand*\raggedpart{\tud at raggedright}%
   \renewcommand*\raggedsection{\tud at raggedright}%
@@ -2235,7 +2147,9 @@
       \fi
     }%
   }%
-  \apptocmd{\maketitle}{\vspace{-6ex}}{}{\tud at patch@wrn{maketitle}}%
+  \apptocmd\maketitle{%
+    \vspace{-6ex}%
+  }{}{\tud at patch@wrn{maketitle}}%
   \renewcommand*\subtitlefont{%
     \unskip%
     \tud at sec@fontface%
@@ -2242,18 +2156,16 @@
     \huge%
   }%
   \renewcommand*\preprocesstitle[1]{\raggedtitle\tud at sec@format{#1}}%
-  \if at mathevorgabe%
-    \undef\sectionfont%
-    \undef\subsectionfont%
-  \fi%
-  \newcommand*\sectionfont{\bfseries\LARGE}%
-  \newcommand*\subsectionfont{\sectionfont\large}%
+  \def\sectionfont{\tud at sec@fontface\LARGE}%
+  \def\subsectionfont{\tud at sec@fontface\large}%
 %    \end{macrocode}
 % Für die Schriftstärke in der Kopfzeile muss der Seitenstil angepasst und  
 % anschließend nochmals akiviert werden.
 %    \begin{macrocode}
-  \patchcmd{\ps at tudposter}{\textbf{\@einrichtung}}{%
-    \textbf{\fontseries{b}\selectfont\@einrichtung}%
+  \patchcmd\ps at tudposter{%
+    \textbf{\@einrichtung}%
+  }{%
+    {\fontseries{b}\selectfont\@einrichtung}%
   }{}{\tud at patch@wrn{ps at tudposter}}%
   \pagestyle{tudposter}%
 }
@@ -2267,23 +2179,21 @@
 % \end{KOMAfont}^^A title
 %
 % \begin{macro}{\tud at x@tudfonts at prevent}
-% \changes{v2.06}{2018/02/14}{%
-%   neu, nur einmaliges Ausführen des Fixes für \pkg{tudfonts}%
-% }^^A
+% \changes{v2.06}{2018/02/14}{neu}^^A
 % \begin{macro}{\if at tudfonts@nodin}
 % \changes{v2.04}{2015/04/24}{\cls{tudmathposter} wird unterstützt}^^A
 % Die Klasse \cls{tudmathposter} lädt für die Einstellungen der Schriften das 
 % Paket \pkg{tudfonts}. Wenn \pkg{tudscrfonts} zum Einsatz kommen soll, ist das 
 % unerwünscht, weshalb das Laden hiermit unterbunden wird.
+% \ToDo{opensans nur durch Dokumentklasse nicht laden}[v2.07]
 %    \begin{macrocode}
 \newcommand*\tud at x@tudfonts at prevent{%
-  \RequirePackage{amsmath}%
-  \RequirePackage{amsfonts}%
   \newif\if at tudfonts@nodin%
   \let\DeclareTudMathSizes\@gobblefour%
   \let\tud at x@tudfonts at prevent\relax%
 }
 \PreventPackageFromLoading[\tud at x@tudfonts at prevent]{tudfonts}
+\PreventPackageFromLoading{opensans}
 %    \end{macrocode}
 % \end{macro}^^A \if at tudfonts@nodin
 % \end{macro}^^A \tud at x@tudfonts at prevent
@@ -2293,6 +2203,6 @@
 %</package&fixfonts>
 % \fi
 %
-% \Finale
+% \PrintBackMatter
 %
 \endinput

Modified: trunk/Master/texmf-dist/source/latex/tudscr/tudscr-doc.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tudscr/tudscr-doc.dtx	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/source/latex/tudscr/tudscr-doc.dtx	2022-08-09 20:01:54 UTC (rev 64085)
@@ -1,10 +1,10 @@
-% \CheckSum{2094}
 % \iffalse meta-comment
+%/GitFileInfo=tudscr-doc.dtx
 %
 %  TUD-Script -- Corporate Design of Technische Universität Dresden
 % ----------------------------------------------------------------------------
 %
-%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2021
+%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2022
 %
 % ----------------------------------------------------------------------------
 %
@@ -23,33 +23,19 @@
 %
 % \fi
 %
-% \CharacterTable
-%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-%   Digits        \0\1\2\3\4\5\6\7\8\9
-%   Exclamation   \!     Double quote  \"     Hash (number) \#
-%   Dollar        \$     Percent       \%     Ampersand     \&
-%   Acute accent  \'     Left paren    \(     Right paren   \)
-%   Asterisk      \*     Plus          \+     Comma         \,
-%   Minus         \-     Point         \.     Solidus       \/
-%   Colon         \:     Semicolon     \;     Less than     \<
-%   Equals        \=     Greater than  \>     Question mark \?
-%   Commercial at \@     Left bracket  \[     Backslash     \\
-%   Right bracket \]     Circumflex    \^     Underscore    \_
-%   Grave accent  \`     Left brace    \{     Vertical bar  \|
-%   Right brace   \}     Tilde         \~}
-%
-% \iffalse
-%%% From File: tudscr-doc.dtx
+% \iffalse ins:batch + dtx:driver
+%<*ins>
+\ifx\documentclass\undefined
+  \input docstrip.tex
+  \ifToplevel{\batchinput{tudscr.ins}}
+\else
+  \let\endbatchfile\relax
+\fi
+\endbatchfile
+%</ins>
 %<*dtx>
-% \fi
-%
-\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
-\ProvidesFile{tudscr-doc.dtx}[2019/07/18 v2.06c TUD-Script\space%
-  (source code documentation based on scrartcl/scrdoc)%
-]
-%
-% \iffalse
+\ProvidesFile{tudscr-doc.dtx}[2022/08/09]
+\RequirePackage{tudscr-gitinfo}
 \documentclass[english,ngerman,xindy]{tudscrdoc}
 \iftutex
   \usepackage{fontspec}
@@ -59,18 +45,11 @@
 \fi
 \usepackage{babel}
 \usepackage{tudscrfonts}
-\KOMAoptions{parskip=half-}
-\usepackage{bookmark}
 \usepackage[babel]{microtype}
 
-\CodelineIndex
-\RecordChanges
-\GetFileInfo{tudscr-doc.dtx}
-\title{\file{\filename}}
-\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
-\date{\fileversion\nobreakspace(\filedate)}
-
+\GitHubBase{\TUDScriptRepository}
 \begin{document}
+  \author{Falk Hanisch\TUDScriptContactTitle}
   \maketitle
   \tableofcontents
   \DocInput{\filename}
@@ -83,6 +62,8 @@
 % \changes{v2.03}{2015/01/09}{\cls{tudscrdoc}: Indextyp Seitenstilebene}^^A
 % \changes{v2.05}{2016/04/21}{Verwendung von \app{texindy} möglich}^^A
 %
+%
+%
 % \section{Die Klasse \cls{tudscrdoc} -- Erweiterte Quelltextdokumentation}
 %
 % Mit dieser Klasse erfolgt die Quelltextdokumentation des \TUDScript-Bundles. 
@@ -89,8 +70,6 @@
 % Sie lädt standarmäßig die Klasse \cls{ltxdoc}, ersetzt allerdings im Stile 
 % von \cls{scrdoc} im Hintergrund \cls{article} durch \cls{scrartcl}.
 %
-% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
-%
 % \iffalse
 %<*class&option>
 % \fi
@@ -98,27 +77,30 @@
 % Damit der zu \cls{scrartcl} gehörige Titel genutzt werden kann, wird dieser
 % temporär gesichert.
 %    \begin{macrocode}
-\newcommand*\scr at maketitle{}%
-\PassOptionsToClass{toc=left,fontsize=10pt}{scrartcl}%
-\AfterClass{scrartcl}{\let\scr at maketitle\@maketitle}%
+\newcommand*\scr at maketitle{}
+\PassOptionsToClass{toc=left,fontsize=10pt,parskip=half-}{scrartcl}
+\AfterClass{scrartcl}{\let\scr at maketitle\@maketitle}
+\AfterClass{ltxdoc}{\let\@maketitle\scr at maketitle}
 %    \end{macrocode}
 % Der folgende Quelltext ist 1:1 aus \cls{scrdoc} kopiert.
 %    \begin{macrocode}
-\newcommand*\sd at saved@LoadClass{}
-\let\sd at saved@LoadClass=\LoadClass
+\newcommand*\tud at saved@LoadClass{}
+\let\tud at saved@LoadClass=\LoadClass
 \renewcommand*\LoadClass[2][]{%
   \begingroup%
     \edef\@tempc{#2}\def\@tempb{article}%
     \ifx\@tempc\@tempb%
-      \let\LoadClass\sd at saved@LoadClass%
+      \let\LoadClass\tud at saved@LoadClass%
       \def\@tempc{scrartcl}%
     \fi%
     \edef\@tempc{%
-      \noexpand\endgroup\noexpand\sd at saved@LoadClass[{#1}]{\@tempc}}%
+      \endgroup%
+      \noexpand\tud at saved@LoadClass[{#1}]{\@tempc}%
+    }%
   \@tempc%
 }
-\newcommand*\sd at saved@PassOptionsToClass{}
-\let\sd at saved@PassOptionsToClass=\PassOptionsToClass
+\newcommand*\tud at saved@PassOptionsToClass{}
+\let\tud at saved@PassOptionsToClass=\PassOptionsToClass
 \renewcommand*\PassOptionsToClass[2]{%
   \begingroup%
     \edef\@tempc{#2}\def\@tempb{article}%
@@ -126,8 +108,9 @@
       \def\@tempc{scrartcl}%
     \fi%
     \edef\@tempc{%
-      \noexpand\endgroup\noexpand\sd at saved@PassOptionsToClass{#1}{%
-        \@tempc}}%
+      \endgroup%
+      \noexpand\tud at saved@PassOptionsToClass{#1}{\@tempc}%
+    }%
   \@tempc%
 }
 \LoadClassWithOptions{ltxdoc}[2015/03/26]
@@ -135,6 +118,21 @@
 \setcounter{StandardModuleDepth}{2}
 %    \end{macrocode}
 %
+% \subsection{Ignorierte Makros bei der Nutzung von zusätzlichen Indexeinträgen}
+%
+% Befehle, welche bei der Verwendung von \cs{EnableCrossrefs} dennoch nicht im 
+% Index erscheinen sollen, müssen mit \cs{DoNotIndex angegeben werden.}
+%
+% \begin{macro}{\DisableCrossrefsForced}
+% \changes{v2.05i}{2017/03/02}{neu}^^A
+% Deaktivieren von Makroeinträgen im Index nach der Verwendung von
+% \cs{EnableCrossrefs}. Sollte in einer Gruppe genutzt werden!
+%    \begin{macrocode}
+\newcommand*\DisableCrossrefsForced{}
+\let\DisableCrossrefsForced\DisableCrossrefs
+%    \end{macrocode}
+% \end{macro}^^A \DisableCrossrefsForced
+%
 % \subsection{Klassenoptionen}
 %
 % \begin{option}{final}
@@ -169,697 +167,892 @@
 \ProcessOptions\relax
 %    \end{macrocode}
 %
-% \subsection{Ignorierte Makros bei der Nutzung von zusätzlichen Indexeinträgen}
-%
-% Befehle, welche bei der Verwendung von \cs{EnableCrossrefs} dennoch nicht im 
-% Index erscheinen sollen.
-%
-% \begin{macro}{\DisableCrossrefsForced}
-% \changes{v2.05i}{2017/03/02}{neu}^^A
-% Deaktivieren von Makroeinträgen im Index nach der Verwendung von
-% \cs{EnableCrossrefs}. Sollte in einer Gruppe genutzt werden!
-%    \begin{macrocode}
-\newcommand*\DisableCrossrefsForced{}
-\let\DisableCrossrefsForced\DisableCrossrefs
-%    \end{macrocode}
-% \end{macro}^^A \DisableCrossrefsForced
-%
-% \begingroup%
-% \DisableCrossrefsForced%
-%    \begin{macrocode}
-%^^A\DoNotIndex{\ ,\",\.,\@,\\,\{,\}}
-%^^A\DoNotIndex{\@abstrtfalse,\@abstrttrue,\@addtoreset}
-%^^A\DoNotIndex{\@afterheading,\@afterindentfalse}
-%^^A\DoNotIndex{\@Alph,\@alph,\@arabic}
-%^^A\DoNotIndex{\@beginparpenalty}
-%^^A\DoNotIndex{\@car,\@cdr,\@centercr}
-%^^A\DoNotIndex{\@dblfloat,\@dotsep,\@dottedtocline}
-%^^A\DoNotIndex{\@empty,\@endparpenalty}
-%^^A\DoNotIndex{\@float,\@fontswitch}
-%^^A\DoNotIndex{\@gobbletwo}
-%^^A\DoNotIndex{\@hangfrom,\@highpenalty}
-%^^A\DoNotIndex{\@ifnextchar,\@ifundefined,\@itempenalty}
-%^^A\DoNotIndex{\@latex at warning}
-%^^A\DoNotIndex{\@M,\@m,\@medpenalty,\@minus,\@mkboth}
-%^^A\DoNotIndex{\@mparswitchfalse,\@mparswitchtrue}
-%^^A\DoNotIndex{\@ne,\@nil,\@nobreakfalse,\@nobreaktrue,\@nomath}
-%^^A\DoNotIndex{\@plus}
-%^^A\DoNotIndex{\@Roman,\@roman}
-%^^A\DoNotIndex{\@tempa,\@tempb,\@tempc}
-%^^A\DoNotIndex{\@tempcnta,\@tempcntb,\@tempcntc}
-%^^A\DoNotIndex{\@tempdima,\@tempdimb,\@tempdimc}
-%^^A\DoNotIndex{\@tempskipka,\@tempskipkb,\@tempskipkc}
-%^^A\DoNotIndex{\@tempswafalse,\@tempswatrue,\@tempswbfalse,\@tempswbtrue}
-%^^A\DoNotIndex{\@tocrmarg,\@topnewpage,\@topnum}
-%^^A\DoNotIndex{\@twocolumnfalse,\@twocolumntrue,\@twosidefalse,\@twosidetrue}
-%^^A\DoNotIndex{\@undefined,\@whiledim,\@whilenum}
-%^^A\DoNotIndex{\addcontentsline,\addpenalty,\addtocontents}
-%^^A\DoNotIndex{\addtolength,\addvspace,\advance}
-%^^A\DoNotIndex{\begin,\begingroup,\bfseries,\box,\bullet}
-%^^A\DoNotIndex{\c at figure,\c at page,\c at secnumdepth,\c at table,\c at tocdepth,\cdot}
-%^^A\DoNotIndex{\centering,\changes,\cleardoublepage,\clearpage,\cmd}
-%^^A\DoNotIndex{\CodelineIndex,\col at number,\cs,\CurrentOption}
-%^^A\DoNotIndex{\dblfloatpagefraction,\dbltopfraction,\def,\divide,\DoNotIndex}
-%^^A\DoNotIndex{\DeclareOldFontCommand,\DeclareOption,\DisableCrossrefs}
-%^^A\DoNotIndex{\else,\em,\empty,\EnableCrossrefs,\end,\end at dblfloat,\end at float}
-%^^A\DoNotIndex{\endgroup,\endlist,\endquotation,\endtitlepage,\everypar}
-%^^A\DoNotIndex{\ExecuteOptions,\expandafter}
-%^^A\DoNotIndex{\fboxrule,\fboxsep,\fi}
-%^^A\DoNotIndex{\gdef,\global}
-%^^A\DoNotIndex{\hangindent,\hbox,\hfil,\hrule,\hsize,\hskip,\hspace,\hss}
-%^^A\DoNotIndex{\if,\if at tempswa,\ifcase,\ifdim,\ifnum,\ifodd,\ifx,\include}
-%^^A\DoNotIndex{\input,\InputIfFileExists,\item,\itshape}
-%^^A\DoNotIndex{\kern}
-%^^A\DoNotIndex{\leavevmode,\leftmark,\leftskip,\let,\lineskip,\list,\long}
-%^^A\DoNotIndex{\m at ne,\m at th,\marginpar,\markboth,\markright}
-%^^A\DoNotIndex{\mathbf,\mathcal,\mathit,\mathnormal,\mathrm,\mathsf,\mathtt}
-%^^A\DoNotIndex{\MessageBreak,\month}
-%^^A\DoNotIndex{\newblock,\newcommand,\newcount,\newcounter,\newdimen}
-%^^A\DoNotIndex{\newenvironment,\newlength,\newpage,\nobreak,\noindent}
-%^^A\DoNotIndex{\normalcolor,\normalfont,\normallineskip,\normalsize}
-%^^A\DoNotIndex{\null,\number,\numberline}
-%^^A\DoNotIndex{\OldMakeindex,\OnlyDescription,\or,\overfullrule}
-%^^A\DoNotIndex{\p@,\PackageError,\PackageInfo,\PackageWarningNoLine}
-%^^A\DoNotIndex{\pagenumbering,\pagestyle,\par,\paragraph,\parbox}
-%^^A\DoNotIndex{\PassOptionsToPackage,\pcal,\penalty,\protect,\providecommand}
-%^^A\DoNotIndex{\PrintIndex,\PrintChanges,\ProcessOptions,\ProvidesClass}
-%^^A\DoNotIndex{\raggedbottom,\raggedleft,\raggedright,\refstepcounter,\relax}
-%^^A\DoNotIndex{\renewcommand,\RequirePackage,\reset at font,\rightmargin}
-%^^A\DoNotIndex{\rightmark,\rightskip,\rmfamily}
-%^^A\DoNotIndex{\scshape,\secdef,\setbox,\setcounter,\setlength,\settowidth}
-%^^A\DoNotIndex{\sfcode,\sffamily,\skip,\sloppy,\slshape,\space,\string}
-%^^A\DoNotIndex{\the,\thispagestyle,\ttfamily,\twocolumn,\typeout}
-%^^A\DoNotIndex{\undefined,\usecounter}
-%^^A\DoNotIndex{\vfil,\vfill,\vspace}
-%^^A\DoNotIndex{\wd}
-%^^A\DoNotIndex{\xdef}
-%^^A\DoNotIndex{\year}
-%^^A\DoNotIndex{\z@}
-%    \end{macrocode}
-% \endgroup%
-%
 % \iffalse
 %</class&option>
 %<*class&body>
 % \fi
 %
-% \subsection{Definition und Erscheinungsbild von Deklarationselementen}
+% \subsection{Standardwerte für Titelei, Absatzauszeichnung und Index}
 %
-% Mit dem Paket~\pkg{dox} können weitere Deklarationselemente erstellt werden.
-% Dieses lädt außerdem das Paket~\pkg{doc}, welches die Grundfunktionalitäten
-% für die Erstellung von \file{.dtx}-Dateien bereitstellt. In der momentanen
-% Version unterstützt das Paket~\pkg{dox} die aktuellen Anpassungen an die
-% Erstellung von Änderungsnotizen durch \pkg{doc} nicht, weshalb im Folgenden
-% einige Patches notwendig sind.
+% Folgende Werte sind standardmäßig für den Titel eingestellt, können aber 
+% jederzeit überschrieben werden.
 %    \begin{macrocode}
-\RequirePackage{dox}[2010/12/16]
-\@ifpackagelater{dox}{2017/12/07}{%
-  \ClassWarning{\TUD at Class@Name}{%
-    Package `dox' was updated so some patches\MessageBreak%
-    are maybe outdated%
-  }%
-}{}%
+\AtEndOfClass{%
+  \@ifpackageloaded{tudscr-gitinfo}{%
+    \GetFileInfo{\jobname}%
+    \title{\file{\filename}}%
+    \date{%
+      \filedate%
+      \ifdefvoid{\fileversion}{}{\nobreakspace\fileversion}%
+      \ifdefvoid{\filerevision}{}{\nobreakspace\texttt{\filerevision}}%
+    }%
+  }{}%
+  \CodelineIndex%
+  \RecordChanges%
+}
 %    \end{macrocode}
-% \begin{macro}{\m at cro@}
-% Nach dem Laden des Paketes werden die Definitionen einiger Makros überprüft.
+% Wurde in der Präambel \cs{GetFileInfo} nicht aufgerufen, dann erfolgt dies zu 
+% Beginn des Dokumentes.
 %    \begin{macrocode}
-\CheckCommand\m at cro@[2]{%
-  \endgroup \topsep\MacroTopsep \trivlist
-  \edef\saved at macroname{\string#2}%
-  #1
-    \let\saved at indexname\saved at macroname
-  \else
-    \edef\saved at indexname{\expandafter\@gobble\string#2}%
-  \fi
-  \def\makelabel##1{\llap{##1}}%
-  \if at inlabel
-    \let\@tempa\@empty \count@\macro at cnt
-    \loop \ifnum\count@>\z@
-      \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m at ne \repeat
-    \edef\makelabel##1{\llap{\vtop to\baselineskip
-                               {\@tempa\hbox{##1}\vss}}}%
-    \advance \macro at cnt \@ne
-  \else  \macro at cnt\@ne  \fi
-  \edef\@tempa{\noexpand\item[%
-     #1%
-       \noexpand\PrintMacroName
-     \else
-       \noexpand\PrintEnvName
-     \fi
-     {\string#2}]}%
-  \@tempa
-  \global\advance\c at CodelineNo\@ne
-   #1%
-      \SpecialMainIndex{#2}\nobreak
-      \DoNotIndex{#2}%
-   \else
-      \SpecialMainEnvIndex{#2}\nobreak
-   \fi
-  \global\advance\c at CodelineNo\m at ne
-  \ignorespaces
+\AtBeginDocument{%
+  \ifdefvoid{\filename}{%
+    \IfFileExists{\jobname.dtx}{%
+      \edef\filename{\jobname.dtx}%
+    }{%
+      \edef\filename{\jobname.tex}%
+    }%
+    \undef\filedate%
+    \undef\fileversion%
+    \undef\filerevision%
+    \undef\fileinfo%
+    \expandafter\GetFileInfo\expandafter{\filename}%
+  }{}%
+  \ifdefvoid{\filerevision}{\let\filerevision\@empty}{}%
 }
 %    \end{macrocode}
-% \end{macro}^^A \m at cro@
 %
-% \subsubsection{Erweiterte Einträge für Index und Änderungsliste}
+% \subsection{Seitenstil}
 %
-% \begin{macro}{\doxitem}
-% Mit dem Befehl \cs{doxitem} werden beliebige Deklarationselemente erstellt. 
-% das Makro wird für das Hinzufügen des Eintragstyps für Index, Änderungsliste 
-% und Randnotiz angepasst.
+% \begin{macro}{\@docinclude}
+% \begin{macro}{\ps at tudscrdoc}
+% Die Auswahl des Seitenstils wird im Vergleich zur Klasse \cls{ltxdoc}
+% verbessert und an das Paket \pkg{tudscr-gitinfo} angepasst.
 %    \begin{macrocode}
-\CheckCommand\doxitem[4][]{%
-  \@nameuse{dox at macrolike\dox at macrolikedefault}%
-  \def\dox at idxtype{#3}%
-  \setkeys{dox}{#1}
-  \@ifundefined{Print#2Name}{%
-    \ifdox at macrolike
-      \expandafter\def\csname Print#2Name\endcsname##1{%
-        \strut\MacroFont\string ##1\ }
-    \else
-      \expandafter\def\csname Print#2Name\endcsname##1{%
-        \strut\MacroFont ##1\ }
-    \fi}{}
-  \ifdox at macrolike
-    \def\@doxexpr{\@doxcreatespecialmainmacrolikeindex{#2}}%
-  \else
-    \def\@doxexpr{\@doxcreatespecialmainindex{#2}}%
-  \fi
-  \expandafter\@doxexpr\expandafter{\dox at idxtype}{#4}%
-  \@ifundefined{PrintDescribe#2}{%
-    \ifdox at macrolike
-      \expandafter\def\csname PrintDescribe#2\endcsname##1{%
-        \strut\MacroFont\string ##1\ }
-    \else
-      \expandafter\def\csname PrintDescribe#2\endcsname##1{%
-        \strut\MacroFont ##1\ }
-    \fi}{}
-  \ifdox at macrolike
-    \def\@doxexpr{\@doxcreatespecialmacrolikeindex{#2}}%
-  \else
-    \def\@doxexpr{\@doxcreatespecialindex{#2}}%
-  \fi
-  \expandafter\@doxexpr\expandafter{\dox at idxtype}{#4}%
-  \@doxcreatedescribe{#2}
-  \@doxcreateenv{#2}{#3}
-  \ifdox at macrolike
-    \expandafter\let\csname @Save#2IndexName\endcsname%
-      \@doxsavemacrolikeindexname%
-  \else
-    \expandafter\let\csname @Save#2IndexName\endcsname\@doxsaveindexname%
-  \fi
+\pretocmd\@docinclude{%
+  \GetFileInfo{#1}\pagestyle{tudscrdoc}%
+}{}{\tud at patch@wrn{@docinclude}}
+\def\ps at tudscrdoc{%
+  \let\@mkboth\@gobbletwo%
+  \let\@oddhead\@empty%
+  \let\@evenhead\@empty%
+  \def\@oddfoot{%
+    File\ifnum\c at part>\z@\nobreakspace\thepart\fi:%
+    \nobreakspace\texttt{\ifdefvoid{\filename}{?}{\filename}}%
+    \enskip Version:\nobreakspace\ifdefvoid{\filedate}{?}{\filedate}%
+    \ifdefvoid{\fileversion}{}{\nobreakspace\fileversion}%
+    \ifdefvoid{\filerevision}{}{\enskip\texttt{\filerevision}}%
+    \hfill\thepage%
+  }%
+  \def\@evenfoot{\@oddfoot}%
 }
+\pagestyle{tudscrdoc}%
+\let\ps at titlepage\ps at tudscrdoc%
 %    \end{macrocode}
-% Das Makro wird dahingehend angepasst, dass alle für die Ausgabe erzeugten 
-% Befehle der Form  \cs{Print\meta{Typ}Name} und \cs{PrintDescribe\meta{Typ}}
-% um den Eintragstyp ergänzt werden, erstellt durch \cs{doxcreateprintname} 
-% bzw. \cs{doxcreatemacrolikeprintname}. Zusätzlich werden für die Klasse
-% \cls{tudscrdoc} Befehle in der Form \cs{@Save\meta{Typ}IndexName} mit den 
-% neuen Makros \cs{doxcreateindexname} bzw. \cs{doxcreatemacrolikeindexname} 
-% erstellt. Mit diesen wird beim Aufruf einer Deklarationsumgebung der aktuelle
-% Name und Eintragstyp des jeweiligen Deklarationselementes gesichert, um diese
-% Informationen in der Änderungsliste nutzen zu können. Außerdem werden mit dem 
-% Makro \cs{@doxcreatedescribes} Befehle erzeugt, mit denen eine Liste von zu 
-% beschreibenden Elementen via \cs{DescribeOption\meta{Typ}s} erzeugt werden 
-% kann. Dies dient insbesondere zum Erzeugen der Randnotizen mit \cs{marginnote}
-% aus dem glecihnamigen Paket.
-%    \begin{macrocode}
-\renewcommand*\doxitem[4][]{%
-  \@nameuse{dox at macrolike\dox at macrolikedefault}%
-  \def\dox at idxtype{#3}%
-  \setkeys{dox}{#1}%
-  \ifdox at macrolike%
-    \def\@doxexpr{\@doxcreatespecialmainmacrolikeindex{#2}}%
-  \else%
-    \def\@doxexpr{\@doxcreatespecialmainindex{#2}}%
-  \fi%
-  \expandafter\@doxexpr\expandafter{\dox at idxtype}{#4}%
-  \ifdox at macrolike%
-    \def\@doxexpr{\@doxcreatespecialmacrolikeindex{#2}}%
-  \else%
-    \def\@doxexpr{\@doxcreatespecialindex{#2}}%
-  \fi%
-  \expandafter\@doxexpr\expandafter{\dox at idxtype}{#4}%
-  \ifdox at macrolike%
-    \def\@doxexpr{\@doxcreatemacrolikeprintname{#2}}%
-  \else%
-    \def\@doxexpr{\@doxcreateprintname{#2}}%
-  \fi%
-  \expandafter\@doxexpr\expandafter{\dox at idxtype}%
-  \ifdox at macrolike%
-    \def\@doxexpr{\@doxcreatemacrolikeindexname{#2}}%
-  \else%
-    \def\@doxexpr{\@doxcreateindexname{#2}}%
-  \fi%
-  \expandafter\@doxexpr\expandafter{\dox at idxtype}%
-  \@doxcreatedescribe{#2}%
-  \@doxcreatedescribes{#2}%
-  \@doxcreateenv{#2}{#3}%
-}
-%    \end{macrocode}
-% \end{macro}^^A \doxitem
-% \begin{macro}{\@doxcreatedescribes}
+% \end{macro}^^A \ps at tudscrdoc
+% \end{macro}^^A \@docinclude
+%
+% \subsection{Definition und Erscheinungsbild von Deklarationselementen}
+%
+% Das Paket~\pkg{doc} stellt die Funktionalitäten zur Quelltextdokumentation 
+% innerhalb von \file{.dtx}-Dateien bereit. Mit \pkg{doc}~|v3.0| ist es 
+% zusätzlich möglich, mit \cs{NewDocElement} weitere Deklarationselemente zu 
+% erstellen. Allerdings wird für die Anpassung des Erscheinungsbildes der
+% Indexeinträge keine Schnittstelle bereitgestellt, weshalb im Folgenden einige
+% Patches notwendig sind.
+%
+% \subsubsection{Randnotizen und multiple Erläuterungen}
+%
+% Das Paket~\pkg{doc} stellt mit |\Describe|\meta{Typ} Befehle für die 
+% Erläuterung einzelner Deklarationselemente bereit. Sollen gleich mehrere 
+% Elemente in einem Abschnitt erläutert werden, fehlt jedoch die entsprechende
+% Schnittstelle, weshalb zusätzlich die Befehle |\Describe|\meta{Typ}|s| 
+% darauf aufbauend definiert werden.
+%
+% \begin{length}{\tud at dim@marginnotevskip}
 % \changes{v2.05i}{2017/03/09}{neu}^^A
-% \begin{length}{\marginnotevskip}
-% \changes{v2.05i}{2017/03/09}{neu}^^A
 % \begin{macro}{\marginpar}
-% Hiermit werden Befehle der Form \cs{DescribeOption\meta{Typ}s} erzeugt, mit 
-% welchen mehrere Eintragstypen erzeugt werden können. Gleichzeitig werden die 
-% Randnotizen via \cs{marginnote} mit den passenden vertikalen Abständen 
-% erstellt.
+% Da die Befehle |\Describe|\meta{Typ} zur Erzeugung einer Randnotiz für 
+% jeden Eintrag \cs{marginpar} verwenden, müssen diese mit einem vertikalen 
+% Versatz gesetzt werden, falls gleich mehrere auf einmal zu erzeugen sind. 
+% Hierfür wird das Paket~\pkg{marginnote} genutzt.
 %    \begin{macrocode}
-\newlength\marginnotevskip
-\newcommand*\@doxcreatedescribes[1]{%
-  \expandafter\def\csname Describe#1s\endcsname##1{%
-    \setlength\marginnotevskip{\z@}%
-    \def\@tempc{##1}%
-    \@for\@tempa:=\@tempc\do{%
-      \expandafter\ifblank\expandafter{\@tempa}{}{%
-        \edef\@tempb{%
-          \expandonce{\csname Describe#1\endcsname}{\expandonce{\@tempa}}%
-        }%
-        \@tempb%
-        \addtolength\marginnotevskip{\baselineskip}%
-      }%
-    }%
-    \setlength\marginnotevskip{\z@}%
-    \ignorespaces%
-  }%
-}
-\@doxcreatedescribes{Macro}
+\tud at newdim\tud at dim@marginnotevskip
 \AfterPackage*{marginnote}{%
   \renewcommand*\marginpar[2][]{%
     \IfArgIsEmpty{#1}{%
-      \marginnote{#2}[\marginnotevskip]%
+      \marginnote{#2}[\tud at dim@marginnotevskip]%
     }{%
-      \marginnote[{#1}]{#2}[\marginnotevskip]%
+      \marginnote[{#1}]{#2}[\tud at dim@marginnotevskip]%
     }%
   }%
 }
 %    \end{macrocode}
 % \end{macro}^^A \marginpar
-% \end{length}^^A \marginnotevskip
-% \end{macro}^^A \@doxcreatedescribes
-% \begin{macro}{\index at type}
+% \end{length}^^A \tud at dim@marginnotevskip
+% \begin{macro}{\doc at createdescribes}
+% \changes{v2.05i}{2017/03/09}{neu}^^A
+% Die Definition für |\Describe|\meta{Typ}|s|. Die so erzeugten Befehle passen
+% für jeden neuen Eintrag die Länge \cs{marginnotevskip} selbstständig an. Für
+% jeden angegebenen Eintrag |\Describe|\meta{Typ}|s|\oarg{...}\marg{Element(e)}
+% wird an |\Describe|\meta{Typ}\oarg{...}\marg{Element} das optionale Argument 
+% durchgereicht. Erzeugt werden Befehle via \cs{@NewDocElement}.
+%    \begin{macrocode}
+\newcommand*\doc at createdescribes[1]{%
+  \expandafter\newcommand\expandafter*\csname Describe#1s\endcsname[2][]{%
+    \tud at setdim\tud at dim@marginnotevskip{\z@}%
+    \def\@tempc{##2}%
+    \@for\@tempa:=\@tempc\do{%
+      \trim at spaces@in\@tempa%
+      \ifx\@tempa\@empty\else%
+        \def\@tempb{\@nameuse{Describe#1}[{##1}]}%
+        \expandafter\@tempb\expandafter{\@tempa}%
+        \tud at addtodim\tud at dim@marginnotevskip{1\baselineskip}%
+      \fi%
+    }%
+    \tud at setdim\tud at dim@marginnotevskip{\z@}%
+    \ignorespaces%
+  }%
+}
+%    \end{macrocode}
+% \end{macro}^^A \doc at createdescribes
+% \begin{macro}{\tud at idx@typemarkup}
 % \changes{v2.05g}{2016/11/10}{neu}^^A
+% \changes{v2.06o}{2022/07/20}{Anpassungen für \pkg{doc}}^^A
 % Dieses Makro dient zur Formatierung des Typen der Deklarationselemente in 
-% Index und Änderungsliste.
+% Index, Änderungsliste und Randnotizen.
 %    \begin{macrocode}
-\newrobustcmd*\index at type[1]{%
+\NewDocumentCommand{\tud at idx@typemarkup}{r()}{%
   \begingroup%
   \normalfont\scriptsize\space(#1)%
   \endgroup%
 }
 %    \end{macrocode}
-% \end{macro}^^A \index at type
-% \begin{macro}{\@doxcreatespecialmainmacrolikeindex}
-% \begin{macro}{\@doxcreatespecialmainindex}
-% \begin{macro}{\@doxcreatespecialmacrolikeindex}
-% \begin{macro}{\@doxcreatespecialindex}
+% \end{macro}^^A \tud at idx@typemarkup
+% \begin{macro}{\@NewDocElement}
+% \changes{v2.06o}{2022/07/20}{neu}^^A
+% Erzeugen der Befehle von |\Describe|\meta{Typ}|s|\oarg{...}\marg{Element(e)}.
+% Weiterhin werden für die Verwendung von \cls{ltxdoc} und \pkg{hypdoc}
+% \hrfn{https://github.com/latex3/latex2e/issues/900}{einige Bugs} gefixt.
+%    \begin{macrocode}
+\AtBeginDocument{\let\PrintMacroName\@@PrintMacroName}
+\apptocmd\@NewDocElement{%
+  \doc at createdescribes{#2}%
+  \csletcs{@@PrintDescribe#2}{PrintDescribe#2}%
+  \csletcs{@@Print#2Name}{Print#2Name}%
+  \csletcs{@@SpecialMain#2Index}{SpecialMain#2Index}%
+  \csletcs{@@Special#2Index}{Special#2Index}%
+}{}{\tud at patch@wrn{@NewDocElement}}
+%    \end{macrocode}
+% Hiermit wird die Formatierung des Elementtyps bei Deklarationen angepasst.
+% Zu beachten ist, das zusätzlich zur ursprünglichen Definition \cs{strut} zum 
+% Schluss (nochmals) ausgeführt wird. Somit lassen sich potenzielle Probleme 
+% mit dem Paket \pkg{microtype} vermeiden.
+%    \begin{macrocode}
+\patchcmd\@NewDocElement{%
+  \@temptokena\expandafter{%
+    \expandafter\textnormal\expandafter{%
+      \expandafter\space\expandafter(\doc at printtype)%
+    }%
+  }%
+}{%
+  \@temptokena\expandafter{%
+    \expandafter\textnormal\expandafter{%
+      \expandafter\tud at idx@typemarkup\expandafter(\doc at printtype)\strut%
+    }%
+  }%
+}{}{\tud at patch@wrn{@NewDocElement}}
+%    \end{macrocode}
+% \end{macro}^^A \@NewDocElement
+%
+% \subsubsection{Erweiterte Einträge für Index und Änderungsliste}
+%
+% \begin{macro}{\tud at idx@sortkey}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{macro}{\tud at idx@format}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{macro}{\tud at idx@element}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{macro}{\tud at idx@parent}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \changes{v2.06o}{2022/07/20}{Anpassungen für \pkg{doc}}^^A
+% Mit diesen Befehlen kann beim Erzeugen von Einträgen für die Änderungsliste 
+% auf die zuvor bereits erzeugten Indexeinträge zurückggegriffen werden. Ein 
+% zuvor erzeugter Elterneintrag wird mit Sortierschlüssel und der eigentlichen
+% Formatierung in zwei Token in \cs{tud at idx@parent} expandiert, um später
+% darauf zurückgreifen zu können~-- dies ist insbesondere für Parameter nötig.
+%    \begin{macrocode}
+\newcommand*\tud at idx@sortkey{}
+\let\tud at idx@sortkey\relax
+\newcommand*\tud at idx@format{}
+\let\tud at idx@format\relax
+\newcommand*\tud at idx@element{}
+\let\tud at idx@element\relax
+\newcommand*\tud at idx@parent{}
+\let\tud at idx@parent\relax
+%    \end{macrocode}
+% \end{macro}^^A \tud at idx@parent
+% \end{macro}^^A \tud at idx@element
+% \end{macro}^^A \tud at idx@format
+% \end{macro}^^A \tud at idx@sortkey
+% \begin{macro}{\doc at createspecialindexes}
+% \changes{v2.06o}{2022/07/20}{neu}^^A
+% \begin{macro}{\doc at createspecialmacrolikeindexes}
+% \changes{v2.06o}{2022/07/20}{neu}^^A
 % Für den Index muss bei diesen Makros eine Anpassung erfolgen, damit die
 % Sortierung auch bei der Verwendung von \app{texindy} richtig erfolgt und 
 % keine Einträge, welche es trotz gleicher Bezeichnung für unterschiedliche
-% Deklarationselemente (beispielsweise Umgebung \env{abstract} und Option
-% \opt{abstract}) gibt, unterschlagen werden. Außerdem wird hier die Definition
-% der Quelltextanker eingehangen und die Elterneinträge für Parameteränderungen 
-% zurückgesetzt.
+% Deklarationselemente (beispielsweise gleichnamige Umgebungen und Optionen) 
+% gibt, unterschlagen werden. Deshalb wird den erzeugten Sortierschlüsseln die 
+% Ausgabe des Deklarationstyps aus |#2| respektive |\@temptokena| hinzugefügt. 
+% Außerdem wird der Markupbefehl \cs{tud at idx@typemarkup} für diese eingehangen.
+%
+% Weiterhin werden das Deklarationselement in \cs{tud at idx@element} sowie der 
+% Sortierschlüssel in \cs{tud at idx@sortkey} und der formatierte Indexeintrag in
+% \cs{tud at idx@format} gesichert, um diese sowohl in der Änderungsliste als auch
+% für eigens definierte Elterneinträge (\cs{tud at idx@parent}) nutzen zu können.
 %    \begin{macrocode}
-\CheckCommand*\@doxcreatespecialmainmacrolikeindex[3]{%
-  \expandafter\def\csname SpecialMain#1Index\endcsname##1{%
-    \@SpecialIndexHelper@##1\@nil
-    \@bsphack%
-    \special at index{\@gtempa\actualchar
-      \string\verb\quotechar*\verbatimchar\bslash\@gtempa\verbatimchar
-      \space(#2)\encapchar main}%
-    \special at index{#3:\levelchar\@gtempa\actualchar%
-      \string\verb\quotechar*\verbatimchar\bslash\@gtempa\verbatimchar
-      \encapchar main}%
-    \@esphack%
+\CheckCommand*\doc at createspecialindexes[3]{%
+  \@temptokena{\space (#2)}%
+  \@temptokenb{#3:}%
+  \@nameedef{SpecialMain#1Index}##1{%
+    \noexpand\@bsphack
+    \ifdoc at toplevel
+      \noexpand\special at index{%
+        ##1\noexpand\actualchar{\string\ttfamily\space##1}%
+        \ifx\@nil#2\@nil\else\the\@temptokena\fi
+        \noexpand\encapchar main%
+      }%
+    \fi
+    \ifx\@nil#3\@nil\else
+      \noexpand\special at index{%
+        \the\@temptokenb\noexpand\levelchar
+        ##1\noexpand\actualchar{\string\ttfamily\space##1}%
+        \noexpand\encapchar main%
+      }%
+    \fi
+    \noexpand\@esphack%
   }%
+  \@nameedef{Special#1Index}##1{%
+    \noexpand\@bsphack
+    \ifdoc at toplevel
+      \noexpand\doc at providetarget
+      \noexpand\index{%
+        ##1\noexpand\actualchar{\string\ttfamily\space##1}%
+        \ifx\@nil#2\@nil\else\the\@temptokena\fi
+        \noexpand\doc at handleencap{usage}%
+      }%
+    \fi
+    \ifx\@nil#3\@nil\else
+      \noexpand\index{%
+        \the\@temptokenb\noexpand\levelchar
+        ##1\noexpand\actualchar{\string\ttfamily\space##1}%
+        \noexpand\doc at handleencap{usage}%
+      }%
+    \fi
+    \noexpand\@esphack%
+  }%
 }
+\renewcommand*\doc at createspecialindexes[3]{%
+  \@temptokena{\space (#2)}%
+  \@temptokenb{#3:}%
+  \@nameedef{SpecialMain#1Index}##1{%
+    \noexpand\@bsphack
+    \ifdoc at toplevel
+      \noexpand\special at index{%
+        % PATCH: add `\the\@temptokena' to sorting argument
+        ##1\ifx\@nil#2\@nil\else\the\@temptokena\fi
+        \noexpand\actualchar{\string\ttfamily\space##1}%
+        % PATCH: add `\tud at idx@typemarkup' for markup
+        \ifx\@nil#2\@nil\else\noexpand\tud at idx@typemarkup\the\@temptokena\fi
+        \noexpand\encapchar main%
+      }%
+    \fi
+    \ifx\@nil#3\@nil\else
+      \noexpand\special at index{%
+        \the\@temptokenb\noexpand\levelchar
+        % PATCH: add `\the\@temptokena' to sorting argument
+        ##1\ifx\@nil#2\@nil\else\the\@temptokena\fi
+        \noexpand\actualchar{\string\ttfamily\space##1}%
+        \noexpand\encapchar main%
+      }%
+    \fi
+    \noexpand\@esphack%
 %    \end{macrocode}
-% Um den Typ der Deklarationselemente in den Index einzutragen, wird der Typ
-% geschützt expandiert, um beispielsweise Umlaute problemlos nutzen zu können.
+% Bei allen Varianten der Indexeinträge werden diese nach dem Erstellen
+% gesichert, um diese in der richtigen Formatierung als Elterneinträge
+% für Parameter im Index sowie für die Änderungsliste nutzen zu können.
 %    \begin{macrocode}
-\renewcommand*\@doxcreatespecialmainmacrolikeindex[3]{%
-  \expandafter\def\csname SpecialMain#1Index\endcsname##1{%
-    \@SpecialIndexHelper@##1\@nil%
-    \@bsphack%
-    \protected at edef\tud at reserved{#2}%
-    \special at index{%
-      \@gtempa\space\expandonce\tud at reserved\actualchar%
-      \string\verb\quotechar*\verbatimchar\bslash\@gtempa\verbatimchar%
-      \index at type{\expandonce\tud at reserved}\encapchar main%
+    % PATCH: assign used sort key and formatted entry to dedicated macros
+    \gdef\noexpand\tud at idx@sortkey{##1\ifx\@nil#2\@nil\else\the\@temptokena\fi}%
+    \gdef\noexpand\tud at idx@format{%
+      {\string\ttfamily\space##1}%
+      \ifx\@nil#2\@nil\else\noexpand\tud at idx@typemarkup\the\@temptokena\fi
     }%
-    \protected at edef\tud at reserved{#3}%
-    \special at index{%
-      \expandonce\tud at reserved:\levelchar\@gtempa\actualchar%
-      \string\verb\quotechar*\verbatimchar\bslash\@gtempa\verbatimchar%
-      \encapchar main%
+    % PATCH: reset settings for nested index and changelog entries
+    \gdef\noexpand\tud at idx@element{#1}%
+    \global\let\noexpand\tud at idx@parent\relax%
+  }%
+  \@nameedef{Special#1Index}##1{%
+    \noexpand\@bsphack
+    \ifdoc at toplevel
+      \noexpand\doc at providetarget
+      \noexpand\index{%
+        % PATCH: add `\the\@temptokena' to sorting argument
+        ##1\ifx\@nil#2\@nil\else\the\@temptokena\fi
+        \noexpand\actualchar{\string\ttfamily\space##1}%
+        % PATCH: add `\tud at idx@typemarkup' for markup
+        \ifx\@nil#2\@nil\else\noexpand\tud at idx@typemarkup\the\@temptokena\fi
+        \noexpand\doc at handleencap{usage}%
+      }%
+    \fi
+    \ifx\@nil#3\@nil\else
+      \noexpand\index{%
+        \the\@temptokenb\noexpand\levelchar
+        % PATCH: add `\the\@temptokena' to sorting argument
+        ##1\ifx\@nil#2\@nil\else\the\@temptokena\fi
+        \noexpand\actualchar{\string\ttfamily\space##1}%
+        \noexpand\doc at handleencap{usage}%
+      }%
+    \fi
+    \noexpand\@esphack%
+    % PATCH: assign used sort key and formatted entry to dedicated macros
+    \gdef\noexpand\tud at idx@sortkey{##1\ifx\@nil#2\@nil\else\the\@temptokena\fi}%
+    \gdef\noexpand\tud at idx@format{%
+      {\string\ttfamily\space##1}%
+      \ifx\@nil#2\@nil\else\noexpand\tud at idx@typemarkup\the\@temptokena\fi
     }%
-    \@esphack%
-    \let\parameter at parent@changes\relax%
-    \hypersourcedef{\filesep\number\c at CodelineNo}%
+    % PATCH: reset settings for nested index and changelog entries
+    \gdef\noexpand\tud at idx@element{#1}%
+    \global\let\noexpand\tud at idx@parent\relax%
   }%
 }
-\CheckCommand*\@doxcreatespecialmainindex[3]{%
-  \expandafter\def\csname SpecialMain#1Index\endcsname##1{%
-    \@bsphack%
-    \special at index{##1\actualchar{\string\ttfamily\space##1} (#2)%
-      \encapchar main}%
-    \special at index{#3:\levelchar##1\actualchar{\string\ttfamily\space##1}%
-      \encapchar main}%
-    \@esphack%
+\CheckCommand*\doc at createspecialmacrolikeindexes[3]{%
+  \@temptokena{\space (#2)}%
+  \@temptokenb{#3:}%
+  \@nameedef{Code#1Index}##1##2{%
+    \noexpand\@SpecialIndexHelper@##2\noexpand\@nil
+    \noexpand\@bsphack
+    \noexpand\ifdoc at noindex\noexpand\else
+      \ifdoc at toplevel
+        \noexpand\special at index{%
+          \noexpand\@gtempa\noexpand\actualchar
+          \string\verb% % to fool emacs highlighting
+          \noexpand\quotechar*\noexpand\verbatimchar
+          \noexpand\bslash\noexpand\@gtempa\noexpand\verbatimchar
+          \ifx\@nil#2\@nil\else \the\@temptokena \fi
+          \noexpand\encapchar ##1%
+        }%
+      \fi
+      \ifx\@nil#3\@nil\else
+        \noexpand\special at index{%
+          \the\@temptokenb\noexpand\levelchar
+          \noexpand\@gtempa\noexpand\actualchar
+          \string\verb% % to fool emacs highlighting
+          \noexpand\quotechar*\noexpand\verbatimchar
+          \noexpand\bslash\noexpand\@gtempa\noexpand\verbatimchar
+          \noexpand\encapchar ##1%
+        }%
+      \fi
+    \noexpand\fi
+    \noexpand\@esphack%
   }%
-}
-\renewcommand*\@doxcreatespecialmainindex[3]{%
-  \expandafter\def\csname SpecialMain#1Index\endcsname##1{%
-    \@bsphack%
-    \protected at edef\tud at reserved{#2}%
-    \special at index{%
-      ##1\space\expandonce\tud at reserved\actualchar%
-      {\string\ttfamily\space##1}\index at type{\expandonce\tud at reserved}%
-      \encapchar main%
-    }%
-    \protected at edef\tud at reserved{#3}%
-    \special at index{%
-      \expandonce\tud at reserved:\levelchar##1\actualchar%
-      {\string\ttfamily\space##1}\encapchar main%
-    }%
-    \@esphack%
-    \let\parameter at parent@changes\relax%
-    \hypersourcedef{\filesep\number\c at CodelineNo}%
+  \@nameedef{SpecialMain#1Index}##1{%
+    \expandafter\noexpand\csname Code#1Index\endcsname{main}{##1}%
   }%
-}
-\CheckCommand*\@doxcreatespecialmacrolikeindex[3]{%
-  \expandafter\def\csname Special#1Index\endcsname##1{%
-    \@SpecialIndexHelper@##1\@nil
-    \@bsphack%
-    \index{\@gtempa\actualchar
-      \string\verb\quotechar*\verbatimchar\bslash\@gtempa\verbatimchar
-      \space(#2)\encapchar usage}%
-    \index{#3:\levelchar\@gtempa\actualchar
-      \string\verb\quotechar*\verbatimchar\bslash\@gtempa\verbatimchar
-      \encapchar usage}%
-    \@esphack%
+  \@nameedef{Special#1Index}##1{%
+    \noexpand\@SpecialIndexHelper@##1\noexpand\@nil
+    \noexpand\@bsphack
+    \noexpand\ifdoc at noindex\noexpand\else
+      \ifdoc at toplevel
+        \noexpand\doc at providetarget
+        \noexpand\index{%
+          \noexpand\@gtempa\noexpand\actualchar
+          \string\verb% % to fool emacs highlighting
+          \noexpand\quotechar*\noexpand\verbatimchar
+          \noexpand\bslash\noexpand\@gtempa\noexpand\verbatimchar
+          \ifx\@nil#2\@nil\else \the\@temptokena \fi
+          \noexpand\doc at handleencap{usage}%
+        }%
+      \fi
+      \ifx\@nil#3\@nil\else
+        \noexpand\index{%
+          \the\@temptokenb\noexpand\levelchar
+          \noexpand\@gtempa\noexpand\actualchar
+          \string\verb% % to fool emacs highlighting
+          \noexpand\quotechar*\noexpand\verbatimchar
+          \noexpand\bslash\noexpand\@gtempa\noexpand\verbatimchar
+          \noexpand\doc at handleencap{usage}%
+        }%
+      \fi
+    \noexpand\fi
+    \noexpand\@esphack%
   }%
 }
-\renewcommand*\@doxcreatespecialmacrolikeindex[3]{%
-  \expandafter\def\csname Special#1Index\endcsname##1{%
-    \@SpecialIndexHelper@##1\@nil%
-    \@bsphack%
-    \protected at edef\tud at reserved{#2}%
-    \index{%
-      \@gtempa\space\expandonce\tud at reserved\actualchar%
-      \string\verb\quotechar*\verbatimchar\bslash\@gtempa\verbatimchar%
-      \index at type{\expandonce\tud at reserved}\encapchar usage%
-    }%
-    \protected at edef\tud at reserved{#3}%
-    \index{%
-      \expandonce\tud at reserved:\levelchar\@gtempa\actualchar%
-      \string\verb\quotechar*\verbatimchar\bslash\@gtempa\verbatimchar%
-      \encapchar usage%
-    }%
-    \@esphack%
+\renewcommand*\doc at createspecialmacrolikeindexes[3]{%
+  \@temptokena{\space (#2)}%
+  \@temptokenb{#3:}%
+  \@nameedef{Code#1Index}##1##2{%
+    \noexpand\@SpecialIndexHelper@##2\noexpand\@nil
+    \noexpand\@bsphack
+    \noexpand\ifdoc at noindex\noexpand\else
+      \ifdoc at toplevel
+        \noexpand\special at index{%
+          % PATCH: add `\the\@temptokena' to sorting argument
+          \noexpand\@gtempa\ifx\@nil#2\@nil\else\the\@temptokena\fi
+          \noexpand\actualchar
+          \string\verb% % to fool emacs highlighting
+          \noexpand\quotechar*\noexpand\verbatimchar
+          \noexpand\bslash\noexpand\@gtempa\noexpand\verbatimchar
+          % PATCH: add `\tud at idx@typemarkup' for markup
+          \ifx\@nil#2\@nil\else\noexpand\tud at idx@typemarkup\the\@temptokena\fi
+          \noexpand\encapchar ##1%
+        }%
+      \fi
+      \ifx\@nil#3\@nil\else
+        \noexpand\special at index{%
+          \the\@temptokenb\noexpand\levelchar
+          % PATCH: add `\the\@temptokena' to sorting argument
+          \noexpand\@gtempa\ifx\@nil#2\@nil\else\the\@temptokena\fi
+          \noexpand\actualchar
+          \string\verb% % to fool emacs highlighting
+          \noexpand\quotechar*\noexpand\verbatimchar
+          \noexpand\bslash\noexpand\@gtempa\noexpand\verbatimchar
+          \noexpand\encapchar ##1%
+        }%
+      \fi
+    \noexpand\fi
+    \noexpand\@esphack%
   }%
-}
-\CheckCommand*\@doxcreatespecialindex[3]{%
-  \expandafter\def\csname Special#1Index\endcsname##1{%
-    \@bsphack%
-    \index{##1\actualchar{\protect\ttfamily##1} (#2)\encapchar usage}%
-    \index{#3:\levelchar##1\actualchar{\protect\ttfamily##1}%
-      \encapchar usage}%
-    \@esphack%
-  }%
-}
-\renewcommand*\@doxcreatespecialindex[3]{%
-  \expandafter\def\csname Special#1Index\endcsname##1{%
-    \@bsphack%
-    \protected at edef\tud at reserved{#2}%
-    \index{%
-      ##1\space\expandonce\tud at reserved\actualchar%
-      {\protect\ttfamily##1}\index at type{\expandonce\tud at reserved}%
-      \encapchar usage%
+%    \end{macrocode}
+% Für das Sichern der Indexeinträge muss ein bisschen mit der Expansion der 
+% Makros gezaubert werden. Der in \cs{@gtempa} relevante Teil für den Index
+% ist erst nach der Expansion (via \cs{doc at expr}) verfügbar, muss aber in einer
+% zweiten Expansion aus eben diesem Makro expandiert werden. Wiederum muss der 
+% Teil aus |\ifx\@nil#2\@nil\else\the\@temptokena\fi| hier direkt expandiert 
+% werden und wird danach vor weiterer Expansion geschützt!
+%    \begin{macrocode}
+  \@nameedef{SpecialMain#1Index}##1{%
+    \expandafter\noexpand\csname Code#1Index\endcsname{main}{##1}%
+    % PATCH: assign used sort key and formatted entry to dedicated macros
+    \xdef\noexpand\tud at idx@sortkey{% 
+      \noexpand\expandonce\noexpand\@gtempa%
+      \ifx\@nil#2\@nil\else\noexpand\unexpanded{\the\@temptokena}\fi%
     }%
-    \protected at edef\tud at reserved{#3}%
-    \index{%
-      \expandonce\tud at reserved:\levelchar##1\actualchar%
-      {\protect\ttfamily##1}\encapchar usage%
+    \xdef\noexpand\tud at idx@format{%
+      \unexpanded{\noexpand\string\noexpand\verb}%
+      \unexpanded{\noexpand\quotechar*\noexpand\verbatimchar}%
+      \unexpanded{\noexpand\bslash}\noexpand\expandonce\noexpand\@gtempa%
+      \unexpanded{\noexpand\verbatimchar}%
+      \ifx\@nil#2\@nil\else
+        \noexpand\unexpanded{\noexpand\tud at idx@typemarkup\the\@temptokena}%
+      \fi
     }%
-    \@esphack%
+    % PATCH: reset settings for nested index and changelog entries
+    \gdef\noexpand\tud at idx@element{#1}%
+    \global\let\noexpand\tud at idx@parent\relax
   }%
-}
+  \@nameedef{Special#1Index}##1{%
+    \noexpand\@SpecialIndexHelper@##1\noexpand\@nil
+    \noexpand\@bsphack
+    \noexpand\ifdoc at noindex\noexpand\else
+      \ifdoc at toplevel
+        \noexpand\doc at providetarget
+        \noexpand\index{%
+          % PATCH: add `\the\@temptokena' to sorting argument
+          \noexpand\@gtempa\ifx\@nil#2\@nil\else\the\@temptokena\fi
+          \noexpand\actualchar
+          \string\verb% % to fool emacs highlighting
+          \noexpand\quotechar*\noexpand\verbatimchar
+          \noexpand\bslash\noexpand\@gtempa\noexpand\verbatimchar
+          % PATCH: add `\tud at idx@typemarkup' for markup
+          \ifx\@nil#2\@nil\else\noexpand\tud at idx@typemarkup\the\@temptokena\fi
+          \noexpand\doc at handleencap{usage}%
+        }%
+      \fi
+      \ifx\@nil#3\@nil\else
+        \noexpand\index{%
+          \the\@temptokenb\noexpand\levelchar
+          % PATCH: add `\the\@temptokena' to sorting argument
+          \noexpand\@gtempa\ifx\@nil#2\@nil\else\the\@temptokena\fi
+          \noexpand\actualchar
+          \string\verb% % to fool emacs highlighting
+          \noexpand\quotechar*\noexpand\verbatimchar
+          \noexpand\bslash\noexpand\@gtempa\noexpand\verbatimchar
+          \noexpand\doc at handleencap{usage}%
+        }%
+      \fi
+    \noexpand\fi
+    \noexpand\@esphack%
 %    \end{macrocode}
-% \end{macro}^^A \@doxcreatespecialindex
-% \end{macro}^^A \@doxcreatespecialmacrolikeindex
-% \end{macro}^^A \@doxcreatespecialmainindex
-% \end{macro}^^A \@doxcreatespecialmainmacrolikeindex
-% \begin{macro}{\@doxcreatemacrolikeprintname}
-% \begin{macro}{\@doxcreateprintname}
-% \begin{macro}{\@doxcreatemacrolikeindexname}
-% \begin{macro}{\@doxcreateindexname}
-% \begin{macro}{\saved at indextype}
-% Hiermit werden die Makros zur Ausgabe als Randnotiz definiert. Mit diesen
-% wird dem eigentlichen Eintrag der Eintragstyp angehängt. Zu beachten ist, das 
-% entgegen der ursprünglichen Definition \cs{strut} erst zum Schluss ausgeführt 
-% wird. Somit lassen sich potenzielle Probleme mit dem Paket \pkg{microtype} 
-% vermeiden.
+% Zur Sicherung der Indexeinträge das selbe Spiel für die Expansion wie zuvor.
 %    \begin{macrocode}
-\def\@doxcreatemacrolikeprintname#1#2{%
-  \ifcsundef{Print#1Name}{%
-    \expandafter\def\csname Print#1Name\endcsname##1{%
-      \MacroFont\string##1\index at type{#2}\strut\ %
+    % PATCH: assign used sort key and formatted entry to dedicated macros
+    \xdef\noexpand\tud at idx@sortkey{% 
+      \noexpand\expandonce\noexpand\@gtempa%
+      \ifx\@nil#2\@nil\else\noexpand\unexpanded{\the\@temptokena}\fi%
     }%
-  }{}%
-  \ifcsundef{PrintDescribe#1}{%
-    \expandafter\def\csname PrintDescribe#1\endcsname##1{%
-      \MacroFont\string##1\index at type{#2}\strut\ %
+    \xdef\noexpand\tud at idx@format{%
+      \unexpanded{\noexpand\string\noexpand\verb}%
+      \unexpanded{\noexpand\quotechar*\noexpand\verbatimchar}%
+      \unexpanded{\noexpand\bslash}\noexpand\expandonce\noexpand\@gtempa%
+      \unexpanded{\noexpand\verbatimchar}%
+      \ifx\@nil#2\@nil\else
+        \noexpand\unexpanded{\noexpand\tud at idx@typemarkup\the\@temptokena}%
+      \fi
     }%
-  }{}%
-}
-\def\@doxcreateprintname#1#2{%
-  \ifcsundef{Print#1Name}{%
-    \expandafter\def\csname Print#1Name\endcsname##1{%
-      \MacroFont##1\index at type{#2}\strut\ %
-    }%
-  }{}%
-  \ifcsundef{PrintDescribe#1}{%
-    \expandafter\def\csname PrintDescribe#1\endcsname##1{%
-      \MacroFont##1\index at type{#2}\strut\ %
-    }%
-  }{}%
-}
-%    \end{macrocode}
-% Ziel ist es, in den 
-% Makros \cs{saved at indexname} und \cs{saved at indextype} den Namen und den Typ 
-% des aktuellen Deklarationselementes zu speichern.
-%    \begin{macrocode}
-\newcommand*\saved at indextype{}
-\def\@doxcreatemacrolikeindexname#1#2{%
-  \expandafter\def\csname @Save#1IndexName\endcsname##1{%
-    \edef\saved at indexname{\expandafter\@gobble##1}%
-    \protected at edef\saved at indextype{#2}%
+    % PATCH: reset settings for nested index and changelog entries
+    \gdef\noexpand\tud at idx@element{#1}%
+    \global\let\noexpand\tud at idx@parent\relax
   }%
 }
-\def\@doxcreateindexname#1#2{%
-  \expandafter\def\csname @Save#1IndexName\endcsname##1{%
-    \let\saved at indexname##1%
-    \protected at edef\saved at indextype{#2}%
-  }%
-}
 %    \end{macrocode}
-% \end{macro}^^A \saved at indextype
-% \end{macro}^^A \@doxcreateindexname
-% \end{macro}^^A \@doxcreatemacrolikeindexname
-% \end{macro}^^A \@doxcreateprintname
-% \end{macro}^^A \@doxcreatemacrolikeprintname
-% \begin{macro}{\@SaveMacroIndexName}
-% \begin{macro}{\@SaveEnvIndexName}
-% \begin{macro}{\SpecialMainMacroIndex}
-% Da für Makros die notwendigen Befehle für die Anpassungen der Änderungsliste
-% nicht über \cs{doxitem} kreiert werden, erfolgt dies hier direkt.
-%    \begin{macrocode}
-\CheckCommand*\@SaveMacroIndexName[1]{%
-  \edef\saved at indexname{\expandafter\@gobble#1}%
-}
-\CheckCommand*\@SaveEnvIndexName[1]{\let\saved at indexname#1}
-\apptocmd{\@SaveMacroIndexName}{%
-  \let\saved at indextype\@empty%
-}{}{\tud at patch@wrn{@SaveMacroIndexName}}
-\CheckCommand*\SpecialMainMacroIndex[1]{%
-  \SpecialMainIndex{#1}\nobreak%
-  \DoNotIndex{#1}%
-}
-\apptocmd{\SpecialMainMacroIndex}{%
-  \let\parameter at parent@changes\relax%
-  \hypersourcedef{\filesep\number\c at CodelineNo}%
-}{}{\tud at patch@wrn{SpecialMainMacroIndex}}
-%    \end{macrocode}
-% \end{macro}^^A \SpecialMainMacroIndex
-% \end{macro}^^A \@SaveEnvIndexName
-% \end{macro}^^A \@SaveMacroIndexName
+% \end{macro}^^A \doc at createspecialmacrolikeindexes
+% \end{macro}^^A \doc at createspecialindexes
 %
 % \subsubsection{Erstellen aller Deklarationselemente}
 %
 % Nachdem nun die Anpassungen für die Änderungsliste erfolgt sind, können nun 
-% die für die Dokumentatiton notwendigen Umgebungen mit \cs{docitem} erstellt
-% werden. Dabei kommen die Lokalisierungsvariablen \cs{tud@\dots{}@name} zum 
-% Tragen.
+% die für die Dokumentation notwendigen Umgebungen mit \cs{NewDocElement} 
+% erstellt werden, wobei die Lokalisierungsvariablen |\tud@|\meta{\dots}|@name| 
+% zum Tragen kommen.
 %    \begin{macrocode}
-\renewcommand*\tud at reserved[3][]{%
-  \doxitem[#1,idxtype=\csname tud@#3 at name\endcsname]{#2}{#3}{%
-    \csname tud@#3s at name\endcsname%
-  }%
+\def\tud at res@a#1{%
+  \kernel at ifnextchar[%]
+  {\tud at res@b{#1}}{\tud at res@b{#1}[]}%
 }
-\undef\PrintEnvName
-\undef\PrintDescribeEnv
-\tud at reserved{Env}{environment}
-\tud at reserved{Option}{option}
-\tud at reserved{LayerPageStyle}{layerpagestyle}
-\tud at reserved{Layer}{layer}
-\tud at reserved[macrolike]{Length}{length}
-\tud at reserved{Counter}{counter}
-\tud at reserved{Color}{TUDcolor}
-\tud at reserved[macrolike]{Localization}{localization}
-\tud at reserved[macrolike]{Field}{field}
-\tud at reserved{Font}{KOMAfont}
-\tud at reserved{Parameter}{parameter}
+\def\tud at res@b#1[#2]#3#4{%
+  #1[{%
+    idxgroup=\csname tud@#4s at name\endcsname,%
+    idxtype=\csname tud@#4 at name\endcsname,%
+    printtype=\csname tud@#4 at name\endcsname,%
+    #2%
+  }]{#3}{#4}%
+}
+\tud at res@a\RenewDocElement[macrolike,idxgroup,idxtype,printtype]{Macro}{macro}
+\tud at res@a\RenewDocElement{Env}{environment}
+\tud at res@a\NewDocElement{Option}{option}
+\tud at res@a\NewDocElement{LayerPageStyle}{layerpagestyle}
+\tud at res@a\NewDocElement{Layer}{layer}
+\tud at res@a\NewDocElement[macrolike]{Length}{length}
+\tud at res@a\NewDocElement{Counter}{counter}
+\tud at res@a\NewDocElement{Color}{TUDcolor}
+\tud at res@a\NewDocElement[macrolike]{Localization}{localization}
+\tud at res@a\NewDocElement[macrolike]{Field}{field}
+\tud at res@a\NewDocElement{Font}{KOMAfont}
+\tud at res@a\NewDocElement{Parameter}{parameter}
 %    \end{macrocode}
 %
 % \subsubsection{Besonderheiten des Deklarationselementes \emph{Parameter}}
 %
-% \begin{macro}{\parameter at parent@changes}
-% \changes{v2.05g}{2016/11/02}{neu}^^A
-% \begin{macro}{\parameter at parent@indexname}
-% \changes{v2.05g}{2016/11/02}{neu}^^A
-% \begin{macro}{\parameter at parent@indexformat}
-% \changes{v2.05g}{2016/11/02}{neu}^^A
-% Um für Parameter sowohl im Index als auch in der Änderungsliste eine weitere 
-% Ebene zu definieren, werden diese Befehle eigens definiert. 
+% \begin{macro}{\DescribeMacroParameters}
+% \changes{v2.06o}{2022/07/20}{neu}^^A
+% \begin{macro}{\DescribeEnvParameters}
+% \changes{v2.06o}{2022/07/20}{neu}^^A
+% \begin{macro}{\Describe at Parameters}
+% \changes{v2.06o}{2022/07/20}{neu}^^A
+% Hiermit können Parameter für Befehle und Umgebungen beschrieben werden. Mit 
+% |\Describe|\meta{Typ}|Parameters|\oarg{...}\marg{Element(e)}\marg{Parameter}
+% erfolgt der Aufruf, wobei das optionale Argument an \cs{DescribeParameter} 
+% durchgereicht wird.
 %    \begin{macrocode}
-\newcommand*\parameter at parent@changes{}
-\let\parameter at parent@changes\relax
-\newcommand*\parameter at parent@indexname{}
-\let\parameter at parent@indexname\relax
-\newcommand*\parameter at parent@indexformat{}
-\let\parameter at parent@indexformat\relax
+\newcommand*\DescribeMacroParameters{}
+\def\DescribeMacroParameters{%
+  \kernel at ifnextchar[%]
+  {\Describe at Parameters{Macro}}{\Describe at Parameters{Macro}[]}%
+}
+\newcommand*\DescribeEnvParameters{}
+\def\DescribeEnvParameters{%
+  \kernel at ifnextchar[%]
+  {\Describe at Parameters{Env}}{\Describe at Parameters{Env}[]}%
+}
 %    \end{macrocode}
-% \end{macro}^^A \parameter at parent@indexformat
-% \end{macro}^^A \parameter at parent@indexname
-% \end{macro}^^A \parameter at parent@changes
-% \begin{macro}{\@SaveMacroIndexName}
-% \changes{v2.05g}{2016/11/02}{neu}^^A
-% \begin{macro}{\@SaveEnvIndexName}
-% \changes{v2.05g}{2016/11/02}{neu}^^A
-% Bei der Ausführung einer dieser beiden Befehle bei der Definition von einem 
-% Makro oder einer Umgebung werden diese für evtl. nachfolgende Parameter als 
-% Elterneinträge definiert. Hierfür werden die Einträge zur Sortierung sowohl 
-% für den Index als auch die Änderungsliste in \cs{parameter at parent@indexname} 
-% und für die Formatierung in \cs{parameter at parent@indexformat} gespeichert.
+% Für eine möglichst einfache Schnittstelle wird ein bisschen getrickst. Das 
+% optionale Argument wird zunächst dahingehend ausgewertet, ob Indexeinträge
+% überhaupt erzeugt werden sollen. In diesem Fall wird die Ausgabe unterdrückt, 
+% um diese bei der Angabe mehrerer \marg{Element(e)} nicht mehrfach zu erhalten.
 %    \begin{macrocode}
-\apptocmd{\@SaveMacroIndexName}{%
-  \edef\parameter at parent@indexname{\expandafter\@gobble#1}%
-  \edef\parameter at parent@indexformat{%
-    \string\verb\quotechar*\verbatimchar#1\verbatimchar%
+\newcommand*\Describe at Parameters{}
+\def\Describe at Parameters#1[#2]#3#4{%
+  \begingroup%
+    \csname keys_set:nn\endcsname{doc}{#2}%
+    \ifdoc at noindex%
+      \aftergroup\@gobble%
+    \else%
+      \aftergroup\@firstofone%
+    \fi%
+  \endgroup{%
+    \def\@tempc{#3}%
+    \@for\@tempa:=\@tempc\do{%
+      \trim at spaces@in\@tempa%
+      \ifx\@tempa\@empty\else%
+        \begingroup%
+%    \end{macrocode}
+% Durch den Aufruf von |\Describe|\meta{Typ} wird der Elterneintrag erzeugt. 
+% Dieser muss durch \pkg{doc} zwar erstellt, jedoch nicht in den Index 
+% eingetragen werden, weshalb \prm{noindex} nicht möglich ist und stattdessen
+% \cs{index} hier das Argument verschluckt.
+%    \begin{macrocode}
+          \let\index\@gobble%
+          \def\@tempb{\@nameuse{Describe#1}[noprint]}%
+          \expandafter\@tempb\expandafter{\@tempa}%
+          \xdef\tud at idx@parent{%
+            {\expandonce\tud at idx@sortkey}{\expandonce\tud at idx@format}%
+          }%
+        \endgroup%
+        \DescribeParameters[{#2,noprint}]{#4}%
+      \fi%
+    }%
   }%
-}{}{\tud at patch@wrn{@SaveMacroIndexName}}
-\apptocmd{\@SaveEnvIndexName}{%
-  \protected at edef\parameter at parent@indexname{#1\space\saved at indextype}%
-  \protected at edef\parameter at parent@indexformat{%
-    \string\verb\quotechar*\verbatimchar#1\verbatimchar%
-    \index at type{\saved at indextype}%
+%    \end{macrocode}
+% Nach dem Erstellen der Indexeinträge erfolgt die \emph{einmalige} Ausgabe 
+% aller genannten Parameter.
+%    \begin{macrocode}
+  \begingroup%
+    \csname keys_set:nn\endcsname{doc}{#2}%
+    \ifdoc at noprint%
+      \aftergroup\@gobble%
+    \else%
+      \aftergroup\@firstofone%
+    \fi%
+  \endgroup{%
+    \DescribeParameters[{#2,noindex}]{#4}%
   }%
-}{}{\tud at patch@wrn{@SaveEnvIndexName}}
+  \global\let\tud at idx@parent\relax%
+}
 %    \end{macrocode}
-% \end{macro}^^A \@SaveEnvIndexName
-% \end{macro}^^A \@SaveMacroIndexName
+% \end{macro}^^A \Describe at Parameters
+% \end{macro}^^A \DescribeEnvParameters
+% \end{macro}^^A \DescribeMacroParameters
 % \begin{macro}{\SpecialMainParameterIndex}
 % \changes{v2.05g}{2016/11/02}{neu}^^A
-% Hier wird nun die Gestalt der Einträge für Parameter als Haupteintrag 
-% festgelegt.
+% \changes{v2.06o}{2022/07/20}{Anpassungen für \pkg{doc}}^^A
+% \begin{macro}{\SpecialParameterIndex}
+% \changes{v2.05i}{2017/02/20}{neu}^^A
+% \changes{v2.06o}{2022/07/20}{Anpassungen für \pkg{doc}}^^A
+% Die Gestalt der Parameter als Haupteinträge wird hier definiert.
 %    \begin{macrocode}
 \renewcommand*\SpecialMainParameterIndex[1]{%
-  \ifx\parameter at parent@indexname\relax%
-    \ClassError{\TUD at Class@Name}{No previous macro or environment}{%
-      Since parameters can only be used for macros or\MessageBreak%
-      environments, you have to use `parameter' within\MessageBreak%
-      `macro' or `environment'.%
+  \ifx\tud at idx@parent\relax%
+    \@expandtwoargs\in@{\tud at idx@element}{Macro,Env}%
+    \ifin@%
+      \xdef\tud at idx@parent{%
+        {\expandonce\tud at idx@sortkey}{\expandonce\tud at idx@format}%
+      }%
+    \else%
+      \ClassError{\TUD at Class@Name}{No previous macro or environment}{%
+        Since parameters can only be used for macros or\MessageBreak%
+        environments, you have to use `parameter' within\MessageBreak%
+        `macro' or `environment'.%
+      }%
+    \fi%
+  \fi%
+  \ifx\tud at idx@parent\relax\else%
+    \gdef\tud at idx@sortkey{#1\space(\tud at parameter@name)}%
+    \gdef\tud at idx@format{%
+      {\string\ttfamily\space#1}%
+      \tud at idx@typemarkup\space(\tud at parameter@name)%
     }%
+    \@bsphack%
+    \special at index{%
+      \expandafter\@firstoftwo\tud at idx@parent\actualchar%
+      \expandafter\@secondoftwo\tud at idx@parent\levelchar%
+      \tud at idx@sortkey\actualchar\tud at idx@format%
+      \encapchar main%
+    }%
+    \@esphack%
   \fi%
-  \protected at edef\parameter at parent@changes{%
-    \parameter at parent@indexname\actualchar%
-    \parameter at parent@indexformat:\levelchar%
-  }%
-  \@bsphack%
-  \special at index{%
-    \parameter at parent@indexname\actualchar%
-    \parameter at parent@indexformat\levelchar%
-    #1\space\tud at parameter@name\actualchar%
-    {\string\ttfamily\space#1}\index at type{\tud at parameter@name}%
-    \encapchar main%
-  }%
-  \special at index{%
-    \tud at parameters@name:\levelchar%
-    #1\space\parameter at parent@indexname%
-    \actualchar{\string\ttfamily\space#1}%
-    \noexpand\,--\noexpand\,\parameter at parent@indexformat%
-    \encapchar main%
-  }%
-  \@esphack%
-  \hypersourcedef{\filesep\number\c at CodelineNo}%
 }
 %    \end{macrocode}
-% \end{macro}^^A \SpecialMainParameterIndex
-% \begin{environment}{DescribeParameterParent}
-% \changes{v2.05i}{2017/02/20}{neu}^^A
-% \begin{macro}{\SpecialParameterIndex}
-% \changes{v2.05i}{2017/02/20}{neu}^^A
-% Selbiges für die Verwendung durch \cs{Describe\dots}
+% Hier wird die Gestalt der Indexeinträge für Parameter festgelegt, wenn diese 
+% durch \cs{Describe at Parameters} erzeugt werden.
 %    \begin{macrocode}
-\newenvironment{DescribeParameterParent}[2]{%
-  \@nameuse{@Save#1IndexName}{\string#2}%
-}{}
 \renewcommand*\SpecialParameterIndex[1]{%
-  \ifx\parameter at parent@indexname\relax%
-    \ClassError{\TUD at Class@Name}{No previous macro or environment}{%
+  \ifx\tud at idx@parent\relax%
+    \ClassError{\TUD at Class@Name}{No macro or environment given}{%
       Since parameters can only be used for macros or\MessageBreak%
-      environments, you have to use macro\MessageBreak%
-      `\string\DescribeParameter' only within the environment\MessageBreak%
-      `DescribeParameterParent'.%
+      environments, you have to use an appropriate command like\MessageBreak%
+      `\string\DescribeMacroParameters' or `\string\DescribeEnvParameters'.%
     }%
+  \else%
+    \gdef\tud at idx@sortkey{#1\space(\tud at parameter@name)}%
+    \gdef\tud at idx@format{%
+      {\string\ttfamily\space#1}%
+      \tud at idx@typemarkup\space(\tud at parameter@name)%
+    }%
+    \@bsphack%
+    \index{%
+      \expandafter\@firstoftwo\tud at idx@parent\actualchar%
+      \expandafter\@secondoftwo\tud at idx@parent\levelchar%
+      \tud at idx@sortkey\actualchar\tud at idx@format%
+      \encapchar usage%
+    }%
+    \@esphack%
   \fi%
-  \@bsphack%
-  \index{%
-    \parameter at parent@indexname\actualchar%
-    \parameter at parent@indexformat\levelchar%
-    #1\space\tud at parameter@name\actualchar%
-    {\protect\ttfamily#1}\index at type{\tud at parameter@name}%
-    \encapchar usage%
+}
+%    \end{macrocode}
+% \end{macro}^^A \SpecialParameterIndex
+% \end{macro}^^A \SpecialMainParameterIndex
+%
+% \subsection{Index und Änderungsliste}
+% Sollte \app{texindy} zum Einsatz kommen, wird die Gestalt von Index und 
+% Änderungsliste angepasst, was eine Anpassung der erzeugten Einträge bedingt.
+% Die notwendigen Befehle werden zunächst nachfolgenddefiniert. Über den Hook
+% |begindocument/before| erfolgt später die Zuweisung.
+%
+% \begin{macro}{\tud at xdy@reference}
+% \changes{v2.06o}{2022/07/24}{neu}^^A
+% \begin{macro}{\tud at xdy@destination}
+% \changes{v2.06o}{2022/07/24}{neu}^^A
+% \begin{macro}{\tud at xdy@filesep}
+% \changes{v2.06o}{2022/07/24}{neu}^^A
+% \begin{macro}{\tud at xdy@mapping}
+% \changes{v2.06o}{2022/07/24}{neu}^^A
+% \begin{macro}{\tud at xdy@@mapping}
+% \changes{v2.06o}{2022/07/24}{neu}^^A
+% Für die verwendeten Referenzen von Einträgen für Index und Änderungsliste 
+% gibt es im Zusammenspiel von \pkg{doc} und \pkg{hypdoc} mehrere Varianten.
+% Das Paket \pkg{doc} unterscheidet zwischen Verweisen auf Seitenzahlen und 
+% Codezeilen. Das Paket \pkg{hypdoc} stellt für beide Varianten jeweils eine 
+% eigene Implentierung für das Erzeugen von Hyperlinks bereit. Mit dem Befehl 
+% \cs{tud at xdy@reference} wird für die Verwendung von \app{texindy} für alle
+% Varianten eine einheitliche Form definiert. Alle Einträge für Index und 
+% Änderungsliste verwenden das Format 
+% \meta{Target}|:|\meta{Dateischlüssel}|-|\meta{Codezeile}|:|\meta{Seitenzahl}
+% für Referenzen. Es wird über \cs{tud at xdy@filesep} sichergestellt, dass für 
+% den Dateischlüssel immer ein definierter Zustand besteht.
+%
+% An \cs{tud at xdy@reference} wird als einziges Argument die aktuelle Codezeile
+% \cs{c at CodelineNo} des Paketes \pkg{doc} übergeben, das Target für Link zur
+% Codezeile wird ggf. automatisch durch \pkg{hypdoc} gesetzt. Die Auswetung der 
+% so erzeugten Referenz erfolgt mit \cs{tud at xdy@@mapping}. War das an 
+% \cs{tud at xdy@reference} übergebene Argument größer 0, wird die Ausgabe für 
+% eine Codezeile erzeugt, andernfalls für eine Seitenangabe.
+%    \begin{macrocode}
+\ifdefined\tudxdyflag
+\newcommand*\tud at xdy@filesep{?-}
+\newcommand*\tud at xdy@reference[1]{0:\filesep#1:\thepage}
+%    \end{macrocode}
+% Mit \cs{tud at xdy@destination} erfolgt die Formatierung bei der Ausgabe. Sollte 
+% kein Dateischlüssel gesetzt sein, erfolgt dennoch eine Ausgabe. Der Zustand 
+% besteht dann, wenn \cs{DocInclude} nicht verwendet wurde.
+%    \begin{macrocode}
+\newcommand*\tud at xdy@destination[3]{%
+  #1\if#2\expandafter\@car\tud at xdy@filesep\@nil\else\mbox{--}#2\fi%
+  \ifnum#3>\z@\textsubscript{\kern.1em#3}\fi%
+}
+%    \end{macrocode}
+% Neben der Refernz wird an \cs{tud at xdy@mapping} noch ein Attribut für die 
+% Formatierung der Ausgabe übergeben. Gültige Werte sind |main|, |usage|, 
+% |code| und |change| (siehe \file{tudscr-texindy.dtx}). Die erzeugte Ausgabe 
+% der Referenz wird dann mit \cs{main}, \cs{usage}, \cs{code} oder \cs{change}
+% formatiert, falls vorhanden. Diese Befehle müssen genau ein obligatorisches 
+% Argument verarbeiten.
+%    \begin{macrocode}
+\newcommand*\tud at xdy@mapping[2]{\tud at xdy@@mapping{#1}#2\@nil}
+\newcommand*\tud at xdy@@mapping{}
+%    \end{macrocode}
+% Ohne \pkg{hypdoc} werden für die Ausgabe Links auf die entsprechenden Seiten
+% erzeugt, falls zumindes \pkg{hyperref} geladen wurde.
+%    \begin{macrocode}
+\def\tud at xdy@@mapping#1#2:#3-#4:#5\@nil{%
+  \begingroup%
+    \ifundef{\hyperlink}{\let\tud at res@a\@gobble}{\let\tud at res@a\@firstofone}%
+    \csname\ifx\\#1\\relax\else#1\fi\endcsname{%
+      \tud at res@a{\hyperlink{page.#5}}{\tud at xdy@destination{#5}{#3}{#4}}%
+    }%
+  \endgroup%
+}
+%    \end{macrocode}
+% Mit \pkg{hypdoc} werden via \cs{c at HD@hypercount} Sprungmarken ins Dokument 
+% sowie auf Codezeilen generiert. Diese werden durch \cs{tud at xdy@@mapping}
+% an die korrespondierenden Befehle von \pkg{hypdoc} durchgereicht.
+%    \begin{macrocode}
+\AfterPackage*{hypdoc}{%
+  \renewcommand*\tud at xdy@reference[1]{\the\c at HD@hypercount:\filesep#1:\thepage}%
+  \def\tud at xdy@@mapping#1#2:#3-#4:#5\@nil{%
+    \ifnum#2>\z@\relax
+      \hdclindex{#2}{#1}{\tud at xdy@destination{#5}{#3}{#4}}%
+    \else
+        \csname\ifx\\#1\\relax\else#1\fi\endcsname{%
+          \hyperlink{page.#5}{\tud at xdy@destination{#5}{#3}{#4}}%
+        }%
+    \fi
   }%
-  \index{%
-    \tud at parameters@name:\levelchar#1\space\parameter at parent@indexname%
-    \actualchar{\protect\ttfamily#1}%
-    \noexpand\,--\noexpand\,\parameter at parent@indexformat%
-    \encapchar usage%
-  }%
+}
+\fi
+%    \end{macrocode}
+% \end{macro}^^A \tud at xdy@@mapping
+% \end{macro}^^A \tud at xdy@mapping
+% \end{macro}^^A \tud at xdy@filesep
+% \end{macro}^^A \tud at xdy@destination
+% \end{macro}^^A \tud at xdy@reference
+%
+% \subsubsection{Erzeugen von Indexeinträgen}
+%
+% Nachdem die Form der Referenzierung für \app{texindy} definiert wurde, müssen
+% die Einträge im Index auch entsprechend erstellt werden.
+%
+% \begin{macro}{\tud at xdy@wrindex}
+% \changes{v2.06o}{2022/07/24}{neu}^^A
+% \begin{macro}{\tud at xdy@page at wrindex}
+% \changes{v2.06o}{2022/07/24}{neu}^^A
+% \begin{macro}{\tud at xdy@codeline at wrindex}
+% \changes{v2.06o}{2022/07/24}{neu}^^A
+% Mit \cs{PageIndex} respektive \cs{CodelineIndex} aus dem Paket \pkg{doc} 
+% wird festgelegt, ob Index und Änderungsliste Seitenzahlen oder Codezeilen 
+% als Referenz verwenden. Dementsprechend werden \cs{tud at xdy@page at wrindex} und 
+% \cs{tud at xdy@codeline at wrindex} definiert, die sich grundsätzlich nur darin
+% unterscheiden, ob \cs{tud at xdy@reference} mit |0| oder der aktuellen
+% Codezeile |\number\c at CodelineNo| als Argument genutzt wird.
+%    \begin{macrocode}
+\ifdefined\tudxdyflag
+\newcommand*\tud at xdy@wrindex[1]{%
+    \protected at write\@indexfile{}{%
+      \string\indexentry{#1}{\tud at xdy@reference{0}}%
+    }%
+  \endgroup%
   \@esphack%
 }
+\newcommand*\tud at xdy@page at wrindex[1]{%
+  \begingroup
+    \let\@wrindex\tud at xdy@wrindex%
+    \index{#1}%
+  \endgroup
+}
+\AfterPackage*{hypdoc}{%
+  \renewcommand*\tud at xdy@page at wrindex[1]{%
+    \begingroup
+      \let\@wrindex\tud at xdy@wrindex%
+      \HDorg at index{#1}%
+    \endgroup
+  }
+}
+\newcommand*\tud at xdy@codeline at wrindex[1]{%
+  \if at filesw
+    \begingroup
+      \let\protect\noexpand
+      \immediate\write\@indexfile{%
+        \string\indexentry{#1}{\tud at xdy@reference{\number\c at CodelineNo}}%
+      }%
+    \endgroup
+  \fi
+}
+\fi
 %    \end{macrocode}
-% \end{macro}^^A \SpecialParameterIndex
-% \end{environment}^^A DescribeParameterParent
+% \end{macro}^^A \tud at xdy@codeline at wrindex
+% \end{macro}^^A \tud at xdy@page at wrindex
+% \end{macro}^^A \tud at xdy@wrindex
 %
 % \subsubsection{Erzeugen von Änderungseinträgen}
 %
+% \begin{macro}{\changehistoryname}
 % \begin{macro}{\changes@}
-% Bei der Erstellung der Änderungsliste fehlt bei Makros in der aktuellen 
-% Version von \pkg{doc} ein Leerzeichen. Das Problem ist bereits gemeldet. 
+% \changes{v2.06o}{2022/07/20}{Anpassungen für \pkg{doc}}^^A
+% \changes{v2.06o}{2022/07/25}{Prüfen falscher Datumsangaben}^^A
+% \begin{macro}{\changes@@}
+% Vor den Änderungen wird geprüft, ob sich an der Definition aus dem Paket 
+% \pkg{doc} etwas geändert hat. Der Befehl \cs{changehistoryname} wird vom 
+% Paket \pkg{hypdoc} verwendet.
 %    \begin{macrocode}
+\def\changehistoryname{\tud at changes@name}
 \CheckCommand*\changes@[3]{%
   \protected at edef\@tempa{%
     \noexpand\glossary{%
-      #1\levelchar
+      #1%
+      \ifdoc at reportchangedates\space -- #2\fi
+      \levelchar
       \ifx\saved at macroname\@empty
-        \space
+        \quotechar!%
         \actualchar
         \generalname
       \else
@@ -877,165 +1070,110 @@
 %    \end{macrocode}
 % Bei der Erzeugung der Änderungseinträge wird zwischen der Verwendung von 
 % \app{makeindex} und \app{texindy} unterschieden. Für die Reihenfolge des 
-% Erscheinens der einzelnen Einträge wird das angegebene Datum zur Sortierung 
-% genutzt.
+% Erscheinens der einzelnen Einträge wird das in |#2| angegebene Datum zur 
+% Sortierung genutzt.
 %    \begin{macrocode}
-\ifdefined\tudxdyflag%
-  \renewcommand*\changes@[3]{%
+\renewcommand*\changes@[3]{%
+  \ifnum\@parse at version@1993/01/01\@nil<\expandafter\@parse at version@#2//00\@nil%
+    \expandafter\@gobble%
+  \else%
+    \expandafter\@firstofone%
+  \fi{\ClassWarning{\TUD at Class@Name}{The given date `#2' seems to be invalid}}%
+  \changes@@{#1}{#2}{#3}%
+}
+\ifdefined\tudxdyflag
+  \newcommand*\changes@@[3]{%
+    \protected at edef\@tempa{%
+      \noexpand\glossary{%
+        #1\ifdoc at reportchangedates\space -- #2\fi
+        \levelchar
 %    \end{macrocode}
-% Einträge sollen nur erzeugt werden, wenn diese vollständig sind.
+% Das an die vorderster Stelle sortierte Zeichen ist |~| bei \app{texindy}.
 %    \begin{macrocode}
-    \@tempswatrue%
-    \ifblank{#1}{\@tempswafalse}{}%
-    \ifblank{#3}{\@tempswafalse}{}%
-    \if at tempswa%
+        \ifx\saved at macroname\@empty
+          \string~\actualchar\tud at general@name%
 %    \end{macrocode}
-% Es wird dabei unterschieden, ob der Änderungseintrag einem Parameter gilt. 
-% Ist dies nicht der Fall, so wird der Eintrag mehr oder weniger standardmäßig 
-% erzeugt.
+% Gilt der Änderungseintrag einem Parameter wird eine zusätzliche Ebene vor dem
+% eigentlichen Eintrag des Parameters erzeugt und der in \cs{tud at idx@parent}
+% zuvor gesicherte Elterneintrag~-- Befehl oder Umgebung~-- eingefügt. Weil
+% ohnehin eine Stildatei für \app{texindy} erzeugt wird, ist das Erzeugen 
+% zusätzlicher Ebenen in der Änderungsliste einfach machbar. Prinzipiell wäre
+% das mit einer entsprechenden Stildatei auch für \app{makeindex} machbar.
 %    \begin{macrocode}
-      \ifx\parameter at parent@changes\relax%
-        \protected at edef\@tempb{%
-          \saved at indexname%
-          \ifx\saved at indextype\@empty\else%
-            \space\saved at indextype%
-          \fi%
-          \actualchar%
-          \string\verb\quotechar*%
-          \verbatimchar\saved at macroname%
-          \verbatimchar%
-          \ifx\saved at indextype\@empty\else%
-            \index at type{\saved at indextype}%
-          \fi%
-          :\levelchar%
-        }%
-%    \end{macrocode}
-% Andernfalls wird eine zusätzliche Ebene vor dem eigentlichen Eintrag des
-% Parameters erzeugt und der zuvor in \cs{parameter at parent@changes} gesicherte 
-% Elterneintrag~-- Befehl oder Umgebung~-- dafür eingefügt.
-%    \begin{macrocode}
-      \else%
-        \protected at edef\@tempb{%
-          \parameter at parent@changes%
-          \saved at indexname%
-          \ifx\saved at indextype\@empty\else%
-            \space\saved at indextype%
-          \fi%
-          \actualchar%
-%    \end{macrocode}
-% Der so erzeugte Änderungseintrag soll durch \app{texindy} bei der Erzeugung 
-% der Änderungsliste noch speziell sortiert werden. Daher wird nicht \cs{verb} 
-% sondern lediglich \cs{ttfamily} verwendet.
-%    \begin{macrocode}
-          {\noexpand\ttfamily\saved at macroname}%
-          \ifx\saved at indextype\@empty\else%
-            \index at type{\saved at indextype}%
-          \fi%
-          :\levelchar%
-        }%
-      \fi%
-      \protected at edef\@tempa{%
-        \noexpand\glossary{%
-          #1\levelchar%
-          \ifx\saved at macroname\@empty%
-            \tud at general@name%
-          \else%
-            \tud at implementation@name%
-          \fi%
-          \levelchar%
-          \ifx\saved at macroname\@empty\else%
-            \@tempb%
-          \fi%
-          #2 #3%
-          \actualchar%
-          #3% (#2)%
-        }%
+        \else
+          \ifx\tud at idx@parent\relax\else
+            \expandafter\@firstoftwo\tud at idx@parent\actualchar
+            \expandafter\@secondoftwo\tud at idx@parent:\levelchar
+          \fi
+          \tud at idx@sortkey\actualchar\tud at idx@format%
+        \fi
+        :\levelchar
+        #2\space\protecting{#3}\actualchar\protecting{#3}%
       }%
-    \else%
-      \let\@tempa\relax%
-    \fi%
+    }%
     \@tempa\endgroup\@esphack%
   }%
-\else%
+\else
 %    \end{macrocode}
-% Für \app{makeindex} wird der Befehl insebsondere für das Listen der Parameter 
+% Für \app{makeindex} wird der Befehl insbesondere für das Listen der Parameter 
 % angepasst.
 %    \begin{macrocode}
   \renewcommand*\changes@[3]{%
     \protected at edef\@tempa{%
       \noexpand\glossary{%
-        #1\levelchar%
-        \ifx\saved at macroname\@empty%
-          \quotechar!%
-          \actualchar%
-          \tud at general@name%
-          :\levelchar%
-        \else%
-          \ifx\parameter at parent@changes\relax\else%
-            \parameter at parent@changes zzz\space%
-          \fi%
-          \saved at indexname%
-          \ifx\saved at indextype\@empty\else%
-            \space\saved at indextype%
-          \fi%
-          \actualchar%
-          \string\verb\quotechar*%
-          \verbatimchar\saved at macroname%
-          \verbatimchar%
-          \ifx\saved at indextype\@empty\else%
-            \index at type{\saved at indextype}%
-          \fi%
-          \ifx\parameter at parent@changes\relax%
-            :\levelchar%
-          \else%
-            :\space%
-          \fi%
-        \fi%
-        #3%
+        #1\ifdoc at reportchangedates\space -- #2\fi
+        \levelchar
+        \ifx\saved at macroname\@empty
+          \quotechar!\actualchar\tud at general@name%
+        \else
+          \ifx\tud at idx@parent\relax\else
+            \expandafter\@firstoftwo\tud at idx@parent\space--\space%
+          \fi
+          \tud at idx@sortkey\actualchar
+          \ifx\tud at idx@parent\relax\else
+            \expandafter\@secondoftwo\tud at idx@parent\noexpand\,--\noexpand\,%
+          \fi
+          \tud at idx@format%
+        \fi
+        :\levelchar
+        #2\space\protecting{#3}\actualchar\protecting{#3}%
       }%
     }%
     \@tempa\endgroup\@esphack%
   }%
-\fi%
+\fi
 %    \end{macrocode}
+% \end{macro}^^A \changes@@
 % \end{macro}^^A \changes@
-% \begin{macro}{\@wrglossary}
-% Für die Ausgabe der Änderungsliste soll nicht einfach nur die Seitenzahl 
-% sondern zumindest für die Implementierungen die Codezeile ausgegeben werden.
+% \end{macro}^^A \changehistoryname
+% \begin{macro}{\tud at xdy@wrglossary}
+% \changes{v2.06o}{2022/07/24}{neu}^^A
+% Die Referenzierung für \app{texindy} wird auch für Änderungseinträge genutzt.
 %    \begin{macrocode}
-\CheckCommand*\@wrglossary[1]{%
-  \protected at write\@glossaryfile{}%
-  {\string\glossaryentry{#1}{\thepage}}%
-  \endgroup
-  \@esphack%
-}
+\ifdefined\tudxdyflag
+\newcommand*\tud at xdy@wrglossary[1]{%
 %    \end{macrocode}
-% Allgemeine Einträge werden mit Seitenzahlenerzeugt. Für Einträge bzgl. einer 
-% Implementierungen werden Codezeilen als Basis verwendet, falls aktiv.
+% Zunächst wird geprüft, ob eine Eintrag mit Refernz auf eine Seitenzahl oder 
+% eine Codezeile erzeugt werden soll. Letztere werden nur erstellt, wenn im 
+% Index überhaupt Codezeilen verwendet werden und der Änderungseintrag sich 
+% auf ein zuletzt deklariertes Element (\cs{saved at macroname}) bezieht.
 %    \begin{macrocode}
-\def\@wrglossary#1{%
-  \ifx\saved at macroname\@empty%
+    \@tud at res@swafalse%
+    \ifx\special at index\@gobble\else\ifcodeline at index
+      \ifx\saved at macroname\@empty\else\@tud at res@swatrue\fi
+    \fi\fi
+    \global\advance\c at CodelineNo\@ne%
     \protected at write\@glossaryfile{}{%
-      \string\glossaryentry{#1|usage}{\thepage}%
+      \string\glossaryentry{#1|change}%
+        {\tud at xdy@reference{\if at tud@res at swa\number\c at CodelineNo\else0\fi}}%
     }%
-  \else%
-    \ifcodeline at index%
-      \global\advance\c at CodelineNo\@ne%
-      \protected at write\@glossaryfile{}{%
-        \string\glossaryentry{#1|main}{\filesep\number\c at CodelineNo}%
-      }%
-      \global\advance\c at CodelineNo\m at ne%
-    \else%
-      \protected at write\@glossaryfile{}{%
-        \string\glossaryentry{#1|main}{\thepage}%
-      }%
-    \fi%
-  \fi%
+    \global\advance\c at CodelineNo\m at ne%
   \endgroup%
   \@esphack%
 }
+\fi
 %    \end{macrocode}
-% \end{macro}^^A \@wrglossary
+% \end{macro}^^A \tud at xdy@wrglossary
 %
 % \subsubsection{Erscheinung von Einträgen in der Änderungsliste}
 %
@@ -1061,12 +1199,10 @@
 % \changes{v2.05g}{2016/11/02}{neu}^^A
 % \begin{macro}{\tud at lst@@process}
 % \changes{v2.05g}{2016/11/02}{neu}^^A
-% \begin{macro}{\tud at lst@subsub}
+% \begin{macro}{\tud at lst@@sub}
 % \changes{v2.05g}{2016/11/02}{neu}^^A
-% \begin{macro}{\tud at lst@subsubsub}
+% \begin{macro}{\tud at lst@@@sub}
 % \changes{v2.05g}{2016/11/02}{neu}^^A
-% \begin{macro}{\subsubsubitem}
-% \changes{v2.05g}{2016/11/02}{neu}^^A
 % \begin{macro}{\efil}
 % \changes{v2.05g}{2016/11/02}{neu}^^A
 % Falls für die Sortierung der Änderungsliste in \cls{tudscrdoc} \app{texindy}
@@ -1075,24 +1211,23 @@
 % existieren. Sollte nur eine Anmerkung vorhanden sein, wird diese direkt in
 % der dazugehörigen Ebene nach dem Eintrag selbst ausgegeben.
 %    \begin{macrocode}
-\newcommand*\tud at lst@subsub{}
-\newcommand*\tud at lst@subsubsub{}
-\newcommand*\subsubsubitem{\@idxitem\hspace*{35\p@}}
+\newcommand*\tud at lst@@sub{}
+\newcommand*\tud at lst@@@sub{}
 \newcommand*\efil{\hfil\nopagebreak}%
 \newcommand*\tud at lst@def{%
   \newcommand*\tud at lst@values{}%
-  \newif\if at tud@lst at multi%
+  \tud at newif\if at tud@lst at multi%
   \newcommand*\tud at lst@init{%
     \let\tud at lst@values\relax%
-    \let\tud at lst@subsub\relax%
+    \let\tud at lst@@sub\relax%
     \@tud at lst@multifalse%
   }%
   \newcommand*\tud at lst@add[1]{%
     \ifx\tud at lst@values\relax\else%
       \@tud at lst@multitrue%
-      \def\tud at lst@subsub{\subsubitem}%
+      \def\tud at lst@@sub{\subitem}%
     \fi%
-    \listadd\tud at lst@values{\tud at lst@subsub ##1}%
+    \listadd\tud at lst@values{\tud at lst@@sub ##1}%
   }%
   \newcommand*\tud at lst@process{%
     \if at tud@lst at multi%
@@ -1102,11 +1237,11 @@
     \tud at lst@init%
   }%
   \newcommand*\tud at lst@@values{}%
-  \newif\if at tud@lst@@multi%
+  \tud at newif\if at tud@lst@@multi%
   \newcommand*\tud at lst@@init{%
     \let\tud at lst@@values\relax%
-    \def\tud at lst@subsub{\subsubitem}%
-    \def\tud at lst@subsubsub{\space}%
+    \def\tud at lst@@sub{\subitem}%
+    \def\tud at lst@@@sub{\space}%
     \@tud at lst@@multifalse%
   }%
   \newcommand*\tud at lst@@add[1]{%
@@ -1113,7 +1248,7 @@
     \@tud at lst@multitrue%
     \ifx\tud at lst@@values\relax\else%
       \@tud at lst@@multitrue%
-      \def\tud at lst@subsubsub{\subsubsubitem}%
+      \def\tud at lst@@@sub{\subsubitem}%
     \fi%
     \listadd\tud at lst@@values{##1}%
   }%
@@ -1121,9 +1256,9 @@
     \if at tud@lst@@multi%
       \appto\tud at lst@values{\efill}%
     \fi%
-    \edef\tud at reserved####1{%
+    \protected at edef\tud at reserved####1{%
       \noexpand\listadd\noexpand\tud at lst@values{%
-        \expandonce\tud at lst@subsubsub####1%
+        \expandonce\tud at lst@@@sub####1%
       }%
     }%
     \forlistloop{\tud at reserved}{\tud at lst@@values}%
@@ -1132,9 +1267,8 @@
 }
 %    \end{macrocode}
 % \end{macro}^^A \efil
-% \end{macro}^^A \subsubsubitem
-% \end{macro}^^A \tud at lst@subsubsub
-% \end{macro}^^A \tud at lst@subsub
+% \end{macro}^^A \tud at lst@@@sub
+% \end{macro}^^A \tud at lst@@sub
 % \end{macro}^^A \tud at lst@@process
 % \end{macro}^^A \tud at lst@@add
 % \end{macro}^^A \tud at lst@@init
@@ -1147,11 +1281,106 @@
 % \end{macro}^^A \tud at lst@values
 % \end{macro}^^A \tud at lst@def
 %
-% \subsubsection{Erzeugen von Index und Änderungsliste}
+% \subsubsection{Setzen der Anpassungen für Index und Änderungsliste}
 %
-% \begin{macro}{\tud at write@replace}
+% Über den Hook |begindocument/before| erfolgt nun die Zuweisung der zuvor 
+% gemachten Anpassungen an die jeweiligen Befehle, wobei zuvor die Definitionen 
+% der relevanten Befehle geprüft wird. Mit \cs{DeclareHookRule} für das durch 
+% \pkg{doc} verwendete Label |doc/hyperref| wird sichergestellt, dass die
+% Anpassungen erst nach \pkg{doc} angewendet werden.
+%    \begin{macrocode}
+\DeclareHookRule{begindocument/before}{doc/hyperref}{<}{.}
+\AddToHook{begindocument/before}{%
+  \CheckCommand*\@wrindex[1]{%
+    \protected at write\@indexfile{}{\string\indexentry{#1}{\thepage}}%
+    \endgroup
+    \@esphack%
+  }
+  \CheckCommand*\codeline at wrindex[1]{% ltxdoc
+    \if at filesw
+      \begingroup
+        \let\protect\noexpand
+        \immediate\write\@indexfile{%
+          \string\indexentry{#1}{\filesep\number\c at CodelineNo}%
+        }%
+      \endgroup
+    \fi
+  }
+  \@ifpackageloaded{hypdoc}{%
+    \CheckCommand*\filesep{}
+    \CheckCommand*\doc at handleencap[1]{%
+      \encapchar hdclindex{\the\c at HD@hypercount}{#1}%
+    }
+    \CheckCommand*\HD at codeline@wrindex[1]{%
+      \begingroup
+        \let\HDorg at encapchar\encapchar
+        \def\encapchar##1\encapchar##2\@nil{%
+          \HDorg at encapchar
+          hdclindex{\the\c at HD@hypercount}{##1}%
+        }%
+        \codeline at wrindex{#1\encapchar\encapchar\@nil}%
+      \endgroup
+    }
+    \CheckCommand*\HD at page@wrindex[1]{%
+      \begingroup
+        \let\HDorg at encapchar\encapchar
+        \def\encapchar##1\encapchar##2\@nil{%
+          \HDorg at encapchar
+          hdpindex{##1}%
+        }%
+        \HDorg at index{#1\encapchar\encapchar\@nil}%
+      \endgroup
+    }
+    \CheckCommand*\@wrglossary[1]{%
+      \let\HDorg at encapchar\encapchar
+      \def\encapchar##1\encapchar##2\@nil{%
+        \HDorg at encapchar
+        hdpindex{##1}%
+      }%
+      \HDorg at wrglossary{#1\encapchar\encapchar\@nil}%
+    }
+    \CheckCommand*\HDorg at wrglossary[1]{%
+      \protected at write\@glossaryfile{}%
+      {\string\glossaryentry{#1}{\thepage}}%
+      \endgroup
+      \@esphack%
+    }
+  }{%
+    \CheckCommand*\@wrglossary[1]{%
+      \protected at write\@glossaryfile{}%
+      {\string\glossaryentry{#1}{\thepage}}%
+      \endgroup
+      \@esphack%
+    }
+  }
+%    \end{macrocode}
+% Prüfung beendet, jetzt erfolgt die eigentliche Zuweisung.
+%    \begin{macrocode}
+  \ifdefined\tudxdyflag
+    \ifx\special at index\@gobble\else
+      \ifcodeline at index
+        \let\special at index\tud at xdy@codeline at wrindex
+      \else
+        \let\special at index\tud at xdy@page at wrindex
+      \fi
+      \@ifpackageloaded{hypdoc}{%
+        \let\HD at codeline@wrindex\tud at xdy@codeline at wrindex
+        \let\HD at page@wrindex\tud at xdy@page at wrindex
+      }{}%
+    \fi
+    \let\filesep\tud at xdy@filesep
+    \def\doc at handleencap#1{\encapchar #1}
+    \let\@wrindex\tud at xdy@wrindex
+    \let\@wrglossary\tud at xdy@wrglossary
+  \fi
+}
+%    \end{macrocode}
+%
+% \subsubsection{Verarbeiten der Hilfsdateien von Index und Änderungsliste}
+%
+% \begin{macro}{\tud at xdy@write}
 % \changes{v2.05}{2016/04/21}{neu}^^A
-% \begin{macro}{\tud at read@replace}
+% \begin{macro}{\tud at xdy@read}
 % \changes{v2.05}{2016/04/21}{neu}^^A
 % \begin{macro}{\tud at line@replace}
 % \changes{v2.05}{2016/04/21}{neu}^^A
@@ -1158,6 +1387,12 @@
 % \begin{macro}{\actualchar}
 % \begin{macro}{\quotechar}
 % \begin{macro}{\levelchar}
+% \ToDo{äquivalent zu tudscrmanual.cls; shell-escape raus, via makefile}[v2.07]
+%    \begin{macrocode}
+%^^A\BeforeClosingMainAux{%
+%^^A\immediate\closeout\@indexfile%
+%^^A\immediate\closeout\@glossaryfile%
+%    \end{macrocode}
 % Damit die erzeugten Dateien für Index und Änderungsliste von \app{texindy} 
 % verarbeitet werden können, müssen einige Steuerzeichen in der originalen 
 % \file{.ind}-Datei getauscht werden. Dafür wird diese zeilenweise eingelesen, 
@@ -1164,10 +1399,8 @@
 % die fraglichen Zeichen ersetzt und in eine weitere Hilfsdatei geschrieben.
 %    \begin{macrocode}
 \ifdefined\tudxdyflag
-  \newcommand*\tud at write@replace{}%
-  \newwrite\tud at write@replace%
-  \newcommand*\tud at read@replace{}%
-  \newread\tud at read@replace%
+  \tud at newwrite\tud at xdy@write%
+  \tud at newread\tud at xdy@read%
 %    \end{macrocode}
 % Die Makros für die fraglichen Steuerzeichen werden so angepasst, dass die
 % Wahrscheinlichkeit für eine Verwendung dieser Kombination in einem Makro- 
@@ -1182,39 +1415,63 @@
     \endlinechar=\m at ne\relax%
     \def\tud at reserved#1#2{%
       \IfFileExists{\jobname.#1}{%
-        \immediate\openin\tud at read@replace=\jobname.#1\relax%
-        \immediate\openout\tud at write@replace=\jobname-xdy.#1\relax%
+        \immediate\openin\tud at xdy@read=\jobname.#1\relax%
+        \immediate\openout\tud at xdy@write=\jobname-xdy.#1\relax%
         \@tempswafalse%
-        \loop\unless\ifeof\tud at read@replace%
-          \readline\tud at read@replace to\tud at line@replace%
-          \tud at replace\tud at line@replace{"}{""}%
-          \tud at replace\tud at line@replace{!}{"!}%
-          \tud at replace\tud at line@replace{:}{":}%
-          \tud at replace\tud at line@replace{@}{"@}%
-          \tud at replace\tud at line@replace{\"@}{"\@backslashchar"@}%
-          \expandafter\tud at replace\expandafter\tud at line@replace%
+        \loop\unless\ifeof\tud at xdy@read%
+          \readline\tud at xdy@read to\tud at line@replace%
+%    \end{macrocode}
+% Um potenzielle Dopplungen zu vermeiden, wird \cs{quotechar} vor Zeichen 
+% entfernt, die ohnehin gegebenenfalls manuell behandelt werden müssen.
+%    \begin{macrocode}
+          \expandafter\tud at replace@@in\expandafter\tud at line@replace%
+            \expandafter{\quotechar"}{"}%
+          \expandafter\tud at replace@@in\expandafter\tud at line@replace%
+            \expandafter{\quotechar!}{!}%
+          \expandafter\tud at replace@@in\expandafter\tud at line@replace%
+            \expandafter{\quotechar:}{:}%
+          \expandafter\tud at replace@@in\expandafter\tud at line@replace%
+            \expandafter{\quotechar @}{@}%
+%    \end{macrocode}
+% Jetzt die manuellen Anpassungen für Zeichen, die eigentlich zur Steuerung
+% der Indexeinträge genutzt werden.
+%    \begin{macrocode}
+          \tud at replace@@in\tud at line@replace{"}{""}%
+          \tud at replace@@in\tud at line@replace{!}{"!}%
+          \tud at replace@@in\tud at line@replace{:}{":}%
+          \tud at replace@@in\tud at line@replace{@}{"@}%
+          \tud at replace@@in\tud at line@replace{\"@}{"\"@}%
+%    \end{macrocode}
+% Abschließend erfolgt das Einsetzen der Steuerzeichen.
+%    \begin{macrocode}
+          \expandafter\tud at replace@@in\expandafter\tud at line@replace%
             \expandafter{\actualchar}{@}%
-          \expandafter\tud at replace\expandafter\tud at line@replace%
+          \expandafter\tud at replace@@in\expandafter\tud at line@replace%
             \expandafter{\quotechar}{"}%
-          \expandafter\tud at replace\expandafter\tud at line@replace%
+          \expandafter\tud at replace@@in\expandafter\tud at line@replace%
             \expandafter{\levelchar}{!}%
-          \tud at replace\tud at line@replace{" @}{}%
-          \ifeof\tud at read@replace\else%
-            \immediate\write\tud at write@replace{%
+          \tud at replace@@in\tud at line@replace{" @}{}%
+          \ifeof\tud at xdy@read\else%
+            \immediate\write\tud at xdy@write{%
               \unexpanded\expandafter{\tud at line@replace}%
             }%
             \@tempswatrue%
           \fi%
         \repeat%
-        \immediate\closein\tud at read@replace%
-        \immediate\closeout\tud at write@replace%
+        \immediate\closein\tud at xdy@read%
+        \immediate\closeout\tud at xdy@write%
         \ifnum\pdf at shellescape=\@ne\relax%
           \if at tempswa%
             \ShellEscape{%
               texindy\space%
-                -o \jobname.#2\space%
-                -M \@currname-#2.xdy\space%
-                -t \jobname-#2.xlg\space%
+              -M \@currname-#2.xdy\space%
+              \ifdefvoid{\inputencodingname}{%
+                -C\space utf8%
+              }{%
+                -C\space\inputencodingname%
+              }\space%
+              -t \jobname-#2.xlg\space%
+              -o \jobname.#2\space%
               \jobname-xdy.#1%
             }%
 %    \end{macrocode}
@@ -1221,8 +1478,8 @@
 % Falls nichts geschrieben wurde, wird eine leere Ausgabedatei erzeugt.
 %    \begin{macrocode}
           \else%
-            \immediate\openout\tud at write@replace=\jobname.#2\relax%
-            \immediate\closeout\tud at write@replace%
+            \immediate\openout\tud at xdy@write=\jobname.#2\relax%
+            \immediate\closeout\tud at xdy@write%
           \fi%
         \fi%
       }{}%
@@ -1245,40 +1502,114 @@
   \fi%
 \fi
 %    \end{macrocode}
+% \ToDo{äquivalent zu tudscrmanual.cls}[v2.07]
+%    \begin{macrocode}
+%^^A}
+%    \end{macrocode}
 % \end{macro}^^A \levelchar
 % \end{macro}^^A \quotechar
 % \end{macro}^^A \actualchar
 % \end{macro}^^A \tud at line@replace
-% \end{macro}^^A \tud at read@replace
-% \end{macro}^^A \tud at write@replace
-% Jetzt werden noch die Einleitungen für Index und Änderungsliste angepasst.
-%    \begin{macrocode}
-\IndexPrologue{\addsec{\indexname}\tud at index@text}
-\GlossaryPrologue{\addsec{\tud at changes@name}}
-%    \end{macrocode}
+% \end{macro}^^A \tud at xdy@read
+% \end{macro}^^A \tud at xdy@write
 %
-% \subsection{ToDo-Liste}
+% \subsection{Liste anstehender Aufgaben}
 %
 % \begin{macro}{\PrintToDos}
 % \changes{v2.05}{2016/05/19}{neu}^^A
-% \begin{macro}{\@docinclude}
-% Für ToDo-Notizen wird am Ende eine Liste aller offenen Punkte ausgegeben.
+% Für ToDo-Notizen wird eine Liste aller anstehender Aufgaben definiert.
 %    \begin{macrocode}
 \DeclareNewTOC[%
-  type=todo,%
   listname={\tud at todo@name},%
-  name=ToDo,%
-  tocentryindent=\z@,%
   owner=\@currname,%
 ]{tdo}
-\setuptoc{tdo}{totoc}
-\newcommand*\PrintToDos{\ifdefined\tudfinalflag\else\listoftodos\fi}
+\setuptoc{tdo}{totoc,noindent}
+\newcommand*\PrintToDos{\ifdefined\tudfinalflag\else\listoftoc{tdo}\fi}
 %    \end{macrocode}
-% Damit die Liste der ToDo-Notizen bei der Erzeugung der gesamten Dokumentation 
-% des Quelltextes einmalig sowie vollständig und nicht nach jeder Quelldatei 
-% einzeln ausgegeben wird, muss der Befehl \cs{@docinclude} angepasst werden.
+% \end{macro}^^A \PrintToDos
+% \begin{macro}{\ToDo}
+% \changes{v2.02}{2014/07/25}{neu}^^A
+% Die Befehle für die ToDo-Notizen. Um in der gleichen Nomenklatur wie beim
+% Handbuch bleiben zu können, wird die Randnotizmarke als optionales Argument
+% hinter dem eigentlichen Text angegeben.
 %    \begin{macrocode}
-\patchcmd{\@docinclude}{%
+\ifdefined\tudfinalflag
+\NewDocumentCommand\ToDo{mo}{}
+\else%
+\NewDocumentCommand\ToDo{mo}{%
+  \begingroup%
+    \csuse{phantomsection}%
+    \IfValueTF{#2}{%
+      \def\tud at reserved{#2}%
+    }{%
+      \def\tud at reserved{??}%
+    }%
+    \endgraf\ifdim\parskip>\z@\else\smallskip\fi\noindent%
+    \hfuzz0.8pt%
+    \leavevmode%
+    \def\@tempa{\raggedleft\fbox{ToDo:\space\tud at reserved\strut}}%
+    \ifundef{\marginnote}{%
+      \expandafter\marginpar\expandafter{\@tempa}%
+    }{%
+      \expandafter\marginnote\expandafter{\@tempa}[%
+        \dimexpr-\fboxsep-\fboxrule\relax%
+      ]%
+    }%
+    \fbox{\parbox{\dimexpr\linewidth-\fboxsep*2\relax}{#1\strut}}%
+    \endgraf\ifdim\parskip>\z@\else\bigskip\fi\noindent%
+%    \end{macrocode}
+% Werden mit \cs{DocInclude} mehrere Dateien in das Dokument eingefügt, so 
+% erhält die ToDo-Notiz einen entsprechenden Hinweis.
+%    \begin{macrocode}
+    \let\@tempa\@empty%
+    \ifdefvoid{\currentfile}{}{%
+      \def\@tempa{\,--\,\texttt{\currentfile}}%
+    }%
+    \addxcontentsline{tdo}{subsection}{\tud at reserved\@tempa:\space#1}%
+  \endgroup%
+  \ignorespaces%
+}
+\fi
+%    \end{macrocode}
+% \end{macro}^^A \ToDo
+%
+%
+% \subsection{Ausgabe des Schlussteils}
+%
+% \begin{macro}{\PrintBackMatter}
+% \changes{v2.06o}{2022/07/24}{neu}^^A
+% \begin{macro}{\tud at index@heading}
+% \changes{v2.06o}{2022/07/24}{neu}^^A
+% Hiermit lassen sich Index, Änderungsliste und die Liste offener Aufgaben
+% gemeinsam ausgegeben. Dafür werden die Einleitungen für Index und 
+% Änderungsliste angepasst und \cs{tud at index@heading} definiert. Somit lässt 
+% sich das Level der Überschriften dynamisch anpassen ohne die bei der 
+% Verarbeitung des Dokumentes durch \cls{ltxdoc} applizierten Anpassungen 
+% zu beeinflussen. Die Sternversion von \cs{PrintBackMatter} setzt die 
+% Überschriften mit \cs{addpart}, die Standardvariante via \cs{addsec}.
+%    \begin{macrocode}
+\newcommand*\tud at index@heading{\addsec}
+\IndexPrologue{\tud at index@heading{\indexname}\tud at index@text}
+\GlossaryPrologue{\tud at index@heading{\tud at changes@name}}
+\NewDocumentCommand\PrintBackMatter{s}{%
+  \begingroup%
+    \@ifpackageloaded{bookmark}{\bookmarksetup{startatroot,open=false}}{}%
+    \IfBooleanT{#1}{\renewcommand*\tud at index@heading{\addpart}}%
+    \deftocheading{tdo}{\tud at index@heading{##1}}%
+    \IfBooleanT{#1}{\cleardoublepage}\PrintIndex%
+    \IfBooleanT{#1}{\cleardoublepage}\PrintChanges%
+    \IfBooleanT{#1}{\cleardoublepage}\PrintToDos%
+  \endgroup%
+}
+%    \end{macrocode}
+% \end{macro}^^A\tud at index@heading
+% \end{macro}^^A\PrintBackMatter
+% \begin{macro}{\@docinclude}
+% Damit die Liste der anstehenden Aufgaben bei der Erzeugung der gesamten 
+% Dokumentation des Quelltextes einmalig sowie vollständig und nicht nach jeder
+% Quelldatei einzeln ausgegeben wird, muss \cs{@docinclude} angepasst werden.
+%    \begin{macrocode}
+\patchcmd\@docinclude{%
   \let\@ltxdoc at PrintIndex\PrintIndex
   \let\PrintIndex\relax
   \let\@ltxdoc at PrintChanges\PrintChanges
@@ -1291,7 +1622,7 @@
   \let\@ltxdoc at PrintToDos\PrintToDos
   \let\PrintToDos\relax
 }{}{\tud at patch@wrn{@docinclude}}
-\patchcmd{\@docinclude}{%
+\patchcmd\@docinclude{%
   \let\PrintIndex\@ltxdoc at PrintIndex
   \let\PrintChanges\@ltxdoc at PrintChanges
 }{%
@@ -1301,56 +1632,6 @@
 }{}{\tud at patch@wrn{@docinclude}}
 %    \end{macrocode}
 % \end{macro}^^A \@docinclude
-% \end{macro}^^A \PrintToDos
-% \begin{macro}{\ToDo}
-% \changes{v2.02}{2014/07/25}{neu}^^A
-% \begin{macro}{\@ToDo}
-% \changes{v2.02}{2014/07/25}{neu}^^A
-% Die Befehle für die ToDo-Notizen. Um in der gleichen Nomenklatur wie beim
-% Handbuch bleiben zu können, wird die Randnotizmarke als optionales Argument
-% hinter dem eigentlichen Text angegeben.
-%    \begin{macrocode}
-\newcommand*\ToDo[2][]{%
-  \kernel at ifnextchar[{\@ToDo{#2}}{\@ToDo{#2}[]}%
-}
-\newcommand*\@ToDo{}
-\def\@ToDo#1[#2]{%
-  \ifdefined\tudfinalflag\else%
-    \begingroup%
-      \csuse{phantomsection}%
-      \IfArgIsEmpty{#2}{%
-        \def\tud at reserved{??}%
-      }{%
-        \def\tud at reserved{#2}%
-      }%
-      \endgraf%
-      \hfuzz0.8pt%
-      \leavevmode%
-      \def\@tempa{\raggedleft\fbox{ToDo:\space\tud at reserved\strut}}%
-      \ifdefined\marginnote%
-        \expandafter\marginnote\expandafter{\@tempa}[%
-          \dimexpr-\fboxsep-\fboxrule\relax%
-        ]%
-      \else%
-        \expandafter\marginpar\expandafter{\@tempa}%
-      \fi%
-      \fbox{\parbox{\dimexpr\textwidth-2\fboxsep\relax}{#1\strut}}%
-      \endgraf%
-%    \end{macrocode}
-% Werden mit \cs{DocInclude} mehrere Dateien in das Dokument eingefügt, so 
-% erhält die ToDo-Notiz einen entsprechenden Hinweis.
-%    \begin{macrocode}
-      \let\@tempa\@empty%
-      \ifdefined\currentfile%
-        \def\@tempa{\,--\,\texttt{\currentfile}}%
-      \fi%
-      \addxcontentsline{tdo}{todo}{\tud at reserved\@tempa:\space#1}%
-    \endgroup%
-  \fi%
-}
-%    \end{macrocode}
-% \end{macro}^^A \@ToDo
-% \end{macro}^^A \ToDo
 %
 % \subsection{Schriften und Satzspiegel}
 %
@@ -1360,12 +1641,12 @@
 % für die ausgewählten TypeWriter-Schriften genutzt werden. Damit dies mit dem 
 % Paket \pkg{doc} funktioniert, muss der Befehl \cs{MacroFont} angepasst werden.
 %    \begin{macrocode}
-\AfterPackage{mweights}{%
+\AfterPackage*{mweights}{%
   \CheckCommand*\MacroFont{%
     \fontencoding\encodingdefault%
     \fontfamily\ttdefault%
     \fontseries\mddefault%
-    \fontshape\updefault%
+    \fontshape\shapedefault%
     \small%
   }%
   \renewcommand*\MacroFont{%
@@ -1372,7 +1653,7 @@
     \fontencoding\encodingdefault%
     \fontfamily\ttdefault%
     \fontseries\mdseries at tt%
-    \fontshape\updefault%
+    \fontshape\shapedefault%
     \small%
   }%
   \CheckCommand*\AltMacroFont{%
@@ -1398,6 +1679,14 @@
   }%
 }
 %    \end{macrocode}
+% \end{macro}^^A \AltMacroFont
+% \end{macro}^^A \MacroFont
+%
+% \iffalse
+%</class&body>
+%<*class&option>
+% \fi
+%
 % Wird das Paket \pkg{tudscrfonts} genutzt, erscheinen die TypeWriter-Schriften
 % zur Quelltextdokumentation sowohl für Latin~Modern als auch Roboto etwas zu 
 % schlank. 
@@ -1411,9 +1700,12 @@
   }%
 }
 %    \end{macrocode}
-% \end{macro}^^A \AltMacroFont
-% \end{macro}^^A \MacroFont
 %
+% \iffalse
+%</class&option>
+%<*class&body>
+% \fi
+%
 % Um den zur Verfügung stehenden Platz möglichst effektiv zu nutzen, soll der 
 % Satzspiegel dahingehend aufgeteilt werden, dass für die Darstellung jeder
 % Quelltextzeile genau 80~Zeichen zur Verfügung stehen. Dies ist allerdings 
@@ -1430,17 +1722,19 @@
 % \begin{length}{\textheight}
 % \begin{length}{\textwidth}
 % \begin{length}{\columnsep}
+% \begin{length}{\labelsep}
 % \begin{length}{\marginparsep}
 % \begin{length}{\marginparwidth}
 % \begin{length}{\oddsidemargin}
-% Hiermit wird die Berechnung des Satzspiegels ausgeführt.
+% Hiermit wird der Satzspiegel berechnet, wobei \length{labelsep} als Maß für
+% die Seitenränder sowie den Abstand von Randnotizen und Textkörper dient.
 %    \begin{macrocode}
 \newcommand*\tud at setarea{%
-  \setlength\topmargin{-1in}%
-  \setlength\headheight{0pt}%
-  \setlength\headsep{3em}%
-  \setlength\footskip{1.5\headsep}%
-  \setlength\textheight{\dimexpr\paperheight-2.5\headsep-\footskip\relax}%
+  \tud at setdim\topmargin{-1in}%
+  \tud at setdim\headheight{0pt}%
+  \tud at setdim\headsep{3em}%
+  \tud at setdim\footskip{\headsep}%
+  \tud at setdim\textheight{\paperheight-\headsep*5/2-\footskip*3/2}%
   \@colht=\textheight%
   \@colroom=\textheight%
   \vsize=\textheight%
@@ -1448,23 +1742,21 @@
   \begingroup%
     \MacroFont\selectfont%
     \settowidth\@tempdima{\space}%
-    \setlength\@tempdima{80\@tempdima}%
-%^^A    \addtolength\@tempdima{\dimexpr\MacroIndent+.1\p@\relax}%
-    \addtolength\@tempdima{\MacroIndent}%
+    \tud at setdim\@tempdima{80\@tempdima}%
+    \tud at addtodim\@tempdima{\MacroIndent}%
     \edef\@tempa{%
       \endgroup%
-      \noexpand\setlength\noexpand\textwidth{\the\@tempdima}%
+      \unexpanded{\tud at setdim\textwidth}{\the\@tempdima}%
     }%
   \@tempa%
   \columnwidth=\textwidth%
   \hsize=\columnwidth%
   \linewidth=\hsize%
-  \setlength\columnsep{1em}%
-  \setlength\marginparsep{1em}%
-  \setlength\marginparwidth{%
-    \dimexpr\paperwidth-\textwidth-2\marginparsep\relax%
-  }%
-  \setlength\oddsidemargin{\dimexpr\marginparwidth+\marginparsep-1in\relax}%
+  \tud at setdim\columnsep{1em}%
+  \tud at setdim\labelsep{1em}%
+  \tud at setdim\marginparsep{\labelsep}%
+  \tud at setdim\oddsidemargin{\paperwidth-\textwidth-\labelsep-1in}%
+  \tud at setdim\marginparwidth{\oddsidemargin+1in-\labelsep-\marginparsep}%
 }
 \AtBeginDocument{\tud at setarea}
 %    \end{macrocode}
@@ -1471,6 +1763,7 @@
 % \end{length}^^A \oddsidemargin
 % \end{length}^^A \marginparwidth
 % \end{length}^^A \marginparsep
+% \end{length}^^A \labelsep
 % \end{length}^^A \columnsep
 % \end{length}^^A \textwidth
 % \end{length}^^A \textheight
@@ -1480,13 +1773,35 @@
 % \end{length}^^A \topmargin
 % \end{macro}^^A \tud at setarea
 %
+% Sollte das Paket \pkg{tudscrfonts} nicht geladen worden sein, so wird das
+% Paket \pkg{lmodern} geladen und die fehlenden Befehle zur Schriftauswahl
+% rudimentär definiert.
+%    \begin{macrocode}
+\TUD at UnwindPackage{tudscrfonts}{%
+  \RequirePackage{lmodern}
+  \providecommand*\textcdln[1]{\textsf{#1}}%
+  \providecommand*\textcdrn[1]{\textcdln{#1}}%
+  \providecommand*\textcdsn[1]{\textcdln{#1}}%
+  \providecommand*\textcdbn[1]{\textbf{\textcdln{#1}}}%
+  \providecommand*\textcdxn[1]{\textcdbn{#1}}%
+  \providecommand*\textcdli[1]{\textsl{\textcdln{#1}}}%
+  \providecommand*\textcdri[1]{\textcdli{#1}}%
+  \providecommand*\textcdsi[1]{\textcdli{#1}}%
+  \providecommand*\textcdbi[1]{\textbf{\textcdli{#1}}}%
+  \providecommand*\textcdxi[1]{\textcdbi{#1}}%
+}
+%    \end{macrocode}
+%
 % \subsection{Zusätzliche Markup-Befehle}
 %
 % \begin{macro}{\app}
+% \begin{macro}{\bdl}
 % \begin{macro}{\cls}
 % \begin{macro}{\pkg}
 % \begin{macro}{\opt}
 % \begin{macro}{\val}
+% \begin{macro}{\default}
+% \changes{v2.06o}{2022/07/25}{neu}^^A
 % \begin{macro}{\pgs}
 % \begin{macro}{\env}
 % \begin{macro}{\prm}
@@ -1495,24 +1810,29 @@
 % \changes{v2.05i}{2017/02/23}{neu}^^A
 % \begin{macro}{\file}
 % Zusätzliche Auszeichnungsbefehle.
+% \ToDo{Befehl \cs{notebox}: siehe \file{svg.dtx}}[v2.07]
 %    \begin{macrocode}
 \newrobustcmd*\app[1]{\mbox{\textsl{\textbf{#1}}}}
+\newrobustcmd*\bdl[1]{\mbox{\textsf{\textbf{#1}}}}
 \newrobustcmd*\cls[1]{\mbox{\textsf{\textbf{#1}}}}
 \newrobustcmd*\pkg[1]{\mbox{\textsf{\textbf{#1}}}}
 \newrobustcmd*\opt[1]{\mbox{\texttt{#1}}}
 \newrobustcmd*\val[1]{\mbox{\texttt{#1}}}
+\newrobustcmd*\default[1]{\val{\textit{#1}}}
 \newrobustcmd*\pgs[1]{\mbox{\texttt{#1}}}
 \newrobustcmd*\env[1]{\mbox{\texttt{#1}}}
 \newrobustcmd*\prm[1]{\mbox{\texttt{#1}}}
 \newrobustcmd*\cnt[1]{\mbox{\texttt{#1}}}
 \newrobustcmd*\file[1]{\mbox{\texttt{#1}}}
-\AfterPackage{hyperref}{%
+\AfterPackage*{hyperref}{%
   \pdfstringdefDisableCommands{%
     \let\app\@firstofone%
+    \let\bdl\@firstofone%
     \let\cls\@firstofone%
     \let\pkg\@firstofone%
     \let\opt\@firstofone%
     \let\val\@firstofone%
+    \let\default\@firstofone%
     \let\pgs\@firstofone%
     \let\env\@firstofone%
     \let\prm\@firstofone%
@@ -1525,67 +1845,18 @@
 % \end{macro}^^A \prm
 % \end{macro}^^A \env
 % \end{macro}^^A \pgs
+% \end{macro}^^A \default
 % \end{macro}^^A \val
 % \end{macro}^^A \opt
 % \end{macro}^^A \pkg
 % \end{macro}^^A \cls
+% \end{macro}^^A \bdl
 % \end{macro}^^A \app
 %
-% \subsection{Rückfalloptionen bei fehlenden Paketen}
-%
-% Zum Schluss erfolgen einige Anpassungen mit \cs{AtEndPreamble}, um abhängig 
-% vom Ladezustand einiger Pakete reagieren zu können.
-%    \begin{macrocode}
-\AtEndPreamble{%
-%    \end{macrocode}
-% \begin{macro}{\selectlanguage}
-% \begin{macro}{\glqq}
-% \begin{macro}{\grqq}
-% Etwas Kleinkram für \pkg{babel}\dots
-%    \begin{macrocode}
-  \@ifpackageloaded{babel}{}{%
-    \ClassWarning{\TUD at Class@Name}{Package `babel' not loaded}%
-    \providecommand*\selectlanguage[1]{}%
-    \providecommand*\glqq{}%
-    \providecommand*\grqq{}%
-  }%
-%    \end{macrocode}
-% \end{macro}^^A \grqq
-% \end{macro}^^A \glqq
-% \end{macro}^^A \selectlanguage
-% \begin{macro}{\enquote}
-% \dots und \pkg{csquotes}.
-%    \begin{macrocode}
-  \@ifpackageloaded{csquotes}{}{%
-    \ClassWarning{\TUD at Class@Name}{Package `csquotes' not loaded}%
-    \providecommand\enquote[1]{\emph{#1}}%
-  }%
-%    \end{macrocode}
-% \end{macro}^^A \enquote
-% Sollte das Paket \pkg{tudscrfonts} nicht geladen worden sein, so wird das
-% Paket \pkg{lmodern} geladen und die fehlenden Befehle zur Schriftauswahl
-% rudimentär definiert.
-%    \begin{macrocode}
-  \@ifpackageloaded{tudscrfonts}{}{%
-    \RequirePackage{lmodern}[2009/10/30]%
-    \providecommand*\textcdln[1]{\textsf{#1}}%
-    \providecommand*\textcdrn[1]{\textcdln{#1}}%
-    \providecommand*\textcdsn[1]{\textcdln{#1}}%
-    \providecommand*\textcdbn[1]{\textbf{\textcdln{#1}}}%
-    \providecommand*\textcdxn[1]{\textcdbn{#1}}%
-    \providecommand*\textcdli[1]{\textsl{\textcdln{#1}}}%
-    \providecommand*\textcdri[1]{\textcdli{#1}}%
-    \providecommand*\textcdsi[1]{\textcdli{#1}}%
-    \providecommand*\textcdbi[1]{\textbf{\textcdli{#1}}}%
-    \providecommand*\textcdxi[1]{\textcdbi{#1}}%
-  }%
-}
-%    \end{macrocode}
-%
 % \iffalse
 %</class&body>
 % \fi
 %
-% \Finale
+% \PrintBackMatter
 %
 \endinput

Modified: trunk/Master/texmf-dist/source/latex/tudscr/tudscr-fields.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tudscr/tudscr-fields.dtx	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/source/latex/tudscr/tudscr-fields.dtx	2022-08-09 20:01:54 UTC (rev 64085)
@@ -1,10 +1,10 @@
-% \CheckSum{875}
 % \iffalse meta-comment
+%/GitFileInfo=tudscr-fields.dtx
 %
 %  TUD-Script -- Corporate Design of Technische Universität Dresden
 % ----------------------------------------------------------------------------
 %
-%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2021
+%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2022
 %
 % ----------------------------------------------------------------------------
 %
@@ -23,33 +23,19 @@
 %
 % \fi
 %
-% \CharacterTable
-%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-%   Digits        \0\1\2\3\4\5\6\7\8\9
-%   Exclamation   \!     Double quote  \"     Hash (number) \#
-%   Dollar        \$     Percent       \%     Ampersand     \&
-%   Acute accent  \'     Left paren    \(     Right paren   \)
-%   Asterisk      \*     Plus          \+     Comma         \,
-%   Minus         \-     Point         \.     Solidus       \/
-%   Colon         \:     Semicolon     \;     Less than     \<
-%   Equals        \=     Greater than  \>     Question mark \?
-%   Commercial at \@     Left bracket  \[     Backslash     \\
-%   Right bracket \]     Circumflex    \^     Underscore    \_
-%   Grave accent  \`     Left brace    \{     Vertical bar  \|
-%   Right brace   \}     Tilde         \~}
-%
-% \iffalse
-%%% From File: tudscr-fields.dtx
+% \iffalse ins:batch + dtx:driver
+%<*ins>
+\ifx\documentclass\undefined
+  \input docstrip.tex
+  \ifToplevel{\batchinput{tudscr.ins}}
+\else
+  \let\endbatchfile\relax
+\fi
+\endbatchfile
+%</ins>
 %<*dtx>
-% \fi
-%
-\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
-\ProvidesFile{tudscr-fields.dtx}[2019/08/20 v2.06c TUD-Script\space%
-  (input fields)%
-]
-%
-% \iffalse
+\ProvidesFile{tudscr-fields.dtx}[2022/08/09]
+\RequirePackage{tudscr-gitinfo}
 \documentclass[english,ngerman,xindy]{tudscrdoc}
 \iftutex
   \usepackage{fontspec}
@@ -59,18 +45,11 @@
 \fi
 \usepackage{babel}
 \usepackage{tudscrfonts}
-\KOMAoptions{parskip=half-}
-\usepackage{bookmark}
 \usepackage[babel]{microtype}
 
-\CodelineIndex
-\RecordChanges
-\GetFileInfo{tudscr-fields.dtx}
-\title{\file{\filename}}
-\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
-\date{\fileversion\nobreakspace(\filedate)}
-
+\GitHubBase{\TUDScriptRepository}
 \begin{document}
+  \author{Falk Hanisch\TUDScriptContactTitle}
   \maketitle
   \tableofcontents
   \DocInput{\filename}
@@ -82,6 +61,8 @@
 %
 % \changes{v2.02}{2014/06/23}{Paket \pkg{titlepage} nicht weiter unterstützt}^^A
 %
+%
+%
 % \section{Anwenderbefehle für Eingabefelder}
 %
 % Das \TUDScript-Bundle für das \TUDCD definieren mehrere Felder, welche durch
@@ -95,8 +76,6 @@
 % \pkg{titlepage}-Paket entworfen worden. Um gleichzeitig konsistent zu diesem
 % Paket zu sein, werden für die entsprechenden Felder Alias-Befehle definiert.
 %
-% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
-%
 % \iffalse
 %<*class&!manual>
 % \fi
@@ -106,7 +85,10 @@
 % Hiermit wird der Inhalt des im zweiten (obligatorischen) Argument namentlich 
 % genannten Feldes in die im ersten (optionalen) Argument gegebene Anweisung 
 % expandiert.
-%    \begin{macrocode} 
+% \ToDo{getfield für thesis etc. überarbeiten}[v2.07]
+% \ToDo{getfield nur für festgelegte Felder (Liste) zulassen}[v2.07]
+% \ToDo{Ausgabe von definition und expandierte Version unterscheiden}[v2.07]
+%    \begin{macrocode}
 \newcommand*\getfield[2][\@firstofone]{%
   \begingroup%
     \def\tud at res@b{#1}%
@@ -160,32 +142,25 @@
 % \cs{@department}, \cs{@institute} und \cs{@chair} gespeichert werden.
 %
 % Das optionale Argument wird zur Kompatibilität zur Klasse \cls{tudscrposter}
-% vorgehalten. Wird das Paket geladen, kann mit dem optionalen Argument die 
+% vorgehalten. Wird diese Klasse geladen, kann mit dem optionalen Argument die 
 % Angabe der Struktureinheiten im Fußbereich variiert werden. Dafür werden die 
 % Felder \cs{@facultyfoot}, \cs{@departmentfoot}, \cs{@institutefoot} sowie 
-% \cs{@chairfoot} 
-% definiert.
+% \cs{@chairfoot} definiert.
 %    \begin{macrocode}
 \newcommand*\@faculty{}
 \newcommand*\@department{}
 \newcommand*\@institute{}
 \newcommand*\@chair{}
-%<*book|report|article>
-\newcommand*\faculty[2][]{\tud at head@text at field{faculty}{#2}}
-\newcommand*\department[2][]{\tud at head@text at field{department}{#2}}
-\newcommand*\institute[2][]{\tud at head@text at field{institute}{#2}}
-\newcommand*\chair[2][]{\tud at head@text at field{chair}{#2}}
-%</book|report|article>
 %<*poster>
 \newcommand*\@facultyfoot{}
 \newcommand*\@departmentfoot{}
 \newcommand*\@institutefoot{}
 \newcommand*\@chairfoot{}
-\newcommand*\faculty[2][\@empty]{\tud at foot@line at add{faculty}{#2}{#1}}
-\newcommand*\department[2][\@empty]{\tud at foot@line at add{department}{#2}{#1}}
-\newcommand*\institute[2][\@empty]{\tud at foot@line at add{institute}{#2}{#1}}
-\newcommand*\chair[2][\@empty]{\tud at foot@line at add{chair}{#2}{#1}}
 %</poster>
+\newcommand*\faculty{\@dblarg{\tud at head@text at field{faculty}}}
+\newcommand*\department{\@dblarg{\tud at head@text at field{department}}}
+\newcommand*\institute{\@dblarg{\tud at head@text at field{institute}}}
+\newcommand*\chair{\@dblarg{\tud at head@text at field{chair}}} 
 %    \end{macrocode}
 % \end{field}^^A \@chairfoot
 % \end{field}^^A \@chair
@@ -205,30 +180,21 @@
 % besonderen Ausnahmefällen gestattet.
 %    \begin{macrocode}
 \newcommand*\@extraheadline{}
-\newcommand*\extraheadline[1]{\tud at head@text at field{extraheadline}{#1}}
+\newcommand*\extraheadline[1]{\tud at head@text at field{extraheadline}[]{#1}}
 %    \end{macrocode}
 % \end{field}^^A \@extraheadline
 % \end{macro}^^A \extraheadline
 % \begin{macro}{\tud at head@text at field}
 % \changes{v2.05}{2015/11/26}{neu}^^A
-% Wird ein Feld gesetzt, muss im Zweifel die Kopfzeile neu erstellt werden.
-%    \begin{macrocode}
-\newcommand*\tud at head@text at field[2]{%
-  \csgdef{@#1}{\trim at spaces{#2}}%
-  \global\@tud at head@text at settrue%
-}
-%    \end{macrocode}
-% \end{macro}^^A \tud at head@text at field
-% \begin{macro}{\tud at foot@line at add}
-% \changes{v2.05}{2015/07/06}{neu}^^A
 % \begin{macro}{\tud at foot@line at write}
 % \changes{v2.05}{2015/07/06}{neu}^^A
-% Mit \cs{tud at foot@line at add} wird der Inhalt eines Feldes in \cs{@\meta{Feld}} 
+% Mit \cs{tud at head@text at field} wird der Inhalt eines Feldes in |\@|\meta{Feld} 
 % gespeichert. Der Befehl erwartet als erstes obligatorisches Argument den
-% Feldnamen und als zweites den Inhalt. Entspricht das dritte obligatorische 
-% Argument \cs{@empty}, so wird in \cs{@\meta{Feld}foot} ebenfalls das zweite 
-% Argument abgelegt, andernfalls das dritte.
+% Feldnamen und als letztes den Inhalt. Wird ein Feld gesetzt, muss die 
+% Kopfzeile neu erstellt werden.
 %
+% Das (optionale) Argument dazwischen befüllt |\@|\meta{Feld}|foot| und wird 
+% mit \cs{@dblarg} standardmäßig auf den Inhalt von |\@|\meta{Feld} gesetzt.
 % Damit wird es für Poster möglich, die Befehle \cs{faculty}, \cs{department}, 
 % \cs{institute}, \cs{chair} und \cs{professor} dahingehend zu erweitern, dass 
 % unterschiedliche Angaben für die Kopf- und Fußzeile gemacht werden können.
@@ -237,15 +203,15 @@
 % jedoch zusätzlich das optionale Argument genutzt, so wird dessen Inhalt im 
 % Fußbereich mit \cs{tud at foot@line at write} ausgegeben.
 %    \begin{macrocode}
+\newcommand*\tud at head@text at field{}
+\def\tud at head@text at field#1[#2]#3{%
+  \expandafter\tud at trim@field\csname @#1\endcsname{#3}%
 %<*poster>
-\newcommand*\tud at foot@line at add[3]{%
-  \tud at head@text at field{#1}{#2}%
-  \ifx\@empty#3\relax%
-    \global\csletcs{@#1foot}{@#1}%
-  \else%
-    \csgdef{@#1foot}{\trim at spaces{#3}}%
-  \fi%
+  \expandafter\tud at trim@field\csname @#1foot\endcsname{#2}%
+%</poster>
+  \global\@tud at head@text at settrue%
 }
+%<*poster>
 \newcommand*\tud at foot@line at write[1]{%
   \protected at edef\@tempa{\csuse{@#1foot}}%
   \ifx\@tempa\@empty\else\newline\mbox{\csuse{@#1foot}}\fi%
@@ -253,7 +219,18 @@
 %</poster>
 %    \end{macrocode}
 % \end{macro}^^A \tud at foot@line at write
-% \end{macro}^^A \tud at foot@line at add
+% \end{macro}^^A \tud at head@text at field
+% \begin{macro}{\tud at trim@field}
+% Hiermit werden Feldinhalte gegebenenfalls um unnötige Leerzeichen befreit.
+% \changes{v2.06o}{2022/08/03}{neu}^^A
+%    \begin{macrocode}
+\newcommand*\tud at trim@field[2]{%
+  \def#1{#2}%
+  \trim at spaces@in#1%
+  \global\let#1#1%
+}
+%    \end{macrocode}
+% \end{macro}^^A \tud at trim@field
 % \begin{macro}{\title}
 % \begin{field}{\@title}
 % \begin{field}{\@@title}
@@ -266,7 +243,7 @@
 \newcommand*\@@title{}
 \robustify\@title
 \renewcommand*\title[1]{%
-  \gdef\@title{#1}%
+  \tud at trim@field\@title{#1}%
   \begingroup%
     \let\thanks\@gobble%
     \let\footnote\@gobble%
@@ -287,10 +264,11 @@
 % Die Ausgabe einer zusätzlichen Zeile mit \cs{authormore}\marg{Textzeile}
 % direkt unterhalb der Angabe des Autors auf der Titelseite, wird im Makro
 % \cs{@authormore} gespeichert.
+% \ToDo{Anrede als optionales Argument?}[v2.07]
 %    \begin{macrocode}
 \newcommand*\@@author{}
 \renewcommand*\author[1]{%
-  \gdef\@author{#1}%
+  \tud at trim@field\@author{#1}%
 %    \end{macrocode}
 % Das Feld \cs{@@author} soll lediglich die Autoren ohne weitere Anmerkungen 
 % enthalten. Deshalb werden die gewöhnlichen Formatierungsbefehle des Titels
@@ -327,6 +305,9 @@
       \expandafter\@tempb##1##2\@nil%
     }%
     \protected at edef\@@author{#1}%
+%    \end{macrocode}
+% Zuletzt werden alle eingefügten \cs{@tempc} entfernt.
+%    \begin{macrocode}
     \@tempa{\@@author}{ \@tempc }%
     \@tempa{\@@author}{\@tempc }%
     \@tempa{\@@author}{ \@tempc}%
@@ -335,7 +316,7 @@
   \endgroup%
 }
 \newcommand*\@authormore{}
-\newrobustcmd*\authormore[1]{\gdef\@authormore{#1}\ignorespaces}
+\newrobustcmd*\authormore[1]{\tud at trim@field\@authormore{#1}}
 %    \end{macrocode}
 % \end{field}^^A \@authormore
 % \end{macro}^^A \authormore
@@ -352,18 +333,23 @@
 % \changes{v2.05}{2016/07/09}{neu}^^A
 %    \begin{macrocode}
 \newcommand*\@emailaddress{}
-\newrobustcmd*\emailaddress{%
-  \kernel at ifstar{\tud at emailaddress@simple}{\tud at emailaddress@hyper}%
+\newrobustcmd*\emailaddress[2][]{%
+  \kernel at ifstar%
+    {\tud at emailaddress@simple{#2}}%
+    {\tud at emailaddress@hyper[{#1}]{#2}}%
 }
-\newrobustcmd*\tud at emailaddress@simple[1]{\gdef\@emailaddress{#1}}
-\newrobustcmd*\tud at emailaddress@hyper[2][]{\gdef\@emailaddress{#2}}
+\newrobustcmd*\tud at emailaddress@simple[1]{\tud at trim@field\@emailaddress{#1}}
+\newrobustcmd*\tud at emailaddress@hyper[2][]{\tud at trim@field\@emailaddress{#2}}
 \AfterPackage{hyperref}{%
   \renewrobustcmd*\tud at emailaddress@hyper[2][hidelinks]{%
-    \gdef\@emailaddress{%
+    \tud at trim@field\@emailaddress{#2}%
+    \xdef\@emailaddress{%
       \begingroup%
-        \urlstyle{same}%
-        \hypersetup{#1}%
-        \href{mailto:#2}{\nolinkurl{#2}}%
+        \noexpand\urlstyle{same}%
+        \unexpanded{\hypersetup{#1}}%
+        \noexpand\href%
+          {mailto:\expandonce\@emailaddress}%
+          {\noexpand\nolinkurl{\expandonce\@emailaddress}}%
       \endgroup%
     }%
   }%
@@ -379,7 +365,7 @@
 % \cs{@course} gespeichert.
 %    \begin{macrocode}
 \newcommand*\@course{}
-\newrobustcmd*\course[1]{\gdef\@course{#1}\ignorespaces}
+\newrobustcmd*\course[1]{\tud at trim@field\@course{#1}}
 %    \end{macrocode}
 % \end{field}^^A \@course
 % \end{macro}^^A \course
@@ -391,7 +377,7 @@
 % wird im Makro \cs{@discipline} gespeichert.
 %    \begin{macrocode}
 \newcommand*\@discipline{}
-\newrobustcmd*\discipline[1]{\gdef\@discipline{#1}\ignorespaces}
+\newrobustcmd*\discipline[1]{\tud at trim@field\@discipline{#1}}
 %    \end{macrocode}
 % \end{field}^^A \@discipline
 % \end{macro}^^A \discipline
@@ -406,9 +392,7 @@
 % \cs{@matriculationid} gespeichert.
 %    \begin{macrocode}
 \newcommand*\@matriculationnumber{}
-\newrobustcmd*\matriculationnumber[1]{%
-  \gdef\@matriculationnumber{#1}\ignorespaces%
-}
+\newrobustcmd*\matriculationnumber[1]{\tud at trim@field\@matriculationnumber{#1}}
 %    \end{macrocode}
 % \end{field}^^A \@matriculationnumber
 % \end{macro}^^A \matriculationnumber
@@ -418,7 +402,7 @@
 % gespeichert.
 %    \begin{macrocode}
 \newcommand*\@matriculationyear{}
-\newrobustcmd*\matriculationyear[1]{\gdef\@matriculationyear{#1}\ignorespaces}
+\newrobustcmd*\matriculationyear[1]{\tud at trim@field\@matriculationyear{#1}}
 %    \end{macrocode}
 % \end{field}^^A \@matriculationyear
 % \end{macro}^^A \matriculationyear
@@ -427,7 +411,7 @@
 % Der Geburtsort für den Titel wird in \cs{@placeofbirth} gespeichert.
 %    \begin{macrocode}
 \newcommand*\@placeofbirth{}
-\newrobustcmd*\placeofbirth[1]{\gdef\@placeofbirth{#1}\ignorespaces}
+\newrobustcmd*\placeofbirth[1]{\tud at trim@field\@placeofbirth{#1}}
 %    \end{macrocode}
 % \end{field}^^A \@placeofbirth
 % \end{macro}^^A \placeofbirth
@@ -438,84 +422,109 @@
 % \changes{v2.02}{2014/11/06}{\cs{protected at xdef} genutzt}^^A
 % \begin{macro}{\subject}
 % \begin{field}{\@subject}
-% \begin{macro}{\tud at thesis@do}
-% \begin{macro}{\tud at thesis@@do}
-% \begin{macro}{\tud at thanks}
+% \begin{field}{\@@subject}
+% \begin{macro}{\tud at thesis@evaluate}
 % Art bzw. Typ der Abschlussarbeit kann \cs{thesis}\marg{Abschlussarbeit}
 % angegeben werden und wird im Makro \cs{@thesis} gespeichert. Alternativ
 % dazu kann auch der Befehl \cs{subject} verwendet werden. Mit dem Befehl
-% \cs{tud at thesis@do} wird in den Feldern \cs{@thesis} respektive \cs{@subject} 
-% nach bestimmten Schlagwörtern für Abschlussarbeiten o.\,ä. gesucht. Wird 
-% eines dieser Wörter gefunden, wird der entsprechende Bezeichner für dieses
-% Feld gesetzt. Zusätzlich wird durch \cs{tud at thesis@@do} dafür gesorgt, dass
-% gegebenenfalls der Inhalt von \cs{@subject} in \cs{@thesis} verschoben und
-% entsprechend die Option \opt{subjectthesis} gesetzt wird. In \cs{@@thesis}
-% wird die angegebene Abschlussarbeit ohne etwaige Fußnoten gespeichert.
+% \cs{tud at thesis@evaluate} wird in den Feldern \cs{@thesis} respektive 
+% \cs{@subject} nach bestimmten Schlagwörtern für Abschlussarbeiten o.\,ä. 
+% gesucht. Bei einem Treffer wird der entsprechende Bezeichner für dieses Feld
+% gesetzt. In \cs{@@subject} beziehungsweise \cs{@@thesis} wird der gegebene 
+% oder substituierte Inhalt ohne etwaige Fußnoten gespeichert.
+% \ToDo{Option thesis}[v2.07]
 %    \begin{macrocode}
 \newcommand*\@thesis{}
 \newcommand*\@@thesis{}
-\newcommand*\thesis[1]{\tud at thesis@do{thesis}{#1}}
-\renewcommand*\subject[1]{\tud at thesis@do{subject}{#1}}
-\newcommand*\tud at thanks{}
-\newcommand*\tud at thesis@do[2]{%
+\newcommand*\thesis[1]{\tud at thesis@evaluate{thesis}{#1}}
+\CheckCommand*\subject[1]{\gdef\@subject{#1}}
+\newcommand*\@@subject{}
+\renewcommand*\subject[1]{\tud at thesis@evaluate{subject}{#1}}
+\newcommand*\tud at thesis@evaluate[2]{%
   \begingroup%
+    \expandafter\tud at trim@field\csname @#1\endcsname{#2}%
 %    \end{macrocode}
-% Hier das gleiche wie an anderer Stelle auch schon. Der Inhalt einer eventuell
-% vorhandenen Fußnote wird gesichert
+% Der Inhalt des Befehls \cs{thanks} wird durch das Setzen einer temporären Box 
+% in ein temporäres Makro gesichert. Nach der Verarbeitung des Feldinhalts und
+% der möglichen Substitution durch den gewünschten Bezeichner wird \cs{thanks}
+% wieder hinzugefügt.
 %    \begin{macrocode}
-    \global\let\tud at thanks\relax%
-    \def\thanks##1{\gdef\tud at thanks{##1}}%
+    \let\tud at res@c\@empty%
+    \def\thanks##1{\listgadd\tud at res@c{##1}}%
     \let\footnote\thanks%
     \sbox\z@{#2}%
     \let\thanks\@gobble%
     \let\footnote\@gobble%
-    \tud at lowerstring{\@tempa}{#2}%
-    \ifstr{#1}{thesis}{\protected at xdef\@@thesis{#2}}{}%
-    \protected at edef\@tempa{%
+    \protected at csxdef{@@#1}{\trim at spaces{#2}}%
+    \letcs\tud at res@a{@@#1}%
+    \TUD at set@numkey{thesis}{@tempa}{%
+      {habil}{0},
+      {diss}{1},{doctoral}{1},{phd}{1},
+      {diploma}{2},
+      {master}{3},
+      {bachelor}{4},
+      {student}{5},
+      {evidence}{6},
+      {project}{7},
+      {seminar}{8},
+      {term}{9},
+      {research}{10},
+      {log}{11},
+      {report}{12},
+      {internship}{13}
+    }{\tud at res@a}%
+    \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+      \ifcase\@tempa\relax% habil
+        \def\tud at res@a{\habilitationname}%
+      \or% diss
+        \def\tud at res@a{\dissertationname}%
+      \or% diploma
+        \def\tud at res@a{\diplomathesisname}%
+      \or% master
+        \def\tud at res@a{\masterthesisname}%
+      \or% bachelor
+        \def\tud at res@a{\bachelorthesisname}%
+      \or% student
+        \def\tud at res@a{\studentthesisname}%
+      \or% evidence
+        \def\tud at res@a{\studentresearchname}%
+      \or% project
+        \def\tud at res@a{\projectpapername}%
+      \or% seminar
+        \def\tud at res@a{\seminarpapername}%
+      \or% term
+        \def\tud at res@a{\termpapername}%
+      \or% research
+        \def\tud at res@a{\researchname}%
+      \or% log
+        \def\tud at res@a{\logname}%
+      \or% report
+        \def\tud at res@a{\reportname}%
+      \or% internship
+        \def\tud at res@a{\internshipname}%
+      \else%
+        \FamilyKeyStateUnknownValue%
+      \fi%
+    \fi%
+    \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+      \global\cslet{@@#1}\tud at res@a%
+      \tud at if@strequal{#1}{subject}{%
+        \ifx\@@thesis\@empty\global\let\@@thesis\@@subject\fi%
+      }{}%
+      \def\do##1{\appto\tud at res@a{\thanks{##1}}}%
+      \dolistloop{\tud at res@c}%
+    \fi%
+    \edef\tud at res@a{%
       \endgroup%
-      \def\noexpand\@tempa{\@tempa}%
+      \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+        \noexpand\csgdef{@#1}{\expandonce\tud at res@a}%
+      \fi%
     }%
-  \@tempa%
-  \ifstr{\@tempa}{diss}{\tud at thesis@@do{#1}{\dissertationname}}{%
-  \ifstr{\@tempa}{doctoral}{\tud at thesis@@do{#1}{\dissertationname}}{%
-  \ifstr{\@tempa}{phd}{\tud at thesis@@do{#1}{\dissertationname}}{%
-  \ifstr{\@tempa}{diploma}{\tud at thesis@@do{#1}{\diplomathesisname}}{%
-  \ifstr{\@tempa}{master}{\tud at thesis@@do{#1}{\masterthesisname}}{%
-  \ifstr{\@tempa}{bachelor}{\tud at thesis@@do{#1}{\bachelorthesisname}}{%
-  \ifstr{\@tempa}{student}{\tud at thesis@@do{#1}{\studentthesisname}}{%
-  \ifstr{\@tempa}{evidence}{\tud at thesis@@do{#1}{\studentresearchname}}{%
-  \ifstr{\@tempa}{project}{\tud at thesis@@do{#1}{\projectpapername}}{%
-  \ifstr{\@tempa}{seminar}{\tud at thesis@@do{#1}{\seminarpapername}}{%
-  \ifstr{\@tempa}{term}{\tud at thesis@@do{#1}{\termpapername}}{%
-  \ifstr{\@tempa}{research}{\tud at thesis@@do{#1}{\researchname}}{%
-  \ifstr{\@tempa}{log}{\tud at thesis@@do{#1}{\logname}}{%
-  \ifstr{\@tempa}{report}{\tud at thesis@@do{#1}{\reportname}}{%
-  \ifstr{\@tempa}{internship}{\tud at thesis@@do{#1}{\internshipname}}{%
-    \csdef{@#1}{#2}%
-  }}}}}}}}}}}}}}}%
+  \tud at res@a%
 }
-\newcommand*\tud at thesis@@do[2]{%
-  \ifstr{#1}{subject}{%
-    \ifx\@thesis\@empty\else%
-      \ClassWarning{\TUD at Class@Name}{%
-        Field `thesis' is overwritten by `subject'%
-      }%
-    \fi%
-    \TUD at key@preset{subjectthesis}{true}%
-  }{%
-    \TUD at key@preset{subjectthesis}{false}%
-  }%
-  \ifx\tud at thanks\relax%
-    \gdef\@thesis{#2}%
-  \else%
-    \protected at xdef\@thesis{\noexpand#2\noexpand\thanks{\tud at thanks}}%
-  \fi%
-  \protected at xdef\@@thesis{\trim at spaces{#2}}%
-}
 %    \end{macrocode}
-% \end{macro}^^A \tud at thanks
-% \end{macro}^^A \tud at thesis@@do
-% \end{macro}^^A \tud at thesis@do
+% \end{macro}^^A \tud at thesis@evaluate
+% \end{field}^^A \@@subject
 % \end{field}^^A \@subject
 % \end{macro}^^A \subject
 % \end{field}^^A \@@thesis
@@ -536,9 +545,8 @@
 \newcommand*\@graduation{}
 \newcommand*\@graduationabbreviation{}
 \newcommand*\graduation[2][]{%
-  \gdef\@graduationabbreviation{}%
-  \ifxblank{#1}{}{\gdef\@graduationabbreviation{(#1)}}%
-  \gdef\@graduation{#2}%
+  \tud at trim@field\@graduationabbreviation{#1}%
+  \tud at trim@field\@graduation{#2}%
 }
 %    \end{macrocode}
 % \end{field}^^A \@graduationabbreviation
@@ -558,11 +566,11 @@
 %    \begin{macrocode}
 %<*book|report|article>
 \newcommand*\@professor{}
-\newcommand*\professor[1]{\gdef\@professor{#1}}
+\newcommand*\professor[1]{\tud at trim@field\@professor{#1}}
 %</book|report|article>
 %<*poster>
 \newcommand*\@professorfoot{}
-\newcommand*\professor[1]{\gdef\@professorfoot{#1}}
+\newcommand*\professor[1]{\tud at trim@field\@professorfoot{#1}}
 %</poster>
 %    \end{macrocode}
 % \end{field}^^A \@professorfoot
@@ -578,7 +586,7 @@
 %    \begin{macrocode}
 %<*book|report|article>
 \newcommand*\@supervisor{}
-\newcommand*\supervisor[1]{\gdef\@supervisor{#1}}
+\newcommand*\supervisor[1]{\tud at trim@field\@supervisor{#1}}
 %</book|report|article>
 %<*poster>
 \newcommand*\supervisor[1]{}
@@ -593,7 +601,7 @@
 %
 % \begin{macro}{\supporter}
 % \changes{v2.02}{2014/05/16}{erzeugter Eintrag der Betreuer mit
-%   \cs{supervisor} für Selbstständigkeitserklärung verworfen}^^A
+%   \cs{supporter} für Selbstständigkeitserklärung verworfen}^^A
 % \begin{field}{\@supporter}
 % Diese Feld ist für die Hilfesteller bei der Anfertigung der Abschlussarbeit,
 % welche auf der Selbstständigkeitserklärung aufgeführt werden. Mehrere 
@@ -600,7 +608,7 @@
 % Hilfesteller werden durch \cs{and} voneinander getrennt.
 %    \begin{macrocode}
 \newcommand*\@supporter{}
-\newcommand*\supporter[1]{\gdef\@supporter{#1}}
+\newcommand*\supporter[1]{\tud at trim@field\@supporter{#1}}
 %    \end{macrocode}
 % \end{field}^^A \@supporter
 % \end{macro}^^A \supporter
@@ -609,7 +617,7 @@
 % Angabe einer externen Firma, wird im Makro \cs{@company} gespeichert.
 %    \begin{macrocode}
 \newcommand*\@company{}
-\newcommand*\company[1]{\gdef\@company{#1}}
+\newcommand*\company[1]{\tud at trim@field\@company{#1}}
 %    \end{macrocode}
 % \end{field}^^A \@company
 % \end{macro}^^A \company
@@ -619,7 +627,7 @@
 % Mehrere Gutachter werden durch \cs{and} getrennt.
 %    \begin{macrocode}
 \newcommand*\@referee{}
-\newcommand*\referee[1]{\gdef\@referee{#1}}
+\newcommand*\referee[1]{\tud at trim@field\@referee{#1}}
 %    \end{macrocode}
 % \end{field}^^A \@referee
 % \end{macro}^^A \referee
@@ -629,19 +637,19 @@
 % gespeichert. Mehrere Fachreferenten werden durch \cs{and} getrennt.
 %    \begin{macrocode}
 \newcommand*\@advisor{}
-\newcommand*\advisor[1]{\gdef\@advisor{#1}}
+\newcommand*\advisor[1]{\tud at trim@field\@advisor{#1}}
 %    \end{macrocode}
 % \end{field}^^A \@advisor
 % \end{macro}^^A \advisor
-% \begin{length}{\tud at len@signatureskip}
+% \begin{length}{\tud at glue@signaturevskip}
 % \changes{v2.04}{2015/05/06}{neu}^^A
 % Für alle Formatvorlagen, welche eine Unterschriftenzeile bereitstellen, wird 
 % ein einheitlicher Abstand verwendet.
 %    \begin{macrocode}
-\newlength\tud at len@signatureskip
-\setlength\tud at len@signatureskip{8ex plus 6ex minus 6ex}
+\tud at newglue\tud at glue@signaturevskip
+\tud at setglue\tud at glue@signaturevskip{8ex plus 6ex minus 6ex}
 %    \end{macrocode}
-% \end{length}^^A \tud at len@signatureskip
+% \end{length}^^A \tud at glue@signaturevskip
 % \begin{macro}{\confirmationclosing}
 % \begin{field}{\@confirmationclosing}
 % Als Abschluss der Selbstständigkeitserklärung für Ort und Unterschrift.
@@ -652,13 +660,13 @@
     \medskip\noindent%
     \ifx\@place\@empty\else\@place,\nobreakspace\fi\@date%
   \fi%
-  \vskip\tud at len@signatureskip\noindent%
+  \vskip\tud at glue@signaturevskip\noindent%
   \begingroup%
     \let\and\hfil%
     \@@author\hfil%
   \endgroup%
 }
-\newcommand*\confirmationclosing[1]{\gdef\@confirmationclosing{#1}}
+\newcommand*\confirmationclosing[1]{\tud at trim@field\@confirmationclosing{#1}}
 %    \end{macrocode}
 % \end{field}^^A \@confirmationclosing
 % \end{macro}^^A \confirmationclosing
@@ -669,7 +677,7 @@
 % \enquote{Dresden} gesetzt.
 %    \begin{macrocode}
 \newcommand*\@place{Dresden}
-\newcommand*\place[1]{\gdef\@place{#1}}
+\newcommand*\place[1]{\tud at trim@field\@place{#1}}
 %    \end{macrocode}
 % \end{field}^^A \@place
 % \end{macro}^^A \place
@@ -678,12 +686,24 @@
 %</book|report|article>
 % \fi
 %
+% \begin{macro}{\subtitle}
+% \begin{macro}{\@subtitle}
+% \begin{macro}{\publishers}
+% \begin{macro}{\@publishers}
 % \begin{macro}{\publisher}
-% Kleine Korrektur für \KOMAScript, der Befehl sollte im Singular stehen.
+% Die Felder von \KOMAScript werden ebenfalls behandelt.
 %    \begin{macrocode}
+\CheckCommand*\subtitle[1]{\gdef\@subtitle{#1}}
+\renewcommand*\subtitle[1]{\tud at trim@field\@subtitle{#1}}
+\CheckCommand\publishers[1]{\gdef\@publishers{#1}}%
+\renewcommand*\publishers[1]{\tud at trim@field\@publishers{#1}}
 \providecommand*\publisher[1]{\publishers{#1}}
 %    \end{macrocode}
 % \end{macro}^^A \publisher
+% \end{macro}^^A \@publishers
+% \end{macro}^^A \publishers
+% \end{macro}^^A \@subtitle
+% \end{macro}^^A \subtitle
 %
 % \iffalse
 %<*poster>
@@ -698,20 +718,24 @@
 % \begin{macro}{\tud at webpage@hyper}
 % \changes{v2.05}{2016/07/09}{neu}^^A
 % Im Fußbereich eines Posters kann zusätzlich eine Web-Seite angegeben werden.
+% \ToDo{auch für notice in tudscrsupervisor}[v2.07]
 %    \begin{macrocode}
 \newcommand*\@webpage{}
-\newrobustcmd*\webpage{%
-  \kernel at ifstar{\tud at webpage@simple}{\tud at webpage@hyper}%
+\newrobustcmd*\webpage[2][]{%
+  \kernel at ifstar%
+    {\tud at webpage@simple{#2}}%
+    {\tud at webpage@hyper[{#1}]{#2}}%
 }
-\newrobustcmd*\tud at webpage@simple[1]{\gdef\@webpage{#1}}
-\newrobustcmd*\tud at webpage@hyper[2][]{\gdef\@webpage{#2}}
+\newrobustcmd*\tud at webpage@simple[1]{\tud at trim@field\@webpage{#1}}
+\newrobustcmd*\tud at webpage@hyper[2][]{\tud at trim@field\@webpage{#2}}
 \AfterPackage{hyperref}{%
   \renewrobustcmd*\tud at webpage@hyper[2][hidelinks]{%
-    \gdef\@webpage{%
+    \tud at trim@field\@webpage{#2}%
+    \xdef\@webpage{%
       \begingroup%
-        \urlstyle{same}%
-        \hypersetup{#1}%
-        \url{#2}%
+        \noexpand\urlstyle{same}%
+        \unexpanded{\hypersetup{#1}}%
+        \noexpand\url{\expandonce\@webpage}%
       \endgroup%
     }%
   }%
@@ -736,6 +760,11 @@
 % geladen sein, so verwendet der Befehl die Schnittstelle von \pkg{datetime2},
 % welches nur ein spezielles Datenformat als Eingabe akzeptiert. Wird keines 
 % der beiden Pakete verwendet, wird das Argument direkt durchgereicht.
+% \ToDo{^^A
+%   direkt auf datetime2 matchen? was, wenn beide Pakete geladen?^^A
+%   \cs{localedate} von \pkg{babel} gibt es auch noch...
+% }[v2.07]
+% \ToDo{Angabe eines leeren Datums ermöglichen: gh/55}[v2.07]
 %    \begin{macrocode}
 \TUD at UnwindPackage{isodate}{%
   \@ifpackageloaded{datetime2}{%
@@ -758,9 +787,10 @@
   \ifx\today#2\relax%
     \gdef#1{#2}%
   \else%
-    \ifxblank{#2}%
-      {\gdef#1{}}%
-      {\gdef#1{\printdate{#2}}}%
+    \tud at trim@field#1{#2}%
+    \tud at if@strblank{#1}%
+      {}%
+      {\xdef#1{\noexpand\printdate{\expandonce#1}}}%
   \fi%
 }
 %    \end{macrocode}
@@ -865,12 +895,14 @@
 %    \begin{macrocode}
 \newcommand*\tud at date@print{%
   \ifx\@date\@empty\else%
+    \trim at spaces@in\@beforedate%
     \ifx\@beforedate\@empty\else%
-      \expandafter\trim at spaces@noexp\expandafter{\@beforedate}\nobreakspace%
+      \@beforedate\nobreakspace%
     \fi%
     \@date%
+    \trim at spaces@in\@afterdate%
     \ifx\@afterdate\@empty\else%
-      \nobreakspace\expandafter\trim at spaces@noexp\expandafter{\@afterdate}%
+      \nobreakspace\@afterdate%
     \fi%
   \fi%
 }
@@ -897,9 +929,7 @@
 % gespeichert.
 %    \begin{macrocode}
 \newcommand*\@dateofbirth{}
-\newrobustcmd*\dateofbirth[1]{%
-  \tud at printdate{\@dateofbirth}{#1}\ignorespaces%
-}
+\newrobustcmd*\dateofbirth[1]{\tud at printdate{\@dateofbirth}{#1}}
 %    \end{macrocode}
 % \end{field}^^A \@dateofbirth
 % \end{macro}^^A \dateofbirth
@@ -910,10 +940,7 @@
 %<*package&supervisor|class&manual>
 % \fi
 %
-% \subsection{%
-%   Felder für die Klasse \cls{tudscrposter}%
-%   und das Paket \pkg{tudscrsupervisor}%
-% }
+% \subsection{Felder für \cls{tudscrposter} und \pkg{tudscrsupervisor}}
 %
 % Die Klasse \cls{tudscrposter} und das Paket \pkg{tudscrsupervisor} stellen 
 % einige weitere Felder bereit bzw. erweitern deren Funktionalitäten.
@@ -924,21 +951,18 @@
 % im Makro \cs{@chairman} gespeichert.
 %    \begin{macrocode}
 \newcommand*\@chairman{}
-\newcommand*\chairman[1]{\gdef\@chairman{#1}}
+\newcommand*\chairman[1]{\tud at trim@field\@chairman{#1}}
 %    \end{macrocode}
 % \end{field}^^A \@chairman
 % \end{macro}^^A \chairman
 % \begin{macro}{\grade}
 % \begin{field}{\@grade}
-% \begin{field}{\@headline}
 % Die Befehle dienen zum Abspeichern der entsprechenden Parameter innerhalb
 % der neu definierten Umgebungen aus dem Paket \pkg{tudscrsupervisor}.
 %    \begin{macrocode}
 \newcommand*\@grade{}
-\newcommand*\grade[1]{\gdef\@grade{#1}}
-\newcommand*\@headline{}
+\newcommand*\grade[1]{\tud at trim@field\@grade{#1}}
 %    \end{macrocode}
-% \end{field}^^A \@headline
 % \end{field}^^A \@grade
 % \end{macro}^^A \grade
 % \begin{macro}{\issuedate}
@@ -994,16 +1018,16 @@
 % eine Telefonnummer und die E"~Mail-Adresse hinzugefügen.
 %    \begin{macrocode}
 \newcommand*\@contactperson{}
-\newcommand*\contactperson[1]{\gdef\@contactperson{#1}}
+\newcommand*\contactperson[1]{\tud at trim@field\@contactperson{#1}}
 %<*poster>
 \let\supervisor\contactperson
 %</poster>
 \newcommand*\@office{}
-\newrobustcmd*\office[1]{\gdef\@office{#1}}
+\newrobustcmd*\office[1]{\tud at trim@field\@office{#1}}
 \newcommand*\@telephone{}
-\newrobustcmd*\telephone[1]{\gdef\@telephone{#1}}
+\newrobustcmd*\telephone[1]{\tud at trim@field\@telephone{#1}}
 \newcommand*\@telefax{}
-\newrobustcmd*\telefax[1]{\gdef\@telefax{#1}}
+\newrobustcmd*\telefax[1]{\tud at trim@field\@telefax{#1}}
 %    \end{macrocode}
 % \end{field}^^A \@telefax
 % \end{macro}^^A \telefax
@@ -1025,6 +1049,36 @@
 % Einige Felder sind darauf ausgelegt, dass deren kommagetrennte Inhalte 
 % einzeln abgearbeitet und ausgewertet werden können. Die folgenden Makros 
 % übernehmen diese Aufgabe.
+%
+% \begin{macro}{\tud at if@field at unset}
+% \changes{v2.06o}{2022/08/02}{neu}^^A
+% Insbesondere das Autorenfeld (\cs{@author}) benötigt eine Sonderbehandlung, 
+% da dieses nicht leer sondern mit einer Warnung initialisiert ist. Mit diesem
+% Makro kann darauf geprüft werden, ob innerhalb eines Feldes ein Befehl 
+% enthalten ist, welcher mit \cs{@latex at ...} beginnt, was normalerweise für 
+% generische Fehler oder Warnungen genutzt wird.
+%    \begin{macrocode}
+\newcommand*\tud at if@field at unset[1]{%
+  \begingroup%
+    \edef\tud at res@a{%
+      \def\noexpand\tud at res@a####1\string\@latex@####2\noexpand\@nil{%
+        \noexpand\IfArgIsEmpty{####2}%
+        \unexpanded{\@tud at res@swafalse\@tud at res@swatrue}%
+      }%
+      \noexpand\tud at res@a%
+        \expandafter\strip at prefix\meaning#1%
+        \string\@latex@\noexpand\@nil%
+    }%
+    \tud at res@a%
+    \if at tud@res at swa%
+      \aftergroup\@firstoftwo%
+    \else%
+      \aftergroup\@secondoftwo%
+    \fi%
+  \endgroup%
+}
+%    \end{macrocode}
+% \end{macro}^^A \tud at if@field at unset
 % \begin{macro}{\tud at multiple@split}
 % \begin{macro}{\tud at multiple@@split}
 % \begin{macro}{\tud at multiple@@@split}
@@ -1037,8 +1091,8 @@
 % ist dabei das Feld mit dem auszuwertenden Inhalt.
 %
 % Dafür müssen für jedes so auszuwertende Feld zum einen zum Zeitpunkt der 
-% Ausgabe das entsprechende Makro \cs{tud at split\meta{Feld}} und zum anderen 
-% eine Liste der auszuwertenden lokalen Angaben \cs{tud at split\meta{Feld}@list} 
+% Ausgabe das entsprechende Makro |\tud at split|\meta{Feld} und zum anderen 
+% eine Liste der auszuwertenden lokalen Angaben |\tud at split|\meta{Feld}|@list| 
 % definiert sein. Momentan werden die beiden Felder \cs{@author} und~-- für die 
 % Klasse \cls{tudscrposter} sowie das Paket Pakete \pkg{tudscrsupervisor}~--
 % \cs{@contactperson} zur Angabe zusätzlicher Informationen unterstützt.
@@ -1047,11 +1101,9 @@
 \newcommand*\tud at multiple@split[1]{%
 %    \end{macrocode}
 % Sollte ein Feld verwendet werden, welches initial eine Fehlermeldung enthält, 
-% so die vorhandene Warnung ausgegeben und danach das Feld als leer definiert.
+% wird die vorhandene Warnung ausgegeben und danach das Feld als leer definiert.
 %    \begin{macrocode}
-  \expandafter\ifpatchable\expandafter{\csname#1\endcsname}{%
-    \@latex at warning@no at line%
-  }{%
+  \expandafter\tud at if@field at unset\expandafter{\csname #1\endcsname}{%
     \csuse{#1}\csgdef{#1}{}%
   }{}%
 %    \end{macrocode}
@@ -1059,7 +1111,7 @@
 % \cs{and} als Separator für die einzelnen Argumente dient. Mit den beiden
 % freigestellten Argumenten kann das Makro zur eigentlichen Ausgabe aufgerufen
 % werden, welches aus dem obligatorischen Argument |#1| konstruiert wird 
-% (\cs{tud at split\meta{Feld}}). An dieses wird der jeweils aktuelle Autor 
+% (|\tud at split|\meta{Feld}). An dieses wird der jeweils aktuelle Autor 
 % im ersten Argument und die restlichen im zweiten Argument übergeben.
 %    \begin{macrocode}
   \def\tud at multiple@@split##1\and##2\relax{%
@@ -1073,7 +1125,7 @@
 % Das Feld wird mit \cs{and} terminiert, um der Definition von
 % \cs{tud at multiple@@split} in jedem Fall zu entsprechen.
 %    \begin{macrocode}
-    \edef\@tempa{\csname#1\endcsname\and}%
+    \edef\@tempa{\csname #1\endcsname\and}%
   \expandafter\endgroup%
   \expandafter\tud at multiple@@split\@tempa\relax%
 }
@@ -1083,14 +1135,14 @@
 % zweiten Argumentes ausgeführt und \cs{tud at multiple@@split} ein weiteres Mal
 % aufgerufen, um so sequentiell alle Autoren abzuarbeiten. Dafür muss 
 % \cs{tud at multiple@@@split} innerhalb des verarbeitenden Makro
-% (\cs{tud at split\meta{Feld}}) aufgerufen werden.
+% (|\tud at split|\meta{Feld}) aufgerufen werden.
 %    \begin{macrocode}
 \newcommand*\tud at multiple@@@split[2]{%
-  \ifx\relax#1\relax%
+  \IfArgIsEmpty{#1}{%
     \let\@tempb\relax%
-  \else%
+  }{%
     \def\@tempb{#2\tud at multiple@@split#1\relax}%
-  \fi%
+  }%
   \@tempb%
 }
 %    \end{macrocode}
@@ -1109,11 +1161,18 @@
 % des zweiten Argumentes mit \cs{sbox}\cs{z@}\marg{\#2} in eine Box expandiert.
 % Der Teilinhalt entspricht dabei dem aktuellen Teil des Feldes vor dem
 % nächsten \cs{and}. Damit werden die ggf. angegebenen lokalen Felder gesetzt,
-% welche in \cs{tud at split\meta{Feld}@list} aufgelistet sind ohne eine Ausgabe
+% welche in |\tud at split|\meta{Feld}|@list| aufgelistet sind ohne eine Ausgabe
 % zu erzeugen. 
 %    \begin{macrocode}
 \newcommand*\tud at multiple@fields at store[2]{%
-  \def\@tempa##1{\ifcsdef{@##1}{\tud at cs@store{@##1}}{}}%
+  \def\@tempa##1{%
+    \ifcsdef{@##1}{\tud at cs@store{@##1}}{}%
+    \ifcsdef{##1}{%
+      \tud at cs@store{##1}%
+      \expandafter\xapptocmd\csname ##1\endcsname{\ignorespaces}%
+        {}{\tud at patch@wrn##1}%
+    }{}%
+  }%
   \letcs\@tempb{tud at split#1 at list}%
   \let\and\relax%
   \expandafter\forcsvlist\expandafter\@tempa\expandafter{\@tempb}%
@@ -1133,6 +1192,7 @@
       \tud at cs@restore{@##1}%
       \global\csletcs{@##1}{@##1}%
     }{}%
+    \ifcsdef{##1}{\tud at cs@restore{##1}}{}%
   }%
   \letcs\@tempb{tud at split#1 at list}%
   \let\and\relax%
@@ -1144,14 +1204,14 @@
 % \begin{macro}{\tud at multiple@fields at preset}
 % \changes{v2.04}{2015/05/12}{neu}^^A
 % Mit diesem Makro wird es möglich, die Inhalte bestimmter Felder aus einer 
-% definierten Liste \cs{tud at split\meta{Feld}@list} auf Standardwerte zu setzen.
+% definierten Liste |\tud at split|\meta{Feld}|@list| auf Standardwerte zu setzen.
 %    \begin{macrocode}
 \newcommand*\tud at multiple@fields at preset[3]{%
   \def\@tempa##1{%
     \edef\@tempc{\csuse{##1}}%
-    \ifstr{#2}{*}{%
+    \if\detokenize{#2*}\relax%
       \csdef{@##1}{}%
-    }{%
+    \else%
       \begingroup%
         \protected at expandtwoargs\in@{\@tempc}{\csuse{#1}}%
         \ifin@%
@@ -1158,7 +1218,7 @@
           \ifcsvoid{@##1}{\@tempc{#2}}{}%
         \fi%
       \endgroup%
-    }%
+    \fi%
   }%
   \letcs\@tempb{tud at split#1 at list}%
   \let\and\relax%
@@ -1177,7 +1237,7 @@
 % \fi
 %
 % Auf der Titelseite sowie für die Aufgabenstellung (\pkg{tudscrsupervisor})
-% und  den Seitenfuß von Postern (\cls{tudscrposter}) wird die Angabe einer
+% und den Seitenfuß von Postern (\cls{tudscrposter}) wird die Angabe einer
 % kollaborativen Autorenschaft ermöglicht, wo für jeden einzelnen Autor weitere
 % Angaben (Matrikelnummer etc.) gemacht werden können. Hierfür werden die 
 % folgenden Makros bereitgestellt.
@@ -1194,8 +1254,8 @@
 % Stellen umdefiniert. Dies betrifft den Titel, die Aufgabenstellung und den 
 % Aushang in den Umgebungen \env{task} und \env{notice} sowie den Seitenfuß bei
 % Postern. Im Makro \cs{tud at split@author at list} werden alle Felder hinterlegt,
-% die durch \cs{tud at multiple@fields@\dots} geprüft und ggf. initialisiert
-% werden sollen. 
+% die durch die |\tud at multiple@fields at ...|-Befehle geprüft und gegebenenfalls 
+% initialisiert werden sollen.
 %
 % Für die Angabe mehrerer Kontaktpersonen im Posterfuß (\cls{tudscrposter})
 % oder auf einem Aushang (\pkg{tudscrsupervisor}) wird äquivalent verfahren.
@@ -1241,6 +1301,6 @@
 %</!manual>
 % \fi
 %
-% \Finale
+% \PrintBackMatter
 %
 \endinput

Modified: trunk/Master/texmf-dist/source/latex/tudscr/tudscr-fonts.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tudscr/tudscr-fonts.dtx	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/source/latex/tudscr/tudscr-fonts.dtx	2022-08-09 20:01:54 UTC (rev 64085)
@@ -1,10 +1,10 @@
-% \CheckSum{3161}
 % \iffalse meta-comment
+%/GitFileInfo=tudscr-fonts.dtx
 %
 %  TUD-Script -- Corporate Design of Technische Universität Dresden
 % ----------------------------------------------------------------------------
 %
-%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2021
+%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2022
 %
 % ----------------------------------------------------------------------------
 %
@@ -23,44 +23,19 @@
 %
 % \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
+% \iffalse ins:batch + dtx:driver
+%<*ins>
+\ifx\documentclass\undefined
+  \input docstrip.tex
+  \ifToplevel{\batchinput{tudscr.ins}}
+\else
+  \let\endbatchfile\relax
+\fi
+\endbatchfile
+%</ins>
 %<*dtx>
-\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
-% \fi
-%
-\ProvidesFile{tudscr-fonts.dtx}[2021/07/15 v2.06n TUD-Script\space%
-%
-% \iffalse
-%</dtx>
-%<package&identify>\ProvidesPackage{tudscrfonts}[%
-%<*package&identify>
-%!TUD at Version
-%</package&identify>
-%<package&identify>  package
-%<*dtx|package&identify>
-% \fi
-  (corporate design fonts)%
-]
-% \iffalse
-%</dtx|package&identify>
-%<*dtx>
+\ProvidesFile{tudscr-fonts.dtx}[2022/08/09]
+\RequirePackage{tudscr-gitinfo}
 \documentclass[english,ngerman,xindy]{tudscrdoc}
 \iftutex
   \usepackage{fontspec}
@@ -70,18 +45,11 @@
 \fi
 \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)}
-
+\GitHubBase{\TUDScriptRepository}
 \begin{document}
+  \author{Falk Hanisch\TUDScriptContactTitle}
   \maketitle
   \tableofcontents
   \DocInput{\filename}
@@ -99,7 +67,10 @@
 %   den Mathematiksatz verbessert}^^A
 % \changes{v2.04c}{2015/11/29}{Bugfix für \pkg{fontspec} bei fehlenden 
 %   Schriften}^^A
+% \changes{v2.06o}{2022/08/01}{Mathematikschriftstärke passend zu Fließtext}^^A
 %
+%
+%
 % \section{Die Hausschrift der \TnUD}
 %
 % Für das \TUDCD wird die Schrift \OpenSans benötigt. Die Type1-Variante wird 
@@ -108,20 +79,44 @@
 % 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 
+% auch mit anderen \LaTeX-Klassen 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}
+%    \begin{macrocode}
+%<*package&identify>
+\ProvidesPackage{tudscrfonts}[%
+%!TUD at Version
+  package (corporate design fonts)%
+]
+%</package&identify>
+%    \end{macrocode}
 %
 % \iffalse
-%<*class&option>
+%<*option>
 % \fi
 %
-% \subsection{%
-%   Verwendung durch die \TUDScript-Klassen und das Paket \pkg{tudscrfonts}%
+% Der Category Code für Anführungsstriche wird auf nicht-aktiv gesetzt für den 
+% Fall das ein Paket dies gerne anders hätte.
+%
+%    \begin{macrocode}
+\newcommand*\tud at catcodes@restore{}
+\edef\tud at catcodes@restore{%
+  \catcode`\noexpand\"\the\catcode`\"\relax%
+}%
+\@makeother\"%
+%<class>\AtEndOfClass{\tud at catcodes@restore}
+%<package>\AtEndOfPackage{\tud at catcodes@restore}
+%    \end{macrocode}
+%
+% \iffalse
+%<*class>
+% \fi
+%
+% \subsection{^^A
+%   Nutzung durch die \TUDScript-Klassen und das Paket \pkg{tudscrfonts}^^A
 % }
 %
 % Die Schriften des \TUDCDs werden standardmäßig durch die \TUDScript-Klassen 
@@ -137,16 +132,18 @@
 %    \end{macrocode}
 %
 % \iffalse
-%</class&option>
-%<*package&identify>
+%</class>
+%<*package>
 % \fi
 %
 % Sollte keine \KOMAScript-Klasse genutzt werden, wird zusätzlich das Paket
 % \pkg{scrextend} benötigt. 
 %    \begin{macrocode}
-\ifcsname KOMAClassName\endcsname\else
-  \RequirePackage{scrextend}[2020/09/21]
-\fi
+\ifundef{\KOMAClassName}{%
+  \RequirePackage{scrextend}[%
+%!TUD at KOMAVersion
+  ]%
+}{}
 %    \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 
@@ -156,9 +153,9 @@
 \@for\@tempa:={%
   tudbook,tudbeamer,tudfax,tudform,tudhaus,tudletter,tudposter,tudmathposter%
 }\do{%
-  \@ifclassloaded{\@tempa}{%
-    \if at tempswa\else\@tempswatrue\let\@tempb\@tempa\fi%
-  }{}%
+  \if at tempswa\else
+    \@ifclassloaded{\@tempa}{\@tempswatrue\let\@tempb\@tempa}{}%
+  \fi
 }%
 \if at tempswa%
   \@ifpackageloaded{fix-tudscrfonts}{}{%
@@ -172,7 +169,8 @@
 %    \end{macrocode}
 %
 % \iffalse
-%</package&identify>
+%</package>
+%</option>
 %<*body>
 % \fi
 %
@@ -210,8 +208,9 @@
 % 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 at cdmath@wrn} angehängt.
+% \ToDo{\cs{IfPackageAtLeastTF} oder ganz raus}[v2.07]
 %    \begin{macrocode}
-\newif\if at tud@x at fontspec@enabled
+\tud at newif\if at tud@x at fontspec@enabled
 \PassOptionsToPackage{no-math}{fontspec}
 \AfterPackage*{fontspec}{%
   \@ifpackagelater{fontspec}{2017/01/24}{%
@@ -254,6 +253,7 @@
 % 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 at cdmath@wrn} angehängt wird.
+% \ToDo{Paket \pkg{unicode-math} zumindest rudimentär unterstützen?}[v2.07]
 %    \begin{macrocode}
 \AfterPackage*{unicode-math}{%
   \appto\tud at cdmath@wrn{%
@@ -276,9 +276,12 @@
 % \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.
+% \ToDo{Paket \pkg{mweights} wurde in Kernel integriert}[v2.07]%
+% \ToDo{an neues NFSS anpassen, \cs{DeclareFontSeriesDefault} nutzen}[v2.07]%
+% \ToDo{ist \cs{IfFontSeriesContextTF} irgendwo nötig?}[v2.07]%
 %    \begin{macrocode}
-\TUD at RecommendPackage{mweights}[2017/03/30]%
-\newif\if at tud@x at mweights@enabled
+\TUD at RecommendPackage{mweights}
+\tud at newif\if at tud@x at mweights@enabled
 \AfterPackage*{mweights}{\@tud at x@mweights at enabledtrue}
 %    \end{macrocode}
 % \end{macro}^^A \if at tud@x at mweights@enabled
@@ -291,10 +294,6 @@
 % Dokumente mit den Schriften \Univers und \DIN nutzen zu können, werden die 
 % entsprechenden Befehle ebenfalls vorgehalten.
 %
-% \begin{macro}{\if at tud@cdfont at fam@exist}
-% \changes{v2.06}{2018/07/12}{neu}^^A
-% \begin{macro}{\if at tud@cdfont at db@exist}
-% \changes{v2.06}{2018/07/12}{neu}^^A
 % \begin{macro}{\tud at cdfont@fam}
 % \changes{v2.06}{2018/07/12}{neu}^^A
 % \begin{macro}{\tud at cdfont@fam at lf}
@@ -304,8 +303,6 @@
 % \begin{macro}{\tud at cdfont@db}
 % Zu Beginn werden Schalter und Hilfsmakros sowohl für den Fließtext\dots
 %    \begin{macrocode}
-\newif\if at tud@cdfont at fam@exist
-\newif\if at tud@cdfont at db@exist
 \newcommand*\tud at cdfont@fam{opensans-TLF}
 \newcommand*\tud at cdfont@fam at lf{opensans-TLF}
 \newcommand*\tud at cdfont@fam at osf{opensans-TOsF}
@@ -320,8 +317,6 @@
 % \end{macro}^^A \tud at cdfont@fam at osf
 % \end{macro}^^A \tud at cdfont@fam at lf
 % \end{macro}^^A \tud at cdfont@fam
-% \end{macro}^^A \if at tud@cdfont at db@exist
-% \end{macro}^^A \if at tud@cdfont at fam@exist
 % \begin{macro}{\tud at ttfont@fam}
 % \changes{v2.06}{2018/07/12}{neu}^^A
 % \begin{macro}{\tud at ttfont@rb}
@@ -342,7 +337,7 @@
 % Die TypeWriter-Schrift aus \pkg{roboto-mono} kann nur genutzt werden, wenn
 % diese tatsächlich auch vorhanden ist.
 %    \begin{macrocode}
-\newif\if at tud@ttfont at rb@exist
+\tud at newif\if at tud@ttfont at rb@exist
 \IfFileExists{roboto-mono.sty}{%
   \@tud at ttfont@rb at existtrue%
 }{%
@@ -360,6 +355,16 @@
 % \changes{v2.06b}{2019/07/17}{Verwendung von \cs{tud at if@fdfileexists}}^^A
 % \begin{macro}{\tud at cdfont@missing}
 % \changes{v2.05l}{2017/03/29}{neu}^^A
+% \begin{macro}{\if at tud@cdfont at fam@exist}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\if at tud@cdfont at db@exist}
+% \changes{v2.06}{2018/07/12}{neu}^^A
+% \begin{macro}{\if at tud@cdmath at fam@exist}
+% \changes{v2.06o}{2022/08/01}{neu}
+% \begin{macro}{\if at tud@cdmath at db@exist}
+% \changes{v2.06o}{2022/08/01}{neu}
+% \begin{macro}{\tud at x@mathastext at enc}
+% \changes{v2.06a}{2019/07/09}{neu}^^A
 % Mit \cs{tud at 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 
@@ -368,6 +373,11 @@
 % Nichtvorhandensein der Schriften wird eine Warnung ausgegeben sowie eine
 % Rückfallebene definiert.
 %    \begin{macrocode}
+\tud at newif\if at tud@cdfont at fam@exist
+\tud at newif\if at tud@cdfont at db@exist
+\tud at newif\if at tud@cdmath at fam@exist
+\tud at newif\if at tud@cdmath at db@exist
+\newcommand*\tud at x@mathastext at enc{OT1}
 \newcommand*\tud at cdfont@check{%
   \if at tud@cdoldfont at active%
     \tud at cdfont@@check{Univers}{%
@@ -375,8 +385,8 @@
       LightOblique,Oblique,BoldOblique,BlackOblique%
     }{\tud at cdfont@fam at lf}{@tud at cdfont@fam at exist}%
     \tud at cdfont@@check{DIN}{Bold}{\tud at cdfont@db}{@tud at cdfont@db at exist}%
-    \tud at cdfont@@@check{OT1,OML,OMS}{\tud at cdfont@fam at lf}%
-    \tud at cdfont@@@check{OT1,OML,OMS}{\tud at cdfont@db}%
+    \tud at cdfont@@@check{OT1,OML,OMS}{\tud at cdfont@fam at lf}{@tud at cdmath@fam at exist}%
+    \tud at cdfont@@@check{OT1,OML,OMS}{\tud at cdfont@db}{@tud at cdmath@db at exist}%
   \else%
 %    \end{macrocode}
 % Die Version von \pkg{opensans} wird geprüft. Das Paket \pkg{iwona} wird 
@@ -403,6 +413,29 @@
       Light,Regular,SemiBold,Bold,ExtraBold,%
       LightItalic,Italic,SemiBoldItalic,BoldItalic,ExtraBoldItalic%
     }{\tud at cdfont@fam at lf,\tud at cdfont@fam at osf}{@tud at cdfont@fam at exist}%
+%    \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.
+%    \begin{macrocode}
+    \@expandtwoargs\in@{,\encodingdefault,}{,OT1,T1,TU,EU1,EU2,}%
+    \ifin@%
+      \let\tud at x@mathastext at enc\encodingdefault%
+%    \end{macrocode}
+% Der Test auf das Vorhandensein der \OpenSans wird nur durchgeführt, wenn es 
+% sich nicht um eine Unicode"=Eingabekodierung handelt.
+%    \begin{macrocode}
+      \@expandtwoargs\in@{,\tud at x@mathastext at enc,}{,TU,EU1,EU2,}%
+      \ifin@%
+        \@tud at cdmath@fam at existtrue%
+      \else%
+        \tud at cdfont@@@check{\tud at x@mathastext at enc}%
+          {\tud at cdfont@fam at lf}{@tud at cdmath@fam at exist}%
+      \fi%
+    \fi%
   \fi%
 }
 %    \end{macrocode}
@@ -470,9 +503,10 @@
 %    \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 at cdmath@wrn} hinzugefügt.
+% \cs{tud at cdmath@wrn} hinzugefügt und der im dritten Argument gegebene Schalter 
+% wird entsprechend gesetzt.
 %    \begin{macrocode}
-\newcommand*\tud at cdfont@@@check[2]{%
+\newcommand*\tud at cdfont@@@check[3]{%
   \@tud at res@swatrue%
   \def\tud at res@a##1##2{%
     \@tud at res@swafalse%
@@ -490,10 +524,14 @@
   }%
   \@for\tud at res@c:={#1}\do{\tud at res@b{\tud at 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.
+% Wurde mindestens eine notwendige Type1-Schrift nicht gefunden, wird die 
+% Option \opt{cdmath=false} gesetzt. War diese zuvor aktiv, wird eine Warnung
+% dazu ausgegeben.
 %    \begin{macrocode}
-  \if at tud@res at swa\else%
+  \if at tud@res at swa%
+    \booltrue{#3}%
+  \else%
+    \boolfalse{#3}%
     \AtBeginDocument{%
       \if at tud@cdmath at active%
 %<*class>
@@ -506,8 +544,12 @@
           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
+          \if at tud@cdoldfont at active%
+            all necessary fonts with a installation script\MessageBreak%
+            listed in the manual%
+          \else%
+            package `opensans'%
+          \fi%
         }%
       \fi%
       \TUDoptions{cdmath=false}%
@@ -525,7 +567,7 @@
       not found for `#1' encoding. \MessageBreak%
     }%
     \if at tud@x at fontspec@enabled%
-      \ifstr{\encodingdefault}{#1}{%
+      \tud at if@strequal{#1}{\encodingdefault}{%
         \appto\tud at res@a{%
           It seems, you haven't installed the required\MessageBreak%
           OTF-font on your system. You should provide\MessageBreak%
@@ -543,7 +585,7 @@
       \fi%
       \@tud at res@swafalse%
       \@for\tud at res@c:=\tud at res@b\do{%
-        \ifstr{\tud at res@c}{#1}{\@tud at res@swatrue}{}%
+        \tud at if@strequal{#1}{\tud at res@c}{\@tud at res@swatrue}{}%
       }%
 %    \end{macrocode}
 % Wird eine unterstützte Kodierung verwendet, müssen die Schriften installiert 
@@ -561,8 +603,8 @@
           . \MessageBreak%
         }%
       \else%
-        \ifstr{\encodingdefault}{#1}{%
-          \ifstr{TU}{#1}{%
+        \tud at if@strequal{#1}{\encodingdefault}{%
+          \tud at if@strequal{#1}{TU}{%
             \appto\tud at res@a{%
               You should either load package `fontspec'\MessageBreak%
               or %
@@ -580,137 +622,33 @@
     \appto\tud at res@a{A fallback layout is used}%
     \edef\tud at res@c{%
 %<*class>
-      \etex at unexpanded{\ClassWarning{\TUD at Class@Name}}%
+      \unexpanded{\ClassWarningNoLine{\TUD at Class@Name}}%
 %</class>
 %<*package>
-      \etex at unexpanded{\PackageWarning{tudscrfonts}}%
+      \unexpanded{\PackageWarningNoLine{tudscrfonts}}%
 %</package>
-        {\tud at res@a}
+        {\tud at res@a}%
     }%
     \xappto#3{\expandonce\tud at res@c}%
   \endgroup%
 }
 %    \end{macrocode}
+% \end{macro}^^A \tud at x@mathastext at enc
+% \end{macro}^^A \if at tud@cdmath at db@exist
+% \end{macro}^^A \if at tud@cdmath at fam@exist
+% \end{macro}^^A \if at tud@cdfont at db@exist
+% \end{macro}^^A \if at tud@cdfont at fam@exist
 % \end{macro}^^A \tud at cdfont@missing
 % \end{macro}^^A \tud at cdfont@@@check
 % \end{macro}^^A \tud at cdfont@@check
 % \end{macro}^^A \tud at 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 at 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 at 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 at raggedright}
-% \begin{macro}{\tud at 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 at raggedright{\raggedright}
-\newcommand*\tud at RaggedRight{\raggedright}
-\AfterPackage*{ragged2e}{%
-  \ifundef{\LaTeXraggedright}{}{%
-    \renewcommand*\tud at raggedright{\LaTeXraggedright}%
-  }%
-  \renewcommand*\tud at RaggedRight{\RaggedRight}%
-}
-%    \end{macrocode}
-% \end{macro}^^A \tud at RaggedRight
-% \end{macro}^^A \tud at raggedright
-%
-% \subsubsection{Anpassungen für das Paket \pkg{siunitx}}
-%
-% \begin{macro}{\lseries}
-% \begin{macro}{\if at tud@x at 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 at tud@x at siunitx@enabled
-\AfterAtEndOfPackage*{siunitx}{%
-  \@tud at x@siunitx at enabledtrue%
-  \providecommand*\lseries{\fontseries{l}\selectfont}%
-}
-%    \end{macrocode}
-% \end{macro}^^A \if at tud@x at 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 at tud@x at 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 at tud@x at 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 at x@bm at requestedtrue]{bm}
-%<*package>
-}
-%</package>
-%    \end{macrocode}
-% \end{macro}^^A \if at tud@x at bm@requested
-%
 % \iffalse
 %</body>
 %<*option>
 % \fi
 %
-% \subsection{Schriftauswahl und -optionen}
+% \subsection{Optionen und Befehle zur Schriftauswahl}
 %
 % Hier werden die Optionen und Befehle zur Schriftauswahl definiert.
 %
@@ -738,15 +676,15 @@
 % 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{%
+% \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 at tud@cdfont at active
-\newif\if at tud@cdfont at heavy
-\newif\if at tud@cdfont at ultrabold
-\newif\if at tud@cdfont at lining
+\tud at newif\if at tud@cdfont at active
+\tud at newif\if at tud@cdfont at heavy
+\tud at newif\if at tud@cdfont at ultrabold
+\tud at newif\if at tud@cdfont at lining
 \@tud at cdfont@liningtrue
 \TUD at key{cdfont}[true]{%
   \TUD at set@numkey{cdfont}{@tempa}{%
@@ -843,7 +781,7 @@
     \or% math
       \TUDoptions{cdmath=true}%
 %    \end{macrocode}
-% Die Neigung der großen griechischen Buchstaben.
+% Die Neigung der griechischen Majuskeln.
 %    \begin{macrocode}
     \or% uprightgreek
       \TUDoptions{slantedgreek=false}%
@@ -875,14 +813,11 @@
 % dass es sich bei diesem um die gewünschte Schriftgröße handelt.
 %    \begin{macrocode}
   \else%
-    \tud at lowerstring\tud at res@a{#1}%
-    \ifdimen{\tud at res@a}{%
-      \ifdim\tud at res@a>\z@\relax%
-        \TUDoptions{fontsize=#1}%
-        \tud at cdfont@activate%
-        \FamilyKeyStateProcessed%
-      \fi%
-    }{}%
+    \TUD at set@dimkey{cdfont}{\@tempa}{#1}%
+    \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+      \TUDoptions{fontsize=#1}%
+      \tud at cdfont@activate%
+    \fi%
   \fi%
 }
 \newcommand*\tud at cdfont@activate{%
@@ -930,8 +865,8 @@
 % Schriftauswahl für die \TUDScript-Klassen oder das Paket \pkg{tudscrfonts} 
 % entsprechend angepasst.
 %    \begin{macrocode}
-\newif\if at tud@cdoldfont at active
-\newif\if at tud@cdoldfont at nodin
+\tud at newif\if at tud@cdoldfont at active
+\tud at newif\if at tud@cdoldfont at nodin
 \TUD at key{cdoldfont}[true]{%
   \TUD at set@numkey{cdoldfont}{@tempa}{%
     \TUD at bool@numkey,%
@@ -944,12 +879,12 @@
       \@tud at cdoldfont@activefalse%
       \@tud at cdoldfont@nodintrue%
 %    \end{macrocode}
-% Achtung, nicht verwirren lassen! Mit \opt{cdoldfonts=false} kann beim Laden
+% Achtung, nicht verwirren lassen! Mit \opt{cdoldfont=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 
+% \opt{cdoldfont} eingefroren, ist diese aktiv, kann sie ab diesem Zeitpunkt 
+% nicht mehr deaktiviert werden. Dann kann mit \opt{cdoldfont=false} quasi das 
 % gleiche Verhalten wie mit \opt{cdfont=false} erzeugt werden.
 %    \begin{macrocode}
       \if at tud@cdoldfont at active%
@@ -973,6 +908,7 @@
     \TUDoptions{cdfont=#1}%
   \fi%
 }
+\TUD at key{cdoldfonts}[true]{\TUDoptions{cdoldfont=#1}}
 %<*class>
 \AtEndOfClass%
 %</class>
@@ -1039,10 +975,15 @@
 % für das Laden der \TUDScript-Klasse ein Schlüssel definiert, der den Wert an
 % \KOMAScript{} weiterreicht.
 %    \begin{macrocode}
-\newif\if at tud@x at scr@fontsize at set
+%<*class>
+\tud at newif\if at tud@x at scr@fontsize at set
+%</class>
 \TUD at key{fontsize}{%
-  \TUD at set@dimenkey{fontsize}{\@tempa}{#1}%
+  \TUD at set@dimkey{fontsize}{\@tempa}{#1}%
   \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+    \ifdim\@tempa<\p@\relax%
+      \FamilyKeyStateUnknownValue%
+    \else%
 %    \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 
@@ -1050,21 +991,40 @@
 % dem Hinweis auf das vorgeschlagene Vorgehen ausgegeben.
 %    \begin{macrocode}
 %<*package>
-    \@expandtwoargs\in@{,\CurrentOption,}{,\@globaloptionslist,}%
-    \ifin@\else%
-      \edef\tud at res@a{%
-        \noexpand\PackageWarning{tudscrfonts}%
-        {%
-          The key `\CurrentOption' should only be\MessageBreak%
-          used as class option%
+      \@expandtwoargs\in@{,\CurrentOption,}{,\@globaloptionslist,}%
+      \ifin@\else%
+        \edef\tud at res@a{%
+          \noexpand\PackageWarning{tudscrfonts}%
+          {%
+            The key `\CurrentOption' should only be\MessageBreak%
+            used as class option%
+          }%
         }%
-      }%
-      \expandafter\AtEndOfPackage\expandafter{\tud at res@a}%
-    \fi
+        \expandafter\AtEndOfPackage\expandafter{\tud at res@a}%
+      \fi%
 %</package>
-    \@tud at x@scr at fontsize@settrue%
-    \TUD at KOMAoptions{fontsize=#1}%
+%<*class>
+      \@tud at x@scr at fontsize@settrue%
+%</class>
+      \TUD at KOMAoptions{fontsize=#1}%
+    \fi%
   \fi%
+%    \end{macrocode}
+% Für ungültige Werte wird eine Warnung ausgegeben.
+%    \begin{macrocode}
+  \ifx\FamilyKeyState\FamilyKeyStateUnknownValue%
+%<*class>
+    \ClassWarningNoLine{\TUD at Class@Name}%
+%</class>
+%<*package>
+    \PackageWarningNoLine{tudscrfonts}%
+%</package>
+    {%
+      The value for option `fontsize' must be a dimension\MessageBreak%
+      and at least 1pt but `#1' was given%
+    }%
+    \FamilyKeyStateProcessed%
+  \fi%
 }
 %<*class>
 \AtEndOfClass%
@@ -1076,8 +1036,9 @@
   \RelaxFamilyKey{TUD}{fontsize}%
   \DefineFamilyMember{KOMA}%
   \DefineFamilyKey{KOMA}{fontsize}{%
+    \FamilyKeyStateUnknownValue%
+%<*class>
     \@tud at x@scr at fontsize@settrue%
-%<*class>
     \ClassWarning{\TUD at Class@Name}%
 %</class>
 %<*package>
@@ -1087,8 +1048,7 @@
       The key `fontsize=#1' should only be\MessageBreak%
       used as class option%
     }%
-    \TUD at SpecialOptionAtDocument{tud at font@set}%
-    \FamilyKeyStateProcessed%
+    \TUD at SpecialOptionAtDocument{tud at relspacing@set}%
   }%
 }
 %    \end{macrocode}
@@ -1096,15 +1056,15 @@
 % \end{option}^^A fontsize
 % \begin{option}{relspacing}
 % \changes{v2.05}{2015/12/17}{neu}^^A
+% \changes{v2.06o}{2022/08/08}{stärkerer Einfluss der Schriftgröße}^^A
 % \begin{macro}{\if at 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 at font@skip at set} 
-% vorgenommen.
+% werden. Die Längendefinition erfolgt durch das Makro \cs{tud at relspacing@set}.
 %    \begin{macrocode}
-\newif\if at tud@relspacing
+\tud at newif\if at tud@relspacing
 \TUD at key{relspacing}[true]{%
   \TUD at set@numkey{relspacing}{@tempa}{%
     \TUD at bool@numkey,%
@@ -1117,7 +1077,7 @@
     \or% true
       \@tud at relspacingtrue%
     \fi%
-    \TUD at SpecialOptionAtDocument{tud at font@skip at set}%
+    \TUD at SpecialOptionAtDocument{tud at relspacing@set}%
   \fi%
 }
 %    \end{macrocode}
@@ -1189,7 +1149,7 @@
     }%
     \edef\tud at res@a{%
       \endgroup%
-      \noexpand\DeclareRobustCommand%
+      \noexpand\renewrobustcmd*%
           \expandafter\noexpand\csname #1family\endcsname{%
         \expandafter\noexpand\csname tud at x@fontspec at fam@#2\endcsname%
       }%
@@ -1227,13 +1187,15 @@
 % des \CDs aktiviert. Dabei werden die Pakete \pkg{fontspec} und \pkg{mweights} 
 % beachtet. 
 %    \begin{macrocode}
-\newcommand*\tud at font@set{%
+\newcommand*\tud at font@set[1][\tud at cdfont@wrn]{%
 %    \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.
+% Ist die Verwendung der Schriften des \CDs gewünscht, obwohl diese nicht
+% installiert sind, werden die entsprechenden Warnungen ausgegeben. Danach 
+% werden die Schnitte der Standardschriften gesichert, um diese später
+% vollständig wiederherstellen zu können.
 %    \begin{macrocode}
   \if at tud@cdfont at active%
+    #1%
     \tud at cs@store{rmdefault}%
     \tud at cs@store{sfdefault}%
     \tud at cs@store{ttdefault}%
@@ -1263,16 +1225,6 @@
       \tud at 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 at cdfont@set%
@@ -1332,7 +1284,7 @@
 % definiert. Danach wird gewählte Standardschrift aktiviert und für die Klassen 
 % das Layout erneuert.
 %    \begin{macrocode}
-  \tud at font@skip at set%
+  \tud at relspacing@set%
   \normalfont\selectfont%
 %<*class>
   \tud at cd@process%
@@ -1365,6 +1317,16 @@
 % Hiermit erfolgt die eigentliche Auswahl der Schriftfamilien für das \CD.
 %    \begin{macrocode}
 \newcommand*\tud at cdfont@set{%
+%    \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}%
   \if at tud@cdfont at fam@exist%
     \if at tud@cdfont at lining%
       \let\tud at cdfont@fam\tud at cdfont@fam at lf%
@@ -1385,11 +1347,6 @@
     \fi%
     \tud at 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 at cdfont@wrn%
 }
 \newcommand*\tud at cdfont@md{m}
 \newcommand*\tud at cdfont@bf{b}
@@ -1463,13 +1420,13 @@
 }
 %    \end{macrocode}
 % Die an \cs{tud at cdfont@declare at symb} übergebenen Letter für Auswahlbefehle
-% erhalten \cs{tud at cdfont@symbol@\dots} als Präfix. Da so der ursprüngliche 
+% erhalten |\tud at cdfont@symbol at ...| als Präfix. Da so der ursprüngliche
 % Befehlsname verändert wird, würde dieser Befehlsname auch verwendet werden, 
 % wenn dieser in einem fragilen Kontext genutzt wird (siehe \cs{@changed at cmd}).
 % Deshalb wird im Anschluss der neue Befehl selbst robust definiert, damit 
 % eine spätere Expansion nach der Zuweisung mit \cs{tud at cs@letltx} nicht in 
-% \cs{tud at cdfont@symbol@\meta{symbol}} resultiert sondern in jedem Fall 
-% \cs{\meta{symbol}} erhalen bleibt.
+% |\tud at cdfont@symbol@|\meta{Letter} resultiert sondern in jedem Fall 
+% |\|\meta{Letter} erhalten bleibt.
 %    \begin{macrocode}
 \newcommand*\tud at DeclareTextSymbol[4]{%
   \begingroup%
@@ -1501,7 +1458,7 @@
 % welche mit \cs{tud at cdfont@declare at symb} deklariert wurden, und den normalen 
 % gewechselt werden. 
 %    \begin{macrocode}
-\newtoks\tud at cdfont@symbols at toks
+\tud at newtoks\tud at cdfont@symbols at toks
 \newcommand*\tud at cdfont@symbols at set{%
 %    \end{macrocode}
 % Die Sicherung der alten Definitionen erfolgt nur einmalig. Die Liste der 
@@ -1537,6 +1494,7 @@
 % \begin{macro}{\tud at cdfont@declare at textsymb}
 % \changes{v2.06g}{2020/06/18}{neu}^^A
 % Die Definition der Textsymbole für die \val{TS1}-Kodierung.
+% \ToDo{weitere Symbole (\cs{textohm} etc.) der Open Sans hinzufügen}[v2.07]
 %    \begin{macrocode}
 \newcommand*\tud at cdfont@declare at textsymb{%
   \tud at cdfont@declare at symb{textleftarrow}{TS1}{iwona}{24}%
@@ -1548,10 +1506,11 @@
 }
 %    \end{macrocode}
 % \end{macro}^^A \tud at cdfont@declare at textsymb
-% \begin{macro}{\tud at font@skip at set}
+% \begin{macro}{\tud at relspacing@set}
 % \changes{v2.04}{2015/02/17}{neu}^^A
-% \begin{macro}{\tud at font@skip@@set}
+% \begin{macro}{\tud at relspacing@@set}
 % \changes{v2.04}{2015/03/27}{neu}^^A
+% \changes{v2.06o}{2022/08/08}{\cs{abovedisplayskip} als Referenz}^^A
 % \begin{macro}{\smallskipamount}
 % \changes{v2.04}{2015/04/24}{Wert abhängig von der Schriftgröße}^^A
 % \begin{macro}{\medskipamount}
@@ -1567,40 +1526,58 @@
 % Abstände angepasst, die bei den \KOMAScript-Klassen nicht abhängig von dieser
 % sind.
 %    \begin{macrocode}
-\newcommand*\tud at font@skip at set{%
+\newcommand*\tud at relspacing@set{%
 %    \end{macrocode}
 % Es werden die Standardeinstellungen abhängig von \opt{cdfont} entweder 
 % wiederhergestellt oder gesichert und neu definiert.
 %    \begin{macrocode}
   \if at tud@relspacing%
-    \tud at skip@store{smallskipamount}%
-    \tud at skip@store{medskipamount}%
-    \tud at skip@store{bigskipamount}%
-    \tud at skip@store{abovecaptionskip}%
-    \tud at skip@store{belowcaptionskip}%
-    \tud at skip@store{columnsep}%
-    \tud at font@skip@@set%
+    \tud at cslength@store{smallskipamount}%
+    \tud at cslength@store{medskipamount}%
+    \tud at cslength@store{bigskipamount}%
+    \tud at cslength@store{abovecaptionskip}%
+    \tud at cslength@store{belowcaptionskip}%
+    \tud at cslength@store{columnsep}%
+    \tud at relspacing@@set%
   \else%
-    \tud at skip@restore{smallskipamount}%
-    \tud at skip@restore{medskipamount}%
-    \tud at skip@restore{bigskipamount}%
-    \tud at skip@restore{abovecaptionskip}%
-    \tud at skip@restore{belowcaptionskip}%
-    \tud at skip@restore{columnsep}%
+    \tud at cslength@restore{smallskipamount}%
+    \tud at cslength@restore{medskipamount}%
+    \tud at cslength@restore{bigskipamount}%
+    \tud at cslength@restore{abovecaptionskip}%
+    \tud at cslength@restore{belowcaptionskip}%
+    \tud at cslength@restore{columnsep}%
   \fi%
 }
 %    \end{macrocode}
 % Hiermit erfolgt das eigentliche Setzen der Abstände.
 %    \begin{macrocode}
-\newcommand*\tud at font@skip@@set{%
-  \smallskipamount=\partopsep%
-  \medskipamount=\partopsep%
-  \multiply\medskipamount by 2%
-  \bigskipamount=\partopsep%
-  \multiply\bigskipamount by 4%
-  \tud at skip@set{abovecaptionskip}{\dimexpr\bigskipamount*5/6\relax}%
-  \tud at skip@set{belowcaptionskip}{\z@}%
-  \tud at skip@set{columnsep}{1.1\baselineskip}%
+\newcommand*\tud at relspacing@@set{%
+  \tud at if@v at lower{2.06}{%
+    \bigskipamount=\partopsep%
+    \multiply\bigskipamount by 4%
+  }{%
+    \begingroup%
+      \tud at setdim\@tempdima{\dimexpr\abovedisplayskip\relax}%
+      \tud at setdim\@tempdimb{\@tempdima/3}%
+      \edef\tud at res@a{%
+        \endgroup%
+        \noexpand\tud at setglue\noexpand\bigskipamount{%
+          \the\@tempdima\@plus\the\@tempdimb\@minus\the\@tempdimb%
+        }%
+      }%
+    \tud at res@a%
+  }%
+  \medskipamount=\bigskipamount%
+  \divide\medskipamount by 2%
+  \smallskipamount=\bigskipamount%
+  \divide\smallskipamount by 4%
+  \tud at if@lengthregister{\abovecaptionskip}{%
+    \tud at setdim\abovecaptionskip{1\bigskipamount*5/6}%
+  }{}%
+  \tud at if@lengthregister{\belowcaptionskip}{%
+    \tud at setdim\belowcaptionskip{\z@}%
+  }{}%
+  \tud at setdim\columnsep{1\baselineskip*11/10}%
 }
 %    \end{macrocode}
 % \end{macro}^^A \columnsep
@@ -1609,10 +1586,14 @@
 % \end{macro}^^A \bigskipamount
 % \end{macro}^^A \medskipamount
 % \end{macro}^^A \smallskipamount
-% \end{macro}^^A \tud at font@skip@@set
-% \end{macro}^^A \tud at font@skip at set
+% \end{macro}^^A \tud at relspacing@@set
+% \end{macro}^^A \tud at relspacing@set
 % \begin{macro}{\tud at cdfont@init}
 % \changes{v2.04}{2015/03/10}{neu}^^A
+% \begin{macro}{\tud at cdfont@@init}
+% \changes{v2.06o}{2022/08/01}{neu}
+% \begin{macro}{\tud at cdfont@@@init}
+% \changes{v2.06o}{2022/08/01}{neu}
 % \begin{macro}{\cdfontln}
 % \changes{v2.06}{2018/06/29}{neu}^^A
 % \begin{macro}{\cdfontrn}
@@ -1654,9 +1635,16 @@
 % \begin{macro}{\textcdxs}
 % \changes{v2.06}{2018/06/29}{neu}^^A
 % Das Makro \cs{tud at cdfont@init} wird für die Defintion aller Befehle zur
-% Auswahl der Schriften des \CDs verwendet.
+% Auswahl der Schriften des \CDs verwendet. Dabei erfolgt die Definition der 
+% Schriften selbst mit \cs{tud at cdfont@@init} und das Festlegen der Befehle zur 
+% expliziten Schriftauswahl mit \cs{tud at cdfont@@@init}.
+% \ToDo{Condensed Schriften mit neuer Open Sans?}[v2.07]
 %    \begin{macrocode}
 \newcommand*\tud at cdfont@init{%
+  \tud at cdfont@@init%
+  \tud at cdfont@@@init%
+}
+\newcommand*\tud at cdfont@@init{%
 %    \end{macrocode}
 % Zur Nutztung der OTF"~Schriften werden mit \cs{tud at x@fontspec at init} alle 
 % benötigten Schriftfamilien mit ihren einzelnen Schriftschnitten definiert.
@@ -1721,36 +1709,41 @@
 % definiert. Diese können so im Dokument unabhängig von der Option 
 % \opt{cdfont} genutzt werden.
 %    \begin{macrocode}
-    \newrobustcmd*\cdfontln{\usefont{\encodingdefault}{\tud at cdfont@fam}{l}{n}}
-    \newrobustcmd*\cdfontrn{\usefont{\encodingdefault}{\tud at cdfont@fam}{m}{n}}
-    \newrobustcmd*\cdfontsn{\usefont{\encodingdefault}{\tud at cdfont@fam}{sb}{n}}
-    \newrobustcmd*\cdfontbn{\usefont{\encodingdefault}{\tud at cdfont@fam}{b}{n}}
-    \newrobustcmd*\cdfontxn{\usefont{\encodingdefault}{\tud at cdfont@fam}{eb}{n}}
-    \newrobustcmd*\cdfontli{\usefont{\encodingdefault}{\tud at cdfont@fam}{l}{it}}
-    \newrobustcmd*\cdfontri{\usefont{\encodingdefault}{\tud at cdfont@fam}{m}{it}}
-    \newrobustcmd*\cdfontsi{\usefont{\encodingdefault}{\tud at cdfont@fam}{sb}{it}}
-    \newrobustcmd*\cdfontbi{\usefont{\encodingdefault}{\tud at cdfont@fam}{b}{it}}
-    \newrobustcmd*\cdfontxi{\usefont{\encodingdefault}{\tud at cdfont@fam}{eb}{it}}
+    \def\tud at res@a##1##2##3{%
+      \newrobustcmd*##1{\usefont{\f at encoding}{\tud at cdfont@fam}{##2}{##3}}%
+    }%
+    \tud at res@a\cdfontln{l}{n}%
+    \tud at res@a\cdfontrn{m}{n}%
+    \tud at res@a\cdfontsn{sb}{n}%
+    \tud at res@a\cdfontbn{b}{n}%
+    \tud at res@a\cdfontxn{eb}{n}%
+    \tud at res@a\cdfontli{l}{it}%
+    \tud at res@a\cdfontri{m}{it}%
+    \tud at res@a\cdfontsi{sb}{it}%
+    \tud at res@a\cdfontbi{b}{it}%
+    \tud at res@a\cdfontxi{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 at cdfont@fallback\cdfontln{OpenSans-Light}{md}{up}
-    \tud at cdfont@fallback\cdfontrn{OpenSans-Regular}{md}{up}
-    \tud at cdfont@fallback\cdfontsn{OpenSans-SemiBold}{md}{up}
-    \tud at cdfont@fallback\cdfontbn{OpenSans-Bold}{bf}{up}
-    \tud at cdfont@fallback\cdfontxn{OpenSans-ExtraBold}{bf}{up}
-    \tud at cdfont@fallback\cdfontli{OpenSans-LightItalic}{md}{it}
-    \tud at cdfont@fallback\cdfontri{OpenSans-Italic}{md}{it}
-    \tud at cdfont@fallback\cdfontsi{OpenSans-SemiBoldItalic}{md}{it}
-    \tud at cdfont@fallback\cdfontbi{OpenSans-BoldItalic}{bf}{it}
-    \tud at cdfont@fallback\cdfontxi{OpenSans-ExtraBoldItalic}{bf}{it}
+    \tud at cdfont@fallback\cdfontln{OpenSans-Light}{md}{up}%
+    \tud at cdfont@fallback\cdfontrn{OpenSans-Regular}{md}{up}%
+    \tud at cdfont@fallback\cdfontsn{OpenSans-SemiBold}{md}{up}%
+    \tud at cdfont@fallback\cdfontbn{OpenSans-Bold}{bf}{up}%
+    \tud at cdfont@fallback\cdfontxn{OpenSans-ExtraBold}{bf}{up}%
+    \tud at cdfont@fallback\cdfontli{OpenSans-LightItalic}{md}{it}%
+    \tud at cdfont@fallback\cdfontri{OpenSans-Italic}{md}{it}%
+    \tud at cdfont@fallback\cdfontsi{OpenSans-SemiBoldItalic}{md}{it}%
+    \tud at cdfont@fallback\cdfontbi{OpenSans-BoldItalic}{bf}{it}%
+    \tud at 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*\tud at cdfont@@@init{%
   \newcommand*\textcdln{}%
   \newcommand*\textcdrn{}%
   \newcommand*\textcdsn{}%
@@ -1793,6 +1786,8 @@
 % \end{macro}^^A \cdfontsn
 % \end{macro}^^A \cdfontrn
 % \end{macro}^^A \cdfontln
+% \end{macro}^^A \tud at cdfont@@@init
+% \end{macro}^^A \tud at cdfont@@init
 % \end{macro}^^A \tud at cdfont@init
 % \begin{macro}{\univln}
 % \begin{macro}{\univrn}
@@ -1817,7 +1812,7 @@
 % Die Definition der Befehle der veralteten Schriften des \CDs.
 %    \begin{macrocode}
 \if at tud@cdoldfont at active
-  \renewcommand*\tud at cdfont@init{%
+  \renewcommand*\tud at cdfont@@init{%
     \if at tud@cdfont at fam@exist%
       \if at tud@x at fontspec@enabled%
         \def\tud at res@a{%
@@ -1838,27 +1833,30 @@
 %    \end{macrocode}
 % Die Schalter zur expliziten Auswahl für die \Univers-Schriftschnitte.
 %    \begin{macrocode}
-      \newrobustcmd*\univln{\usefont{\encodingdefault}{\tud at cdfont@fam}{l}{n}}
-      \newrobustcmd*\univrn{\usefont{\encodingdefault}{\tud at cdfont@fam}{m}{n}}
-      \newrobustcmd*\univbn{\usefont{\encodingdefault}{\tud at cdfont@fam}{b}{n}}
-      \newrobustcmd*\univxn{\usefont{\encodingdefault}{\tud at cdfont@fam}{eb}{n}}
-      \newrobustcmd*\univls{\usefont{\encodingdefault}{\tud at cdfont@fam}{l}{sl}}
-      \newrobustcmd*\univrs{\usefont{\encodingdefault}{\tud at cdfont@fam}{m}{sl}}
-      \newrobustcmd*\univbs{\usefont{\encodingdefault}{\tud at cdfont@fam}{b}{sl}}
-      \newrobustcmd*\univxs{\usefont{\encodingdefault}{\tud at cdfont@fam}{eb}{sl}}
+      \def\tud at res@a##1##2##3{%
+        \newrobustcmd*##1{\usefont{\f at encoding}{\tud at cdfont@fam}{##2}{##3}}%
+      }%
+      \tud at res@a\univln{l}{n}%
+      \tud at res@a\univrn{m}{n}%
+      \tud at res@a\univbn{b}{n}%
+      \tud at res@a\univxn{eb}{n}%
+      \tud at res@a\univls{l}{it}%
+      \tud at res@a\univrs{m}{it}%
+      \tud at res@a\univbs{b}{it}%
+      \tud at res@a\univxs{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 at cdfont@fallback\univln{Univers-Light}{md}{up}
-      \tud at cdfont@fallback\univrn{Univers}{md}{up}
-      \tud at cdfont@fallback\univbn{Univers-Bold}{bf}{up}
-      \tud at cdfont@fallback\univxn{Univers-Black}{bf}{up}
-      \tud at cdfont@fallback\univls{Univers-LightOblique}{md}{sl}
-      \tud at cdfont@fallback\univrs{Univers-Oblique}{md}{sl}
-      \tud at cdfont@fallback\univbs{Univers-BoldOblique}{bf}{sl}
-      \tud at cdfont@fallback\univxs{Univers-BlackOblique}{bf}{sl}
+      \tud at cdfont@fallback\univln{Univers-Light}{md}{up}%
+      \tud at cdfont@fallback\univrn{Univers}{md}{up}%
+      \tud at cdfont@fallback\univbn{Univers-Bold}{bf}{up}%
+      \tud at cdfont@fallback\univxn{Univers-Black}{bf}{up}%
+      \tud at cdfont@fallback\univls{Univers-LightOblique}{md}{it}%
+      \tud at cdfont@fallback\univrs{Univers-Oblique}{md}{it}%
+      \tud at cdfont@fallback\univbs{Univers-BoldOblique}{bf}{it}%
+      \tud at cdfont@fallback\univxs{Univers-BlackOblique}{bf}{it}%
     \fi%
 %    \end{macrocode}
 % Außerdem werden für die Schriften noch die entsprechenden Textauswahlbefehle
@@ -1893,26 +1891,6 @@
     \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}
@@ -1937,7 +1915,7 @@
 % Bei der Schriftauswahl wird die entsprechende Mathematikschrift aktiviert.
 %    \begin{macrocode}
       \newrobustcmd*\tud at db{%
-        \usefont{\encodingdefault}{\tud at cdfont@db}{b}{n}%
+        \usefont{\f at encoding}{\tud at cdfont@db}{b}{n}%
         \if at tud@cdmath at active\mathversion{tuddin}\fi%
       }%
       \newrobustcmd*\dinbn{\tud at db}%
@@ -1956,7 +1934,7 @@
         \PackageWarning{tudscrfonts}%
 %</package>
         {%
-          Font `DIN-Bold' is not available and therefore\MessageBreak
+          Font `DIN-Bold' is not available and therefore\MessageBreak%
           can not be used for headings%
         }%
         \global\let\tud at db@wrn\relax%
@@ -2018,8 +1996,6 @@
 % \end{macro}^^A \tud at 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 at cdfont@get}
@@ -2031,11 +2007,10 @@
 % \begin{macro}{\tud at 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
+% \cs{tudfont}, mit welchem die Schriften des \TUDCDs 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.
+% mit \cs{textcd} die Auswahl der Schrift über einen Textbefehl ermöglicht.
 %    \begin{macrocode}
 \newcommand*\cdfont[1]{%
   \tud at cdfont@get{#1}%
@@ -2055,7 +2030,7 @@
   \renewcommand*\cdfont[1]{%
     \tud at cdfont@get{#1}%
     \ifx\@tempc\relax\else%
-      \ifstr{\@tempc}{dinbn}{\dinbn}{\csuse{univ\@tempc}}%
+      \tud at if@strequal{\@tempc}{dinbn}{\dinbn}{\csuse{univ\@tempc}}%
     \fi%
   }%
   \renewcommand*\textcd[2]{%
@@ -2063,29 +2038,29 @@
     \ifx\@tempc\relax%
       \textsf{#2}%
     \else%
-      \ifstr{\@tempc}{dinbn}{\textdbn{#2}}{\csuse{textu\@tempc}{#2}}%
+      \tud at if@strequal{\@tempc}{dinbn}{\textdbn{#2}}{\csuse{textu\@tempc}{#2}}%
     \fi%
   }%
 \fi
 \newcommand*\tud at cdfont@get[1]{%
   \tud at 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}}{%
+  \tud at if@strequal{\@tempa}{l} {\def\@tempc{ln}}{%
+  \tud at if@strequal{\@tempa}{}  {\def\@tempc{rn}}{%
+  \tud at if@strequal{\@tempa}{r} {\def\@tempc{rn}}{%
+  \tud at if@strequal{\@tempa}{s} {\def\@tempc{sn}}{%
+  \tud at if@strequal{\@tempa}{b} {\def\@tempc{bn}}{%
+  \tud at if@strequal{\@tempa}{x} {\def\@tempc{xn}}{%
+  \tud at if@strequal{\@tempa}{li}{\def\@tempc{li}}{%
+  \tud at if@strequal{\@tempa}{il}{\def\@tempc{li}}{%
+  \tud at if@strequal{\@tempa}{i} {\def\@tempc{ri}}{%
+  \tud at if@strequal{\@tempa}{ri}{\def\@tempc{ri}}{%
+  \tud at if@strequal{\@tempa}{ir}{\def\@tempc{ri}}{%
+  \tud at if@strequal{\@tempa}{si}{\def\@tempc{si}}{%
+  \tud at if@strequal{\@tempa}{is}{\def\@tempc{si}}{%
+  \tud at if@strequal{\@tempa}{bi}{\def\@tempc{bi}}{%
+  \tud at if@strequal{\@tempa}{ib}{\def\@tempc{bi}}{%
+  \tud at if@strequal{\@tempa}{xi}{\def\@tempc{xi}}{%
+  \tud at if@strequal{\@tempa}{ix}{\def\@tempc{xi}}{%
     \let\@tempc\relax%
 %<*class>
     \ClassWarning{\TUD at Class@Name}%
@@ -2099,20 +2074,20 @@
 \if at tud@cdoldfont at active
   \renewcommand*\tud at cdfont@get[1]{%
     \tud at 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}}{%
+    \tud at if@strequal{\@tempa}{45}       {\def\@tempc{ln}}{%
+    \tud at if@strequal{\@tempa}{55}       {\def\@tempc{rn}}{%
+    \tud at if@strequal{\@tempa}{65}       {\def\@tempc{bn}}{%
+    \tud at if@strequal{\@tempa}{75}       {\def\@tempc{xn}}{%
+    \tud at if@strequal{\@tempa}{45oblique}{\def\@tempc{ls}}{%
+    \tud at if@strequal{\@tempa}{55oblique}{\def\@tempc{rs}}{%
+    \tud at if@strequal{\@tempa}{65oblique}{\def\@tempc{bs}}{%
+    \tud at if@strequal{\@tempa}{75oblique}{\def\@tempc{xs}}{%
+    \tud at if@strequal{\@tempa}{oblique45}{\def\@tempc{ls}}{%
+    \tud at if@strequal{\@tempa}{oblique55}{\def\@tempc{rs}}{%
+    \tud at if@strequal{\@tempa}{oblique65}{\def\@tempc{bs}}{%
+    \tud at if@strequal{\@tempa}{oblique75}{\def\@tempc{xs}}{%
+    \tud at if@strequal{\@tempa}{din}      {\def\@tempc{dinbn}}{%
+    \tud at if@strequal{\@tempa}{din65}    {\def\@tempc{dinbn}}{%
       \let\@tempc\relax%
 %<*class>
       \ClassWarning{\TUD at Class@Name}%
@@ -2125,8 +2100,7 @@
   }%
 \fi
 \newcommand*\tud at cdfont@trim[2]{%
-  \protected at edef\@tempa{\trim at spaces{#2}}%
-  \tud at lowerstring{\@tempa}{\@tempa}%
+  \tud at strlowercase\@tempa{\trim at spaces{#2}}%
   \tud at cdfont@@trim{ }{}%
   \tud at cdfont@@trim{-}{}%
   \tud at cdfont@@trim{_}{}%
@@ -2135,9 +2109,9 @@
   \tud at cdfont@@trim{light}{l}%
   \tud at cdfont@@trim{regular}{r}%
   \tud at cdfont@@trim{book}{r}%
-  \tud at cdfont@@trim{semibold}{s}%
+  \tud at cdfont@@trim{semi}{s}%
   \tud at cdfont@@trim{demi}{s}%
-  \tud at cdfont@@trim{extrabold}{x}%
+  \tud at cdfont@@trim{extra}{x}%
   \tud at cdfont@@trim{black}{x}%
   \tud at cdfont@@trim{bold}{b}%
   \tud at cdfont@@trim{italic}{i}%
@@ -2147,8 +2121,7 @@
 }
 \if at tud@cdoldfont at active
   \renewcommand*\tud at cdfont@trim[2]{%
-    \protected at edef\@tempa{\trim at spaces{#2}}%
-    \tud at lowerstring{\@tempa}{\@tempa}%
+    \tud at strlowercase\@tempa{\trim at spaces{#2}}%
     \tud at cdfont@@trim{ }{}%
     \tud at cdfont@@trim{-}{}%
     \tud at cdfont@@trim{_}{}%
@@ -2183,7 +2156,6 @@
 % \end{macro}^^A \tud at cdfont@trim
 % \end{macro}^^A \tud at cdfont@get
 % \end{macro}^^A \textcd
-% \end{macro}^^A \tudfont
 % \end{macro}^^A \cdfont
 %
 % \iffalse
@@ -2258,7 +2230,7 @@
     \let\tud at ttfont@fam\ttdefault%
   \or% roboto
     \let\tud at ttfont@fam\tud at ttfont@rb%
-  \or% lmodern
+  \else% lmodern
     \let\tud at ttfont@fam\tud at ttfont@lm%
   \fi%
   \ifcase\tud at ttfont@num\relax\else% !false
@@ -2267,7 +2239,7 @@
 % 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 at ttfont@fam\else%
+      \ifx\tud at ttfont@fam\ttdefault\else%
         \tud at x@fontspec at set{tt}{\tud at ttfont@fam}%
       \fi%
     \else%
@@ -2321,6 +2293,8 @@
 % \end{macro}^^A \tud at ttfont@set
 % \begin{macro}{\tud at ttfont@init}
 % \changes{v2.06}{2018/07/12}{neu}^^A
+% \changes{v2.06o}{2022/08/01}{Anpassungen für \val{TS1}-Kodierung; wird immer 
+%   definiert und \cs{DeclareEncodingSubset} wird verwendet}^^A
 % \begin{macro}{\tud at ttfont@rb at scale}
 % \changes{v2.06}{2018/08/30}{neu}^^A
 % Mit \cs{tud at ttfont@init} erfolgt die Defintion der TypeWriter-Schriften.
@@ -2380,7 +2354,7 @@
       \edef\tud at ttfont@rb at scale{s*[\tud at ttfont@rb at scale]}%
       \begingroup%
         \def\tud at res@c##1##2{%
-          \tud at lowerstring\tud at res@a{##1}%
+          \tud at strlowercase\tud at res@a{##1}%
           \DeclareFontFamily{##1}{\tud at ttfont@rb}{\hyphenchar\font=\m at ne}%
 %    \end{macrocode}
 % Das temporäre Makro verlangt im ersten Argument die NFSS-Serie, im zweiten 
@@ -2389,10 +2363,10 @@
 %    \begin{macrocode}
           \def\tud at res@b####1####2####3{%
             \DeclareFontShape{##1}{\tud at ttfont@rb}{####1}{n}{%
-               <->\tud at ttfont@rb at scale RobotoMono-####2-tlf-\tud at res@a%
+              <->\tud at ttfont@rb at scale RobotoMono-####2-tlf-\tud at res@a%
             }{}%
             \DeclareFontShape{##1}{\tud at ttfont@rb}{####1}{it}{%
-               <->\tud at ttfont@rb at scale RobotoMono-####3-tlf-\tud at res@a%
+              <->\tud at ttfont@rb at scale RobotoMono-####3-tlf-\tud at res@a%
             }{}%
             \DeclareFontShape{##1}{\tud at ttfont@rb}{####1}{sl}{%
               <->ssub*\tud at ttfont@rb/####1/it%
@@ -2403,10 +2377,10 @@
 %    \begin{macrocode}
             \ifbool{##2}{%
               \DeclareFontShape{##1}{\tud at ttfont@rb}{####1}{sc}{%
-                 <->\tud at ttfont@rb at scale RobotoMono-####2-tlf-sc-\tud at res@a%
+                <->\tud at ttfont@rb at scale RobotoMono-####2-tlf-sc-\tud at res@a%
               }{}%
               \DeclareFontShape{##1}{\tud at ttfont@rb}{####1}{scit}{%
-                 <->\tud at ttfont@rb at scale RobotoMono-####3-tlf-sc-\tud at res@a%
+                <->\tud at ttfont@rb at scale RobotoMono-####3-tlf-sc-\tud at res@a%
               }{}%
               \DeclareFontShape{##1}{\tud at ttfont@rb}{####1}{scsl}{%
                 <->ssub*\tud at ttfont@rb/####1/scit%
@@ -2421,8 +2395,29 @@
         }%
         \tud at res@c{OT1}{true}%
         \tud at res@c{T1}{true}%
-        \ifcsundef{T at TS1}{}{\tud at res@c{TS1}{false}}%
-      \endgroup%
+%    \end{macrocode}
+% Mit \LaTeXe~2020/02/02 wird die \val{TS1}-Kodierung immer definiert und 
+% gleichzeitg ein Kompatibilitätslevel für verschiedene Schriftfamilien 
+% eingeführt. Da hier eine Schriftfamilie für die skalierte \texttt{RobotoMono} 
+% definiert wird, wird der Kompatibilitätslevel dementsprechend übernommen.
+%    \begin{macrocode}
+        \tud at res@c{TS1}{false}%
+        \def\tud at res@a{\endgroup}%
+        \def\tud at res@b{TS1:RobotoMono-TLF}%
+        \ifcsundef{\tud at res@b}{%
+%<*class>
+          \ClassWarningNoLine{\TUD at Class@Name}%
+%</class>
+%<*package>
+          \PackageWarningNoLine{tudscrfonts}%
+%</package>
+            {`\tud at res@b' encoding subset undefinied}%
+        }{%
+          \eappto\tud at res@a{%
+            \noexpand\DeclareEncodingSubset{TS1}{tudtt}{\csuse{\tud at res@b}}%
+          }%
+        }%
+      \tud at res@a%
     \fi%
   \fi%
 }
@@ -2437,16 +2432,16 @@
 %
 % \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.
+% Da es so gut wie keine freien OpenType-Schriften für den mathmatischen
+% Formelsatz gibt, werden \emph{immer} Type1-Schriften verwendet, falls diese
+% installiert sind.
 %
 % 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.
+% 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 at tud@cdmath at active}
@@ -2453,12 +2448,15 @@
 % \begin{macro}{\if at tud@cdmath at active@locked}
 % Mit dieser Option kann die genutzte Standardschrift für den Mathematiksatz
 % für das gesamte Dokument umgestellt werden.
-% \ToDo{%
+% \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]
+% \ToDo{cdmath=disabled; s. \protecting{\GitHubRepo<45>; \Forum<511>}}[v2.07]
+% \ToDo{griech. Lettern als Symbole (nicht tudupgrk/tuditgrk); boldmath}[v2.07]
+% \ToDo{inverse Suche: \protecting{\Forum<539>}}[v2.07]
 %    \begin{macrocode}
 \tud at locked@newbool{@tud at cdmath@active}
 \tud at locked@bool at preset{@tud at cdmath@active}{true}%
@@ -2538,10 +2536,10 @@
 % \changes{v2.06}{2019/06/13}{neu}^^A
 % \begin{macro}{\if at tud@lgrgreeks}
 % \changes{v2.06}{2019/06/13}{neu}^^A
-% Mit dieser Option lässt sich die Nutzung von griechischen Glyphen der aus der 
+% Mit dieser Option lässt sich die Nutzung von griechischen Lettern der aus der 
 % LGR-Kodierung der aktuellen Schriftfamilie für den Mathematiksatz aktivieren.
 %    \begin{macrocode}
-\newif\if at tud@lgrgreeks
+\tud at newif\if at tud@lgrgreeks
 \TUD at key{lgrgreeks}[true]{\TUD at set@ifkey{lgrgreeks}{@tud at lgrgreeks}{#1}}
 \TUD at key{lgrgreek}[true]{\TUDoptions{lgrgreeks=#1}}
 \TUD at key{LGRgreeks}[true]{\TUDoptions{lgrgreeks=#1}}
@@ -2607,8 +2605,8 @@
 % \changes{v2.06}{2018/07/17}{neu}^^A
 % \begin{macro}{\tud at math@loop at 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 at math@loop at greeks@all} definiert, mit dem eine Namensliste der Glyphen
+% Um Änderungen an den griechischen Lettern vornehmen zu können, wird das Makro
+% \cs{tud at math@loop at greeks@all} definiert, mit dem eine Namensliste der Lettern
 % durchlaufen wird. Dabei wird in Majuskeln und Minuskeln unterschieden.
 %    \begin{macrocode}
 \newcommand*\tud at math@loop at greeks@all[1]{%
@@ -2636,9 +2634,9 @@
 % 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 
+% Kodierungen enthält. Das erste 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 
+% und fette Lettern, die letzten beiden die Schriftgestalt für aufrechte und 
 % kursive Variante.
 %    \begin{macrocode}
 \newcommand*\tud at math@declare at lgrgreeks[5]{%
@@ -2668,11 +2666,11 @@
 % \changes{v2.06}{2019/06/19}{neu}^^A
 % \changes{v2.06n}{2021/07/15}{\cs{mathord} statt \cs{mathalpha}}^^A
 % Es gibt eine Vielzahl von Paketen, die das Setzen von aufrechten griechischen 
-% Glyphen adressieren. Allerdings gibt es keinen einheitlichen Standard, was 
+% Lettern 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 genutzte Nomenklatur 
-% (\cs{up\meta{Letter}}, \cs{it\meta{Letter}}, \cs{other\meta{Letter}})
+% kursive Lettern gesucht, um diese auf die von \TUDScript genutzte Nomenklatur 
+% (|\up|\meta{Letter}, |\it|\meta{Letter}, |\other|\meta{Letter})
 % abzubilden, damit diese unabhängig von der Einstellung für \opt{cdmath}
 % genutzt werden kann und somit neben den normalen Makros zusätzliche Befehle 
 % für das explizite Auswählen aufrechter und kursiver Lettern bereitstehen.
@@ -2692,15 +2690,15 @@
   \ifcsundef{other#1}{\ifcsundef{#1other}{}{\csletcs{other#1}{#1other}}}{}%
 }
 %    \end{macrocode}
-% Einige Pakete stellen für griechische Majuskeln die Befehle \cs{var\dots} 
+% Einige Pakete stellen für griechische Majuskeln Befehle |\var|\meta{Letter}
 % bereit, um diese im kursiven Schnitt zu setzen. Weiterhin existiert für 
-% aufrechte Majuskeln auch noch die Form \cs{Up\meta{Letter}}. Diese werden 
+% aufrechte Majuskeln auch noch die Form |\Up|\meta{Letter}. Diese werden 
 % ebenfalls ausgewertet und ggf. auf die \TUDScript-Nomenklatur abgebildet.
 %    \begin{macrocode}
 \newcommand*\tud at math@map@@@greeks[1]{%
   \ifcsundef{it#1}{\ifcsundef{var#1}{}{\csletcs{it#1}{var#1}}}{}%
   \ifcsundef{up#1}{%
-    \tud at lowerstring\tud at res@a{#1}%
+    \tud at strlowercase\tud at res@a{#1}%
     \edef\tud at res@a{Up\tud at res@a}%
     \ifcsundef{\tud at res@a}{}{\csletcs{up#1}{\tud at res@a}}%
   }{}%
@@ -2711,7 +2709,7 @@
 % \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.
+% griechischen Lettern zu definieren, sofern dies noch notwendig ist.
 %    \begin{macrocode}
 \newcommand*\tud at math@supplement at greeks{%
 %    \end{macrocode}
@@ -2742,7 +2740,7 @@
     }%
     \tud at cs@use{mv at normal}%
     \let\tud at res@c\@empty%
-    \ifstr{\tud at math@letters at enc}{\detokenize{OML}}{%
+    \tud at if@strequal{\tud at math@letters at enc}{OML}{%
       \def\tud at res@a##1{%
         \ifcsundef{it##1}{%
           \eappto\tud at res@c{%
@@ -2755,7 +2753,7 @@
       \tud at res@cnt=\z@\relax%
       \tud at math@loop at greeks@all\tud at res@a%
     }{}%
-    \ifstr{\tud at math@operators at enc}{\detokenize{OT1}}{%
+    \tud at if@strequal{\tud at math@operators at enc}{OT1}{%
       \def\tud at res@a##1{%
         \ifcsundef{up##1}{%
           \eappto\tud at res@c{%
@@ -2770,7 +2768,7 @@
     }{}%
 %    \end{macrocode}
 % Mit der Option \opt{lgrgreeks} besteht zusätzlich die Möglichkeit, fehlende 
-% Glyphen aus einer potenziell sinnvollen Schriftfamilie in der LGR-Kodierung
+% Lettern aus einer potenziell sinnvollen Schriftfamilie in der LGR-Kodierung
 % zu ergänzen. Wird eine solche gefunden, wird diese in \cs{tud at res@a} abgelegt.
 %    \begin{macrocode}
     \let\tud at res@a\@empty%
@@ -2800,7 +2798,7 @@
   \ifx\tud at 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 
+% aufrechte und kursive griechische Lettern aus den entsprechenden Slots 
 % ergänzt.
 %    \begin{macrocode}
     \tud at math@declare at lgrgreeks{\tud at res@a}%
@@ -2865,20 +2863,20 @@
 % \end{macro}^^A \tud at math@map at greeks
 % \begin{macro}{\tud at math@checkslanted at greeks}
 % \changes{v2.05d}{2016/09/22}{neu}^^A
-% Für die Verwendung der griechischen Glyphen im Mathematikmodus wird versucht, 
+% Für die Verwendung der griechischen Lettern 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.
+% standardmäßigen Variante der Letter verglichen. Wurde eine passende
+% Definition gefunden, wird die Option \opt{slantedgreek} voreingestellt.
 %    \begin{macrocode}
 \newcommand*\tud at math@checkslanted at 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
+% die Lettern kursiv gesetzt. Dies betrifft insbesondere die Majuskeln, welche
 % bei \LaTeX{} normalerweise aufrecht gesetzt werden.
 %    \begin{macrocode}
     \def\tud at res@c{%
@@ -2889,14 +2887,10 @@
       }%
     }%
     \@tud at res@swafalse%
-    \ifcsdef{upalpha}{%
-      \ifx\upalpha\alpha%
-        \@tud at res@swatrue%
-      \fi%
-    }{}%
+    \ifundef{\upalpha}{}{\ifx\upalpha\alpha\@tud at res@swatrue\fi}%
 %    \end{macrocode}
 % Existiert \cs{upalpha} und ist mit \cs{alpha} identisch, werden \emph{alle} 
-% griechischen Glyphen aufrecht gesetzt.
+% griechischen Lettern aufrecht gesetzt.
 %    \begin{macrocode}
     \if at tud@res at swa%
       \def\tud at res@c{\TUD at key@preset{slantedgreek}{false}}%
@@ -2904,23 +2898,20 @@
 %    \end{macrocode}
 % Existiert \cs{itGamma} und ist mit \cs{Gamma} identisch oder\dots
 %    \begin{macrocode}
-      \ifcsdef{itGamma}{%
-        \ifx\itGamma\Gamma%
-          \@tud at res@swatrue%
-        \fi%
-      }{%
+      \ifundef{\itGamma}{}{\ifx\itGamma\Gamma\@tud at res@swatrue\fi}%
 %    \end{macrocode}
-% \dots\cs{Gamma} entspricht einer möglichen Standarddefnition,\dots
+% \dots\cs{Gamma} entspricht einer kursiven Standarddefnition, \dots
 %    \begin{macrocode}
+      \if at tud@res at swa\else%
         \let\tud at res@a\relax%
         \let\tud at res@b\relax%
         \DeclareMathSymbol{\tud at res@a}{\mathalpha}{letters}{0}%
         \DeclareMathSymbol{\tud at res@b}{\mathord}{letters}{0}%
-        \ifx\Gamma\tud at res@a\relax\@tud at res@swatrue\fi%
-        \ifx\Gamma\tud at res@b\relax\@tud at res@swatrue\fi%
-      }%
+        \ifx\Gamma\tud at res@a\@tud at res@swatrue\fi%
+        \ifx\Gamma\tud at res@b\@tud at res@swatrue\fi%
+      \fi%
 %    \end{macrocode}
-% \dots werden \emph{alle} griechischen Glyphen kursiv gesetzt.
+% \dots werden \emph{alle} griechischen Lettern kursiv gesetzt.
 %    \begin{macrocode}
       \if at tud@res at swa%
         \def\tud at res@c{\TUD at key@preset{slantedgreek}{true}}%
@@ -2933,70 +2924,27 @@
 % \end{macro}^^A \tud at math@checkslanted at greeks
 % \begin{macro}{\tud at 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 at 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 at x@mathastext at enc}
-% \changes{v2.06a}{2019/07/09}{neu}^^A
-% \begin{macro}{\mv at tudnormal}
-% \begin{macro}{\mv at tudbold}
-% \begin{macro}{\mv at tuddin}
+% \begin{macro}{\tud at cdmath@@@init}
+% \changes{v2.06o}{2022/08/01}{neu}
+% \begin{macro}{\tud at cdmath@@@@@init}
+% \changes{v2.06o}{2022/08/01}{neu}
+% \begin{macro}{\tud at cdmath@set}
+% \changes{v2.06o}{2022/08/01}{neu}
+% \begin{macro}{\tud at cdmath@normal at name}
+% \changes{v2.06o}{2022/08/01}{neu}
+% \begin{macro}{\tud at cdmath@bold at name}
+% \changes{v2.06o}{2022/08/01}{neu}
 % \begin{macro}{\tud at 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 at tudnormal{}
-\newcommand*\mv at tudbold{}
-\newcommand*\mv at 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 at mathversion} zurückgesetzt.
-%    \begin{macrocode}
-\AfterPackage*{mathastext}{%
-  \newrobustcmd*\tud at mathversion[1]{%
-    \begingroup%
-      \let\tud at res@a\relax%
-      \if at tud@cdmath at active%
-        \ifstr{#1}{normal}{%
-          \def\tud at res@a{tudnormal}%
-        }{%
-          \ifstr{#1}{bold}{%
-            \def\tud at res@a{tudbold}%
-          }{}%
-        }%
-      \fi%
-      \edef\tud at res@a{%
-        \endgroup%
-        \noexpand\tud at cs@restore{mathversion}%
-        \ifx\tud at res@a\relax%
-          \noexpand\mathversion{#1}%
-        \else%
-          \noexpand\MTversion*{\tud at res@a}%
-        \fi%
-        \noexpand\tud at cs@store{mathversion}%
-        \noexpand\tud at cs@letltx{mathversion}{tud at mathversion}%
-      }%
-    \tud at res@a%
-  }%
-  \AtEndPreamble{%
-    \tud at cs@store{mathversion}%
-    \tud at cs@letltx{mathversion}{tud at mathversion}%
-  }%
-}
-%    \end{macrocode}
-% Mit \cs{tud at cdmath@init} werden für den Mathematikmodus die Schriften im 
-% \CD deklariert.
-%    \begin{macrocode}
 \newcommand*\tud at cdmath@init{%
 %    \end{macrocode}
 % Für die Schriftfamilie \OpenSans existieren leider bisher keine Kodierung für 
@@ -3005,17 +2953,18 @@
 % 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} 
+% Für die LGR-Kodierung werden die Bundles \bdl{cbfonts} und \bdl{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.
+% ließe sich |\font\testfont=grmn1200|\footnote{\file{ltxcheck.tex}} oder der 
+% externe Aufruf \verb+\immediate\openin\pathfont="|kpsewhich grmn1200.tfm"+ 
+% nutzen\footnote{\url{https://tex.stackexchange.com/q/306980}}. 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 zwingend aktiviert sein.
+% \ToDo{cmr nicht zwingend notwendig}[v2.07]%^^A nur wenn \@tud at lgrgreekstrue
 %    \begin{macrocode}
   \@tud at res@swafalse%
-  \if at tud@cdfont at fam@exist%
+  \if at tud@cdmath at fam@exist%
     \@tud at res@swatrue%
     \if at tud@cdoldfont at active\else%
       \tud at if@fdfileexists{LGR}{cmr}{}{%
@@ -3076,17 +3025,23 @@
         subdued,defaultmathsizes,nosmalldelims,noequal,%
         defaultrm,defaultbf,defaultit,defaultsf,defaulttt%
       }{mathastext}%
-      \RequirePackage{mathastext}[2018/08/22]%
+      \RequirePackage{mathastext}
+%    \end{macrocode}
+% \ToDo{cmr nicht notwendig}[v2.07]%^^A {\tud at cdfont@fam}{m}{b}{n}{it}%
+%    \begin{macrocode}
+%^^A \if at tud@lgrgreeks
       \tud at math@declare at lgrgreeks{cmr}{m}{bx}{n}{it}%
+%^^A \else
+%^^A   \tud at math@declare at lgrgreeks{\tud at cdfont@fam}{m}{b}{n}{it}%
+%^^A \fi
     \fi%
     \providecommand*\MTDeclareVersion[6][]{\DeclareMathVersion{##2}}%
-    \providecommand*\MTversion@@[1]{}%
-    \tud at cdmath@@init{\tud at cdfont@fam at lf}{\tud at ttfont@fam}%
+    \tud at cdmath@@init%
 %    \end{macrocode}
-% Die Symbole für aufrechte und kursive griechische Glyphen werden definiert. 
+% Die Symbole für aufrechte und kursive griechische Lettern 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.??]
+% \ToDo{könnte mit \pkg{opensans-math} raus}[v2.08]
 %    \begin{macrocode}
     \if at tud@cdoldfont at active%
       \tud at res@cnt=\z@\relax%
@@ -3100,155 +3055,223 @@
 %    \begin{macrocode}
     \tud at cdmath@declare at char{*}{\mathbin}{symbols}{"03}%
 %    \end{macrocode}
-% Nach der Definition der griechischen Glyphen werden diese~-- inklusive aller 
+% Nach der Definition der griechischen Lettern werden diese~-- inklusive aller 
 % Auswahlvariationen~-- deklariert.
 %    \begin{macrocode}
     \tud at cdmath@also at greeks%
+  \fi%
 %    \end{macrocode}
-% Sollten die notwendigen Schriftfamilien nicht gefunden worden sein, werden 
-% keine separaten Mathematikversionen definiert.
+% Für die Schrift \DIN existiert lediglich eine Mathematikversion, das Vorgehen 
+% ist ähnlich zur \Univers.
 %    \begin{macrocode}
-  \else%
-    \let\mv at tudnormal\mv at normal%
-    \let\mv at tudbold\mv at bold%
-    \if at tud@cdoldfont at active%
+  \if at tud@cdoldfont at active%
+    \if at tud@cdmath at db@exist%
+      \tud at cdmath@db at init{\tud at cdfont@db}%
+    \else%
       \let\mv at tuddin\mv at bold%
     \fi%
   \fi%
 }
+\newcommand*\tud at cdmath@set{}
+\newcommand*\tud at cdmath@normal at name{tudnormal@\tud at cdfont@md\tud at cdfont@bf}%
+\newcommand*\tud at cdmath@bold at name{tudbold@\tud at cdfont@md\tud at cdfont@bf}%
 %    \end{macrocode}
-% Mit \cs{tud at cdmath@@init} werden die notwendigen Mathematikversionen und die 
-% dazugehörigen Symbolschriften sowie Alphabete deklariert.
+% Da eine dynamische Anpassung der Mathematikschriften innerhalb des Dokumentes 
+% an die jeweils aktuell verwendete Schriftart und insbesondere den Schnitt 
+% nicht möglich ist, werden hier für alle möglichen, von \TUDScript angebotenen 
+% Einstellungen der Schriftschnitte die dazu passenden Mathematikversionen 
+% deklariert. Dabei werden die insgesamt vier möglichen Kombinationen für die 
+% beiden Schalter \cs{if at tud@cdfont at heavy} (\opt{cdfont=light/heavy}) und 
+% \cs{if at tud@cdfont at ultrabold} (\opt{cdfont=normalbold/ultrabold}) gesetzt 
+% und dafür die passenden Mathematikversionen definiert.\footnote{Eigentlich 
+% müssten auch noch alle Kombinationen für die Schreibmaschinenschriften 
+% beachtet werden. Dies ist dann aber wohl eher nicht notwendig, zumal für 
+% \opt{ttfont=false} ohnehin nicht zwingend alle notwendigen Schnitte zur 
+% Verfügung stehen könnten.}
 %    \begin{macrocode}
-\newcommand*\tud at x@mathastext at enc{OT1}
-\newcommand*\tud at cdmath@@init[2]{%
+\newcommand*\tud at cdmath@@init{%
+  \begingroup%
+    \let\tud at res@b\@empty%
+    \def\tud at res@a##1##2{%
+      \setbool{@tud at cdfont@heavy}{##1}%
+      \setbool{@tud at cdfont@ultrabold}{##2}%
+      \tud at cdfont@@set%
+      \tud at ttfont@@set%
+      \eappto\tud at res@b{%
+        \noexpand\tud at cdmath@@@init%
+          {\tud at cdmath@normal at name}%
+          {\tud at cdmath@bold at name}%
+          {\tud at cdfont@fam at lf}{\tud at cdfont@md}{\tud at cdfont@bf}{\tud at cdfont@ebf}%
+          {\tud at ttfont@fam}{\tud at ttfont@md}{\tud at ttfont@bf}%
+      }%
+    }%
 %    \end{macrocode}
-% Mit \cs{tud at cdfont@@set} werden die Schriftstärken gemäß den ausgewählten 
-% Schriftoptionen aktiviert (\cs{tud at cdfont@md}, \cs{tud at cdfont@bf}, 
-% \cs{tud at cdfont@ebf}), um diese auch für die Mathematikschriften zu nutzen.
+% Die möglichen Kombinationen für die beiden genannten Schalter werden in einer
+% Gruppe ausgeführt und die mit \cs{tud at cdfont@@set} sowie \cs{tud at ttfont@@set}
+% aktivierten Schriftschnitte als Argumente für \cs{tud at cdmath@@@init} in 
+% \cs{tud at res@b} expandiert.
 %    \begin{macrocode}
-  \tud at cdfont@@set%
-  \tud at ttfont@@set%
+    \tud at res@a{false}{false}%
+    \tud at res@a{false}{true}%
+    \tud at res@a{true}{false}%
+    \tud at res@a{true}{true}%
 %    \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.
+% Für den zugegbener Maßen etwas unwahrscheinlichen Fall, dass die Kombination 
+% aus \opt{cdfont=false} und \opt{cdmath=true} genutzt wird, werden für die 
+% Initialisierung die Schriften des \CDs kurzzeitig aktiviert. Damit wird dem 
+% Umstand Sorge getragen, dass das Paket \pkg{mathastext} bei der Definition 
+% der Mathematikversionen teilweise auf Makros wie \cs{bfdefault} zurückgreift 
+% und diese dementsprechend gesetzt sein sollten.
 %    \begin{macrocode}
+    \if at tud@cdfont at active\else%
+      \preto\tud at res@b{%
+        \@tud at cdfont@activetrue%
+        \tud at font@set[]%
+      }%
+      \appto\tud at res@b{%
+        \@tud at cdfont@activefalse%
+        \tud at font@set[]%
+      }%
+    \fi%
+    \preto\tud at res@b{\endgroup}%
+  \tud at res@b%
+%    \end{macrocode}
+% Mit \cs{tud at cdmath@set} erfolgt bei Bedarf die Auswahl der aktuell benötigten 
+% Mathematikversion, wobei für die Zuweisung \cs{tud at cdmath@normal at name} und 
+% \cs{tud at cdmath@bold at name} in \cs{mv at normal} sowie \cs{mv at bold} expandiert 
+% werden. Die Namen für die Versionen setzen sich dabei aus den Päfixen 
+% \val{tudnormal@} und \val{tudbold@} sowie der Verkettung des regulären und
+% des fetten Schriftschnitts zusammen, welche zum Zeitpunkt des Aufrufs aktiv 
+% sind (Option \opt{cdfont}) und durch \cs{tud at cdfont@@set} gesetzt werden.
+%    \begin{macrocode}
+  \renewcommand*\tud at cdmath@set{%
+    \begingroup%
+      \tud at cdfont@@set%
+      \edef\tud at res@a{%
+        \endgroup%
+        \unexpanded{\letcs\mv at normal}{mv@\tud at cdmath@normal at name}%
+        \unexpanded{\letcs\mv at bold}{mv@\tud at cdmath@bold at name}%
+      }%
+    \tud at res@a%
+  }%
+}
+%    \end{macrocode}
+% Mit \cs{tud at cdmath@@@init} werden die notwendigen Mathematikversionen und die 
+% dazugehörigen Symbolschriften sowie Alphabete für die unterschiedlichen 
+% Kombinationen der Schriftschnitte deklariert. Das Makro verwendet folgende 
+% Argumente:
+% \begin{description}
+%   \item[|\#1|] der Name für die normale Mathematikversion
+%   \item[|\#2|] der Name für die fette Mathematikversion
+%   \item[|\#3|] die verwendete Schriftfamilie
+%   \item[|\#4|] der reguläre Schriftschnitt
+%   \item[|\#5|] der fette Schriftschnitt
+%   \item[|\#6|] der extra-fette Schriftschnitt
+%   \item[|\#7|] die verwendete Schreibmaschinenschrift
+%   \item[|\#8|] der reguläre Schreibmaschinenschnitt
+%   \item[|\#9|] der fette Schreibmaschinenschnitt
+% \end{description}
+%    \begin{macrocode}
+\newcommand*\tud at cdmath@@@init[9]{%
+%    \end{macrocode}
+% Die Deklaration der Mathematikversionen für die alten Schriften. Die 
+% verwendeten Symbole stammen aus dem Paket \pkg{iwona}.
+%    \begin{macrocode}
   \if at tud@cdoldfont at active%
-    \DeclareMathVersion{tudnormal}%
-    \DeclareMathVersion{tudbold}%
-    \DeclareMathVersion{tuddin}%
-    \SetSymbolFont{operators}{tudnormal}{OT1}{#1}{\tud at cdfont@md}{n}%
-    \SetSymbolFont{operators}{tudbold}{OT1}{#1}{\tud at cdfont@bf}{n}%
-    \SetSymbolFont{operators}{tuddin}{OT1}{\tud at cdfont@db}{b}{n}%
-    \SetSymbolFont{letters}{tudnormal}{OML}{#1}{\tud at cdfont@md}{sl}%
-    \SetSymbolFont{letters}{tudbold}{OML}{#1}{\tud at cdfont@bf}{sl}%
-    \SetSymbolFont{letters}{tuddin}{OML}{\tud at cdfont@db}{b}{sl}%
-    \SetSymbolFont{symbols}{tudnormal}{OMS}{#1}{\tud at cdfont@md}{n}%
-    \SetSymbolFont{symbols}{tudbold}{OMS}{#1}{\tud at cdfont@bf}{n}%
-    \SetSymbolFont{symbols}{tuddin}{OMS}{\tud at cdfont@db}{b}{n}%
-    \SetSymbolFont{largesymbols}{tudnormal}{OMX}{iwona}{\tud at cdfont@md}{n}%
-    \SetSymbolFont{largesymbols}{tudbold}{OMX}{iwona}{\tud at cdfont@bf}{n}%
-    \SetSymbolFont{largesymbols}{tuddin}{OMX}{iwona}{ebc}{n}%
-    \SetMathAlphabet{\mathnormal}{tudnormal}{OML}{#1}{\tud at cdfont@md}{sl}%
-    \SetMathAlphabet{\mathnormal}{tudbold}{OML}{#1}{\tud at cdfont@bf}{sl}%
-    \SetMathAlphabet{\mathnormal}{tuddin}{OML}{\tud at cdfont@db}{b}{sl}%
+    \DeclareMathVersion{#1}%
+    \DeclareMathVersion{#2}%
+    \SetSymbolFont{operators}{#1}{OT1}{#3}{#4}{n}%
+    \SetSymbolFont{operators}{#2}{OT1}{#3}{#5}{n}%
+    \SetSymbolFont{letters}{#1}{OML}{#3}{#4}{it}%
+    \SetSymbolFont{letters}{#2}{OML}{#3}{#5}{it}%
+    \SetSymbolFont{symbols}{#1}{OMS}{#3}{#4}{n}%
+    \SetSymbolFont{symbols}{#2}{OMS}{#3}{#5}{n}%
+    \SetSymbolFont{largesymbols}{#1}{OMX}{iwona}{#4}{n}%
+    \SetSymbolFont{largesymbols}{#2}{OMX}{iwona}{#5}{n}%
+    \SetMathAlphabet{\mathnormal}{#1}{OML}{#3}{#4}{it}%
+    \SetMathAlphabet{\mathnormal}{#2}{OML}{#3}{#5}{it}%
     \tud at if@ismathalphabet{\mathbold}{%
-      \SetMathAlphabet{\mathbold}{tudnormal}{OML}{#1}{\tud at cdfont@bf}{sl}%
-      \SetMathAlphabet{\mathbold}{tudbold}{OML}{#1}{\tud at cdfont@ebf}{sl}%
-      \SetMathAlphabet{\mathbold}{tuddin}{OML}{\tud at cdfont@db}{b}{sl}%
+      \SetMathAlphabet{\mathbold}{#1}{OML}{#3}{#5}{it}%
+      \SetMathAlphabet{\mathbold}{#2}{OML}{#3}{#6}{it}%
     }{}%
   \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.
+% Für \OpenSans werden für die fehlenden Kodierungen \val{OML}, \val{OMS} und 
+% \val{OMX} die entsprechenden Symbolschriften eher notdürftig mit dem Paket 
+% \pkg{iwona} definiert. Zur Definition der griechischen Lettern wird die
+% LGR-Kodierung der \OpenSans genutzt.
 %    \begin{macrocode}
-    \edef\tud at res@b{\encodingdefault}%
-    \@tfor\tud at res@a:={T1}{TU}{EU1}{EU2}\do{%
-      \ifx\tud at res@a\tud at res@b%
-        \let\tud at x@mathastext at enc\tud at res@b%
-        \@break at tfor
-      \fi%
-    }%
-    \MTDeclareVersion[it]{tudnormal}%
-      {\tud at x@mathastext at enc}{#1}{\tud at cdfont@md}{n}%
-    \MTDeclareVersion[it]{tudbold}%
-      {\tud at x@mathastext at enc}{#1}{\tud at cdfont@bf}{n}%
-    \SetSymbolFont{operators}{tudnormal}{OT1}{iwona}{\tud at cdfont@md}{n}%
-    \SetSymbolFont{operators}{tudbold}{OT1}{iwona}{\tud at cdfont@bf}{n}%
+    \MTDeclareVersion[it]{#1}{\tud at x@mathastext at enc}{#3}{#4}{n}%
+    \MTDeclareVersion[it]{#2}{\tud at x@mathastext at enc}{#3}{#5}{n}%
+    \SetSymbolFont{operators}{#1}{OT1}{iwona}{#4}{n}%
+    \SetSymbolFont{operators}{#2}{OT1}{iwona}{#5}{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 
+%   U-Kodierung zu erweitern und aufrechte griechische Lettern einzubinden, um 
 %   ein Alphabet zu sparen. Siehe Kodierungen FML/FMS, LML/LMS, LBL/LBS, LS1/LS2
-% }[v2.??]
+% }[v2.08]
 %    \begin{macrocode}
-    \SetSymbolFont{letters}{tudnormal}{OML}{iwona}{\tud at cdfont@md}{it}%
-    \SetSymbolFont{letters}{tudbold}{OML}{iwona}{\tud at cdfont@bf}{it}%
-%^^A    \SetSymbolFont{letters}{tudnormal}{U}{#1m}{\tud at cdfont@md}{it}%
-%^^A    \SetSymbolFont{letters}{tudbold}{U}{#1m}{\tud at cdfont@bf}{it}%
-    \SetSymbolFont{symbols}{tudnormal}{OMS}{iwona}{\tud at cdfont@md}{n}%
-    \SetSymbolFont{symbols}{tudbold}{OMS}{iwona}{\tud at cdfont@bf}{n}%
-    \SetSymbolFont{largesymbols}{tudnormal}{OMX}{iwona}{\tud at cdfont@md}{n}%
-    \SetSymbolFont{largesymbols}{tudbold}{OMX}{iwona}{\tud at cdfont@bf}{n}%
-    \SetSymbolFont{tudupgrk}{tudnormal}{LGR}{#1}{\tud at cdfont@md}{n}%
-    \SetSymbolFont{tuditgrk}{tudnormal}{LGR}{#1}{\tud at cdfont@md}{it}%
-    \SetSymbolFont{tudupgrk}{tudbold}{LGR}{#1}{\tud at cdfont@bf}{n}%
-    \SetSymbolFont{tuditgrk}{tudbold}{LGR}{#1}{\tud at cdfont@bf}{it}%
-%^^A    \SetMathAlphabet{\mathnormal}{tudnormal}{U}{#1m}{\tud at cdfont@md}{it}%
-%^^A    \SetMathAlphabet{\mathnormal}{tudbold}{U}{#1m}{\tud at cdfont@bf}{it}%
+    \SetSymbolFont{letters}{#1}{OML}{iwona}{#4}{it}%
+    \SetSymbolFont{letters}{#2}{OML}{iwona}{#5}{it}%
+%^^A    \SetSymbolFont{letters}{#1}{U}{#3m}{#4}{it}%
+%^^A    \SetSymbolFont{letters}{#2}{U}{#3m}{#5}{it}%
+    \SetSymbolFont{symbols}{#1}{OMS}{iwona}{#4}{n}%
+    \SetSymbolFont{symbols}{#2}{OMS}{iwona}{#5}{n}%
+    \SetSymbolFont{largesymbols}{#1}{OMX}{iwona}{#4}{n}%
+    \SetSymbolFont{largesymbols}{#2}{OMX}{iwona}{#5}{n}%
+    \SetSymbolFont{tuditgrk}{#1}{LGR}{#3}{#4}{it}%
+    \SetSymbolFont{tuditgrk}{#2}{LGR}{#3}{#5}{it}%
+    \SetSymbolFont{tudupgrk}{#1}{LGR}{#3}{#4}{n}%
+    \SetSymbolFont{tudupgrk}{#2}{LGR}{#3}{#5}{n}%
+%^^A    \SetMathAlphabet{\mathnormal}{#1}{U}{#3m}{#4}{it}%
+%^^A    \SetMathAlphabet{\mathnormal}{#2}{U}{#3m}{#5}{it}%
     \tud at if@ismathalphabet{\mathbold}{%
-      \SetMathAlphabet{\mathbold}{tudnormal}%
-        {\tud at x@mathastext at enc}{#1}{\tud at cdfont@bf}{it}%
-      \SetMathAlphabet{\mathbold}{tudbold}%
-        {\tud at x@mathastext at enc}{#1}{\tud at cdfont@ebf}{it}%
-%^^A      \SetMathAlphabet{\mathbold}{tudnormal}{U}{#1m}{\tud at cdfont@bf}{it}%
-%^^A      \SetMathAlphabet{\mathbold}{tudbold}{U}{#1m}{\tud at cdfont@ebf}{it}%
+      \SetMathAlphabet{\mathbold}{#1}{\tud at x@mathastext at enc}{#3}{#5}{it}%
+      \SetMathAlphabet{\mathbold}{#2}{\tud at x@mathastext at enc}{#3}{#6}{it}%
+%^^A      \SetMathAlphabet{\mathbold}{#1}{U}{#3m}{#5}{it}%
+%^^A      \SetMathAlphabet{\mathbold}{#2}{U}{#3m}{#6}{it}%
     }{}%
   \fi%
-  \SetMathAlphabet{\mathrm}{tudnormal}{OT1}{#1}{\tud at cdfont@md}{n}%
-  \SetMathAlphabet{\mathrm}{tudbold}{OT1}{#1}{\tud at cdfont@bf}{n}%
-  \SetMathAlphabet{\mathbf}{tudnormal}{OT1}{#1}{\tud at cdfont@bf}{n}%
-  \SetMathAlphabet{\mathbf}{tudbold}{OT1}{#1}{\tud at cdfont@ebf}{n}%
-  \SetMathAlphabet{\mathsf}{tudnormal}{OT1}{#1}{\tud at cdfont@md}{n}%
-  \SetMathAlphabet{\mathsf}{tudbold}{OT1}{#1}{\tud at cdfont@bf}{n}%
-  \SetMathAlphabet{\mathit}{tudnormal}{OT1}{#1}{\tud at cdfont@md}{it}%
-  \SetMathAlphabet{\mathit}{tudbold}{OT1}{#1}{\tud at cdfont@bf}{it}%
-  \SetMathAlphabet{\mathtt}{tudnormal}{OT1}{#2}{\tud at ttfont@md}{n}%
-  \SetMathAlphabet{\mathtt}{tudbold}{OT1}{#2}{\tud at ttfont@bf}{n}%
+%    \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}
+  \AtBeginDocument{%
+    \tud at if@issymbolfont{legacymaths}{%
+      \SetSymbolFont{legacymaths}{#1}{OT1}{#3}{#4}{n}%
+      \SetSymbolFont{legacymaths}{#2}{OT1}{#3}{#5}{n}%
+    }{}%
+  }%
   \if at tud@cdoldfont at active%
-    \SetMathAlphabet{\mathrm}{tuddin}{OT1}{\tud at cdfont@db}{b}{n}%
-    \SetMathAlphabet{\mathbf}{tuddin}{OT1}{\tud at cdfont@db}{b}{n}%
-    \SetMathAlphabet{\mathsf}{tuddin}{OT1}{\tud at cdfont@db}{b}{n}%
-    \SetMathAlphabet{\mathit}{tuddin}{OT1}{\tud at cdfont@db}{b}{sl}%
-    \SetMathAlphabet{\mathtt}{tuddin}{OT1}{#2}{\tud at ttfont@ebf}{n}%
+    \def\tud at res@a{OT1}%
+  \else%
+    \let\tud at res@a\tud at x@mathastext at enc%
   \fi%
+  \SetMathAlphabet{\mathrm}{#1}{\tud at res@a}{#3}{#4}{n}%
+  \SetMathAlphabet{\mathrm}{#2}{\tud at res@a}{#3}{#5}{n}%
+  \SetMathAlphabet{\mathbf}{#1}{\tud at res@a}{#3}{#5}{n}%
+  \SetMathAlphabet{\mathbf}{#2}{\tud at res@a}{#3}{#6}{n}%
+  \SetMathAlphabet{\mathsf}{#1}{\tud at res@a}{#3}{#4}{n}%
+  \SetMathAlphabet{\mathsf}{#2}{\tud at res@a}{#3}{#5}{n}%
+  \SetMathAlphabet{\mathit}{#1}{\tud at res@a}{#3}{#4}{it}%
+  \SetMathAlphabet{\mathit}{#2}{\tud at res@a}{#3}{#5}{it}%
+  \SetMathAlphabet{\mathtt}{#1}{\tud at res@a}{#7}{#8}{n}%
+  \SetMathAlphabet{\mathtt}{#2}{\tud at res@a}{#7}{#9}{n}%
   \IfFileExists{ueus.fd}{%
-    \SetMathAlphabet{\mathcal}{tudnormal}{U}{eus}{m}{n}%
-    \SetMathAlphabet{\mathcal}{tudbold}{U}{eus}{b}{n}%
-    \if at tud@cdoldfont at active%
-      \SetMathAlphabet{\mathcal}{tuddin}{U}{eus}{b}{n}%
-    \fi%
+    \SetMathAlphabet{\mathcal}{#1}{U}{eus}{m}{n}%
+    \SetMathAlphabet{\mathcal}{#2}{U}{eus}{b}{n}%
   }{}%
   \tud at if@ismathalphabet{\mathfrak}{%
     \IfFileExists{ueuf.fd}{%
-      \SetMathAlphabet{\mathfrak}{tudnormal}{U}{euf}{m}{n}%
-      \SetMathAlphabet{\mathfrak}{tudbold}{U}{euf}{b}{n}%
-      \if at tud@cdoldfont at active%
-        \SetMathAlphabet{\mathfrak}{tuddin}{U}{euf}{b}{n}%
-      \fi%
+      \SetMathAlphabet{\mathfrak}{#1}{U}{euf}{m}{n}%
+      \SetMathAlphabet{\mathfrak}{#2}{U}{euf}{b}{n}%
     }{}%
   }{}%
 %    \end{macrocode}
-% Das Paket \pkg{cmbright} stelt zusätzlich noch Schriftschnitte für die 
+% Das Paket \pkg{cmbright} stellt 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}
@@ -3258,18 +3281,19 @@
     \tud at if@issymbolfont{AMSb}{\@tud at res@swatrue}{}%
     \if at tud@res at swa%
       \if at tud@cdoldfont at active%
-        \DeclareFontFamily{U}{\tud at cdfont@fam at lf a}{}%
-        \DeclareFontShape{U}{\tud at cdfont@fam at lf a}{m}{n}{<->cmbras10}{}%
-        \SetSymbolFont{AMSa}{tudnormal}{U}{\tud at cdfont@fam at lf a}{m}{n}%
-        \SetSymbolFont{AMSa}{tudbold}{U}{\tud at cdfont@fam at lf a}{m}{n}%
-        \DeclareFontFamily{U}{\tud at cdfont@fam at lf b}{}%
-        \DeclareFontShape{U}{\tud at cdfont@fam at lf b}{m}{n}{<->cmbrbs10}{}%
-        \SetSymbolFont{AMSb}{tudnormal}{U}{\tud at cdfont@fam at lf b}{m}{n}%
-        \SetSymbolFont{AMSb}{tudbold}{U}{\tud at cdfont@fam at lf b}{m}{n}%
+        \DeclareFontFamily{U}{#3a}{}%
+        \DeclareFontShape{U}{#3a}{m}{n}{<->cmbras10}{}%
+        \SetSymbolFont{AMSa}{#1}{U}{#3a}{m}{n}%
+        \SetSymbolFont{AMSa}{#2}{U}{#3a}{m}{n}%
+        \DeclareFontFamily{U}{#3b}{}%
+        \DeclareFontShape{U}{#3b}{m}{n}{<->cmbrbs10}{}%
+        \SetSymbolFont{AMSb}{#1}{U}{#3b}{m}{n}%
+        \SetSymbolFont{AMSb}{#2}{U}{#3b}{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.
+% \ToDo{hinweis zu mdsymbol raus, bzw. Laden verzögern!}[v2.07]
 %    \begin{macrocode}
       \else%
         \@ifpackageloaded{mdsymbol}{}{%
@@ -3288,37 +3312,99 @@
         }%
       \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.
+% Auch für die Schrift \DIN werden mathematische Glyphen bereitgestellt. Diese 
+% wurden schon bei der Installation aus dem \pkg{iwona}-Paket entnommen. 
 %    \begin{macrocode}
-    \tud at if@issymbolfont{legacymaths}{%
-      \SetSymbolFont{legacymaths}{tudnormal}{OT1}{#1}{\tud at cdfont@md}{n}%
-      \SetSymbolFont{legacymaths}{tudbold}{OT1}{#1}{\tud at cdfont@bf}{n}%
-      \if at tud@cdoldfont at active%
-        \SetSymbolFont{legacymaths}{tuddin}{OT1}{\tud at cdfont@db}{b}{n}%
-      \fi%
+\if at tud@cdoldfont at active
+  \newcommand*\tud at cdmath@db at init[1]{%
+    \DeclareMathVersion{tuddin}%
+    \SetSymbolFont{operators}{tuddin}{OT1}{#1}{b}{n}%
+    \SetSymbolFont{letters}{tuddin}{OML}{#1}{b}{it}%
+    \SetSymbolFont{symbols}{tuddin}{OMS}{#1}{b}{n}%
+    \SetSymbolFont{largesymbols}{tuddin}{OMX}{iwona}{ebc}{n}%
+    \AtBeginDocument{%
+      \tud at if@issymbolfont{legacymaths}{%
+        \SetSymbolFont{legacymaths}{tuddin}{OT1}{#1}{b}{n}%
+      }{}%
+    }%
+    \SetMathAlphabet{\mathnormal}{tuddin}{OML}{#1}{b}{it}%
+    \tud at if@ismathalphabet{\mathbold}{%
+      \SetMathAlphabet{\mathbold}{tuddin}{OML}{#1}{b}{it}%
     }{}%
+    \SetMathAlphabet{\mathrm}{tuddin}{OT1}{#1}{b}{n}%
+    \SetMathAlphabet{\mathbf}{tuddin}{OT1}{#1}{b}{n}%
+    \SetMathAlphabet{\mathsf}{tuddin}{OT1}{#1}{b}{n}%
+    \SetMathAlphabet{\mathit}{tuddin}{OT1}{#1}{b}{it}%
+    \IfFileExists{ueus.fd}{%
+      \SetMathAlphabet{\mathcal}{tuddin}{U}{eus}{b}{n}%
+    }{}%
+    \tud at if@ismathalphabet{\mathfrak}{%
+      \IfFileExists{ueuf.fd}{%
+        \SetMathAlphabet{\mathfrak}{tuddin}{U}{euf}{b}{n}%
+      }{}%
+    }{}%
 %    \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 at tud@cdoldfont at active%
+    \AtBeginDocument{%
       \if at tud@cdmath at active%
-        \sbox\z@{\mathversion{tudnormal}$ $\mathversion{tuddin}$ $}%
+        \sbox\z@{\mathversion{normal}$ $\mathversion{tuddin}$ $}%
       \fi%
-    \fi%
+    }%
   }%
+\fi
+%    \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 at mathversion} zurückgesetzt.
+%    \begin{macrocode}
+\AfterPackage*{mathastext}{%
+  \newrobustcmd*\tud at mathversion[1]{%
+    \begingroup%
+      \let\tud at res@a\relax%
+      \if at tud@cdmath at active%
+        \tud at if@strequal{#1}{normal}{%
+          \edef\tud at res@a{\tud at cdmath@normal at name}%
+        }{%
+          \tud at if@strequal{#1}{bold}{%
+            \edef\tud at res@a{\tud at cdmath@bold at name}%
+          }{}%
+        }%
+      \fi%
+      \edef\tud at res@a{%
+        \endgroup%
+        \noexpand\tud at cs@restore{mathversion}%
+        \ifx\tud at res@a\relax%
+          \noexpand\mathversion{#1}%
+        \else%
+          \noexpand\MTversion*{\tud at res@a}%
+        \fi%
+        \noexpand\tud at cs@store{mathversion}%
+        \noexpand\tud at cs@letltx{mathversion}{tud at mathversion}%
+      }%
+    \tud at res@a%
+    \ifcsundef{mv@#1}{}{\edef\math at version{#1}}%
+  }%
+  \AtEndPreamble{%
+    \tud at cs@store{mathversion}%
+    \tud at cs@letltx{mathversion}{tud at mathversion}%
+  }%
 }
 %    \end{macrocode}
-% \end{macro}^^A \MTversion@@
 % \end{macro}^^A \MTDeclareVersion
 % \end{macro}^^A \tud at mathversion
-% \end{macro}^^A \mv at tuddin
-% \end{macro}^^A \mv at tudbold
-% \end{macro}^^A \mv at tudnormal
-% \end{macro}^^A \tud at x@mathastext at enc
+% \end{macro}^^A \tud at cdmath@bold at name
+% \end{macro}^^A \tud at cdmath@normal at name
+% \end{macro}^^A \tud at cdmath@set
+% \end{macro}^^A \tud at cdmath@db at init
+% \end{macro}^^A \tud at cdmath@@@init
 % \end{macro}^^A \tud at cdmath@@init
 % \end{macro}^^A \tud at cdmath@init
 % \begin{macro}{\tud at cdmath@declare at symb}
@@ -3362,8 +3448,8 @@
 }
 %    \end{macrocode}
 % Die an \cs{tud at cdmath@declare at symb} und \cs{tud at cdmath@declare at char} 
-% übergebene Letter für Auswahlbefehle erhalten \cs{tud at cdmath@symbol@} als
-% Präfix, wodurch sich die Definitionen für die einzelnen Mathematikversionen 
+% übergebenen Letter für Auswahlbefehle nutzen |\tud at cdfont@symbol at ...| als
+% Präfix, wodurch sich die Definitionen für einzelne Mathematikversionen 
 % beliebig tauschen lassen.
 %    \begin{macrocode}
 \newcommand*\tud at DeclareMathSymbol[4]{%
@@ -3393,12 +3479,12 @@
 % \changes{v2.06}{2019/06/19}{neu}^^A
 % \begin{macro}{\tud at cdmath@symbols at reset}
 % \changes{v2.04}{2015/03/10}{neu}^^A
-% Mit diesen beiden Befehlen kann innerhalb des Dokumentes problemlos zwischen 
+% Durch diese Befehle kann innerhalb des Dokumentes problemlos zwischen 
 % mathematischen Symbolen und Zeichen für die Schriften des \CDs, welche mit 
 % \cs{tud at cdmath@declare at symb} sowie \cs{tud at cdmath@declare at char} deklariert 
 % wurden, und den normalen gewechselt werden. 
 %    \begin{macrocode}
-\newtoks\tud at cdmath@symbols at toks
+\tud at newtoks\tud at cdmath@symbols at toks
 \newcommand*\tud at cdmath@symbols at set{%
 %    \end{macrocode}
 % Die Sicherung der alten Definitionen erfolgt nur einmalig. Die Liste der 
@@ -3449,10 +3535,10 @@
 %    \begin{macrocode}
 \newcommand*\tud at cdmath@symbols at set@chr[1]{%
   \edef\tud at res@a{\global\mathcode`#1=\the\mathcode`#1\relax}%
-  \eaddto at hook\tud at cdmath@symbols at toks{\tud at res@a}%
+  \addto at hook@expandafter\tud at cdmath@symbols at toks{\tud at res@a}%
 %    \end{macrocode}
 % Für das Überschreiben des \cs{mathcode} des gewünschen \meta{Zeichen} wird 
-% dieser aus der Bedeutung von \cs{tud at cdmath@symbols@\meta{Zeichen}} mit
+% dieser aus der Bedeutung von |\tud at cdmath@symbols@|\meta{Zeichen} mit
 % \cs{meaning} herausgelöst.
 %    \begin{macrocode}
   \begingroup%
@@ -3478,14 +3564,14 @@
 %
 % 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 Befehle
+% auch bei diesen 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 at cdmath@symbols at set} und \cs{tud at cdmath@symbols at reset} verantwortlich,
 % welche die von \cs{tud at cdmath@declare at symb} und \cs{tud at cdmath@declare at char} 
 % erzeugten Listen \cs{tud at cdmath@symb at list} und \cs{tud at cdmath@char at list} 
 % nutzen.
-% \ToDo{Codierungen \val{LS1/LS2}; siehe \pkg{stix,libertinust1math}}[v2.??]
+% \ToDo{Kodierungen \val{LS1/LS2}; siehe \pkg{stix,libertinust1math}}[v2.08]
 % \begin{macro}{\tud at cdmath@declare at greek@uc}
 % \changes{v2.04}{2015/03/10}{neu}^^A
 % Hiermit werden die Auswahlbefehle für Majuskeln der der griechischen Lettern 
@@ -3500,8 +3586,8 @@
 % \end{macro}^^A \tud at cdmath@declare at greek@uc
 % \begin{macro}{\tud at cdmath@declare at greek@lc}
 % \changes{v2.06}{2018/07/17}{neu}^^A
-% Aufrechte griechische  Minuskeln sind in den mathematischen Kodierungen von 
-% \LaTeXe{} leider nicht enthalten, weshalb diese hier auch nicht für die 
+% Aufrechte griechische Minuskeln sind in den mathematischen Kodierungen von 
+% \LaTeX{} leider nicht enthalten, weshalb diese hier auch nicht für die 
 % normale OML-Kodierung deklariert werden können.
 %    \begin{macrocode}
 \newcommand*\tud at cdmath@declare at greek@lc[1]{%
@@ -3508,10 +3594,10 @@
   \tud at cdmath@declare at symb{it#1}{\mathalpha}{letters}{\the\tud at res@cnt}%
 %    \end{macrocode}
 % Für aufrechte griechische Minuskeln gibt es gewöhnlich keine Symbolschrift, 
-% weshalb der Eintrag \cs{up\meta{Letter}} in \cs{tud at cdmath@symb at list} gesetzt 
-% wird, was mit einem fehlenden \cs{tud at cdmath@symbol@\meta{Letter}} zu einem 
-% undefinierten \cs{up\meta{Letter}} bei \opt{cdmath=true} führt.
-% \ToDo{falls irgendwann erweiterte OML-Kodierung existiert, dann nutzen}[v2.??]
+% weshalb der Eintrag |\up|\meta{Letter} in \cs{tud at cdmath@symb at list} gesetzt 
+% wird, was mit einem fehlenden |\tud at cdmath@symbol@|\meta{Letter} zu einem 
+% undefinierten |\up|\meta{Letter} bei \opt{cdmath=true} führt.
+% \ToDo{falls irgendwann erweiterte OML-Kodierung existiert, dann nutzen}[v2.08]
 %    \begin{macrocode}
 %^^A  \tud at cdmath@declare at symb{it##1}{\mathalpha}{letters}%
 %^^A    {\the\numexpr\tud at res@cnt+128\relax}%
@@ -3526,10 +3612,10 @@
 % \changes{v2.06}{2019/06/19}{neu}^^A
 % \changes{v2.06d}{2019/08/27}{Ligaturen für Lua\LaTeX{} deaktiviert}^^A
 % \changes{v2.06n}{2021/07/15}{\cs{mathord} statt \cs{mathalpha}}^^A
-% Die \OpenSans hält die griechischen Glyphen nur in der LGR-Kodierung bereit. 
+% Die \OpenSans hält die griechischen Lettern nur in der LGR-Kodierung bereit. 
 % Hiermit werden diese für den mathematischen Satz definiert. Die übergebenen 
 % Argumente an das Makro \cs{tud at cdmath@declare at greek@@lgr} sind Bezeichnung 
-% und LGR-Slot der Glyphe.
+% und LGR-Slot der Letter.
 %    \begin{macrocode}
 \newcommand*\tud at cdmath@declare at greek@lgr{%
   \tud at cdmath@declare at greek@@lgr{Gamma}{71}%
@@ -3608,7 +3694,7 @@
 % \begin{macro}{\tud at cdmath@also@@@greeks}
 % \changes{v2.06}{2019/06/19}{neu}^^A
 % Das ist quasi das Gegenstück zu \cs{tud at math@map at greeks}. Alle bekannten 
-% Variationen der Auswahlbefehle für griechische Glyphen werden durch die 
+% Variationen der Auswahlbefehle für griechische Lettern werden durch die 
 % Definitionen für die Mathematikschriften im \CD gespiegelt.
 %    \begin{macrocode}
 \newcommand*\tud at cdmath@also at greeks{%
@@ -3631,7 +3717,7 @@
   }%
 }
 \newcommand*\tud at cdmath@also@@@greeks[1]{%
-  \tud at lowerstring\tud at res@a{#1}%
+  \tud at strlowercase\tud at res@a{#1}%
   \edef\tud at res@a{Up\tud at res@a}%
   \ifcsundef{\tud at res@a}{}{%
     \expandafter\tud at cdmath@declare at alias\expandafter{\tud at res@a}{up#1}%
@@ -3648,10 +3734,10 @@
 % 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
+% das Mapping der griechischen Lettern geändert, zum anderen werden die
 % originalen Mathematikversionen überschrieben respektive wiederhergestellt.
 %    \begin{macrocode}
-\newcommand*\tud at math@set{%
+\newcommand*\tud at math@set[1][\tud at cdmath@wrn]{%
 %    \end{macrocode}
 % Beim Aktivieren der Mathematikschriften im \CD werden einmalig alle Warnungen 
 % ausgegeben, falls bei der Initialisierung Probleme aufgetreten sind und 
@@ -3658,15 +3744,14 @@
 % dementsprechend der Hook \cs{tud at cdmath@wrn} gefüllt wurde.
 %    \begin{macrocode}
   \if at tud@cdmath at active%
-    \tud at cdmath@wrn%
+    #1%
     \tud at cs@store{mv at normal}%
     \tud at cs@store{mv at bold}%
-    \let\mv at normal\mv at tudnormal%
-    \let\mv at bold\mv at tudbold%
+    \tud at cdmath@set%
     \tud at cdmath@symbols at set%
 %    \end{macrocode}
 % Anschließend erfolgt~-- abhängig von der Option \opt{slantedgreek}~-- die 
-% Einstellung der Neigung der griechischen Glyphen.
+% Einstellung der Neigung der griechischen Lettern.
 %    \begin{macrocode}
     \ifcase\tud at slantedgreek@num\relax% upright
       \tud at math@loop at greeks@all\tud at math@upright at greeks%
@@ -3677,11 +3762,17 @@
       \tud at math@loop at greeks@lc\tud at math@slanted at greeks%
     \fi%
   \else%
+%    \end{macrocode}
+% \ToDo{\opt{slantedgreek} auswerten?}[v2.07]
+%    \begin{macrocode}
     \tud at cs@restore{mv at normal}%
     \tud at cs@restore{mv at bold}%
     \tud at cdmath@symbols at reset%
   \fi%
-  \mathversion{normal}%
+%    \end{macrocode}
+% Zuletzt wird die aktuell gewählte Mathematikversion erneut aufgerufen.
+%    \begin{macrocode}
+  \expandafter\mathversion\expandafter{\math at version}%
 }
 %    \end{macrocode}
 % \end{macro}^^A \tud at math@set
@@ -3689,8 +3780,8 @@
 % \changes{v2.06}{2018/07/02}{neu}^^A
 % \begin{macro}{\tud at math@slanted at 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.
+% Mit den beiden Befehlen kann die Definition der griechischen Lettern entweder 
+% auf aufrecht bzw. kursiv gesetzt werden.
 %    \begin{macrocode}
 \newcommand*\tud at math@upright at greeks[1]{%
   \ifcsundef{up#1}{}{%
@@ -3707,126 +3798,25 @@
 %    \end{macrocode}
 % \end{macro}^^A \tud at math@slanted at greeks
 % \end{macro}^^A \tud at math@upright at 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 at font@set} werden diese anschließend 
-% gesichert.
-%    \begin{macrocode}
-  \if at tud@x at mweights@enabled%
-    \ifundef{\bfseries at rm}{\edef\bfseries at rm{\bfdefault}}{}%
-    \ifundef{\mdseries at rm}{\edef\mdseries at rm{\mddefault}}{}%
-    \ifundef{\bfseries at sf}{\edef\bfseries at sf{\bfdefault}}{}%
-    \ifundef{\mdseries at sf}{\edef\mdseries at sf{\mddefault}}{}%
-    \ifundef{\bfseries at tt}{\edef\bfseries at tt{\bfdefault}}{}%
-    \ifundef{\mdseries at tt}{\edef\mdseries at tt{\mddefault}}{}%
-  \fi%
-%    \end{macrocode}
-% Hier wird auf das Vorhandensein aller benötigten Schriften geprüft.
-%    \begin{macrocode}
-  \tud at 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 at cdfont@init%
-  \tud at ttfont@init%
-  \tud at 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 at tud@x at bm@requested%
-    \UnPreventPackageFromLoading{bm}%
-    \if at tud@cdmath at active%
-      \tud at cs@store{mv at normal}%
-      \tud at cs@store{mv at bold}%
-      \let\mv at normal\mv at tudnormal%
-      \let\mv at bold\mv at tudbold%
-    \fi%
-    \RequirePackage{bm}[2017/01/16]%
-    \tud at cs@restore{mv at normal}%
-    \tud at cs@restore{mv at 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 at tud@x at siunitx@enabled%
-    \if at tud@cdfont at active%
-      \if at tud@cdfont at heavy%
-        \def\tud at reserved{\TUDoptions{cdfont=heavy}}%
-      \else%
-        \def\tud at reserved{\TUDoptions{cdfont=true}}%
-      \fi%
-    \else%
-      \def\tud at reserved{\TUDoptions{cdfont=false}}%
-    \fi%
-    \expandafter\AfterEndPreamble\expandafter{\tud at 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 at 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 at font@set%
-%    \end{macrocode}
-% Bereitstellung der Auswahlbefehle für griechische Glyphen in der Nomenklatur 
-% von \TUDScript (\cs{up\meta{Letter}}, \cs{it\meta{Letter}}).
-%    \begin{macrocode}
-  \tud at math@map at greeks%
-%    \end{macrocode}
-% Für die griechischen Glyphen wird mit \cs{tud at math@checkslanted at 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 at math@checkslanted at greeks%
-%    \end{macrocode}
-% Nachdem alle Vorbereitungen getroffen wurden, werden die Schriften für den 
-% mathematischen Satz nun endlich gesetzt.
-%    \begin{macrocode}
-  \AtBeginDocument{\tud at math@set}%
-}
-%    \end{macrocode}
 %
 % \iffalse
 %<*class>
 % \fi
 %
-% \subsubsection{Schriften für die speziellen Seitenstile}
+% \subsubsection{Schriften für die Seitenstile der \TUDScript-Klassen}
 %
 % \begin{macro}{\tud at head@font at 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 at head@cdfont at set}%
+% \begin{macro}{\tud at head@cdfont at set}
 % \changes{v2.06}{2018/06/29}{neu}^^A
 % \begin{macro}{\tud at head@font at light}
 % \begin{macro}{\tud at head@font at bold}
 % \begin{macro}{\tud at head@font@@bold}
 % \changes{v2.05}{2016/04/17}{neu}^^A
+% \begin{macro}{\tud at font@phantomglyphs}
+% \changes{v2.06o}{2022/07/25}{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
@@ -3836,6 +3826,7 @@
 % wird verwendet, um die Einstellung der fetten Schriften ohne die fixierte 
 % Schriftgröße nutzen zu können.
 %    \begin{macrocode}
+\newcommand*\tud at font@phantomglyphs{\"A\"O\"Ugjpqy}
 \newcommand*\tud at head@font at light{}
 \newcommand*\tud at head@font at bold{}
 %<poster>\newcommand*\tud at head@font@@bold{}
@@ -3865,22 +3856,22 @@
   \if at tud@head at font@set%
     \if at tud@x at mweights@enabled%
       \DeclareFixedFont{\tud at head@font at light}{\encodingdefault}%
-        {\sfdefault}{\mdseries at sf}{\updefault}{\tud at head@fontsize}%
+        {\sfdefault}{\mdseries at sf}{\shapedefault}{\tud at head@fontsize}%
       \DeclareFixedFont{\tud at head@font at bold}{\encodingdefault}%
-        {\sfdefault}{\bfseries at sf}{\updefault}{\tud at head@fontsize}%
+        {\sfdefault}{\bfseries at sf}{\shapedefault}{\tud at head@fontsize}%
 %<*poster>
       \protected\gdef\tud at head@font@@bold{%
-        \usefont{\encodingdefault}{\sfdefault}{\bfseries at sf}{\updefault}%
+        \usefont{\encodingdefault}{\sfdefault}{\bfseries at sf}{\shapedefault}%
       }%
 %</poster>
     \else%
       \DeclareFixedFont{\tud at head@font at light}{\encodingdefault}%
-        {\sfdefault}{\mddefault}{\updefault}{\tud at head@fontsize}%
+        {\sfdefault}{\mddefault}{\shapedefault}{\tud at head@fontsize}%
       \DeclareFixedFont{\tud at head@font at bold}{\encodingdefault}%
-        {\sfdefault}{\bfdefault}{\updefault}{\tud at head@fontsize}%
+        {\sfdefault}{\bfdefault}{\shapedefault}{\tud at head@fontsize}%
 %<*poster>
       \protected\gdef\tud at head@font@@bold{%
-        \usefont{\encodingdefault}{\sfdefault}{\bfdefault}{\updefault}%
+        \usefont{\encodingdefault}{\sfdefault}{\bfdefault}{\shapedefault}%
       }%
 %</poster>
     \fi%
@@ -3943,6 +3934,7 @@
   }%
 \fi
 %    \end{macrocode}
+% \end{macro}^^A \tud at font@phantomglyphs
 % \end{macro}^^A \tud at head@font@@bold
 % \end{macro}^^A \tud at head@font at bold
 % \end{macro}^^A \tud at head@font at light
@@ -3951,9 +3943,286 @@
 %
 % \iffalse
 %</class>
+% \fi
+%
+% \subsection{Kompatibilität der Schriften}
+% \subsubsection{Majuskel-ß für Unicode-Prozessoren}
+%
+% Es wird für die Majuskelvariante der Letter \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 at 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 Letter nicht vorhanden ist.
+%    \begin{macrocode}
+\ifx\tud at reserved\@empty
+  \RequirePackage{newunicodechar}
+  \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 at raggedright}
+% \begin{macro}{\tud at 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 beispielsweise in \cs{LaTeXraggedright} 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 at raggedright{\raggedright}
+\newcommand*\tud at RaggedRight{\raggedright}
+\AfterPackage*{ragged2e}{%
+  \ifundef{\LaTeXraggedright}{}{%
+    \renewcommand*\tud at raggedright{\LaTeXraggedright}%
+  }%
+  \renewcommand*\tud at RaggedRight{\RaggedRight}%
+}
+%    \end{macrocode}
+% \end{macro}^^A \tud at RaggedRight
+% \end{macro}^^A \tud at raggedright
+%
+% \subsubsection{Anpassungen für das Paket \pkg{siunitx}}
+%
+% \begin{macro}{\lseries}
+% \begin{macro}{\tud at x@siunitx at mapping}
+% \changes{v2.06o}{2022/08/08}{neu}
+% \begin{macro}{\tud at x@siunitx at reset}
+% \changes{v2.06o}{2022/07/31}{neu}
+%    \begin{macrocode}
+\AfterAtEndOfPackage*{siunitx}{%
+  \IfPackageAtLeastTF{siunitx}{2021-04-18}{%
+%    \end{macrocode}
+% Das Paket \pkg{siunitx} in der Version |v3| stellt eine Schnittstelle für 
+% die Zuordnung von Schriftschnitten zur verwendeten Mathematikversionen zur
+% Verfügung. Da vorher erheblicher Aufwand betrieben wurde, die korrekten
+% Schriftschnitte im Mathematikmodus mit den Versionen |normal| und |bold|
+% bereitzustellen, werden bei aktivierten Schriften des \CDs die entsprechenden
+% Zuordnungen gesetzt.
+%    \begin{macrocode}
+    \newcommand*\tud at x@siunitx at mapping{%
+      \if at tud@cdfont at active
+        \csname keys_set:nx\endcsname { siunitx / series-version-mapping }
+          {
+            \tud at cdfont@md  = normal,
+            \tud at cdfont@bf  = bold,
+            \tud at cdfont@ebf = bold
+          }
+      \else
+%    \end{macrocode}
+% Zurücksetzen auf die Standardeinstellungen von \pkg{siunitx}.
+%    \begin{macrocode}
+        \csname keys_set:nn\endcsname { siunitx / series-version-mapping }
+          {
+            ul = light  ,
+            el = light  ,
+            l  = light  ,
+            sl = light  ,
+            m  = normal ,
+            sb = bold   ,
+            b  = bold   ,
+            eb = bold   ,
+            ub = bold
+          }
+      \fi
+    }
+    \xapptocmd\tud at font@set%
+      {\tud at x@siunitx at mapping}%
+      {}{\tud at patch@wrn{tud at font@set}}%
+  }{%
+%    \end{macrocode}
+% Das Paket \pkg{siunitx} in der Version |v2| 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. Deshalb werden am Ende der Präambel die Schrifteinstellungen mit 
+% \opt{cdfont}|=|\val{false} deaktiviert und zu Beginn des Dokumentes auf die 
+% aktuelle Einstellung gesetzt. Dieser etwas merkwürdige Workaround geht auf 
+% die gemeldeten Probleme im \GitHubRepo<22> sowie im \Forum<503> zurück.
+%    \begin{macrocode}
+    \newcommand*\tud at x@siunitx at reset{}%
+    \providecommand*\lseries{\fontseries{l}\selectfont}%
+    \AtEndPreamble{%
+      \if at tud@cdfont at active%
+        \if at tud@cdfont at heavy%
+          \def\tud at x@siunitx at reset{\TUDoptions{cdfont=heavy}}%
+        \else%
+          \def\tud at x@siunitx at reset{\TUDoptions{cdfont=true}}%
+        \fi%
+        \appto\tud at x@siunitx at reset{\tud at font@set[]}%
+        \TUDoptions{cdfont=false}%
+        \tud at font@set[]%
+      \fi%
+    }%
+    \AtBeginDocument{\tud at x@siunitx at reset}%
+  }
+}
+%    \end{macrocode}
+% \end{macro}^^A \tud at x@siunitx at reset
+% \end{macro}^^A \tud at x@siunitx at mapping
+% \end{macro}^^A \lseries
+%
+% \subsubsection{Mathematikschriften in Verbindung mit dem Paket \pkg{bm}}
+%
+% \begin{macro}{\tud at x@bm at delayed}
+% \begin{macro}{\if at tud@x at 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. Dieser Workaround geht auf
+% eine Meldung im \Forum<448> zurück.
+%    \begin{macrocode}
+\tud at newif\if at tud@x at 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 at x@bm at requestedtrue]{bm}
+%<*package>
+}
+%</package>
+%    \end{macrocode}
+% Wird das Paket verzögert geladen, so werden die Mathematikschriften des \CDs 
+% aktiviert (falls zuvor angefordert), damit die durch das Paket \pkg{bm} 
+% vollzogenen Einstellungen für diese auch wirksam werden. Anschließend wird
+% der Ausgangszustand wiederhergestellt, um den späteren und erstmaligen Aufruf 
+% von \cs{tud at math@set} vollständig abarbeiten zu können.
+%    \begin{macrocode}
+\newcommand*\tud at x@bm at delayed{%
+  \if at tud@x at bm@requested%
+    \UnPreventPackageFromLoading{bm}%
+    \if at tud@cdmath at active%
+      \tud at cs@store{mv at normal}%
+      \tud at cs@store{mv at bold}%
+      \tud at cdmath@set%
+    \fi%
+    \RequirePackage{bm}
+    \tud at cs@restore{mv at normal}%
+    \tud at cs@restore{mv at bold}%
+  \fi%
+  \let\tud at x@bm at delayed\relax%
+}
+%    \end{macrocode}
+% Für die \OpenSans kommt das Paket \pkg{mathastext} zum Einsatz. In diesem 
+% Fall muss das Paket \pkg{bm} bereits zuvor geladen werden.
+%    \begin{macrocode}
+\BeforePackage{mathastext}{\tud at x@bm at delayed}
+%    \end{macrocode}
+% \end{macro}^^A \if at tud@x at bm@requested
+% \end{macro}^^A \tud at x@bm at delayed
+%
+% \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}
+%
+% \subsection{Aktivieren der gewählten Schriften}
+%
+% Die eigentliche Schriftauswahl erfolgt~-- abhängig von den zuvor gesetzten 
+% Einstellungen~-- erst am Ende der Präambel, um etwaige Voreinstellungen
+% anderer Schriftpakete beachten zu können. Dabei erfolgt die Auswahl der
+% Schriften für den Mathematiksatz durch \cs{AtBeginDocument} innerhalb von 
+% \cs{AtEndPreamble} am Ende \emph{möglichst aller} \cs{AtBeginDocument}.
+% \ToDo{das passt mit den neuen hooks so nicht mehr unbedingt}[v2.07]
+%    \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 at font@set} werden diese anschließend 
+% gesichert.
+%    \begin{macrocode}
+  \if at tud@x at mweights@enabled%
+    \ifundef{\bfseries at rm}{\edef\bfseries at rm{\bfdefault}}{}%
+    \ifundef{\mdseries at rm}{\edef\mdseries at rm{\mddefault}}{}%
+    \ifundef{\bfseries at sf}{\edef\bfseries at sf{\bfdefault}}{}%
+    \ifundef{\mdseries at sf}{\edef\mdseries at sf{\mddefault}}{}%
+    \ifundef{\bfseries at tt}{\edef\bfseries at tt{\bfdefault}}{}%
+    \ifundef{\mdseries at tt}{\edef\mdseries at tt{\mddefault}}{}%
+  \fi%
+%    \end{macrocode}
+% Hier wird auf das Vorhandensein aller benötigten Schriften geprüft.
+%    \begin{macrocode}
+  \tud at cdfont@check%
+%    \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 at cdfont@init%
+  \tud at ttfont@init%
+%    \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 at 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 at font@set%
+%    \end{macrocode}
+% Die Definitionen für den Mathematiksatz erfolgen erst zu Dokumentbeginn, um
+% auf Einstellungen von anderen Schriftpaketen reagieren zu können. Wurde
+% jedoch das Paket \pkg{bm} angefordert, so müssen die Mathematikschriften
+% bereits zum Ende der Präambel über \cs{tud at x@bm at delayed} initialisiert werden.
+%    \begin{macrocode}
+  \tud at cdmath@init%
+  \tud at x@bm at delayed%
+%    \end{macrocode}
+% Bereitstellung der Auswahlbefehle für griechische Lettern in der Nomenklatur 
+% von \TUDScript (|\up|\meta{Letter}, |\it|\meta{Letter}).
+%    \begin{macrocode}
+  \tud at math@map at greeks%
+%    \end{macrocode}
+% Für die griechischen Lettern wird mit \cs{tud at math@checkslanted at 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 at math@checkslanted at greeks%
+%    \end{macrocode}
+% Nachdem alle Vorbereitungen getroffen wurden, werden die Schriften für den 
+% mathematischen Satz nun endlich gesetzt.
+%    \begin{macrocode}
+  \AtBeginDocument{\tud at math@set}%
+%    \end{macrocode}
+% \ToDo{Hook definieren, um Anwender eigenen Kram definieren zu lassen}[v2.07]
+%    \begin{macrocode}
+}
+%    \end{macrocode}
+%
+% \iffalse
 %</body>
 % \fi
 %
-% \Finale
+% \PrintBackMatter
 %
 \endinput

Modified: trunk/Master/texmf-dist/source/latex/tudscr/tudscr-frontmatter.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tudscr/tudscr-frontmatter.dtx	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/source/latex/tudscr/tudscr-frontmatter.dtx	2022-08-09 20:01:54 UTC (rev 64085)
@@ -1,10 +1,10 @@
-% \CheckSum{817}
 % \iffalse meta-comment
+%/GitFileInfo=tudscr-frontmatter.dtx
 %
 %  TUD-Script -- Corporate Design of Technische Universität Dresden
 % ----------------------------------------------------------------------------
 %
-%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2021
+%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2022
 %
 % ----------------------------------------------------------------------------
 %
@@ -23,33 +23,19 @@
 %
 % \fi
 %
-% \CharacterTable
-%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-%   Digits        \0\1\2\3\4\5\6\7\8\9
-%   Exclamation   \!     Double quote  \"     Hash (number) \#
-%   Dollar        \$     Percent       \%     Ampersand     \&
-%   Acute accent  \'     Left paren    \(     Right paren   \)
-%   Asterisk      \*     Plus          \+     Comma         \,
-%   Minus         \-     Point         \.     Solidus       \/
-%   Colon         \:     Semicolon     \;     Less than     \<
-%   Equals        \=     Greater than  \>     Question mark \?
-%   Commercial at \@     Left bracket  \[     Backslash     \\
-%   Right bracket \]     Circumflex    \^     Underscore    \_
-%   Grave accent  \`     Left brace    \{     Vertical bar  \|
-%   Right brace   \}     Tilde         \~}
-%
-% \iffalse
-%%% From File: tudscr-frontmatter.dtx
+% \iffalse ins:batch + dtx:driver
+%<*ins>
+\ifx\documentclass\undefined
+  \input docstrip.tex
+  \ifToplevel{\batchinput{tudscr.ins}}
+\else
+  \let\endbatchfile\relax
+\fi
+\endbatchfile
+%</ins>
 %<*dtx>
-% \fi
-%
-\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
-\ProvidesFile{tudscr-frontmatter.dtx}[2020/07/27 v2.06i TUD-Script\space%
-  (frontmatter)%
-]
-%
-% \iffalse
+\ProvidesFile{tudscr-frontmatter.dtx}[2022/08/09]
+\RequirePackage{tudscr-gitinfo}
 \documentclass[english,ngerman,xindy]{tudscrdoc}
 \iftutex
   \usepackage{fontspec}
@@ -59,18 +45,11 @@
 \fi
 \usepackage{babel}
 \usepackage{tudscrfonts}
-\KOMAoptions{parskip=half-}
-\usepackage{bookmark}
 \usepackage[babel]{microtype}
 
-\CodelineIndex
-\RecordChanges
-\GetFileInfo{tudscr-frontmatter.dtx}
-\title{\file{\filename}}
-\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
-\date{\fileversion\nobreakspace(\filedate)}
-
+\GitHubBase{\TUDScriptRepository}
 \begin{document}
+  \author{Falk Hanisch\TUDScriptContactTitle}
   \maketitle
   \tableofcontents
   \DocInput{\filename}
@@ -83,6 +62,8 @@
 % \changes{v2.02}{2014/07/08}{\cs{FamilyKeyState} wird von Optionen genutzt}^^A
 % \changes{v2.05}{2015/07/07}{Umgebung \env{abstract} für Poster}^^A
 %
+%
+%
 % \section{Befehle und Umgebungen für den Vorspann}
 %
 % Im Vorspann des Dokumentes kann der Benutzer eine Zusammenfassung oder auch 
@@ -93,11 +74,8 @@
 % werden die Begriffe \enquote*{Zusammenfassung}, \enquote*{Kurzfassung} sowie
 % \enquote*{Erklärung} für die unterschiedlichen Elemente als gleichwertige 
 % Synonyme verwendet. Die Schalter und Befehle zum Setzen der Optionen heißen
-% entweder \cs{tud at abstract@\dots} oder aber \cs{tud at declaration@\dots} je nach
-% Element.
+% entweder |\tud at abstract@...| oder |\tud at declaration@...| je nach Element.
 %
-% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
-%
 % \iffalse
 %<*class&body>
 % \fi
@@ -118,7 +96,7 @@
 %    \end{macrocode}
 % Danach erfolgt ggf. die Prüfung der resultierenden Seitenhöhe.
 %    \begin{macrocode}
-  \ifnumless{\csuse{tud@#1 at level@num}}{3}{% false/true/section
+  \ifnum\csuse{tud@#1 at level@num}<3\relax% false/true/section
     \ifboolexpr{%
       bool {@titlepage} and bool {@tud@#1 at fil} and bool {@tud@#1 at multi}%
     }{%
@@ -145,12 +123,12 @@
 % jede Erklärung immer auf eine neue Seite gesetzt. Die Optionen zum vertikalen 
 % Zentrieren wird ignoriert. Auf eine Warnung für den Anwender wird verzichtet.
 %    \begin{macrocode}
-  }{% chapter
+  \else% chapter
 %<*book|report>
     \boolfalse{@tud@#1 at multi}%
     \boolfalse{@tud@#1 at fil}%
 %</book|report>
-  }%
+  \fi%
 %    \end{macrocode}
 % Zum Schluss wird ggf. der gesammelte Eintrag im Inhaltsverzeichnis erstellt.
 % Danach wird das übergebene Argument ausgeführt.
@@ -176,50 +154,49 @@
 %
 % \begin{macro}{\tud at fm@toc}
 % \changes{v2.04}{2015/03/20}{neu}^^A
-% \changes{v2.06}{2018/02/22}{%
-%   Bugfix: \cs{csuse\{phantomsection\}} für Anker%
-% }^^A
+% \changes{v2.06}{2018/02/22}{Bugfix: \cs{phantomsection} für Anker}^^A
 % \begin{macro}{\tud at fm@@toc}
 % \changes{v2.04}{2015/03/20}{neu}^^A
-% \begin{macro}{\tud at fm@@@toc}
-% \changes{v2.04}{2015/03/20}{neu}^^A
 % Ist die Einstellung \val{tocaggregate} aktiv, wird der gesammelte Eintrag ins 
 % Inhaltsverzeichnis generiert.
 %    \begin{macrocode}
 \newcommand*\tud at fm@@toc{}
-\newcommand*\tud at fm@@@toc{}
 \newcommand*\tud at fm@toc[2]{%
 %    \end{macrocode}
-% Der gesammelte Eintrag aller Überschriften ins Inhaltsverzeichnis.
+% Der gesammelte Eintrag aller Überschriften ins Inhaltsverzeichnis. Dafür 
+% wird der komplette Inhalt in einer Box gesetzt und nur die Überschriften
+% aggregiert.
 %    \begin{macrocode}
   \ifbool{@tud@#1 at multi}{%
     \begingroup%
-      \let\tud at fm@@@toc\@empty%
+      \let\tud at fm@@toc\@empty%
       \renewcommand*\tud at fm@head[2]{%
-        \protected at edef\@tempa{##2}%
-        \protected at xdef\tud at fm@@toc{\tud at fm@@@toc\@tempa}%
-        \protected at xdef\tud at fm@@@toc{\tud at fm@@toc/}%
+        \protected at xdef\tud at fm@@toc{%
+          \ifx\tud at fm@@toc\@empty\else\tud at fm@@toc/\fi##2%
+        }%
       }%
       \let\clearpage\relax%
       \sbox\z@{\vbox{#2}}%
       \csuse{phantomsection}%
       \protected at edef\@tempa{%
-        \noexpand\endgroup%
-        \noexpand\ifnumodd{\csname tud@#1 at toc@num\endcsname}{%
+        \endgroup%
+        \ifx\tud at fm@@toc\@empty\else%
+          \ifodd\csuse{tud@#1 at toc@num}\relax
 %<*book|report>
-          \noexpand\addchaptertocentry{}{\tud at fm@@toc}%
+            \noexpand\addchaptertocentry{}{\tud at fm@@toc}%
 %</book|report>
 %<*article>
-          \noexpand\addsectiontocentry{}{\tud at fm@@toc}%
+            \noexpand\addsectiontocentry{}{\tud at fm@@toc}%
 %</article>
-        }{%
+          \else
 %<*book|report>
-          \noexpand\addsectiontocentry{}{\tud at fm@@toc}%
+            \noexpand\addsectiontocentry{}{\tud at fm@@toc}%
 %</book|report>
 %<*article>
-          \noexpand\addsubsectiontocentry{}{\tud at fm@@toc}%
+            \noexpand\addsubsectiontocentry{}{\tud at fm@@toc}%
 %</article>
-        }%
+          \fi
+        \fi%
       }%
     \@tempa%
   }{%
@@ -239,7 +216,6 @@
   }%
 }
 %    \end{macrocode}
-% \end{macro}^^A \tud at fm@@@toc
 % \end{macro}^^A \tud at fm@@toc
 % \end{macro}^^A \tud at fm@toc
 %
@@ -257,10 +233,10 @@
 % \changes{v2.04}{2015/03/20}{Reimplementierung}^^A
 % \changes{v2.05}{2015/07/14}{Bugfix bei vertikaler Zentrierung}^^A
 % Mit diesen Makros werden bei der Ausgabe der einzelnen Erklärungen alle
-% relevanten Optionen\footnote{\ignorespaces%
-%   \opt{titlepage}, \opt{twocolumn}, \opt{abstract/declaration}|=|\val{multi}, 
-%   \opt{abstract/declaration}|=|\val{fill}\ignorespaces%
-% } ausgewertet und die notwendigen vertikalen Abstände entsprechend gesetzt. 
+% relevanten Optionen\footnote{\opt{titlepage}, \opt{twocolumn}, 
+%   \opt{abstract/declaration}|=|\val{multi},
+%   \opt{abstract/declaration}|=|\val{fill}}
+% ausgewertet und die notwendigen vertikalen Abstände entsprechend gesetzt. 
 % Dabei wird durch jede Zusammenfassung bzw. Erklärung \cs{tud at fm@set} über
 % \cs{tud at fm@body at start} verwendet. Der Inhalt der beiden Umgebungen
 % \env{abstract} und \env{descriptions} wird mit \cs{tud at fm@check} ausgegeben.
@@ -410,7 +386,7 @@
 % \changes{v2.02}{2014/11/05}{Bugfix Kolumnentitel und Inhaltsverzeichnis}^^A
 % \changes{v2.04}{2015/04/21}{Abstände nur, wenn keine Zitatumgebung aktiv}^^A
 % Dieses Makro dient zur Ausgabe der Erklärungsüberschrift auf der gewünschten
-% Gliederungsebene. Die gewählte Ebene ist in \cs{tud@\meta{Typ}@level at num}
+% Gliederungsebene. Die gewählte Ebene ist in |\tud@|\meta{Typ}|@level at num|
 % gespeichert. Verwendet wird das Makro folgendermaßen:
 % \cs{tud at fm@head}\marg{Erklärungstyp}\marg{Überschrift}. Damit 
 % die ggf. aktive Option \opt{abstract/declaration}|=|\val{toc} funktionieren
@@ -418,7 +394,7 @@
 % mit dem Befehl \cs{phantomsection} aus dem Paket \pkg{hyperref}~-- wenn es 
 % tatsächlich geladen wurde~-- ein Anker für einen Hyperlink erzeugt.
 %
-% Ist \cs{tud@\meta{Typ}@toc at num} ungerade, so entspricht die Ebene des
+% Ist |\tud@|\meta{Typ}|@toc at num| ungerade, so entspricht die Ebene des
 % erzeugten Eintrags ins Inhaltsverzeichnis für \cls{tudscrartcl} normalerweise
 % dem eines Abschnitts, der für \cls{tudscrbook} und \cls{tudscrreprt} dem eines
 % Kapitels.\footnote{sonst sieht das Inhaltsverzeichnis recht bescheiden aus}
@@ -429,19 +405,20 @@
   \ifcase\csuse{tud@#1 at level@num}\relax% false
     \if at titlepage\endgraf\fi%
     \csuse{phantomsection}%
-    \ifstr{\@currenvir}{\tud at quoting}{}{%
+    \tud at if@strequal{\@currenvir}{\tud at quoting}{}{%
       \if at twocolumn%
-        \vskip\dimexpr\smallskipamount-\parskip\relax%
+        \vskip\smallskipamount%
       \else%
-        \vskip\dimexpr\bigskipamount-\parskip\relax%
+        \vskip\bigskipamount%
       \fi%
+      \vskip-\parskip%
     }%
   \or% true
     \if at titlepage\endgraf\fi%
     \csuse{phantomsection}%
     \@afterindentfalse%
-    \ifstr{\@currenvir}{\tud at quoting}{}{%
-      \vskip\dimexpr\bigskipamount-\parskip\relax%
+    \tud at if@strequal{\@currenvir}{\tud at quoting}{}{%
+      \vskip\bigskipamount\vskip-\parskip%
     }%
     \begingroup%
       \noindent\centering%
@@ -450,7 +427,7 @@
       \endgraf%
     \endgroup%
     \nopagebreak%
-    \vskip\dimexpr\medskipamount-\parskip\relax%
+    \vskip\medskipamount\vskip-\parskip%
     \@afterheading%
   \or% section
     \section*{#2}%
@@ -544,7 +521,7 @@
 % \changes{v2.02}{2014/11/05}{neu}^^A
 % Das aus \KOMAScript{} bekannte Verhalten für die Zusammenfassung wird für die
 % beiden Klassen \cls{tudscrartcl} und \cls{tudscrreprt} adaptiert. Dazu werden
-% boolesche Schlüssel bei der Definiton der beiden Optionen \opt{abstract} und 
+% boolesche Schlüssel bei der Definition der beiden Optionen \opt{abstract} und 
 % \opt{declaration} eingefügt. Außerdem werden zusätzliche Werte zur Auswahl 
 % einer Gliederungsebene für die gesetzten Überschriften wie \cs{section} oder 
 % \cs{chapter}\footnote{nicht für \cls{tudscrartcl}} oder bereitgestellt, 
@@ -553,7 +530,7 @@
 %
 % Des Weiteren werden mehrere Schlüssel für die Anordnung und Positionierung
 % von Zusammenfassung bzw. Erklärungen bereitgestellt. Diese dienen dem Setzen
-% der  Optionen \opt{abstract} bzw. \opt{declaration} mit den Werten 
+% der Optionen \opt{abstract} bzw. \opt{declaration} mit den Werten 
 % \val{single/multi}, \val{toc/notoc}, \val{fill/nofill} sowie \val{leveldown}.
 %    \begin{macrocode}
 \newcommand*\tud at fm@switch{%
@@ -639,7 +616,7 @@
 % auf die gleiche Seite wie die erste zu setzen. Gesetzt wird der Schalter über 
 % die Option \opt{abstract}|=|\val{single/multi}.
 %    \begin{macrocode}
-\newif\if at tud@abstract at multi
+\tud at newif\if at tud@abstract at multi
 \@tud at abstract@multitrue
 %    \end{macrocode}
 % \end{macro}^^A \if at tud@abstract at multi
@@ -648,7 +625,7 @@
 % vertikal zentriert wird. Er wird mit \opt{abstract}|=|\val{fill/nofill} 
 % gesetzt und ist normalerweise aktiviert.
 %    \begin{macrocode}
-\newif\if at tud@abstract at fil
+\tud at newif\if at tud@abstract at fil
 \@tud at abstract@filtrue
 %    \end{macrocode}
 % \end{macro}^^A \if at tud@abstract at fil
@@ -657,7 +634,7 @@
 % Dieser Schalter setzt rechten und linken Kolumnentitel automatisch auf die
 % verwendete Überschrift.
 %    \begin{macrocode}
-\newif\if at tud@abstract at markboth
+\tud at newif\if at tud@abstract at markboth
 %    \end{macrocode}
 % \end{macro}^^A \if at tud@abstract at markboth
 %
@@ -765,6 +742,7 @@
 %    \begin{macrocode}
 \DefineFamilyMember{KOMA}
 \DefineFamilyKey{KOMA}{abstract}[true]{%
+  \FamilyKeyStateUnknownValue%
   \AtEndOfFamilyOptions{\TUDoptions{abstract=#1}}%
 }
 %    \end{macrocode}
@@ -789,14 +767,15 @@
 % \begin{macro}{\nextabstract}
 % \changes{v2.02}{2014/11/05}{neu}^^A
 % Die \env{abstract}-Umgebung wird komplett überarbeitet. Um alle gewünschten
-% Optionen\footnote{\ignorespaces%
-%   \opt{titlepage}, \opt{twocolumn}, \opt{abstract}|=|\val{multi},
-%   \opt{abstract}|=|\val{fill}\ignorespaces%
-% } sowie Gliederungsebene der Überschrift beachten zu können, wird auf die
+% Optionen\footnote{\opt{titlepage}, \opt{twocolumn},
+%   \opt{abstract}|=|\val{multi}, \opt{abstract}|=|\val{fill}}
+% sowie Gliederungsebene der Überschrift beachten zu können, wird auf die
 % Möglichkeiten der Definition mit \cs{NewEnviron} aus dem Paket \pkg{environ}
 % zurückgegriffen. Damit ist es möglich, gezielt auf den Inhalt der Umgebung
 % selbst mit dem Befehl \cs{BODY} zuzugreifen. Dieser Mechanismus wird
 % innerhalb von \cs{tud at abstractbody} verwendet.
+% \ToDo{parameter title, um \cs{abstractname} lokal zu ändern}[v2.07]
+% \ToDo{eher NewDocumentEnvironment nutzen?}[v2.07]
 %    \begin{macrocode}
 %<*report|article|poster>
 \undef\abstract
@@ -872,7 +851,7 @@
   \else%
 %</book|report|article>
     \ifnum\tud at abstract@level at num=\tw@\relax%
-      \vskip\dimexpr\bigskipamount-\parskip\relax%
+      \vskip\bigskipamount\vskip-\parskip%
     \fi%
 %<*book|report|article>
   \fi%
@@ -892,7 +871,7 @@
 % gesetzt, falls kein anderer mit \opt{pagestyle} angegeben wurde.
 %    \begin{macrocode}
   \TUD at parameter@def{markboth}[true]{%
-    \ifstrbool{#1}{%
+    \tud at if@strbool{#1}{%
       \@tud at abstract@markbothtrue%
       \ifx\tud at envir@ps\relax\def\tud at envir@ps{headings}\fi%
     }{%
@@ -911,6 +890,7 @@
 % oder eine alternative Sprache angegeben werden. Für die Auswertung des 
 % Argumentes verantwortlich ist der Befehl \cs{TUD at parameter@handler at default}, 
 % welcher auch von der Umgebung \env{tudpage} verwendet wird.
+% \ToDo{unbekannte Schlüssel als Werte an \prm{abstract}}[v2.07]^^A
 %    \begin{macrocode}
   \TUD at parameter@handler at default{}%
 }
@@ -964,11 +944,11 @@
 \newcommand*\tud at declaration@level at num{3}
 \tud at locked@newnum{tud at declaration@toc at num}{1}
 %</book>
-\newif\if at tud@declaration at multi
+\tud at newif\if at tud@declaration at multi
 \@tud at declaration@multitrue
-\newif\if at tud@declaration at fil
+\tud at newif\if at tud@declaration at fil
 \@tud at declaration@filtrue
-\newif\if at tud@declaration at markboth
+\tud at newif\if at tud@declaration at markboth
 %    \end{macrocode}
 % \end{macro}^^A \if at tud@declaration at markboth
 % \end{macro}^^A \if at tud@declaration at fil
@@ -1075,7 +1055,7 @@
 % \cs{declaration}, \cs{confirmation} und \cs{blocking} innerhalb und außerhalb
 % dieser Umgebung verwenden zu können.
 %    \begin{macrocode}
-\newif\if at tud@declarations
+\tud at newif\if at tud@declarations
 \NewEnviron{declarations}[1][]{%
   \@tud at declarationstrue%
 %<*book|report>
@@ -1125,7 +1105,7 @@
     \clearpage%
   \else%
     \ifnum\tud at declaration@level at num=\tw@\relax%
-      \vskip\dimexpr\bigskipamount-\parskip\relax%
+      \vskip\bigskipamount\vskip-\parskip%
     \fi%
   \fi%
 ]
@@ -1134,6 +1114,7 @@
 % \cs{confirmation} und \cs{blocking}. Die Schlüssel \opt{declaration} bzw.
 % \opt{option} dienen zum Setzen der Werte, welche auch als Klassenoptionen
 % gesetzt werden können.
+% \ToDo{unbekannte Schlüssel als Werte an \prm{declaration}}[v2.07]^^A
 %    \begin{macrocode}
 \TUD at parameter@family{declaration}{%
   \TUD at parameter@def{language}{\selectlanguage{#1}}%
@@ -1140,7 +1121,7 @@
   \TUD at parameter@def{columns}{\renewcommand*\tud at x@multicol at num{#1}}%
   \TUD at parameter@def{pagestyle}{\tud at fm@pagestyle{declaration}{#1}}%
   \TUD at parameter@def{markboth}[true]{%
-    \ifstrbool{#1}{%
+    \tud at if@strbool{#1}{%
       \@tud at declaration@markbothtrue%
       \ifx\tud at envir@ps\relax\def\tud at envir@ps{headings}\fi%
     }{%
@@ -1205,17 +1186,17 @@
   }%
 }
 \newcommand*\tud at fm@declaration[1][]{%
-  \ifbool{@tud at declarations}{%
+  \if at tud@declarations%
     \begingroup%
-      \tud at fm@@confirmation[\tud at fm@supporter,#1]%
-      \tud at fm@blocking[#1]%
+      \tud at fm@@confirmation[{\tud at fm@supporter,#1}]%
+      \tud at fm@blocking[{#1}]%
     \endgroup%
-  }{%
-    \begin{declarations}[\tud at fm@supporter,#1]%
+  \else%
+    \begin{declarations}[{\tud at fm@supporter,#1}]%
       \tud at fm@@confirmation%
       \tud at fm@blocking%
     \end{declarations}%
-  }%
+  \fi%
 }
 %    \end{macrocode}
 % Mit \cs{nextdeclaration} kann eine freie Erklärung abgegeben werden. Dabei 
@@ -1225,16 +1206,16 @@
 % \cs{tud at fm@body at start} und \cs{tud at fm@body at end} notwendig ist.
 %    \begin{macrocode}
 \newcommand*\nextdeclaration[3][]{%
-  \ifbool{@tud at declarations}{%
+  \if at tud@declarations%
     \tud at fm@body at start{declaration}{#1}{#2}%
       #3%
     \tud at fm@body at end{declaration}%
-  }{%
+  \else%
     \ClassError{\TUD at Class@Name}{Incorrect usage of `\string\nextdeclaration'}{%
       The command `\string\nextdeclaration' can only be used\MessageBreak%
       within the environment `declarations'.%
     }%
-  }%
+  \fi%
 }
 %    \end{macrocode}
 % \end{macro}^^A \nextdeclaration
@@ -1267,17 +1248,18 @@
 % Damit das optionale Argument ohne Schlüssel für die Unterstützer verwendet 
 % werden kann, wird der Handler lokal umdefiniert. Außerdem werden irrelevante
 % Parameter undefiniert gesetzt.
+% \ToDo{Schlüssel \prm{confirmation} als Alias für \prm{declaration}}[v2.07]^^A
 %    \begin{macrocode}
   \begingroup%
     \TUD at parameter@handler at default[declaration]{supporter}%
     \undef\KV at declaration@company%
-    \ifbool{@tud at declarations}{%
-      \tud at fm@@confirmation[\tud at fm@supporter,#1]%
-    }{%
-      \begin{declarations}[\tud at fm@supporter,#1]%
+    \if at tud@declarations%
+      \tud at fm@@confirmation[{\tud at fm@supporter,#1}]%
+    \else%
+      \begin{declarations}[{\tud at fm@supporter,#1}]%
         \tud at fm@@confirmation%
       \end{declarations}%
-    }%
+    \fi%
   \endgroup%
 }
 %    \end{macrocode}
@@ -1285,7 +1267,7 @@
 %    \begin{macrocode}
 \newcommand*\tud at fm@@confirmation[1][]{%
   \tud at fm@body at start{declaration}{#1}{\confirmationname}%
-    \confirmationtext\vskip\z@\@confirmationclosing%
+    \confirmationtext\vskip\z at skip\@confirmationclosing%
   \tud at fm@body at end{declaration}%
 }
 %    \end{macrocode}
@@ -1300,6 +1282,7 @@
 % \changes{v2.02}{2014/07/18}{neu}^^A
 % Für den Sperrvermerk wird äquivalent zu \cs{confirmation} verfahren. Das
 % optionale Argument ohne Schlüssel setzt hier die Firma für den Sperrvermerk.
+% \ToDo{Schlüssel \prm{blocking} als Alias für \prm{declaration}}[v2.07]^^A
 %    \begin{macrocode}
 \newcommand*\blocking[1][]{%
   \begingroup%
@@ -1307,13 +1290,13 @@
     \undef\KV at declaration@supporter%
     \undef\KV at declaration@closing%
     \undef\KV at declaration@confirmationclosing%
-    \ifbool{@tud at declarations}{%
-      \tud at fm@blocking[#1]%
-    }{%
-      \begin{declarations}[#1]%
+    \if at tud@declarations%
+      \tud at fm@blocking[{#1}]%
+    \else%
+      \begin{declarations}[{#1}]%
         \tud at fm@blocking%
       \end{declarations}%
-    }%
+    \fi%
   \endgroup%
 }
 %    \end{macrocode}
@@ -1333,6 +1316,6 @@
 %</book|report|article>
 % \fi
 %
-% \Finale
+% \PrintBackMatter
 %
 \endinput

Added: trunk/Master/texmf-dist/source/latex/tudscr/tudscr-gitinfo.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tudscr/tudscr-gitinfo.dtx	                        (rev 0)
+++ trunk/Master/texmf-dist/source/latex/tudscr/tudscr-gitinfo.dtx	2022-08-09 20:01:54 UTC (rev 64085)
@@ -0,0 +1,359 @@
+% \iffalse meta-comment
+%/GitFileInfo=tudscr-gitinfo.dtx
+%
+%  TUD-Script -- Corporate Design of Technische Universität Dresden
+% ----------------------------------------------------------------------------
+%
+%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2022
+%
+% ----------------------------------------------------------------------------
+%
+%  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
+%
+% \iffalse comment
+% Nicht verwirren lassen! In dieser Datei steht ein Teil der Dokumentation und 
+% des Codes vor dem Treiber. Das ist notwendig, weil der Teil des Codes bereits 
+% am Anfang des Treibers selbst benötigt wird. Genauer gesagt handelt es sich 
+% dabei um den Teil zur Versionsangbabe.
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+%
+%
+% \section{Versionsinformationen aus dem GitHub-Repository}
+%
+% Um sich das ganze Aktualisieren von irgendwelchen Versionangaben zu sparen, 
+% werden diese einfach aus dem GitHub-Repository übernommen. Hierfür ist ein 
+% externer Aufruf von \file{git~log} notwendig, die Informationen werden dabei
+% in die Datei \file{\GitContainerFile} (\cs{GitContainerFile}) 
+% geschrieben und entweder während des Durchlaufs mit \app{docstrip} oder aber
+% beim Erzeugen der Doku mithilfe des Paketes \pkg{tudscr-gitinfo} ausgelesen.
+%
+% \subsection{GitHub-Versionsinformationen für \app{docstrip}}
+%
+% \begin{macro}{\GitFileInfo}
+% \changes{v2.06o}{2022/08/09}{neu}^^A
+% \begin{macro}{\GitContainerFile}
+% \changes{v2.06o}{2022/08/09}{neu}^^A
+% \begin{macro}{\InputGitContainer}
+% \changes{v2.06o}{2022/08/09}{neu}^^A
+% In \cs{GitContainerFile} wird der Name der Datei gespeichert, welche die 
+% Versionsinformationen für alle Quelldateien enthält. Diese definiert für alle 
+% relevanten Dateien Makros in der Form
+% |\|\meta{Dateiname}|-ver{|\meta{Datum}| |\meta{Zeit}| |\meta{Hash}|}|. Diese 
+% Datei wird eingebunden, falls vorhanden sowie der Befehl \cs{GitFileInfo} für 
+% das Hinzufügen der Versionsinformationen für das Erzeugen der Zieldateien mit 
+% \app{docstrip} definiert.
+%    \begin{macrocode}
+\def\GitContainerFile{tudscr-gitinfo-ver.aux}
+%<*!package>
+\begingroup
+  \catcode`\@11\relax%
+  \ifx\documentclass\undefined%
+    \ifx\@@input\undefined\global\let\@@input\input\fi%
+    \newread\@inputcheck%
+    \immediate\openin\@inputcheck=\GitContainerFile\relax%
+    \ifeof\@inputcheck%
+      \global\let\InputGitContainer\relax%
+    \else%
+      \gdef\InputGitContainer{\@@input\GitContainerFile\relax}%
+    \fi%
+    \closein\@inputcheck%
+    \gdef\GitFileInfo#1{%
+      \MetaPrefix\MetaPrefix\space From File:\space#1\space%
+      \expandafter\ifx\csname#1-ver\endcsname\relax%
+        (no git version info was found)%
+      \else%
+        \csname#1-ver\endcsname%
+      \fi%
+    }%
+    \aftergroup\InputGitContainer%
+  \fi%
+\endgroup
+\let\InputGitContainer\undefined
+%</!package>
+%    \end{macrocode}
+% \end{macro}^^A \InputGitContainer
+% \end{macro}^^A \GitContainerFile
+% \end{macro}^^A \GitFileInfo
+%
+% \iffalse ins:batch + dtx:driver
+%<*ins>
+\ifx\documentclass\undefined
+  \input docstrip.tex
+  \ifToplevel{\batchinput{tudscr.ins}}
+\else
+  \let\endbatchfile\relax
+\fi
+\endbatchfile
+%</ins>
+%<*dtx>
+\ProvidesFile{tudscr-gitinfo.dtx}[2022/08/09]
+\RequirePackage{tudscr-gitinfo}
+\documentclass[english,ngerman,xindy]{tudscrdoc}
+\iftutex
+  \usepackage{fontspec}
+\else
+  \usepackage[T1]{fontenc}
+  \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+\fi
+\usepackage{babel}
+\usepackage{tudscrfonts}
+\usepackage[babel]{microtype}
+
+\GitHubBase{\TUDScriptRepository}
+\begin{document}
+  \author{Falk Hanisch\TUDScriptContactTitle}
+  \maketitle
+  \tableofcontents
+  \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \iffalse comment
+% Der Rest wird nicht mehr vom Treiber benötigt.
+% \fi
+%
+% \subsection{GitHub-Versionsinformationen für das Paket \pkg{tudscr-gitinfo}}
+%
+% Gleich zu Beginn werden die Versionsinformationen geladen, wenn dies nicht 
+% schon passiert ist und diese vorhanden sind.
+%^^A https://www.juandebravo.com/2017/12/02/git-filter-smudge-and-clean/
+%^^A https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes#filters_b
+%^^A file:///C:/Program%20Files/Git/mingw64/share/doc/git-doc/gitattributes.html
+%    \begin{macrocode}
+\ProvidesPackage{tudscr-gitinfo}[%
+%!TUD at Version
+  package (obtaining git version)%
+]
+\ifcsname ver@\GitContainerFile\endcsname\else
+  \InputIfFileExists{\GitContainerFile}{}{}%
+\fi
+%    \end{macrocode}
+% \begin{macro}{\GetFileInfo}
+% \changes{v2.06o}{2022/08/09}{neu}^^A
+% \begin{macro}{\tud at GetFileInfo}
+% \changes{v2.06o}{2022/08/09}{neu}^^A
+% \begin{macro}{\tud@@GetFileInfo}
+% \changes{v2.06o}{2022/08/09}{neu}^^A
+% \begin{macro}{\tud at git@file at list}
+% \changes{v2.06o}{2022/08/09}{neu}^^A
+% Der Befehl \cs{GetFileInfo} hat das gleiche Ziel wie der gleichnamige Befehl 
+% aus dem Paket \pkg{doc}. Allerdings werden vorliegende Versionsinformationen 
+% aus einem GitHub-Repository bevorzugt geladen. Das Lesen der Informationen, 
+% welche mit \cs{ProvidesFile} gegeben werden können, wird lediglich als 
+% Rückfallebene verwendet. Das angegebene Argument wird für den Dateinamen der 
+% Quelldatei genutzt, wobei bei einer fehlenden Dateiendung \file{dtx}-Dateien 
+% gegenüber \file{tex}-Dateien bevorzugt werden.
+%    \begin{macrocode}
+\def\GetFileInfo{\tud at GetFileInfo}
+\newcommand*\tud at git@file at list{}
+\newcommand*\tud at GetFileInfo[1]{%
+  \filename at parse{#1}%
+  \ifx\filename at ext\relax%
+    \edef\filename{\filename at area\filename at base.dtx}%
+    \expandafter\IfFileExists\expandafter{\filename}{}{%
+      \edef\filename{\filename at area\filename at base.tex}%
+    }%
+  \else%
+    \edef\filename{#1}%
+  \fi%
+%    \end{macrocode}
+% Mit dem Dateinamen werden über \cs{tud at git@log} Versionsinformation aus einem
+% GitHub-Repository abgerufen und verwendet (falls vorhanden). Der dazugehörige
+% Dateiname wird der Liste \cs{tud at git@file at list} hinzugefügt.
+%    \begin{macrocode}
+  \expandafter\tud at git@log\expandafter{\filename}%
+  \ifcsname\filename-ver\endcsname%
+    \def\@tempa##1 ##2 ##3\@nil{%
+      \def\filedate{##1}%
+      \let\fileversion\@empty%
+      \def\filerevision{##3}%
+    }%
+    \edef\@tempb{\csname\filename-ver\endcsname}%
+    \expandafter\@tempa\@tempb\@nil%
+    \let\fileinfo\@empty%
+    \edef\tud at git@file at list{\tud at git@file at list,\filename}%
+  \else%
+%    \end{macrocode}
+% Andernfalls wird eine Warnung erzeugt und auf das durch \pkg{doc} definierte 
+% Verhalten von \cs{GetFileInfo} zurückgeschaltet.
+%    \begin{macrocode}
+    \PackageWarningNoLine{tudscr-gitinfo}{No git info found for \filename}%
+    \expandafter\tud@@GetFileInfo\expandafter{\filename}%
+  \fi%
+}
+\newcommand*\tud@@GetFileInfo[1]{%
+  \@ifundefined{filedate}{\def\filedate{?}}{}%
+  \@ifundefined{fileversion}{\def\fileversion{?}}{}%
+  \@ifundefined{filerevision}{\let\filerevision\@empty}{}%
+  \@ifundefined{fileinfo}{\let\fileinfo\@empty}{}%
+%    \end{macrocode}
+% Verbesserte Variante, um nicht \cs{relax?} in die Felder zu schreiben.
+%    \begin{macrocode}
+  \ifcsname ver@\filename\endcsname%
+    \def\@tempa##1 ##2 ##3\relax##4\relax{%
+      \def\@tempb####1\relax?####2\@nil{\edef\@tempc{####1}}%
+      \@tempb##1\relax?\@nil%
+      \ifx\@tempc\@empty\else%
+        \let\filedate\@tempc%
+        \@tempb##2\relax?\@nil%
+        \ifx\@tempc\@empty\else%
+          \let\fileversion\@tempc%
+          \@tempb##3\relax?\@nil%
+          \ifx\@tempc\@empty\else%
+            \let\fileinfo\@tempc%
+          \fi%
+        \fi%
+      \fi%
+    }%
+    \edef\@tempb{\csname ver@#1\endcsname}%
+    \expandafter\@tempa\@tempb\relax? ? \relax\relax%
+  \fi%
+}
+%    \end{macrocode}
+% Hiermit wird der Befehl \cs{GetFileInfo} ggf. wieder überschrieben.
+%    \begin{macrocode}
+\RequirePackage{scrlfile}[%
+%!TUD at KOMAVersion
+]
+\AfterPackage*{doc}{\def\GetFileInfo{\tud at GetFileInfo}}
+%    \end{macrocode}
+% \end{macro}^^A \tud at git@file at list
+% \end{macro}^^A \tud@@GetFileInfo
+% \end{macro}^^A \tud at GetFileInfo
+% \end{macro}^^A \GetFileInfo
+% \begin{macro}{\tud at git@log}
+% \changes{v2.06o}{2022/08/09}{neu}^^A
+% \begin{macro}{\tud at git@@log}
+% \changes{v2.06o}{2022/08/09}{neu}^^A
+% Der Befehl \cs{tud at git@log} definiert für die im Argument angegebene Datei 
+% das Makro |\|\meta{Dateiname}|-ver| mit den Versionsinformationen, welche mit 
+% \cs{tud at git@@log} ausgelesen wurden. 
+%    \begin{macrocode}
+\RequirePackage{pdftexcmds}
+\newcommand*\tud at git@log[1]{%
+  \ifnum\pdf at shellescape=\@ne%
+    \begingroup%
+      \endlinechar=\m at ne%
+      \everyeof{\noexpand}%
+      \edef\@tempa{\tud at git@@log{#1}}%
+      \ifx\@tempa\@empty\else%
+        \edef\@tempa{%
+          \unexpanded{\expandafter\gdef\csname #1-ver\endcsname}{\@tempa}%
+        }%
+        \@tempa%
+      \fi%
+    \endgroup%
+  \fi%
+}
+%    \end{macrocode}
+% Der Befehl \cs{tud at git@@log} startet den Aufruf von \file{git~log} mit den 
+% notwendigen Formatierungsoptionen.
+%    \begin{macrocode}
+\begingroup
+\@makeother\|
+\newcommand*\tud at git@@log[1]{}
+\xdef\tud at git@@log#1{%
+  \noexpand\@@input|"git log -1 %
+    --format='\@percentchar ad \@percentchar h' %
+    --date=format:'\@percentchar Y/\@percentchar m/\@percentchar d %
+      \@percentchar H:\@percentchar M:\@percentchar S' %
+    -- #1" %
+}
+\endgroup
+%    \end{macrocode}
+% \end{macro}^^A \tud at git@@log
+% \end{macro}^^A \tud at git@log
+% Am Dokumentende wird für alle Dateien, für die eine Versionsinformation 
+% gefunden werden konnte und in \cs{tud at git@file at list} gesammelt wurden, diese 
+% in die externe Datei \cs{GitContainerFile} geschrieben, damit diese auch 
+% ohne den abermaligen Aufruf mit dem Parameter \file{-{}-shell-escape} genutzt
+% werden können.
+%    \begin{macrocode}
+\AtEndDocument{%
+  \ifnum\pdf at shellescape=\@ne%
+    \ifx\tud at git@file at list\@empty\else%
+      \edef\tud at git@file at list{\expandafter\@gobble\tud at git@file at list}%
+      \def\@tempa{%
+        \@percentchar\@percentchar\space%
+        This file was generated with `tudscr-gitinfo.sty'^^J%
+        \@percentchar\@percentchar\space%
+        It is intended to be used for generating either a documentation^^J%
+        \@percentchar\@percentchar\space%
+        with class `tudscrdoc' or installation files with `docstrip'%
+      }%
+      \chardef\reserved at c15 %
+      \ch at ck7\reserved at c\write%
+      \immediate\openout\reserved at c\GitContainerFile\relax%
+      \immediate\write\reserved at c{\@tempa}%
+      \@for\@tempa:=\tud at git@file at list\do{%
+        \edef\@tempb{%
+          \unexpanded{\expandafter\gdef\csname}%
+          \@tempa-ver%
+          \noexpand\endcsname%
+          {\csname\@tempa-ver\endcsname}%
+        }%
+        \immediate\write\reserved at c{\unexpanded\expandafter{\@tempb}}%
+      }%
+      \immediate\closeout\reserved at c%
+    \fi%
+  \fi%
+}
+%    \end{macrocode}
+% Am Ende des Paketes werden die Versionsinformationen der aktuellen Datei 
+% ausgelesen und anschließend mit \cs{ProvidesFile} gesetzt, wobei eine Warnung 
+% erzeugt wird, wenn für die Datei schon einmal \cs{ProvidesFile} mit einer 
+% anderen Angabe genutzt wurde. Die zu schreibende Angabe wird hierfür in 
+% \cs{@tempa} expandiert und mit |\ ver@|\meta{Dateiname} verglichen.
+%    \begin{macrocode}
+\AtEndOfPackage{%
+  \GetFileInfo{\jobname}%
+  \edef\@tempa{%
+    \filedate\space\fileversion\space%
+    \ifx\filerevision\@empty\else%
+      \filerevision\ifx\fileinfo\@empty\else\space\fi%
+    \fi%
+    \fileinfo%
+  }%
+  \ifcsname ver@\filename\endcsname%
+    \edef\@tempb{\csname ver@\filename\endcsname}%
+    \ifx\@tempb\filedate\else%
+      \PackageWarningNoLine{tudscr-gitinfo}{%
+        The obtained info for \filename\space is\MessageBreak%
+        \@tempa\MessageBreak%
+        so the current info\MessageBreak%
+        \csname ver@\filename\endcsname\MessageBreak%
+        is overwritten%
+      }%
+    \fi%
+  \fi%
+  \ProvidesFile{\filename}[\@tempa]%
+}
+%    \end{macrocode}
+%
+% \PrintBackMatter
+%
+\endinput


Property changes on: trunk/Master/texmf-dist/source/latex/tudscr/tudscr-gitinfo.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/source/latex/tudscr/tudscr-layout.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tudscr/tudscr-layout.dtx	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/source/latex/tudscr/tudscr-layout.dtx	2022-08-09 20:01:54 UTC (rev 64085)
@@ -1,10 +1,10 @@
-% \CheckSum{1215}
 % \iffalse meta-comment
+%/GitFileInfo=tudscr-layout.dtx
 %
 %  TUD-Script -- Corporate Design of Technische Universität Dresden
 % ----------------------------------------------------------------------------
 %
-%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2021
+%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2022
 %
 % ----------------------------------------------------------------------------
 %
@@ -23,33 +23,19 @@
 %
 % \fi
 %
-% \CharacterTable
-%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-%   Digits        \0\1\2\3\4\5\6\7\8\9
-%   Exclamation   \!     Double quote  \"     Hash (number) \#
-%   Dollar        \$     Percent       \%     Ampersand     \&
-%   Acute accent  \'     Left paren    \(     Right paren   \)
-%   Asterisk      \*     Plus          \+     Comma         \,
-%   Minus         \-     Point         \.     Solidus       \/
-%   Colon         \:     Semicolon     \;     Less than     \<
-%   Equals        \=     Greater than  \>     Question mark \?
-%   Commercial at \@     Left bracket  \[     Backslash     \\
-%   Right bracket \]     Circumflex    \^     Underscore    \_
-%   Grave accent  \`     Left brace    \{     Vertical bar  \|
-%   Right brace   \}     Tilde         \~}
-%
-% \iffalse
-%%% From File: tudscr-layout.dtx
+% \iffalse ins:batch + dtx:driver
+%<*ins>
+\ifx\documentclass\undefined
+  \input docstrip.tex
+  \ifToplevel{\batchinput{tudscr.ins}}
+\else
+  \let\endbatchfile\relax
+\fi
+\endbatchfile
+%</ins>
 %<*dtx>
-% \fi
-%
-\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
-\ProvidesFile{tudscr-layout.dtx}[2019/07/19 v2.06c TUD-Script\space%
-  (layout)%
-]
-%
-% \iffalse
+\ProvidesFile{tudscr-layout.dtx}[2022/08/09]
+\RequirePackage{tudscr-gitinfo}
 \documentclass[english,ngerman,xindy]{tudscrdoc}
 \iftutex
   \usepackage{fontspec}
@@ -59,18 +45,11 @@
 \fi
 \usepackage{babel}
 \usepackage{tudscrfonts}
-\KOMAoptions{parskip=half-}
-\usepackage{bookmark}
 \usepackage[babel]{microtype}
 
-\CodelineIndex
-\RecordChanges
-\GetFileInfo{tudscr-layout.dtx}
-\title{\file{\filename}}
-\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
-\date{\fileversion\nobreakspace(\filedate)}
-
+\GitHubBase{\TUDScriptRepository}
 \begin{document}
+  \author{Falk Hanisch\TUDScriptContactTitle}
   \maketitle
   \tableofcontents
   \DocInput{\filename}
@@ -82,7 +61,11 @@
 %
 % \changes{v2.02}{2014/07/08}{\cs{FamilyKeyState} wird von Optionen genutzt}^^A
 % \changes{v2.05}{2015/07/06}{Layout für Poster}^^A
+% \changes{v2.06o}{2022/08/02}{\opt{cdfont=false} und \opt{cd=true} setzt
+%   Überschriften im \CD}^^A
 %
+%
+%
 % \section{Das Layout des \CDs}
 %
 % Unter Layout wird die Wahl von Schriftart und "~größe, die Positionierung
@@ -95,8 +78,6 @@
 % eine durchweg farbige Version bereitgestellt. Außerdem wird hier das Aussehen
 % und die Position der Überschriften festgelegt.
 %
-% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
-%
 % \iffalse
 %<*class&option>
 % \fi
@@ -140,7 +121,7 @@
 % im \pgs{tudheadings}-Stil ist schwarz und wird für die farbigen Layouts auf
 % dunkelblau gesetzt. Abhängig von der gewählten Option~-- der nummerische Wert
 % ist über \cs{tud at cd@switch} festgelegt~-- werden die sog. Layoutschlüssel
-% (\cs{tud at cd@\meta{Typ}@num}) auf einen Wert gesetzt (0\dots 6), welcher
+% (|\tud at cd@|\meta{Typ}|@num|) auf einen Wert gesetzt (0\dots 6), welcher
 % später ausgewertet werden kann. Der Schalter für Kapitel wird lediglich für
 % die Klassen \cls{tudscrbook} und \cls{tudscrreprt} definiert und genutzt.
 % Damit werden alle Komponenten mit einer zentralen Option festgelegt, können
@@ -195,13 +176,13 @@
 % festgelegt. Dies kann vom Benutzer mit dem Setzen der Option \opt{cdgeometry}
 % überschrieben werden.
 %    \begin{macrocode}
-    \if at atdocument\else%
+    \tud at if@preamble{%
       \ifcase\tud at cd@num\relax% false
         \tud at locked@num at preset{tud at cdgeometry@num}{0}%
       \else% !false
         \tud at locked@num at preset{tud at cdgeometry@num}{2}%
       \fi%
-    \fi%
+    }{}%
   \fi%
 }
 %    \end{macrocode}
@@ -311,7 +292,7 @@
 % Der Schalter dient zur Steuerung, ob der Titel des Dokumentes wie im Handbuch
 % des \CDs auf den Teileseiten stehen soll.
 %    \begin{macrocode}
-\newif\if at tud@parttitle
+\tud at newif\if at tud@parttitle
 \TUD at key{parttitle}[true]{%
   \TUD at set@ifkey{parttitle}{@tud at parttitle}{#1}%
 }
@@ -323,7 +304,7 @@
 % Mit dieser Option können Kapitelüberschriften alleine auf einer Seite stehen.
 % Es werden separate Kapitelseiten erzeugt.
 %    \begin{macrocode}
-\newif\if at tud@chapterpage
+\tud at newif\if at tud@chapterpage
 \TUD at key{chapterpage}[true]{%
   \TUD at set@ifkey{chapterpage}{@tud at chapterpage}{#1}%
 }
@@ -333,7 +314,7 @@
 % \begin{option}{cleardoublespecialpage}
 % \changes{v2.02}{2014/07/08}{Werte für Seitenstil aus den \TUDScript- bzw.
 %   \KOMAScript-Klassen möglich}^^A
-% \changes{v2.03}{2015/01/09}{Prüfung des Seitenstils mit \cs{AfterPreamble}
+% \changes{v2.03}{2015/01/09}{Prüfung des Seitenstils mit \cs{AfterEndPreamble}
 %   auf Beginn des Dokumentes verzögert}^^A
 % \changes{v2.06}{2018/08/21}{Farbeinstellungen integriert}^^A
 % \begin{macro}{\tud at cleardoublepage}
@@ -356,7 +337,7 @@
 % Der Befehl \cs{tud at cleardoublepage} enthält die Definition der zu erzeugenden
 % Doppelseite.
 %    \begin{macrocode}
-\newif\if at tud@clearcolor
+\tud at newif\if at tud@clearcolor
 \newcommand*\tud at cleardoublepage{\cleardoubleoddpage}
 %    \end{macrocode}
 % Mit der Option \opt{cleardoublespecialpage} kann dieser festgelegt werden.
@@ -397,10 +378,10 @@
 % Beim Laden der Klasse selbst sind die speziellen Seitenstile der \KOMAScript-
 % bzw. \TUDScript-Klassen noch nicht definiert. Diese sollen als Werte jedoch
 % trotzdem erlaubt sein. Deshalb wird für diesen Fall das Überprüfen mit
-% \cs{AfterPreamble} auf den Beginn des Dokumentes verzögert.
+% \cs{AfterEndPreamble} auf den Beginn des Dokumentes verzögert.
 %    \begin{macrocode}
   \else%
-    \AfterPreamble{%
+    \AfterEndPreamble{%
       \ifcsundef{ps@#1}{%
         \ClassError{\TUD at Class@Name}{`#1' is no valid pagestyle}{%
           You tried to use `#1' as a pagestyle for option\MessageBreak%
@@ -483,20 +464,33 @@
 % Damit endet der Abschnitt für \cls{tudscrbook}- und \cls{tudscrreprt}-Klasse.
 %
 % \begin{macro}{\tud at pagecolor}
+% \begin{macro}{\normalcolor}
 % Der Befehl \cs{tud at pagecolor} dient für die Hauptklassen als Hilfsmakro, um 
 % je nach gewählter Ausprägung des Layouts die farblichen Seitenhintergründe zu 
 % aktivieren. Für die Klasse \cls{tudscrposter} wird der Befehl zusätzlich für 
 % das benutzerdefinierte Festlegen einer standardmäßigen Hintergrundfarbe mit
 % der Option \opt{backcolor} genutzt.
+%
+% Für das Aktivieren der Farbe \val{HKS41} wird \cs{normalcolor} erweitert, um 
+% hier in jedem Fall als Schriftfarbe \emph{weiß} zu verwenden.
 %    \begin{macrocode}
 \newcommand*\tud at pagecolor{}%
+\AfterPackage{xcolor}{%
+  \apptocmd\normalcolor{%
+    \tud at if@strequal{\tud at pagecolor}{HKS41}{\color{white}}{}%
+  }{}{\tud at patch@wrn{normalcolor}}%
+  \AtBeginDocument{%
+    \ifdefvoid{\tud at pagecolor}{}{\sbox\z@{\color{\tud at pagecolor}}}%
+    \normalcolor%
+  }%
+}
 %    \end{macrocode}
+% \end{macro}^^A \normalcolor
 % \end{macro}^^A \tud at pagecolor
 % \begin{option}{backcolor}
 % \changes{v2.05}{2016/04/15}{neu}^^A
 % \begin{option}{backgroundcolor}
 % \begin{option}{bgcolor}
-% \begin{macro}{\normalcolor}
 % Mit dieser Option kann die standardmäßige Hintergrundfarbe für Poster gesetzt 
 % werden.
 %    \begin{macrocode}
@@ -521,41 +515,27 @@
 % Wird die Option innerhalb des Dokumentes verwendet, wird mit einer Box erst 
 % die gewählte Farbe verifiziert und anschließend auf die am Dokumentbeginn 
 % definierte Textfarbe umgestellt.
+% \ToDo{angucken, was soll das genau?}[v2.07]
 %    \begin{macrocode}
-  \if at atdocument%
+  \tud at if@preamble{}{%
     \ifdefvoid{\tud at pagecolor}{}{\sbox\z@{\color{\tud at pagecolor}}}%
     \normalcolor%
-  \fi%
+  }%
 }
 \TUD at key{backgroundcolor}[true]{\TUDoptions{backcolor=#1}}
 \TUD at key{bgcolor}[true]{\TUDoptions{backcolor=#1}}
-%    \end{macrocode}
-% Für das Aktivieren der Farbe \val{HKS41} wird \cs{normalcolor} erweitert, um 
-% hier in jedem Fall als Schriftfarbe \emph{weiß} zu verwenden.
-%    \begin{macrocode}
-\AfterPackage{xcolor}{%
-  \CheckCommand*\normalcolor{\let\current at color\default at color\set at color}%
-  \apptocmd{\normalcolor}{%
-    \ifstr{\tud at pagecolor}{HKS41}{\color{white}}{}%
-  }{}{\tud at patch@wrn{normalcolor}}%
-  \AtBeginDocument{%
-    \ifdefvoid{\tud at pagecolor}{}{\sbox\z@{\color{\tud at pagecolor}}}%
-    \normalcolor%
-  }%
-}
 %</poster>
 %    \end{macrocode}
-% \end{macro}^^A \normalcolor
 % \end{option}^^A bgcolor
 % \end{option}^^A backgroundcolor
 % \end{option}^^A backcolor
 % \begin{option}{pageheadingsvskip}
 % \changes{v2.05}{2016/06/20}{neu}^^A
-% \begin{macro}{\tud at dim@pageheadingsvskip}
+% \begin{macro}{\tud at pageheadingsvskip@dim}
 % \changes{v2.05}{2016/06/20}{neu}^^A
 % \begin{option}{headingsvskip}
 % \changes{v2.05}{2016/06/20}{neu}^^A
-% \begin{macro}{\tud at dim@headingsvskip}
+% \begin{macro}{\tud at headingsvskip@dim}
 % \changes{v2.05}{2016/06/20}{neu}^^A
 % Mit diesen Optionen kann der Anwender die Überschriften von Titel, Teilen und
 % Kapiteln vertikal von ihrer Standardposition verschieben, welche vom \CD
@@ -567,19 +547,19 @@
 % die des Titelkopfes (\opt{titlepage}|=|\val{false}) verschoben.
 %    \begin{macrocode}
 %<*book|report|article>
-\newcommand*\tud at dim@pageheadingsvskip{0pt}
+\newcommand*\tud at headingsvskip@dim{0pt}
+\TUD at key{headingsvskip}{%
+  \TUD at set@dimkey{headingsvskip}{\tud at headingsvskip@dim}{#1}%
+}
+\newcommand*\tud at pageheadingsvskip@dim{\tud at headingsvskip@dim}
 \TUD at key{pageheadingsvskip}{%
-  \TUD at set@dimenkey{pageheadingsvskip}{\tud at dim@pageheadingsvskip}{#1}%
+  \TUD at set@dimkey{pageheadingsvskip}{\tud at pageheadingsvskip@dim}{#1}%
 }
-\newcommand*\tud at dim@headingsvskip{0pt}
-\TUD at key{headingsvskip}{%
-  \TUD at set@dimenkey{headingsvskip}{\tud at dim@headingsvskip}{#1}%
-}
 %</book|report|article>
 %    \end{macrocode}
-% \end{macro}^^A \tud at dim@headingsvskip
+% \end{macro}^^A \tud at headingsvskip@dim
 % \end{option}^^A headingsvskip
-% \end{macro}^^A \tud at dim@pageheadingsvskip
+% \end{macro}^^A \tud at pageheadingsvskip@dim
 % \end{option}^^A pageheadingsvskip
 %
 % \iffalse
@@ -596,12 +576,16 @@
 % \changes{v2.06}{2018/08/20}{neu}^^A
 % Die Option wird dahingehend erweitert, dass die Überschriften auch im 
 % extra-fetten Schnitt gesetzt werden können.
+% \ToDo{%
+%   Klassenoptionen paper=A4 und headings=optiontoheadandtoc durchreichen, 
+%   wenn mit \cs{PassOptionsToClass} genutzt.
+% }[v2.07]
 %    \begin{macrocode}
-\newif\if at tud@heavyheadings
+\tud at newif\if at tud@heavyheadings
 \TUD at key{headings}{%
   \TUD at set@numkey{headings}{@tempa}{%
     {light}{0},{lightfont}{0},{lite}{0},{litefont}{0},{noheavyfont}{0},%
-    {normal}{0},{standard}{0},{std}{0},{normalbold}{0},{boldnormal}{0},%
+    {standard}{0},{std}{0},{normalbold}{0},{boldnormal}{0},%
     {heavy}{1},{heavyfont}{1},{bold}{1},{boldfont}{1},%
     {ultrabold}{1},{boldultra}{1},{heavybold}{1},{boldheavy}{1},%
     {extendedbold}{1},{boldextended}{1}%
@@ -630,7 +614,7 @@
 % Die \KOMAScript-Option \opt{headings} setzt für alle Überschriften die 
 % Formatierung zurück. Um die Einstellungen für das \CD aktiv zu halten, werden 
 % nach der Ausführung der Option durch \cs{tud at x@scr at headings@reset} die mit 
-% \cs{tud at komafont@set} definierten Makros \cs{tud at komafont@\meta{Element}}
+% \cs{tud at komafont@set} definierten Makros |\tud at komafont@|\meta{Element}
 % erneut an die entsprechenden Schriftelemente angehängt. Bei der Verwendung 
 % der \KOMAScript-Option \opt{headings}|=|\val{standardclasses} werden außerdem 
 % noch die Optionen \opt{open} und \opt{chapterprefix} ausgeführt, weshalb auch
@@ -638,17 +622,17 @@
 %    \begin{macrocode}
 \DefineFamilyMember{KOMA}
 \DefineFamilyKey{KOMA}{headings}{%
+  \FamilyKeyStateUnknownValue%
   \TUD at SpecialOptionAtDocument{tud at x@scr at headings@reset}%
-  \FamilyKeyStateProcessed%
 }
 %<*book|report>
 \DefineFamilyKey{KOMA}{open}{%
+  \FamilyKeyStateUnknownValue%
   \TUD at SpecialOptionAtDocument{tud at x@scr at headings@reset}%
-  \FamilyKeyStateProcessed%
 }
 \DefineFamilyKey{KOMA}{chapterprefix}{%
+  \FamilyKeyStateUnknownValue%
   \TUD at SpecialOptionAtDocument{tud at x@scr at headings@reset}%
-  \FamilyKeyStateProcessed%
 }
 %</book|report>
 %    \end{macrocode}
@@ -663,34 +647,40 @@
 %
 % \begin{macro}{\tud at x@scr at headings@set}
 % \changes{v2.05}{2015/11/24}{neu}^^A
-% \begin{macro}{\tud at x@scr at headings@current}
+% \begin{macro}{\tud at subtitle@fontsizecmd}
 % \changes{v2.05}{2015/11/24}{neu}^^A
-% \begin{macro}{\tud at sec@fontsize}
+% \begin{macro}{\tud at prefix@fontsizecmd}
+% \changes{v2.06o}{2022/08/02}{neu}^^A
+% \begin{macro}{\tud at sec@fontsizecmd}
 % \changes{v2.05}{2015/11/24}{neu}^^A
-% \begin{macro}{\tud at thesis@fontsize}
-% \changes{v2.05}{2015/11/24}{neu}^^A
+% \begin{macro}{\tud at sec@baselineskip@@dim}
+% \changes{v2.06o}{2022/08/02}{neu}^^A
+% \begin{macro}{\tud at sec@baselineskip at set}
+% \changes{v2.06o}{2022/08/02}{neu}^^A
 % Als erstes werden die Optionen verarbeitet, welche einen Einfluss auf die 
-% Formatierung respektive die Schriftgröße der Überschriften haben. Wird über
-% die Option \opt{headings} eine andere Überschriftengröße gewählt, werden mit
-% dem Makro \cs{tud at x@scr at headings@set} die passenden Schriftgrößen sowohl für
-% die Überschriften (\cs{tud at sec@fontsize}) als auch die Titelseite
-% (\cs{tud at thesis@fontsize}) gesetzt. Dafür wird gewählte Schriftgröße 
-% der Überschriften\footnote{\ignorespaces%
-%   Option \opt{headings}|=|\val{standardclasses/big/normal/small}\ignorespaces%
-% } im Hilfsmakro \cs{tud at x@scr at headings@current} gesichert.
+% Formatierung respektive die Schriftgröße der Überschriften haben. Wird die
+% Option \opt{headings} verwendet, werden mit \cs{tud at x@scr at headings@set} die
+% Schriftgrößen für Überschriften sowie Präfix und Untertitel sowohl für die
+% Gliederungsebenen als auch den Titel gesetzt. Der Grundzeilenabstand in 
+% Überschriften wird in \cs{tud at sec@baselineskip@@dim} abgelegt, dieser ist 
+% für die Abstände innerhalb von Überschriften notwendig. 
 %    \begin{macrocode}
-\newcommand*\tud at x@scr at headings@current{}
-\newcommand*\tud at sec@fontsize{}
-\newcommand*\tud at thesis@fontsize{}
-\newcommand*\tud at x@scr at headings@set[1][]{%
-  \def\@tempa##1##2##3{%
-    \ifstr{##1}{\tud at x@scr at headings@current}{}{%
-      \renewcommand*\tud at x@scr at headings@current{##1}%
-      \renewcommand*\tud at sec@fontsize{##2}%
-      \renewcommand*\tud at thesis@fontsize{##3}%
-      #1%
+\newcommand*\tud at subtitle@fontsizecmd{\LARGE}
+\newcommand*\tud at prefix@fontsizecmd{\huge}
+\newcommand*\tud at sec@fontsizecmd{\Huge}
+\newcommand*\tud at sec@baselineskip@@dim{}
+\newcommand*\tud at sec@baselineskip at set{%
+  \begingroup%
+    \tud at sec@fontsizecmd%
+    \edef\tud at res@a{%
+      \endgroup%
+      \unexpanded{\def\tud at sec@baselineskip@@dim}{%
+        \the\dimexpr\glueexpr\f at baselineskip\relax\relax%
+      }%
     }%
-  }%
+  \tud at res@a%
+}
+\tud at sec@baselineskip at set
 %    \end{macrocode}
 % Wird \cs{tud at x@scr at headings@set} aufgerufen, so werden mit \cs{KOMAoptionOf} 
 % die aktuellen Werte der Option \opt{headings} ausgelesen, welche in einer
@@ -697,42 +687,48 @@
 % Liste ausgegeben werden. Diese wird durchlaufen und dabei auf die relevanten
 % Werte reagiert.
 %    \begin{macrocode}
-  \KOMAoptionOf[\def\@tempb]{\KOMAClassFileName}{headings}%
-  \@for\@tempc:=\@tempb\do{%
-    \ifstr{standardclasses}{\@tempc}{\@tempa{standardclasses}{\Huge}{\LARGE}}{%
-    \ifstr{big}{\@tempc}{\@tempa{big}{\Huge}{\LARGE}}{%
-    \ifstr{normal}{\@tempc}{\@tempa{normal}{\huge}{\Large}}{%
-    \ifstr{small}{\@tempc}{\@tempa{small}{\LARGE}{\large}}{}}}}%
+\newcommand*\tud at x@scr at headings@set[1][]{%
+  \def\@tempb##1##2##3{%
+    \renewcommand*\tud at sec@fontsizecmd{##1}%
+    \renewcommand*\tud at prefix@fontsizecmd{##2}%
+    \renewcommand*\tud at subtitle@fontsizecmd{##3}%
+    \tud at sec@baselineskip at set%
+    #1%
   }%
-%    \end{macrocode}
-% Der Abstand nach Teil- und Kapitelüberschriften wird ebenso in Abhängigkeit 
-% der gewählten Einstellung für \opt{headings} definiert.
-%    \begin{macrocode}
-  \begingroup
-    \tud at sec@fontsize%
-    \@tempskipa=\glueexpr%
-      .8\baselineskip \@plus .05\baselineskip \@minus .1\baselineskip%
-    \relax\relax%
-    \edef\tud at res@a{%
-      \endgroup%
-      \def\noexpand\tud at cd@afterskip{\the\@tempskipa}%
-    }%
-  \tud at res@a%
+  \KOMAoptionOf[\def\@tempc]{\KOMAClassFileName}{headings}%
+  \@for\@tempc:=\@tempc\do{%
+    \TUD at set@numkey{headings}{@tempa}{%
+      {standardclasses}{0},{big}{1},{normal}{2},{small}{3}%
+    }{\@tempc}%
+    \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+      \ifcase\@tempa\relax% standardclasses
+        \@tempb{\Huge} {\LARGE}{\Large}%
+      \or% big
+        \@tempb{\Huge} {\huge} {\LARGE}%
+      \or% normal
+        \@tempb{\huge} {\LARGE}{\Large}%
+      \or% small
+        \@tempb{\LARGE}{\Large}{\large}%
+      \fi%
+    \fi%
+  }%
 }
 %    \end{macrocode}
 % Damit die Einstellungen für die Größe wirksam werden, wird das Makro einmalig
 % zu Beginn des Dokumentes ausgeführt.
 %    \begin{macrocode}
-\AtEndPreamble{\tud at x@scr at headings@set}
+\AfterEndPreamble{\tud at x@scr at headings@set}
 %    \end{macrocode}
-% \end{macro}^^A \tud at thesis@fontsize
-% \end{macro}^^A \tud at sec@fontsize
-% \end{macro}^^A \tud at x@scr at headings@current
+% \end{macro}^^A \tud at sec@baselineskip at set
+% \end{macro}^^A \tud at sec@baselineskip@@dim
+% \end{macro}^^A \tud at sec@fontsizecmd
+% \end{macro}^^A \tud at prefix@fontsizecmd
+% \end{macro}^^A \tud at subtitle@fontsizecmd
 % \end{macro}^^A \tud at x@scr at headings@set
 % \begin{macro}{\tud at x@scr at headings@reset}
 % \changes{v2.05}{2015/11/24}{neu}^^A
-% Hiermit wird nach dem Ausführen der Option \opt{headings} im Zweifelsfall die 
-% Größe und Formatierung der Überschriften neu gesetzt.
+% Hiermit wird nach dem Ausführen der Option \opt{headings} die Größe und 
+% Formatierung der Überschriften neu gesetzt.
 %    \begin{macrocode}
 \newcommand*\tud at x@scr at headings@reset{%
   \tud at cd@process%
@@ -768,27 +764,43 @@
 % \begin{macro}{\tud at sec@fontface}
 % \changes{v2.05}{2016/04/04}{Optionales Argument für \pkg{tudscrcomp}}^^A
 % \changes{v2.06}{2018/08/20}{extra-fette Überschriften möglich}^^A
+% \changes{v2.06o}{2022/08/02}{Überschrifen im \CD ohne aktive
+%   Fließtextschriften möglich}^^A
 % \begin{macro}{\tud at sec@@fontface}
 % \begin{macro}{\tud at sec@format}
+% \changes{v2.06o}{2022/08/02}{Sternversion für Leerraum ohne \cs{strut}}^^A
+% \begin{macro}{\tud at sec@@format}
+% \begin{macro}{\tud at sec@@@format}
 % \begin{macro}{\tud at sec@uppercase}
-% \begin{macro}{\tud at sec@strut}
-% \changes{v2.06}{2018/07/24}{neu}^^A
+% \begin{macro}{\if at tud@sec}
+% \changes{v2.06o}{2022/08/02}{neu}^^A
 % Mit \cs{tud at sec@fontface} wird die Schriftart für Überschriften im 
 % Layout des \CDs definiert.
+% \ToDo{Auf neues NFSS anpassen, \cs{fontseriesforce} überprüfen}[v2.07]
 %    \begin{macrocode}
 %<package&fixfonts>\AfterPackage{tudscrfonts}{%
 \newcommand*\tud at sec@fontface[1][]{\tud at sec@@fontface{#1}}%
 \newcommand*\tud at sec@@fontface[1]{%
   \sectfont#1%
-  \if at tud@cdfont at active\if at tud@heavyheadings%
-    \if at tud@x at mweights@enabled%
-      \edef\bfseries at rm{\tud at cdfont@ebf}%
-      \edef\bfseries at sf{\tud at cdfont@ebf}%
-      \edef\bfseries at tt{\tud at ttfont@ebf}%
+  \if at tud@cdfont at active%
+    \if at tud@heavyheadings%
+      \if at tud@x at mweights@enabled%
+        \edef\bfseries at rm{\tud at cdfont@ebf}%
+        \edef\bfseries at sf{\tud at cdfont@ebf}%
+        \edef\bfseries at tt{\tud at ttfont@ebf}%
+      \fi%
+      \let\bfdefault\tud at cdfont@ebf%
+      \fontseriesforce{\tud at cdfont@ebf}%
     \fi%
-    \let\bfdefault\tud at cdfont@ebf%
-    \fontseries{\tud at cdfont@ebf}%
-  \fi\fi%
+  \else%
+    \fontfamily{\tud at cdfont@fam}%
+    \if at tud@heavyheadings%
+      \let\bfdefault\tud at cdfont@ebf%
+    \else%
+      \let\bfdefault\tud at cdfont@bf%
+    \fi%
+    \fontseriesforce{\bfdefault}%
+  \fi%
   \selectfont%
 }
 %    \end{macrocode}
@@ -806,84 +818,67 @@
   }%
 \fi
 %    \end{macrocode}
-% Der Befehl \cs{tud at sec@format} dient zur Formatierung von Überschriften.
-% Dabei wird dieser mit der von \KOMAScript{} bereitgestellten Schnittstelle für
-% Teile\footnote{\cs{partlineswithprefixformat}}, 
-% Kapitel\footnote{\cs{chapterlineswithprefixformat}, \cs{chapterlinesformat}} 
-% und 
+% Mit \cs{tud at sec@format} erfolgt die Formatierung von Überschriften, wobei die
+% \KOMAScript-Schnittstelle für Teile\footnote{\cs{partlineswithprefixformat}}, 
+% Kapitel\footnote{\cs{chapterlineswithprefixformat}, \cs{chapterlinesformat}}, 
 % Abschnitte\footnote{\cs{sectionlinesformat}, \cs{sectioncatchphraseformat}} 
-% verwendet. Dadurch wird eine Anpassung der Gliederungsbefehle~-- wie es
-% einschließlich Version~v2.05 für die erzwungene Großschreibung umgesetzt 
-% wurde~-- vermieden. Für die \OpenSans führt das Makro \cs{tud at sec@format}
-% lediglich \cs{tud at sec@strut} aus.
+% sowie zusätzlich einfache Layoutelemente verwendet werden. Dadurch wird eine 
+% Anpassung der Gliederungsbefehle~-- wie es einschließlich Version~v2.05 für
+% die erzwungene Großschreibung umgesetzt wurde~-- vermieden.
+%
+% Um für Teile und Kapitel ein einheitliches Erscheinungsbild zu erhalten, wird
+% für diese zum einen \cs{strut}~-- in der Schriftgröße des Kontexts oder aber 
+% für das im  optionalen Argument gegebene Schriftelement~-- und zum anderen
+% ausreichend vertikaler Leerraum für Umlaute eingefügt. Letzteres erfolgt auch 
+% für Abschnitte (Sternversion). Dies liegt darin begründet, dass auf einer 
+% neuen Seite die erste Grundlinie höher liegt, als für Umlautmajuskeln in der 
+% Schrift für \cs{section} etc. notwendig ist. Deshalb wird die Grundlinie
+% \enquote{notfallmäßig} mit \cs{vphantom} so weit nach unten verschoben, wie 
+% für die höchste Letter benötigt wird, unabhängig vom tatsächlichen Inhalt.
+%
+% Für Markup oder andere Inhalte, die lediglich im Fließtext jedoch nicht in 
+% Überschriften ausgegeben werden, wird der Schalter \cs{if at tud@sec} definiert.
+% Das Setzen des Schalters wird in \cs{tud at sec@format} vorgenommen.
 %    \begin{macrocode}
-\newcommand*\tud at sec@format[2][]{%
-  \IfArgIsEmpty{#1}{%
-    \tud at sec@strut%
-  }{%
-    \begingroup%
-      \usefontofkomafont{#1}%
-      \tud at sec@strut%
-    \endgroup%
-  }%
-  #2%
+\tud at newif\if at tud@sec
+\newrobustcmd*\tud at sec@format{%
+  \@tud at sectrue%
+  \kernel at ifstar{\tud at sec@@format{}}{\tud at sec@@format{\strut}}%
 }
+\newcommand*\tud at sec@@format[1]{%
+  \kernel at ifnextchar[%]
+    {\tud at sec@@@format{#1}}%
+    {\tud at sec@@@format{#1}[]}%
+}
+\newcommand*\tud at sec@@@format{}
+\def\tud at sec@@@format#1[#2]#3{%
+  \begingroup%
+    \IfArgIsEmpty{#2}%
+      {\let\tud at res@a\@firstofone}%
+      {\def\tud at res@a{\usekomafont{#2}}}%
+    \tud at res@a{%
+      \nobreak#1\nobreak\vphantom{\textsuperscript{\tud at font@phantomglyphs}}%
+    }%
+  \endgroup%
+  \tud at sec@@@@format{#3}%
+}
+\newcommand*\tud at sec@@@@format[1]{#1}
 %    \end{macrocode}
 % Für die alten Schriften hat der Befehl eine erweiterte Funktionalität, wenn 
 % die Schriftfamilie \DIN aktiv ist, welche für Überschriften einzusetzen ist.
-% Das \CD verlangt dabei, dass zwingend Majuskeln\footnote{Großbuchstaben} zu 
-% verwenden sind. Hierfür wird der Befehl \cs{MakeTextUppercase} aus dem Paket 
-% \pkg{textcase} genutzt, welcher den internen \LaTeX-Befehl \cs{MakeUppercase} 
-% verbessert. Das optionale Argument kann genutzt werden, falls nicht die 
-% aktuelle Schrift sondern ein durch \KOMAScript{} definiertes Schriftelement 
-% ausgewertet werden soll.
+% Das \CD verlangt dabei, dass zwingend Majuskeln zu verwenden sind. Hierfür 
+% wird der Befehl \cs{MakeTextUppercase} aus dem Paket \pkg{textcase} genutzt, 
+% der den internen \LaTeX"~Befehl \cs{MakeUppercase} verbessert.
 %    \begin{macrocode}
 \if at tud@cdoldfont at active
-  \newcommand*\tud at sec@uppercase{\MakeUppercase}%
-  \AfterPackage*{textcase}{%
-    \renewcommand*\tud at sec@uppercase{\MakeTextUppercase}%
-  }%
-  \renewcommand*\tud at sec@format[2][]{%
-    \@tud at res@swafalse%
-    \IfArgIsEmpty{#1}{%
-      \tud at sec@strut%
-      \tud at ifdin{\@tud at res@swatrue}{}%
-    }{%
-      \begingroup%
-        \usefontofkomafont{#1}%
-        \tud at sec@strut%
-        \tud at ifdin{\aftergroup\@tud at res@swatrue}{}%
-      \endgroup%
-    }%
-    \if at tud@res at swa%
-      \tud at sec@uppercase{#2}%
-    \else%
-      #2%
-    \fi%
-  }%
+  \def\tud at sec@@@@format#1{\tud at ifdin{\MakeUppercase{#1}}{#1}}%
 \fi
-%    \end{macrocode}
-% Für Abschnitte etc. liegt auf einer neuen Seite dier erste Grundlinie höher,
-% als für Großbuchstaben in der größeren Schrift für \cs{section} etc. benötigt 
-% wird. Deshalb wird die Grundlinie \enquote{notfallmäßig} so weit nach unten
-% verschoben, wie für den höchsten Buchstabe benötigt wird. Mit dem Befehl 
-% \cs{tud at sec@strut} wird für alle Überschriften dafür gesorgt, dass immer der 
-% gleiche Freiraum bereitgehalten wird, unabhängig vom Inhalt der spezifischen 
-% Überschrift. Hierfür wird \cs{strutbox} aus dem \LaTeXe"~Kernel~-- nachdem 
-% \cs{strut} zuvor bereits einmal ausgeführt wird, um die Standardgröße der Box 
-% zu verwenden~-- temporär umdefiniert.
-%    \begin{macrocode}
-\newrobustcmd*\tud at sec@strut{%
-%<*class>
-  \begingroup%
-    \strut\setbox\strutbox\hbox{\vphantom{\textsuperscript{\"A\"O\"U}}}\strut%
-  \endgroup%
-%</class>
-}
 %<package&fixfonts>}
 %    \end{macrocode}
-% \end{macro}^^A \tud at sec@strut
+% \end{macro}^^A \if at tud@sec
 % \end{macro}^^A \tud at sec@uppercase
+% \end{macro}^^A \tud at sec@@@format
+% \end{macro}^^A \tud at sec@@format
 % \end{macro}^^A \tud at sec@format
 % \end{macro}^^A \tud at sec@@fontface
 % \end{macro}^^A \tud at sec@fontface
@@ -894,6 +889,21 @@
 %<*class&body>
 % \fi
 %
+% \begin{macro}{\tud at part@hook}
+% \changes{v2.06o}{2022/08/02}{neu}^^A
+% \KOMAScript{} ignoriert für Teile standardmäßig alle Einstellungen für die 
+% Option \opt{parskip}. Da diese jedoch für Kapitel Beachtung finden und mit 
+% \TUDScript das Erscheinungsbild~-- insbesondere die vertikale Platzierung von 
+% Überschriften~-- für diese beiden Elemente einheitlich sein soll, wird über 
+% diesen Haken dafür gesorgt, dass \opt{parskip} auch für Teile genutzt wird.
+%    \begin{macrocode}
+%<*book|report>
+\newcommand*\tud at part@hook{}
+\let\tud at part@hook\relax
+\AddtoDoHook{heading/begingroup/part}{\tud at part@hook}
+%</book|report>
+%    \end{macrocode}
+% \end{macro}^^A \tud at part@hook
 % \begin{macro}{\tud at title@fontcolor}
 % \begin{macro}{\tud at part@fontcolor}
 % \begin{macro}{\tud at chapter@fontcolor}
@@ -929,7 +939,8 @@
 % dass die Optionen auch im Dokument geändert und wiederhergestellt werden
 % können.
 % \ToDo{\cs{...pagecolor} und {\cs{...fontcolor} (part/chapter/title)}}[v2.07]
-% \ToDo{Schriftfarbauswahl in \cs{tud at cd@process}}[v2.07]
+% \ToDo{Farbauswahl in \cs{tud at cd@process} bzw. \KOMAScript{} do-hooks}[v2.07]
+% \ToDo{Überschriften paragraph und subparagraph in Open Sans}[v2.07]
 %    \begin{macrocode}
 \newcommand*\tud at cd@process{%
 %    \end{macrocode}
@@ -966,16 +977,17 @@
       \usekomafont{disposition}%
       \raggedtitle%
       \tud at sec@fontface%
-      \tud at sec@fontsize%
+      \tud at sec@fontsizecmd%
       \tud at color{\tud at title@fontcolor}%
     }%
     \tud at komafont@set{subtitle}{%
-      \tud at thesis@fontsize%
-      \fontseries{\tud at cdfont@bf}\selectfont%
+      \tud at subtitle@fontsizecmd%
+      \fontseriesforce{\tud at cdfont@bf}\selectfont%
     }%
     \tud at komafont@set{subject}{%
+      \usesizeofkomafont{section}%
       \sffamily%
-      \usesizeofkomafont{section}%
+      \fontseriesforce{\tud at cdfont@bf}\selectfont%
       \tud at color{\tud at title@fontcolor}%
     }%
 %<*book|report|article>
@@ -988,6 +1000,7 @@
 % Das gleiche für die Teileseiten.
 %    \begin{macrocode}
   \ifcase\tud at cd@part at num\relax% false
+    \tud at cs@restore{partlineswithprefixformat}%
     \tud at cs@restore{scr at part@beforeskip}%
 %<*book|report>
     \tud at cs@restore{scr at part@innerskip}%
@@ -998,8 +1011,8 @@
     \tud at cs@restore{partheadendvskip}%
     \tud at cs@restore{partheademptypage}%
     \tud at cs@restore{partpagestyle}%
+    \let\tud at part@hook\relax%
 %</book|report>
-    \tud at cs@restore{partlineswithprefixformat}%
     \tud at komafont@unset{part}%
     \tud at komafont@unset{partnumber}%
     \tud at cs@restore{raggedpart}%
@@ -1014,19 +1027,23 @@
 % weiter unten im Quelltext zu finden.
 %    \begin{macrocode}
   \else% !false
+    \tud at cs@store{partlineswithprefixformat}%
+    \let\partlineswithprefixformat\tud at partlineswithprefixformat%
     \tud at cs@store{scr at part@beforeskip}%
 %<*book|report>
-    \renewcommand*\scr at part@beforeskip{\tud at cd@beforeskip}%
+    \renewcommand*\scr at part@beforeskip{\tud at cd@beforevskip@@dim}%
 %</book|report>
 %<*article|poster>
-    \renewcommand*\scr at part@beforeskip{\tud at cd@afterskip+\baselineskip}%
+    \renewcommand*\scr at part@beforeskip{%
+      \glueexpr\tud at cd@aftervskip@@glue+\baselineskip\relax%
+    }%
 %</article|poster>
 %<*book|report>
     \tud at cs@store{scr at part@innerskip}%
-    \renewcommand*\scr at part@innerskip{\tud at cd@innerskip}%
+    \renewcommand*\scr at part@innerskip{\tud at cd@innervskip@@dim}%
 %</book|report>
     \tud at cs@store{scr at part@afterskip}%
-    \renewcommand*\scr at part@afterskip{\tud at cd@afterskip}%
+    \renewcommand*\scr at part@afterskip{\tud at cd@aftervskip@@glue}%
     \tud at cs@store{partheadstartvskip}%
     \let\partheadstartvskip\tud at partheadstartvskip%
 %<*book|report>
@@ -1036,9 +1053,14 @@
     \let\partheademptypage\tud at partheademptypage%
     \tud at cs@store{partpagestyle}%
     \renewcommand*\partpagestyle{plain.tudheadings}%
+%    \end{macrocode}
+% Mit |\setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par at updaterelative| werden
+% normalerweise direkt nach dem Haken |heading/begingroup/part| durch 
+% \KOMAScript{} die Einstellungen für die Option \opt{parskip} deaktiviert. Ist 
+% das Layout des \CDs aktiv, wird dies unterbunden.
+%    \begin{macrocode}
+    \def\tud at part@hook{\let\setparsizes\@gobblefour}%
 %</book|report>
-    \tud at cs@store{partlineswithprefixformat}%
-    \let\partlineswithprefixformat\tud at partlineswithprefixformat%
 %    \end{macrocode}
 % Es wird die Schriftfarbe, "~größe und "~art angepasst, je nachdem ob der
 % Titel des Dokumentes auf den Teileseiten auftauchen soll oder eben nicht.
@@ -1049,6 +1071,7 @@
     }%
     \tud at komafont@set{partnumber}{%
       \tud at sec@fontface%
+      \tud at prefix@fontsizecmd%
       \tud at color{\tud at part@fontcolor}%
     }%
     \tud at cs@store{raggedpart}%
@@ -1061,12 +1084,12 @@
 %    \begin{macrocode}
 %<*book|report>
   \ifcase\tud at cd@chapter at num\relax% false
+    \tud at cs@restore{chapterlineswithprefixformat}%
+    \tud at cs@restore{chapterlinesformat}%
     \tud at cs@restore{scr at chapter@beforeskip}%
     \tud at cs@restore{scr at chapter@innerskip}%
     \tud at cs@restore{scr at chapter@afterskip}%
     \tud at cs@restore{chapterheadstartvskip}%
-    \tud at cs@restore{chapterlineswithprefixformat}%
-    \tud at cs@restore{chapterlinesformat}%
     \tud at cs@restore{tud at chapter@before at hook}%
     \tud at cs@restore{tud at chapter@after at hook}%
     \tud at komafont@unset{chapter}%
@@ -1078,18 +1101,18 @@
 % angepassten Befehle abermals über \cs{let}.
 %    \begin{macrocode}
   \else% !false
+    \tud at cs@store{chapterlineswithprefixformat}%
+    \let\chapterlineswithprefixformat\tud at chapterlineswithprefixformat%
+    \tud at cs@store{chapterlinesformat}%
+    \let\chapterlinesformat\tud at chapterlinesformat%
     \tud at cs@store{scr at chapter@beforeskip}%
-    \renewcommand*\scr at chapter@beforeskip{\tud at cd@beforeskip}%
+    \renewcommand*\scr at chapter@beforeskip{\tud at cd@beforevskip@@dim}%
     \tud at cs@store{scr at chapter@innerskip}%
-    \renewcommand*\scr at chapter@innerskip{\tud at cd@innerskip}%
+    \renewcommand*\scr at chapter@innerskip{\tud at cd@innervskip@@dim}%
     \tud at cs@store{scr at chapter@afterskip}%
-    \renewcommand*\scr at chapter@afterskip{\tud at cd@afterskip}%
+    \renewcommand*\scr at chapter@afterskip{\tud at cd@aftervskip@@glue}%
     \tud at cs@store{chapterheadstartvskip}%
     \let\chapterheadstartvskip\tud at chapterheadstartvskip%
-    \tud at cs@store{chapterlineswithprefixformat}%
-    \let\chapterlineswithprefixformat\tud at chapterlineswithprefixformat%
-    \tud at cs@store{chapterlinesformat}%
-    \let\chapterlinesformat\tud at chapterlinesformat%
     \tud at cs@store{tud at chapter@before at hook}%
     \renewcommand*\tud at chapter@before at hook{\tud at chapter@pre}%
     \tud at cs@store{tud at chapter@after at hook}%
@@ -1096,7 +1119,7 @@
     \renewcommand*\tud at chapter@after at hook{\tud at chapter@app}%
     \tud at komafont@set{chapter}{%
       \tud at sec@fontface%
-      \tud at sec@fontsize%
+      \tud at sec@fontsizecmd%
       \tud at color{\tud at chapter@fontcolor}%
     }%
     \tud at komafont@set{chapterprefix}{\usesizeofkomafont{partnumber}}%
@@ -1146,12 +1169,12 @@
     \renewcommand*\raggedsection{\tud at raggedright}%
     \tud at cs@store{minisec}%
     \renewcommand\minisec[1]{%
-      \tud at cs@use{minisec}{\tud at sec@format{##1}}%
+      \tud at cs@use{minisec}{\tud at sec@format*{##1}}%
     }%
     \tud at komafont@set{minisec}{%
       \tud at sec@fontface%
       \ifcase\tud at cd@section at num\relax\or\else% *color
-        \ifstr{\tud at pagecolor}{HKS41}{}{\color{HKS41}}%
+        \tud at if@strequal{\tud at pagecolor}{HKS41}{}{\color{HKS41}}%
       \fi%
     }%
   \fi%
@@ -1218,15 +1241,16 @@
 %    \end{macrocode}
 % \end{macro}^^A \tud at cd@specialpage at unset
 % \end{macro}^^A \tud at cd@specialpage at set
-% \begin{macro}{\tud at cd@headstartvskip}
+% \begin{macro}{\tud at cd@headstart at vskip}
 % \changes{v2.06}{2018/08/01}{neu}^^A
+% \changes{v2.06o}{2022/08/02}{Bugfix für vertikale Unterschiede}^^A
 % \begin{macro}{\tud at cd@vphantom}
 % \changes{v2.06}{2018/08/01}{neu}^^A
-% \begin{macro}{\tud at cd@beforeskip}
+% \begin{macro}{\tud at cd@beforevskip@@dim}
 % \changes{v2.06}{2018/08/01}{neu}^^A
-% \begin{macro}{\tud at cd@innerskip}
+% \begin{macro}{\tud at cd@innervskip@@dim}
 % \changes{v2.06}{2018/08/01}{neu}^^A
-% \begin{macro}{\tud at cd@afterskip}
+% \begin{macro}{\tud at cd@aftervskip@@glue}
 % \changes{v2.06}{2018/08/01}{neu}^^A
 % Im \TUDCD werden sowohl Titel als auch Teil- und Kapitelüberschriften auf der 
 % gleichen Grundlinienhöhe gesetzt. Hierfür sind Anpassungen der entsprechenden
@@ -1235,26 +1259,40 @@
 % \cs{chapterheadstartvskip} gesetzt. Um das Layout des \CDs umzusetzen, werden 
 % diese beiden Makros als Haken genutzt.
 %
-% Das Makro \cs{tud at cd@beforeskip} enthält den Abstand vor einer Überschrift, 
-% welcher über \cs{tud at cd@headstartvskip} gesetzt wird. Der Abstand zwischen 
+% Das Makro \cs{tud at cd@beforevskip@@dim} ist der Abstand vor einer Überschrift, 
+% welcher über \cs{tud at cd@headstart at vskip} gesetzt wird. Der Abstand zwischen 
 % der Nummerierung eines Teils und der eigentlichen Bezeichnung wird mit
-% \cs{tud at cd@innerskip} definiert und durch \KOMAScript{} eingefügt. Gleiches 
-% gilt für eine separate Kapitelnummernzeile (\opt{chapterprefix}) und dem 
-% eigentlichen Kapiteltitel. Durch \cs{tud at cd@afterskip} wird der Abstand
-% zwischen Titel und Fließtext respektive der unteren Prääambel definiert. 
-% Dieser Abstand ist abhängig von der gewählten Einstellung für \opt{headings}.
+% \cs{tud at cd@innervskip@@dim} definiert und durch \KOMAScript{} eingefügt.
+% Gleiches gilt für eine separate Kapitelnummernzeile (\opt{chapterprefix}) und
+% dem eigentlichen Kapiteltitel. Durch \cs{tud at cd@aftervskip@@glue} wird der
+% Abstand zwischen Titel und Fließtext respektive der unteren Prääambel
+% definiert. Dieser Abstand ist abhängig von der gewählten Einstellung für die 
+% Option \opt{headings}.
 %    \begin{macrocode}
-\newcommand*\tud at cd@beforeskip{%
-  \dimexpr-\tud at len@areavskip-\tud at len@areaheadvskip\relax%
+\newcommand*\tud at cd@beforevskip@@dim{%
+  \dimexpr-\tud at dim@areavskip-\tud at dim@areaheadvskip\relax%
 }
-\newcommand*\tud at cd@innerskip{.25\baselineskip}%
-\newcommand*\tud at cd@afterskip{%
-  .75\baselineskip \@plus .05\baselineskip \@minus .1\baselineskip%
+\newcommand*\tud at cd@innervskip@@dim{%
+  \dimexpr(\tud at sec@baselineskip@@dim)/5\relax%
+}%
+\newcommand*\tud at cd@aftervskip@@glue{%
+  \glueexpr
+    \dimexpr(\tud at sec@baselineskip@@dim)*4/5\relax
+    \@plus\dimexpr(\tud at sec@baselineskip@@dim)/20\relax
+    \@minus\dimexpr(\tud at sec@baselineskip@@dim)/10\relax
+  \relax
 }
-\newcommand*\tud at cd@headstartvskip{%
-  \@tempskipa=\glueexpr\tud at cd@beforeskip\relax\relax%
-  \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi%
-  \null\vskip-\baselineskip\vskip\@tempskipa%
+%    \end{macrocode}
+% Dieses Konstrukt ist mehr oder weniger durch Ausprobieren entstanden, da für 
+% die unterschiedlichen Einstellungsmöglichkeiten der Option \opt{headings} je 
+% nach gewählter Größe der Überschriften leichte Verschiebungen und Sprünge für 
+% die unterschiedlichen Varianten\footnote{Prefix, Untertitel, Absatzabstände} 
+% aufgetreten sind.
+%    \begin{macrocode}
+\newcommand*\tud at cd@headstart at vskip{%
+  \tud at setdim\@tempdima{\tud at cd@beforevskip@@dim}%
+  \tud at length@setabsolute\@tempdima%
+  \null\vskip\dimexpr\glueexpr\@tempdima-\f at baselineskip-\parskip\relax\relax%
 }
 %    \end{macrocode}
 % Sollte keine Präfixzeile für Teile oder Kapitel verwendet werden, muss für 
@@ -1263,17 +1301,17 @@
 %    \begin{macrocode}
 \newcommand*\tud at cd@vphantom{%
   \begingroup%
-    \usekomafont{partnumber}{\nobreak\tud at sec@strut}%
-    \setlength\@tempskipa{\tud at cd@innerskip}%
-    \par\nobreak\vskip\@tempskipa%
+    \usekomafont{partnumber}{%
+      \tud at sec@format{\vskip\tud at cd@innervskip@@dim}%
+    }%
   \endgroup%
 }
 %    \end{macrocode}
-% \end{macro}^^A \tud at cd@afterskip
-% \end{macro}^^A \tud at cd@innerskip
-% \end{macro}^^A \tud at cd@beforeskip
+% \end{macro}^^A \tud at cd@aftervskip@@glue
+% \end{macro}^^A \tud at cd@innervskip@@dim
+% \end{macro}^^A \tud at cd@beforevskip@@dim
 % \end{macro}^^A \tud at cd@vphantom
-% \end{macro}^^A \tud at cd@headstartvskip
+% \end{macro}^^A \tud at cd@headstart at vskip
 %
 % \iffalse
 %<*book|report>
@@ -1282,6 +1320,41 @@
 % \subsection{Positionierung und Formatierung von Überschriften}
 % \subsubsection{Präambeln für Teile und Kapitel}
 %
+% \begin{macro}{\scr at startpart}
+% Für die Präambel von Teilen muss ebenfalls etwas gebastelt werden, um das 
+% Erscheinungsbild an das von Teilen anzupassen, falls das Layout des \CDs 
+% aktiv ist.
+%    \begin{macrocode}
+\patchcmd\scr at startpart{%
+  \partheadstartvskip
+  \vbox to\z@{\vss\use at preamble{#1 at o}\strut\par}%
+  \vskip-\baselineskip\nobreak
+}{%
+  \ifcase\tud at cd@part at num\relax% false
+    \partheadstartvskip%
+    \vbox to\z@{\vss\use at preamble{#1 at o}\strut\par}%
+    \vskip-\baselineskip\nobreak%
+  \else%
+%    \end{macrocode}
+% Im Gegensatz zur ursprünglichen Definition wird die Präambel vor der 
+% vertikalen Formatierung des Teils ausgegeben und an die Kapitelpräambel 
+% angeglichen.
+%    \begin{macrocode}
+    {%
+      \setbox\z@\vbox{%
+        \vskip\dimexpr%
+          \tud at cd@innervskip@@dim-\tud at sec@baselineskip@@dim-\baselineskip%
+        \relax%
+        \use at preamble{#1 at o}\strut\par%
+      }%
+      \vbox to \z@{\box\z@\vss}%
+      \vskip\dimexpr\parskip-\baselineskip\relax%
+    }%
+    \partheadstartvskip%
+  \fi%
+}{}{\tud at patch@wrn{scr at startpart}}
+%    \end{macrocode}
+% \end{macro}^^A \scr at startpart
 % \begin{macro}{\tud at preamble@fontcolor}
 % \changes{v2.06}{2018/08/08}{neu}^^A
 % Der Befehl wird innerhalb von \cs{set@@@@preamble} genutzt, um die notwendige 
@@ -1303,8 +1376,8 @@
 % Zunächst wird der unterschiedliche Abstand bei Teil- und Kapitelpräambeln 
 % ausgeglichen.
 %    \begin{macrocode}
-  \@tempskipa=\glueexpr\tud at cd@afterskip\relax%
-  \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi%
+  \tud at setglue\@tempskipa{\tud at cd@aftervskip@@glue}%
+  \tud at length@setabsolute\@tempskipa%
   \vskip\@tempskipa%
 %    \end{macrocode}
 % Anschließend folgen die Anpassungen für die Teilpräambel.
@@ -1313,7 +1386,7 @@
     \renewcommand*\tud at abstract@level at num{1}%
   \fi%
   \KOMAoptions{titlepage=false}%
-  \null\vskip-\baselineskip%
+  \null\vskip-1\baselineskip%
   \addtokomafont{disposition}{\tud at color{\tud at part@fontcolor}}%
   \addtokomafont{dictum}{\tud at color{\tud at part@fontcolor}}%
   \let\tud at preamble@fontcolor\tud at part@fontcolor%
@@ -1332,7 +1405,7 @@
     \renewcommand*\tud at abstract@level at num{1}%
   \fi%
   \KOMAoptions{titlepage=false}%
-  \null\vskip-\baselineskip%
+  \null\vskip-1\baselineskip%
 %    \end{macrocode}
 % Die Farb- und Schrifteinstellungen sind nur für reine Kapitelseiten notwendig.
 %    \begin{macrocode}
@@ -1362,7 +1435,7 @@
     \hbox to\hsize{#4\parbox[{#2}]{#3}{#6\par}#5\par}%
   }%
 }
-\patchcmd{\set@@@@preamble}{%
+\patchcmd\set@@@@preamble{%
   \hbox to\hsize{#4\parbox[{#2}]{#3}{#6\par}#5\par}%
 }{%
   \def\@tempa####1@####2{%
@@ -1402,8 +1475,8 @@
 % Die Schriftelement für die Untertitel von Teilen.
 %    \begin{macrocode}
 \newkomafont{partsubtitle}{%
-  \tud at thesis@fontsize%
-  \fontseries{\tud at cdfont@bf}\selectfont%
+  \tud at subtitle@fontsizecmd%
+  \fontseriesforce{\tud at cdfont@bf}\selectfont%
   \tud at color{\tud at part@fontcolor}%
 }
 \aliaskomafont{parttitle}{partsubtitle}
@@ -1427,8 +1500,8 @@
 % Die Schriftelement für die Untertitel von Kapiteln.
 %    \begin{macrocode}
 \newkomafont{chaptersubtitle}{%
-  \tud at thesis@fontsize%
-  \fontseries{\tud at cdfont@bf}\selectfont%
+  \tud at subtitle@fontsizecmd%
+  \fontseriesforce{\tud at cdfont@bf}\selectfont%
   \tud at color{\tud at chapter@fontcolor}%
 }
 %</book|report>
@@ -1442,7 +1515,10 @@
 %    \begin{macrocode}
 \newcommand*\tud at sec@subtitle[1]{%
   \ifcsvoid{tud@#1 at subtitle}{}{%
-    {\usekomafont{#1subtitle}{\tud at sec@format{\csuse{tud@#1 at subtitle}}}}\par%
+    {\usekomafont{#1subtitle}{%
+      \vskip-1\parskip%
+      \tud at sec@format{\csuse{tud@#1 at subtitle}}%
+    }}\par%
     \global\cslet{tud@#1 at subtitle}{\@empty}%
   }%
 }
@@ -1461,11 +1537,12 @@
 %
 % Für die \cls{tudscrartcl}-Klasse wird der vertikale Standardabstand
 % beibehalten und lediglich die Farbanpassung hinzugefügt.
+% \ToDo{in \cs{AddtoDoHook} migrieren}[v2.07]
 %    \begin{macrocode}
 %<*article|poster>
 \newcommand*\tud at partheadstartvskip{}
 \let\tud at partheadstartvskip\partheadstartvskip
-\pretocmd{\tud at partheadstartvskip}{%
+\pretocmd\tud at partheadstartvskip{%
   \renewcommand*\tud at part@fontcolor{}% false/true
   \ifcase\tud at cd@part at num\relax\or\else% *color
     \renewcommand*\tud at part@fontcolor{HKS41}%
@@ -1477,6 +1554,9 @@
 % und die vertikalen Abstände neu definiert.
 %    \begin{macrocode}
 %<*book|report>
+\AddtoDoHook{heading/preinit/part}{
+  \TUD at deprecated@length\pageheadingsvskip%
+}
 \newcommand*\tud at partheadstartvskip{%
   \renewcommand*\tud at part@fontcolor{}% false/true
   \ifcase\tud at cd@part at num\relax\or\or% litecolor
@@ -1491,9 +1571,8 @@
     \renewcommand*\tud at part@fontcolor{HKS41!30}%
   \fi%
   \tud at cd@specialpage at set{part}%
-  \tud at cd@headstartvskip%
-  \TUD at deprecated@lengthcs{pageheadingsvskip}%
-  \vspace*{\tud at dim@pageheadingsvskip}%
+  \tud at cd@headstart at vskip%
+  \vspace*{\dimexpr\tud at pageheadingsvskip@dim\relax}%
 }
 %</book|report>
 %    \end{macrocode}
@@ -1537,11 +1616,13 @@
 % \changes{v2.06}{2018/08/01}{neu}^^A
 % \begin{macro}{\tud at partformat}
 % \changes{v2.06}{2018/08/01}{neu}^^A
+% \changes{v2.06o}{2022/08/02}{Bugfix für Option \opt{parttitle}}^^A
 % Die Formatierungsbefehle für die Überschriften von Teilen.
 %    \begin{macrocode}
 \newcommand*\tud at partformat{}%
 \newcommand*\tud at partlineswithprefixformat[3]{%
 %<*book|report>
+  \vskip-2\parskip%
   \if at tud@parttitle%
     \ifx\@@title\@empty%
       \ClassWarning{\TUD at Class@Name}{%
@@ -1550,19 +1631,24 @@
       }%
     \fi%
     \tud at cd@vphantom%
-    \tud at sec@format[#1]{%
-      \usekomafont{#1}{\nobreak\interlinepenalty \@M\@@title\strut\@@par}%
+    \usekomafont{#1}{%
+      \tud at sec@format{\nobreak\interlinepenalty\@M\@@title\strut\@@par}%
     }%
-    \setpartsubtitle{%
-      \setkomafont{part}{}%
-      \tud at sec@format[partnumber]{\IfUseNumber{\partformat\enskip}{}#3}%
+%    \end{macrocode}
+% Hier wird etwas hemdsärmlich der eigentliche Titel aus |#3| extrahiert.
+%    \begin{macrocode}
+    \def\tud at partformat##1\nobreak\interlinepenalty\@M##2\strut\@@par##3\@nil{%
+      \def\tud at partformat{\IfUseNumber{\partformat\enskip}{}##2}%
     }%
+    \expandafter\expandafter\expandafter\tud at partformat%
+      \expandafter\@firstofone\@gobbletwo#3\@nil%
+    \expandafter\setpartsubtitle\expandafter{\tud at partformat}%
   \else%
 %</book|report>
     \edef\tud at partformat{\noexpand\tud at sec@format{\expandonce\partformat}}%
     \let\partformat\tud at partformat%
     \IfUseNumber{}{\tud at cd@vphantom}%
-    #2\tud at sec@format[#1]{#3}%
+    #2\tud at sec@format[{#1}]{#3}%
 %<*book|report>
   \fi%
 %</book|report>
@@ -1569,6 +1655,20 @@
   \tud at sec@subtitle{#1}%
 }
 %    \end{macrocode}
+% Beim Aufruf von \cs{partlineswithprefixformat} nutzt \KOMAScript im dritten 
+% Argument intern \cs{usekomafont}|{part}|. Für die Verwendung von \DIN in der 
+% Überschrift wird das besagte Argument allerdings via \cs{tud at sec@format} mit 
+% \cs{MakeUppercase} ummantelt. Der daraus letztendlich resultierende Aufruf 
+% |\MakeUppercase{\usekomafont{part}{...#3...}}| führt zu einem Fehler. Der
+% nachfolgende Patch behebt das Problem.
+%    \begin{macrocode}
+\if at tud@cdoldfont at active
+  \patchcmd\tud at partlineswithprefixformat
+    {#2\tud at sec@format[{#1}]{#3}}
+    {#2\tud at sec@format[{#1}]{}\addtokomafont{#1}{\tud at sec@format}#3}
+    {}{\tud at patch@wrn{tud at partlineswithprefixformat}}
+\fi
+%    \end{macrocode}
 % \end{macro}^^A \tud at partformat
 % \end{macro}^^A \tud at partlineswithprefixformat
 %
@@ -1584,19 +1684,25 @@
 % \CD angepasst. Mit der Option \opt{headingsvskip} kann diese vertikal durch
 % den Benutzer verschoben werden. Außerdem werden die benötigten Farben für die
 % jeweils gewählte Option ausgewählt.
+% \ToDo{in \cs{AddtoDoHook} migrieren}[v2.07]
 %    \begin{macrocode}
+\AddtoDoHook{heading/preinit/chapter}{
+  \if at tud@chapterpage%
+    \TUD at deprecated@length\pageheadingsvskip%
+  \else%
+    \TUD at deprecated@length\headingsvskip%
+  \fi%
+}
 \newcommand*\tud at chapterheadstartvskip{%
   \renewcommand*\tud at chapter@fontcolor{}%
   \ifcase\tud at cd@chapter at num\relax\or\else% *color
     \renewcommand*\tud at chapter@fontcolor{HKS41}%
   \fi%
-  \tud at cd@headstartvskip%
+  \tud at cd@headstart at vskip%
   \if at tud@chapterpage%
-    \TUD at deprecated@lengthcs{pageheadingsvskip}%
-    \vspace*{\tud at dim@pageheadingsvskip}%
+    \vspace*{\dimexpr\tud at pageheadingsvskip@dim\relax}%
   \else%
-    \TUD at deprecated@lengthcs{headingsvskip}%
-    \vspace*{\tud at dim@headingsvskip}%
+    \vspace*{\dimexpr\tud at headingsvskip@dim\relax}%
   \fi%
 }
 %    \end{macrocode}
@@ -1611,17 +1717,15 @@
 %    \begin{macrocode}
 \newcommand*\tud at chapterformat{}%
 \newcommand*\tud at chapterlineswithprefixformat[3]{%
-  \edef\tud at chapterformat{%
-    \noexpand\tud at sec@format{\expandonce\chapterformat}%
-  }%
+  \edef\tud at chapterformat{\noexpand\tud at sec@format{\expandonce\chapterformat}}%
   \let\chapterformat\tud at chapterformat%
   \IfUseNumber{}{\tud at cd@vphantom}%
-  #2\tud at sec@format[#1]{#3}%
+  #2\tud at sec@format[{#1}]{#3}%
   \tud at sec@subtitle{#1}%
 }
 \newcommand*\tud at chapterlinesformat[3]{%
   \tud at cd@vphantom%
-  \@hangfrom{#2}{\tud at sec@format[#1]{#3}}%
+  \@hangfrom{#2}{\tud at sec@format[{#1}]{#3}}%
   \tud at sec@subtitle{#1}%
 }
 %    \end{macrocode}
@@ -1638,6 +1742,7 @@
 % der Kapitel durch die beiden Haken \cs{tud at chapter@before at hook} sowie
 % \cs{tud at chapter@after at hook}, den Start und das Ende der Gliederungsbefehle
 % für Kapitel definieren.
+% \ToDo{in \cs{AddtoDoHook} migrieren}[v2.07]
 %    \begin{macrocode}
 \newcommand*\tud at chapter@pre{%
   \if at tud@chapterpage%
@@ -1751,16 +1856,17 @@
 % Die beiden Haken \cs{tud at chapter@before at hook} und \cs{tud at chapter@after at hook}
 % werden den \KOMAScript-Befehlen hinzugefügt, welche den Start und das Ende 
 % der Gliederungsbefehle für Kapitel definieren.
+% \ToDo{in \cs{AddtoDoHook} migrieren}[v2.07]
 %    \begin{macrocode}
 \newcommand*\tud at chapter@before at hook{}
 \newcommand*\tud at chapter@after at hook{}
-\pretocmd{\scr at startchapter}{%
+\pretocmd\scr at startchapter{%
   \tud at chapter@before at hook%
 }{}{\tud at patch@wrn{scr at startchapter}}
-\apptocmd{\scr@@startchapter}{%
+\apptocmd\scr@@startchapter{%
   \tud at chapter@after at hook%
 }{}{\tud at patch@wrn{scr@@startchapter}}
-\apptocmd{\scr@@startschapter}{%
+\apptocmd\scr@@startschapter{%
   \tud at chapter@after at hook%
 }{}{\tud at patch@wrn{scr@@startschapter}}
 %    \end{macrocode}
@@ -1778,11 +1884,12 @@
 %
 % Die Farbwahl wird einfach in dem von \KOMAScript{} bereitgestellten Haken 
 % zu Beginn einer Abschnittsüberschrift ausgeführt.
+% \ToDo{use AddtoDoHook{heading/postinit}}[v2.07]
 %    \begin{macrocode}
 \At at startsection{%
   \renewcommand*\tud at section@fontcolor{}%
   \ifcase\tud at cd@section at num\relax\or\else% *color
-    \ifstr{\tud at pagecolor}{HKS41}{}{%
+    \tud at if@strequal{\tud at pagecolor}{HKS41}{}{%
       \renewcommand*\tud at section@fontcolor{HKS41}%
     }%
   \fi%
@@ -1795,14 +1902,10 @@
 % Die Formatierungsbefehle für die Überschriften von Abschnitten etc.
 %    \begin{macrocode}
 \newcommand*\tud at sectionlinesformat[4]{%
-  \@hangfrom{\hskip #2#3}{\tud at sec@format[#1]{#4}}%
+  \@hangfrom{\hskip #2#3}{\tud at sec@format*[{#1}]{#4}}%
 }
-%    \end{macrocode}
-% Für Überschriften mit Einzug wird \cs{tud at sec@strut} wirkungslos definiert.
-%    \begin{macrocode}
 \newcommand*\tud at sectioncatchphraseformat[4]{%
-  \let\tud at sec@strut\relax%
-  \hskip #2#3\tud at sec@format[#1]{#4}%
+  \hskip #2#3\tud at sec@format*[{#1}]{#4}%
 }
 %    \end{macrocode}
 % \end{macro}^^A \tud at sectioncatchphraseformat
@@ -1812,7 +1915,6 @@
 %</class&body>
 % \fi
 %
+% \PrintBackMatter
 %
-% \Finale
-%
 \endinput

Modified: trunk/Master/texmf-dist/source/latex/tudscr/tudscr-localization.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tudscr/tudscr-localization.dtx	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/source/latex/tudscr/tudscr-localization.dtx	2022-08-09 20:01:54 UTC (rev 64085)
@@ -1,10 +1,10 @@
-% \CheckSum{763}
 % \iffalse meta-comment
+%/GitFileInfo=tudscr-localization.dtx
 %
 %  TUD-Script -- Corporate Design of Technische Universität Dresden
 % ----------------------------------------------------------------------------
 %
-%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2021
+%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2022
 %
 % ----------------------------------------------------------------------------
 %
@@ -23,33 +23,19 @@
 %
 % \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-localization.dtx
+% \iffalse ins:batch + dtx:driver
+%<*ins>
+\ifx\documentclass\undefined
+  \input docstrip.tex
+  \ifToplevel{\batchinput{tudscr.ins}}
+\else
+  \let\endbatchfile\relax
+\fi
+\endbatchfile
+%</ins>
 %<*dtx>
-% \fi
-%
-\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
-\ProvidesFile{tudscr-localization.dtx}[2020/11/10 v2.06k TUD-Script\space%
-  (localization)%
-]
-%
-% \iffalse
+\ProvidesFile{tudscr-localization.dtx}[2022/08/09]
+\RequirePackage{tudscr-gitinfo}
 \documentclass[english,ngerman,xindy]{tudscrdoc}
 \iftutex
   \usepackage{fontspec}
@@ -59,18 +45,11 @@
 \fi
 \usepackage{babel}
 \usepackage{tudscrfonts}
-\KOMAoptions{parskip=half-}
-\usepackage{bookmark}
 \usepackage[babel]{microtype}
 
-\CodelineIndex
-\RecordChanges
-\GetFileInfo{tudscr-localization.dtx}
-\title{\file{\filename}}
-\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
-\date{\fileversion\nobreakspace(\filedate)}
-
+\GitHubBase{\TUDScriptRepository}
 \begin{document}
+  \author{Falk Hanisch\TUDScriptContactTitle}
   \maketitle
   \tableofcontents
   \DocInput{\filename}
@@ -83,6 +62,8 @@
 % \changes{v2.02}{2014/06/23}{Paket \pkg{titlepage} nicht weiter unterstützt}^^A
 % \changes{v2.05}{2015/07/06}{Bezeichner für Poster}^^A
 %
+%
+%
 % \section{Lokalisierung mithilfe sprachabhängiger Bezeichner}
 %
 % Das \TUDScript-Bundle ist für die deutsche und englische Sprache lokalisiert.
@@ -89,10 +70,7 @@
 % Dies bedeutet, dass abhängig von der gewählten Sprache die entsprechenden
 % Bezeichner gesetzt werden. Hierfür werden die Möglichkeiten von \KOMAScript{} 
 % in Form des Befehls \cs{providecaptionname} genutzt.
-% 
 %
-% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
-%
 % \subsection{Definition der sprachabhängigen Bezeichner}
 %
 % \begin{macro}{\tud at localization@define}
@@ -117,7 +95,7 @@
       languages german and english as well as its dialects. You\MessageBreak%
       must define single patterns by yourself, e.g.:\MessageBreak%
       `\string\providecaptionname{\languagename}\string#1{<text>}'\MessageBreak%
-      You can send your definitions to \tudscrmail\space in\MessageBreak%
+      You can send your definitions to \TUDScriptContact\space in\MessageBreak%
       order to implement support for additional languages.%
     }%
   }%
@@ -157,6 +135,7 @@
 % \changes{v2.02}{2014/11/05}{Korrektur bei der Verwendung von \cs{@@title}}^^A
 % \begin{localization}{\blockingname}
 % \changes{v2.02}{2014/05/16}{neu, \cs{restrictionname} umbenannt}^^A
+%\ToDo{https://tu-dresden.de/bu/verkehr/studium/studienangebot/dipl\_viw/studentische-arbeiten-studien-diplom-und-masterarbeiten}[v2.07]
 % \begin{localization}{\blockingtext}
 % \changes{v2.02}{2014/05/16}{neu, \cs{restrictiontext} umbenannt}^^A
 % \changes{v2.02}{2014/11/05}{Korrektur bei der Verwendung von \cs{@@title}}^^A
@@ -221,6 +200,7 @@
 % \changes{v2.02}{2014/05/16}{neu, Umbenennung von \cs{branchname}}^^A
 % \begin{localization}{\listingname}
 % \begin{localization}{\listlistingname}
+% \begin{localization}{\habilitationname}
 % \begin{localization}{\dissertationname}
 % \begin{localization}{\diplomathesisname}
 % \begin{localization}{\masterthesisname}
@@ -240,6 +220,7 @@
 \tud at localization@define{\disciplinename}
 \tud at localization@define{\listingname}
 \tud at localization@define{\listlistingname}
+\tud at localization@define{\habilitationname}
 \tud at localization@define{\dissertationname}
 \tud at localization@define{\diplomathesisname}
 \tud at localization@define{\masterthesisname}
@@ -267,6 +248,7 @@
 % \end{localization}^^A \masterthesisname
 % \end{localization}^^A \diplomathesisname
 % \end{localization}^^A \dissertationname
+% \end{localization}^^A \habilitationname
 % \end{localization}^^A \listlistingname
 % \end{localization}^^A \listingname
 % \end{localization}^^A \disciplinename
@@ -357,6 +339,8 @@
 % \changes{v2.05g}{2016/11/02}{neu}^^A
 % \begin{localization}{\tud at implementation@name}
 % \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{localization}{\tud at symbols@name}
+% \changes{v2.06o}{2022/07/24}{neu}^^A
 % \begin{localization}{\tud at changes@name}
 % \changes{v2.05g}{2016/11/02}{neu}^^A
 % \begin{localization}{\tud at todo@name}
@@ -411,6 +395,7 @@
 %    \begin{macrocode}
 \tud at localization@define{\tud at general@name}
 \tud at localization@define{\tud at implementation@name}
+\tud at localization@define{\tud at symbols@name}
 \tud at localization@define{\tud at changes@name}
 \tud at localization@define{\tud at todo@name}
 \tud at localization@define{\tud at environment@name}
@@ -462,6 +447,7 @@
 % \end{localization}^^A \tud at environment@name
 % \end{localization}^^A \tud at todo@name
 % \end{localization}^^A \tud at changes@name
+% \end{localization}^^A \tud at symbols@name
 % \end{localization}^^A \tud at implementation@name
 % \end{localization}^^A \tud at general@name
 %
@@ -517,6 +503,10 @@
 % müssen als Argumente der Bezeichnerbefehl selbst sowie die dazugehörige 
 % Definition angegeben werden. Intern wird dabei \cs{providecaptionname} 
 % verwendet.
+% \ToDo{\cs{renewcaptionname} geht nur nach \cs{begin}\marg{document}?}[v2.07]
+% \ToDo{\cs{tud at localization@...} mit \cs{defcaptionname}}[v2.07]
+% \ToDo{\cs{tud at localization}\marg{csvmacro}}[v2.07]
+% \ToDo{Anwenderbefehl \cs{[tud]renewgermancaptionname}?}[v2.07]
 %    \begin{macrocode}
 \newcommand*\tud at localization@german{%
   \providecaptionname{%
@@ -539,7 +529,7 @@
 }
 %    \end{macrocode}
 % Für die nachfolgenden Felder, für die es bedarfsweise einen Bezeichner für 
-% eine zweite Person gibt (\cs{\dots{}othername}), werden jeweils verschiedene 
+% eine zweite Person |\...othername| gibt, werden jeweils verschiedene 
 % Varianten definiert. Existiert in einem Feld nur eine Person, wird der
 % Singular der Bezeichnung verwendet. Wurden mindestens zwei Personen angegeben
 % (\cs{and}), so wird geprüft, ob der Bezeichner für die zusätzlichen Personen
@@ -639,6 +629,7 @@
 \tud at localization@german{\disciplinename}{Studienrichtung}
 \tud at localization@german{\listingname}{Quelltext}
 \tud at localization@german{\listlistingname}{Quelltextverzeichnis}
+\tud at localization@german{\habilitationname}{Habilitation}
 \tud at localization@german{\dissertationname}{Dissertation}
 \tud at localization@german{\diplomathesisname}{Diplomarbeit}
 \tud at localization@german{\masterthesisname}{Master-Arbeit}
@@ -702,8 +693,9 @@
 %    \begin{macrocode}
 \tud at localization@german{\tud at general@name}{Allgemein}
 \tud at localization@german{\tud at implementation@name}{Implementierung}
+\tud at localization@german{\tud at symbols@name}{Symbole}
 \tud at localization@german{\tud at changes@name}{\"Anderungsliste}
-\tud at localization@german{\tud at todo@name}{Liste der noch zu erledigenden Punkte}
+\tud at localization@german{\tud at todo@name}{Anstehende Aufgaben}
 \tud at localization@german{\tud at environment@name}{Umg.}
 \tud at localization@german{\tud at environments@name}{Umgebungen}
 \tud at localization@german{\tud at option@name}{Opt.}
@@ -860,6 +852,7 @@
 \tud at localization@english{\disciplinename}{Discipline}
 \tud at localization@english{\listingname}{Listing}
 \tud at localization@english{\listlistingname}{List of Listings}
+\tud at localization@english{\habilitationname}{Habilitation}
 \tud at localization@english{\dissertationname}{Dissertation}
 \tud at localization@english{\diplomathesisname}{Diploma Thesis}
 \tud at localization@english{\masterthesisname}{Master Thesis}
@@ -923,8 +916,9 @@
 %    \begin{macrocode}
 \tud at localization@english{\tud at general@name}{General}
 \tud at localization@english{\tud at implementation@name}{Implementation}
+\tud at localization@english{\tud at symbols@name}{Symbols}
 \tud at localization@english{\tud at changes@name}{Change History}
-\tud at localization@english{\tud at todo@name}{List of ToDos}
+\tud at localization@english{\tud at todo@name}{Pending tasks}
 \tud at localization@english{\tud at environment@name}{env.}
 \tud at localization@english{\tud at environments@name}{environments}
 \tud at localization@english{\tud at option@name}{opt.}
@@ -992,6 +986,6 @@
 %</class&!(manual|doc)>
 % \fi
 %
-% \Finale
+% \PrintBackMatter
 %
 \endinput

Modified: trunk/Master/texmf-dist/source/latex/tudscr/tudscr-manual.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tudscr/tudscr-manual.dtx	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/source/latex/tudscr/tudscr-manual.dtx	2022-08-09 20:01:54 UTC (rev 64085)
@@ -1,10 +1,10 @@
-% \CheckSum{4457}
 % \iffalse meta-comment
+%/GitFileInfo=tudscr-manual.dtx
 %
 %  TUD-Script -- Corporate Design of Technische Universität Dresden
 % ----------------------------------------------------------------------------
 %
-%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2021
+%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2022
 %
 % ----------------------------------------------------------------------------
 %
@@ -23,44 +23,19 @@
 %
 % \fi
 %
-% \CharacterTable
-%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-%   Digits        \0\1\2\3\4\5\6\7\8\9
-%   Exclamation   \!     Double quote  \"     Hash (number) \#
-%   Dollar        \$     Percent       \%     Ampersand     \&
-%   Acute accent  \'     Left paren    \(     Right paren   \)
-%   Asterisk      \*     Plus          \+     Comma         \,
-%   Minus         \-     Point         \.     Solidus       \/
-%   Colon         \:     Semicolon     \;     Less than     \<
-%   Equals        \=     Greater than  \>     Question mark \?
-%   Commercial at \@     Left bracket  \[     Backslash     \\
-%   Right bracket \]     Circumflex    \^     Underscore    \_
-%   Grave accent  \`     Left brace    \{     Vertical bar  \|
-%   Right brace   \}     Tilde         \~}
-%
-% \iffalse
-%%% From File: tudscr-manual.dtx
+% \iffalse ins:batch + dtx:driver
+%<*ins>
+\ifx\documentclass\undefined
+  \input docstrip.tex
+  \ifToplevel{\batchinput{tudscr.ins}}
+\else
+  \let\endbatchfile\relax
+\fi
+\endbatchfile
+%</ins>
 %<*dtx>
-% \fi
-%
-\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
-\ProvidesFile{tudscr-manual.dtx}[2019/10/23 v2.06e TUD-Script\space%
-%
-% \iffalse
-%</dtx>
-%<package&identify>\ProvidesPackage{tudscrtutorial}[%
-%<*package&identify>
-%!TUD at Version
-%</package&identify>
-%<package&identify>  package
-%<*dtx|package&identify>
-% \fi
-  (internal tutorials)%
-]
-% \iffalse
-%</dtx|package&identify>
-%<*dtx>
+\ProvidesFile{tudscr-manual.dtx}[2022/08/09]
+\RequirePackage{tudscr-gitinfo}
 \documentclass[english,ngerman,xindy]{tudscrdoc}
 \iftutex
   \usepackage{fontspec}
@@ -70,18 +45,11 @@
 \fi
 \usepackage{babel}
 \usepackage{tudscrfonts}
-\KOMAoptions{parskip=half-}
-\usepackage{bookmark}
 \usepackage[babel]{microtype}
 
-\CodelineIndex
-\RecordChanges
-\GetFileInfo{tudscr-manual.dtx}
-\title{\file{\filename}}
-\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
-\date{\fileversion\nobreakspace(\filedate)}
-
+\GitHubBase{\TUDScriptRepository}
 \begin{document}
+  \author{Falk Hanisch\TUDScriptContactTitle}
   \maketitle
   \tableofcontents
   \DocInput{\filename}
@@ -93,236 +61,35 @@
 %
 % \changes{v2.02}{2014/12/17}{Erstellung der \app{texindy}-Stildatei während
 %   der Kompilierung}^^A
-% \changes{v2.02}{2014/11/18}{\pkg{tudscrtutorial}: Index für Tutorials}^^A
+% \changes{v2.02}{2014/11/18}{\pkg{tudscrmanual}: Index für Tutorials}^^A
 % \changes{v2.05}{2015/08/04}{Geteilte Deklarationen für Klasse und Paket}^^A
 %
-% \section{Handbuch und Leitfäden zu \TUDScript}
 %
-% Es werden die Klasse \cls{tudscrmanual} für das Handuch sowie das Paket
-% \pkg{tudscrtutorial} für das Setzen von einigen Anwenderleitfäden bzw.
-% Tutorials erzeugt. Da es zwischen der Klasse und dem Paket es eine große
-% Menge an Überschneidungen gibt, basieren diese auf der gleichen Quelldatei. 
-% Einiges davon wird auch für die Quelltextdokumentationsklasse \cls{tudscrdoc} 
-% verwendet.
 %
-% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
+% \section{Anwenderdokumentation und Leitfäden zu \TUDScript}
 %
-% \iffalse
-%<*body|class&doc>
-% \fi
-%
-% \subsection{Notwendige Pakete und Befehle}
-%
-% Basis für die Handbuchklasse \cls{tudscrmanual} ist \cls{tudscrreprt}. 
-% Zusätzlich wird das Paket \pkg{tudscrtutorial} erstellt, um an das Handbuch
-% angelehnte Tutorials in einem Unterordner zu erstellen. Sowohl für die Klasse
-% als auch das Paket werden einige Pakete geladen, um Einstellungen vorzunehmen 
-% und nützliche Befehle zu definieren.
-%
-% Das Paket \pkg{xparse} erlaubt eine sehr freie Deklaration von Makros mit
-% nahezu beliebig arrangierbaren (optionalen) Argumenten.
+% Es werden die Klasse \cls{tudscrmanual} (auf Basis von \cls{tudscrreprt}) für 
+% die Anwenderdokumentation sowie das Paket \pkg{tudscrmanual} für das Setzen
+% von einigen Anwenderleitfäden bzw. Tutorials erzeugt. Da es zwischen der
+% Klasse und dem Paket es eine große Menge an Überschneidungen gibt, basieren
+% diese auf der gleichen Quelldatei.
+% \ToDo{guards überarbeiten, korrelierenden Quelltext zusammenhalten}[v2.07]
 %    \begin{macrocode}
-%<*!doc>
-\PassOptionsToPackage{log-declarations=false}{xparse}
-\RequirePackage{xparse}[2013/12/31]
-%</!doc>
+%<*package&identify>
+\ProvidesPackage{tudscrmanual}[%
+%!TUD at Version
+  package (tudscr tutorials)%
+]
+\TUD at Class@Check{tudscrtutorial}
+%</package&identify>
 %    \end{macrocode}
-% Bugfixes für unterschiedliche Pakete.
-%    \begin{macrocode}
-\RequirePackage{scrhack}[2014/02/27]
-%    \end{macrocode}
-% Die Sprachunterstützung für Klasse und Paket.
-%    \begin{macrocode}
-%<*!doc>
-\RequirePackage{babel}[2014/03/24]
-%</!doc>
-%    \end{macrocode}
-% Das Paket \pkg{marginnote} stellt nicht fließenden Randnotizen bereit, welche 
-% für die Kennzeichnung von Änderungen, Hinweise oder ToDo-Notizen verwendet 
-% werden. Die Randnotizen werden auf dem linken~-- weil größeren~-- Seitenrand
-% gesetzt.
-%    \begin{macrocode}
-\PassOptionsToPackage{quiet}{marginnote}
-\RequirePackage{marginnote}[2012/03/29]
-%<!doc>\reversemarginpar
-%    \end{macrocode}
-% Das Paket für intelligente Leerzeichen am Ende von Makros mit \cs{xspace}.
-%    \begin{macrocode}
-\RequirePackage{xspace}[2009/10/20]
-\xspaceaddexceptions{"=}
-%    \end{macrocode}
-% Für das Paket \pkg{geometry} erfolgen durch \TUDScript vielerlei Anpassungen. 
-% Um bei einer signifikanten Änderung des Paketes passend reagieren zu können, 
-% wird auf das aktuelle Paketdatum geprüft und für neue Versionen eine Warnung
-% erzeugt.
-% \ToDo{Kann raus, sobald \pkg{geometry} nicht mehr notwendig}[v2.07]
-%    \begin{macrocode}
-%<*!(doc|package)>
-\@ifpackagelater{geometry}{2018/04/17}{%
-  \ClassWarning{\TUD at Class@Name}{%
-    Package `geometry' was updated so some patches\MessageBreak%
-    are maybe outdated%
-  }%
-}{}%
-%</!(doc|package)>
-%    \end{macrocode}
-% \begin{macro}{\vTUDScript}
-% \begin{macro}{\vKOMAScript}
-% Diese Befehle geben in der Dokumentation die aktuelle Version von \TUDScript
-% sowie die mindestens notwendige Version von \KOMAScript{} aus.
-%    \begin{macrocode}
-\newcommand*\vTUDScript{v\TUDScriptVersionNumber}
-\newcommand*\vKOMAScript{v\TUD at Version@KOMA}
-%    \end{macrocode}
-% \end{macro}^^A \vKOMAScript
-% \end{macro}^^A \vTUDScript
-% \begin{macro}{\tud at english}
-% Mit diesem Befehl wird der Inhalt des Arumentes mit englischen Trennmustern 
-% gesetzt, falls die Sprache geladen wurde.
-%    \begin{macrocode}
-\newcommand*\tud at english[1]{#1}
-\AtBeginDocument{%
-  \iflanguageloaded{english}{%
-    \renewcommand*\tud at english[1]{\foreignlanguage{english}{#1}}%
-  }{}%
-}
-%    \end{macrocode}
-% \end{macro}^^A \tud at english
-% Das Paket \pkg{shellesc} ermöglicht mit dem Befehl \cs{ShellEscape} die 
-% Verwendung von Systembefehlen auf der Kommandozeile unabhängig von der 
-% genutzten Engine. Sollte \app{lualatex} als Dokumentprozessor eingesetzt
-% werden, sind dennoch die \app{pdflatex}-Primitiven \cs{pdf(@)strcmp} und
-% \cs{pdf(@)shellescape} nötig, wofür das Paket \pkg{pdftexcmds} geladen wird.
-%    \begin{macrocode}
-\RequirePackage{shellesc}[2016/06/07]
-\RequirePackage{pdftexcmds}[2016/05/21]
-%    \end{macrocode}
 %
 % \iffalse
-%</body|class&doc>
-%<*!doc>
-%<*body>
-%<*class>
+%<*package&body>
 % \fi
 %
-% \begin{macro}{\tud at list@sort}
-% \changes{v2.02}{2014/07/25}{neu}^^A
-% \begin{macro}{\tud at list@@sort}
-% \changes{v2.02}{2014/07/25}{neu}^^A
-% \begin{macro}{\tud at templist}
-% \changes{v2.02}{2014/07/25}{neu}^^A
-% \begin{macro}{\if at tud@list at sorted}
-% \changes{v2.02}{2014/07/25}{neu}^^A
-% Der Befehl \cs{tud at list@sort} erwartet eine \pkg{etoolbox}-Liste und sortiert 
-% diese mit dem Makro \cs{sort at list} in alphabetischer Reihenfolge in eine 
-% kommagetrennte Auflistung. Diese wird anschließend wieder in eine
-% \pkg{etoolbox}-Liste umgewandelt.
-%    \begin{macrocode}
-\newcommand*\tud at templist{}
-\let\tud at templist\relax
-\newcommand*\tud at list@sort[1]{%
-  \ifdefvoid{#1}{%
-    \ClassWarning{tudscrmanual}{%
-      The given list \string#1\space\MessageBreak%
-      is empty, nothing to sort here%
-    }%
-  }{%
-    \let\tud at reserved#1%
-    \let\tud at templist\relax%
-    \forlistloop\tud at list@@sort{\tud at reserved}%
-    \let\tud at reserved\relax%
-    \@for\@tempa:=\tud at templist\do{\listeadd\tud at reserved{\@tempa}}%
-    \let#1\tud at reserved%
-  }%
-}
-%    \end{macrocode}
-% Hier erfolgt die eigentliche Sortierung der Liste.
-%    \begin{macrocode}
-\newif\if at tud@list at sorted
-\newcommand*\tud at list@@sort[1]{%
-%    \end{macrocode}
-% Der erste Eintrag wird direkt der Liste hinzugefügt.
-%    \begin{macrocode}
-  \ifx\tud at templist\relax%
-    \def\tud at templist{#1}%
-%    \end{macrocode}
-% Weitere Einräge werden mit \cs{pdfstrcmp} an der richtigen Stelle eingefügt.
-% Dabei wird die kommagetrennte Liste \cs{tud at templist} durchlaufen und
-% \cs{@tempb} als Hilfsmakro verwendet, in welches die aktuelle Liste innerhalb 
-% der \cs{@for}-Schleife stückweise expandiert wird. Wenn das aktuelle Element
-% an der dafür passenden Stelle eingesetzt wurde, wird \cs{if at tud@list at sorted} 
-% gesetzt.
-%    \begin{macrocode}
-  \else%
-    \@tud at list@sortedfalse%
-    \let\@tempb\@empty%
-    \@for\@tempa:=\tud at templist\do{%
-%    \end{macrocode}
-% Ist der Eintrag bereits erfolgt, wird der verbliebene Teil der Liste 
-% angehangen.
-% \ToDo{\cs{expandafter}\cs{edef}\cs{expandafter} ist quatsch, oder?}[v2.07]
-%    \begin{macrocode}
-      \if at tud@list at sorted%
-        \expandafter\edef\expandafter\@tempb\expandafter{\@tempb,\@tempa}%
-      \else%
-%    \end{macrocode}
-% Liegt der Eintrag in alphabetischer Reihenfolge vor dem aktuellen der 
-% durchlaufenenen Liste, so wird dieser davor eingefügt. Dabei muss der Fall, 
-% dass das Element der erste Eintrag in der temporären Liste \cs{@tempb} ist, 
-% eine Sonderbehandlung erfolgen. Anschließend wird \cs{@tud at list@sortedtrue} 
-% gesetzt.
-%    \begin{macrocode}
-        \expandafter\ifnum\pdf at strcmp{#1}{\@tempa}<\z@\relax%
-          \ifx\@tempb\@empty%
-            \expandafter\edef\expandafter\@tempb\expandafter{%
-              #1,\@tempa%
-            }%
-          \else%
-            \expandafter\edef\expandafter\@tempb\expandafter{%
-              \@tempb,#1,\@tempa%
-            }%
-          \fi%
-          \@tud at list@sortedtrue%
-        \else%
-%    \end{macrocode}
-% Ist Eintrag in alphabetischer Reihenfolge nach dem aktuellen der geprüften 
-% Liste, so wird dieser (noch) nicht eingefügt. Der Sonderfall des ersten
-% Elementes wird abgedeckt.
-%    \begin{macrocode}
-          \ifx\@tempb\@empty%
-            \expandafter\edef\expandafter\@tempb\expandafter{\@tempa}%
-          \else%
-            \expandafter\edef\expandafter\@tempb\expandafter{\@tempb,\@tempa}%
-          \fi%
-        \fi%
-      \fi%
-    }%
-%    \end{macrocode}
-% Wurde der Eintrag nach dem Durchlaufen der Liste nicht eingefügt, so erfolgt 
-% dies hier am Ende der Liste.
-%    \begin{macrocode}
-    \if at tud@list at sorted\else%
-      \expandafter\edef\expandafter\@tempb\expandafter{\@tempb,#1}%
-    \fi%
-%    \end{macrocode}
-% Die temporäre Liste \cs{@tempb} wird auf \cs{tud at templist} überschrieben.
-%    \begin{macrocode}
-    \let\tud at templist\@tempb%
-  \fi%
-}
-%    \end{macrocode}
-% \end{macro}^^A \if at tud@list at sorted
-% \end{macro}^^A \tud at templist
-% \end{macro}^^A \tud at list@@sort
-% \end{macro}^^A \tud at list@sort
+% \subsection{Zusätzliche Pakete für das Paket \pkg{tudscrmanual}}
 %
-% \iffalse
-%</class>
-%<*package>
-% \fi
-%
-% \subsection{Zusätzliche Pakete für das Paket \pkg{tudscrtutorial}}
-%
 % Mit dem Paket \pkg{scrwfile} lassen sich Probleme mit zu wenig verfügbaren 
 % Streams für das Schreiben externer Datein beheben. Hintergrund ist die
 % Verwendung des Paketes \pkg{glossaries} in einem der Tutorials, welches eine
@@ -329,17 +96,16 @@
 % Vielzahl solcher Streams benötigt. Das Paket \pkg{morewrites} hat keinen 
 % Einfluss auf \pkg{glossaries}.
 %    \begin{macrocode}
-\RequirePackage{scrwfile}[2013/08/05]
+\RequirePackage{scrwfile}
 %    \end{macrocode}
 %
 % \iffalse
-%</package>
-%</body>
+%</package&body>
 %<*option>
 % \fi
 %
 % \subsection{%
-%   Optionen für die Ausgabe von \cls{tudscrmanual} und \pkg{tudscrtutorial}%
+%   Optionen für die Ausgabe von \cls{tudscrmanual} und \pkg{tudscrmanual}%
 % }
 %
 % \begin{option}{final}
@@ -450,8 +216,8 @@
   \newcommand*\tud at trace@lbl at created@list{}%
   \newcommand*\tud at trace@lbl at missing@list{}%
   \@tempswafalse%
-  \ifstr{#2}{created}{\@tempswatrue}{}%
-  \ifstr{#2}{all}{\@tempswatrue}{}%
+  \tud at if@strequal{#2}{created}{\@tempswatrue}{}%
+  \tud at if@strequal{#2}{all}{\@tempswatrue}{}%
   \if at tempswa%
     \renewcommand*\tud at trace@lbl at created@add[1]{%
       \typeout{%
@@ -470,8 +236,8 @@
     }%
   \fi%
   \@tempswafalse%
-  \ifstr{#2}{missing}{\@tempswatrue}{}%
-  \ifstr{#2}{all}{\@tempswatrue}{}%
+  \tud at if@strequal{#2}{missing}{\@tempswatrue}{}%
+  \tud at if@strequal{#2}{all}{\@tempswatrue}{}%
   \if at tempswa%
     \renewcommand*\tud at trace@lbl at missing@add[1]{%
       \typeout{%
@@ -554,33 +320,13 @@
 %
 % \iffalse
 %</class>
-%</body>
-%</!doc>
-%<*body|class&doc>
 % \fi
 %
 % \subsection{Anpassungen für das Paket \pkg{hyperref} und Querverweise}
 %
-% Das Paket \pkg{hyperref} wird für alle möglichen Links und Querverweise 
-% geladen, \pkg{bookmark} verbessert das Erstellen der Outline-Einträge.
+% Die Bezeichner für die Abschnittsebenen werden umbenannt.
 %    \begin{macrocode}
-\PassOptionsToPackage{hyperindex=false,colorlinks,linkcolor=blue}{hyperref}
-\PassOptionsToPackage{open,openlevel=0}{bookmark}
-%    \end{macrocode}
-% Es folgen einige Befehle, die an das Paket \pkg{hyperref} gekoppelt sind. 
-% Sobald das Paket geladen wurde, werden die Makros mit der jeweiligen
-% Funktionalität definiert. 
-%    \begin{macrocode}
 \AfterPackage*{hyperref}{%
-%    \end{macrocode}
-% Zuerst die Einstellungen für \cls{tudscrmanual} und \pkg{tudscrtutorial}.
-%
-% \iffalse
-%<*!doc>
-% \fi
-%
-% Die Bezeichner für die Abschnittsebenen werden umbenannt.
-%    \begin{macrocode}
   \renewcaptionname{ngerman}{\sectionautorefname}{Unterkapitel}%
   \renewcaptionname{ngerman}{\subsectionautorefname}{Abschnitt}%
   \renewcaptionname{ngerman}{\subsubsectionautorefname}{Unterabschnitt}%
@@ -590,7 +336,7 @@
 % \begin{macro}{\tudhyperref}
 % \changes{v2.02}{2014/10/27}{neu}^^A
 % \begin{macro}{\tud at manualname}
-% \changes{v2.05}{2015/1q/19}{neu}^^A
+% \changes{v2.05}{2015/11/19}{neu}^^A
 % Diese Befehle dienen sowohl zum Definieren von Textankern im Handbuch als 
 % auch  zum Referenzieren auf diese. Bei der Erstellung des Ankers mit 
 % \cs{tudhyperdef} wird zusätzlich auch noch ein Label (\cs{label}) erzeugt.
@@ -603,11 +349,11 @@
 %<*class>
   \NewDocumentCommand\tudhyperdef{s t' m}{%
     \@tempswafalse%
-    \IfBooleanT{#1}{\@tempswatrue\setlength\@tempdima{3\baselineskip}}%
-    \IfBooleanT{#2}{\@tempswatrue\setlength\@tempdima{15\baselineskip}}%
+    \IfBooleanT{#1}{\@tempswatrue\tud at setdim\@tempdima{3\baselineskip}}%
+    \IfBooleanT{#2}{\@tempswatrue\tud at setdim\@tempdima{15\baselineskip}}%
     \if at tempswa%
       \raisebox{\@tempdima}[0pt][0pt]{\hyperdef{\tud at manualname}{#3}{}}%
-      \par\nobreak\vskip\dimexpr-\parskip-\baselineskip\relax%
+      \par\nobreak\vskip-\parskip\vskip-\baselineskip%
       \@afterindentfalse\@afterheading%
     \else%
       \Hy at raisedlink{\hyperdef{\tud at manualname}{#3}{}}\ignorespaces%
@@ -640,7 +386,7 @@
 % vorgestellt und hier übernommen.
 %    \begin{macrocode}
   \newcommand*\autorefname[1][current]{%
-    \ifstr{#1}{current}{%
+    \tud at if@strequal{#1}{current}{%
       \expandafter\HyPsd@@autorefname\@currentHref\@nil%
     }{%
       \auto at refname\HyPsd@@autorefname{#1}%
@@ -661,72 +407,7 @@
 % \end{macro}^^A \auto@@refname
 % \end{macro}^^A \auto at refname
 % \end{macro}^^A \autorefname
-% Nun die Einstellungen für \cls{tudscrdoc}.
 %
-% \iffalse
-%</!doc>
-%<*doc>
-% \fi
-%
-% \begin{macro}{\hypersourcedef}
-% \changes{v2.05}{2016/04/26}{neu}^^A
-% \begin{macro}{\hypersource at def}
-% \changes{v2.05}{2016/04/26}{neu}^^A
-% \begin{macro}{\hypersource at ref@codeline}
-% \changes{v2.05}{2016/04/26}{neu}^^A
-% \begin{macro}{\hypersource at ref@page}
-% \changes{v2.05}{2016/04/26}{neu}^^A
-% Diese Makros werden verwendet, um im Index respektive in der Änderungsliste 
-% mithilfe von \pkg{hyperref} Hyperlinks auf Codezeilen respektive Seiten im 
-% Dokument zu setzen. 
-%
-% Mit \cs{hypersourcedef} wird ein Textanker gesetzt, falls dieser noch nicht 
-% definiert wurde, was durch \cs{hypersource at def} abgesichert wird. Als 
-% Argument wird hierfür die aktuelle Codezeile verwendet.
-%    \begin{macrocode}
-  \newcommand*\hypersource at def{}
-  \newcommand*\hypersourcedef[1]{%
-    \ifstr{#1}{\hypersource at def}{}{%
-      \Hy at raisedlink{\hyperdef{}{source:#1}{}}%
-      \xdef\hypersource at def{#1}%
-    }%
-  }%
-%    \end{macrocode}
-% Mit \cs{hypersource at ref@\dots} wird auf Anker im Dokument verlinkt. Dies 
-% erfolgt indirekt über die Attribute \val{main} bzw. \val{usage}, welche bei
-% der Definitionen von Befehlen etc. im Index genutzt werden. Hierfür werden
-% die dazugehörigen Makros umdefiniert.
-%    \begin{macrocode}
-  \newcommand*\hypersource at ref@codeline[2][\@firstofone]{%
-    \begingroup%
-      \def\@tempa##1{\hyperref{}{}{source:##1}{#1{##1}}}%
-      \forcsvlist\@tempa{#2}%
-    \endgroup%
-  }%
-  \newcommand*\hypersource at ref@page[2][\@firstofone]{%
-    \begingroup%
-      \def\@tempa##1{\hyperlink{page.##1}{#1{##1}}}%
-      \forcsvlist\@tempa{#2}%
-    \endgroup%
-  }%
-  \renewcommand*\main[1]{%
-    \ifcodeline at index%
-      \hypersource at ref@codeline[\underline]{#1}%
-    \else%
-      \hypersource at ref@page[\underline]{#1}%
-    \fi%
-  }%
-  \renewcommand*\usage[1]{\hypersource at ref@page[\textit]{#1}}%
-%    \end{macrocode}
-% \end{macro}^^A \hypersource at ref@page
-% \end{macro}^^A \hypersource at ref@codeline
-% \end{macro}^^A \hypersource at def
-% \end{macro}^^A \hypersourcedef
-%
-% \iffalse
-%</doc>
-% \fi
-%
 % Das war's. Damit sind die Ausführungen für das Paket \pkg{hyperref} beendet.
 %    \begin{macrocode}
 }
@@ -739,12 +420,11 @@
 % Zunächst die direkt innerhalb der Dokumentation verwendeten Befehle nebst 
 % dazugehöriger Warnung.
 %    \begin{macrocode}
-%<*!doc>
 %<*class>
   \ClassWarningNoLine{tudscrmanual}%
 %</class>
 %<*package>
-  \PackageWarningNoLine{tudscrtutorial}%
+  \PackageWarningNoLine{tudscrmanual}%
 %</package>
   {%
     It is strongly recommended to load package `hyperref'. \MessageBreak%
@@ -751,32 +431,8 @@
     Nevertheless, essential commands are rudimentarily\MessageBreak%
     defined. At least the package `url' is loaded%
   }%
-%</!doc>
 %    \end{macrocode}
-% \begin{macro}{\hypersetup}
-% \begin{macro}{\href}
-% \begin{macro}{\phantomsection}
-% \begin{macro}{\texorpdfstring}
-% \begin{macro}{\nolinkurl}
-% Einige vom Paket \pkg{hyperref} definierten Befehle werden vorgehalten.
-%    \begin{macrocode}
-  \providecommand*\hypersetup[1]{}%
-  \providecommand*\href[3][]{#3}%
-  \providecommand*\phantomsection{}%
-  \providecommand*\texorpdfstring[2]{#1}%
-  \RequirePackage{url}[2013/09/16]%
-  \providecommand*\nolinkurl[1]{\url{#1}}%
-%    \end{macrocode}
-% \end{macro}^^A \nolinkurl
-% \end{macro}^^A \texorpdfstring
-% \end{macro}^^A \phantomsection
-% \end{macro}^^A \href
-% \end{macro}^^A \hypersetup
 %
-% \iffalse
-%<*!doc>
-% \fi
-%
 % \begin{macro}{\hyperpage}
 % \begin{macro}{\autoref}
 % Der Befehl \cs{autoref} wird auch in der Sternversion genutzt.
@@ -837,96 +493,18 @@
 %</class>
   \providecommand*\tudhyperref[2]{#2}%
   \providecommand*\autorefname[1][]{??\xspace}%
-%
-% \iffalse
-%</!doc>
-%<*doc>
-% \fi
-%
-%    \end{macrocode}
-% Und hier der Teil für die Quelltextdokumentation.
-%    \begin{macrocode}
-  \providecommand*\hypersourcedef[1]{}
-  \providecommand*\hypersource at def{}
-  \providecommand*\hypersource at ref@codeline[2][]{}
-  \providecommand*\hypersource at ref@page[2][]{}
-%
-% \iffalse
-%</doc>
-% \fi
-%
-%    \begin{macrocode}
 }
 %    \end{macrocode}
-% \begin{macro}{\hrfn}
-% \changes{v2.02}{2014/08/16}{neu}^^A
-% \changes{v2.04}{2015/02/18}{Schriftgröße mit \cs{scalebox}}^^A
-% Mit diesem Makro können Hyperlinks im Fließtext erzeugt werden, welche 
-% zusätzlich noch die dazugeörige URL als Fußnote anzeigen.
-%    \begin{macrocode}
-\newcommand*\hrfn[2]{%
-  \href{#1}{\trim at spaces{#2}}%
-  \footnote{%
-    \begingroup%
-%    \end{macrocode}
-% Die Gruppe wird verwendet, um Unterstriche zu entschärfen, die im Zweifel zu 
-% Fehlern führen können.
-%    \begin{macrocode}
-      \def\_{_}%
-      \edef\@tempa{#1}%
-      \strut\expandafter\url\expandafter{\@tempa}%
-    \endgroup%
-  }%
-}
-%    \end{macrocode}
-% \end{macro}^^A \hrfn
-% \begin{macro}{\mailto}
-% Ein Makro zur Angabe einer verlinkten E"~Mail-Adresse.
-%    \begin{macrocode}
-\newrobustcmd*\mailto[1]{\mbox{\href{mailto:#1}{\nolinkurl{#1}}}}%
-%    \end{macrocode}
-% \end{macro}^^A \mailto
-% Wenn \pkg{hyperref} geladen wird, erzeugt das Paket \pkg{babel} innerhalb von 
-% \cs{pdfstringdef} ziemlich viele und absolut unnötige Infos in der Form
-% \texttt{Package babel Info: Redefining ngerman shorthand}. Dieser Patch dient
-% zum Unterdrücken dieser Infos.
-% \begin{macro}{\pdfstringdef}
-%    \begin{macrocode}
-\AfterPackage*{hyperref}{%
-  \patchcmd{\pdfstringdef}{\csname HyPsd at babel@}{%
-    \let\bbl at info\@gobble\csname HyPsd at babel@%
-  }{}{\tud at patch@wrn{pdfstringdef}}%
-}
-%    \end{macrocode}
-% \end{macro}^^A \pdfstringdef
 %
-% \iffalse
-%</body|class&doc>
-%<*body>
-% \fi
-%
 % \begin{macro}{\fullref}
 % Verbesserte Referenzierungen auf Seiten.
 %    \begin{macrocode}
-\RequirePackage{varioref}[2011/10/02]
-\renewcommand*\fullref[1]{\hyperref[#1]{\autoref*{#1} \vpageref{#1}}}
+\RequirePackage{varioref}
+\renewcommand*\fullref[1]{\hyperref[{#1}]{\autoref*{#1} \vpageref{#1}}}
 %    \end{macrocode}
 % \end{macro}^^A \fullref
-% Das Paket \pkg{microtype} wird für den optischen Randausgleich verwendet. Es 
-% sollte erst nach \pkg{hyperref} geladen werden.
-%    \begin{macrocode}
-\AfterPackage*{hyperref}{\RequirePackage[babel]{microtype}[2013/05/23]}
-%    \end{macrocode}
-% Wurde \pkg{hyperref} nicht geladen, dann soll auf \pkg{microtype} trotzdem 
-% nicht verzichtet werden.
-%    \begin{macrocode}
-\TUD at UnwindPackage{hyperref}{\RequirePackage[babel]{microtype}[2013/05/23]}
-%    \end{macrocode}
 %
 % \iffalse
-%</body>
-%<*!doc>
-%<*body>
 %<*class>
 % \fi
 %
@@ -949,8 +527,8 @@
 % \val{true} gesetzt und vor dem Beenden auf \val{false}. Damit wird bestimmt,
 % ob ein öffnender oder ein schließender Indexeintrag erzeugt werden soll.
 %    \begin{macrocode}
-\newif\if at tud@declare
-\newif\if at openindex
+\tud at newif\if at tud@declare
+\tud at newif\if at openindex
 %    \end{macrocode}
 % Das Makro \cs{tud at declare@num} bestimmt innerhalb einer Deklaration, wie 
 % das Markup erfolgen soll. Die möglichen Werte sind bei der Beschreibung von
@@ -1011,10 +589,10 @@
 % für Umgebungen und Befehle gedacht, bei denen lediglich ein oder mehrere 
 % Parameter geändert wurden bzw. entfallen.
 %    \begin{macrocode}
-\newif\if at tud@obsolete
+\tud at newif\if at tud@obsolete
 \NewDocumentEnvironment{Obsolete}{momoog}{%
   \@tud at obsoletetrue%
-  \ifxblank{#1}{%
+  \tud at if@strblank{#1}{%
 %    \end{macrocode}
 % Ohne Versionsnummer erfolgt die Ausgabe ohne Label. Für den Eintrag wird auch 
 % keine Änderungsnotiz erzeugt.
@@ -1057,7 +635,7 @@
         }%
         \@tempb#1\@nil%
       \fi%
-      \eaddto at hook\toks@{\expandafter{\@tempa}}%
+      \addto at hook@expandafter\toks@{\expandafter{\@tempa}}%
       \the\toks@%
     }%
   }%
@@ -1080,10 +658,10 @@
 %    \begin{macrocode}
 \newcommand*\tud at preset@list{}
 \let\tud at preset@list\relax
-\newif\if at tud@preset at list
+\tud at newif\if at tud@preset at list
 \newcommand*\tud at additional@list{}
 \let\tud at additional@list\relax
-\newif\if at tud@additional at list
+\tud at newif\if at tud@additional at list
 %    \end{macrocode}
 % \end{macro}^^A \if at tud@additional at list
 % \end{macro}^^A \tud at additional@list
@@ -1242,9 +820,13 @@
 % einfach bei der verwendung der genannten Befehle der zuvor gesetzte vertikale 
 % Abstand in \cs{tud at lastskip} gesichert.
 %    \begin{macrocode}
-\newskip\tud at lastskip
-\pretocmd{\index}{\tud at lastskip=\lastskip}{}{\tud at patch@wrn{index}}
-\pretocmd{\label}{\tud at lastskip=\lastskip}{}{\tud at patch@wrn{label}}
+\tud at newglue\tud at lastskip
+\pretocmd\index{%
+  \tud at lastskip=\lastskip%
+}{}{\tud at patch@wrn{index}}
+\pretocmd\label{%
+  \tud at lastskip=\lastskip%
+}{}{\tud at patch@wrn{label}}
 \NewDocumentCommand\printdeclarationlist{!s !d()}{%
   \ifx\tud at declaration@list\relax\else%
     \ifhmode%
@@ -1256,7 +838,7 @@
 % Sollte dann noch ein positiver Wert bestehen, wird dieser einfach zusätzlich
 % gesetzt.
 %    \begin{macrocode}
-      \@tempskipa=\glueexpr\medskipamount-\tud at lastskip\relax%
+      \tud at setglue\@tempskipa{\medskipamount-\tud at lastskip}%
       \ifdim\@tempskipa>\z@\relax%
         \addpenalty{\@beginparpenalty}%
         \addvspace{\@tempskipa}%
@@ -1375,10 +957,15 @@
 % \begin{macro}{\bsc}
 % \changes{v2.02}{2014/07/22}{\cs{newrobustcmd} aus \pkg{etoolbox} anstatt
 %   \cs{DeclareRobustCommand}}^^A
-% Eine einfacher zu verwendende Kurzform.
+% \begin{macro}{\txb}
+% \changes{v2.06o}{2022/08/03}{neu}^^A
+% Eine einfacher zu verwendende Kurzform für den Backslash sowie eine 
+% mikrotypografisch angepasste Version von \cs{textbar}.
 %    \begin{macrocode}
 \newrobustcmd*\bsc{\@backslashchar}
+\newrobustcmd*\txb{{\raise.05em\hbox{\kern.05em\textbar\kern.05em}}}
 %    \end{macrocode}
+% \end{macro}^^A \txb
 % \end{macro}^^A \bsc
 % \begin{macro}{\suffix}
 % \changes{v2.05}{2015/10/27}{neu}^^A
@@ -1420,7 +1007,7 @@
 % Argumenten am Ende genutzt werden können. Sollte ein Label existieren, wird 
 % automatisch ein Hyperlink erzeugt, welcher mit der optionalen Angabe von
 % |'|\meta{Referenzvariante}|'| um einen textuellen Querverweis ergänzt werden
-% kann. Mit \verb=|=\meta{Indexmarkup}\verb=|= kann die Erscheinung im Index
+% kann. Mit \verb+|+\meta{Indexmarkup}\verb+|+ kann die Erscheinung im Index
 % angepasst werden. Bei einigen Befehlen kann zusätzlich zuvor im Markup mit
 % dem optionalen Argument \parg{Bundleelement} die Zuweisung auf ein bestimmtes
 % Paket oder eine Klasse aus dem \TUDScript-Bundle erfolgen.
@@ -1431,7 +1018,7 @@
 % festgelegt. Ein Eintrag in den Index wird mit \cs{Process at Index} realisiert.
 % Für die Änderungsliste wird der Befehl \cs{Process at ChangedAt} genutzt, um die 
 % entsprechende Formatierung zu gewährleisten, wobei dies nur für die Klasse
-% \cls{tudscrmanual} und nicht für das Paket \pkg{tudscrtutorial} gilt.
+% \cls{tudscrmanual} und nicht für das Paket \pkg{tudscrmanual} gilt.
 %
 % \begin{macro}{\ProcessorKeyVal}
 % \changes{v2.05}{2015/11/01}{neu}^^A
@@ -1473,7 +1060,7 @@
   \ClassError{tudscrmanual}%
 %</class>
 %<*package>
-  \PackageError{tudscrtutorial}%
+  \PackageError{tudscrmanual}%
 %</package>
     {Wrong usage of optional argument for value}%
     {There are two optional arguments for a value given!}%
@@ -1500,7 +1087,7 @@
     \ClassError{tudscrmanual}%
 %</class>
 %<*package>
-    \PackageError{tudscrtutorial}%
+    \PackageError{tudscrmanual}%
 %</package>
       {Nested environment `Bundle'}{%
       It is not possible to nest this environment, when\MessageBreak%
@@ -1522,7 +1109,9 @@
 \newcommand*\tud at bdl@curr{}
 \newcommand*\tud at bdl@dflt{tudscr}
 \let\tud at bdl@curr\tud at bdl@dflt
-\newcommand*\tud at if@bdl[2]{\ifstr{\tud at bdl@curr}{\tud at bdl@dflt}{#2}{#1}}
+\newcommand*\tud at if@bdl[2]{%
+  \tud at if@strequal{\tud at bdl@curr}{\tud at bdl@dflt}{#2}{#1}%
+}
 %    \end{macrocode}
 % \end{macro}^^A \tud at if@bdl
 % \end{macro}^^A \tud at bdl@dflt
@@ -1535,7 +1124,7 @@
 %    \begin{macrocode}
 \NewExpandableDocumentCommand\@Application{sm}{#2}
 \NewDocumentCommand\Application{s m !d() !d<> !d||}{%
-  \Markup at SetFormat{\sbsfont}%
+  \Markup at SetFormat{\sbifont}%
   \IfValueTF{#4}{%
     \Process at Markup{\Application{#2}}(#3)<#4>%
   }{%
@@ -2024,7 +1613,7 @@
 %   Default-Eintrag hinterlegen, um ggf. darauf zu prüfen%
 % }[v2.??]%
 % \ToDo{%
-%   neues Makro \cs{PLength} mit \cs{PName\{Längenwert\}}
+%   neues Makro \cs{PLength} mit \cs{PName}\marg{Längenwert}
 % }[v2.??]%
 % \begin{macro}{\PValue}
 % \begin{macro}{\PName}
@@ -2118,7 +1707,7 @@
 % des zweiten obligatorischen Argumentes ausgeführt. Es ist zu beachten, dass
 % dieser \emph{expandiert} wird!
 %    \begin{macrocode}
-      \ifxblank{#2}{%
+      \tud at if@strblank{#2}{%
         \let\tud at reserved\endgroup%
       }{%
         \protected at edef\tud at reserved{\noexpand\endgroup#3}%
@@ -2309,8 +1898,7 @@
 % nicht der Fall ist, wird die Labelgenerierung abermals ausgeführt.
 %    \begin{macrocode}
 \NewDocumentCommand\tud at lbl@get@@dflt{mmmmr==}{%
-  \edef\tud at reserved{\expandafter\detokenize\expandafter{\tud at bdl@dflt}}%
-  \ifstr{\tud at reserved}{#2}{}{%
+  \tud at if@strequal{#2}{\tud at bdl@dflt}{}{%
 %    \end{macrocode}
 % Dabei erfolgt der Aufruf logischerweise mit dem richtigen Bundlepräfix. 
 %    \begin{macrocode}
@@ -2333,10 +1921,10 @@
 \NewDocumentCommand\tud at if@lbl at exists{%
   >{\tud at lbl@create}>{\SplitArgument{2}{:}}m%
 }{%
-  \ifcsdef{r@#1}{%
+  \ifcsundef{r@#1}{%
+    \expandafter\@secondoftwo%
+  }{%
     \expandafter\@firstoftwo%
-  }{%
-    \expandafter\@secondoftwo%
   }%
 }
 %</class>
@@ -2422,7 +2010,7 @@
       \IfValueTF{#2}{%
         \tud at attr@get\@tempb{#2}%
         \IfValueTF{#1}{%
-          \ifxblank{#1}{%
+          \tud at if@strblank{#1}{%
             \edef\@tempa{\tud at bdl@dflt:\@tempb:#2}%
           }{%
             \edef\@tempa{#1:\@tempb:#2}%
@@ -2472,8 +2060,9 @@
 % Überschriften ausgegeben werden, wird der Schalter \cs{if at tud@disposition} 
 % und der dazugehörige auswertende Befehl \cs{ifdisposition} definiert. Das
 % Setzen des Schalters wird in \cs{tud at sec@format} gepatcht.
+% \ToDo{besser nur als internen Befehl definieren \cs{tud at if@...}?!}[v2.06]
 %    \begin{macrocode}
-\newif\if at tud@disposition
+\tud at newif\if at tud@disposition
 \newcommand*\ifdisposition{%
   \if at tud@disposition%
     \expandafter\@firstoftwo%
@@ -2481,7 +2070,7 @@
     \expandafter\@secondoftwo%
   \fi%
 }
-\pretocmd{\tud at sec@format}{%
+\pretocmd\tud at sec@format{%
   \@tud at dispositiontrue%
 }{}{\tud at patch@wrn{tud at sec@format}}
 %    \end{macrocode}
@@ -2491,7 +2080,7 @@
 %
 % In der Klasse \cls{tudscrmanual} werden die Markup-Befehle zusätzlich auch 
 % als Argument der Umgebung \env{Declaration} genutzt. Für diese Verwendung
-% kommt die Definiton von \cs{Markup at Declare} und ggf. \cs{Markup at Suffix} zum 
+% kommt die Definition von \cs{Markup at Declare} und ggf. \cs{Markup at Suffix} zum 
 % Einsatz. 
 %
 % \begin{macro}{\Process at Markup}
@@ -2568,7 +2157,7 @@
 %<*class>
   \fi%
 %</class>
-  \eaddto at hook\tud at toks@{\expandafter{\tud at lbl@tmp}}%
+  \addto at hook@expandafter\tud at toks@{\expandafter{\tud at lbl@tmp}}%
 %    \end{macrocode}
 % Danach wird der Inhalt des im ersten Argument übergebenen Markup-Befehls in 
 % einer Gruppe ein temporäres Makro expandiert und als zweites Argument für die 
@@ -2581,7 +2170,7 @@
       \def\noexpand\tud at reserved{#1}%
     }%
   \tud at reserved%
-  \eaddto at hook\tud at toks@{\expandafter{\tud at reserved}}%
+  \addto at hook@expandafter\tud at toks@{\expandafter{\tud at reserved}}%
 %    \end{macrocode}
 % Es folgen gegebenenfalls die optionalen Argument |=|\meta{Wert}|=| sowie
 % \oarg{Ausgabesuffix}~-- falls diese angegeben wurden.
@@ -2598,7 +2187,7 @@
 % Schalter hier genutzt, um lediglich zu Beginn einer Deklaration das Markup 
 % auszuführen. Dabei Angaben für eine |'|\meta{Referenzvariante}|'| nicht
 % erlaubt.
-%   \begin{macrocode}
+%    \begin{macrocode}
 %<*class>
   \if at tud@declare%
     \if at openindex%
@@ -2630,7 +2219,9 @@
 %</class>
     \if at tud@index\else%
       \IfValueT{#5}{%
-        \ifxblank{#5}{}{\addto at hook\tud at toks@{<http://www.ctan.org/pkg/#5>}}%
+        \tud at if@strblank{#5}%
+          {}%
+          {\addto at hook\tud at toks@{<http://www.ctan.org/pkg/#5>}}%
       }%
       \IfValueT{#6}{\addto at hook\tud at toks@{'#6'}}%
     \fi%
@@ -2653,9 +2244,9 @@
 %    \begin{macrocode}
   \if at tud@index\else%
     \IfValueT{#4}{%
-      \ifxblank{#4}{}{%
+      \tud at if@strblank{#4}{}{%
         \tud at trace@bdl at add{#4}%
-        \ifstr{#6}{none}{}{%
+        \tud at if@strequal{#6}{none}{}{%
           \tud at if@lbl at exists{\tud at lbl@tmp}{}{%
             \ClassWarning{tudscrmanual}{%
               No existing label \tud at lbl@tmp\space for #4%
@@ -2746,7 +2337,7 @@
 \NewDocumentCommand\Process@@MarkupInline{mmd==od<>d''}{%
   \Markup at CheckFormat%
 %    \end{macrocode}
-% Um die aktuelle Definiton der temporären Makros nicht zu ändern, erfolgt die
+% Um die aktuelle Definition der temporären Makros nicht zu ändern, erfolgt die
 % formatierte Ausgabe in einer Gruppe. Dabei wird in \cs{@tempc} die minimale 
 % Variante gesichert.
 %    \begin{macrocode}
@@ -2773,25 +2364,21 @@
       \let\@tempb\relax%
       \IfValueT{#6}{%
         \def\@tempb{%
-%<*class>
-          \ClassWarning{tudscrmanual}%
-%</class>
-%<*package>
-          \PackageWarning{tudscrtutorial}%
-%</package>
-          {%
+          \ClassWarning{tudscrmanual}{%
             You've used the unknown cross-reference\MessageBreak%
             shorthand '#6'. Only 'auto', 'page' and 'full'\MessageBreak%
             as well as 'none' \IfValueT{#5}{or 'url' }are valid%
           }%
         }%
-        \ifstr{#6}{auto}{\def\@tempb{ in \autoref{#1}}}{%
-        \ifstr{#6}{page}{\def\@tempb{ \vpageref{#1}}}{%
-        \ifstr{#6}{ppage}{\def\@tempb{ \reftextfaraway{#1}}}{%
-        \ifstr{#6}{full}{\def\@tempb{ in \fullref{#1}}}{%
-        \ifstr{#6}{none}{\let\@tempa\@tempc\let\@tempb\relax}{}}}}}%
+        \tud at if@strequal{#6}{auto} {\def\@tempb{ in \autoref{#1}}}{%
+        \tud at if@strequal{#6}{page} {\def\@tempb{ \vpageref{#1}}}{%
+        \tud at if@strequal{#6}{ppage}{\def\@tempb{ \reftextfaraway{#1}}}{%
+        \tud at if@strequal{#6}{full} {\def\@tempb{ in \fullref{#1}}}{%
+        \tud at if@strequal{#6}{none} {\let\@tempa\@tempc\let\@tempb\relax}{}}}}}%
         \IfValueT{#5}{%
-          \ifstr{#6}{url}{\def\@tempa{\href{#5}{\@tempc}}\let\@tempb\relax}{}%
+          \tud at if@strequal{#6}{url}%
+            {\def\@tempa{\href{#5}{\@tempc}}\let\@tempb\relax}%
+            {}%
         }%
       }%
     }{%
@@ -2809,14 +2396,16 @@
 %    \begin{macrocode}
       \let\@tempb\relax%
       \IfValueT{#6}{%
-        \ifstr{#6}{none}{\let\@tempa\@tempc}{%
-%<package>        \ifstr{#6}{manual}{\def\@tempa{\tudhyperref{#1}{\@tempc}}}{%
+        \tud at if@strequal{#6}{none}{\let\@tempa\@tempc}{%
+%<*package>
+        \tud at if@strequal{#6}{manual}{\def\@tempa{\tudhyperref{#1}{\@tempc}}}{%
+%</package>
           \def\@tempb{%
 %<*class> 
             \ClassWarning{tudscrmanual}%
 %</class>
 %<*package>
-            \PackageWarning{tudscrtutorial}%
+            \PackageWarning{tudscrmanual}%
 %</package>
             {%
 %<*class>
@@ -2900,7 +2489,7 @@
 %    \begin{macrocode}
   \IfValueT{#3}{\appto\@tempa{=#3}}%
   \IfValueT{#4}{\appto\@tempa{#4}}%
-  \eaddto at hook\tud at toks@{\expandafter{\@tempa}}%
+  \addto at hook@expandafter\tud at toks@{\expandafter{\@tempa}}%
   \the\tud at toks@%
 }
 %    \end{macrocode}
@@ -2949,16 +2538,7 @@
 \undef\Markup at Format
 \newcommand*\Markup at Suffix{}
 \NewDocumentCommand\Markup at SetFormat{omod()}{%
-%    \end{macrocode}
-% Außerdem ist noch eine weitere Besonderheit zu beachten. Sollte gerade eine
-% Überschrift gesetzt werden, wird das Hauptargument nicht formatiert sondern 
-% lediglich mit \cs{tud at sec@format} ausgegeben.
-%    \begin{macrocode}
-  \def\Markup at Format##1{%
-    \def\tud at res@a{#2}%
-    \tud at ifdin{\let\tud at res@a\tud at sec@format}{}%
-    \begingroup\tud at res@a{\IfValueT{#1}{#1}##1}\endgroup%
-  }%
+  \def\Markup at Format##1{\begingroup#2{\IfValueT{#1}{#1}##1}\endgroup}%
   \IfValueT{#3}{\def\Markup at Suffix{\suffix{#3}}}%
 %<*class>
   \IfValueT{#4}{\renewcommand*\Markup at Declare[1]{#4\Markup at Suffix}}%
@@ -2982,7 +2562,7 @@
     \ClassError{tudscrmanual}%
 %</class>
 %<*package>
-    \PackageError{tudscrtutorial}%
+    \PackageError{tudscrmanual}%
 %</package>
       {\string\Markup at SetFormat\space unused}%
       {It seems you have forgotten to use \string\Markup at SetFormat.}%
@@ -2994,50 +2574,6 @@
 % \end{macro}^^A \Markup at ClearFormat
 % \end{macro}^^A \Markup at SetFormat
 % \end{macro}^^A \Markup at CheckFormat
-% \begin{macro}{\tud at nonchangecase}
-% \changes{v2.05}{2015/11/20}{neu}^^A
-% \begin{macro}{\tud at x@textcase at uclcnotmath}
-% Die \TUDScript-Hauptklassen definieren in Ergänzung zum Paket \pkg{textcase} 
-% den internen Befehl \cs{tud at x@textcase at uclcnotmath}, womit die Definition von 
-% Makros ermöglicht wird, welche von \cs{MakeTextUppercase} nicht beachtet
-% werden sollen. Hierfür werden \emph{alle} Markup-Befehle der Liste zum
-% Ignorieren hinzugefügt. Damit aber bei der eigentlichen Ausgabe alles in
-% Majuskeln erscheint, wird für diesen Fall \cs{Markup at Format} genutzt.
-%    \begin{macrocode}
-\ifundef{\tud at x@textcase at uclcnotmath}{}{%
-  \NewDocumentCommand\tud at nonchangecase{m}{%
-    \DeclareExpandableDocumentCommand#1{sm}{%
-      \IfBooleanT{##1}{\noexpand\@tud at indextrue}%
-      \NoCaseChange{#1{##2}}%
-    }%
-  }
-  \apptocmd{\tud at x@textcase at uclcnotmath}{%
-    \tud at nonchangecase\Application%
-    \tud at nonchangecase\Distribution%
-    \tud at nonchangecase\Engine%
-    \tud at nonchangecase\File%
-    \tud at nonchangecase\Class%
-    \tud at nonchangecase\Package%
-    \tud at nonchangecase\Option%
-    \tud at nonchangecase\Environment%
-    \tud at nonchangecase\Macro%
-    \tud at nonchangecase\Length%
-    \tud at nonchangecase\Counter%
-%<*class>
-    \DeclareExpandableDocumentCommand\Key{smm}{%
-      \IfBooleanT{##1}{\noexpand\@tud at indextrue}%
-      \NoCaseChange{#1{##2}{##3}}%
-    }%
-    \tud at nonchangecase\Term%
-    \tud at nonchangecase\PageStyle%
-    \tud at nonchangecase\Font%
-    \tud at nonchangecase\Color%
-%</class>
-  }{}{\tud at patch@wrn{tud at x@textcase at uclcnotmath}}
-}
-%    \end{macrocode}
-% \end{macro}^^A \tud at x@textcase at uclcnotmath
-% \end{macro}^^A \tud at nonchangecase
 %
 % \subsection{Index}
 %
@@ -3047,7 +2583,7 @@
 % Klasse erzeugt werden. 
 %    \begin{macrocode}
 \PassOptionsToPackage{xindy,splitindex}{imakeidx}
-\RequirePackage{imakeidx}[2013/07/11]
+\RequirePackage{imakeidx}
 %    \end{macrocode}
 % Zuerst ein paar kleinere Einstellungen für das Layout\dots
 %    \begin{macrocode}
@@ -3094,12 +2630,12 @@
     \let\item\@idxitem
     \imki at othercode%
   }%
-  \patchcmd{\theindex}{%
+  \patchcmd\theindex{%
     \imki at indexlevel{\indexname}\imki at indexheaders%
   }{%
     \imki at indexheaders%
   }{}{\tud at patch@wrn{theindex}}%
-  \patchcmd{\theindex}{%
+  \patchcmd\theindex{%
     \ifnum\imki at columns>\@ne
       \columnsep \imki at columnsep
       \ifx\imki at idxprologue\relax
@@ -3138,12 +2674,14 @@
 % danach wird die Datei mit den normalen Einträgen verarbeitet. Siehe hierzu 
 % auch \cs{Process@@Index}.
 %    \begin{macrocode}
+\newcommand*\tud at xdy@settings{}
+\edef\tud at xdy@settings{-M \@currname-ind.xdy -L german-din}
 \NewDocumentCommand\makexdyindex{s o m !o}{%
   \let\@tempb\@empty%
 %<*class>
   \IfBooleanT{#1}{%
     \def\@tempc{\jobname-#4-declare.idx}%
-    \makeindex[name={#4-declare}]%
+    \makeindex[name=#4-declare]%
     \IfFileExists{\@tempc}{%
       \edef\@tempb{-o \jobname-#4.ind \@tempc}%
     }{%
@@ -3151,14 +2689,17 @@
     }%
   }%
 %</class>
+  \ifundef{\inputencodingname}{}{%
+    \eappto\tud at xdy@settings{\space-C\space\inputencodingname}%
+  }%
   \protected at edef\@tempa{%
     title={#3},%
     columnsep=\noexpand\f at size\noexpand\p@,%
     \IfValueTF{#4}{%
       name={#4},%
-      options={-M \@currname-ind.xdy -L german-din -t \jobname-#4.xlg \@tempb},%
+      options={\tud at xdy@settings\space-t \jobname-#4.xlg \@tempb},%
     }{%
-      options={-M \@currname-ind.xdy -L german-din -t \jobname.xlg},%
+      options={\tud at xdy@settings\space-t \jobname.xlg},%
     }%
     \IfValueT{#2}{#2}%
   }%
@@ -3193,7 +2734,7 @@
 % noch im Index erwünscht ist, weshalb vom Makro \cs{@printindex} ebenfalls
 % \cs{@tud at indextrue} gesetzt wird.
 %    \begin{macrocode}
-\newif\if at tud@index
+\tud at newif\if at tud@index
 \addtoeachtocfile{\protect\@tud at indextrue}
 %    \end{macrocode}
 % \end{macro}^^A \if at tud@index
@@ -3250,13 +2791,13 @@
 % dem \TUDScript-Bundle erstellt werden, wird das optionale Argument in runden 
 % Klammern \parg{\string\Class\marg{Klasse}/\string\Package\marg{Paket}} für 
 % einen Verweis auf das \parg{Bundleelement} verwendet, der in \cs{@idxbundle} 
-% gespeichert wird. Das Argument \verb=|=\meta{Indexmarkup}\verb=|= wird bei
+% gespeichert wird. Das Argument \verb+|+\meta{Indexmarkup}\verb+|+ wird bei
 % Deklarationen zur Unterdrückung von Untereinträgen verwendet.
 % Der vollständige Funktionsaufruf lautet:
 % \newline\begingroup\scriptsize
 %   \cs{tud at idx@get}\cs{tud at idx@key}\cs{tud at idx@fmt}\ignorespaces%
 %   \cs{tud at idx@val}\marg{Elem.}|=|\meta{Wert}|=|\oarg{Anm.}\ignorespaces%
-%   \parg{Bundleelem.}\verb=|=\meta{Indexmark.}\verb=|=\ignorespaces%
+%   \parg{Bundleelem.}\verb+|+\meta{Indexmark.}\verb+|+\ignorespaces%
 % \endgroup
 %    \begin{macrocode}
 \newcommand*\tud at idx@key{}
@@ -3333,8 +2874,8 @@
 % mit |"| maskiert.
 %    \begin{macrocode}
     \def#3{#5}%
-    \tud at replace#2{@}{"@}%
-    \tud at replace#3{@}{"@}%
+    \tud at replace@@in#2{@}{"@}%
+    \tud at replace@@in#3{@}{"@}%
 %    \end{macrocode}
 % In \cs{@idxbundle} wird ggf. das Paket oder die Klasse gespeichert, für die 
 % der aktuelle Eintrag erzeugt werden soll. Eine explizite Angabe wird in jedem 
@@ -3432,8 +2973,10 @@
 %    \begin{macrocode}
     \@tempswafalse%
     \IfBooleanT{#1}{\@tempswatrue}%
-    \IfValueT{#9}{\ifstr{#9}{declare}{\@tempswatrue}{}}%
-    \IfValueT{#9}{\ifstr{#9}{default}{\@tempswatrue}{}}%
+    \IfValueT{#9}{%
+      \tud at if@strequal{#9}{declare}{\@tempswatrue}{}%
+      \tud at if@strequal{#9}{default}{\@tempswatrue}{}%
+    }%
 %    \end{macrocode}
 % In diesem Fall werden die Ergänzungen für Schlüssel und Formatierung ggf. um 
 % die speziellen Schlüsselwerte für das Element ergänzt.
@@ -3506,7 +3049,7 @@
   \ClassWarning{tudscrmanual}%
 %</class>
 %<*package>
-  \PackageWarning{tudscrtutorial}%
+  \PackageWarning{tudscrmanual}%
 %</package>
     {You should use `|see' instead of `|seealso'}%
   \tud at cleversee{\alsoname}%
@@ -3522,25 +3065,39 @@
 % ist alles nachfolgende bis \cs{relax}.
 %    \begin{macrocode}
 \newcommand*\tud at cleversee{}
-\def\tud at cleversee#1#2#3\relax{%
-  \IfArgIsEmpty{#3}{%
-    \emph{#1}\space#2%
-  }{%
-%    \end{macrocode}
-% Folgen im Index nach \cs{cleversee}\marg{Querverweis} noch weitere Einträge, 
-% so sind diese zu Beginn durch \texttt{,\textvisiblespace} getrennt. Diese 
-% zwei Zeichen werden mithilfe von \cs{@tempa} ignoriert.
-%    \begin{macrocode}
-    \begingroup%
-      \def\@tempa, ##1\@nil{##1,\space\emph{\alsoname}\space#2}%
-      \@tempa#3\@nil%
-    \endgroup%
-  }%
+\def\tud at cleversee#1#2\relax{%
+  \begingroup%
+    \let\cleversee\@empty%
+    \let\cleverseealso\@empty%
+    \let\tud at res@a\@empty%
+    \def\tud at res@b{#2}%
+    \def\tud at res@c##1\\##2\@nil{%
+      \appto\tud at res@a{##1}%
+      \def\tud at res@b{##2}%
+      \trim at spaces@in\tud at res@b%
+      \in@{\\}{##2}%
+    }%
+    \in at true%
+    \@whilesw\ifin@\fi{%
+      \expandafter\tud at res@c\tud at res@b\@nil%
+    }%
+    \ifx\tud at res@b\@empty%
+      \mbox{\emph{#1}}%
+    \else%
+      \def\tud at res@c##1 ##2\@nil{%
+        ##2##1\space\mbox{\emph{\alsoname}}%
+      }%
+      \expandafter\tud at res@c\tud at res@b\@nil%
+    \fi%
+    \space\tud at res@a%
+  \endgroup%
 }
 %    \end{macrocode}
 % \end{macro}^^A \tud at cleversee
 % \end{macro}^^A \cleverseealso
 % \end{macro}^^A \cleversee
+% \begin{macro}{\seesep}
+% \changes{v2.06o}{2022/08/03}{neu}^^A
 % \begin{macro}{\seeref}
 % \changes{v2.05}{2015/11/02}{neu}^^A
 % \begin{macro}{\seeidx}
@@ -3548,15 +3105,17 @@
 % statt \cs{alsosee} genutzt werden. Das Makro \cs{seeidx} verweist auf die 
 % Seite eines Indexes.
 %    \begin{macrocode}
-%<*class>
+\newrobustcmd*\seesep{\txb}%
 \NewDocumentCommand\seeref{s m}{%
   \emph{\IfBooleanTF{#1}{\alsoname}{\seename}}\space#2%
 }
-\newcommand*\seeidx[2]{\pageref{idx:#1}}
+%<*class>
+\newrobustcmd*\seeidx[2]{\pageref{idx:#1}}
 %</class>
 %    \end{macrocode}
 % \end{macro}^^A \seeidx
 % \end{macro}^^A \seeref
+% \end{macro}^^A \seesep
 %
 % \subsubsection{Erstellen von Indexeinträgen}
 %
@@ -3579,7 +3138,7 @@
 % \newline\begingroup\scriptsize
 %   \cs{Process at Index}\marg{Stern?}\marg{Element}\ignorespaces%
 %   |=|\meta{Wert}|=|\oarg{Anmerkung}\parg{Bundleelement}\ignorespaces%
-%   \verb=|=\meta{Indexmarkup}\verb=|=\ignorespaces%
+%   \verb+|+\meta{Indexmarkup}\verb+|+\ignorespaces%
 % \endgroup
 %    \begin{macrocode}
 \NewDocumentCommand\Process at Index{mmd==od()d||}{%
@@ -3593,7 +3152,7 @@
         \ClassWarning{tudscrmanual}%
 %</class>
 %<*package>
-        \PackageWarning{tudscrtutorial}%
+        \PackageWarning{tudscrmanual}%
 %</package>
         {%
           You've used the starred version. No index entry\MessageBreak%
@@ -3659,15 +3218,15 @@
 %    \end{macrocode}
 % Für Markup-Befehle außerhalb von Deklarationsumgebungen wird ein einfacher 
 % Eintrag in den Index erzeugt, wobei auch im Fließtext über das Indexmarkup 
-% \verb=|=\val{declare}\verb=|= eine Quasi-Deklaration verwendet werden kann. 
+% \verb+|+\val{declare}\verb+|+ eine Quasi-Deklaration verwendet werden kann. 
 % Dies wird beispielsweise für \KOMAScript-Optionen genutzt, um diese in der 
 % gewünschten Formatierung im Index erscheinen zu lassen.
-%    \begin{macrocode}    
+%    \begin{macrocode}
   \else%
 %</class>
     \IfValueT{#5}{%
 %<*class>
-      \ifstr{#5}{declare}{%
+      \tud at if@strequal{#5}{declare}{%
         \appto\tud at lbl@tmp{-declare}%
         \appto\tud at idx@fmt{|declare}%
       }{%
@@ -3723,8 +3282,8 @@
 % Indexuntereintrag erzeugt, der wiederum auf einen Indexeintrag des zweiten 
 % Argumentes verweist. Dabei kann im zweiten Argument ein normaler Begriff oder 
 % ein Markup-Befehl verwendet werden. Normalerweise wird für den Querverweis 
-% die Referenzklasse \verb=|see= verwendet, die Sternversion des Befehls
-% hingegen nutzt \verb=|seeunverified=, um auf eine Prüfung des verwiesenen
+% die Referenzklasse \verb+|see+ verwendet, die Sternversion des Befehls
+% hingegen nutzt \verb+|seeunverified+, um auf eine Prüfung des verwiesenen
 % Eintrags zu verzichten.
 %    \begin{macrocode}
 \NewDocumentCommand\SeeRef{s m m}{%
@@ -3734,7 +3293,7 @@
 %    \end{macrocode}
 % Wurde im zweiten Argument ein Markup-Befehl angegeben, so wurde durch das 
 % Erstellen der Box das dazugehörige Indexformat in \cs{tud at idx@fmt} für den
-% Eintrag erstellt. Andernfalls wurde die Definiton von \cs{tud at idx@fmt} nicht 
+% Eintrag erstellt. Andernfalls wurde die Definition von \cs{tud at idx@fmt} nicht
 % geändert und das Argument wird nach der Box direkt in den Index eingetragen.
 %    \begin{macrocode}
     \ifx\tud at idx@fmt\relax%
@@ -3867,7 +3426,7 @@
 % die Sternversion von \cs{tudhyperdef} genutzt, um das Label auf die Höhe der 
 % Überschrift zu setzen.
 %    \begin{macrocode}
-  \ifblank{#1}{%
+  \tud at if@strblank{#1}{%
     \def\tud at reserved{\tudhyperdef*{idx:main}}%
   }{%
     \def\tud at reserved{\tudhyperdef*{idx:#1}}%
@@ -3889,13 +3448,13 @@
   \fi%
 %</class>
 %    \end{macrocode}
-% Fur das Paket \pkg{tudscrtutorial} erfolgt eine einfache Ausgabe der Indexe.
+% Fur das Paket \pkg{tudscrmanual} erfolgt eine einfache Ausgabe der Indexe.
 %    \begin{macrocode}
 %<package>  \indexprologue[\tud at idx@skip]{}%
 %    \end{macrocode}
 % Die Ausgabe des gewünschten Index und des leeren des Prologs.
 %    \begin{macrocode}
-  \ifblank{#1}{\printindex}{\printindex[#1]}%
+  \tud at if@strblank{#1}{\printindex}{\printindex[{#1}]}%
   \ifnum\imki at columns>\@ne\relax\vspace{-\multicolsep}\fi%
 %<class>  \let\tud at indexprologue\@empty%
 }
@@ -3936,8 +3495,8 @@
 % anstelle der Makros \cs{Process at Markup} und \cs{Process at Index} den Befehl 
 % \cs{Process at ChangedAt} auszuführen, mit welchem die Formatierung der Einträge 
 % der Änderungsliste erfolgt.
-%   \begin{macrocode}
-\newif\if at tud@changedat
+%    \begin{macrocode}
+\tud at newif\if at tud@changedat
 %    \end{macrocode}
 % Die Formatierung der Änderungseinträge erfolgt~-- wie auch für den Index~-- 
 % mit dem Makro \cs{tud at idx@get}, wobei die Sternversion für die Identifikation
@@ -3949,7 +3508,7 @@
 %   \cs{Process at ChangedAt}\marg{Element}|=|\meta{Wert}|=|\ignorespaces%
 %   \oarg{Ausgabesuffix}\parg{Bundleelement}\ignorespaces%
 % \endgroup
-%   \begin{macrocode}
+%    \begin{macrocode}
 \NewDocumentCommand\Process at ChangedAt{md==od()}{%
   \tud at idx@get*\tud at idx@key\tud at idx@fmt\tud at idx@val{#1}=#2=[#3](#4)%
 }
@@ -3983,7 +3542,7 @@
 % ein vertikaler Versatz dieser angegeben werden. Die Sternversion des Befehls 
 % unterdrückt die Ausgabe der Randnotiz. 
 %    \begin{macrocode}
-\newlength\changedatskip
+\tud at newdim\changedatskip
 \NewDocumentCommand\ChangedAt{s o d() m !O{\changedatskip}}{%
   \IfValueTF{#2}{%
     \Changed at At@CreateList[#2](#3){#4}%
@@ -4144,7 +3703,7 @@
 % Hier erfolgt ggf. der Eintrag des \TUDScript-Bundle-Elements, danach folgt 
 % der Markup-Befehl.
 %    \begin{macrocode}
-    \eaddto at hook\toks@{\@tempb}%
+    \addto at hook@expandafter\toks@{\@tempb}%
     \addto at hook\toks@{!#1!}%
 %    \end{macrocode}
 % Wurde ein Untereintrag angegeben, wird dieser hier gefolgt von der 
@@ -4174,7 +3733,7 @@
     \toks@{#3!Allgemein }%
     \IfValueTF{#2}{%
       \addto at hook\toks@{!}%
-      \eaddto at hook\toks@{\@tempb:\space}%
+      \addto at hook@expandafter\toks@{\@tempb:\space}%
       \IfValueTF{#5}{%
         \addto at hook\toks@{#5}%
       }{%
@@ -4181,7 +3740,7 @@
         \addto at hook\toks@{\emph{neu}}%
       }%
     }{%
-      \eaddto at hook\toks@{\@tempb}%
+      \addto at hook@expandafter\toks@{\@tempb}%
       \addto at hook\toks@{!}%
       \addto at hook\toks@{#5}%
     }%
@@ -4260,7 +3819,7 @@
 % im dritten Argument gegebenen Markup-Befehl. Dies wird für Anmerkungen zu 
 % expliziten Schlüssel-Wert-Paaren bei Optionen oder Parametern genutzt. 
 %    \begin{macrocode}
-      \ifxblank{#4}{}{%
+      \tud at if@strblank{#4}{}{%
 %    \end{macrocode}
 % Hierfür wird die zuvor erhaltene Formatierung des Markup-Befehls des dritten
 % Argumentes an den Haupteintrag \cs{tud at idx@val} mit der zusätzlichen
@@ -4294,7 +3853,7 @@
 % Änderungsliste vermerkt, ob es sich bei dem Markup-Befehl respektive dessen 
 % Untereintrag um eine \emph{neue} bzw. eine \emph{obsolete} Variante handelt.
 %    \begin{macrocode}
-      \ifxblank{#5}{%
+      \tud at if@strblank{#5}{%
         \if at tud@obsolete%
           \appto\tud at idx@fmt{: \emph{entf\"allt}}%
         \else%
@@ -4351,7 +3910,7 @@
 % \cs{item}-Befehle werden eine Ebene nach oben gehoben.
 %    \begin{macrocode}
     \let\lettergroup\@gobble%
-    \apptocmd{\theindex}{%
+    \apptocmd\theindex{%
       \let\subsubsubitem\subsubitem%
       \let\subsubitem\subitem%
       \let\subitem\item%
@@ -4369,11 +3928,9 @@
         \expandafter\def\csname\string\item\endcsname##1~%
       }{%
         \endgroup%
-        \let\@tempb\@firstofone%
-        \if at tud@cdoldfont at active\def\@tempb##1{\NoCaseChange{##1}}\fi%
-        \addsec[##1]{\TUDScript \@tempb{##1}}%
+        \addsec[{##1}]{\TUDScript ##1}%
         \tudhyperdef*{idx:changelog:##1}%
-        \def\@tempa{\indexname: \TUDScript \@tempb{##1}}%
+        \def\@tempa{\indexname: \TUDScript ##1}%
         \@mkboth{\@tempa}{\@tempa}%
       }%
     }{}{\tud at patch@wrn{theindex}}%
@@ -4422,7 +3979,7 @@
           \forlistloop\@tempa{\tud at templist}%
           \hline%
         \end{tabular}%
-      }[#2]%
+      }[{#2}]%
       \ignorespaces%
     }%
   \fi%
@@ -4436,11 +3993,11 @@
 % Handbuch erläutert werden.
 %
 % Das Paket \pkg{enumitem} erlaubt das Beeinflussen der Standardlisten und die 
-% Ableitung neuer Listen aus diesen. Mit \cs{setlist\{noitemsep\}} werden die 
+% Ableitung neuer Listen aus diesen. Mit \cs{setlist}|{noitemsep}| werden die 
 % zusätzlichen Zwischenräume innerhalb der Listen beseitigt. Weiterhin wird 
 % linksbündiger Flattersatz für die Standardlisten aktiviert.
 %    \begin{macrocode}
-\RequirePackage{enumitem}[2011/09/28]
+\RequirePackage{enumitem}
 \setlist{before*={\endgraf\tud at RaggedRight},partopsep=0pt,noitemsep}
 %    \end{macrocode}
 % \begin{macro}{\stditem}
@@ -4462,7 +4019,7 @@
 % Damit die Änderungsnotizen in der passenden vertikalen Position erscheinen, 
 % wird die Länge \cs{changedatskip} entsprechend angepasst.
 %    \begin{macrocode}
-    \setlength\changedatskip{-\baselineskip}%
+    \tud at setdim\changedatskip{-1\baselineskip}%
   }{}%
 }
 %    \end{macrocode}
@@ -4486,7 +4043,7 @@
 \newcommand*\tud at values{}
 \NewDocumentEnvironment{values}{mo}{%
   \def\tud at values{#1}%
-  \IfValueTF{#2}{\@values[#2]}{\@values}%
+  \IfValueTF{#2}{\@values[{#2}]}{\@values}%
 }{%
   \end at values%
 }
@@ -4503,7 +4060,7 @@
 % \begin{macro}{\tud at item@values}
 % \begin{macro}{\forslashlist}
 % Das Makro \cs{tud at item@values} ersetzt in der Umgebung \env{values} die 
-% originale Definiton von \cs{item}. Die Sternversion kann dabei verwendet 
+% originale Definition von \cs{item}. Die Sternversion kann dabei verwendet 
 % werden, um die Einstellung für den Säumniswert hervorzuheben. Im ersten 
 % optionalen Argument können die möglichen Werte einer Option oder eines 
 % Parameters angegeben werden. Sind mehrere Werte gleichbedeutende Werte
@@ -4615,7 +4172,7 @@
 % angehängt und als einziges optionales Argument an \cs{item} übergeben.
 %    \begin{macrocode}
   \protected at edef\@tempa{#2\IfValueT{#3}{/#3}}%
-  \eaddto at hook\toks@{\expandafter[\@tempa]}%
+  \addto at hook@expandafter\toks@{\expandafter[\@tempa]}%
   \IfValueT{#4}{\addto at hook\toks@{[#4]}}%
   \IfValueT{#5}{\addto at hook\toks@{(#5)}}%
   \the\toks@%
@@ -4700,9 +4257,9 @@
 % werden. Dabei ist das zu übergebende Argument die Anzahl der zu erzeugenden, 
 % linksbündigen Spalten.
 %    \begin{macrocode}
-\newlength\tempdim
+\tud at newglue\tempdim
 \newsavebox\tabularm at box
-\newlength\tabularm at wd
+\tud at newdim\tabularm at wd
 \newcommand*\tabularm at num{1}
 \NewEnviron{tabularm}[1]{%
   \begin{lrbox}{\tabularm at box}%
@@ -4709,7 +4266,7 @@
     \let\allcolumnpar\@gobble%
     \begin{tabular}{*{#1}l}\BODY\end{tabular}%
   \end{lrbox}%
-  \setlength\tabularm at wd{\wd\tabularm at box}%
+  \tud at setdim\tabularm at wd{\wd\tabularm at box}%
   \def\tabularm at num{#1}%
   \let\allcolumnpar\tabularm at allcolumnpar%
   \begin{tabular}{*{#1}l}\BODY\end{tabular}%
@@ -4730,7 +4287,7 @@
 % Mit Hilfe von \pkg{tabularx} können Tabellen bestimmter Breite und
 % automatisch berechneten Spaltenbreiten gesetzt werden.
 %    \begin{macrocode}
-\RequirePackage{tabularx}[1999/01/07]
+\RequirePackage{tabularx}
 %    \end{macrocode}
 % \begin{macro}{\TermTable}
 % \begin{macro}{\Term at Table}
@@ -4749,11 +4306,11 @@
   \vskip\medskipamount%
   \@afterindentfalse\@afterheading%
   \IfBooleanTF{#1}{%
-    \IfValueTF{#3}{\setlength\@tempdima{#3}}{\setlength\@tempdima{\linewidth}}%
-    \setlength\@tempdimc{-.7\baselineskip}%
+    \tud at setdim\@tempdima{\IfValueTF{#3}{#3}{\linewidth}}%
+    \tud at setdim\@tempdimc{-.7\baselineskip}%
     \begin{tabularx}{\@tempdima}{lXX}\Term at Table\end{tabularx}%
   }{%
-    \setlength\@tempdimc{\z@}%
+    \tud at setdim\@tempdimc{\z@}%
     \begin{tabular}{lll}\Term at Table\end{tabular}%
   }%
   \par\addvspace{\medskipamount}%
@@ -4767,9 +4324,9 @@
 }
 \newcommand*\Term@@Table[1]{%
   \Term{#1}'none' & % 
-  \ifstr{\csuse{#1}}{}{\PName{leer}}{\csuse{#1}} & %
+  \tud at if@strempty{\csuse{#1}}{\PName{leer}}{\csuse{#1}} & %
   \selectlanguage{english}\vspace*{\@tempdimc}%
-  \ifstr{\csuse{#1}}{}{\PName{empty}}{\csuse{#1}}\tabularnewline%
+  \tud at if@strempty{\csuse{#1}}{\PName{empty}}{\csuse{#1}}\tabularnewline%
 }
 %    \end{macrocode}
 % \end{macro}^^A \Term@@Table
@@ -4833,17 +4390,14 @@
 % genutzt. Für dieses wird eine eigene Stildatei verwendet, welche zur Laufzeit 
 % erzeugt wofür zuerst ein Ausgabestream reserviert wird.
 %    \begin{macrocode}
-\newcommand*\tud at write@a{}
-\newwrite\tud at write@a
+\tud at newwrite\tud at write@a
 %    \end{macrocode}
 % Für die Tutorials werden später zusätzlich noch ein weiterer Ausgabe- sowie 
 % ein Eingabestream benötigt, die hier gleich mit initialisiert werden.
 %    \begin{macrocode}
 %<*package>
-\newcommand*\tud at write@b{}
-\newwrite\tud at write@b
-\newcommand*\tud at read{}
-\newread\tud at read
+\tud at newwrite\tud at write@b
+\tud at newread\tud at read
 %</package>
 %    \end{macrocode}
 % \end{macro}^^A \tud at read
@@ -4856,9 +4410,9 @@
 % bessere Verständnis des Anwenders angegeben. Um diese darzustellen wird das 
 % Paket \pkg{listings} verwendet.
 %    \begin{macrocode}
-\RequirePackage{listings}[2014/03/04]
+\RequirePackage{listings}
 \lstdefinestyle{tudscr}{%
-  basicstyle=\ttfamily\ifdef{\setstretch}{\setstretch{1}}{},%
+  basicstyle=\ttfamily\ifundef{\setstretch}{}{\setstretch{1}},%
   keywordstyle=,%
   columns=fullflexible,keepspaces,%
   aboveskip=\smallskipamount,%
@@ -4902,12 +4456,12 @@
 % Das Paket \pkg{filemod} wird genutzt, um externer Dateien nur zu kompilieren,
 % wenn dies aufgrund einer Änderung auch notwendig ist.
 %    \begin{macrocode}
-\RequirePackage{filemod}[2011/09/19]
+\RequirePackage{filemod}
 %    \end{macrocode}
 % Um \cs{ShellEscape} sowohl für Windows als auch für unixoide Betriebssysteme 
 % nutzen zu können, wird das Paket \pkg{ifplatform} geladen.
 %    \begin{macrocode}
-\RequirePackage{ifplatform}[2010/10/22]
+\RequirePackage{ifplatform}
 %    \end{macrocode}
 % \begin{macro}{\tud at shellescape@wrn}
 % \changes{v2.02}{2014/10/14}{neu}^^A
@@ -4920,7 +4474,7 @@
   \ClassWarning{tudscrmanual}%
 %</class>
 %<*package>
-  \PackageWarning{tudscrtutorial}%
+  \PackageWarning{tudscrmanual}%
 %</package>
   {%
     File `#1' is missing!\MessageBreak%
@@ -5145,10 +4699,10 @@
 % sortieren zu können.
 %    \begin{macrocode}
 \newcommand*\tud at tut@append[1]{%
-  \ifstr{#1}{preamble}{%
+  \tud at if@strequal{#1}{preamble}{%
     \tud at tut@readtostream{\tud at tut@temp.tex}{\tud at write@a}%
   }{%
-    \ifstr{#1}{trunk}{%
+    \tud at if@strequal{#1}{trunk}{%
       \tud at tut@readtostream{\tud at tut@temp.tex}{\tud at write@b}%
     }{%
       \tud at tut@readtostream{\tud at tut@temp.tex}{#1}%
@@ -5170,7 +4724,7 @@
 % und sinnvollen Paketen an. Diese sollten direkt nach \cs{StartTutorial} in 
 % der \env{Preamble}-Umgebung angegeben werden.
 %    \begin{macrocode}
-\TUDoptions{headingsvskip=-10ex}
+\TUDoptions{headingsvskip=-6ex}
 \newcommand\StartTutorial[1][]{%
   \immediate\openout\tud at write@a=\tud at tut@temp-preamble.tex\relax%
   \immediate\openout\tud at write@b=\tud at tut@temp-trunk.tex\relax%
@@ -5178,7 +4732,7 @@
   \Hy at raisedlink{\hyperdef{\jobname}{tutorials:\jobname}{}}%
   \faculty{}%
   \maketitle%
-  \ifblank{#1}{}{%
+  \IfArgIsEmpty{#1}{}{%
     \noindent%
     \begin{abstract}%
     \noindent#1%
@@ -5531,8 +5085,8 @@
 % Text vorangestellt werden kann.
 %    \begin{macrocode}
   \@tempa{\Code at Preamble}{}%
-  \setlength\@tempdimc{\leftskip}%
-  \setlength\leftskip{\leftmargin}%
+  \tud at setdim\@tempdimc{\leftskip}%
+  \tud at setdim\leftskip{\leftmargin}%
 %    \end{macrocode}
 % Durch die zweimalige Verwendung von \file{\string\tud at tut@temp.tex}~-- einmal 
 % direkt und einmal innerhalb einer Box~-- können darin verwendete Befehle wie
@@ -5542,7 +5096,7 @@
 %    \begin{macrocode}
   \@tempa{\input{\tud at tut@temp.tex}}{\Code at Hook}%
   \global\let\Code at Hook\relax%
-  \setlength\leftskip{\@tempdimc}%
+  \tud at setdim\leftskip{\@tempdimc}%
   \noindent\ignorespaces%
 }
 %    \end{macrocode}
@@ -5598,7 +5152,7 @@
 % und der Inhalt von \file{\string\tud at tut@temp.tex} wie gewünscht eingebunden
 % und kompiliert. Damit die so erstellte PDF-Datei mit \cs{IncludeStandalone}
 % im weiteren Verlauf in das Tutorial eingebunden werden kann, wird diese 
-% außerdem noch in \cs{\meta{Argument}-temp.pdf} umbenannt. Das Makro
+% außerdem noch in \file{\meta{Argument}-temp.pdf} umbenannt. Das Makro
 % \cs{StandaloneDate} wird auf das Datum der Master-Datei gesetzt, damit das
 % voreingestellte Datum der erzeugten Datei angepasst werden kann.
 %    \begin{macrocode}
@@ -5612,7 +5166,7 @@
         \ifx\@tempa\@tempb\relax%
           \let\@tempb\@empty%
         \else%
-          \edef\@tempb{\etex at unexpanded{\def\StandaloneDate}{\@date}}%
+          \edef\@tempb{\unexpanded{\def\StandaloneDate}{\@date}}%
         \fi%
         \edef\@tempa{%
           \tud at latex@ext -jobname=\tud at tut@temp\space%
@@ -5648,11 +5202,11 @@
     \@tempcnta\z@%
     \@for\@tempa:=#3\do{\advance\@tempcnta\@ne}%
     \ifnum\@tempcnta>\z@\relax%
-      \setlength\@tempdima{\textwidth}%
+      \tud at setdim\@tempdima{\textwidth}%
       \divide\@tempdima\@tempcnta%
       \advance\@tempcnta\m at ne%
       \multiply\@tempcnta 2%
-      \addtolength\@tempdima{-\@tempcnta\tabcolsep}%
+      \tud at addtodim\@tempdima{-\@tempcnta\tabcolsep}%
       \@for\@tempa:=#3\do{%
         \advance\@tempcnta\m at ne%
         \edef\@tempb{%
@@ -5693,7 +5247,7 @@
   \else%
     \PassOptionsToPackage{off}{auto-pst-pdf}%
   \fi%
-  \RequirePackage{auto-pst-pdf}[2009/04/26]%
+  \RequirePackage{auto-pst-pdf}
 %    \end{macrocode}
 % Nach dem Paket \pkg{auto-pst-pdf} seine Arbeit verrichtet hat, werden alle 
 % etwaigen temporär erzeugten Dateien radikal gelöscht.
@@ -5720,10 +5274,10 @@
 }{%
   \PassOptionsToPackage{colorinlistoftodos,color=HKS92!10}{todonotes}%
 }
-\RequirePackage{todonotes}[2012/07/25]
+\RequirePackage{todonotes}
 \AtEndPreamble{%
   \ifdim\marginparwidth<2cm\relax%
-    \setlength\marginparwidth{2cm}%
+    \tud at setdim\marginparwidth{2cm}%
   \fi%
 }
 %    \end{macrocode}
@@ -5745,7 +5299,7 @@
 % Diese Option ist verantwortlich für den Schalter \cs{if at tud@todo}. Über 
 % diesen wird gesteuert, ob ToDo-Notizen ausgegeben werden sollen.
 %    \begin{macrocode}
-\newif\if at tud@todo
+\tud at newif\if at tud@todo
 \newcommand*\tud at todo@type at pos{}
 \let\tud at todo@type at pos\relax
 \newcommand*\tud at todo@type at neg{}
@@ -5768,7 +5322,7 @@
 % vor dem eigentlichen Typen verwendet werden muss.
 %    \begin{macrocode}
     \def\@tempa not##1##2##3##4\@nil{%
-      \ifstr{##1##2##3}{not}{%
+      \tud at if@strequal{##1##2##3}{not}{%
         \IfArgIsEmpty{##4}{}{%
           \listeadd\tud at todo@type at neg{##4}%
           \@tud at todotrue%
@@ -5819,7 +5373,7 @@
 % \cs{@currentHref} gesichert und am Ende wiederhergestellt.
 %    \begin{macrocode}
   \NewDocumentCommand\ToDo{s o m !o}{%
-    \ifbool{@tud at todo}{%
+    \if at tud@todo%
       \global\let\tud at currentHref\@currentHref%
       \begingroup%
 %    \end{macrocode}
@@ -5910,7 +5464,7 @@
                 \tud at v@get\tud at res@a{#4}%
                 \def\tud at res@c##1.##2##3##4\@nil{##1##2##3}%
                 \edef\tud at res@b{\expandafter\tud at res@c\tud at res@a.000\@nil}%
-                \ifnumber{\tud at res@b}{%
+                \Ifnumber{\tud at res@b}{%
                   \edef\tud at res@c{%
                     \expandafter\tud at res@c\TUDScriptVersionNumber.000\@nil%
                   }%
@@ -5959,11 +5513,11 @@
 % Andernfalls erscheint im Rand die Anmerkung \emph{ToDo}.
 %    \begin{macrocode}
           \renewcommand*\marginpar[2][]{%
-            \marginnote[##1]{##2}[\dimexpr-\ht\z at +1.6ex+1.75pt\relax]%
+            \marginnote[{##1}]{##2}[\dimexpr-\ht\z at +1.6ex+1.75pt\relax]%
           }%
           \toks@\expandafter{\tud at res@a noline,nolist}%
           \settowidth\marginparwidth{\tud at res@c}%
-          \addtolength\marginparwidth{\dimexpr1.6ex+1pt\relax}%
+          \tud at addtodim\marginparwidth{1.6ex+1pt}%
           \expandafter\todo\expandafter[\the\toks@]{\tud at res@c\strut}%
           \aftergroup\par\aftergroup\noindent%
 %    \end{macrocode}
@@ -5976,9 +5530,7 @@
           \ifx\tud at todo@type at use\@empty\else%
             \begingroup%
               \let\tud at res@c\@empty%
-              \renewcommand*{\do}[1]{%
-                \appto\tud at res@c{,##1}%
-              }%
+              \def\do##1{\appto\tud at res@c{,##1}}%
               \dolistloop{\tud at todo@type at use}%
               \edef\tud at res@c{%
                 \endgroup%
@@ -5992,7 +5544,7 @@
         \fi%
       \endgroup%
       \global\let\@currentHref\tud at currentHref%
-    }{}%
+    \fi%
     \ignorespaces%
   }%
 %    \end{macrocode}
@@ -6014,52 +5566,35 @@
 % \end{macro}^^A \tud at todo@type at use
 % \end{macro}^^A \ToDo
 %
-% \iffalse
-%</body>
-%</!doc>
-% \fi
-%
 % \subsection{Verschiedenes für die Dokumentationsklassen und -pakete}
 %
-% Sowohl für die Klasse \cls{tudscrmanual} als auch \cls{tudscrdoc} werden ein 
-% paar Befehle zur komfortablen Verwendung im Fließtext definiert. Außerdem 
-% erfolgen mittels einiger Pakete verschiedene Formateinstellungen.
+% Für die Klasse \cls{tudscrmanual} werden ein paar Befehle zur komfortablen 
+% Verwendung im Fließtext definiert. Außerdem erfolgen mittels einiger Pakete 
+% verschiedene Formateinstellungen.
 %
 % \subsubsection{Ergänzend geladene Pakete}
 %
-% Sprachabhängiges Setzen von Anführungszeichen. Das Laden des Paketes darf 
-% erst nach \pkg{inputenc} oder \pkg{inputenx} erfolgen.
-%    \begin{macrocode}
-%<*body|class&doc>
-\RequirePackage{csquotes}[2011/10/22]
-%</body|class&doc>
-%    \end{macrocode}
-%
-% \iffalse
-%<*body>
-% \fi
-%
 % Für den Fließtext werden Pfeile u.\,ä. durch \pkg{textcomp} bereitgestellt.
 %    \begin{macrocode}
-\RequirePackage{textcomp}[2005/09/27]
+\RequirePackage{textcomp}
 %    \end{macrocode}
 % Vergrößerung des Durchschusses.
 %    \begin{macrocode}
-\RequirePackage{setspace}[2011/12/19]
+\RequirePackage{setspace}
 \setstretch{1.1}
 %    \end{macrocode}
 % Verbesserte Zitate.
 %    \begin{macrocode}
 \PassOptionsToPackage{vskip=\smallskipamount}{quoting}
-\RequirePackage{quoting}[2014/01/28]
+\RequirePackage{quoting}
 %    \end{macrocode}
 % Automatisierte Datumsformatierung.
 %    \begin{macrocode}
-\RequirePackage{isodate}[2010/01/03]
+\RequirePackage{isodate}
 %    \end{macrocode}
 % Verschiedenste Symbole aus dem \LaTeX-Universum.
 %    \begin{macrocode}
-\RequirePackage{hologo}[2012/04/26]
+\RequirePackage{hologo}
 %    \end{macrocode}
 %
 % \iffalse
@@ -6069,7 +5604,7 @@
 % Mit dem Paket \pkg{ragged2e} wird~-- falls benötigt~-- die Silbentrennung im 
 % Flattersatz aktiviert. 
 %    \begin{macrocode}
-\RequirePackage{ragged2e}[2009/05/21]
+\RequirePackage{ragged2e}
 %    \end{macrocode}
 % Die Fußnoten werden nicht mit jedem Kapitel zurückgesetzt\dots
 %    \begin{macrocode}
@@ -6081,12 +5616,12 @@
 %    \end{macrocode}
 % Das Paket wird für die Erstellung von Tabellen verwendet.
 %    \begin{macrocode}
-\RequirePackage{booktabs}[2005/04/14]
+\RequirePackage{booktabs}
 %    \end{macrocode}
 % Die Formatierung von Gleitobjekten.
 %    \begin{macrocode}
-\RequirePackage{caption}[2015/09/17]
-\RequirePackage{floatrow}[2008/08/02]
+\RequirePackage{caption}
+\RequirePackage{floatrow}
 \DeclareCaptionSubType[alph]{figure}
 \DeclareCaptionSubType[alph]{table}
 \captionsetup{font=sf,labelfont=bf,labelsep=space}
@@ -6097,20 +5632,20 @@
 %    \end{macrocode}
 % Erstellen von Grafiken.
 %    \begin{macrocode}
-\RequirePackage{tikz}[2013/12/13]
+\RequirePackage{tikz}
 %    \end{macrocode}
 % Einbinden von ganzseitigen PDF"~Dokumenten als Beispiel im Handbuch.
 %    \begin{macrocode}
-\RequirePackage{pdfpages}[2013/08/25]
+\RequirePackage{pdfpages}
 %    \end{macrocode}
 % Typographisch saubere Einheiten.
 %    \begin{macrocode}
-\RequirePackage{units}[1998/08/04]
+\RequirePackage{units}
 %    \end{macrocode}
 % Das Paket \pkg{ellipsis} sorgt für korrekte Auslassungpunkte.
 %    \begin{macrocode}
 \AtEndPreamble{%
-  \RequirePackage{ellipsis}[2004/9/28]%
+  \RequirePackage{ellipsis}
   \let\ellipsispunctuation\relax%
 }
 %    \end{macrocode}
@@ -6117,94 +5652,10 @@
 %
 % \iffalse
 %</class>
-%</body>
-%<*body|class&doc>
 % \fi
 %
-% \subsubsection{Gezieltes Ersetzen von Inhalten in Strings}
-%
-% \begin{macro}{\tud at replace}
-% \changes{v2.05}{2015/11/01}{neu}^^A
-% Mit diesem Befehl kann in einem gegebenen Makro ein bestimmtes Zeichen durch 
-% ein anderes ersetzt werden. Dies wird verwendet, um für Indexbefehle oder 
-% Labels die möglicherweise enthaltenen |@|"~Zeichen zu ersetzen.
-%    \begin{macrocode}
-\newcommand*\tud at replace[3]{%
-  \begingroup%
-%    \end{macrocode}
-% Zunächst wird \cs{@tempa} als ein durch \cs{@nil} abgegrenztes Makro mit 
-% zwei Argumenten definiert, wobei diese durch das im zweiten Argument gegebene 
-% \meta{Zeichen} voneinander abgegrenzt werden. Mit diese beiden Argumente wird
-% das Makro \cs{@tempb} aufgerufen. 
-%    \begin{macrocode}
-    \toks@{\def\@tempa##1}%
-    \eaddto at hook\toks@{\detokenize{#2}}%
-    \addto at hook\toks@{##2\@nil{\@tempb{##1}{##2}}}%
-%    \end{macrocode}
-% Der Inhalt von \cs{toks@} ist
-% \cs{def}\cs{@tempa\#1\meta{Zeichen}\#2}\cs{@nil\{\cs{@tempb\{\#1\}\{\#2\}}\}}
-% und definiert \cs{@tempa}.
-%    \begin{macrocode}
-    \the\toks@%
-%    \end{macrocode}
-% Nun wird \cs{@tempb} definiert. Dieses Makro fügt dem Zielmakro das erste
-% Argumente gefolgt von \meta{Ersatzzeichen} hinzu. Mit dem zweiten Argument
-% wird anschließend \cs{@tempa\#\#2}\cs{@nil} so lange rekursiv aufgerufen, bis
-% es wirklich leer ist, wodurch das zweite Argument \meta{Zeichen} sukzessive 
-% durch das dritte Argument \meta{Ersatzzeichen} ersetzt wird.
-%    \begin{macrocode}
-    \def\@tempb##1##2{%
-      \IfArgIsEmpty{##2}{%
-        \appto#1{##1}%
-        \let\@tempc\relax%
-      }{%
-        \appto#1{##1#3}%
-        \def\@tempc{\@tempa##2\@nil}%
-      }%
-      \@tempc%
-    }%
-%    \end{macrocode}
-% Nachdem die beiden notwendigen Makros definiert wurden, erfolgt jetzt die 
-% eigentliche Ersetzung. Dafür wird der Inhalt des Zielmakros als Argument für 
-% \cs{@tempa} verwendet. Diesem wird das zu ersetzende Zeichen gefolgt von
-% \cs{@nil} hinzugefügt, um das Argument abschließend zu begrenzen.
-%    \begin{macrocode}
-    \toks@{\@tempa}%
-    \edef\@tempc{\expandafter\detokenize\expandafter{#1}}%
-    \eaddto at hook\toks@{\@tempc}%
-    \eaddto at hook\toks@{\detokenize{#2}\@nil}%
-%    \end{macrocode}
-% Der Inhalt von \cs{toks@} hat die Form \cs{@tempa\#1\meta{Zeichen}}\cs{@nil},
-% wobei der Inhalt von \meta{\#1} expandiert wird.
-%    \begin{macrocode}
-    \def#1{}%
-    \the\toks@%
-    \edef\tud at reserved{%
-      \noexpand\endgroup%
-      \def\noexpand#1{#1}%
-    }%
-  \tud at reserved%
-}
-%    \end{macrocode}
-% \end{macro}^^A \tud at replace
-%
-% \iffalse
-%</body|class&doc>
-%<*body>
-% \fi
-%
-%
 % \subsubsection{Zusätzliche Markup-Befehle}
 %
-% \begin{macro}{\Attention}
-% \changes{v2.02}{2014/08/16}{neu}^^A
-% \begin{macro}{\Forum}
-% \begin{macro}{\CTAN}
-% \changes{v2.05}{2015/11/22}{neu}^^A
-% \begin{macro}{\GitHubRepo}
-% \changes{v2.02}{2014/08/16}{neu}^^A
-% \begin{macro}{\Download}
-% \changes{v2.05g}{2016/11/08}{neu}^^A
 % \begin{macro}{\notudscrartcl}
 % \begin{macro}{\scrguide}
 % \changes{v2.02}{2014/09/04}{neu}^^A
@@ -6211,46 +5662,10 @@
 % \changes{v2.05}{2015/07/23}{Hyperlinktext über optionales Argument}^^A
 % Für die Anwenderdokumentation werden weitere Auszeichnungsbefehle definiert.
 %    \begin{macrocode}
-\newcommand*\Attention[2][\z@]{%
-  \marginnote{%
-    \setlength\fboxsep{0.25em}%
-    \fbox{Achtung!}%
-  }[#1]%
-  \emph{\trim at spaces{#2}}%
-}
-\NewDocumentCommand\Forum{!s !t'}{%
-  \IfBooleanTF{#1}{\toks@{\href}}{\toks@{\hrfn}}%
-  \IfBooleanT{#2}{\toks@{\url}}%
-  \addto at hook\toks@{{http://latex.wcms-file3.tu-dresden.de/phpBB3/}}%
-  \IfBooleanF{#2}{\addto at hook\toks@{{TUD-\LaTeX-Forum}}}%
-  \the\toks@\xspace%
-}
-\NewDocumentCommand\CTAN{!s !o !g}{%
-  \IfBooleanTF{#1}{\toks@{\href}}{\toks@{\hrfn}}%
-  \addto at hook\toks@{{http://www.ctan.org/\IfValueT{#2}{#2}}}%
-  \addto at hook\toks@{%
-    {\tud at english{Comprehensive TeX Archive Network (CTAN\IfValueT{#3}{~#3})}}%
-  }%
-  \the\toks@\xspace%
-}
-%<*class>
-\NewDocumentCommand\GitHubRepo{!s !t' !O{releases}}{%
-  \IfBooleanTF{#1}{\toks@{\href}}{\toks@{\hrfn}}%
-  \IfBooleanT{#2}{\toks@{\url}}%
-  \addto at hook\toks@{{https://github.com/tud-cd/tudscr/#3}}%
-  \IfBooleanF{#2}{%
-    \addto at hook\toks@{{\tud at english{GitHub-Repository~\Distribution*{tudscr}}}}%
-  }%
-  \the\toks@\xspace%
-}
-\newcommand*\Download[1]{%
-  https://github.com/tud-cd/tudscr/releases/download/#1%
-}
 \newcommand*\notudscrartcl{%
   F\"ur die Klassen \Class{tudscrartcl} sowie \Class{tudscrposter} ist diese 
   Option nicht verf\"ugbar.%
 }
-%</class>
 \NewDocumentCommand\scrguide{!s !O{\KOMAScript-Handbuch}}{%
   \IfBooleanTF{#1}{\toks@{\href}}{\toks@{\hrfn}}%
   \addto at hook\toks@{%
@@ -6262,119 +5677,11 @@
 %    \end{macrocode}
 % \end{macro}^^A \scrguide
 % \end{macro}^^A \notudscrartcl
-% \end{macro}^^A \Download
-% \end{macro}^^A \GitHubRepo
-% \end{macro}^^A \CTAN
-% \end{macro}^^A \Forum
-% \end{macro}^^A \Attention
 %
 % \iffalse
 %</body>
-%<*body|class&doc>
 % \fi
 %
-% \begin{macro}{\CD}
-% \begin{macro}{\CDs}
-% \begin{macro}{\TUD}
-% \begin{macro}{\TnUD}
-% \begin{macro}{\TUDCD}
-% \changes{v2.05}{2015/11/01}{neu}^^A
-% \begin{macro}{\TUDCDs}
-% \changes{v2.05}{2015/11/01}{neu}^^A
-% \begin{macro}{\DDC}
-% Diese Befehle stellen regelmäßig in der Quelltextdokumentatuion und im 
-% Handbuch genutzte Textbausteine bereit. Dazu wird der Befehl \cs{xspace} aus 
-% dem \pkg{xspace}-Paket genutzt.
-%    \begin{macrocode}
-\newcommand*\CD{\tud at english{Corporate Design}\xspace}
-\newcommand*\CDs{\tud at english{Corporate Designs}\xspace}
-\newcommand*\TUD{Technische Universit\"at Dresden\xspace}
-\newcommand*\TnUD{Technischen Universit\"at Dresden\xspace}
-\newcommand*\TUDCD{\CD der \TnUD}
-\newcommand*\TUDCDs{\CDs der \TnUD}
-\newrobustcmd*\DDC{%
-  \mbox{%
-    D\kern.05em R\kern.05em E\kern.05em S\kern.05em %
-    D\kern.05em E\kern.05em N\kern.1em-\kern.1em concept%
-  }\xspace%
-}
-\AfterPackage*{hyperref}{%
-  \pdfstringdefDisableCommands{%
-    \def\DDC{DRESDEN-concept}%
-    \def\TUDScript{TUD-Script}%
-    \def\KOMAScript{KOMA-Script}%
-  }%
-}
-%    \end{macrocode}
-% \end{macro}^^A \DDC
-% \end{macro}^^A \TUDCDs
-% \end{macro}^^A \TUDCD
-% \end{macro}^^A \TnUD
-% \end{macro}^^A \TUD
-% \end{macro}^^A \CDs
-% \end{macro}^^A \CD
-% \begin{macro}{\OpenSans}
-% \changes{v2.06}{2018/07/02}{neu}^^A
-% \begin{macro}{\tud at cdfont@texteb}
-% \changes{v2.06}{2018/08/31}{neu}^^A
-% \begin{macro}{\Univers}
-% \begin{macro}{\DIN}
-% Für die Nennung der Schriften spezielle Markos bereitgestellt.
-%    \begin{macrocode}
-\DeclareTextFontCommand\tud at cdfont@texteb{%
-  \fontfamily{\tud at cdfont@fam}\fontseries{\tud at cdfont@ebf}\selectfont%
-}
-\newrobustcmd*\OpenSans{%
-  \texorpdfstring{\tud at cdfont@texteb{Open~Sans}}{Open Sans}\xspace%
-}
-\newrobustcmd*\Univers{\texorpdfstring{\textcdbi{Univers}}{Univers}\xspace}
-\newrobustcmd*\DIN{\texorpdfstring{\textcdxi{DIN~Bold}}{DIN Bold}\xspace}
-%    \end{macrocode}
-% \end{macro}^^A \DIN
-% \end{macro}^^A \Univers
-% \end{macro}^^A \tud at cdfont@texteb
-% \end{macro}^^A \OpenSans
-% \begin{macro}{\@pnumwidth}
-% \begin{macro}{\@tocrmarg}
-% Für das Inhaltsverzeichnis werden die beiden Längen angepasst.
-%    \begin{macrocode}
-\renewcommand*\@pnumwidth{2.1em}%
-\renewcommand*\@tocrmarg{3.1em}%
-%    \end{macrocode}
-% \end{macro}^^A \@tocrmarg
-% \end{macro}^^A \@pnumwidth
+% \PrintBackMatter
 %
-% \iffalse
-%</body|class&doc>
-%<*body>
-% \fi
-%
-% \begin{macro}{\textsbn}
-% \changes{v2.02}{2014/08/16}{neu}^^A
-% \begin{macro}{\sbnfont}
-% \changes{v2.02}{2014/08/16}{neu}^^A
-% \begin{macro}{\textsbs}
-% \changes{v2.02}{2014/08/16}{neu}^^A
-% \begin{macro}{\sbsfont}
-% \changes{v2.02}{2014/08/16}{neu}^^A
-% Für die Anwenderdokumentation werden weitere Auszeichnungsbefehle definiert.
-%    \begin{macrocode}
-\newcommand*\textsbn{}
-\newrobustcmd*\sbnfont{\sffamily\bfseries\upshape}
-\DeclareTextFontCommand\textsbn{\sbnfont}
-\newcommand*\textsbs{}
-\newrobustcmd*\sbsfont{\sffamily\bfseries\slshape}
-\DeclareTextFontCommand\textsbs{\sbsfont}
-%    \end{macrocode}
-% \end{macro}^^A \sbsfont
-% \end{macro}^^A \textsbs
-% \end{macro}^^A \sbnfont
-% \end{macro}^^A \textsbn
-%
-% \iffalse
-%</body>
-% \fi
-%
-% \Finale
-%
 \endinput

Modified: trunk/Master/texmf-dist/source/latex/tudscr/tudscr-mathswap.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tudscr/tudscr-mathswap.dtx	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/source/latex/tudscr/tudscr-mathswap.dtx	2022-08-09 20:01:54 UTC (rev 64085)
@@ -1,10 +1,10 @@
-% \CheckSum{149}
 % \iffalse meta-comment
+%/GitFileInfo=tudscr-mathswap.dtx
 %
 %  TUD-Script -- Corporate Design of Technische Universität Dresden
 % ----------------------------------------------------------------------------
 %
-%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2021
+%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2022
 %
 % ----------------------------------------------------------------------------
 %
@@ -23,47 +23,19 @@
 %
 % \fi
 %
-% \CharacterTable
-%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-%   Digits        \0\1\2\3\4\5\6\7\8\9
-%   Exclamation   \!     Double quote  \"     Hash (number) \#
-%   Dollar        \$     Percent       \%     Ampersand     \&
-%   Acute accent  \'     Left paren    \(     Right paren   \)
-%   Asterisk      \*     Plus          \+     Comma         \,
-%   Minus         \-     Point         \.     Solidus       \/
-%   Colon         \:     Semicolon     \;     Less than     \<
-%   Equals        \=     Greater than  \>     Question mark \?
-%   Commercial at \@     Left bracket  \[     Backslash     \\
-%   Right bracket \]     Circumflex    \^     Underscore    \_
-%   Grave accent  \`     Left brace    \{     Vertical bar  \|
-%   Right brace   \}     Tilde         \~}
-%
-% \iffalse
-%%% From File: tudscr-mathswap.dtx
+% \iffalse ins:batch + dtx:driver
+%<*ins>
+\ifx\documentclass\undefined
+  \input docstrip.tex
+  \ifToplevel{\batchinput{tudscr.ins}}
+\else
+  \let\endbatchfile\relax
+\fi
+\endbatchfile
+%</ins>
 %<*dtx>
-% \fi
-%
-\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
-\ProvidesFile{tudscr-mathswap.dtx}[2019/06/28 v2.06 TUD-Script\space%
-%
-% \iffalse
-%</dtx>
-%<package>\NeedsTeXFormat{LaTeX2e}
-%<package>\ProvidesPackage{mathswap}[%
-%<*package>
-%!TUD at Version
-%</package>
-%<package>  package
-%<*dtx|package>
-% \fi
-%
-  (swap mathematical separators)%
-]
-%
-% \iffalse
-%</dtx|package>
-%<*dtx>
+\ProvidesFile{tudscr-mathswap.dtx}[2022/08/09]
+\RequirePackage{tudscr-gitinfo}
 \documentclass[english,ngerman,xindy]{tudscrdoc}
 \iftutex
   \usepackage{fontspec}
@@ -73,18 +45,11 @@
 \fi
 \usepackage{babel}
 \usepackage{tudscrfonts}
-\KOMAoptions{parskip=half-}
-\usepackage{bookmark}
 \usepackage[babel]{microtype}
 
-\CodelineIndex
-\RecordChanges
-\GetFileInfo{tudscr-mathswap.dtx}
-\title{\file{\filename}}
-\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
-\date{\fileversion\nobreakspace(\filedate)}
-
+\GitHubBase{\TUDScriptRepository}
 \begin{document}
+  \author{Falk Hanisch\TUDScriptContactTitle}
   \maketitle
   \tableofcontents
   \DocInput{\filename}
@@ -92,31 +57,42 @@
 %</dtx>
 % \fi
 %
+%
+%
 % \selectlanguage{ngerman}
 %
 % \changes{v2.02}{2014/08/18}{\pkg{mathswap}: Schalter zum Aktivieren und
 %   Deaktivieren der Funktionalität}^^A
 %
+% \ToDo{Vergleich mit \pkg{ionumbers}, ist \pkg{mathswap} notwendig?}[v2.08]
+% \ToDo{eingenständiges Paket oder via AfterPackage{ionumbers}?}[v2.08]
+% \ToDo{Allgem. Bezeichnungen englisches/deutsches Format?}[v2.08]
+% \ToDo{Sprachabhängige Einstellungen in Paket und aus Klassen raus}[v2.08]
+% \ToDo{Makro(s)/Key-Value zum Festlegen von Eingabe- und Ausgabeformat}[v2.08]
+% \ToDo{Inhalte von \file{mathswap.tex} hier rein}[v2.08]
+%
+%
+%
 % \section{Das Paket \pkg{mathswap} -- Aktive Trennzeichen im Mathematikmodus}
 %
-% Die Verwendung von Dezimal- und Tausendertrennzeichen im mathematischen Satz 
-% sind regional sehr unterschiedlich. In den meisten englischsprachigen Ländern 
-% wird der Punkt als Dezimaltrennzeichen und das Komma zur Zifferngruppierung 
-% verwendet, im restlichen Europa wird dies genau entgegengesetzt praktiziert.
-% Dieses Paket soll dazu dienen, beliebige formatierte Zahlen in ihrer Ausgabe 
-% anzupassen. Dafür werden die Zeichen Punkt (~.~) und Komma (~,~) als aktive
-% Zeichen im Mathematikmodus definiert.
+% Die Verwendung von Dezimal- und Tausendertrennzeichen im mathematischen 
+% Satz sind regional sehr unterschiedlich. In den meisten englischsprachigen 
+% Ländern wird für gewöhnlich der Punkt als Dezimaltrennzeichen und das Komma 
+% zur Zifferngruppierung verwendet. In weiten Teilen Europas wird dies genau 
+% entgegengesetzt praktiziert. Dieses Paket soll dazu dienen, beliebige 
+% formatierte Zahlen in ihrer Ausgabe anzupassen. Dafür werden Punkt (~.~) 
+% und Komma (~,~) als aktive Zeichen im Mathematikmodus definiert.
 %
 % Ähnliche Funktionalitäten werden bereits durch die Pakete \pkg{icomma} und 
-% \pkg{ziffer} bereitgestellt. Bei \pkg{icomma} muss jedoch beim
-% Verfassen des Dokumentes durch den Autor beachtet werden, ob das verwendete
-% Komma einem Dezimaltrennzeichen entspricht ($t=1,\!2$) oder aber einem
-% normalen Komma im Mathematiksatz ($z=f(x,y)$), wo ein gewisser Abstand nach
-% dem Komma durchaus gewünscht ist. Das Paket \pkg{ziffer} liefert dafür die
+% \pkg{ziffer} bereitgestellt. Bei \pkg{icomma} muss jedoch beim Verfassen 
+% des Dokumentes durch den Autor beachtet werden, ob das verwendete Komma 
+% einem Dezimaltrennzeichen entspricht ($t=1,\!2$) oder aber einem normalen 
+% Komma im Mathematiksatz ($z=f(x,y)$), wo ein gewisser Abstand nach dem 
+% Komma durchaus gewünscht ist. Das Paket \pkg{ziffer} liefert dafür die 
 % gewünschte Funktionalität,\footnote{kein Leerraum nach Komma, wenn direkt
-% danach eine Ziffer folgt} ist allerdings etwas unflexibel, was den Umgang mit
-% den Trennzeichen anbelangt. Als Alternative zu diesem Paket kann außerdem 
-% \pkg{ionumbers} verwendet werden.
+% danach eine Ziffer folgt} ist allerdings etwas unflexibel, was den Umgang 
+% mit den Trennzeichen anbelangt. Als Alternative zu diesem Paket kann 
+% außerdem \pkg{ionumbers} verwendet werden.
 %
 % Das Paket \pkg{mathswap} sorgt dafür, dass Trennzeichen direkt vor einer 
 % Ziffer erkannt und nach bestimmten Vorgaben ersetzt werden. Sollte sich 
@@ -123,15 +99,16 @@
 % jedoch zwischen Trennzeichen und Ziffer Leerraum befinden, wird dieser als
 % solcher auch gesetzt.
 %
-% \ToDo{Vergleich mit \pkg{ionumbers}, ist \pkg{mathswap} notwendig?}[v2.??]
-% \ToDo{Als eingenständiges Paket herauslösen}[v2.??]
-% \ToDo{Allgem. Bezeichnungen englisches/deutsches Format?}[v2.??]
-% \ToDo{Sprachabhängige Einstellungen in Paket und aus Klassen raus}[v2.??]
-% \ToDo{Makro(s)/Key-Value zum Festlegen von Eingabe- und Ausgabeformat}[v2.??]
-% \ToDo{Inhalte von \file{mathswap.tex} hier rein}[v2.??]
+%    \begin{macrocode}
+%<*package>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{mathswap}[%
+%!TUD at Version
+  package (swap mathematical separators)%
+]
+%</package>
+%    \end{macrocode}
 %
-% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
-%
 % \iffalse
 %<*package>
 % \fi
@@ -143,8 +120,8 @@
 % Die beiden Befehle \cs{commaswap} und \cs{dotswap} sind die zentrale 
 % Benutzerschnittstelle des Paketes. Das Makro \cs{commaswap} definiert das 
 % Trennzeichen oder den Inhalt, wodurch ein Komma ersetzt werden soll, auf 
-% welches direkt danach eine Ziffer folgt. Normalerweise setzt \LaTeX{}
-% nach einem Komma im mathematischen Satz zusätzlich einen horizontalen Abstand.
+% welches direkt danach eine Ziffer folgt. Normalerweise setzt \LaTeX{} nach 
+% einem Komma im mathematischen Satz zusätzlich einen horizontalen Abstand.
 % Bei der Ersetzung durch \cs{commaswap} entfällt dieser. Die Voreinstellung
 % für \cs{commaswap} ist deshalb auf ein Komma (,) gesetzt.
 %
@@ -269,10 +246,10 @@
 %    \begin{macrocode}
 \newcommand*\ms at token{}
 \begingroup
-  \catcode`,=\active
-  \gdef,{\futurelet\ms at token\ms at smartcomma}
-  \catcode`.=\active
-  \gdef.{\futurelet\ms at token\ms at smartdot}
+  \catcode`,=\active%
+  \gdef,{\futurelet\ms at token\ms at smartcomma}%
+  \catcode`.=\active%
+  \gdef.{\futurelet\ms at token\ms at smartdot}%
 \endgroup
 \newcommand*\ms at smartcomma{\ms at ifnum{\ms at commaswap}{\ms at commachar}}
 \newcommand*\ms at smartdot{\ms at ifnum{\ms at dotswap}{\ms at dotchar}}
@@ -285,6 +262,6 @@
 %</package>
 % \fi
 %
-% \Finale
+% \PrintBackMatter
 %
 \endinput

Modified: trunk/Master/texmf-dist/source/latex/tudscr/tudscr-misc.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tudscr/tudscr-misc.dtx	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/source/latex/tudscr/tudscr-misc.dtx	2022-08-09 20:01:54 UTC (rev 64085)
@@ -1,10 +1,10 @@
-% \CheckSum{334}
 % \iffalse meta-comment
+%/GitFileInfo=tudscr-misc.dtx
 %
 %  TUD-Script -- Corporate Design of Technische Universität Dresden
 % ----------------------------------------------------------------------------
 %
-%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2021
+%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2022
 %
 % ----------------------------------------------------------------------------
 %
@@ -23,33 +23,19 @@
 %
 % \fi
 %
-% \CharacterTable
-%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-%   Digits        \0\1\2\3\4\5\6\7\8\9
-%   Exclamation   \!     Double quote  \"     Hash (number) \#
-%   Dollar        \$     Percent       \%     Ampersand     \&
-%   Acute accent  \'     Left paren    \(     Right paren   \)
-%   Asterisk      \*     Plus          \+     Comma         \,
-%   Minus         \-     Point         \.     Solidus       \/
-%   Colon         \:     Semicolon     \;     Less than     \<
-%   Equals        \=     Greater than  \>     Question mark \?
-%   Commercial at \@     Left bracket  \[     Backslash     \\
-%   Right bracket \]     Circumflex    \^     Underscore    \_
-%   Grave accent  \`     Left brace    \{     Vertical bar  \|
-%   Right brace   \}     Tilde         \~}
-%
-% \iffalse
-%%% From File: tudscr-misc.dtx
+% \iffalse ins:batch + dtx:driver
+%<*ins>
+\ifx\documentclass\undefined
+  \input docstrip.tex
+  \ifToplevel{\batchinput{tudscr.ins}}
+\else
+  \let\endbatchfile\relax
+\fi
+\endbatchfile
+%</ins>
 %<*dtx>
-% \fi
-%
-\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
-\ProvidesFile{tudscr-misc.dtx}[2021/07/06 v2.06m TUD-Script\space%
-  (miscellaneous)%
-]
-%
-% \iffalse
+\ProvidesFile{tudscr-misc.dtx}[2022/08/09]
+\RequirePackage{tudscr-gitinfo}
 \documentclass[english,ngerman,xindy]{tudscrdoc}
 \iftutex
   \usepackage{fontspec}
@@ -59,18 +45,11 @@
 \fi
 \usepackage{babel}
 \usepackage{tudscrfonts}
-\KOMAoptions{parskip=half-}
-\usepackage{bookmark}
 \usepackage[babel]{microtype}
 
-\CodelineIndex
-\RecordChanges
-\GetFileInfo{tudscr-misc.dtx}
-\title{\file{\filename}}
-\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
-\date{\fileversion\nobreakspace(\filedate)}
-
+\GitHubBase{\TUDScriptRepository}
 \begin{document}
+  \author{Falk Hanisch\TUDScriptContactTitle}
   \maketitle
   \tableofcontents
   \DocInput{\filename}
@@ -83,13 +62,14 @@
 % \changes{v2.02}{2014/06/23}{Paket \pkg{titlepage} nicht weiter unterstützt}^^A
 % \changes{v2.02}{2014/07/08}{\cs{FamilyKeyState} wird von Optionen genutzt}^^A
 %
+%
+%
 % \section{Verschiedenes für das \TUDScript-Bundle}
 %
 % Alles, wofür sich eine separate Datei nicht lohnt, landet hier.
 %
-% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
-%
 % \iffalse
+%<*!(manual|doc)>
 %<*class&option>
 % \fi
 %
@@ -101,7 +81,7 @@
 % genutzt werden, um zu steuern, ob für Titel und Inhaltsverzeichnis
 % automatisch ein Eintrag für die Sprungmarken erzeugt werden soll.
 %    \begin{macrocode}
-\newif\if at tud@bookmarks
+\tud at newif\if at tud@bookmarks
 \TUD at key{tudbookmarks}[true]{%
   \TUD at set@ifkey{tudbookmarks}{@tud at bookmarks}{#1}%
 }
@@ -123,15 +103,17 @@
 % Für die Titelseite werden~-- wie auch durch das Paket \pkg{hyperref}~-- die 
 % Fußnoten mit dem Befehl \cs{tud at x@hyperref at realfootnotes} auf den originalen 
 % Zustand zurückgesetzt.
+% \ToDo{nur als internen Befehl definieren, dazugehörige Option nötig?}[v2.07]
+% \ToDo{\cs{tud at x@hyperref at realfootnotes} prüfen}[v2.07]
 %    \begin{macrocode}
 \newcommand*\tudbookmark[1][]{\@gobbletwo}
 \newcommand*\tud at x@hyperref at realfootnotes{}
 \AfterPackage{hyperref}{%
-  \renewcommand*\tudbookmark[3][]{%
+  \renewcommand*\tudbookmark[3][0]{%
     \relax%
     \if at tud@bookmarks%
-      \phantomsection%
-      \ifblank{#1}{\pdfbookmark{#2}{#3}}{\pdfbookmark[#1]{#2}{#3}}%
+      \csuse{phantomsection}%
+      \pdfbookmark[{#1}]{#2}{#3}%
     \fi%
   }%
   \renewcommand*\tud at x@hyperref at realfootnotes{%
@@ -140,7 +122,6 @@
     \let\@footnotemark\H@@footnotemark%
     \let\@footnotetext\H@@footnotetext%
   }%
-  \pdfstringdefDisableCommands{\let\NoCaseChange\@firstofone}%
 }
 %    \end{macrocode}
 % \end{macro}^^A \tud at x@hyperref at realfootnotes
@@ -168,7 +149,7 @@
 % Titelseite PDF"=Lesezeichen bzw. Outline-Einträge erzeugt.
 %    \begin{macrocode}
 %<*book|report|article>
-\apptocmd{\titlepage}{%
+\apptocmd\titlepage{%
   \tud at x@bookmark at startatroot%
   \@tud at res@swafalse%
   \if at tud@coverpage\@tud at res@swatrue\fi%
@@ -189,7 +170,7 @@
 %    \end{macrocode}
 % Dies geschieht außerdem auch für die Titelköpfe.
 %    \begin{macrocode}
-\pretocmd{\tud at maketitle@inpage}{%
+\pretocmd\tud at maketitle@inpage{%
   \tud at x@bookmark at startatroot%
   \tudbookmark[%
 %<book|report>  0%
@@ -196,7 +177,7 @@
 %<article|poster>  1%
   ]{\titlename}{title}%
 }{}{\tud at patch@wrn{tud at maketitle@inpage}}
-\pretocmd{\@maketitle}{%
+\pretocmd\@maketitle{%
   \tud at x@bookmark at startatroot%
   \tudbookmark[%
 %<book|report>  0%
@@ -264,7 +245,7 @@
 %^^A% in den Überschriften Symbole für die Fußnoten anstelle von Zahlen 
 %^^A% verwendet werden sollen.
 %^^A%    \begin{macrocode}
-%^^A\newif\if at tud@symbolheadings
+%^^A\tud at newif\if at tud@symbolheadings
 %^^A\TUD at key{footnotes}{%
 %^^A  \TUD at set@numkey{footnotes}{@tempa}{%
 %^^A    {nosymbolheadings}{0},{numberheadings}{0},%
@@ -340,12 +321,13 @@
   \expandafter\PassOptionsToClass\expandafter{\CurrentOption}{\TUD at Class@KOMA}%
 }
 %    \end{macrocode}
-% Wird die Schriftgröße im veralteten Format \val{\dots pt} übergeben, so wird 
-% der Schalter \cs{if at tud@x at scr@fontsize at set} auf \val{true} gesetzt.
+% Wird die Schriftgröße im veralteten Format \val{\dots pt} als Option
+% übergeben, so wird der Schalter \cs{if at tud@x at scr@fontsize at set} auf \val{true} 
+% gesetzt.
 %    \begin{macrocode}
 \newcommand*\tud at x@scr at pt{}
 \def\tud at x@scr at pt #1pt#2\@nil{%
-  \ifstr{#2}{pt}{\ifnumber{#1}{\@tud at x@scr at fontsize@settrue}{}}{}%
+  \tud at if@strequal{#2}{pt}{\Ifnumber{#1}{\@tud at x@scr at fontsize@settrue}{}}{}%
 }
 %    \end{macrocode}
 % \end{macro}^^A \tud at x@scr at pt
@@ -362,10 +344,10 @@
 \AtBeginDocument{%
   \if at tud@x at scr@fontsize at set\else%
     \@tud at res@swafalse%
-    \ifdim\tud at len@layoutwidth<208mm\relax\@tud at res@swatrue\fi%
-    \ifdim\tud at len@layoutwidth>212mm\relax\@tud at res@swatrue\fi%
-    \ifdim\tud at len@layoutheight<295mm\relax\@tud at res@swatrue\fi%
-    \ifdim\tud at len@layoutheight>299mm\relax\@tud at res@swatrue\fi%
+    \ifdim\tud at dim@layoutwidth<208mm\relax\@tud at res@swatrue\fi%
+    \ifdim\tud at dim@layoutwidth>212mm\relax\@tud at res@swatrue\fi%
+    \ifdim\tud at dim@layoutheight<295mm\relax\@tud at res@swatrue\fi%
+    \ifdim\tud at dim@layoutheight>299mm\relax\@tud at res@swatrue\fi%
     \if at tud@res at swa%
       \ClassWarningNoLine{\TUD at Class@Name}{%
         You've set a layout size, which is different from\MessageBreak%
@@ -378,15 +360,62 @@
 }
 %    \end{macrocode}
 %
+% \subsection{Fixierte Gleitobjekte für Poster}
+%
+% \begin{environment}{figurehere}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% \changes{v2.06o}{2022/08/02}{für \cls{tudscrposter} übernommen}^^A
+% \begin{environment}{tablehere}
+% \changes{v2.05}{2016/04/17}{neu}^^A
+% \changes{v2.06o}{2022/08/02}{für \cls{tudscrposter} übernommen}^^A
+% \begin{macro}{\tud at here@begin}
+% \changes{v2.06o}{2022/08/02}{neu}^^A
+% \begin{macro}{\tud at here@end}
+% \changes{v2.06o}{2022/08/02}{neu}^^A
+% Für die Klasse \cls{tudscrposter} werden zwei Umgebungen bereitgestellt, mit 
+% denen sich Tabellen und Bilder an einer bestimmten Stelle exakt platzieren
+% lassen. Prinzipiell könnte hierfür auch das Paket \pkg{float} zum Einsatz
+% kommen. Ursprünglich stammt die Idee aus \cls{tudmathposter} und wurde hier 
+% generalisiert implementiert.
+%    \begin{macrocode}
+%<*poster>
+\newcommand*\tud at here@begin[1]{%
+  \def\@captype{#1}%
+  \vskip\intextsep%
+  \color at vbox%
+    \normalcolor%
+    \vbox\bgroup%
+      \hsize=\columnwidth%
+      \@parboxrestore%
+      \@floatboxreset%
+      \@setnobreak%
+      \ignorespaces%
+}
+\newcommand*\tud at here@end{%
+      \vskip\intextsep%
+      \@minipagefalse%
+      \outer at nobreak%
+    \egroup%
+  \color at endbox%
+}
+\newenvironment{figurehere}{\tud at here@begin{figure}}{\tud at here@end}
+\newenvironment{tablehere}{\tud at here@begin{table}}{\tud at here@end}
+%</poster>
+%    \end{macrocode}
+% \end{macro}^^A \tud at here@end
+% \end{macro}^^A \tud at here@begin
+% \end{environment}^^A tablehere
+% \end{environment}^^A figurehere
+%
 % \iffalse
 %</class&body>
-%<*class&!inherit|package&fonts>
 %<*option>
 % \fi
 %
+% \section{Verarbeitung von Optionen}
 % \subsection{Sukkzessives Abarbeiten von Optionen im Dokument}
 %
-% Werden mit \cs{TUDoptions} nach \cs{begin\{document\}} mehrere Layoutoptionen 
+% Werden mit \cs{TUDoptions} nach |\begin{document}| mehrere Layoutoptionen 
 % gleichzeitig angegeben, muss dafür Sorge getragen werden, dass diese in der 
 % korrekten Reihenfolge abgearbeitet werden. 
 %
@@ -432,7 +461,7 @@
 % \changes{v2.05}{2016/06/14}{neu}^^A
 % \begin{macro}{\if at tud@math at set}
 % \changes{v2.05}{2016/06/14}{neu}^^A
-% \begin{macro}{\if at tud@font at skip@set}
+% \begin{macro}{\if at tud@relspacing at set}
 % \changes{v2.05}{2016/06/14}{neu}^^A
 % \begin{macro}{\if at tud@x at scr@headings at reset}
 % \changes{v2.05}{2016/06/14}{neu}^^A
@@ -446,24 +475,24 @@
 % dazugehörigen Befehle für die Einstellungen von Schriften, Layout und/oder 
 % Satzspiegel in der richtigen Reihenfolge ausgeführt.
 %    \begin{macrocode}
-\newif\if at tud@font at set
-\newif\if at tud@math at set
-\newif\if at tud@font at skip@set
+\tud at newif\if at tud@font at set
+\tud at newif\if at tud@math at set
+\tud at newif\if at tud@relspacing at set
 %<*class>
-\newif\if at tud@x at scr@headings at reset
-\newif\if at tud@cd at process
-\newif\if at tud@cdgeometry at process
+\tud at newif\if at tud@x at scr@headings at reset
+\tud at newif\if at tud@cd at process
+\tud at newif\if at tud@cdgeometry at process
 %</class>
 \newcommand*\tud at atdocument@process{%
   \if at tud@font at set%
     \tud at font@set%
     \global\@tud at font@setfalse%
-    \global\@tud at font@skip at setfalse%
+    \global\@tud at relspacing@setfalse%
 %<class>    \global\@tud at cd@processfalse%
   \fi%
-  \if at tud@font at skip@set%
-    \tud at font@skip at set%
-    \global\@tud at font@skip at setfalse%
+  \if at tud@relspacing at set%
+    \tud at relspacing@set%
+    \global\@tud at relspacing@setfalse%
   \fi%
   \if at tud@math at set%
     \tud at math@set%
@@ -489,7 +518,7 @@
 % \end{macro}^^A \if at tud@cdgeometry at process
 % \end{macro}^^A \if at tud@cd at process
 % \end{macro}^^A \if at tud@x at scr@headings at reset
-% \end{macro}^^A \if at tud@font at skip@set
+% \end{macro}^^A \if at tud@relspacing at set
 % \end{macro}^^A \if at tud@math at set
 % \end{macro}^^A \if at tud@font at set
 % \end{macro}^^A \tud at atdocument@process
@@ -496,7 +525,7 @@
 %
 % \iffalse
 %</body>
-%</class&!inherit|package&fonts>
+%</!(manual|doc)>
 %<*execute>
 %<*class&!inherit|package&fonts>
 % \fi
@@ -510,7 +539,7 @@
 % die gewählte Kompatibilitäsversion getestet werden.
 %    \begin{macrocode}
 \DeclareOption*{}
-\FamilyProcessOptions[.comp]{TUD}\relax
+\TUDProcessOptions[.comp]\relax
 %    \end{macrocode}
 % Ab der \TUDScript-Version~v2.05 werden einige vertikale Abstände abhängig von 
 % der Schriftgröße definiert. Sollte eine frühere Kompatibilitätseinstellung 
@@ -542,6 +571,30 @@
 %</class&!inherit|package&fonts>
 % \fi
 %
+% Es werden die Standardoptionen ausgeführt. Für die Klasse \cls{tudscrposter} 
+% werden die Farben aktiviert.
+%    \begin{macrocode}
+%<*package&manual>
+\KOMAoptions{headings=small}
+\TUDoptions{cdfoot=true}
+%</package&manual>
+%<*class&!inherit|package>
+\TUDExecuteOptions{%
+%<*package&fixfonts>
+  headings=heavy%
+%</package&fixfonts>
+%<*class&!inherit>
+%<*book|report|article>
+  cd=true,tudbookmarks=true%
+%</book|report|article>
+%<*poster>
+  cd=bicolor,tudbookmarks=false%
+%</poster>
+%</class&!inherit>
+}
+%</class&!inherit|package>
+%    \end{macrocode}
+%
 % \subsection{Durchreichen von Optionen und Standardoptionen}
 %
 % Durchreichen aller Klassenoptionen an die \KOMAScript-Klasse bzw. an die
@@ -550,7 +603,7 @@
 %    \begin{macrocode}
 %<*package>
 %<*fonts>
-\DeclareOption*{\expandafter\KOMAoptions\expandafter{\CurrentOption}}
+\DeclareOption*{\expandafter\TUD at KOMAoptions\expandafter{\CurrentOption}}
 %</fonts>
 %<*fixfonts>
 \DeclareOption*{%
@@ -574,42 +627,19 @@
 %</inherit>
 %</class>
 %    \end{macrocode}
-% Es werden die Standardoptionen ausgeführt. Für die Klasse \cls{tudscrposter} 
-% werden die Farben aktiviert.
+% Nach der Auswerung der Optionen wird die korrespondierende \KOMAScript-Klasse 
+% bzw. \TUDScript-Elternklasse geladen.
 %    \begin{macrocode}
-%<*package&tutorial>
-\KOMAoptions{headings=small}
-\TUDoptions{cdfoot=true}
-%</package&tutorial>
-\TUDExecuteOptions{%
-%<*package>
-%<*fixfonts>
-  headings=heavy%
-%</fixfonts>
-%<*tutorial>
-  ToDo=true%
-%</tutorial>
-%</package>
-%<*class&!inherit>
-%<*book|report|article>
-  cd=true,tudbookmarks=true%
-%</book|report|article>
-%<*poster>
-  cd=bicolor,tudbookmarks=false%
-%</poster>
-%</class&!inherit>
-}
 \TUDProcessOptions\relax
-%    \end{macrocode}
-% Die korrespindierende \KOMAScript-Klasse bzw. \TUDScript-Elternklasse wird 
-% geladen.
-%    \begin{macrocode}
 %<*class&!inherit>
-\LoadClass{\TUD at Class@KOMA}[2020/09/21]
+\LoadClass{\TUD at Class@KOMA}[%
+%!TUD at KOMAVersion
+]
 %</class&!inherit>
 %<*class&inherit>
-%<manual>\PassOptionsToClass{ttfont=roboto}{\TUD at Class@Parent}
-\LoadClass{\TUD at Class@Parent}
+\LoadClass{\TUD at Class@Parent}[%
+%!TUD at Version
+]
 %</class&inherit>
 %    \end{macrocode}
 %
@@ -627,14 +657,14 @@
 % \changes{v2.06c}{2019/08/20}{neu}^^A
 % Dieser Befehl definiert eine Fehlermeldung für Schlüssel respektive Optionen, 
 % die zu spät verwendet wurden, wobei er innerhalb der Makros \cs{AtEndOfClass},
-% \cs{AtEndOfClass}, \cs{AtEndPreamble} etc. genutzt werden sollte. Wird dieser 
-% noch im Kontext von Klasse oder Paket (\verb=\@currname.\@currext-h@@k=)
+% oder \cs{AtEndOfPackage} respektive \cs{AtEndPreamble} genutzt werden sollte.
+% Wird dieser im Kontext von Klasse oder Paket (|\@currname.\@currext-h@@k|) 
 % verwendet, wird gemeldet, dass der Schlüssel allein beim Laden der Klasse 
 % respektive des Paketes genutzt werden darf. Andernfalls wird die zwingende
 % Verwendung in der Präambel angemerkt.
 %    \begin{macrocode}
 \newcommand*\TUD at key@toolate[1]{%
-  \csedef{tud at key@#1 at error}{%
+  \csedef{tud at key@toolate@@#1}{%
 %<*class>
     \noexpand\ClassError{\noexpand\TUD at Class@Name}%
 %</class>
@@ -643,7 +673,7 @@
 %</package&fonts>
     {Option `#1' too late}{%
       Option `#1' can only be set\space%
-      \ifcsname \@currname.\@currext-h@@k\endcsname%
+      \ifcsdef{\@currname.\@currext-h@@k}{%
         as optional \MessageBreak argument while loading\space%
 %<*class>
         class `\noexpand\TUD at Class@Name'%
@@ -651,15 +681,15 @@
 %<*package&fonts>
         package `tudscrfonts'%
 %</package&fonts>
-      \else%
-        in the preamble
-      \fi%
+      }{%
+        in the preamble%
+      }%
       \MessageBreak but you have tried to set it up later.%
     }%
   }%
-  \TUD at key{#1}[]%
+  \TUD at key[]{#1}[]%
   {%
-    \csuse{tud at key@#1 at error}
+    \csuse{tud at key@toolate@@#1}%
     \FamilyKeyStateProcessed%
   }%
 }
@@ -666,49 +696,592 @@
 %    \end{macrocode}
 % \end{macro}^^A \TUD at key@toolate
 %
-%
 % \iffalse
 %</class&!inherit|package&fonts>
 %</execute>
-%<*body>
+%<*manual|doc>
 % \fi
 %
-% \subsection{Anpassungen für das Paket \pkg{textcase}}
+% \section{Zusätzliches für die Benutzer- und Quelltextdokumentation}
 %
-% \begin{macro}{\@uclcnotmath}
-% \begin{macro}{\tud at x@textcase at uclcnotmath}
-% \changes{v2.02}{2014/06/27}{\pkg{textcase}: Ignorieren von Fußnoten im 
-%   Argument des Befehls \cs{MakeTextUppercase}}^^A
-% \changes{v2.03}{2015/01/21}{\pkg{textcase}: Ignorieren des Befehls 
-%   \cs{@mkboth} im Argument des Befehls \cs{MakeTextUppercase}}^^A
-% Damit Fußnoten innerhalb von \cs{MakeTextUppercase} nicht in Majuskeln
-% gesetzt werden, wird der interne Befehl \cs{@uclcnotmath} aus dem Paket
-% \pkg{textcase} angepasst.
+% Hier tauchen Hilfsmittel auf, die für die Dokumentation verwendet werden.
+%
+% \iffalse
+%<*option>
+% \fi
+%
+% \subsection{Zusätzliche Pakete}
+%
+% Bugfixes für unterschiedliche Pakete.
 %    \begin{macrocode}
-\if at tud@cdoldfont at active
-  \RequirePackage{textcase}[2004/10/07]
-  \AfterPackage*{textcase}{%
-    \robustify\NoCaseChange%
-    \newcommand*\tud at x@textcase at uclcnotmath{%
-      \@nonchangecase\hologo%
-      \def\footnote##1##{\toks@{\noexpand\footnote##1}\@footnote}%
-      \def\@footnote##1{\NoCaseChange{\the\toks@{##1}}}%
-      \def\@mkboth##1##2{\NoCaseChange{\@mkboth{##1}{##2}}}%
+\RequirePackage{scrhack}[%
+%!TUD at KOMAVersion
+]
+%    \end{macrocode}
+% Das Paket für intelligente Leerzeichen am Ende von Makros mit \cs{xspace}.
+%    \begin{macrocode}
+\RequirePackage{xspace}
+\xspaceaddexceptions{"=}
+%    \end{macrocode}
+% Das Paket \pkg{marginnote} stellt nicht fließenden Randnotizen bereit, welche 
+% für die Kennzeichnung von Änderungen, Hinweise oder ToDo-Notizen verwendet 
+% werden. Die Randnotizen werden auf dem linken~-- weil größeren~-- Seitenrand
+% gesetzt.
+%    \begin{macrocode}
+\PassOptionsToPackage{quiet}{marginnote}
+\RequirePackage{marginnote}
+%<!doc>\reversemarginpar
+%    \end{macrocode}
+% Das Paket \pkg{shellesc} ermöglicht mit dem Befehl \cs{ShellEscape} die 
+% Verwendung von Systembefehlen auf der Kommandozeile unabhängig vom genutzten
+% Format. Sollte \app{lualatex} als Dokumentprozessor eingesetzt werden, sind 
+% dennoch die beiden \app{pdflatex}-Primitiven \cs{pdf(@)strcmp} und 
+% \cs{pdf(@)shellescape} nötig, wofür das Paket \pkg{pdftexcmds} geladen wird.
+%    \begin{macrocode}
+\RequirePackage{shellesc}
+\RequirePackage{pdftexcmds}
+%    \end{macrocode}
+%
+% Das Paket \pkg{hyperref} wird für alle möglichen Links und Querverweise 
+% geladen, \pkg{bookmark} verbessert das Erstellen der Outline-Einträge.
+%
+%    \begin{macrocode}
+\PassOptionsToPackage{hyperindex=false}{hyperref}
+\AfterPackage*{bookmark}{\bookmarksetup{open,openlevel=1}}
+%    \end{macrocode}
+% Es folgen einige Befehle, die an das Paket \pkg{hyperref} gekoppelt sind. 
+% Sobald das Paket geladen wurde, werden die Makros mit der jeweiligen
+% Funktionalität definiert. 
+%    \begin{macrocode}
+\AfterAtEndOfPackage*{hyperref}{%
+  \@ifpackageloaded{bookmark}{}{\RequirePackage{bookmark}}%
+  \hypersetup{colorlinks,linkcolor=blue}%
+}
+%    \end{macrocode}
+% \begin{macro}{\hrfn}
+% \changes{v2.02}{2014/08/16}{neu}^^A
+% \changes{v2.04}{2015/02/18}{Schriftgröße mit \cs{scalebox}}^^A
+% Mit diesem Makro können Hyperlinks im Fließtext erzeugt werden, welche 
+% zusätzlich noch die dazugeörige URL als Fußnote anzeigen.
+%    \begin{macrocode}
+\newcommand*\hrfn[2]{%
+  \href{#1}{\trim at spaces{#2}}%
+  \footnote{\strut\url{#1}}%
+}
+%    \end{macrocode}
+% \end{macro}^^A \hrfn
+% \begin{macro}{\mailto}
+% Ein Makro zur Angabe einer verlinkten E"~Mail-Adresse.
+%    \begin{macrocode}
+\newrobustcmd*\mailto[1]{\mbox{\href{mailto:#1}{\nolinkurl{#1}}}}
+%    \end{macrocode}
+% \end{macro}^^A \mailto
+% \begin{macro}{\url}
+% \begin{macro}{\nolinkurl}
+% \begin{macro}{\href}
+% \begin{macro}{\hypersetup}
+% \begin{macro}{\phantomsection}
+% \begin{macro}{\pdfbookmark}
+% \begin{macro}{\currentpdfbookmark}
+% \begin{macro}{\subpdfbookmark}
+% \begin{macro}{\belowpdfbookmark}
+% Sollte \pkg{hyperref} nicht geladen werden, müssen einige Befehle rudimentär 
+% definiert werden.
+%    \begin{macrocode}
+\TUD at UnwindPackage{hyperref}{%
+  \RequirePackage{url}
+  \providerobustcmd*\url[1]{\texttt{\detokenize{#1}}}%
+  \providerobustcmd*\nolinkurl[1]{\url{#1}}%
+  \providerobustcmd*\href[3][]{#3}%
+  \providecommand*\hypersetup[1]{}%
+  \providecommand*\phantomsection{}%
+  \providecommand*\pdfbookmark[3][]{}%
+  \providecommand*\currentpdfbookmark[2]{}%
+  \providecommand*\subpdfbookmark[2]{}%
+  \providecommand*\belowpdfbookmark[2]{}%
+}
+%    \end{macrocode}
+% \end{macro}^^A \belowpdfbookmark
+% \end{macro}^^A \subpdfbookmark
+% \end{macro}^^A \currentpdfbookmark
+% \end{macro}^^A \pdfbookmark
+% \end{macro}^^A \phantomsection
+% \end{macro}^^A \hypersetup
+% \end{macro}^^A \href
+% \end{macro}^^A \nolinkurl
+% \end{macro}^^A \url
+%
+% Etwas Kleinkram für \pkg{babel} und \pkg{csquotes}. Das letztere Paket dient
+% dem sprachabhängigen Setzen von Anführungszeichen und sollte erst nach 
+% \pkg{inputenc} oder \pkg{inputenx} geladen werden.
+%    \begin{macrocode}
+\AfterPackage*{babel}{\RequirePackage{csquotes}}
+%    \end{macrocode}
+% \begin{macro}{\selectlanguage}
+% \begin{macro}{\glqq}
+% \begin{macro}{\grqq}
+% \begin{macro}{\enquote}
+%    \begin{macrocode}
+\TUD at UnwindPackage{babel}{%
+  \ClassWarningNoLine{\TUD at Class@Name}{Package `babel' not loaded}%
+  \providecommand*\selectlanguage[1]{}%
+  \providecommand*\glqq{\quotedblbase}%
+  \providecommand*\grqq{\textquotedblleft}%
+  \providecommand*\seename{see}%
+  \providecommand*\alsoname{see\nobreakspace also}%
+}
+\TUD at UnwindPackage{csquotes}{%
+  \ClassWarningNoLine{\TUD at Class@Name}{Package `csquotes' not loaded}%
+  \providecommand\enquote[1]{\emph{#1}}%
+}
+%    \end{macrocode}
+% \end{macro}^^A \enquote
+% \end{macro}^^A \grqq
+% \end{macro}^^A \glqq
+% \end{macro}^^A \selectlanguage
+%
+% \iffalse
+%<*class&manual>
+% \fi
+%
+% \subsection{Sortieren von Listen}
+%
+% \begin{macro}{\tud at list@sort}
+% \changes{v2.02}{2014/07/25}{neu}^^A
+% \begin{macro}{\tud at list@@sort}
+% \changes{v2.02}{2014/07/25}{neu}^^A
+% \begin{macro}{\tud at templist}
+% \changes{v2.02}{2014/07/25}{neu}^^A
+% \begin{macro}{\if at tud@list at sorted}
+% \changes{v2.02}{2014/07/25}{neu}^^A
+% Der Befehl \cs{tud at list@sort} erwartet eine \pkg{etoolbox}-Liste und sortiert 
+% diese mit dem Makro \cs{sort at list} in alphabetischer Reihenfolge in eine 
+% kommagetrennte Auflistung. Diese wird anschließend wieder in eine
+% \pkg{etoolbox}-Liste umgewandelt.
+%    \begin{macrocode}
+\newcommand*\tud at templist{}
+\let\tud at templist\relax
+\newcommand*\tud at list@sort[1]{%
+  \ifdefvoid{#1}{%
+    \ClassWarning{tudscrmanual}{%
+      The given list \string#1\space\MessageBreak%
+      is empty, nothing to sort here%
     }%
-    \patchcmd{\@uclcnotmath}{\@nonchangecase\ensuremath}{%
-      \@nonchangecase\ensuremath\tud at x@textcase at uclcnotmath%
-    }{}{\tud at patch@wrn{@uclcnotmath}}%
+  }{%
+    \let\tud at reserved#1%
+    \let\tud at templist\relax%
+    \forlistloop\tud at list@@sort{\tud at reserved}%
+    \let\tud at reserved\relax%
+    \@for\@tempa:=\tud at templist\do{\listeadd\tud at reserved{\@tempa}}%
+    \let#1\tud at reserved%
   }%
-\fi
-\TUD at deprecated@cs{NoCaseChange}{@firstofone}
+}
 %    \end{macrocode}
-% \end{macro}^^A \tud at x@textcase at uclcnotmath
-% \end{macro}^^A \@uclcnotmath
+% Hier erfolgt die eigentliche Sortierung der Liste.
+%    \begin{macrocode}
+\tud at newif\if at tud@list at sorted
+\newcommand*\tud at list@@sort[1]{%
+%    \end{macrocode}
+% Der erste Eintrag wird direkt der Liste hinzugefügt.
+%    \begin{macrocode}
+  \ifx\tud at templist\relax%
+    \def\tud at templist{#1}%
+%    \end{macrocode}
+% Weitere Einräge werden mit \cs{pdfstrcmp} an der richtigen Stelle eingefügt.
+% Dabei wird die kommagetrennte Liste \cs{tud at templist} durchlaufen und
+% \cs{@tempb} als Hilfsmakro verwendet, in welches die aktuelle Liste innerhalb 
+% der \cs{@for}-Schleife stückweise expandiert wird. Wenn das aktuelle Element
+% an der dafür passenden Stelle eingesetzt wurde, wird \cs{if at tud@list at sorted} 
+% gesetzt.
+%    \begin{macrocode}
+  \else%
+    \@tud at list@sortedfalse%
+    \let\@tempb\@empty%
+    \@for\@tempa:=\tud at templist\do{%
+%    \end{macrocode}
+% Ist der Eintrag bereits erfolgt, wird der verbliebene Teil der Liste 
+% angehangen.
+% \ToDo{\cs{expandafter}\cs{edef}\cs{expandafter} ist quatsch, oder?}[v2.07]
+%    \begin{macrocode}
+      \if at tud@list at sorted%
+        \expandafter\edef\expandafter\@tempb\expandafter{\@tempb,\@tempa}%
+      \else%
+%    \end{macrocode}
+% Liegt der Eintrag in alphabetischer Reihenfolge vor dem aktuellen der 
+% durchlaufenenen Liste, so wird dieser davor eingefügt. Dabei muss der Fall, 
+% dass das Element der erste Eintrag in der temporären Liste \cs{@tempb} ist, 
+% eine Sonderbehandlung erfolgen. Anschließend wird \cs{@tud at list@sortedtrue} 
+% gesetzt.
+%    \begin{macrocode}
+        \expandafter\ifnum\pdf at strcmp{#1}{\@tempa}<\z@\relax%
+          \ifx\@tempb\@empty%
+            \expandafter\edef\expandafter\@tempb\expandafter{%
+              #1,\@tempa%
+            }%
+          \else%
+            \expandafter\edef\expandafter\@tempb\expandafter{%
+              \@tempb,#1,\@tempa%
+            }%
+          \fi%
+          \@tud at list@sortedtrue%
+        \else%
+%    \end{macrocode}
+% Ist Eintrag in alphabetischer Reihenfolge nach dem aktuellen der geprüften 
+% Liste, so wird dieser (noch) nicht eingefügt. Der Sonderfall des ersten
+% Elementes wird abgedeckt.
+%    \begin{macrocode}
+          \ifx\@tempb\@empty%
+            \expandafter\edef\expandafter\@tempb\expandafter{\@tempa}%
+          \else%
+            \expandafter\edef\expandafter\@tempb\expandafter{\@tempb,\@tempa}%
+          \fi%
+        \fi%
+      \fi%
+    }%
+%    \end{macrocode}
+% Wurde der Eintrag nach dem Durchlaufen der Liste nicht eingefügt, so erfolgt 
+% dies hier am Ende der Liste.
+%    \begin{macrocode}
+    \if at tud@list at sorted\else%
+      \expandafter\edef\expandafter\@tempb\expandafter{\@tempb,#1}%
+    \fi%
+%    \end{macrocode}
+% Die temporäre Liste \cs{@tempb} wird auf \cs{tud at templist} überschrieben.
+%    \begin{macrocode}
+    \let\tud at templist\@tempb%
+  \fi%
+}
+%    \end{macrocode}
+% \end{macro}^^A \if at tud@list at sorted
+% \end{macro}^^A \tud at templist
+% \end{macro}^^A \tud at list@@sort
+% \end{macro}^^A \tud at list@sort
 %
 % \iffalse
+%</class&manual>
+% \fi
+%
+% \subsection{Stringmanipulation}
+%
+% \begin{macro}{\tud at replace@in}
+% \changes{v2.05}{2015/11/01}{neu}^^A
+% \changes{v2.06o}{2022/08/08}{neu}^^A
+% \begin{macro}{\tud at replace@@in}
+% \changes{v2.06o}{2022/08/08}{neu}^^A
+% Mit diesem Befehl kann in einem gegebenen Makro ein bestimmtes Zeichen durch 
+% ein anderes ersetzt werden. Dies wird verwendet, um für Indexbefehle die 
+% möglicherweise enthaltenen |@|"~Zeichen oder in Datei- und Pfadangaben 
+% Unterstriche zu ersetzen.
+%    \begin{macrocode}
+\newcommand*\tud at replace@in[3]{%
+  \begingroup%
+%    \end{macrocode}
+% Zunächst wird der Inhalt des ersten Argumentes expandiert. Anschließend 
+% wird \cs{tud at res@b} als ein durch \cs{@nil} abgegrenztes Makro mit zwei
+% Argumenten definiert, wobei diese durch das im zweiten Argument gegebene 
+% \meta{Zeichen} voneinander abgegrenzt werden. Dieses Makro wird nun so lange 
+% rekursiv mit dem zweiten Teil aufgerufen, bis dieses leer is. Dabei wird der 
+% erste, durch das angegebene zu ersetzende Zeichen Teil sukzessive an 
+% \cs{tud at res@c} angehängt und um das im dritten Argument angegebene 
+% Ersatzzeichen vervollständigt.
+%    \begin{macrocode}
+    \edef\tud at res@a{\expandonce{#1}}%
+    \let\tud at res@c\@empty%
+    \def\tud at res@b##1#2##2\@nil{%
+      \IfArgIsEmpty{##2}{%
+        \appto\tud at res@c{##1}%
+      }{%
+        \appto\tud at res@c{##1#3}%
+        \tud at res@b##2\@nil%
+      }%
+    }%
+    \expandafter\tud at res@b\tud at res@a#2\@nil%
+    \edef\tud at res@a{%
+      \endgroup%
+      \unexpanded{\def#1}{\expandonce\tud at res@c}%
+    }%
+  \tud at res@a%
+}
+%    \end{macrocode}
+% Diese Variante sorgt dafür, dass die zu ersetzenden Zeichen alle als Strings 
+% behandelt werden.
+%    \begin{macrocode}
+\newcommand*\tud at replace@@in[3]{%
+  \begingroup%
+    \protected at edef\tud at res@a{#1}%
+    \edef\tud at res@a{\detokenize\expandafter{\tud at res@a}}%
+    \edef\tud at res@b{%
+      \unexpanded{\tud at replace@in\tud at res@a}{\detokenize{#2}}{\detokenize{#3}}%
+    }%
+    \tud at res@b%
+    \edef\tud at res@a{%
+      \endgroup%
+      \unexpanded{\def#1}{\tud at res@a}%
+    }%
+  \tud at res@a%
+}
+%    \end{macrocode}
+% \end{macro}^^A \tud at replace@@in
+% \end{macro}^^A \tud at replace@in
+%
+% \iffalse
+%</option>
+%<*body>
+% \fi
+%
+% \subsection{Zusätzliche Markup-Befehle}
+% \subsubsection{Textauszeichnung}
+%
+% \begin{macro}{\@pnumwidth}
+% \begin{macro}{\@tocrmarg}
+% Etwas mehr Platz im Inhaltsverzeichnis für die Seitenzahlen.
+% \ToDo{direkt in die Klassen übernehmen}[v2.07]
+%    \begin{macrocode}
+\renewcommand*\@pnumwidth{2.1em}
+\renewcommand*\@tocrmarg{3.1em}
+%    \end{macrocode}
+% \end{macro}^^A \@tocrmarg
+% \end{macro}^^A \@pnumwidth
+%
+% \begin{macro}{\textsbn}
+% \changes{v2.02}{2014/08/16}{neu}^^A
+% \begin{macro}{\sbnfont}
+% \changes{v2.02}{2014/08/16}{neu}^^A
+% \begin{macro}{\textsbi}
+% \changes{v2.02}{2014/08/16}{neu}^^A
+% \begin{macro}{\sbifont}
+% \changes{v2.02}{2014/08/16}{neu}^^A
+% \begin{macro}{\textttit}
+% \changes{v2.06o}{2022/08/03}{neu}^^A
+% \begin{macro}{\ttitfont}
+% \changes{v2.06o}{2022/08/03}{neu}^^A
+% Kombinierte Auszeichnungsbefehle für Text.
+%    \begin{macrocode}
+\newcommand*\textsbn{}
+\newrobustcmd*\sbnfont{\sffamily\bfseries\upshape}
+\DeclareTextFontCommand\textsbn{\sbnfont}
+\newcommand*\textsbi{}
+\newrobustcmd*\sbifont{\sffamily\bfseries\itshape}
+\DeclareTextFontCommand\textsbi{\sbifont}
+\newcommand*\textttit{}
+\newrobustcmd*\ttitfont{\ttfamily\itshape}
+\DeclareTextFontCommand\textttit{\ttitfont}
+%    \end{macrocode}
+% \end{macro}^^A \ttitfont
+% \end{macro}^^A \textttit
+% \end{macro}^^A \sbifont
+% \end{macro}^^A \textsbi
+% \end{macro}^^A \sbnfont
+% \end{macro}^^A \textsbn
+%
+% \subsubsection{Logisches Markup}
+%
+% \begin{macro}{\tud at english}
+% Hiermit wird der Argumentsinhalt mit englischen Trennungsmustern gesetzt,
+% falls die Sprache geladen wurde.
+%    \begin{macrocode}
+\newcommand*\tud at english[1]{%
+  \iflanguageloaded{english}{\foreignlanguage{english}{#1}}{#1}%
+}
+\AfterPackage*{babel}{%
+  \renewcommand*\tud at english[1]{\foreignlanguage{english}{#1}}%
+}
+%    \end{macrocode}
+% \end{macro}^^A \tud at english
+% \begin{macro}{\KOMAScript}
+% \begin{macro}{\TUDScript}
+% \begin{macro}{\vTUDScript}
+% \begin{macro}{\vKOMAScript}
+% Für die robuste Verwendung im Text.
+%    \begin{macrocode}
+\kernel at make@fragile\KOMAScript
+\edef\KOMAScript{\noexpand\mbox{\expandonce\KOMAScript}\noexpand\xspace}
+\robustify\KOMAScript
+\robustify\TUDScript
+\AfterPackage*{hyperref}{%
+  \pdfstringdefDisableCommands{%
+    \def\KOMAScript{KOMA-Script{}}%
+    \def\TUDScript{TUD-Script{}}%
+  }%
+}
+%    \end{macrocode}
+% Diese Befehle geben in der Dokumentation die aktuelle Version von \TUDScript
+% sowie die mindestens notwendige Version von \KOMAScript{} aus.
+%    \begin{macrocode}
+\newcommand*\vTUDScript{v\TUDScriptVersionNumber}
+\newcommand*\vKOMAScript{v\TUD at KOMAVersionNumber}
+%    \end{macrocode}
+% \end{macro}^^A \vKOMAScript
+% \end{macro}^^A \vTUDScript
+% \end{macro}^^A \TUDScript
+% \end{macro}^^A \KOMAScript
+% \begin{macro}{\CD}
+% \begin{macro}{\CDs}
+% \begin{macro}{\TUD}
+% \begin{macro}{\TnUD}
+% \begin{macro}{\TUDCD}
+% \changes{v2.05}{2015/11/01}{neu}^^A
+% \begin{macro}{\TUDCDs}
+% \changes{v2.05}{2015/11/01}{neu}^^A
+% \begin{macro}{\TUDForum}
+% \changes{v2.06o}{2022/08/04}{neu}^^A
+% \begin{macro}{\DDC}
+% Diese Befehle stellen regelmäßig in der Quelltextdokumentatuion und im 
+% Handbuch genutzte Textbausteine bereit. Dazu wird der Befehl \cs{xspace} aus 
+% dem \pkg{xspace}-Paket genutzt.
+%    \begin{macrocode}
+\newrobustcmd*\CD{\tud at english{Corporate Design}\xspace}
+\newrobustcmd*\CDs{\tud at english{Corporate Designs}\xspace}
+\newrobustcmd*\TUD{Technische Universit\"at Dresden\xspace}
+\newrobustcmd*\TnUD{Technischen Universit\"at Dresden\xspace}
+\newcommand*\TUDCD{\CD der \TnUD}
+\newcommand*\TUDCDs{\CDs der \TnUD}
+\newrobustcmd*\TUDForum{\mbox{T\kern.05em U\kern.05em D-\LaTeX-Forum}\xspace}
+\newrobustcmd*\DDC{%
+  \mbox{%
+    D\kern.05em R\kern.05em E\kern.05em S\kern.05em %
+    D\kern.05em E\kern.05em N\kern.1em-\kern.1em concept%
+  }\xspace%
+}
+\AfterPackage*{hyperref}{%
+  \pdfstringdefDisableCommands{%
+    \def\CD{Corporate Design{}}%
+    \def\CDs{Corporate Designs{}}%
+    \def\TUD{Technische Universit\"at Dresden{}}%
+    \def\TnUD{Technischen Universit\"at Dresden{}}%
+    \def\TUDForum{TUD-LaTeX-Forum{}}%
+    \def\DDC{DRESDEN-concept{}}%
+  }%
+}
+%    \end{macrocode}
+% \end{macro}^^A \DDC
+% \end{macro}^^A \TUDForum
+% \end{macro}^^A \TUDCDs
+% \end{macro}^^A \TUDCD
+% \end{macro}^^A \TnUD
+% \end{macro}^^A \TUD
+% \end{macro}^^A \CDs
+% \end{macro}^^A \CD
+%
+% \begin{macro}{\OpenSans}
+% \changes{v2.06}{2018/07/02}{neu}^^A
+% \begin{macro}{\Univers}
+% \begin{macro}{\DIN}
+% Für die Nennung der Schriften spezielle Markos bereitgestellt.
+%    \begin{macrocode}
+\newrobustcmd*\OpenSans{\textcdbn{Open\nobreakspace Sans}\xspace}
+\newrobustcmd*\Univers{\textcdbi{Univers}\xspace}
+\newrobustcmd*\DIN{\textcdbi{DIN\nobreakspace Bold}\xspace}
+\AfterPackage*{hyperref}{%
+  \pdfstringdefDisableCommands{%
+    \def\OpenSans{Open Sans{}}%
+    \def\Univers{Univers{}}%
+    \def\DIN{DIN Bold{}}%
+  }%
+}
+%    \end{macrocode}
+% \end{macro}^^A \DIN
+% \end{macro}^^A \Univers
+% \end{macro}^^A \OpenSans
+%
+% \begin{macro}{\GitHubBase}
+% Angabe der URL des verwendeten GitHub-Repository. Aktuell nicht implementiert.
+%    \begin{macrocode}
+\newcommand*\GitHubBase[1]{}
+%    \end{macrocode}
+% \end{macro}^^A \GitHubBase
+% \begin{macro}{\GitHubRepo}
+% \changes{v2.02}{2014/08/16}{neu}^^A
+% Auszeichnungsbefehle für Verweise auf ein GitHub-Repository. 
+%    \begin{macrocode}
+\NewDocumentCommand\GitHubRepo{!s !t' !O{releases} !D(){tud-cd/tudscr} !d<>}{%
+  \IfBooleanTF{#1}{\toks@{\href}}{\toks@{\hrfn}}%
+  \IfBooleanT{#2}{\toks@{\url}}%
+  \def\@tempa{https://github.com/#4/}%
+  \edef\@tempa{{\@tempa\IfValueTF{#5}{issues/#5}{#3}}}%
+  \addto at hook@expandafter\toks@{\@tempa}%
+  \IfBooleanF{#2}{%
+    \addto at hook\toks@{{\tud at english{GitHub-Repository~\textsbn{#4}}}}%
+  }%
+  \the\toks@\xspace%
+}
+%    \end{macrocode}
+% \end{macro}^^A \GitHubRepo
+% \begin{macro}{\Download}
+% \changes{v2.05g}{2016/11/08}{neu}^^A
+% Der Befehl für die Angabe von direkten Downloadlinks.
+%    \begin{macrocode}
+%<*manual>
+\newcommand*\Download[1]{%
+  https://github.com/tud-cd/tudscr/releases/download/#1%
+}
+%</manual>
+%    \end{macrocode}
+% \end{macro}^^A \Download
+% \begin{macro}{\CTAN}
+% \changes{v2.05}{2015/11/22}{neu}^^A
+%    \begin{macrocode}
+\NewDocumentCommand\CTAN{!s !o !g}{%
+  \IfBooleanTF{#1}{\toks@{\href}}{\toks@{\hrfn}}%
+  \addto at hook\toks@{{http://www.ctan.org/\IfValueT{#2}{#2}}}%
+  \addto at hook\toks@{%
+    {\tud at english{Comprehensive TeX Archive Network (CTAN\IfValueT{#3}{~#3})}}%
+  }%
+  \the\toks@\xspace%
+}
+%    \end{macrocode}
+% \end{macro}^^A \CTAN
+% \begin{macro}{\Forum}
+% Der Befehl für die Ausgabe eines Links zum \TUDForum. Das optionale Argument 
+% in Guillemets kann genutzt werden, um auf einen spezifisches Beitrag zu 
+% verlinken.
+%    \begin{macrocode}
+\NewDocumentCommand\Forum{!s !t' !O{\TUDForum} !d<>}{%
+  \IfBooleanTF{#1}{\toks@{\href}}{\toks@{\hrfn}}%
+  \IfBooleanT{#2}{\toks@{\url}}%
+  \def\@tempa{http://latex.wcms-file3.tu-dresden.de/phpBB3/}%
+  \edef\@tempa{{\@tempa\IfValueT{#4}{viewtopic.php?t=#4}}}%
+  \addto at hook@expandafter\toks@{\@tempa}%
+  \IfBooleanF{#2}{\addto at hook\toks@{{#3}}}%
+  \the\toks@\xspace%
+}
+%    \end{macrocode}
+% \end{macro}^^A \Forum
+% \begin{macro}{\Attention}
+% \changes{v2.02}{2014/08/16}{neu}^^A
+% Falls irgendetwas besonders hervorgehoben werden sollte.
+%    \begin{macrocode}
+\newcommand*\Attention[2][\z@]{%
+  \marginnote{%
+    \tud at setdim\fboxsep{0.25em}%
+    \fbox{Achtung!}%
+  }[{#1}]%
+  \emph{\trim at spaces{#2}}%
+}
+%    \end{macrocode}
+% \end{macro}^^A \Attention
+% \begin{macro}{\TUDScriptContactTitle}
+% \changes{v2.06o}{2022/08/09}{neu}^^A
+% Die Angabe der E-Mail-Adresse auf dem Titel innerhalb von \cs{author}.
+%    \begin{macrocode}
+\newrobustcmd*\TUDScriptContactTitle{%
+  \ifundef{\emailaddress}{%
+    \qquad\expandafter\mailto\expandafter{\TUDScriptContact}%
+  }{%
+    \expandafter\emailaddress\expandafter{\TUDScriptContact}%
+  }%
+}
+\AfterPackage*{hyperref}{%
+  \pdfstringdefDisableCommands{\let\TUDScriptContactTitle\relax}%
+}
+%    \end{macrocode}
+% \end{macro}^^A \TUDScriptContactTitle
+%
+% \iffalse
 %</body>
+%</manual|doc>
 % \fi
 %
-% \Finale
+% \PrintBackMatter
 %
 \endinput

Modified: trunk/Master/texmf-dist/source/latex/tudscr/tudscr-pagestyle.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tudscr/tudscr-pagestyle.dtx	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/source/latex/tudscr/tudscr-pagestyle.dtx	2022-08-09 20:01:54 UTC (rev 64085)
@@ -1,10 +1,10 @@
-% \CheckSum{2046}
 % \iffalse meta-comment
+%/GitFileInfo=tudscr-pagestyle.dtx
 %
 %  TUD-Script -- Corporate Design of Technische Universität Dresden
 % ----------------------------------------------------------------------------
 %
-%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2021
+%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2022
 %
 % ----------------------------------------------------------------------------
 %
@@ -23,33 +23,19 @@
 %
 % \fi
 %
-% \CharacterTable
-%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-%   Digits        \0\1\2\3\4\5\6\7\8\9
-%   Exclamation   \!     Double quote  \"     Hash (number) \#
-%   Dollar        \$     Percent       \%     Ampersand     \&
-%   Acute accent  \'     Left paren    \(     Right paren   \)
-%   Asterisk      \*     Plus          \+     Comma         \,
-%   Minus         \-     Point         \.     Solidus       \/
-%   Colon         \:     Semicolon     \;     Less than     \<
-%   Equals        \=     Greater than  \>     Question mark \?
-%   Commercial at \@     Left bracket  \[     Backslash     \\
-%   Right bracket \]     Circumflex    \^     Underscore    \_
-%   Grave accent  \`     Left brace    \{     Vertical bar  \|
-%   Right brace   \}     Tilde         \~}
-%
-% \iffalse
-%%% From File: tudscr-pagestyle.dtx
+% \iffalse ins:batch + dtx:driver
+%<*ins>
+\ifx\documentclass\undefined
+  \input docstrip.tex
+  \ifToplevel{\batchinput{tudscr.ins}}
+\else
+  \let\endbatchfile\relax
+\fi
+\endbatchfile
+%</ins>
 %<*dtx>
-% \fi
-%
-\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
-\ProvidesFile{tudscr-pagestyle.dtx}[2021/03/30 v2.06l TUD-Script\space%
-  (pagestyle)%
-]
-%
-% \iffalse
+\ProvidesFile{tudscr-pagestyle.dtx}[2022/08/09]
+\RequirePackage{tudscr-gitinfo}
 \documentclass[english,ngerman,xindy]{tudscrdoc}
 \iftutex
   \usepackage{fontspec}
@@ -59,18 +45,11 @@
 \fi
 \usepackage{babel}
 \usepackage{tudscrfonts}
-\KOMAoptions{parskip=half-}
-\usepackage{bookmark}
 \usepackage[babel]{microtype}
 
-\CodelineIndex
-\RecordChanges
-\GetFileInfo{tudscr-pagestyle.dtx}
-\title{\file{\filename}}
-\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
-\date{\fileversion\nobreakspace(\filedate)}
-
+\GitHubBase{\TUDScriptRepository}
 \begin{document}
+  \author{Falk Hanisch\TUDScriptContactTitle}
   \maketitle
   \tableofcontents
   \DocInput{\filename}
@@ -84,15 +63,15 @@
 % \changes{v2.02}{2014/07/08}{\cs{FamilyKeyState} wird von Optionen genutzt}^^A
 % \changes{v2.05}{2015/07/06}{Seitenstil für Poster}^^A
 %
+%
+%
 % \section{Der Seitenstil des \CDs}
 %
-% Es wird der Seitenstil des \CD der \TnUD mit Logo und dem charakteristischen 
+% Es wird der Seitenstil des \TUDCD mit Logo und dem charakteristischen 
 % Querbalken im Kopfbereich definiert. Hierfür kommt das \KOMAScript-Paket 
 % \pkg{scrlayer-scrpage} zum Einsatz.
 % \ToDo{Abhängigkeiten Satzspiegel<>Seitenstil beseitigen}[v2.07]
 %
-% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
-%
 % \iffalse
 %<*class&body>
 % \fi
@@ -110,12 +89,16 @@
 % Ist die Klasse \cls{standalone} zusammen mit der Option \opt{crop} aktiv,
 % werden die Seitenränder auf die Einstellungen dieser Klasse gesetzt und das
 % Laden von \pkg{scrlayer-scrpage} verhindert.
+% \ToDo{Setzen der Boxen mit \cs{tud at vlayerbox} komplett überarbeiten}[v2.07]
+% \ToDo{lazy init der Boxen für Grafiken?}[v2.07]
 %    \begin{macrocode}
 \if at tud@x at standalone@crop
   \PreventPackageFromLoading{scrlayer-scrpage}%
 \else
   \PassOptionsToPackage{automark}{scrlayer-scrpage}%
-  \AtEndPreamble{\RequirePackage{scrlayer-scrpage}[2020/09/21]}%
+  \AtEndPreamble{\RequirePackage{scrlayer-scrpage}[%
+%!TUD at KOMAVersion
+  ]}%
 \fi
 %    \end{macrocode}
 % Für das Erzeugen der Seitenstile wird das Paket \pkg{scrlayer-scrpage} 
@@ -132,12 +115,21 @@
 % \changes{v2.02}{2014/06/23}{neu}^^A
 % \begin{layerpagestyle}{empty.tudheadings}
 % \changes{v2.02}{2014/06/23}{neu}^^A
-% Es wird ein neuer Seitenstil kreiert, der das \CD der \TnUD mit der
-% prägenden Kopfzeile umsetzt. Dabei soll dieser Kopf auch verwendbar sein,
-% wenn nicht die vom \CD vorgeschriebenen Seitenränder sondern das Paket
-% \pkg{typearea} genutzt wird. Dafür wird das Logo im Kopf so wie im \CD
-% vorgesehen mit dem Logo der \TnUD in den Rand und dem Schriftzug bündig zum
-% Textblock gesetzt. 
+% Es wird ein neuer Seitenstil kreiert, der das \TUDCD mit der prägenden
+% Kopfzeile umsetzt. Dabei soll dieser Kopf auch verwendbar sein, wenn nicht
+% die vom \CD vorgeschriebenen Seitenränder sondern das Paket \pkg{typearea}
+% genutzt wird. Dafür wird das Logo im Kopf so wie im \CD vorgesehen mit dem
+% Logo der \TnUD in den Rand und dem Schriftzug bündig zum Textblock gesetzt. 
+%
+% \Attention{%
+%   Um Längenangaben aus Makros sicher auf Dimensionsausdrücke zu reduzieren,
+%   müssen diese in \cs{dimexpr}\cs{glueexpr}\val{\dots}\cs{relax}\cs{relax}
+%   eingehüllt werden. Das Paket \pkg{scrlayer} verwendet allerdings lediglich 
+%   \cs{dimexpr}, weshalb hier noch zusätzlich \cs{glueexpr} genutzt wird. Dies
+%   ist insbesondere für \cs{tud at bleedmargin@dim} relevant. Siehe hierzu auch 
+%   \GitHubRepo(latex3/latex2e)<227>. 
+% }
+%
 % \begin{layer}{tudheadings.head.content}
 % \changes{v2.04}{2015/05/31}{neu}^^A
 % Dies sind das links aus dem Satzspiegel verschobene Logo der \TnUD und das 
@@ -146,10 +138,10 @@
 %    \begin{macrocode}
   \DeclareNewLayer[%
     background,headsep,%
-    addhoffset=\dimexpr\tud at len@logox-\tud at len@widemargin\relax,%
-    addwidth=\dimexpr-\tud at len@logox+\tud at len@widemargin\relax,%
-    voffset=\tud at len@logoy,%
-    addvoffset=\tud at len@layoutvoffset,%
+    addhoffset=\tud at dim@logox-\tud at dim@widemargin,%
+    addwidth=-\tud at dim@logox+\tud at dim@widemargin,%
+    voffset=\tud at dim@logoy,%
+    addvoffset=\tud at dim@layoutvoffset,%
     contents={%
 %    \end{macrocode}
 % Vor der Ausgabe der Logoboxen werden diese im Bedarfsfall neu gesetzt.
@@ -171,10 +163,10 @@
 %    \begin{macrocode}
   \DeclareNewLayer[%
     background,%
-    width=\dimexpr\tud at len@layoutwidth+\tud at dim@bleedmargin*2\relax,%
-    addhoffset=\dimexpr\tud at len@layouthoffset-\tud at dim@bleedmargin\relax,%
-    height=\dimexpr\tud at len@topmargin+\tud at dim@bleedmargin\relax,%
-    addvoffset=\dimexpr\tud at len@layoutvoffset-\tud at dim@bleedmargin\relax,%
+    width=\glueexpr\tud at dim@layoutwidth+(\tud at bleedmargin@dim)*2\relax,%
+    addhoffset=\glueexpr\tud at dim@layouthoffset-\tud at bleedmargin@dim\relax,%
+    height=\glueexpr\tud at dim@topmargin+\tud at bleedmargin@dim\relax,%
+    addvoffset=\glueexpr\tud at dim@layoutvoffset-\tud at bleedmargin@dim\relax,%
     contents={%
       \ifnum\tud at head@bar at num>\tw@\relax% cdhead=color
         \color{HKS41}%
@@ -184,16 +176,16 @@
   ]{tudheadings.head.back}%
   \DeclareNewLayer[%
     background,%
-    width=\dimexpr\tud at len@layoutwidth+\tud at dim@bleedmargin*2\relax,%
-    addhoffset=\dimexpr\tud at len@layouthoffset-\tud at dim@bleedmargin\relax,%
-    height=\tud at len@barheight,%
-    voffset=\tud at len@topmargin,%
-    addvoffset=\tud at len@layoutvoffset,%
+    width=\glueexpr\tud at dim@layoutwidth+(\tud at bleedmargin@dim)*2\relax,%
+    addhoffset=\glueexpr\tud at dim@layouthoffset-\tud at bleedmargin@dim\relax,%
+    height=\tud at dim@barheight,%
+    voffset=\tud at dim@topmargin,%
+    addvoffset=\tud at dim@layoutvoffset,%
     contents={%
       \ifnum\tud at head@bar at num>\@ne\relax% cdhead=barcolor/color
         \color{HKS41!60}%
-        \setlength\@tempdima{\dimexpr\ht\strutbox-\tud at len@barheight\relax}%
-        \ifdim\@tempdima<\z@\relax\setlength\@tempdima{\z@}\fi%
+        \tud at setdim\@tempdima{\ht\strutbox-\tud at dim@barheight}%
+        \ifdim\@tempdima<\z@\relax\tud at setdim\@tempdima{\z@}\fi%
         \raisebox{\@tempdima}{\rule{\layerwidth}{\layerheight}}%
       \fi%
     },%
@@ -207,8 +199,8 @@
 %    \begin{macrocode}
   \DeclareNewLayer[%
     background,headsep,%
-    voffset=\dimexpr\tud at len@topmargin+\tud at len@line\relax,%
-    addvoffset=\tud at len@layoutvoffset,%
+    voffset=\tud at dim@topmargin+\tud at dim@line,%
+    addvoffset=\tud at dim@layoutvoffset,%
     contents={%
       \tud at head@font at set%
       \tud at head@text at set%
@@ -233,8 +225,8 @@
 %    \begin{macrocode}
   \DeclareNewLayer[%
     background,headsep,%
-    voffset=\dimexpr\tud at len@topmargin-.5\tud at len@line\relax,%
-    addvoffset=\tud at len@layoutvoffset,%
+    voffset=\tud at dim@topmargin-\tud at dim@line/2,%
+    addvoffset=\tud at dim@layoutvoffset,%
     contents={%
       \ifnum\tud at head@bar at num<\tw@\relax% cdhead=nocolor/litecolor
         \if at tud@head at widebar\else\tud at head@rule{\layerwidth}\fi%
@@ -243,9 +235,8 @@
   ]{tudheadings.head.upline}%
   \DeclareNewLayer[%
     background,headsep,%
-    voffset=\dimexpr\tud at len@topmargin+\tud at len@barheight%
-      -.5\tud at len@line\relax,%
-    addvoffset=\tud at len@layoutvoffset,%
+    voffset=\tud at dim@topmargin+\tud at dim@barheight-\tud at dim@line/2,%
+    addvoffset=\tud at dim@layoutvoffset,%
     contents={%
       \ifnum\tud at head@bar at num<\tw@\relax% cdhead=nocolor/litecolor
         \if at tud@head at widebar\else\tud at head@rule{\layerwidth}\fi%
@@ -254,10 +245,10 @@
   ]{tudheadings.head.lowline}%
   \DeclareNewLayer[%
     background,%
-    width=\dimexpr\tud at len@layoutwidth+\tud at dim@bleedmargin*2\relax,%
-    addhoffset=\dimexpr\tud at len@layouthoffset-\tud at dim@bleedmargin\relax,%
-    voffset=\dimexpr\tud at len@topmargin-.5\tud at len@line\relax,%
-    addvoffset=\tud at len@layoutvoffset,%
+    width=\glueexpr\tud at dim@layoutwidth+(\tud at bleedmargin@dim)*2\relax,%
+    addhoffset=\glueexpr\tud at dim@layouthoffset-\tud at bleedmargin@dim\relax,%
+    voffset=\tud at dim@topmargin-\tud at dim@line/2,%
+    addvoffset=\tud at dim@layoutvoffset,%
     contents={%
       \ifnum\tud at head@bar at num<\tw@\relax% cdhead=nocolor/litecolor
         \if at tud@head at widebar\tud at head@rule{\layerwidth}\fi%
@@ -266,11 +257,10 @@
   ]{tudheadings.head.uplinewide}%
   \DeclareNewLayer[%
     background,%
-    width=\dimexpr\tud at len@layoutwidth+\tud at dim@bleedmargin*2\relax,%
-    addhoffset=\dimexpr\tud at len@layouthoffset-\tud at dim@bleedmargin\relax,%
-    voffset=\dimexpr\tud at len@topmargin+\tud at len@barheight%
-      -.5\tud at len@line\relax,%
-    addvoffset=\tud at len@layoutvoffset,%
+    width=\glueexpr\tud at dim@layoutwidth+(\tud at bleedmargin@dim)*2\relax,%
+    addhoffset=\glueexpr\tud at dim@layouthoffset-\tud at bleedmargin@dim\relax,%
+    voffset=\tud at dim@topmargin+\tud at dim@barheight-\tud at dim@line/2,%
+    addvoffset=\tud at dim@layoutvoffset,%
     contents={%
       \ifnum\tud at head@bar at num<\tw@\relax% cdhead=nocolor/litecolor
         \if at tud@head at widebar\tud at head@rule{\layerwidth}\fi%
@@ -288,8 +278,8 @@
 %    \begin{macrocode}
   \DeclareNewLayer[%
     foreground,headsep,%
-    addvoffset=.5\tud at len@headsep,%
-    height=\baselineskip,%
+    addvoffset=\tud at dim@headsep/2,%
+    height=1\baselineskip,%
     contents={\if at tud@head at date\hfill\tud at date@print\fi},%
   ]{tudheadings.head.date}%
 %    \end{macrocode}
@@ -312,10 +302,10 @@
 %    \begin{macrocode}
   \DeclareNewLayer[%
     background,foot,%
-    width=\dimexpr\tud at len@layoutwidth+\tud at dim@bleedmargin*2\relax,%
-    hoffset=\dimexpr\tud at len@layouthoffset-\tud at dim@bleedmargin\relax,%
-    height=\dimexpr\tud at len@layoutheight-\layeryoffset%
-      +\tud at len@layoutvoffset+\tud at dim@bleedmargin\relax,%
+    width=\glueexpr\tud at dim@layoutwidth+(\tud at bleedmargin@dim)*2\relax,%
+    hoffset=\glueexpr\tud at dim@layouthoffset-\tud at bleedmargin@dim\relax,%
+    height=\glueexpr\tud at dim@layoutheight-\layeryoffset%
+      +\tud at dim@layoutvoffset+\tud at bleedmargin@dim\relax,%
     addvoffset=-\dp\strutbox,%
     contents={%
       \if at tud@foot at colored%
@@ -330,7 +320,9 @@
           \fi%
         }{%
           \def\@tempc{\color{HKS41}}%
-          \ifstr{\tud at pagecolor}{HKS41}{\def\@tempc{\color{HKS41!60}}}{}%
+          \tud at if@strequal{\tud at pagecolor}{HKS41}%
+            {\def\@tempc{\color{HKS41!60}}}%
+            {}%
         }%
         \ifx\@tempc\relax\else%
           \@tempc\rule{\layerwidth}{\layerheight}%
@@ -345,7 +337,7 @@
 %    \begin{macrocode}
   \tud at if@v at lower{2.03}{%
     \ModifyLayer[%
-      addvoffset=-\tud at len@ddcdiff+\ht\strutbox,%
+      addvoffset=-\tud at dim@ddcdiff+\ht\strutbox,%
       contents={%
         \if at tud@foot at colored%
           \let\@tempc\relax%
@@ -357,7 +349,9 @@
             \fi%
           }{%
             \def\@tempc{\color{HKS41}}%
-            \ifstr{\tud at pagecolor}{HKS41}{\def\@tempc{\color{HKS41!60}}}{}%
+            \tud at if@strequal{\tud at pagecolor}{HKS41}%
+              {\def\@tempc{\color{HKS41!60}}}%
+              {}%
           }%
           \ifx\@tempc\relax\else%
             \tud at ddc@check%
@@ -365,7 +359,7 @@
               \vbox to \layerheight{%
                 \vfil\@tempc%
                 \rule{\layerwidth}{%
-                  \dimexpr\layerheight-\tud at len@ddcdiff+\ht\strutbox\relax%
+                  \dimexpr\layerheight-\tud at dim@ddcdiff+\ht\strutbox\relax%
                 }%
               }%
             \else% \tud at ddc@foot at num!=false
@@ -384,8 +378,7 @@
 %    \begin{macrocode}
   \DeclareNewLayer[%
     background,foot,%
-    height=\dimexpr\tud at len@layoutheight-\layeryoffset%
-      +\tud at len@layoutvoffset\relax,%
+    height=\tud at dim@layoutheight-\layeryoffset+\tud at dim@layoutvoffset,%
     contents={%
 %    \end{macrocode}
 % Falls die Höhe der Logos im Fuß nicht durch den Anwender festgelegt wurden, 
@@ -393,13 +386,10 @@
 % Layers nicht vollständig genutzt, um bei einem farbigen Fußbereich einen 
 % gewissen Abstand vom Inhalt zur Kante zu erhalten.
 %    \begin{macrocode}
-      \TUD at deprecated@lengthcs[%
-        \global\@tud at footlogo@option at settrue%
-      ]{footlogoheight}%
-      \setlength\@tempdima{\dimexpr\layerheight-\dp\strutbox\relax}%
+      \tud at setdim\@tempdima{\layerheight-\dp\strutbox}%
 %    \end{macrocode}
 % Im Bedarfsfall werden die Boxen vor der Ausgabe durch die einzelnen 
-% \cs{\dots{}@use}-Befehle neu gesetzt. Danach erfolgt die Ausgabe, wobei die 
+% |\... at use|-Befehle neu gesetzt. Danach erfolgt die Ausgabe, wobei die 
 % Boxen übereinander gelegt werden.
 %    \begin{macrocode}
       \tud at footlogo@cmd at use{\@tempdima}{\layerwidth}%
@@ -413,16 +403,13 @@
 %    \begin{macrocode}
   \tud at if@v at lower{2.03}{%
     \ModifyLayer[%
-      addvoffset=-\tud at len@ddcdiff+\ht\strutbox,%
+      addvoffset=-\tud at dim@ddcdiff+\ht\strutbox,%
       contents={%
-        \TUD at deprecated@lengthcs[%
-          \global\@tud at footlogo@option at settrue%
-        ]{footlogoheight}%
-        \setlength\@tempdima{\dimexpr\layerheight-\dp\strutbox\relax}%
+        \tud at setdim\@tempdima{\layerheight-\dp\strutbox}%
         \tud at ddc@check%
         \ifcase\@tempb\relax% \tud at ddc@foot at num=false
-          \addtolength\@tempdima{\dimexpr\ht\strutbox-\tud at len@ddcdiff\relax}%
-          \vskip\dimexpr\tud at len@ddcdiff-\ht\strutbox-\baselineskip\relax%
+          \tud at addtodim\@tempdima{\ht\strutbox-\tud at dim@ddcdiff}%
+          \vskip\dimexpr\tud at dim@ddcdiff-\ht\strutbox-1\baselineskip\relax%
         \fi%
         \tud at footlogo@cmd at use{\@tempdima}{\layerwidth}%
         \tud at footlogo@ddc at use{\@tempdima}{\layerwidth}%
@@ -462,7 +449,7 @@
 % entsprechenden \pgs{scrheadings}-Ebenen verwendet. 
 %    \begin{macrocode}
   \DeclareNewPageStyleByLayers[%
-    onselect=\tud at ps@onselect,onbackground=\tud at ps@onbackground%
+    onbackground=\tud at ps@onbackground%
   ]{tudheadings}{%
     tudheadings.head.back,%
     tudheadings.head.content,%
@@ -493,7 +480,7 @@
 % Fußzeilenebenen des Seitenstils \pgs{plain.scrheadings} hinzugefügt.
 %    \begin{macrocode}
   \DeclareNewPageStyleByLayers[%
-    onselect=\tud at ps@onselect,onbackground=\tud at ps@onbackground%
+    onbackground=\tud at ps@onbackground%
   ]{plain.tudheadings}{%
     tudheadings.head.back,%
     tudheadings.head.content,%
@@ -523,7 +510,7 @@
 % lediglich aus dem Kopf besteht und einen lerren Seitenfuß hat.
 %    \begin{macrocode}
   \DeclareNewPageStyleByLayers[%
-    onselect=\tud at ps@onselect,onbackground=\tud at ps@onbackground%
+    onbackground=\tud at ps@onbackground%
   ]{empty.tudheadings}{%
     tudheadings.head.back,%
     tudheadings.head.content,%
@@ -554,12 +541,10 @@
 %    \begin{macrocode}
   \DeclareNewLayer[%
     background,%
-    area=%
-      {\dimexpr\tud at len@layouthoffset-\tud at dim@bleedmargin\relax}%
-      {\dimexpr\tud at len@layoutvoffset-\tud at dim@bleedmargin\relax}%
-      {\dimexpr\tud at len@layoutwidth+\tud at dim@bleedmargin*2\relax}%
-      {\dimexpr\tud at len@layoutheight+\tud at dim@bleedmargin*2\relax}%
-    ,%
+    hoffset=\glueexpr\tud at dim@layouthoffset-\tud at bleedmargin@dim\relax,%
+    voffset=\glueexpr\tud at dim@layoutvoffset-\tud at bleedmargin@dim\relax,%
+    width=\glueexpr\tud at dim@layoutwidth+(\tud at bleedmargin@dim)*2\relax,%
+    height=\glueexpr\tud at dim@layoutheight+(\tud at bleedmargin@dim)*2\relax,%
     contents={%
       \ifdefvoid{\tud at pagecolor}{}{%
         \color{\tud at pagecolor}%
@@ -574,6 +559,40 @@
 % \end{layerpagestyle}^^A empty.tudheadings
 % \end{layerpagestyle}^^A plain.tudheadings
 % \end{layerpagestyle}^^A tudheadings
+% Normalerweise werden durch \pkg{scrlayer-scrpage} bei der Umschaltung auf 
+% einen mit dem Befehl \cs{newpairofpagestyles}\marg{Seitenstil} definierten 
+% Seitenstil, die Seitenstile \pgs{headings} und \pgs{plain} als Aliase für 
+% \pgs{\meta{Seitenstil}} und \pgs{plain.\meta{Seitenstil}} festgelegt. 
+% Allerdings definiert dieser Befehl zusätzliche Ebenen für Kopf- und Fußzeile, 
+% weshalb auf die Verwendung verzichtet wird. Das automatische Umschalten soll 
+% dennoch ermöglicht werden, weshalb hierfür der Haken \val{onselect} verwendet 
+% wird, der für jeden Seitenstil bei der Initialisierung aufgerufen wird.
+%    \begin{macrocode}
+  \AddToLayerPageStyleOptions{@everystyle@}{%
+    onselect={%
+      \tud at if@tudheadings{\currentpagestyle}{%
+        \DeclarePageStyleAlias{plain}{plain.tudheadings}%
+        \DeclarePageStyleAlias{headings}{tudheadings}%
+        \def\sls at currentheadings{tudheadings}%
+        \def\sls at currentplain{plain.tudheadings}%
+        \TUD at deprecated@length\footlogoheight%
+%    \end{macrocode}
+% Im Seitenfuß wird für die Seitenzahl und ggf. die Kolumnentitel die passende 
+% Schrift verwendet.
+%    \begin{macrocode}
+        \tud at komafont@set{pagenumber}{\usekomafont{tudheadings}}%
+        \tud at komafont@set{pagefoot}{\usekomafont{tudheadings}}%
+      }{%
+%    \end{macrocode}
+% Handelt es sich nicht um einen \pgs{tudheadings} Seitenstil, werden die 
+% Schriften für Seitenzahl und Kolumnentitel zurückgesetzt.
+%    \begin{macrocode}
+        \tud at komafont@unset{pagenumber}%
+        \tud at komafont@unset{pagefoot}%
+      }%
+    }%
+  }%
+%    \end{macrocode}
 % Damit ist die Deklaration der Seitenstile mit \pkg{scrlayer-scrpage} beendet.
 %    \begin{macrocode}
 }
@@ -612,7 +631,9 @@
 % Wird der Befehl \cs{thispagestyle} verwendet, muss dafür Sorge getragen 
 % werden, dass kein Alias-Seitenstil expandiert wird.
 %    \begin{macrocode}
-\patchcmd{\thispagestyle}{\gdef\@specialstyle{#1}}{%
+\patchcmd\thispagestyle{%
+  \gdef\@specialstyle{#1}%
+}{%
   \xdef\@specialstyle{\GetRealPageStyle{#1}}%
 }{}{\tud at patch@wrn{thispagestyle}}
 %    \end{macrocode}
@@ -629,7 +650,7 @@
 \newcommand*\tud at pagestyle{}
 \let\tud at pagestyle\pagestyle
 \newcommand*\currentpagestyle{plain}
-\pretocmd{\tud at pagestyle}{%
+\pretocmd\tud at pagestyle{%
   \tud at BeforeSelectAnyPageStyle{#1}%
   \edef\currentpagestyle{#1}%
 }{}{\tud at patch@wrn{pagestyle}}
@@ -672,9 +693,9 @@
 % einige notwendige Makros definiert.
 %    \begin{macrocode}
 \TUD at UnwindPackage{scrlayer-scrpage}{%
-  \ifcsundef{if at chapter}{%
+  \ifundef{\if at chapter}{%
     \newif\if at chapter%
-    \ifcsundef{chapter}{\@chapterfalse}{\@chaptertrue}%
+    \ifundef{\chapter}{\@chapterfalse}{\@chaptertrue}%
   }{}%
   \cslet{ps at tudheadings}{\ps at headings}%
   \cslet{ps at plain.tudheadings}{\ps at plain}%
@@ -681,6 +702,7 @@
   \cslet{ps at empty.tudheadings}{\ps at empty}%
   \providecommand*\currentpagestyle{plain}%
   \providecommand*\BeforeSelectAnyPageStyle[1]{}%
+  \providecommand*\tud at BeforeSelectAnyPageStyle[1]{}%
   \providecommand*\GetRealPageStyle[1]{#1}%
 %    \end{macrocode}
 % Außerdem wird die angepasste Definition von \cs{pagestyle} verwendet. 
@@ -699,27 +721,6 @@
 % \end{macro}^^A \ps at empty.tudheadings
 % \end{macro}^^A \ps at plain.tudheadings
 % \end{macro}^^A \ps at tudheadings
-% \begin{macro}{\tud at ps@onselect}
-% \changes{v2.03}{2015/01/09}{neu}^^A
-% Der Befehl wird bei der Initialisierung der Seitenstile aufgerufen.
-%    \begin{macrocode}
-\newcommand*\tud at ps@onselect{%
-%    \end{macrocode}
-% Normalerweise werden durch \pkg{scrlayer-scrpage} bei der Umschaltung auf 
-% einen mit dem Befehl \cs{newpairofpagestyles}\marg{Seitenstil} definierten 
-% Seitenstil, die Seitenstile \pgs{headings} und \pgs{plain} als Aliase für 
-% \pgs{\meta{Seitenstil}} und \pgs{plain.\meta{Seitenstil}} festgelegt. 
-% Allerdings definiert dieser Befehl zusätzliche Ebenen für Kopf- und Fußzeile, 
-% weshalb auf die Verwendung verzichtet wird. Das automatische Umschalten soll 
-% dennoch ermöglicht werden.
-%    \begin{macrocode}
-  \DeclarePageStyleAlias{plain}{plain.tudheadings}%
-  \DeclarePageStyleAlias{headings}{tudheadings}%
-  \def\sls at currentheadings{tudheadings}%
-  \def\sls at currentplain{plain.tudheadings}%
-}
-%    \end{macrocode}
-% \end{macro}^^A \tud at ps@onselect
 %
 % \subsubsection{Gestaltungsvarianten für Kopf- und Fußzeile}
 %
@@ -794,7 +795,7 @@
 % für farbige Titel- und Teileseiten\dots
 %    \begin{macrocode}
     \tud at locked@bool at preset{@tud at head@widebar}{true}%
-    \ifstr{\tud at pagecolor}{HKS41}{%
+    \tud at if@strequal{\tud at pagecolor}{HKS41}{%
       \renewcommand*\tud at head@logocolor{white}%
       \renewcommand*\tud at head@fontcolor{white}%
       \renewcommand*\tud at foot@logocolor{white}%
@@ -836,8 +837,10 @@
 % des Querbalkens gesetzt, die Schriftfarbe des Fußes wird global geändert, 
 % damit Seitenzahl und Kolumnentitel gegebenenfalls angepasst werden.
 %    \begin{macrocode}
-  \let\tud at len@line\tud at len@thinline%
-  \ifstr{\tud at head@fontcolor}{white}{\let\tud at len@line\tud at len@heavyline}{}%
+  \let\tud at dim@line\tud at dim@thinline%
+  \tud at if@strequal{\tud at head@fontcolor}{white}%
+    {\let\tud at dim@line\tud at dim@heavyline}%
+    {}%
   \global\let\tud at foot@fontcolor\tud at foot@fontcolor%
 }
 %    \end{macrocode}
@@ -880,13 +883,13 @@
 % gesetzt werden soll, wenn ein weiteres Feld nachfolgt.
 %    \begin{macrocode}
 \newcommand*\tud at head@text at add[3][{, }]{%
-  \ifxblank{#3}{}{%
+  \tud at if@strblank{#3}{}{%
     \edef\tud at head@text at delimiter{\expandonce\tud at head@text at buffer}%
     \def\tud at head@text at buffer{#1}%
     \edef\@tempa{%
       \expandonce\tud at head@text at line%
       \expandonce\tud at head@text at delimiter%
-      \etex at unexpanded{#2#3}%
+      \unexpanded{#2#3}%
     }%
 %    \end{macrocode}
 % Sollte das hinzuzufügende Feld die aktuelle Kopfzeile \cs{tud at head@text at line} 
@@ -914,7 +917,7 @@
 % der zu großen Breite der Kopfinformationen, was bei kleinen Papierformaten
 % geschehen kann, (re-)definiert.
 %    \begin{macrocode}
-\newif\if at tud@head at text@set
+\tud at newif\if at tud@head at text@set
 \newcommand*\tud at head@text at wrn[1]{}
 \newcommand*\tud at head@text at set{%
   \if at tud@head at text@set%
@@ -939,7 +942,7 @@
 % die zusätzliche Zeile in die Liste expandiert.
 %    \begin{macrocode}
     \listeadd\tud at head@text at list{\expandonce\tud at head@text at line}%
-    \ifxblank{\@extraheadline}{}{%
+    \tud at if@strblank{\@extraheadline}{}{%
       \listadd\tud at head@text at list{\tud at head@font at light\@extraheadline}%
     }%
     \gdef\tud at head@text at wrn##1{%
@@ -971,7 +974,7 @@
 % Die Farbe des Textes der ersten Zeile entspricht immer der des Kopfes.
 %    \begin{macrocode}
   \def\@tempb{\tud at color{\tud at head@fontcolor}}%
-  \def\@tempc{\depth+\tud at len@heavyline}%
+  \def\@tempc{\depth+\tud at dim@heavyline}%
 %    \end{macrocode}
 % Das Makro \cs{@tempa} wird zur Ababreitung der Liste \cs{tud at head@text at list} 
 % definiert.
@@ -991,7 +994,7 @@
     \@tempb%
     \tud at head@text at write[\@tempc]{##1}%
     \def\@tempb{\newline}%
-    \def\@tempc{\z@}%
+    \let\@tempc\z@%
 %    \end{macrocode}
 % Die weiteren Zeilen sind bei zweifarbigen Kopf normalerweise blau, nur für
 % einen dunklen Seitenhintergrund weiß.
@@ -998,7 +1001,7 @@
 %    \begin{macrocode}
     \ifnum\tud at head@bar at num>\@ne\relax% cdhead=barcolor/color
       \ifdefvoid{\tud at pagecolor}{\color{HKS41}}{%
-        \ifstr{\tud at pagecolor}{HKS41}{\color{white}}{\color{HKS41}}%
+        \tud at if@strequal{\tud at pagecolor}{HKS41}{\color{white}}{\color{HKS41}}%
       }%
     \fi%
   }%
@@ -1012,7 +1015,7 @@
 % lassen, wird dies hier temporär unterdrückt.
 %    \begin{macrocode}
     \let\@raggedtwoe at everyselectfont\relax%
-    \setlength\spaceskip{\z@}%
+    \tud at setdim\spaceskip{\z@}%
     \selectfont%
     \offinterlineskip%
     \forlistloop\@tempa{\tud at head@text at list}%
@@ -1028,9 +1031,11 @@
 % Befehl zur Ausgabe der ersten und evtl. zweiten Textzeile im TUD-Kopf
 %    \begin{macrocode}
 \newcommand*\tud at head@text at write[2][\z@]{%
-  \raisebox{\dimexpr(\tud at len@barheight+2\tud at len@line-\totalheight)/2\relax}[%
-    \dimexpr\tud at len@barheight-\depth\relax%
-  ][\dimexpr#1\relax]{#2\vphantom{gjpqy\"A\"O\"U}}%
+  \raisebox{%
+    \dimexpr(\tud at dim@barheight+\tud at dim@line*2-\totalheight)/2\relax%
+  }[%
+    \dimexpr\tud at dim@barheight-\depth\relax%
+  ][\dimexpr\glueexpr#1\relax\relax]{#2\vphantom{\tud at font@phantomglyphs}}%
 }
 %    \end{macrocode}
 % \end{macro}^^A \tud at head@text at write
@@ -1039,11 +1044,11 @@
 % Der Querbalken des Kopfes läuft je nach Parameterwahl \cs{tud at head@bar at num}
 % entweder nur über den Textbereich oder aber über die gesamte Seitenbreite.
 % Der Befehl erzeugt eine horizontale Linie mit der übergebenen Breite und 
-% über \cs{tud at len@line} definierter Dicke.
+% über \cs{tud at dim@line} definierter Dicke.
 %    \begin{macrocode}
 \newcommand*\tud at head@rule[1]{%
   \tud at color{\tud at head@fontcolor}%
-  \rule[\ht\strutbox]{#1}{\tud at len@line}%
+  \rule[\ht\strutbox]{#1}{\tud at dim@line}%
 }
 %    \end{macrocode}
 % \end{macro}^^A \tud at head@rule
@@ -1062,7 +1067,7 @@
 % von \cs{includegraphics} möglichst gering zu halten.
 %    \begin{macrocode}
 \newcommand*\tud at newlayerbox[1]{%
-  \expandafter\newsavebox\csname tud at layer@#1\endcsname%
+  \global\expandafter\newsavebox\csname tud at layer@#1\endcsname%
 }
 \newcommand*\tud at savelayerbox[1]{%
   \global\expandafter\sbox\csname tud at layer@#1\endcsname%
@@ -1076,6 +1081,7 @@
 % \end{macro}^^A \tud at newlayerbox
 % \begin{macro}{\tud at vlayerbox}
 % \changes{v2.04}{2015/05/31}{neu}^^A
+% \changes{v2.06o}{2022/08/08}{unschöner Fix für duplizierte Warnungen}^^A
 % Für die Ausgabe der Logos und Inhalte wird dieser Befehl definiert. Dieser 
 % setzt die im zweiten Argument angegebenen Inhalte in eine vertikale Box, 
 % deren gewünschte Höhe im ersten Argument angegeben wird. Für den Fall, dass 
@@ -1085,18 +1091,27 @@
 % ergreifen und nicht lediglich eine Meldung einer zu übervollen \cs{vbox} zu
 % erhalten.
 %    \begin{macrocode}
-\newcommand*\tud at vlayerbox[3]{%
+\newcommand*\tud at vlayerbox[4][]{%
   \begingroup%
-    \setbox\z@\vbox{#2}%
-    \setlength\@tempdima{\dimexpr\ht\z at +\dp\z at -#1\relax}%
-    \ifdim\@tempdima>\z@\relax%
-      \ClassWarning{\TUD at Class@Name}{%
-        #3\MessageBreak%
-        The maximum height is exceeded by \the\@tempdima\MessageBreak%
+    \setbox\z@\vbox{#3}%
+    \tud at setdim\tud at res@glue{\dimexpr\glueexpr#2\relax\relax}%
+    \ifdim\dimexpr\ht\z at +\dp\z at -\tud at res@glue\relax>\p@\relax%
+      \edef\tud at res@a{%
+        \noexpand\ClassWarning{\noexpand\TUD at Class@Name}{%
+          #4\noexpand\MessageBreak%
+          The total height of \the\dimexpr\ht\z at +\dp\z@\relax\space exceeds the%
+          \noexpand\MessageBreak maximum height (\the\tud at res@glue)%
+        }%
       }%
+      \IfArgIsEmpty{#1}{\tud at res@a}{%
+        \expandafter\ifx\csname tud at layer@#1 at wrn\endcsname\tud at res@a\else%
+          \tud at res@a%
+          \global\cslet{tud at layer@#1 at wrn}\tud at res@a%
+        \fi%
+      }%
     \fi%
   \endgroup%
-  \vbox to #1{#2}%
+  \vbox to #2{#3}%
 }
 %    \end{macrocode}
 % \end{macro}^^A \tud at vlayerbox
@@ -1103,9 +1118,265 @@
 %
 % \iffalse
 %</class&body>
+% \fi
+%
+% \subsection{Optionen für das \DDC-Logo}
+%
+% \begin{macro}{\tud at comp@clearpage}
+% \changes{v2.04}{2015/05/31}{neu}^^A
+% \begin{macro}{\tud at comp@resetpagestyle}
+% \changes{v2.04}{2015/05/31}{neu}^^A
+% \begin{macro}{\if at tud@ddc at internal}
+% \changes{v2.02}{2014/07/08}{neu}^^A
+% Bis zur Version~v2.02 wurden unterschiedliche Satzsiegel für den Seitenfuß 
+% mit und ohne \DDC-Logo verwendet. Damit dieser im Zweifelsfall umgestellt 
+% werden kann, wurde vor dem Ausführen der entsprechenden Optionen ein 
+% Seitenumbruch erzwungen und nach dem Verarbeiten der Optionen der aktuelle 
+% Seitenstil erneut aufgerufen. Die beiden folgenden Makros werden für dieses 
+% Unterfangen definiert, jedoch bei der Abarbeitung der Optionen nur noch im 
+% Kompatibilitätmodus ausgeführt. Der Schalter \cs{if at tud@ddc at internal} wird 
+% intern von den Optionen \opt{ddc}, \opt{ddchead} und \opt{ddcfoot} verwendet,
+% um rekursive Aufrufe der Optionen zu verhindern.
+%    \begin{macrocode}
 %<*class&option>
+\tud at newif\if at tud@ddc at internal
+\newcommand*\tud at comp@clearpage{}%
+\newcommand*\tud at comp@resetpagestyle{}%
+%</class&option>
+%<*class&body>
+\tud at if@v at lower{2.04}{%
+  \renewcommand*\tud at comp@clearpage{%
+    \if at tud@ddc at internal\else%
+      \tud at if@tudheadings{\currentpagestyle}{\clearpage}{}%
+    \fi%
+  }%
+  \renewcommand*\tud at comp@resetpagestyle{%
+    \if at tud@ddc at internal\else%
+      \tud at if@tudheadings{\currentpagestyle}{%
+        \expandafter\pagestyle\expandafter{\currentpagestyle}%
+      }{}%
+    \fi%
+  }%
+}{}%
+%</class&body>
+%    \end{macrocode}
+% \end{macro}^^A \if at tud@ddc at internal
+% \end{macro}^^A \tud at comp@clearpage
+% \end{macro}^^A \tud at comp@resetpagestyle
+%
+% \iffalse
+%<*class&option>
 % \fi
 %
+% \begin{option}{ddc}
+% \changes{v2.02}{2014/06/23}{automatische Logowahl}^^A
+% \begin{option}{ddchead}
+% \changes{v2.02}{2014/06/23}{Logo von \DDC entweder in Kopf oder Fuß}^^A
+% \begin{option}{ddcfoot}
+% \changes{v2.02}{2014/06/23}{Logo von \DDC entweder in Kopf oder Fuß}^^A
+% Diese Optionen dienen zur Auswahl des \DDC-Logos auf Seiten mit dem Stil 
+% \pgs{tudheadings}. Die Option \opt{ddchead} setzt das Logo dabei immer in den
+% Kopf, wobei ein mit \cs{headlogo} definiertes Zweitlogo gegebenenfalls 
+% überschrieben wird. Die Option \opt{ddcfoot} setzt das Logo immer in den Fuß. 
+% Mit der Option \opt{ddc} wird das Logo nur in den Kopf gesetzt, wenn kein 
+% Zweitlogo angegeben ist. Ist dies jedoch der Fall, wird das Logo stattdessen 
+% im Fuß ausgegeben.
+% \begin{macro}{\tud at ddc@switch}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% Das Makro definiert die gültigen Werte für die \DDC-Optionen \opt{ddc}, 
+% \opt{ddchead} sowie \opt{ddcfoot}.
+%    \begin{macrocode}
+\newcommand*\tud at ddc@switch{}
+\edef\tud at ddc@switch{%
+  \TUD at bool@numkey,%
+  {color}{2},{colour}{2},{cdcolor}{2},{cdcolour}{2},%
+  {colorblack}{3},{colourblack}{3},{cdcolorblack}{3},{cdcolourblack}{3},%
+  {gray}{4},{grey}{4},{hks92}{4},{cdgray}{4},{cdgrey}{4},%
+  {black}{5},{cdblack}{5},%
+  {blue}{6},{hks41}{6},{cdblue}{6},{cddarkblue}{6},%
+  {white}{7},{cdwhite}{7}%
+}
+%    \end{macrocode}
+% \end{macro}^^A \tud at ddc@switch
+% \begin{macro}{\tud at ddc@auto at num}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% \begin{macro}{\if at tud@ddc at auto}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% \begin{macro}{\if at tud@headlogo at option@set}
+% \changes{v2.04}{2015/05/31}{neu}^^A
+% \begin{macro}{\if at tud@footlogo at option@set}
+% \changes{v2.04}{2015/06/01}{neu}^^A
+% Die Option \opt{ddc}.
+%    \begin{macrocode}
+\tud at newif\if at tud@headlogo at option@set
+\tud at newif\if at tud@footlogo at option@set
+\tud at newif\if at tud@ddc at auto
+\newcommand*\tud at ddc@auto at num{0}
+\TUD at key{ddc}[true]{%
+%    \end{macrocode}
+% Im Kompatibiltätsmodus wird ein Seitenumbruch erzwungen. Anschließend wird 
+% die Option abgearbeitet.
+%    \begin{macrocode}
+  \tud at comp@clearpage%
+  \TUD at set@numkey{ddc}{tud at ddc@auto at num}{\tud at ddc@switch}{#1}%
+  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+%    \end{macrocode}
+% Wurde die Option \opt{ddc} intern durch \opt{ddchead} oder \opt{ddcfoot} 
+% aufgerufen, wird die automatische Auswahl des \DDC-Logos deaktiviert.
+%    \begin{macrocode}
+    \if at tud@ddc at internal%
+      \@tud at ddc@autofalse%
+    \else%
+%    \end{macrocode}
+% Andernfalls wird die automatische Auswahl aktiviert und die beiden Optionen
+% \opt{ddchead} sowie \opt{ddcfoot} intern zurückgesetzt.
+%    \begin{macrocode}
+      \@tud at ddc@autotrue%
+      \@tud at ddc@internaltrue%
+      \TUDoptions{ddchead=false}%
+      \TUDoptions{ddcfoot=false}%
+      \@tud at ddc@internalfalse%
+    \fi%
+%    \end{macrocode}
+% Sowohl die \DDC-Logos als auch ein mögliches Zweilogo (\cs{headlogo}) werden
+% in den entsprechenden Layern durch Boxen ausgegeben. Die beiden Schalter 
+% führen zum Erneuern der dazugehörigen Logoboxen. Siehe die Beschreibung der 
+% Makros \cs{tud at headlogo@option at set} sowie \cs{tud at footlogo@option at set}.
+%    \begin{macrocode}
+    \global\@tud at headlogo@option at settrue%
+    \global\@tud at footlogo@option at settrue%
+  \fi%
+%    \end{macrocode}
+% Abschließend wird im Kompatibilitätsmodus der aktuelle Seitenstil aufgerufen,
+% um bei einem geänderten Fuß den notwendigen Satzspiegel zu laden.
+%    \begin{macrocode}
+  \tud at comp@resetpagestyle%
+}
+%    \end{macrocode}
+% \end{macro}^^A \if at tud@footlogo at option@set
+% \end{macro}^^A \if at tud@headlogo at option@set
+% \end{macro}^^A \if at tud@ddc at auto
+% \end{macro}^^A \tud at ddc@auto at num
+% \begin{macro}{\tud at ddc@head at num}
+% \changes{v2.03}{2015/01/22}{Seitenstilauswahl bei Deaktivierung verbessert}^^A
+% Die Option \opt{ddchead} dient zum zwingenden Setzen des \DDC-Logos im Kopf 
+% der Seiten im Stil von \pgs{tudheadings}.
+%    \begin{macrocode}
+\newcommand*\tud at ddc@head at num{0}
+\TUD at key{ddchead}[true]{%
+%    \end{macrocode}
+% Der Seitenumbruch im Kompatibilitätsmodus.
+%    \begin{macrocode}
+  \tud at comp@clearpage%
+  \TUD at set@numkey{ddchead}{tud at ddc@head at num}{\tud at ddc@switch}{#1}%
+%    \end{macrocode}
+% Beim internen Aufruf soll lediglich der Wert des Schlüssels geändert werden. 
+% Wurde die Option durch den Anwender genutzt, werden die korrespondierenden 
+% Optionen zurückgesetzt. Der Aufruf der Option \opt{ddc} führt zum erneuten 
+% setzen der Logoboxen.
+%    \begin{macrocode}
+  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+    \if at tud@ddc at internal\else%
+      \@tud at ddc@internaltrue%
+      \TUDoptions{ddcfoot=false}%
+      \TUDoptions{ddc=false}%
+      \@tud at ddc@internalfalse%
+    \fi%
+  \fi%
+%    \end{macrocode}
+% Das Setzen des Seitenstils im Kompatibilitätsmodus.
+%    \begin{macrocode}
+  \tud at comp@resetpagestyle%
+}
+%    \end{macrocode}
+% \end{macro}^^A \tud at ddc@head at num
+% \begin{macro}{\tud at ddc@foot at num}
+% \changes{v2.03}{2015/01/22}{Seitenstilauswahl bei Deaktivierung verbessert}^^A
+% Die Option \opt{ddcfoot} dient zum zwingenden Setzen des \DDC-Logos im Fuß 
+% der Seiten im Stil von \pgs{tudheadings}. Das Vorgehen beim Umschalten des
+% Schlüssels ist äquivalent zur Option \opt{ddchead}
+%    \begin{macrocode}
+\newcommand*\tud at ddc@foot at num{0}
+\TUD at key{ddcfoot}[true]{%
+%    \end{macrocode}
+% Der Seitenumbruch im Kompatibilitätsmodus.
+%    \begin{macrocode}
+  \tud at comp@clearpage%
+  \TUD at set@numkey{ddcfoot}{tud at ddc@foot at num}{\tud at ddc@switch}{#1}%
+%    \end{macrocode}
+% Beim internen Aufruf soll lediglich der Wert des Schlüssels geändert werden. 
+% Wurde die Option durch den Anwender genutzt, werden die korrespondierenden 
+% Optionen zurückgesetzt. Der Aufruf der Option \opt{ddc} führt zum erneuten 
+% setzen der Logoboxen.
+%    \begin{macrocode}
+  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+    \if at tud@ddc at internal\else%
+      \@tud at ddc@internaltrue%
+      \TUDoptions{ddchead=false}%
+      \TUDoptions{ddc=false}%
+      \@tud at ddc@internalfalse%
+    \fi%
+  \fi%
+%    \end{macrocode}
+% Das Setzen des Seitenstils im Kompatibilitätsmodus.
+%    \begin{macrocode}
+  \tud at comp@resetpagestyle%
+}
+%    \end{macrocode}
+% \end{macro}^^A \tud at ddc@foot at num
+% \end{option}^^A ddcfoot
+% \end{option}^^A ddchead
+% \end{option}^^A ddc
+%
+% \iffalse
+%</class&option>
+%<*class&body>
+% \fi
+%
+% \begin{macro}{\tud at ddc@check}
+% \changes{v2.02}{2014/06/23}{neu}^^A
+% Dieses Hilfsmakro wird aufgerufen, wenn geprüft wird, welche Einstellungen
+% für Kopf und Fuß des Seitenstiles \pgs{tudheadings} zum Tragen kommen sollen.
+% Über den Schalter \cs{if at tud@ddc at auto} wird festgelegt, ob die Auswahl des
+% \DDC-Logos automatisch erfolgen soll~-- Option \opt{ddc} wurde verwendet.
+% Ist dies der Fall, wird das Logo standardmäßig im Kopf gesetzt. Ist jedoch
+% durch den Befehl \cs{headlogo} ein Zweitlogo angegeben worde, wird dieses in
+% der Fußzeile ausgegeben. Die Verwendung einer der Optionen \opt{ddchead} bzw. 
+% \opt{ddcfoot} forciert die Ausgabe des \DDC-Logos an der gewünschten Stelle.
+% Die jeweils gültige Auswahl für Kopf bzw. Fuß wird in den Makros \cs{@tempa} 
+% bzw. \cs{@tempb} geschrieben und kann anschließend ausgewertet werden.
+%    \begin{macrocode}
+\newcommand*\tud at ddc@check{%
+  \let\@tempa\tud at ddc@head at num%
+  \let\@tempb\tud at ddc@foot at num%
+  \if at tud@ddc at auto%
+    \ifdefvoid{\tud at headlogo@filename}{%
+      \let\@tempa\tud at ddc@auto at num%
+      \let\@tempb\z@%
+    }{%
+      \let\@tempa\z@%
+      \let\@tempb\tud at ddc@auto at num%
+    }%
+  \fi%
+%    \end{macrocode}
+% Für die Satzspiegelvergrößerung wird beim Vorhandensein eines oder mehrerer 
+% Logos im Fuß die Variable \cs{@tempb} auf einen negativen Wert gesetzt, um 
+% auch ohne die Ausgabe eines \DDC-Logos den Fußbereich zu vergrößern.
+%    \begin{macrocode}
+  \tud at if@v at lower{2.03}{%
+    \ifnum\@tempb=\z@\relax%
+      \ifdefvoid{\tud at footlogo@filenames}{}{\let\@tempb\m at ne}%
+    \fi%
+  }{}%
+}
+%    \end{macrocode}
+% \end{macro}^^A \tud at ddc@check
+%
+% \iffalse
+%</class&body>
+%<*class&option>
+% \fi
+%
 % \subsection{Der Kopfbereich der Seitenstile}
 %
 % Es folgen Option und Befehle zur Gestaltung des Kopfbereichs mit Hauptlogo, 
@@ -1138,8 +1409,8 @@
 \tud at locked@newnum{tud at head@font at num}{0}
 \tud at locked@newnum{tud at head@bar at num}{0}
 \tud at locked@newbool{@tud at head@widebar}
-\newif\if at tud@head at font@set
-\newif\if at tud@head at date
+\tud at newif\if at tud@head at font@set
+\tud at newif\if at tud@head at date
 \TUD at key{cdhead}[true]{%
   \TUD at set@numkey{cdhead}{@tempa}{%
     \TUD at bool@numkey,%
@@ -1231,7 +1502,7 @@
 % \changes{v2.04}{2015/05/31}{neu}^^A
 % \begin{macro}{\if at tud@mainlogo at wrn}
 % \changes{v2.04}{2015/05/31}{neu}^^A
-% \begin{length}{\tud at len@mainlogoheight}
+% \begin{length}{\tud at dim@mainlogoheight}
 % \changes{v2.04}{2015/05/31}{neu}^^A
 % \begin{macro}{\tud at mainlogo@wrn}
 % \changes{v2.02}{2014/06/23}{Umbenennen von \cs{tud at head@logo at wrn}}^^A
@@ -1241,17 +1512,17 @@
 % Satzspiegels beim Ausführen der einzelnen Seitenstil-Layer. Dafür wird der
 % Schalter \cs{if at tud@mainlogo at set} im Hook \cs{tud at AfterChangingArea} gesetzt.
 %    \begin{macrocode}
-\newlength\tud at len@mainlogoheight
+\tud at newdim\tud at dim@mainlogoheight
 \newcommand*\tud at mainlogo@wrn[1]{}
-\newif\if at tud@mainlogo at set
+\tud at newif\if at tud@mainlogo at set
 \newcommand*\tud at mainlogo@set{%
   \if at tud@mainlogo at set%
-    \def\@tempa{\includegraphics[keepaspectratio,width=\tud at len@logowidth]}%
+    \def\@tempa{\includegraphics[keepaspectratio,width=\tud at dim@logowidth]}%
     \tud at savelayerbox{main at black}{\@tempa{TUD-black}}%
     \tud at savelayerbox{main at HKS41}{\@tempa{TUD-blue}}%
     \tud at savelayerbox{main at white}{\@tempa{TUD-white}}%
-    \settoheight\tud at len@mainlogoheight{\tud at uselayerbox{main at black}}%
-    \global\tud at len@mainlogoheight=\tud at len@mainlogoheight%
+    \settoheight\tud at dim@mainlogoheight{\tud at uselayerbox{main at black}}%
+    \global\tud at dim@mainlogoheight=\tud at dim@mainlogoheight%
 %    \end{macrocode}
 % Es soll sichergestellt werden, dass das bei der Verwendung von \pkg{typearea}
 % über den Satzspiegel in den Seitenrand hinausragende TUD-Logo nicht außerhalb
@@ -1278,14 +1549,18 @@
 % den Boxen in der richtigen Größe neu zu setzen.
 %    \begin{macrocode}
     \tud at headlogo@set%
-    \@tud at footlogo@option at settrue%
+    \global\@tud at footlogo@option at settrue%
     \tud at footlogo@option at set%
     \global\@tud at mainlogo@setfalse%
   \fi%
 }
+\AtBeginDocument{%
+  \@tud at mainlogo@settrue%
+  \tud at mainlogo@set%
+}
 %    \end{macrocode}
 % \end{macro}^^A \tud at mainlogo@wrn
-% \end{length}^^A \tud at len@mainlogoheight
+% \end{length}^^A \tud at dim@mainlogoheight
 % \end{macro}^^A \if at tud@mainlogo at set
 % \end{macro}^^A \tud at mainlogo@set
 % \begin{macro}{\tud at mainlogo@use}
@@ -1295,7 +1570,7 @@
 %    \begin{macrocode}
 \newcommand*\tud at mainlogo@use{%
   \tud at mainlogo@wrn{%
-    \dimexpr\oddsidemargin+1in+\tud at len@logox-\tud at len@widemargin\relax%
+    \dimexpr\oddsidemargin+1in+\tud at dim@logox-\tud at dim@widemargin\relax%
   }%
   \tud at uselayerbox{main@\tud at head@logocolor}%
 }
@@ -1334,8 +1609,6 @@
 % \changes{v2.02}{2014/06/23}{neu}^^A
 % \begin{macro}{\tud at headlogo@fileoptions}
 % \changes{v2.02}{2014/06/23}{neu}^^A
-% \begin{macro}{\tud at headlogo@wrn}
-% \changes{v2.02}{2014/06/23}{neu}^^A
 % Diese Befehle dienen zum Einbinden eines möglichen Zweitlogos im Kopf bündig
 % zum rechten Seitenrand. Mit \cs{headlogo}\oarg{Optionsliste}\marg{Dateiname} 
 % werden der Dateiname und das optionale Argument in \cs{tud at headlogo@filename} 
@@ -1342,10 +1615,10 @@
 % bzw. \cs{tud at headlogo@fileoptions} gespeichert, damit diese später bei der
 % tatsächlichen Verwendung des Logos mit dem Makro \cs{tud at headlogo@set} an den
 % Befehl \cs{includegraphics} weitergereicht werden können.
+% \ToDo{angehängte Parameterliste \val{:} für tudpage unterstützen}[v2.07]
 %    \begin{macrocode}
 \newcommand*\tud at headlogo@filename{}
 \newcommand*\tud at headlogo@fileoptions{}
-\newcommand*\tud at headlogo@wrn{}
 \newcommand*\headlogo[2][]{%
   \tud at comp@clearpage%
   \renewcommand*\tud at headlogo@filename{#2}%
@@ -1357,18 +1630,9 @@
 %    \begin{macrocode}
   \global\@tud at headlogo@option at settrue%
   \global\@tud at footlogo@option at settrue%
-  \gdef\tud at headlogo@wrn{%
-    \ClassWarning{\TUD at Class@Name}{%
-      Secondary logo `\string\headlogo{\tud at headlogo@filename}'\MessageBreak%
-      is overwritten with DDC logo. Maybe you should\MessageBreak%
-      use `ddcfoot' or better `ddc' instead of `ddchead'%
-    }%
-    \global\let\tud at headlogo@wrn\relax%
-  }%
   \tud at comp@resetpagestyle%
 }
 %    \end{macrocode}
-% \end{macro}^^A \tud at headlogo@wrn
 % \end{macro}^^A \tud at headlogo@fileoptions
 % \end{macro}^^A \tud at headlogo@filename
 % \end{macro}^^A \headlogo
@@ -1382,7 +1646,7 @@
 %    \begin{macrocode}
 \newcommand*\tud at headlogo@set{%
   \def\@tempa{%
-    \includegraphics[keepaspectratio,totalheight=\tud at len@mainlogoheight]%
+    \includegraphics[keepaspectratio,totalheight=\tud at dim@mainlogoheight]%
   }%
   \tud at savelayerbox{head at black}{\@tempa{DDC-24}}%
   \tud at savelayerbox{head at HKS41}{\@tempa{DDC-27}}%
@@ -1399,9 +1663,11 @@
   \if at tud@headlogo at option@set%
     \def\@tempc##1##2{%
       \tud at savelayerbox{head at option}{%
-        \includegraphics[%
-          keepaspectratio,totalheight=\tud at len@mainlogoheight,##2%
-        ]{##1}%
+        \includegraphics[{%
+          keepaspectratio,%
+          totalheight=\tud at dim@mainlogoheight,%
+          ##2%
+        }]{##1}%
       }%
     }%
     \tud at savelayerbox{head at option}{}%
@@ -1408,9 +1674,8 @@
     \tud at ddc@check%
     \ifcase\@tempa\relax% \tud at ddc@head at num=false
       \ifdefvoid{\tud at headlogo@filename}{}{%
-        \protected at edef\tud at headlogo@filename{%
-          \expandafter\trim at spaces\expandafter{\tud at headlogo@filename}%
-        }%
+        \protected at edef\tud at headlogo@filename{\tud at headlogo@filename}%
+        \trim at spaces@in\tud at headlogo@filename%
         \protected at edef\@tempb{%
           \noexpand\@tempc{\tud at headlogo@filename}{\tud at headlogo@fileoptions}%
         }%
@@ -1429,6 +1694,15 @@
     \or% \tud at ddc@head at num=white
       \@tempc{DDC-30}{}%
     \fi%
+    \ifnum\@tempa>\z@\relax
+      \ifdefvoid{\tud at headlogo@filename}{}{%
+        \ClassWarning{\TUD at Class@Name}{%
+          Secondary logo `\tud at headlogo@filename'\MessageBreak%
+          is overwritten with DDC logo. Maybe you should\MessageBreak%
+          use `ddcfoot' or better `ddc' instead of `ddchead'%
+        }%
+      }%
+    \fi%
     \global\@tud at headlogo@option at setfalse%
   \fi%
 }
@@ -1437,11 +1711,13 @@
 % \end{macro}^^A \tud at headlogo@set
 % \begin{macro}{\tud at headlogo@use}
 % \changes{v2.04}{2015/05/31}{neu}^^A
+% \begin{macro}{\tud at layer@headlogo at wrn}
 % Die Ausgabe von \DDC- oder Zweitlogo im Kopf erfolgt mit diesem Makro. Dabei 
 % werden diese in einer Box vertikal zentriert.
 %    \begin{macrocode}
+\newcommand*\tud at layer@headlogo at wrn{}
 \newcommand*\tud at headlogo@use{%
-  \tud at vlayerbox{\tud at len@mainlogoheight}{%
+  \tud at vlayerbox[headlogo]{\tud at dim@mainlogoheight}{%
     \vss%
     \hbox{%
       \tud at ddc@check%
@@ -1455,12 +1731,9 @@
   }{%
     The given `\string\headlogo{\tud at headlogo@filename}' is too large.%
   }%
-  \ifdefvoid{\tud at headlogo@filename}{}{%
-    \tud at ddc@check%
-    \ifnum\@tempa>\z@\relax\tud at headlogo@wrn\fi%
-  }%
 }
 %    \end{macrocode}
+% \end{macro}^^A \tud at layer@headlogo at wrn
 % \end{macro}^^A \tud at headlogo@use
 %
 % \iffalse
@@ -1553,8 +1826,10 @@
 % Außerdem kann mit der Option \opt{extrabottommargin} gesetzt werden.
 %    \begin{macrocode}
   \else%
-    \tud at lowerstring\tud at res@a{#1}%
-    \ifdimen{\tud at res@a}{\TUDoptions{extrabottommargin=#1}}{}%
+    \TUD at set@dimkey{cdfoot}{\@tempa}{#1}%
+    \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+      \TUDoptions{extrabottommargin=#1}%
+    \fi%
   \fi%
 }
 %    \end{macrocode}
@@ -1598,10 +1873,10 @@
   \tud at ps@@restore{#1}{even}{middle}{foot}%
 }
 \newcommand*\tud at ps@@restore[4]{%
-  \ifcsdef{@@tud at ps@#1@#2@#3@#4}{%
+  \ifcsundef{@@tud at ps@#1@#2@#3@#4}{}{%
     \csletcs{sls at ps@#1@#2@#3@#4}{@@tud at ps@#1@#2@#3@#4}%
     \csundef{@@tud at ps@#1@#2@#3@#4}%
-  }{}%
+  }%
 }
 %    \end{macrocode}
 % \end{macro}^^A \tud at ps@@restore
@@ -1621,24 +1896,22 @@
 %
 % \begin{option}{footlogoheight}
 % \changes{v2.05}{2016/06/16}{neu}^^A
-% \begin{macro}{\tud at dim@footlogoheight}
+% \begin{macro}{\tud at footlogoheight@dim}
 % \changes{v2.04}{2015/06/01}{neu}^^A
+% \begin{macro}{\tud at footlogoheight@set}
 % Für den Anwender besteht mit der Option \opt{footlogoheight} die Möglichkeit, 
 % die Höhe aller Logos im Fußbereich~-- also eventuell das \DDC-Logo sowie
 % vom Anwender mit dem Befehl \cs{footlogo} angegebene Logos~-- zentral
-% festzulegen. Dabei wird der gewünschte Wert in \cs{tud at dim@footlogoheight} 
-% abgelegt. 
+% festzulegen. Dabei wird der gewünschte Wert in \cs{tud at footlogoheight@dim} 
+% abgelegt. Ist dieser \val{0pt}, wird die Höhe des Loogs der \TnUD genutzt.
+% \ToDo{\cs{tud at footlogoheight@dim} sollte raus, ergibt keinen Sinn}[v2.07]
 %    \begin{macrocode}
 %<*option>
-\newcommand*\tud at dim@footlogoheight{}
-\let\tud at dim@footlogoheight\relax
+\newcommand*\tud at footlogoheight@dim{0pt}
 \TUD at key{footlogoheight}{%
-  \TUD at set@dimenkey{footlogoheight}{\tud at dim@footlogoheight}{#1}%
+  \TUD at set@dimkey{footlogoheight}{\tud at footlogoheight@dim}{#1}%
   \ifx\FamilyKeyState\FamilyKeyStateProcessed%
-    \ifdim\dimexpr\tud at dim@footlogoheight\relax<\z@\relax%
-      \def\@tempa-##1\@nil{\def\tud at dim@footlogoheight{##1}}%
-      \@tempa#1\@nil%
-    \fi%
+    \tud at length@setabsolute\tud at footlogoheight@dim%
     \global\@tud at footlogo@option at settrue%
   \fi%
 }
@@ -1646,21 +1919,22 @@
 %    \end{macrocode}
 % Da sich mit der Version~v2.03 die Standardhöhe des \DDC-Logos im Fußbereich 
 % geändert hat, wird dieser Wert abhängig von der Einstellung für die Option 
-% \opt{tudscrver} nach der Abarbeitung der Optionen am Ende der Klasse gesetzt.
+% \opt{tudscrver} gesetzt.
 %    \begin{macrocode}
 %<*body>
-\AtEndOfClass{%
-  \ifdefvoid{\tud at dim@footlogoheight}{%
+\newcommand*\tud at footlogoheight@set{%
+  \ifdim\dimexpr\tud at footlogoheight@dim\relax=\z@\relax%
     \tud at if@v at lower{2.03}{%
-      \def\tud at dim@footlogoheight{.6\tud at len@topmargin}%
+      \def\tud at footlogoheight@dim{\tud at dim@topmargin*3/5}%
     }{%
-      \def\tud at dim@footlogoheight{\tud at len@mainlogoheight}%
+      \def\tud at footlogoheight@dim{\tud at dim@mainlogoheight}%
     }%
-  }{}%
+  \fi%
 }
 %</body>
 %    \end{macrocode}
-% \end{macro}^^A \tud at dim@footlogoheight
+% \end{macro}^^A \tud at footlogoheight@set
+% \end{macro}^^A \tud at footlogoheight@dim
 % \end{option}^^A footlogoheight
 %
 % \iffalse
@@ -1700,8 +1974,11 @@
 % das Makro \cs{tud at footlogo@ddc at set} definiert.
 %    \begin{macrocode}
 \newcommand*\tud at footlogo@ddc at set[2]{%
-  \tud at savelayerbox{foot@#1}{%
-    \includegraphics[keepaspectratio,totalheight=\tud at dim@footlogoheight]{#2}%
+  \tud at savelayerbox{#1}{%
+    \includegraphics[%
+      keepaspectratio,%
+      totalheight=\dimexpr\glueexpr\tud at footlogoheight@dim\relax\relax%
+    ]{#2}%
   }%
 }
 %    \end{macrocode}
@@ -1710,25 +1987,27 @@
 % gesetzt wurde, bei der Ausgabe des dazugehörigen Layers.
 %    \begin{macrocode}
 \newcommand*\tud at footlogo@option at set{%
+  \tud at footlogoheight@set%
   \if at tud@footlogo at option@set%
-    \tud at footlogo@ddc at set{black}{DDC-22}%
-    \tud at footlogo@ddc at set{HKS41}{DDC-25}%
-    \tud at footlogo@ddc at set{white}{DDC-28}%
+    \tud at footlogo@ddc at set{foot at black}{DDC-22}%
+    \tud at footlogo@ddc at set{foot at HKS41}{DDC-25}%
+    \tud at footlogo@ddc at set{foot at white}{DDC-28}%
     \tud at ddc@check%
     \ifcase\@tempb\relax\or\or% \tud at ddc@foot at num=color
-      \tud at footlogo@ddc at set{option}{DDC-01}%
+      \tud at footlogo@ddc at set{foot at option}{DDC-01}%
     \or% \tud at ddc@foot at num=colorblack
-      \tud at footlogo@ddc at set{option}{DDC-07}%
+      \tud at footlogo@ddc at set{foot at option}{DDC-07}%
     \or% \tud at ddc@foot at num=gray
-      \tud at footlogo@ddc at set{option}{DDC-19}%
+      \tud at footlogo@ddc at set{foot at option}{DDC-19}%
     \or% \tud at ddc@foot at num=black
-      \tud at footlogo@ddc at set{option}{DDC-22}%
+      \tud at footlogo@ddc at set{foot at option}{DDC-22}%
     \or% \tud at ddc@foot at num=blue
-      \tud at footlogo@ddc at set{option}{DDC-25}%
+      \tud at footlogo@ddc at set{foot at option}{DDC-25}%
     \or% \tud at ddc@foot at num=white
-      \tud at footlogo@ddc at set{option}{DDC-28}%
+      \tud at footlogo@ddc at set{foot at option}{DDC-28}%
     \fi%
     \global\@tud at footlogo@option at setfalse%
+    \global\@tud at footlogo@cmd at settrue%
   \fi%
 }
 %    \end{macrocode}
@@ -1736,15 +2015,17 @@
 % \end{macro}^^A \tud at footlogo@ddc at set
 % \begin{macro}{\tud at footlogo@ddc at use}
 % \changes{v2.04}{2015/06/01}{neu}^^A
+% \begin{macro}{\tud at layer@footlogo at wrn}
 % Die Ausgabe des \DDC-Logos im Fuß erfolgt mit diesem Makro. Dabei wird dieses 
 % in einer Box optisch~-- leicht nach oben verschoben~-- vertikal zentriert.
 %    \begin{macrocode}
+\newcommand*\tud at layer@footlogo at wrn{}
 \newcommand*\tud at footlogo@ddc at use[2]{%
   \tud at ddc@check%
   \ifcase\@tempb\relax\else% \tud at ddc@foot at num=!false
     \tud at footlogo@option at set%
     \setbox\z@\hbox{%
-      \tud at vlayerbox{#1}{%
+      \tud at vlayerbox[footlogo]{#1}{%
         \vss%
         \hbox to #2{%
           \hss%
@@ -1756,12 +2037,12 @@
         }%
         \vss\vss%
       }{%
-        You should reduce `footlogoheight', because it is\MessageBreak%
-        too high (\the\dimexpr\tud at dim@footlogoheight\relax).%
+        You should reduce `footlogoheight', because it is\noexpand\MessageBreak%
+        too high. %
         \ifnum\tud at cdgeometry@num>\@ne% true/symmetric/twoside
-          \MessageBreak%
-          Alternatively you can enlarge the bottom margin\MessageBreak%
-          by using option `extrabottommargin'.%
+          Alternatively you could use\noexpand\MessageBreak%
+          option `extrabottommargin=<length>'\noexpand\MessageBreak%
+          in order to enlarge the bottom margin. %
         \fi%
       }%
     }%
@@ -1773,6 +2054,7 @@
   \fi%
 }
 %    \end{macrocode}
+% \end{macro}^^A \tud at layer@footlogo at wrn
 % \end{macro}^^A \tud at footlogo@ddc at use
 % \begin{macro}{\tud at layer@foot at cmd}
 % \changes{v2.04}{2015/06/01}{neu}^^A
@@ -1795,7 +2077,7 @@
 % \begin{macro}{\tud at footlogo@cmd@@set}
 % \changes{v2.03}{2015/01/27}{neu}^^A
 % \changes{v2.03}{2015/02/02}{optionale Parameter für unterschiedliche Dateien 
-% individuell nutzbar}^^A
+%   individuell nutzbar}^^A
 % \begin{macro}{\if at tud@footlogo at cmd@set}
 % \changes{v2.04}{2015/06/01}{neu}^^A
 % Mit dem Befehl \cs{footlogo} kann eine kommasparierte Liste für Logos im 
@@ -1817,7 +2099,7 @@
 % durch \val{:} an den Dateinamen angehängt übergeben wurden, werden hier in
 % der Box \cs{tud at layer@foot at cmd} gespeichert.
 %    \begin{macrocode}
-\newif\if at tud@footlogo at cmd@set
+\tud at newif\if at tud@footlogo at cmd@set
 \newcommand*\tud at footlogo@cmd at set[2]{%
   \if at tud@footlogo at cmd@set%
     \tud at savelayerbox{foot at cmd}{%
@@ -1831,7 +2113,8 @@
 %    \begin{macrocode}
         \let\@tempa\relax%
         \@for\@tempb:=\tud at footlogo@filenames\do{%
-          \edef\@tempb{\expandafter\trim at spaces\expandafter{\@tempb}}%
+          \protected at edef\@tempb{\@tempb}%
+          \trim at spaces@in{\@tempb}%
           \@tempa%
           \ifx\@tempb\@empty\else%
             \expandafter\tud at footlogo@cmd@@set\expandafter{\@tempb}{#1}%
@@ -1856,6 +2139,7 @@
 % für einzelne Logos möglich sein. Zu diesem Zweck wird die Schnittstelle für 
 % den Anwender so gestaltet, dass individuelle Parameter mit einem Doppelpunkt
 % direkt an den Dateinamen angehangen werden können.
+% \ToDo{\cs{DeclareListParser} außerhalb global definieren}[v2.07]
 %    \begin{macrocode}
     \let\@tempa\@empty%
     \let\@tempb\@empty%
@@ -1875,7 +2159,8 @@
 % In jedem Fall werden die Grundeinstellungen als erstes ausgeführt.
 %    \begin{macrocode}
     \preto\tud at footlogo@fileoptions{%
-      keepaspectratio,totalheight=\tud at dim@footlogoheight,%
+      keepaspectratio,%
+      totalheight=\dimexpr\glueexpr\tud at footlogoheight@dim\relax\relax,%
     }%
 %    \end{macrocode}
 % Wurden tatsächlich inidviduelle Parameter übergeben, so werden diese als 
@@ -1883,7 +2168,9 @@
 %    \begin{macrocode}
     \eappto\tud at footlogo@fileoptions{\expandonce\@tempb}%
     \protected at edef\@tempc{%
-      \noexpand\includegraphics[\expandonce\tud at footlogo@fileoptions]{\@tempa}%
+      \noexpand\includegraphics[{%
+        \expandonce\tud at footlogo@fileoptions%
+      }]{\@tempa}%
     }%
 %    \end{macrocode}
 % Die Logos werden~-- wie auch das \DDC-Logo im Fuß~-- individuell optisch
@@ -1927,11 +2214,11 @@
 % \begin{macro}{\tud at footcontent@@do}
 % \changes{v2.04}{2015/04/21}{neu}^^A
 % \changes{v2.05}{2016/04/17}{Stern im Argument erhält aktuellen Inhalt}^^A
-% \begin{macro}{\tud at footcontent@usefont}
+% \begin{macro}{\tud at footcontent@font at use}
 % \changes{v2.06}{2018/08/01}{neu}^^A
-% \begin{macro}{\tud at footcontent@fontsize}
+% \begin{macro}{\tud at footcontent@font at size}
 % \changes{v2.06}{2018/08/01}{neu}^^A
-% \begin{macro}{\tud at footcontent@fontface}
+% \begin{macro}{\tud at footcontent@font at face}
 % \changes{v2.04}{2015/06/01}{neu}^^A
 % \changes{v2.05}{2015/07/21}{Bugfix für die Schriftgröße und den Durchschuss 
 %   bei einer entsprechenden Anpassung der Schriftart \val{tudheadings}}^^A
@@ -1948,10 +2235,10 @@
 %    \end{macrocode}
 % Dieser Befehl wird zur Formatierung der Schrift im Fußbereich definiert.
 %    \begin{macrocode}
-\newcommand*\tud at footcontent@usefont[1]{%
+\newcommand*\tud at footcontent@font at use[1]{%
   \usekomafont{tudheadings}{%
-    \tud at footcontent@fontsize%
-    \tud at footcontent@fontface%
+    \tud at footcontent@font at size%
+    \tud at footcontent@font at face%
     \selectfont%
     #1%
   }%
@@ -1961,10 +2248,11 @@
 % diesen Makros gesichert, weshalb diese vorher alloziert werden. Anschließend
 % erfolgt die Definition des Befehls.
 %    \begin{macrocode}
-\newcommand*\tud at footcontent@fontsize{}
-\newcommand*\tud at footcontent@fontface{}
+\newcommand*\tud at footcontent@font at size{}
+\newcommand*\tud at footcontent@font at face{}
 \newcommand*\tud at footcontent@left{}
-\newcommand*\tud at footcontent@right{\@nil}
+\newcommand*\tud at footcontent@right{}
+\let\tud at footcontent@right\@nnil
 %    \end{macrocode}
 % Die Sternversion ändert die Schriftgröße vom Inhalt nicht. Die Normalversion
 % nutzt die Schriftgröße der Kopfzeile mit einem passenden Durchschuss.
@@ -1971,12 +2259,12 @@
 %    \begin{macrocode}
 \newcommand*\footcontent{%
   \kernel at ifstar{%
-    \renewcommand*\tud at footcontent@fontsize{}%
+    \renewcommand*\tud at footcontent@font at size{}%
     \tud at footcontent@do%
   }{%
-    \renewcommand*\tud at footcontent@fontsize{%
-      \setlength\@tempdima{\tud at head@fontsize\p@}%
-      \fontsize{\@tempdima}{1.25\@tempdima}%
+    \renewcommand*\tud at footcontent@font at size{%
+      \tud at setdim\tud at res@glue{\tud at head@fontsize\p@}%
+      \fontsize{\tud at res@glue}{\dimexpr1\tud at res@glue*5/4\relax}%
     }%
     \tud at footcontent@do%
   }%
@@ -1998,17 +2286,17 @@
 % Wurde im optionalen Argument für zusätzliche Schrifteinstellungen ein Stern 
 % verwendet, bleibt die bisherige Definition bestehen.
 %    \begin{macrocode}
-  \if\detokenize{*#1}\relax\else%
-    \renewcommand*\tud at footcontent@fontface{#1}%
+  \if\detokenize{#1*}\relax\else%
+    \renewcommand*\tud at footcontent@font at face{#1}%
   \fi%
 %    \end{macrocode}
 % Wurde in einem der Argumente für den linken und/oder rechten Inhalt ein Stern 
 % verwendet, bleibt die bisherige Definition bestehen.
 %    \begin{macrocode}
-  \if\detokenize{*#2}\relax\else%
+  \if\detokenize{#2*}\relax\else%
     \renewcommand*\tud at footcontent@left{#2}%
   \fi%
-  \if\detokenize{*#3}\relax\else%
+  \if\detokenize{#3*}\relax\else%
     \renewcommand*\tud at footcontent@right{#3}%
   \fi%
 }
@@ -2015,9 +2303,9 @@
 %    \end{macrocode}
 % \end{macro}^^A \tud at footcontent@right
 % \end{macro}^^A \tud at footcontent@left
-% \end{macro}^^A \tud at footcontent@fontface
-% \end{macro}^^A \tud at footcontent@fontsize
-% \end{macro}^^A \tud at footcontent@usefont
+% \end{macro}^^A \tud at footcontent@font at face
+% \end{macro}^^A \tud at footcontent@font at size
+% \end{macro}^^A \tud at footcontent@font at use
 % \end{macro}^^A \tud at footcontent@@do
 % \end{macro}^^A \tud at footcontent@do
 % \end{KOMAfont}^^A tudheadings
@@ -2043,7 +2331,7 @@
 %    \begin{macrocode}
 \newcommand*\tud at newline@poster{}
 \newcommand*\tud at footcontent@@left[1]{%
-  \ifxblank{#1}{}{{\tud at head@font@@bold#1\newline}}%
+  \tud at if@strblank{#1}{}{{\tud at head@font@@bold#1\newline}}%
   Technische Universit\"at Dresden%
   \tud at foot@line at write{faculty}%
   \tud at foot@line at write{department}%
@@ -2068,22 +2356,22 @@
         \nobreakspace(\@discipline)%
       \fi%
     \fi%
+    \ifx\@emailaddress\@empty\else\newline\@emailaddress\fi%
     \ifx\@office\@empty\else\newline\@office\fi%
     \ifx\@telephone\@empty\else\newline\@telephone\fi%
     \ifx\@telefax\@empty\else\newline\@telefax\fi%
-    \ifx\@emailaddress\@empty\else\newline\@emailaddress\fi%
   }%
 %    \end{macrocode}
 % Wurde kein Autor angegeben, wird in diesem Fall die normalerweise erzeugte 
 % Warnung bei der Verwendung des Feldes \cs{@author} unterdrückt.
 %    \begin{macrocode}
-  \ifpatchable{\@author}{\@latex at warning@no at line}{%
+  \tud at if@field at unset{\@author}{%
     \let\@tempa\@empty%
   }{%
     \let\@tempa\@author%
   }%
   \ifx\@tempa\@empty\else%
-    \ifxblank{#1}{}{{\tud at head@font@@bold#1\newline}}%
+    \tud at if@strblank{#1}{}{{\tud at head@font@@bold#1\newline}}%
 %    \end{macrocode}
 % Das Makro zum Aufteilen der Autorenangaben wird für die hier benötigte Form 
 % definiert. Die Ausgabe aller nicht \emph{lokal} angegebenen Felder wird
@@ -2113,13 +2401,13 @@
 % Die Ausgabe der Kontaktperson(en) erfolgt analog zu der Autorenausgabe.
 %    \begin{macrocode}
   \def\tud at newline@poster{%
+    \ifx\@emailaddress\@empty\else\newline\@emailaddress\fi%
     \ifx\@office\@empty\else\newline\@office\fi%
     \ifx\@telephone\@empty\else\newline\@telephone\fi%
     \ifx\@telefax\@empty\else\newline\@telefax\fi%
-    \ifx\@emailaddress\@empty\else\newline\@emailaddress\fi%
   }%
   \ifx\@contactperson\@empty\else%
-    \ifxblank{#2}{}{{\tud at head@font@@bold#2\newline}}%
+    \tud at if@strblank{#2}{}{{\tud at head@font@@bold#2\newline}}%
     \renewcommand*\tud at split@contactperson at do[2]{%
       \tud at multiple@fields at store{@contactperson}{##1}%
       \tud at multiple@fields at preset{@contactperson}{*}{##1}%
@@ -2152,6 +2440,8 @@
 %
 % \begin{macro}{\tud at footcontent@use}
 % \changes{v2.04}{2015/06/01}{neu}^^A
+% \begin{macro}{\tud at footcontent@@use}
+% \begin{macro}{\tud at layer@footcontent at wrn}
 % Mit \cs{tud at footcontent@use} erfolgt die Ausgabe der mit \cs{footcontent} 
 % definierten Inhalte. Dabei wird darauf geachtet, ob ein \DDC-Logo im Fuß
 % verwendet wird. Die Ausgabe erfolgt jedoch nur, falls tatsächlich etwas 
@@ -2159,12 +2449,12 @@
 % Breite ausgegeben. Dies ist notwendig, da nachgelagerte Funktionen diese Box
 % fester Breite erwarten.
 %    \begin{macrocode}
+\newcommand*\tud at layer@footcontent at wrn{}
 \newcommand*\tud at footcontent@use[2]{%
   \@tempswafalse%
-  \ifx\tud at footcontent@left\@empty\relax%
-    \def\@tempa{\@nil}%
-    \ifx\@tempa\tud at footcontent@right\relax\else%
-      \ifx\tud at footcontent@right\@empty\relax\else%
+  \ifx\tud at footcontent@left\@empty%
+    \ifx\tud at footcontent@right\@nnil\else%
+      \ifx\tud at footcontent@right\@empty\else%
         \@tempswatrue%
       \fi%
     \fi%
@@ -2174,10 +2464,10 @@
   \if at tempswa%
     \tud at ddc@check%
     \ifcase\@tempb\relax%
-      \setlength\@tempdimc{\z@}%
+      \tud at setdim\@tempdimc{\z@}%
     \else%
       \settowidth\@tempdimc{\tud at uselayerbox{foot at black}}%
-      \addtolength\@tempdimc{\columnsep}%
+      \tud at addtodim\@tempdimc{\columnsep}%
     \fi%
 %    \end{macrocode}
 % Äquivalent zu den Logos wird auch der durch den Anwender frei definierbare 
@@ -2184,36 +2474,13 @@
 % Inhalt des Fußes in einer vertikalen Box gesetzt. Mit \cs{@tempdimc} wird im 
 % Bedarfsfall der Freiraum für das \DDC-Logo bereitgestellt.
 %    \begin{macrocode}
-    \tud at vlayerbox{#1}{%
+    \tud at vlayerbox[footcontent]{#1}{%
       \linespread{1}%
       \vss%
       \hbox to #2{%
-        \tud at footcontent@usefont{%
-%    \end{macrocode}
-% Wurde das optionale Argument nach dem obligatorischen nicht genutzt, so wird 
-% der Inhalt über die komplette Breite des Textbereiches ausgegeben.
-%    \begin{macrocode}
-          \def\@tempa{\@nil}%
-          \ifx\@tempa\tud at footcontent@right\relax%
-            \vtop{%
-              \hsize=\dimexpr#2-\@tempdimc\relax%
-              \strut\ignorespaces\tud at footcontent@left\strut%
-            }%
-%    \end{macrocode}
-% Im zweispaltigen modus werden zwei vertikale Boxen erzeugt, zwischen denen
-% der Abstand \cs{columnsep} eingefügt wird.
-%    \begin{macrocode}
-          \else%
-            \vtop{%
-              \hsize=\dimexpr(#2-\columnsep)/2\relax%
-              \strut\ignorespaces\tud at footcontent@left\strut%
-            }%
-            \hspace{\columnsep}%
-            \vtop{%
-              \hsize=\dimexpr(#2-\columnsep)/2-\@tempdimc\relax%
-              \strut\ignorespaces\tud at footcontent@right\strut%
-            }%
-          \fi%
+        \tud at footcontent@font at use{%
+          \tud at setglue\tud at res@glue{#2}%
+          \tud at footcontent@@use{\tud at res@glue}%
           \hss%
         }%
       }%
@@ -2222,12 +2489,12 @@
 % Sollte der Inhalt für den Fußbereich zu groß sein, wird eine Warnung erzeugt.
 %    \begin{macrocode}
     }{%
-      The content for the footer (`\string\footcontent')\MessageBreak%
-      is too high. You should either reduce the content\MessageBreak%
+      The content for the footer (`\string\footcontent')\noexpand\MessageBreak%
+      is too high. You should either reduce the content\noexpand\MessageBreak%
       or lower the fontsize via the optional argument.%
       \ifnum\tud at cdgeometry@num>\@ne% true/symmetric/twoside
-        \MessageBreak%
-        Alternatively you can enlarge the bottom margin\MessageBreak%
+        \noexpand\MessageBreak%
+        Alternatively you can enlarge the bottom margin\noexpand\MessageBreak%
         by using option `extrabottommargin'.%
       \fi%
     }%
@@ -2236,263 +2503,35 @@
   \fi%
 }
 %    \end{macrocode}
-% \end{macro}^^A \tud at footcontent@use
-%
-% \iffalse
-%</class&body>
-% \fi
-%
-% \subsection{Optionen für das \DDC-Logo}
-%
-% \begin{macro}{\tud at comp@clearpage}
-% \changes{v2.04}{2015/05/31}{neu}^^A
-% \begin{macro}{\tud at comp@resetpagestyle}
-% \changes{v2.04}{2015/05/31}{neu}^^A
-% \begin{macro}{\if at tud@ddc at internal}
-% \changes{v2.02}{2014/07/08}{neu}^^A
-% Bis zur Version~v2.02 wurden unterschiedliche Satzsiegel für den Seitenfuß 
-% mit und ohne \DDC-Logo verwendet. Damit dieser im Zweifelsfall umgestellt 
-% werden kann, wurde vor dem Ausführen der entsprechenden Optionen ein 
-% Seitenumbruch erzwungen und nach dem Verarbeiten der Optionen der aktuelle 
-% Seitenstil erneut aufgerufen. Die beiden folgenden Makros werden für dieses 
-% Unterfangen definiert, jedoch bei der Abarbeitung der Optionen nur noch im 
-% Kompatibilitätmodus ausgeführt. Der Schalter \cs{if at tud@ddc at internal} wird 
-% intern von den Optionen \opt{ddc}, \opt{ddchead} und \opt{ddcfoot} verwendet,
-% um rekursive Aufrufe der Optionen zu verhindern.
+% Wurde das optionale Argument nach dem obligatorischen nicht genutzt, so wird 
+% der Inhalt über die komplette Breite des Textbereiches ausgegeben.
 %    \begin{macrocode}
-%<*class&option>
-\newif\if at tud@ddc at internal
-\newcommand*\tud at comp@clearpage{}%
-\newcommand*\tud at comp@resetpagestyle{}%
-%</class&option>
-%<*class&body>
-\tud at if@v at lower{2.04}{%
-  \renewcommand*\tud at comp@clearpage{%
-    \if at tud@ddc at internal\else%
-      \tud at if@tudheadings{\currentpagestyle}{\clearpage}{}%
-    \fi%
-  }%
-  \renewcommand*\tud at comp@resetpagestyle{%
-    \if at tud@ddc at internal\else%
-      \tud at if@tudheadings{\currentpagestyle}{%
-        \expandafter\pagestyle\expandafter{\currentpagestyle}%
-      }{}%
-    \fi%
-  }%
-}{}%
-%</class&body>
+\newcommand*\tud at footcontent@@use[1]{%
+  \ifx\tud at footcontent@right\@nnil%
+    \vtop{%
+      \hsize=\dimexpr\glueexpr#1-\@tempdimc\relax\relax%
+      \strut\ignorespaces\tud at footcontent@left\strut%
+    }%
 %    \end{macrocode}
-% \end{macro}^^A \if at tud@ddc at internal
-% \end{macro}^^A \tud at comp@clearpage
-% \end{macro}^^A \tud at comp@resetpagestyle
-%
-% \iffalse
-%<*class&option>
-% \fi
-%
-% \begin{option}{ddc}
-% \changes{v2.02}{2014/06/23}{automatische Logowahl}^^A
-% \begin{option}{ddchead}
-% \changes{v2.02}{2014/06/23}{Logo von \DDC entweder in Kopf oder Fuß}^^A
-% \begin{option}{ddcfoot}
-% \changes{v2.02}{2014/06/23}{Logo von \DDC entweder in Kopf oder Fuß}^^A
-% Diese Optionen dienen zur Auswahl des \DDC-Logos auf Seiten mit dem Stil 
-% \pgs{tudheadings}. Die Option \opt{ddchead} setzt das Logo dabei immer in den
-% Kopf, wobei ein mit \cs{headlogo} definiertes Zweitlogo gegebenenfalls 
-% überschrieben wird. Die Option \opt{ddcfoot} setzt das Logo immer in den Fuß. 
-% Mit der Option \opt{ddc} wird das Logo nur in den Kopf gesetzt, wenn kein 
-% Zweitlogo angegeben ist. Ist dies jedoch der Fall, wird das Logo stattdessen 
-% im Fuß ausgegeben.
-% \begin{macro}{\tud at ddc@switch}
-% \changes{v2.02}{2014/06/23}{neu}^^A
-% Das Makro definiert die gültigen Werte für die \DDC-Optionen \opt{ddc}, 
-% \opt{ddchead} sowie \opt{ddcfoot}.
+% Im zweispaltigen modus werden zwei vertikale Boxen erzeugt, zwischen denen
+% der Abstand \cs{columnsep} eingefügt wird.
 %    \begin{macrocode}
-\newcommand*\tud at ddc@switch{}
-\edef\tud at ddc@switch{%
-  \TUD at bool@numkey,%
-  {color}{2},{colour}{2},{cdcolor}{2},{cdcolour}{2},%
-  {colorblack}{3},{colourblack}{3},{cdcolorblack}{3},{cdcolourblack}{3},%
-  {gray}{4},{grey}{4},{hks92}{4},{cdgray}{4},{cdgrey}{4},%
-  {black}{5},{cdblack}{5},%
-  {blue}{6},{hks41}{6},{cdblue}{6},{cddarkblue}{6},%
-  {white}{7},{cdwhite}{7}%
-}
-%    \end{macrocode}
-% \end{macro}^^A \tud at ddc@switch
-% \begin{macro}{\tud at ddc@auto at num}
-% \changes{v2.02}{2014/06/23}{neu}^^A
-% \begin{macro}{\if at tud@ddc at auto}
-% \changes{v2.02}{2014/06/23}{neu}^^A
-% \begin{macro}{\if at tud@headlogo at option@set}
-% \changes{v2.04}{2015/05/31}{neu}^^A
-% \begin{macro}{\if at tud@footlogo at option@set}
-% \changes{v2.04}{2015/06/01}{neu}^^A
-% Die Option \opt{ddc}.
-%    \begin{macrocode}
-\newif\if at tud@headlogo at option@set
-\newif\if at tud@footlogo at option@set
-\newif\if at tud@ddc at auto
-\newcommand*\tud at ddc@auto at num{0}
-\TUD at key{ddc}[true]{%
-%    \end{macrocode}
-% Im Kompatibiltätsmodus wird ein Seitenumbruch erzwungen. Anschließend wird 
-% die Option abgearbeitet.
-%    \begin{macrocode}
-  \tud at comp@clearpage%
-  \TUD at set@numkey{ddc}{tud at ddc@auto at num}{\tud at ddc@switch}{#1}%
-  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
-%    \end{macrocode}
-% Wurde die Option \opt{ddc} intern durch \opt{ddchead} oder \opt{ddcfoot} 
-% aufgerufen, wird die automatische Auswahl des \DDC-Logos deaktiviert.
-%    \begin{macrocode}
-    \if at tud@ddc at internal%
-      \@tud at ddc@autofalse%
-    \else%
-%    \end{macrocode}
-% Andernfalls wird die automatische Auswahl aktiviert und die beiden Optionen
-% \opt{ddchead} sowie \opt{ddcfoot} intern zurückgesetzt.
-%    \begin{macrocode}
-      \@tud at ddc@autotrue%
-      \@tud at ddc@internaltrue%
-      \TUDoptions{ddchead=false}%
-      \TUDoptions{ddcfoot=false}%
-      \@tud at ddc@internalfalse%
-    \fi%
-%    \end{macrocode}
-% Sowohl die \DDC-Logos als auch ein mögliches Zweilogo (\cs{headlogo}) werden
-% in den entsprechenden Layern durch Boxen ausgegeben. Die beiden Schalter 
-% führen zum Erneuern der dazugehörigen Logoboxen. Siehe die Beschreibung der 
-% Makros \cs{tud at headlogo@option at set} sowie \cs{tud at footlogo@option at set}.
-%    \begin{macrocode}
-    \global\@tud at headlogo@option at settrue%
-    \global\@tud at footlogo@option at settrue%
-  \fi%
-%    \end{macrocode}
-% Abschließend wird im Kompatibilitätsmodus der aktuelle Seitenstil aufgerufen,
-% um bei einem geänderten Fuß den notwendigen Satzspiegel zu laden.
-%    \begin{macrocode}
-  \tud at comp@resetpagestyle%
-}
-%    \end{macrocode}
-% \end{macro}^^A \if at tud@footlogo at option@set
-% \end{macro}^^A \if at tud@headlogo at option@set
-% \end{macro}^^A \if at tud@ddc at auto
-% \end{macro}^^A \tud at ddc@auto at num
-% \begin{macro}{\tud at ddc@head at num}
-% \changes{v2.03}{2015/01/22}{Seitenstilauswahl bei Deaktivierung verbessert}^^A
-% Die Option \opt{ddchead} dient zum zwingenden Setzen des \DDC-Logos im Kopf 
-% der Seiten im Stil von \pgs{tudheadings}.
-%    \begin{macrocode}
-\newcommand*\tud at ddc@head at num{0}
-\TUD at key{ddchead}[true]{%
-%    \end{macrocode}
-% Der Seitenumbruch im Kompatibilitätsmodus.
-%    \begin{macrocode}
-  \tud at comp@clearpage%
-  \TUD at set@numkey{ddchead}{tud at ddc@head at num}{\tud at ddc@switch}{#1}%
-%    \end{macrocode}
-% Beim internen Aufruf soll lediglich der Wert des Schlüssels geändert werden. 
-% Wurde die Option durch den Anwender genutzt, werden die korrespondierenden 
-% Optionen zurückgesetzt. Der Aufruf der Option \opt{ddc} führt zum erneuten 
-% setzen der Logoboxen.
-%    \begin{macrocode}
-  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
-    \if at tud@ddc at internal\else%
-      \@tud at ddc@internaltrue%
-      \TUDoptions{ddcfoot=false}%
-      \TUDoptions{ddc=false}%
-      \@tud at ddc@internalfalse%
-    \fi%
-  \fi%
-%    \end{macrocode}
-% Das Setzen des Seitenstils im Kompatibilitätsmodus.
-%    \begin{macrocode}
-  \tud at comp@resetpagestyle%
-}
-%    \end{macrocode}
-% \end{macro}^^A \tud at ddc@head at num
-% \begin{macro}{\tud at ddc@foot at num}
-% \changes{v2.03}{2015/01/22}{Seitenstilauswahl bei Deaktivierung verbessert}^^A
-% Die Option \opt{ddcfoot} dient zum zwingenden Setzen des \DDC-Logos im Fuß 
-% der Seiten im Stil von \pgs{tudheadings}. Das Vorgehen beim Umschalten des
-% Schlüssels ist äquivalent zur Option \opt{ddchead}
-%    \begin{macrocode}
-\newcommand*\tud at ddc@foot at num{0}
-\TUD at key{ddcfoot}[true]{%
-%    \end{macrocode}
-% Der Seitenumbruch im Kompatibilitätsmodus.
-%    \begin{macrocode}
-  \tud at comp@clearpage%
-  \TUD at set@numkey{ddcfoot}{tud at ddc@foot at num}{\tud at ddc@switch}{#1}%
-%    \end{macrocode}
-% Beim internen Aufruf soll lediglich der Wert des Schlüssels geändert werden. 
-% Wurde die Option durch den Anwender genutzt, werden die korrespondierenden 
-% Optionen zurückgesetzt. Der Aufruf der Option \opt{ddc} führt zum erneuten 
-% setzen der Logoboxen.
-%    \begin{macrocode}
-  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
-    \if at tud@ddc at internal\else%
-      \@tud at ddc@internaltrue%
-      \TUDoptions{ddchead=false}%
-      \TUDoptions{ddc=false}%
-      \@tud at ddc@internalfalse%
-    \fi%
-  \fi%
-%    \end{macrocode}
-% Das Setzen des Seitenstils im Kompatibilitätsmodus.
-%    \begin{macrocode}
-  \tud at comp@resetpagestyle%
-}
-%    \end{macrocode}
-% \end{macro}^^A \tud at ddc@foot at num
-% \end{option}^^A ddcfoot
-% \end{option}^^A ddchead
-% \end{option}^^A ddc
-%
-% \iffalse
-%</class&option>
-%<*class&body>
-% \fi
-%
-% \begin{macro}{\tud at ddc@check}
-% \changes{v2.02}{2014/06/23}{neu}^^A
-% Dieses Hilfsmakro wird aufgerufen, wenn geprüft wird, welche Einstellungen
-% für Kopf und Fuß des Seitenstiles \pgs{tudheadings} zum Tragen kommen sollen.
-% Über den Schalter \cs{if at tud@ddc at auto} wird festgelegt, ob die Auswahl des
-% \DDC-Logos automatisch erfolgen soll~-- Option \opt{ddc} wurde verwendet.
-% Ist dies der Fall, wird das Logo standardmäßig im Kopf gesetzt. Ist jedoch
-% durch den Befehl \cs{headlogo} ein Zweitlogo angegeben worde, wird dieses in
-% der Fußzeile ausgegeben. Die Verwendung einer der Optionen \opt{ddchead} bzw. 
-% \opt{ddcfoot} forciert die Ausgabe des \DDC-Logos an der gewünschten Stelle.
-% Die jeweils gültige Auswahl für Kopf bzw. Fuß wird in den Makros \cs{@tempa} 
-% bzw. \cs{@tempb} geschrieben und kann anschließend ausgewertet werden.
-%    \begin{macrocode}
-\newcommand*\tud at ddc@check{%
-  \let\@tempa\tud at ddc@head at num%
-  \let\@tempb\tud at ddc@foot at num%
-  \if at tud@ddc at auto%
-    \ifdefvoid{\tud at headlogo@filename}{%
-      \let\@tempa\tud at ddc@auto at num%
-      \let\@tempb\z@%
-    }{%
-      \let\@tempa\z@%
-      \let\@tempb\tud at ddc@auto at num%
+  \else%
+    \vtop{%
+      \hsize=\dimexpr\glueexpr(#1-\columnsep)/2\relax\relax%
+      \strut\ignorespaces\tud at footcontent@left\strut%
     }%
+    \hspace{\columnsep}%
+    \vtop{%
+      \hsize=\dimexpr\glueexpr(#1-\columnsep)/2-\@tempdimc\relax\relax%
+      \strut\ignorespaces\tud at footcontent@right\strut%
+    }%
   \fi%
-%    \end{macrocode}
-% Für die Satzspiegelvergrößerung wird beim Vorhandensein eines oder mehrerer 
-% Logos im Fuß die Variable \cs{@tempb} auf einen negativen Wert gesetzt, um 
-% auch ohne die Ausgabe eines \DDC-Logos den Fußbereich zu vergrößern.
-%    \begin{macrocode}
-  \tud at if@v at lower{2.03}{%
-    \ifnum\@tempb=\z@\relax%
-      \ifdefvoid{\tud at footlogo@filenames}{}{\let\@tempb\m at ne}%
-    \fi%
-  }{}%
 }
 %    \end{macrocode}
-% \end{macro}^^A \tud at ddc@check
+% \end{macro}^^A \tud at layer@footcontent at wrn
+% \end{macro}^^A \tud at footcontent@@use
+% \end{macro}^^A \tud at footcontent@use
 %
 % \subsection{Umgebungsparameter für die neuen Seitenstile}
 %
@@ -2501,7 +2540,7 @@
 % Der Schalter wird verwendet, um das explizite Setzen der Schrifteinstellungen
 % über die Seitenstilparameter zu detektieren.
 %    \begin{macrocode}
-\newif\if at tud@parameter at ps@font at set
+\tud at newif\if at tud@parameter at ps@font at set
 %    \end{macrocode}
 % \end{macro}^^A \if at tud@parameter at ps@font at set
 % \begin{macro}{\TUD at parameter@ps at def}
@@ -2634,11 +2673,12 @@
 % Umgebung wird nache einem weiteren Seitenumbruch das Standardseitenlayout
 % wiederhergestellt. Die gewünschte Sprache der Umgebung kann als einzelner
 % Wert ohne Schlüssel angegben werden.
+% \ToDo{Umgebung raus? Auf alle Fälle cdgeometry=... etc. unterstützen}[v2.07]
 %    \begin{macrocode}
 \newcommand*\tud at envir@ps{tudheadings}
 \newcommand*\tud at envir@selectps{%
   \expandafter\pagestyle\expandafter{\tud at envir@ps}%
-  \ifstr{\GetRealPageStyle{\tud at envir@ps}}{empty}{%
+  \tud at if@strequal{\GetRealPageStyle{\tud at envir@ps}}{empty}{%
     \renewcommand*\titlepagestyle{empty}%
 %<*book|report>
     \renewcommand*\partpagestyle{empty}%
@@ -2646,7 +2686,7 @@
 %</book|report>
     \renewcommand*\indexpagestyle{empty}%
   }{}%
-  \ifstr{\GetRealPageStyle{\tud at envir@ps}}{empty.tudheadings}{%
+  \tud at if@strequal{\GetRealPageStyle{\tud at envir@ps}}{empty.tudheadings}{%
     \renewcommand*\titlepagestyle{empty.tudheadings}%
 %<*book|report>
     \renewcommand*\partpagestyle{empty.tudheadings}%
@@ -2671,6 +2711,7 @@
 %    \end{macrocode}
 % Um beim Umschalten des Seitenstils den aktuellen selbst zu behalten, wird
 % dieser im Hilfsmakro \cs{tud at currentpagestyle@value} gespeichert.
+% \ToDo{eher NewDocumentEnvironment nutzen?}[v2.07]
 %    \begin{macrocode}
   \tud at currentpagestyle@set%
   \clearpage%
@@ -2723,11 +2764,12 @@
 % werden, wobei einer der \pgs{tudheadings}-Seitenstile verwendet wird.
 %    \begin{macrocode}
   \TUD at parameter@def{pagestyle}{%
-    \tud at if@tudheadings{#1}{\renewcommand*\tud at envir@ps{#1}}{%
-      \ifstr{#1}{empty}{\renewcommand*\tud at envir@ps{empty.tudheadings}}{%
-      \ifstr{#1}{plain}{\renewcommand*\tud at envir@ps{plain.tudheadings}}{%
-      \ifstr{#1}{headings}{\renewcommand*\tud at envir@ps{tudheadings}}{%
-        \TUD at parameter@error{pagestyle}{%
+    \tud at if@tudheadings{#1}{\def\tud at envir@ps{#1}}{%
+      \def\tud at envir@ps{tudheadings}%
+      \tud at if@strequal{#1}{empty}{\def\tud at envir@ps{empty.tudheadings}}{%
+      \tud at if@strequal{#1}{plain}{\def\tud at envir@ps{plain.tudheadings}}{%
+      \tud at if@strequal{#1}{headings}{}{%
+        \TUD at parameter@err{pagestyle}{%
           headings, plain, empty or any tudheadings page style type%
         }%
       }}}%
@@ -2778,6 +2820,6 @@
 %</class&body>
 % \fi
 %
-% \Finale
+% \PrintBackMatter
 %
 \endinput

Modified: trunk/Master/texmf-dist/source/latex/tudscr/tudscr-supervisor.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tudscr/tudscr-supervisor.dtx	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/source/latex/tudscr/tudscr-supervisor.dtx	2022-08-09 20:01:54 UTC (rev 64085)
@@ -1,10 +1,10 @@
-% \CheckSum{600}
 % \iffalse meta-comment
+%/GitFileInfo=tudscr-supervisor.dtx
 %
 %  TUD-Script -- Corporate Design of Technische Universität Dresden
 % ----------------------------------------------------------------------------
 %
-%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2021
+%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2022
 %
 % ----------------------------------------------------------------------------
 %
@@ -23,44 +23,19 @@
 %
 % \fi
 %
-% \CharacterTable
-%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-%   Digits        \0\1\2\3\4\5\6\7\8\9
-%   Exclamation   \!     Double quote  \"     Hash (number) \#
-%   Dollar        \$     Percent       \%     Ampersand     \&
-%   Acute accent  \'     Left paren    \(     Right paren   \)
-%   Asterisk      \*     Plus          \+     Comma         \,
-%   Minus         \-     Point         \.     Solidus       \/
-%   Colon         \:     Semicolon     \;     Less than     \<
-%   Equals        \=     Greater than  \>     Question mark \?
-%   Commercial at \@     Left bracket  \[     Backslash     \\
-%   Right bracket \]     Circumflex    \^     Underscore    \_
-%   Grave accent  \`     Left brace    \{     Vertical bar  \|
-%   Right brace   \}     Tilde         \~}
-%
-% \iffalse
-%%% From File: tudscr-supervisor.dtx
+% \iffalse ins:batch + dtx:driver
+%<*ins>
+\ifx\documentclass\undefined
+  \input docstrip.tex
+  \ifToplevel{\batchinput{tudscr.ins}}
+\else
+  \let\endbatchfile\relax
+\fi
+\endbatchfile
+%</ins>
 %<*dtx>
-% \fi
-%
-\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
-\ProvidesFile{tudscr-supervisor.dtx}[2019/08/20 v2.06c TUD-Script\space%
-%
-% \iffalse
-%</dtx>
-%<package>\ProvidesPackage{tudscrsupervisor}[%
-%<*package>
-%!TUD at Version
-%</package>
-%<package>  package
-%<*dtx|package>
-% \fi
-  (commands for supervisors)%
-]
-% \iffalse
-%</dtx|package>
-%<*dtx>
+\ProvidesFile{tudscr-supervisor.dtx}[2022/08/09]
+\RequirePackage{tudscr-gitinfo}
 \documentclass[english,ngerman,xindy]{tudscrdoc}
 \iftutex
   \usepackage{fontspec}
@@ -70,18 +45,11 @@
 \fi
 \usepackage{babel}
 \usepackage{tudscrfonts}
-\KOMAoptions{parskip=half-}
-\usepackage{bookmark}
 \usepackage[babel]{microtype}
 
-\CodelineIndex
-\RecordChanges
-\GetFileInfo{tudscr-supervisor.dtx}
-\title{\file{\filename}}
-\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
-\date{\fileversion\nobreakspace(\filedate)}
-
+\GitHubBase{\TUDScriptRepository}
 \begin{document}
+  \author{Falk Hanisch\TUDScriptContactTitle}
   \maketitle
   \tableofcontents
   \DocInput{\filename}
@@ -91,8 +59,10 @@
 %
 % \selectlanguage{ngerman}
 %
-% \section{%
-%   Das Paket \pkg{tudscrsupervisor} -- Betreuung wissenschaftlicher Arbeiten%
+%
+%
+% \section{^^A
+%   Das Paket \pkg{tudscrsupervisor} -- Betreuung wissenschaftlicher Arbeiten^^A
 % }
 %
 % Diese Paket stellt für die \TUDScript-Klassen mehrere Umgebungen und Befehle
@@ -99,10 +69,18 @@
 % zur Erstellung der Aufgabenstellung einer Abschlussarbeit sowie eines
 % Gutachtens und eines Aushangs bereit.
 %
-% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
+%    \begin{macrocode}
+%<*package&identify>
+\ProvidesPackage{tudscrsupervisor}[%
+%!TUD at Version
+  package (commands for supervisors)%
+]
+\TUD at Class@Check{tudscrsupervisor}
+%</package&identify>
+%    \end{macrocode}
 %
 % \iffalse
-%<*package>
+%<*package&body>
 % \fi
 %
 % \begin{macro}{\tud at multiple@fields at output}
@@ -112,6 +90,9 @@
 % Diesen beiden Makros dienen dazu, unterschiedliche Varianten für die Ausgabe 
 % innerhalb der nachfolgenden Umgebungen generieren zu können. Momentan werden 
 % diese nur innerhalb der \env{task}-Umgebung verwendet.
+% \ToDo{
+%   Definition von \cs{tud at multiple@fields at style} mit \cs{FamilyNumericalKey}
+% }[v2.07]
 %    \begin{macrocode}
 \newcommand*\tud at multiple@fields at output{}
 \newcommand*\tud at multiple@fields at style{table}
@@ -126,12 +107,12 @@
 % \end{macro}^^A \student
 % \begin{macro}{\tud at authortable@set}
 % \changes{v2.01b}{2014/06/04}{Probleme mit Paket \pkg{calc} behoben}^^A
-% \begin{length}{\tud at len@authortable}
+% \begin{length}{\tud at dim@authortable}
 % Der Befehl \cs{tud at authortable@set} dient bei Aufgabenstellung und Gutachten 
 % zur Ausgabe einer Tabelle mit Informationen zum Autor beziehungsweise zu den
 % Autoren.\footnote{Matrikelnummer, Jahrgang, Studiengang etc.}
 %    \begin{macrocode}
-\newlength\tud at len@authortable
+\tud at newdim\tud at dim@authortable
 \newcommand*\tud at authortable@set{%
   \begingroup%
   \let\thanks\@gobble%
@@ -148,19 +129,17 @@
 %    \begin{macrocode}
   \tud at multiple@split{@author}%
   \tud at multiple@fields at preset{@author}{\null}{}%
-  \setlength\tud at len@authortable{2em}%
+  \tud at setdim\tud at dim@authortable{2em}%
 %    \end{macrocode}
 % Anschließend werden die Bezeichner sowohl der obligatorischen als auch der
 % genutzten, optionalen Felder in \cs{@tempa} gespeichert. Mit der Liste wird
-% der längste Bezeichner bestimmt und dessen Länge in \cs{tud at len@authortable}
+% der längste Bezeichner bestimmt und dessen Länge in \cs{tud at dim@authortable}
 % gespeichert.
 %    \begin{macrocode}
   \def\@tempb##1{%
-    \expandafter\ifx\csname @##1\endcsname\@empty\else%
-      \expandafter\appto\expandafter\@tempa\expandafter{%
-        \expandafter,\csname ##1name\endcsname%
-      }%
-    \fi%
+    \tud at if@strempty{\csname @##1\endcsname}{}{%
+      \eappto\@tempa{,\expandafter\noexpand\csname ##1name\endcsname}%
+    }%
   }%
   \def\@tempa{%
     \namesname,\titlename,\issuedatetext,\duedatetext,\supervisorname%
@@ -174,11 +153,11 @@
   \@tempb{discipline}%
   \@for\@tempb:=\@tempa\do{%
     \settowidth\@tempdima{\@tempb\tud at title@delimiter}%
-    \ifdim\@tempdima>\tud at len@authortable\relax%
-      \setlength\tud at len@authortable{\@tempdima}%
+    \ifdim\@tempdima>\tud at dim@authortable\relax%
+      \tud at setdim\tud at dim@authortable{\@tempdima}%
     \fi%
   }%
-  \global\tud at len@authortable=\tud at len@authortable%
+  \global\tud at dim@authortable=\tud at dim@authortable%
 %    \end{macrocode}
 % Die Tabelle mit den benötigten Bezeichnern. Damit diese bis an den Seiterand
 % ohne Warnungen gesetzt werden können, wird die Auszeichnung von Absatzenden
@@ -186,7 +165,7 @@
 %    \begin{macrocode}
   \begingroup%
   \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par at updaterelative%
-  \begin{tabular}{@{}p{\tud at len@authortable}}%
+  \begin{tabular}{@{}p{\tud at dim@authortable}}%
     \ifx\@course\@empty\else%
       \coursename\tud at title@delimiter\tabularnewline%
     \fi%
@@ -203,9 +182,9 @@
   \end{tabular}%
 %    \end{macrocode}
 % Der Befehl \cs{tud at split@author at do} wird innerhalb der \TUDScript-Klassen zur
-% formatierten Ausgabe mehrerer Autoren auf der Titelseite verwendet, welche
-% durch \cs{author}\marg{Autor(en)} angegeben und mit \cs{and} getrennt wurden.
-% Er wird hier auf die Ausgabe der Autoren mit den jeweils zusätzlich gegebenen 
+% formatierten Ausgabe mehrerer Autoren auf der Titelseite genutzt, welche mit
+% \cs{author}\marg{Autor(en)} angegeben und mit \cs{and} getrennt wurden. Er
+% wird hier auf die Ausgabe der Autoren mit den jeweils zusätzlich gegebenen 
 % Informationen in einer Tabelle angepasst.
 %    \begin{macrocode}
   \renewcommand*\tud at split@author at do[2]{%
@@ -252,8 +231,8 @@
 % Danach wird der Inhalt der Aufgabenstellung gesetzt.
 %    \begin{macrocode}
   \vskip\smallskipamount%
-  \begin{tabular}{@{}p{\tud at len@authortable}%
-    p{\dimexpr\textwidth-\tud at len@authortable-2\tabcolsep\relax}@{}}%
+  \begin{tabular}{@{}p{\tud at dim@authortable}%
+    p{\dimexpr\textwidth-\tabcolsep*2-\tud at dim@authortable\relax}@{}}%
     \titlename\tud at title@delimiter & \tud at RaggedRight\textsf{\textbf{\@@title}}%
   \end{tabular}%
   \par%
@@ -263,8 +242,14 @@
   \noindent\ignorespaces%
 }
 %    \end{macrocode}
-% \end{length}^^A \tud at len@authortable
+% \end{length}^^A \tud at dim@authortable
 % \end{macro}^^A \tud at authortable@set
+% \begin{field}{\@headline}
+% Hier wird der Inhalt des Parametes \prm{headline} hinein geschrieben.
+%    \begin{macrocode}
+\newcommand*\@headline{}
+%    \end{macrocode}
+% \end{field}^^A \@headline
 %
 % \subsection{Aufgabenstellung}
 %
@@ -284,17 +269,18 @@
 %    \end{macrocode}
 % Die \env{tudpage}-Umgebung wird geöffnet. Mit dem Parameter \opt{headline} 
 % kann die standardmäßige Überschrift überschrieben werden.
+% \ToDo{style=table/inline mit \cs{FamilyNumericalKey}}[v2.07]
 %    \begin{macrocode}
   \cleardoubleoddpage%
   \let\@headline\@empty%
   \TUD at parameter@family{tudpage}{%
-    \TUD at parameter@def{headline}{\def\@headline{##1}}%
+    \TUD at parameter@def{headline}{\tud at trim@field\@headline{##1}}%
     \TUD at parameter@let{heading}{headline}%
     \TUD at parameter@let{line}{headline}%
     \TUD at parameter@def{style}{\def\tud at multiple@fields at style{##1}}%
     \TUD at parameter@handler at default{headline}%
   }%
-  \tudpage[pagestyle=empty,#1]%
+  \tudpage[{pagestyle=empty,#1}]%
 %    \end{macrocode}
 % Zu Beginn wird als erstes die Überschrift und~-- die entsprechende Option
 % vorausgesetzt~-- im PDF einen Lesezeichen- oder auch Outline-Eintrag gesetzt.
@@ -317,10 +303,10 @@
 % oberen Teil.
 %    \begin{macrocode}
   \def\tud at multiple@fields at output##1{%
-    \ifstr{\tud at multiple@fields at style}{table}{%
+    \tud at if@strequal{\tud at multiple@fields at style}{table}{%
       \def\and{%
         \tabularnewline%
-        \ifstr{\csuse{##1othername}}{}{}{%
+        \tud at if@strempty{\csuse{##1othername}}{}{%
           \csuse{##1othername}\tud at title@delimiter%
         }%
         & \def\and{\tabularnewline &}%
@@ -334,13 +320,13 @@
   \ifdim\parskip>\z@\vskip\parskip\else\vskip\topsep\fi\medskip%
   \begingroup%
   \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par at updaterelative%
-  \begin{tabular}{@{}p{\tud at len@authortable}l@{}}%
+  \begin{tabular}{@{}p{\tud at dim@authortable}l@{}}%
     \ifx\@referee\@empty\else%
       \refereename\tud at title@delimiter & %
-        \tud at multiple@fields at output{referee}\tabularnewline[\smallskipamount]%
+        \tud at multiple@fields at output{referee}\tabularnewline[1\smallskipamount]%
     \fi%
     \supervisorname\tud at title@delimiter & %
-      \tud at multiple@fields at output{supervisor}\tabularnewline[\smallskipamount]%
+      \tud at multiple@fields at output{supervisor}\tabularnewline[1\smallskipamount]%
     \issuedatetext\tud at title@delimiter & \@issuedate\tabularnewline%
     \duedatetext\tud at title@delimiter & \@duedate\tabularnewline%
   \end{tabular}%
@@ -350,7 +336,7 @@
 % in einer Tabelle ausgegeben. Die \env{tudpage}-Umgebung wird beendet, und
 % eine neue (rechte) Seite geöffnet.
 %    \begin{macrocode}
-  \vskip\tud at len@signatureskip\noindent%
+  \vskip\tud at glue@signaturevskip\noindent%
   \ifx\@chairman\@empty\else%
     \begin{tabular}{@{}l@{}}%
       \@chairman\tabularnewline%
@@ -379,9 +365,10 @@
 % Dies soll die Standardform einer Aufgabenstellung sein. Im ersten Argument
 % werden kurz die Ziele motiviert und erläutert, im zweiten Argument werden im
 % besten Fall die Schwerpunkte in einer \env{itemize}-Umgebung aufgeschlüsselt.
+% \ToDo{optionales Argument zum Schluss für nachfolgenden Text}[v2.07]
 %    \begin{macrocode}
 \newcommand\taskform[3][]{%
-  \begin{task}[#1]%
+  \begin{task}[{#1}]%
     \ifblank{#2}{}{\minisec{\objectivesname}\smallskip#2}%
     \ifblank{#3}{}{%
       \minisec{\focusname}\smallskip%
@@ -417,13 +404,13 @@
   \cleardoubleoddpage%
   \let\@headline\@empty%
   \TUD at parameter@family{tudpage}{%
-    \TUD at parameter@def{headline}{\def\@headline{##1}}%
+    \TUD at parameter@def{headline}{\tud at trim@field\@headline{##1}}%
     \TUD at parameter@let{heading}{headline}%
     \TUD at parameter@let{line}{headline}%
     \TUD at parameter@def{grade}{\def\@grade{##1}}%
     \TUD at parameter@handler at default{headline}%
   }%
-  \tudpage[pagestyle=empty,#1]%
+  \tudpage[{pagestyle=empty,#1}]%
   \tudbookmark{\evaluationname}{evaluation}%
   \subsection*{%
     \ifx\@headline\@empty%
@@ -440,17 +427,17 @@
 %    \begin{macrocode}
   \removelastskip%
   \ifdim\parskip>\z@\vskip\parskip\else\vskip\topsep\fi%
-  \setlength\@tempskipa{\smallskipamount}%
+  \tud at setglue\@tempskipa{\smallskipamount}%
   \ifx\@grade\@empty\else%
     \vskip\@tempskipa\noindent%
     \gradetext%
-    \setlength\@tempskipa{\bigskipamount}%
+    \tud at setglue\@tempskipa{\bigskipamount}%
   \fi%
   \ifx\@date\@empty\else%
     \vskip\@tempskipa\noindent%
     \ifx\@place\@empty\else\@place,\nobreakspace\fi\@date%
   \fi%
-  \vskip\tud at len@signatureskip\noindent%
+  \vskip\tud at glue@signaturevskip\noindent%
 %    \end{macrocode}
 % Der Befehl \cs{and} wird für einen möglichen Zweitgutachter angepasst. Das 
 % Hilfsmakro \cs{@tempa} dient zur Übernahme des richtigen Bezeichners für
@@ -489,7 +476,7 @@
 % erfolgt die Bewertung, das letzte Argument beinhaltet die Note.
 %    \begin{macrocode}
 \newcommand\evaluationform[5][]{%
-  \begin{evaluation}[#1]%
+  \begin{evaluation}[{#1}]%
     \ifblank{#2}{}{\minisec{\taskname}\smallskip#2}%
     \ifblank{#3}{}{\minisec{\contentname}\smallskip#3}%
     \ifblank{#4}{}{\minisec{\assessmentname}\smallskip#4}%
@@ -515,7 +502,7 @@
   \cleardoubleoddpage%
   \def\@headline{\noticename}%
   \TUD at parameter@family{tudpage}{%
-    \TUD at parameter@def{headline}{\def\@headline{##1}}%
+    \TUD at parameter@def{headline}{\tud at trim@field\@headline{##1}}%
     \TUD at parameter@let{heading}{headline}%
     \TUD at parameter@let{line}{headline}%
     \TUD at parameter@handler at default{headline}%
@@ -524,7 +511,7 @@
 % Es wird zu Beginn das angegebene Datum oben auf der rechten Seite ausgegeben. 
 % Anschließend wird die Überschrift und der gegebene Titel gesetzt. 
 %    \begin{macrocode}
-  \tudpage[pagestyle=empty,cdhead=date,#1]%
+  \tudpage[{pagestyle=empty,cdhead=date,#1}]%
   \tudbookmark{\noticename}{notice}%
   \ifx\@headline\@empty\else%
     \section*{\@headline}%
@@ -544,10 +531,10 @@
       \tud at multiple@fields at preset{@contactperson}{}{##1}%
       \begin{tabular}[t]{@{}l@{}}%
         \ignorespaces##1\tabularnewline%
+        \ifx\@emailaddress\@empty\else\@emailaddress\tabularnewline\fi%
         \ifx\@office\@empty\else\@office\tabularnewline\fi%
         \ifx\@telephone\@empty\else\@telephone\tabularnewline\fi%
         \ifx\@telefax\@empty\else\@telefax\tabularnewline\fi%
-        \ifx\@emailaddress\@empty\else\@emailaddress\tabularnewline\fi%
       \end{tabular}%
       \tud at multiple@fields at restore{@contactperson}%
       \tud at multiple@@@split{##2}{\hfill}%
@@ -569,7 +556,7 @@
 % werden die Arbeitsschwerpunkte beschrieben.
 %    \begin{macrocode}
 \newcommand\noticeform[3][]{%
-  \begin{notice}[#1]%
+  \begin{notice}[{#1}]%
     \ifblank{#2}{}{%
       \ifx\@@title\@empty\else%
         \minisec{\expandonce{\@@title}}\medskip%
@@ -588,9 +575,9 @@
 % \end{macro}^^A \noticeform
 %
 % \iffalse
-%</package>
+%</package&body>
 % \fi
 %
-% \Finale
+% \PrintBackMatter
 %
 \endinput

Modified: trunk/Master/texmf-dist/source/latex/tudscr/tudscr-texindy.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tudscr/tudscr-texindy.dtx	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/source/latex/tudscr/tudscr-texindy.dtx	2022-08-09 20:01:54 UTC (rev 64085)
@@ -1,10 +1,10 @@
-% \CheckSum{491}
 % \iffalse meta-comment
+%/GitFileInfo=tudscr-texindy.dtx
 %
 %  TUD-Script -- Corporate Design of Technische Universität Dresden
 % ----------------------------------------------------------------------------
 %
-%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2021
+%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2022
 %
 % ----------------------------------------------------------------------------
 %
@@ -23,33 +23,19 @@
 %
 % \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-texindy.dtx
+% \iffalse ins:batch + dtx:driver
+%<*ins>
+\ifx\documentclass\undefined
+  \input docstrip.tex
+  \ifToplevel{\batchinput{tudscr.ins}}
+\else
+  \let\endbatchfile\relax
+\fi
+\endbatchfile
+%</ins>
 %<*dtx>
-% \fi
-%
-\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
-\ProvidesFile{tudscr-texindy.dtx}[2019/06/28 v2.06 TUD-Script\space%
-  (texindy style files)%
-]
-%
-% \iffalse
+\ProvidesFile{tudscr-texindy.dtx}[2022/08/09]
+\RequirePackage{tudscr-gitinfo}
 \documentclass[english,ngerman,xindy]{tudscrdoc}
 \iftutex
   \usepackage{fontspec}
@@ -59,18 +45,11 @@
 \fi
 \usepackage{babel}
 \usepackage{tudscrfonts}
-\KOMAoptions{parskip=half-}
-\usepackage{bookmark}
 \usepackage[babel]{microtype}
 
-\CodelineIndex
-\RecordChanges
-\GetFileInfo{tudscr-texindy.dtx}
-\title{\file{\filename}}
-\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
-\date{\fileversion\nobreakspace(\filedate)}
-
+\GitHubBase{\TUDScriptRepository}
 \begin{document}
+  \author{Falk Hanisch\TUDScriptContactTitle}
   \maketitle
   \tableofcontents
   \DocInput{\filename}
@@ -80,15 +59,15 @@
 %
 % \selectlanguage{ngerman}
 %
-% \section{Stildateien für \texorpdfstring{\app{texindy}}{texindy}}
 %
+%
+% \section{Stildateien für \app{texindy}}
+%
 % Für die Dokumentationsklassen und -pakete wird zur Sortierung \app{texindy} 
 % verwendet. Da das Programm die die Dateien nicht in einem |TEXPATH| nach den
 % Stildateien sucht, werden diese zur Laufzeit im Arbeitsverzeichnis erstellt.
-% Nachfolgend werden die zu erstellenden \app{texindy}-Stildateien beschrieben.
+% Nachfolgend werden die erstellten \app{texindy}-Stildateien beschrieben.
 %
-% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
-%
 % \begin{macro}{\@hashchar}
 % \changes{v2.05}{2016/04/25}{neu}^^A
 % Das Hash-Zeichen wird bei \cls{tudscrdoc} für die Befehlsdeklarationen in der 
@@ -95,67 +74,63 @@
 % Stildatei benötigt. Damit dieses beim Erzeugen der Datei nicht als solches
 % interpretiert wird, ist dafür ein separates Makro notwendig.
 %    \begin{macrocode}
-%<*doc>
-\catcode`\#=12
+\edef\tud at res@a{\catcode`\noexpand\#=\the\catcode`\#\relax}%
+\@makeother\#
 \newcommand*\@hashchar{#}
-\catcode`\#=6
-%</doc>
+\tud at res@a
 %    \end{macrocode}
 % \end{macro}^^A \@hashchar
-%
-% \subsection{Defintion der verwendeten Umgebung}
-%
 % \begin{macro}{\tud at xdy@create}
 % \changes{v2.05}{2016/04/24}{neu}^^A
-% \begin{macro}{\tud at write@xdy}
+% \begin{macro}{\tud at xdy@@create}
+% \begin{macro}{\tud at xdy@write}
 % \changes{v2.05}{2016/04/24}{neu}^^A
-% \begin{macro}{\if at tud@xdy at glo}
-% \changes{v2.05}{2016/04/25}{neu}^^A
 % Dies sind die Hilfsmakros für die Erzeugung der nötigen Dateien. Mit dem
 % \cs{tud at xdy@create} wird angegeben, ob die Stildatei für einen Index oder ein 
 % Glossar erzeugt wird, was prinzipiell nur für die Klasse \cls{tudscrdoc} 
-% notwendig ist. 
+% notwendig ist.
 %    \begin{macrocode}
-\begingroup
-%<doc>\ifdef{\tudxdyflag}{%
-\newcommand*\tud at write@xdy{}
-\newwrite\tud at write@xdy
-\newif\if at tud@xdy at glo
-\newcommand*\tud at xdy@create[2][theindex]{%
-  \IfFileExists{\@currname-#2.xdy}{}{%
-  \ifstr{#1}{theglossary}{\@tud at xdy@glotrue}{\@tud at xdy@glofalse}%
-  \openout\tud at write@xdy=\@currname-#2.xdy\relax%
+%<doc>\ifdefined\tudxdyflag
+%<!doc>\tud at newwrite\tud at xdy@write
+\NewDocumentCommand\tud at xdy@create{s}{%
+  \begingroup%
+    \edef\tud at res@a{\@currname-\IfBooleanTF{#1}{gls}{ind}.xdy}%
+    \expandafter\IfFileExists\expandafter{\tud at res@a}{}{%
+      \IfBooleanTF{#1}{\@tud at res@swatrue}{\@tud at res@swafalse}%
+      \edef\tud at res@b{the\if at tud@res at swa glossary\else index\fi}%
+      \edef\tud at res@a{\noexpand\tud at xdy@@create{\tud at res@b}{\tud at res@a}}%
+      \tud at res@a%
+    }%
+  \endgroup%
+}
+\newcommand*\tud at xdy@@create[2]{%
+  \immediate\openout\tud at xdy@write=#2\relax%
 %    \end{macrocode}
-% Als erstes wird Standard-\LaTeXe-Modul geladen.
+% Als erstes wird das \LaTeX-Standardmodul geladen.
 %    \begin{macrocode}
-  \write\tud at write@xdy{(require "texindy.xdy")}%
+  \immediate\write\tud at xdy@write{(require "texindy.xdy")}%
 %    \end{macrocode}
 %
-% \subsection{Befehle zur Gruppierung der Indexeinträge}
-%
+% Für die Klasse \cls{tudscrdoc} werden in den Stildateien die verwendeten 
+% Umgebung definiert, welche für die prozessierten Indexdateien zu nutzen sind.
 %    \begin{macrocode}
-%<*doc>
-  \write\tud at write@xdy{%
+  \immediate\write\tud at xdy@write{%
     (markup-index^^J%
-    \space\space:open^^J%
+    \@spaces:open^^J%
     "\string\begin{#1}^^J%
-    \space\space%
-    \string\providecommand*\string\lettergroupDefault[1]{\@percentchar^^J%
-    \@spaces\string\par%
-    \string\centerline{\string\textbf{\string\textsf{Symbole}}}%
-    \string\par\@percentchar^^J%
-    \@spaces\string\nopagebreak\@percentchar^^J%
+%<*doc>
+    \space\space\string\makeatletter\@percentchar^^J%
+    \space\space\string\providecommand*\string\lettergroupDefault[1]%
+        {\string\lettergroup{\string\tud at symbols@name}}\@percentchar^^J%
+    \space\space\string\providecommand*\string\lettergroup[1]{\@percentchar^^J%
+    \@spaces\string\belowpdfbookmark%
+        {\@hashchar1}{#1/\@hashchar1}\@percentchar^^J%
+    \@spaces\string\par\string\centerline%
+        {\string\normalsize\string\textbf{\string\textsf{\@hashchar1}}}%
+        \@percentchar^^J%
+    \@spaces\string\par\string\smallskip\string\nopagebreak\@percentchar^^J%
     \space\space}\@percentchar^^J%
-    \space\space%
-    \string\providecommand*\string\lettergroup[1]{\@percentchar^^J%
-    \@spaces\string\par%
-    \string\centerline{\string\textbf{\string\textsf{\@hashchar1}}}%
-    \string\par\@percentchar^^J%
-    \@spaces\string\nopagebreak\@percentchar^^J%
-    \space\space}\@percentchar^^J%
-    \space\space\string\makeatletter\@percentchar^^J%
-    \space\space\string\scan at allowedfalse\@percentchar%
-  }%
+    \space\space\string\scan at allowedfalse\@percentchar^^J%
 %    \end{macrocode}
 % Für die Änderungsliste erfolgt die Gruppierung anhand der Versionsnummer. Da 
 % diese auf der ersten Ebene angegeben ist (\cs{item}) muss das Ganze mit einem 
@@ -163,114 +138,94 @@
 % Außerdem werden mit \cs{tud at lst@def} die benötigten Befehle zur selektiven 
 % Anzeige der Änderungseinträge erstellt.
 %    \begin{macrocode}
-  \if at tud@xdy at glo%
-  \write\tud at write@xdy{%
+\if at tud@res at swa
     \space\space\string\newcommand*\string\@lettergroup{}\@percentchar^^J%
-    \space\space%
-    \string\def\string\@lettergroup\@hashchar1\string\relax%
-    {\string\lettergroup{\@hashchar1}}\@percentchar^^J%
-    \space\space\string\tud at lst@def\@percentchar%
-  }%
-  \fi%
+    \space\space\string\def\string\@lettergroup\@hashchar1\string\relax%
+        {\string\lettergroup{\@hashchar1}}\@percentchar^^J%
+    \space\space\string\tud at lst@def\@percentchar^^J%
+\fi
+%</doc>
+    \space\space\string\providecommand*\string\seesep{/}\@percentchar^^J%
 %    \end{macrocode}
 % Der Abschluss der Umgebungsdefinition.
 %    \begin{macrocode}
-  \if at tud@xdy at glo%
-  \write\tud at write@xdy{%
-    "^^J%
-    \space\space:close "\string~n\string~n\string\end{#1}\string~n"^^J%
-    \space\space:hierdepth 4^^J%
-    )%
-  }%
-  \else%
-  \write\tud at write@xdy{%
-    "^^J%
-    \space\space:close "\string~n\string~n\string\end{#1}\string~n"^^J%
-    \space\space:hierdepth 3^^J%
-    )%
-  }%
-  \fi%
+    "^^J% Ende des Umgebungsbeginns
+    \@spaces:close "\string~n\string~n\string\end{#1}\string~n"^^J%
+    \@spaces:hierdepth 3^^J%
+    )^^J%
+%    \end{macrocode}
+% Für die Sortierung des Indexes sollen einzelne Zeichen beachtet werden.
+% Hierfür wird |xy-ignore-special| durch |xy-resolve-special| ersetzt.
+%    \begin{macrocode}
+%<*doc>
+    (define-sort-rule-orientations (forward backward forward forward))^^J%
+    (use-rule-set :run 0^^J%
+    \@spaces:rule-set ("xy-alphabetize" "xy-resolve-special")^^J%
+    )^^J%
+    (use-rule-set :run 1^^J%
+    \@spaces:rule-set ("xy-resolve-diacritics" "xy-resolve-special")^^J%
+    )^^J%
+    (use-rule-set :run 2^^J%
+    \@spaces:rule-set ("xy-resolve-case" "xy-resolve-special")^^J%
+    )^^J%
+%    \end{macrocode}
+% Die Seitenzahlenbereiche für die Quelltextdokumentation bestehen aus drei 
+% Teilen, um das Verlinken auf Codezeilen zu ermöglichen~--
+% \meta{Target}|:|\meta{Dateischlüssel}|-|\meta{Codezeile}|:|\meta{Seitenzahl}
+%    \begin{macrocode}
+    (define-alphabet "AlphaExtended"^^J%
+    \@spaces(^^J%
+    \@spaces\@spaces"A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M"^^J%
+    \@spaces\@spaces"N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z"^^J%
+    \@spaces\@spaces"a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m"^^J%
+    \@spaces\@spaces"n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"^^J%
+    \@spaces\@spaces"?"^^J%
+    \@spaces)^^J%
+    )^^J%
+    (define-location-class "hypdoc"^^J%
+    \@spaces(^^J%
+    \@spaces\@spaces"arabic-numbers" :sep ":"^^J%
+    \@spaces\@spaces"AlphaExtended" \space:sep "-" "arabic-numbers" :sep ":"^^J%
+    \@spaces\@spaces"arabic-numbers"^^J%
+    \@spaces)^^J%
+    \@spaces:min-range-length 2^^J%
+    )^^J%
 %</doc>
 %    \end{macrocode}
-%
-% \subsection{Defintion und Markup der Seitenzahlen}
-%
 % Leider lässt sich für Seitenzahlbereiche via |:attr| (noch) kein Markup für 
 % angehängte \enquote*{f.} sowie \enquote*{ff.} einstellen. Diese würden deshalb
 % bei kursiven oder fetten Seitenzahlen trotzdem in normaler Schrift erscheinen,
 % weshalb auf die Auszeichnung folgender Seiten verzichtet wird.
 %    \begin{macrocode}
-%^^A  \write\tud at write@xdy{(require "ff-ranges.xdy")}%
+%^^A  (require "ff-ranges.xdy")^^J%
 %    \end{macrocode}
 % Bereiche mit mehr als zwei Seitenzahlen werden zusammengefasst, wobei als
-% Trennzeichen ein Halbgeviertstrich verwendet wird. Für \cls{tudscrdoc} werden 
-% die Seitenzahlen beim Einbinden der einzelnen \file{.dtx}-Dateien mit einem
-% alphanumerischen Präfix versehen, wofür eine eigene |location-class| erstellt
-% wird.
+% Trennzeichen ein Halbgeviertstrich verwendet wird.
 %    \begin{macrocode}
-  \write\tud at write@xdy{%
-    (define-location-class^^J%
-    \space\space"arabic-page-numbers" ("arabic-numbers")%
-    \space:min-range-length 1^^J%
+    (define-location-class "arabic-page-numbers"^^J%
+    \@spaces("arabic-numbers")^^J%
+    \@spaces:min-range-length 2^^J%
     )^^J%
 %<*doc>
-    (define-alphabet "AlphaExtended"^^J%
-    \space(^^J%
-    \space\space"A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M"^^J%
-    \space\space"N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z"^^J%
-    \space\space"a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m"^^J%
-    \space\space"n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"^^J%
-    \space\space"?"^^J%
-    \space)^^J%
-    )^^J%
-    (define-location-class^^J%
-    \space\space"codeline" ("AlphaExtended" :sep "-" "arabic-numbers")%
-    \space:min-range-length 2^^J%
-    )^^J%
-    (define-location-class-order ("arabic-page-numbers" "codeline"))^^J%
+    (define-location-class-order ("hypdoc" "arabic-page-numbers"))^^J%
 %</doc>
-    (markup-range :sep "--")%
-  }%
+    (markup-range :sep "--")^^J%
 %    \end{macrocode}
-%
-% \subsection{Ignorieren von bestimmten Anteilen bei der Sortierung}
-%
 % Alle Argumente in eckigen Klammern werden ignoriert. Dies wird bei einigen
 % Indexbefehlen genutzt, um die nicht beachteten RegExp-Regeln auszugleichen, 
-% siehe den nächsten Absatz. In der Klasse \cls{tudscrdoc} werden außerdem ein 
-% oder mehrere vorangestellte |@|"~Zeichen ignoriert.
+% siehe den nächsten Absatz. In der Klasse \cls{tudscrdoc} werden außerdem im 
+% Befehlsnamen enthaltene |@|"~Zeichen für die Sortierung gesondert behandelt.
 %    \begin{macrocode}
-  \write\tud at write@xdy{%
-    (merge-rule "\@backslashchar[(.*)\@backslashchar]" "" :eregexp)%
 %<*doc>
-    ^^J%
-    (merge-rule%
-    \space"\string^(@+)([\string^@~n]*)"%
-    \space"\string\2\string~e\string\1"%
-    \space:eregexp :again%
+    (merge-rule :again^^J%
+    \@spaces"(.*)@(.*)"^^J%
+    \@spaces"\string\1\string\2\space\string~e"^^J%
     )^^J%
-    (merge-rule%
-    \space"(.*)(@@@@)([\string^@~n]*)"%
-    \space"\string\1@@@\string\3\string~e"%
-    \space:again :eregexp%
+%</doc>
+    (merge-rule :eregexp^^J%
+    \@spaces"\string\[(.*)\string\]"^^J%
+    \@spaces""^^J%
     )^^J%
-    (merge-rule%
-    \space"(.*)(@@@)([\string^@~n]*)"%
-    \space"\string\1@@\string\3\string~e"%
-    \space:again :eregexp%
-    )^^J%
-    (merge-rule%
-    \space"(.*)(@@)([\string^@~n]*)"%
-    \space"\string\1@\string\3\string~e"%
-    \space:eregexp :again%
-    )^^J%
-    (merge-rule%
-    \space"(.*?)(@)([\string^@~n]*)"%
-    \space"\string\1\string~b\string\3"%
-    \space:eregexp :again%
-    )%
-%</doc>
-  }%
 %    \end{macrocode}
 % Innerhalb ausgewählter Auszeichnungs- und Textbefehle sollten die Befehle
 % selbst, nicht jedoch die Argumente verworfen werden. Leider lässt sich dies 
@@ -279,25 +234,20 @@
 % genutzt werden.
 %    \begin{macrocode}
 %<*!doc>
-%^^A  \write\tud at write@xdy{%
 %^^A    (merge-rule "\\hologo\{(.*)\}" "/1" :eregexp)^^J%
 %^^A    (merge-rule "\\texttt\{(.*)\}" "/1" :eregexp)^^J%
 %^^A    (merge-rule "\\textsbn\{(.*)\}" "/1" :eregexp)^^J%
-%^^A    (merge-rule "\\textsbs\{(.*)\}" "/1" :eregexp)^^J%
-%^^A  }%
+%^^A    (merge-rule "\\textsbi\{(.*)\}" "/1" :eregexp)^^J%
 %</!doc>
 %    \end{macrocode}
-%
-% \subsection{Markup der einzelnen Einträge}
-%
 % Für die Änderungsliste im Handbuch werden Untereinträge bis zur vierten Ebene
 % unterstützt.
 %    \begin{macrocode}
-%<*!doc&class>
-  \write\tud at write@xdy{%
-    (markup-indexentry :open "~n \string\subsubsubitem " :depth 3)%
-  }%
-%</!doc&class>
+%<*!doc>
+    (markup-indexentry :depth 3^^J%
+    \@spaces:open\space\space"\string~n\string\subsubsubitem\space"^^J%
+    )^^J%
+%</!doc>
 %    \end{macrocode}
 % Für die Änderungsliste von \cls{tudscrdoc} erfolgt die Gruppierung anhand der
 % angegebenen Versionsnummer. Das bedeutet, das das Markup für die eigentliche 
@@ -304,11 +254,10 @@
 % |letter-group| unterdrückt und die erste Ebene dafür verwendet wird. 
 %    \begin{macrocode}
 %<*doc>
-  \if at tud@xdy at glo%
-  \write\tud at write@xdy{%
-    (markup-letter-group%
-    \space:open-head "\string~n\space\space\string\@gobble{"%
-    \space:close-head "}"%
+\if at tud@res at swa
+    (markup-letter-group^^J%
+    \@spaces:open-head\space\space"\string~n\space\space\string\@gobble{"^^J%
+    \@spaces:close-head "}"^^J%
     )^^J%
 %    \end{macrocode}
 % Leider gibt es für die Eintragsebenen keine Schlüssel |open-head| und
@@ -316,36 +265,32 @@
 % Zwischen Einträgen der ersten Ebene soll äquivalent zu |letter-group| etwas
 % Abstand eingefügt werden.
 %    \begin{macrocode}
-    (markup-indexentry-list%
-    \space:sep "\string~n\string~n\space\space\string\indexspace\string~n"%
-    \space:depth 0%
+    (markup-indexentry-list :depth 0^^J%
+    \@spaces:sep\space\space\space%
+        "\string~n\string~n\space\space\string\indexspace\string~n"^^J%
     )^^J%
 %    \end{macrocode}
 % Da jeder Eintrag in der Änderungsliste aus mindestens drei Ebenen besteht, 
 % wird vor der ersten Ebene der Beginn des Markupbefehls gesetzt\dots
 %    \begin{macrocode}
-    (markup-indexentry\@spaces\space\space%
-    :open "\string~n\space\space\string\@lettergroup\space"\space:depth 0%
+    (markup-indexentry \@spaces\space:depth 0^^J%
+    \@spaces:open\space\space%
+        "\string~n\space\space\string\@lettergroup\space"^^J%
     )^^J%
 %    \end{macrocode}
-% \dots und vor Beginn der zweiten Ebene mit \cs{relax} terminiert.
+% \dots und vor Beginn der zweiten Ebene mit \cs{relax} terminiert. Diese 
+% wird mit \cs{item} ausgezeichnet.
 %    \begin{macrocode}
-    (markup-indexentry-list :open "\string\relax" :depth 1)^^J%
-%    \end{macrocode}
-% Anschließend werden die zweite sowie die dritte Ebene mit \cs{item} und
-% \cs{subitem} ausgezeichnet.
-%    \begin{macrocode}
-    (markup-indexentry\@spaces\space\space%
-    :open "\string~n\space\space\string\item\space" :depth 1%
+    (markup-indexentry-list :depth 1^^J%
+    \@spaces:open\space\space"\string\relax"^^J%
     )^^J%
-    (markup-indexentry-list :open "\string\efill" :depth 2)^^J%
-    (markup-indexentry\@spaces\space\space%
-    :open "\string~n\@spaces\string\subitem\space" :depth 2%
+    (markup-indexentry \@spaces\space:depth 1^^J%
+    \@spaces:open\space\space"\string~n\space\space\string\item\space"^^J%
     )^^J%
 %    \end{macrocode}
-% Im Implemetierungsteil soll eine einzelne Änderungsnotiz für einen Eintrag
-% direkt danach ausgegeben werden. Exisitieren für diesen jedoch mehrere
-% Anmerkungen, so sollen diese in der nächsten Ebene ausgegeben werden. Da die
+% Eine einzelne, nachfolgende Änderungsnotiz für den aktuellen Eintrag soll 
+% direkt ausgegeben werden. Sind jedoch mehrere nachgelagerte Anmerkungen 
+% vorhanden, so sollen diese in der nächsten Ebene ausgegeben werden. Da die
 % Anzahl aller Anmerkungen zu einem einzelnen Eintrag zu Beginn noch unbekannt
 % ist, werden alle dazugehörigen Änderungsnotizen zunächst mit \cs{tud at lst@add}
 % in der~-- zuvor mit dem Makro \cs{tud at lst@init} initialisierten~-- Liste
@@ -354,42 +299,32 @@
 % werden entsprechend die Makros \cs{tud at lst@@init}, \cs{tud at lst@@values} und
 % \cs{tud at lst@@add} sowie \cs{tud at lst@@process} verwendet.
 %    \begin{macrocode}
-    (markup-indexentry-list^^J%
-    \space\space:open\space\space"\string\tud at lst@init"^^J%
-    \space\space:close "\string~n \@spaces\space\string\tud at lst@process"^^J%
-    \space\space:depth 3^^J%
+    (markup-indexentry-list :depth 2^^J%
+    \@spaces:open\space\space"\string\tud at lst@init"^^J%
+    \@spaces:close "\string~n \@spaces\space\string\tud at lst@process"^^J%
     )^^J%
-    (markup-indexentry^^J%
-    \space\space:open%
-    \space\space"\string~n\@spaces\space\space\string\tud at lst@add{"^^J%
-    \space\space:close "}"^^J%
-    \space\space:depth 3^^J%
+    (markup-indexentry \@spaces\space:depth 2^^J%
+    \@spaces:open%
+        \space\space"\string~n\@spaces\space\space\string\tud at lst@add{"^^J%
+    \@spaces:close "}"^^J%
     )^^J%
-    (markup-indexentry-list^^J%
-    \space\space:close "\string~n\@spaces\@spaces\string\tud at lst@@process{"^^J%
-    \space\space:open\space\space"}\string\tud at lst@@init"^^J%
-    \space\space:depth 4^^J%
+    (markup-indexentry-list :depth 3^^J%
+    \@spaces:close "\string~n\@spaces\@spaces\string\tud at lst@@process{"^^J%
+    \@spaces:open\space\space"}\string\tud at lst@@init"^^J%
     )^^J%
-    (markup-indexentry^^J%
-    \space\space:open%
-    \space\space"\string~n\@spaces\@spaces\string\tud at lst@@add{"^^J%
-    \space\space:close "}"^^J%
-    \space\space:depth 4^^J%
-    )%
-  }%
+    (markup-indexentry \@spaces\space:depth 3^^J%
+    \@spaces:open%
+        \space\space"\string~n\@spaces\@spaces\string\tud at lst@@add{"^^J%
+    \@spaces:close "}"^^J%
+    )^^J%
 %    \end{macrocode}
 % Für den Index aller Eintragstypen ist nur auf zu leere \cs{hbox} zu achten.
 %    \begin{macrocode}
-  \else%
-  \write\tud at write@xdy{%
-    (markup-indexentry-list :open "\string\efil" :depth 1)%
-  }%
-  \fi%
+\else
+    (markup-indexentry-list :open "\string\efil" :depth 1)^^J%
+\fi
 %</doc>
 %    \end{macrocode}
-%
-% \subsection{Markup des Füllbereichs zwischen Eintrag und Seitenzahlen}
-%
 % Punkte zwischen Eintrag und Seitenzahl. Das schließende \cs{relax} wird für 
 % die smarte Definition des Befehls \cs{cleversee} benötigt, welcher nach den 
 % beiden obligatorischen Argument die nachfolgenden Seitenzahlen sucht und 
@@ -397,134 +332,96 @@
 % der Änderungsliste der Hyperlink für die Seitenzahl respektive die Codezeile 
 % direkt erzeugt.
 %    \begin{macrocode}
-  \write\tud at write@xdy{%
-    (markup-locclass-list%
-%<!doc>    \space:open "\string\,\string\dotfill\string\,"%
-%<doc>    \space:open "\string\pfill\space"%
-    \space:close "\string\relax"%
-    \space:sep ",\space"%
-    )%
-  }%
+    (markup-locclass-list^^J%
+%<!doc>    \@spaces:open\space\space"\string\,\string\dotfill\string\,"^^J%
+%<doc>    \@spaces:open\space\space"\string\pfill\space"^^J%
+    \@spaces:close "\string\relax"^^J%
+    \@spaces:sep\space\space\space",\space"^^J%
+    )^^J%
 %    \end{macrocode}
+% Es werden für Handbuch und Tutorials die Attribute \emph{!} für deklarierende 
+% sowie \emph{?} für wichtige Einträge zusätzlich zu \emph{default} definiert.
 %
-% \subsection{Attribute für Einträge}
-%
-% Es werden für Handbuch und Tutorials die Attribute \emph{declare} mit der
-% Abkürzung~\emph{!} sowie \emph{important} mit der Abkürzung~\emph{?} und
-% \emph{default} definiert, welche hierarchisch gleichgestellt sind.
-%
-% \iffalse
+% Einträge werden hierarchisch unterschieden. Standardeinträge \val{default}
+% werden ggf. von deklarierenden oder wichtigen Einträgen überschrieben bzw. 
+% nicht separat gelistet.
+%    \begin{macrocode}
 %<*!doc>
-% \fi
-%
-%    \begin{macrocode}
-  \write\tud at write@xdy{%
-    (define-attributes (("declare" "!" "important" "?" "default")))^^J%
+    (define-attributes (("!" "default") ("?" "default") ("default")))^^J%
+    (markup-attribute-group-list :sep ", ")^^J%
 %    \end{macrocode}
-% Eine Alternative wäre, diese in der Hierarchie zu unterscheiden, allerdings
-% war eine Bildung von zufriedenstellenden Seitenbereichen dabei nicht möglich
-% und wurde deshalb verworfen.
-%    \begin{macrocode}
-%^^A    (markup-attribute-group-list :sep ", ")^^J%
-%^^A    (define-attributes (("declare" "!") ("important" "?")("default")))^^J%
-%    \end{macrocode}
-% Einträge, die als wichtig oder als Deklaration festgelegt wurden, könnten
-% auch für normale Indexeinträge zur Bereichsbildung verwendet werden. 
-% Allerdings führt dies auch zur Erzeugung redundanter Einträge, falls es sich 
-% bei den Sondereinträgen bereits um einen Seitenbereich handelt.
-%    \begin{macrocode}
-%^^A    (merge-to "declare" "default")^^J%
-%^^A    (merge-to "!" "default")^^J%
-%^^A    (merge-to "important" "default")^^J%
-%^^A    (merge-to "?" "default")^^J%
-%    \end{macrocode}
 % Hier erfolgt die Definition der Auszeichnugen der Attribute. Deklarationen 
 % werden fett gedruckt, wichtige Einträge erscheinen kursiv. Außerdem wird ein
 % entsprechnder Link auf die Seite eingefügt.
 %    \begin{macrocode}
-    (markup-locref%
-    \space:attr "declare"\space\space%
-    \space:open "\string\textbf{\string\hyperpage{"%
-    \space:close "}}"%
+    (markup-locref :attr "!"^^J%
+    \@spaces:open\space\space"\string\textbf{\string\hyperpage{"^^J%
+    \@spaces:close "}}"^^J%
     )^^J%
-    (markup-locref%
-    \space:attr "!"\@spaces\@spaces%
-    \space:open "\string\textbf{\string\hyperpage{"%
-    \space:close "}}"%
+    (markup-locref :attr "?"^^J%
+    \@spaces:open\space\space"\string\textit{\string\hyperpage{"^^J%
+    \@spaces:close "}}"^^J%
     )^^J%
-    (markup-locref%
-    \space:attr "important"%
-    \space:open "\string\textsl{\string\hyperpage{"%
-    \space:close "}}"%
+    (markup-locref :attr "default"^^J%
+    \@spaces:open\space\space"\string\hyperpage{"^^J%
+    \@spaces:close "}" ^^J%
     )^^J%
-    (markup-locref%
-    \space:attr "?"\@spaces\@spaces%
-    \space:open "\string\textsl{\string\hyperpage{"%
-    \space:close "}}"%
-    )^^J%
-    (markup-locref%
-    \space:attr "default"\space\space%
-    \space:open "\string\hyperpage{"\@spaces\@spaces%
-    \space:close "}"%
-    )%
-  }%
+%</!doc>
 %    \end{macrocode}
-%
-% \iffalse
-%</!doc>
-%<*doc>
-% \fi
-%
 % Für \cls{tudscrdoc} erfolgen die Auszeichnungen für den Index im Stile von
-% \pkg{doc} mit den Attribute \emph{main} und \emph{usage}, wobei hier eine 
-% Hierarchie verwendet wird. Es werden Einträge mit dem Attribut \emph{usage} 
-% vor \emph{main} und \emph{default} aufgeführt.
+% \pkg{doc} vorallem mit den Attributen \emph{usage} für Erläuterung sowie
+% \emph{main} für Codedefinitionen und \emph{code} für Verweise auf die 
+% Verwendung im Quellcode. Zusätzlich wird \emph{change} definiert, um auch
+% Änderungseinträge separat zu erfassen. Diese Attribute dienen \app{texindy}
+% lediglich für die Kategorisierung der Einträge, die Formatierung dieser für
+% die Ausgabe erfolgt mit \cs{tud at xdy@mapping}\marg{Attribut}\marg{Referenz}.
 %    \begin{macrocode}
-  \write\tud at write@xdy{%
+%<*doc>
     (markup-attribute-group-list :sep ", ")^^J%
-    (define-attributes (("usage") ("main") ("default")))^^J%
-    (markup-locref :attr "usage"%
-    \space:open "\string\usage{"\space:close "}"%
+    (define-attributes (("usage") ("main") ("code") ("change") ("default")))^^J%
+    (markup-locref :attr "change"^^J%
+    \@spaces:open"\string\tud at xdy@mapping{change}{"^^J
+    \@spaces:close "}"^^J%
     )^^J%
-    (markup-locref :attr "main"%
-    \space\space:open "\string\main{"\space\space:close "}"%
-    )%
-  }%
+    (markup-locref :attr "code"^^J%
+    \@spaces:open "\string\tud at xdy@mapping{code}{"^^J%
+    \@spaces:close "}"^^J%
+    )^^J%
+    (markup-locref :attr "usage"^^J%
+    \@spaces:open "\string\tud at xdy@mapping{usage}{"^^J%
+    \@spaces:close "}"^^J%
+    )^^J%
+    (markup-locref :attr "main"^^J%
+    \@spaces:open "\string\tud at xdy@mapping{main}{"^^J%
+    \@spaces:close "}"^^J%
+    )^^J%
+%</doc>
 %    \end{macrocode}
-%
-% \iffalse
-%</doc>
-%<*!doc>
-% \fi
-%
-% \subsection{Querverweise im Index}
-%
-% Im Handbuch prüfen, mit \verb=|see=\marg{Eintrag} erzeugte Querverweise im 
+% Im Handbuch prüfen, mit \verb+|see+\marg{Eintrag} erzeugte Querverweise im 
 % Index, ob außerdem noch Seitenzahlangaben existent sind.
 %    \begin{macrocode}
-  \write\tud at write@xdy{%
+%<*!doc>
     (markup-crossref-list :class "see"^^J%
-    \space\space:open "\string\cleversee{" \@spaces:sep "; " :close "}"^^J%
+    \@spaces:open\space\space"\string\cleversee\space"^^J%
+    \@spaces:sep\space\space\space"; "^^J%
+    \@spaces:close "\@backslashchar\@backslashchar"^^J%
     )^^J%
     (markup-crossref-list :class "seealso"^^J%
-    \space\space:open "\string\cleverseealso{" :sep "; " :close "}"^^J%
-    )%
-  }%
+    \@spaces:open\space\space"\string\cleverseealso\space"^^J%
+    \@spaces:sep\space\space\space"; "^^J%
+    \@spaces:close "\@backslashchar\@backslashchar"^^J%
+    )^^J%
 %    \end{macrocode}
-%
-% \iffalse
-%<*class>
-% \fi
-%
 % Um Querverweise ohne Prüfung des Zieleintrags erzeugen zu können, wird der 
 % passende Typ |seeunverified| definiert.
 %    \begin{macrocode}
-  \write\tud at write@xdy{%
+%<*class>
     (define-crossref-class "seeunverified" :unverified)^^J%
     (markup-crossref-list :class "seeunverified"^^J%
-    \space\space:open "\string\cleversee{" \@spaces:sep "; " :close "}"^^J%
-    )%
-  }%
+    \@spaces:open\space\space"\string\cleversee\space"^^J%
+    \@spaces:sep\space\space\space"; "^^J%
+    \@spaces:close "\@backslashchar\@backslashchar"^^J%
+    )^^J%
 %    \end{macrocode}
 % Dieser Querverweistyp wird speziell im allgemeinen Index verwendet, um auf 
 % einen Spezialindex zu verweisen. Dabei dient |:unverified| zum Unterdrücken
@@ -531,68 +428,53 @@
 % von Warnungen durch \app{texindy} aufgrund eines fehlenden Ziels für den
 % Querverweis.
 %    \begin{macrocode}
-  \write\tud at write@xdy{%
     (define-crossref-class "seeidx" :unverified)^^J%
     (markup-crossref-list :class "seeidx"^^J%
-    \space\space:open "\string\seeidx{"\@spaces\@spaces:sep "; "%
-    \space:close "}{}"^^J%
-    )%
-  }%
+    \@spaces:open\space\space"\string\seeidx{"^^J%
+    \@spaces:sep\space\space\space"; "^^J%
+    \@spaces:close "}{}"^^J%
+    )^^J%
+%</class>
 %    \end{macrocode}
+% Werden mit \verb+|see+\marg{Eintrag!Untereintrag} gezielte Querverweise auf
+% Untereinträge im Index erstellt, so werden diese nicht standardmäßig mit 
+% einem Komma sondern mit dem anpassbaren Makro \cs{seesep} getrennt.
+%    \begin{macrocode}
+    (markup-crossref-layer-list :class "see"%
+    \@spaces\space:sep "\string\seesep{}"%
+    )^^J%
+    (markup-crossref-layer-list :class "seealso"%
+    \space:sep "\string\seesep{}"%
+    )^^J%
+%    \end{macrocode}
 % Damit die Makros \cs{cleversee} und \cs{cleverseealso} sowie \cs{seeidx} auf
 % nachfolgende Seitenzahlen suchen können, müssen diese vor selbigen im Index
 % aufgerufen werden.
 %    \begin{macrocode}
-  \write\tud at write@xdy{%
     (define-location-class-order^^J%
-    \space\space(^^J%
-    \@spaces"see" "seealso" "seeidx" "seeunverified"^^J%
+    \@spaces(^^J%
+%<class>    \@spaces"see" "seealso" "seeidx" "seeunverified"^^J%
+%<!class>    \@spaces"see" "seealso"^^J%
     \@spaces"roman-page-numbers" "arabic-page-numbers" "alpha-page-numbers"^^J%
     \@spaces"Roman-page-numbers" "Alpha-page-numbers"^^J%
-    \space\space)^^J%
-    )%
-  }%
-%    \end{macrocode}
-%
-% \iffalse
-%</class>
-% \fi
-%
-% Werden mit \verb=|see=\marg{Eintrag!Untereintrag} gezielte Querverweise auf
-% Untereinträge im Index erstellt, so werden diese nicht standardmäßig mit 
-% einem Komma sondern mit \enquote*{\,\textbar\,} getrennt.
-%    \begin{macrocode}
-  \write\tud at write@xdy{%
-    (markup-crossref-layer-list :class "see"%
-    \@spaces\space:sep "\string\,\string\textbar\string\,"%
+    \@spaces)^^J%
     )^^J%
-    (markup-crossref-layer-list :class "seealso"%
-    \space:sep "\string\,\string\textbar\string\,"%
-    )%
-  }%
+%</!doc>
 %    \end{macrocode}
-%
-% \iffalse
-%</!doc>
-% \fi
-%
-% \subsection{Erzeugen der Stildateien}
-%
 % Damit ist die \app{texindy}-Stildatei fertig und kann mit \cs{tud at xdy@create} 
 % erstellt werden.
 %    \begin{macrocode}
-  \closeout\tud at write@xdy%
   }%
+  \immediate\closeout\tud at xdy@write%
 }
-\tud at xdy@create{ind}
-%<doc>\tud at xdy@create[theglossary]{gls}
-%<doc>}{}
-\endgroup
+\tud at xdy@create
+%<doc>\tud at xdy@create*
+%<doc>\fi
 %    \end{macrocode}
-% \end{macro}^^A \if at tud@xdy at glo
-% \end{macro}^^A \tud at write@xdy
+% \end{macro}^^A \tud at xdy@write
+% \end{macro}^^A \tud at xdy@@create
 % \end{macro}^^A \tud at xdy@create
 %
-% \Finale
+% \PrintBackMatter
 %
 \endinput

Modified: trunk/Master/texmf-dist/source/latex/tudscr/tudscr-title.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tudscr/tudscr-title.dtx	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/source/latex/tudscr/tudscr-title.dtx	2022-08-09 20:01:54 UTC (rev 64085)
@@ -1,10 +1,10 @@
-% \CheckSum{1406}
 % \iffalse meta-comment
+%/GitFileInfo=tudscr-title.dtx
 %
 %  TUD-Script -- Corporate Design of Technische Universität Dresden
 % ----------------------------------------------------------------------------
 %
-%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2021
+%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2022
 %
 % ----------------------------------------------------------------------------
 %
@@ -23,33 +23,19 @@
 %
 % \fi
 %
-% \CharacterTable
-%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-%   Digits        \0\1\2\3\4\5\6\7\8\9
-%   Exclamation   \!     Double quote  \"     Hash (number) \#
-%   Dollar        \$     Percent       \%     Ampersand     \&
-%   Acute accent  \'     Left paren    \(     Right paren   \)
-%   Asterisk      \*     Plus          \+     Comma         \,
-%   Minus         \-     Point         \.     Solidus       \/
-%   Colon         \:     Semicolon     \;     Less than     \<
-%   Equals        \=     Greater than  \>     Question mark \?
-%   Commercial at \@     Left bracket  \[     Backslash     \\
-%   Right bracket \]     Circumflex    \^     Underscore    \_
-%   Grave accent  \`     Left brace    \{     Vertical bar  \|
-%   Right brace   \}     Tilde         \~}
-%
-% \iffalse
-%%% From File: tudscr-title.dtx
+% \iffalse ins:batch + dtx:driver
+%<*ins>
+\ifx\documentclass\undefined
+  \input docstrip.tex
+  \ifToplevel{\batchinput{tudscr.ins}}
+\else
+  \let\endbatchfile\relax
+\fi
+\endbatchfile
+%</ins>
 %<*dtx>
-% \fi
-%
-\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
-\ProvidesFile{tudscr-title.dtx}[2019/08/20 v2.06c TUD-Script\space%
-  (title)%
-]
-%
-% \iffalse
+\ProvidesFile{tudscr-title.dtx}[2022/08/09]
+\RequirePackage{tudscr-gitinfo}
 \documentclass[english,ngerman,xindy]{tudscrdoc}
 \iftutex
   \usepackage{fontspec}
@@ -59,18 +45,11 @@
 \fi
 \usepackage{babel}
 \usepackage{tudscrfonts}
-\KOMAoptions{parskip=half-}
-\usepackage{bookmark}
 \usepackage[babel]{microtype}
 
-\CodelineIndex
-\RecordChanges
-\GetFileInfo{tudscr-title.dtx}
-\title{\file{\filename}}
-\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
-\date{\fileversion\nobreakspace(\filedate)}
-
+\GitHubBase{\TUDScriptRepository}
 \begin{document}
+  \author{Falk Hanisch\TUDScriptContactTitle}
   \maketitle
   \tableofcontents
   \DocInput{\filename}
@@ -83,9 +62,11 @@
 % \changes{v2.02}{2014/06/23}{Paket \pkg{titlepage} nicht weiter unterstützt}^^A
 % \changes{v2.05}{2015/07/13}{Titel für Poster}^^A
 %
+%
+%
 % \section{Titelei für die \TUDScript-Klassen}
 %
-% Zusätzlich zu den \KOMAScript-Varianten werde für die \TUDScript-Klassen
+% Ergänzend zu den \KOMAScript-Varianten werden für die \TUDScript-Klassen
 % spezielle, im \TUDCD gehaltene Ausführungen von Titelseite und Titelkopf
 % bereitgestellt. Zusätzlich gibt es auch eine Umschlagsseite (Cover), welche
 % in beiden Gestaltungsvarianten genutzt werden kann.
@@ -95,8 +76,6 @@
 % \TUDCD bereitgestellt. Dabei wird auch das Aussehen und die Position des
 % Titels analog zu den Überschriften auf Teile- und Kapitelseiten festgelegt.
 %
-% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
-%
 % \iffalse
 %<*class&body>
 % \fi
@@ -115,7 +94,7 @@
 % Titels gesetzt. Um dieses Verhalten nachbilden zu können, wird diese Option
 % zur Verfügung gestellt.
 %    \begin{macrocode}
-\newif\if at tud@subjectthesis
+\tud at newif\if at tud@subjectthesis
 \TUD at key{subjectthesis}[true]{%
   \TUD at set@ifkey{subjectthesis}{@tud at subjectthesis}{#1}%
 }
@@ -130,7 +109,7 @@
 % verlangt. Diese Option dient zum Aktivieren dieser Unterschriftenzeile am
 % Ende der Titelseite.
 %    \begin{macrocode}
-\newif\if at tud@titlesignature
+\tud at newif\if at tud@titlesignature
 \TUD at key{titlesignature}[true]{%
   \TUD at set@ifkey{titlesignature}{@tud at titlesignature}{#1}%
 }
@@ -150,11 +129,9 @@
 % Warnung ausgegeben.
 %    \begin{macrocode}
 \DefineFamilyMember{KOMA}
-\DefineFamilyKey{KOMA}{titlepage}[true]{%
-  \TUD at set@numkey{titlepage}{@tempa}{\TUD at bool@numkey,{firstiscover}{2}}{#1}%
-  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
-    \AtEndOfFamilyOptions{\tud at titlepage@deactivate}%
-  \fi%
+\DefineFamilyKey{KOMA}{titlepage}{%
+  \FamilyKeyStateUnknownValue%
+  \AtEndOfFamilyOptions{\tud at titlepage@deactivate}%
 }
 \newcommand*\tud at titlepage@deactivate{%
   \if at titlepage%
@@ -194,7 +171,7 @@
 %<*book|report|article>
 \newkomafont{thesis}{%
   \usekomafont{title}%
-  \tud at thesis@fontsize%
+  \tud at subtitle@fontsizecmd%
 }
 %</book|report|article>
 \newkomafont{titlepage}{%
@@ -252,6 +229,10 @@
 \newcommand*\tud at title@pagenumber{}
 \let\tud at title@pagenumber\relax
 \newcommand*\tud at maketitle[1][]{%
+%<*book|report|article>
+  \TUD at deprecated@length\pageheadingsvskip%
+  \TUD at deprecated@length\headingsvskip%
+%</book|report|article>
   \begingroup%
     \cleardoublepage%
 %    \end{macrocode}
@@ -274,7 +255,9 @@
         \tud at cs@use{maketitle}[\tud at title@pagenumber]%
       \fi%
       \tud at if@tudheadings{\currentpagestyle}{%
-        \ifstr{\titlepagestyle}{empty}{\thispagestyle{empty.tudheadings}}{}%
+        \tud at if@strequal{\titlepagestyle}{empty}%
+          {\thispagestyle{empty.tudheadings}}%
+          {}%
       }{}%
 %    \end{macrocode}
 % Für die \TUDScript-Klassen gibt es für doe Titleseite sowie den Titelkopf 
@@ -308,6 +291,9 @@
 %    \end{macrocode}
 % Die einzelnen Parameter dienen zur Einstellung der Titelseite und entsprechen
 % in ihrem Verhalten den gleichnamigen Klassenoptionen.
+% \ToDo{cdgeometry liefert falschen Satzspiegel nach Titel, siehe vlp}[v2.07]
+% \ToDo{titleback ist im Flattersatz, warum?}[v2.07]
+% \ToDo{Warnung, wenn pagenumber gerade}[v2.07]
 %    \begin{macrocode}
 \TUD at parameter@family{title}{%
 %<*book|report|article>
@@ -346,7 +332,9 @@
 % aus der \pgs{tudheadings}-Reihe der Titel ebenfalls in diesem gesetzt wird,
 % auch wenn das Layout des \CDs selber nicht aktiv ist.
 %    \begin{macrocode}
-\patchcmd{\titlepage}{\thispagestyle{empty}}{%
+\patchcmd\titlepage{%
+  \thispagestyle{empty}%
+}{%
   \tud at if@tudheadings{\currentpagestyle}{%
     \thispagestyle{empty.tudheadings}%
   }{%
@@ -480,9 +468,9 @@
 % Das ganze Layout wird vertikal so verschoben, dass der Titel auf der gleichen
 % Höhe steht wie die Überschriften auf Teil- und Kapitelseiten.
 %    \begin{macrocode}
-    \tud at cd@headstartvskip%
-    \TUD at deprecated@lengthcs{pageheadingsvskip}%
-    \vspace*{\tud at dim@pageheadingsvskip}%
+    \vspace*{-\baselineskip}%
+    \tud at cd@headstart at vskip%
+    \vspace*{\dimexpr\tud at pageheadingsvskip@dim\relax}%
     \tud at cd@vphantom%
     \setparsizes{\z@}{\z@}{\z@\@plus1fil}\par at updaterelative%
 %    \end{macrocode}
@@ -505,10 +493,9 @@
 % allerdings etwas kleiner.
 %    \begin{macrocode}
       \ifx\@subtitle\@empty\else%
-        {\usekomafont{partnumber}{\nobreak\tud at sec@strut}}%
-        {\usekomafont{subtitle}{\tud at title@format{\@subtitle}\par}}%
+        {\usekomafont{subtitle}{\tud at title@format[partnumber]{\@subtitle}\par}}%
       \fi%
-      \vskip 2\bigskipamount%
+      \vskip\glueexpr\bigskipamount*2\relax%
 %    \end{macrocode}
 % Ausgabe eines Autors oder mehrerer Autoren ggf. mit Zusatzinformationen.
 %    \begin{macrocode}
@@ -551,7 +538,7 @@
             \def\@tempc{%
               \@graduation%
               \ifx\@graduationabbreviation\@empty\else%
-                \nobreakspace\@graduationabbreviation%
+                \nobreakspace(\@graduationabbreviation)%
               \fi%
             }%
             {\usekomafont{titlepage}{\graduationtext\par}}%
@@ -563,7 +550,8 @@
         \vskip 2ex\@plus.5fill%
       \fi%
 %    \end{macrocode}
-% \ToDo{Befehl zum Angeben optionaler Inhalte, bspw. ein Bild}[v2.07]
+% \ToDo{Befehl zum Angeben optionaler Inhalte, bspw. ein Bild}[v2.08]
+% \ToDo{...othername als Liste für mehr als zwei Angaben}[v2.08]
 % Wenn Betreuer angegeben wurden, dann werden diese auf dem Titel ausgeben. Um
 % diese Titelseite auch für Dissertationen verwenden zu können, ist ein Feld 
 % für Gutachter vorgesehen. Außerdem wird für Promotionsschriften ein Feld für
@@ -586,13 +574,13 @@
           \tud at date@check%
           \ifx\@date\@empty\else%
             \vskip 2ex\@plus1ex\@minus1ex%
-            \ifxblank{\datetext}{}{\datetext\tud at title@delimiter}%
+            \tud at if@strblank{\datetext}{}{\datetext\tud at title@delimiter}%
             {\usekomafont{date}{\tud at date@print\par}}%
 %    \end{macrocode}
 % Zusätzlich kann noch ein Datum der mündlichen Verteidigung angegeben werden.
 %    \begin{macrocode}
             \ifx\@defensedate\@empty\else%
-              \ifxblank{\defensedatetext}{}{%
+              \tud at if@strblank{\defensedatetext}{}{%
                 \defensedatetext\tud at title@delimiter%
               }%
               {\usekomafont{date}{\@defensedate\par}}%
@@ -605,7 +593,7 @@
 %    \begin{macrocode}
         \if at tud@titlesignature%
           \let\tud at split@@author at do\tud at split@author at signature%
-          \vskip\tud at len@signatureskip\noindent%
+          \vskip\tud at glue@signaturevskip\noindent%
           \tud at ifin@and{\@@author}{}{\hfill}%
           \tud at multiple@split{@@author}%
         \fi%
@@ -743,7 +731,9 @@
 \newcommand*\tud at maketitle@inpage{%
   \renewcommand*\tud at title@fontcolor{}%
   \ifcase\tud at cd@title at num\relax\or\else% *color
-    \ifstr{\tud at pagecolor}{HKS41}{}{\renewcommand*\tud at title@fontcolor{HKS41}}%
+    \tud at if@strequal{\tud at pagecolor}{HKS41}%
+      {}%
+      {\renewcommand*\tud at title@fontcolor{HKS41}}%
   \fi%
   \par%
   \ifx\tud at title@pagenumber\relax\else%
@@ -776,7 +766,7 @@
     \ifx\@extratitle\@empty%
       \ifx\@frontispiece\@empty\else%
         \if at twoside\null\fi%
-      \fi
+      \fi%
     \else%
       \tud at res@a{\@makeextratitle}%
     \fi%
@@ -795,10 +785,10 @@
 %    \begin{macrocode}
 \newcommand*\tud at maketitle@@inpage{%
   \global\@topnum=\z@%
-  \tud at cd@headstartvskip%
+  \vspace*{-\baselineskip}%
+  \tud at cd@headstart at vskip%
 %<*book|report|article>
-  \TUD at deprecated@lengthcs{headingsvskip}%
-  \vspace*{\tud at dim@headingsvskip}%
+  \vspace*{\dimexpr\tud at headingsvskip@dim\relax}%
   \tud at cd@vphantom%
 %</book|report|article>
   \setparsizes{\z@}{\z@}{\z@\@plus1fil}\par at updaterelative%
@@ -827,8 +817,7 @@
 %    \begin{macrocode}
     {\usekomafont{title}{\tud at title@format{\@title}\par}}%
     \ifx\@subtitle\@empty\else%
-      \vskip 1ex\@plus.5ex\@minus.5ex%
-      {\usekomafont{subtitle}{\tud at title@format{\@subtitle}\par}}%
+      {\usekomafont{subtitle}{\tud at title@format[partnumber]{\@subtitle}\par}}%
     \fi%
     \vskip 2ex\@plus1ex\@minus1ex%
 %    \end{macrocode}
@@ -835,7 +824,7 @@
 % Ausgabe eines Autors oder mehrerer Autoren ggf. mit Zusatzinformationen.
 %    \begin{macrocode}
 %<*book|report|article>
-    \vskip 2\bigskipamount%
+    \vskip\bigskipamount%
     \let\tud at split@author at do\tud at split@author at title%
     \tud at multiple@split{@author}\par%
 %    \end{macrocode}
@@ -865,12 +854,10 @@
 %    \end{macrocode}
 % Am Ende wird noch etwas vertikaler Abstand eingefügt.
 %    \begin{macrocode}
-    \vskip 2\bigskipamount%
+    \vskip\bigskipamount%
 %</book|report|article>
     \ifnum\col at number>\@ne\relax%
-      \ifdefvoid{\multicolsep}{}{%
-        \ifisskip{\multicolsep}{\vspace{-\multicolsep}}{}%
-      }%
+      \tud at if@lengthregister{\multicolsep}{\vspace{-\multicolsep}}{}%
     \fi%
 %    \end{macrocode}
 % Wird das \DDC-Logo im Kompatibilitätsmodus für die Version~v2.02 gesetzt, 
@@ -898,11 +885,9 @@
 \newcommand*\tud at maketitle@head{%
   \setbox\z@\vbox{%
     \ifx\@titlehead\@empty\else%
-      {\usekomafont{titlehead}{%
-        \begin{minipage}[t]{\textwidth}%
-          \@titlehead\tud at sec@strut%
-        \end{minipage}%
-      }}%
+      \begin{minipage}[t]{\textwidth}%
+        \usekomafont{titlehead}{\@titlehead\strut\par}%
+      \end{minipage}%
     \fi%
 %<*book|report|article>
     \tud at thesis@tosubject%
@@ -909,9 +894,7 @@
 %</book|report|article>
     \ifx\@subject\@empty\else%
       \par\medskip%
-      {\usekomafont{subject}{%
-        \@subject\tud at sec@strut%
-      }}%
+      {\usekomafont{subject}{\tud at sec@format[partnumber]{\@subject}}}%
     \fi%
   }%
 %    \end{macrocode}
@@ -918,16 +901,16 @@
 % Der ermittelte Offset muss~-- warum auch immer~-- um \val{1pt} vergrößert
 % werden. Zusätzlich wird ein mittlerer Abstand zwischen Kopf und Titel gesetzt.
 %    \begin{macrocode}
-  \setlength\@tempdima{\dimexpr\ht\z at +\dp\z@\relax}%
+  \tud at setdim\@tempdima{\ht\z at +\dp\z@}%
   \ifdim\@tempdima>\z@\relax%
 %<*book|report|article>
-    \vskip\dimexpr-\@tempdima-\p at -\medskipamount\relax%
+    \vskip\dimexpr-\@tempdima-\p at -1\medskipamount\relax%
 %</book|report|article>
     \usebox\z@\par\medskip%
   \fi%
 }
 %    \end{macrocode}
-% \end{macro}^^A \tud at maketitle@inpage
+% \end{macro}^^A \tud at maketitle@head
 %
 % \subsubsection{Hilfsmakros für die Ausgabe}
 %
@@ -937,31 +920,11 @@
 % der Titelseite soll sichergestellt werden, dass der Inhalt selbst nicht in
 % Majuskeln gesetzt wird.
 %    \begin{macrocode}
-\newcommand*\tud at title@format[1]{%
+\newcommand*\tud at title@format[2][]{%
   \begingroup%
     \let\\\newline%
-%    \end{macrocode}
-% Der Befehl \cs{thanks} wird so umdefiniert, dass der Inhalt in ein temporäres
-% Makro gespeichert wird. Danach wird durch das Setzen einer temporären Box der
-% Befehl \cs{thanks} ausgeführt und der Inhalt gesichert. Für die Ausführung von
-% \cs{tud at sec@format} wird das Argument von \cs{thanks} ignoriert. Nachdem das
-% gewünschte Feld in Majuskeln gesetzt wurde, wird die gespeicherte Fußnote
-% ausgegeben.
-%    \begin{macrocode}
-    \let\tud at thanks\relax%
-    \def\thanks##1{\gdef\tud at thanks{##1}}%
-    \let\footnote\thanks%
-    \sbox\z@{#1}%
-    \let\thanks\@gobble%
-    \let\footnote\@gobble%
-    \tud at sec@format{#1}%
-    \edef\tud at res@a{%
-      \endgroup%
-      \ifx\tud at thanks\relax\else%
-        \noexpand\thanks{\expandonce\tud at thanks}%
-      \fi%
-    }%
-  \tud at res@a%
+    \tud at sec@format[{#1}]{#2}%
+  \endgroup%
 }
 %    \end{macrocode}
 % \end{macro}^^A \tud at title@format
@@ -993,6 +956,8 @@
 % Dieser Befehl dient zur getrennten Ausgabe von mehreren, mit dem Makro 
 % \cs{and} separierten Einträgen in den Feldern \cs{@supervisor}, \cs{@referee}
 % und \cs{@advisor}.
+% \ToDo{generisch für beliebig viele Bezeichner (Drittgutachter)}[v2.07]
+% \ToDo{...othername als Liste?}[v2.07]
 %    \begin{macrocode}
 \newcommand*\tud at title@names[1]{%
   \letcs\@tempa{@#1}%
@@ -1066,7 +1031,9 @@
     \ifx\@dateofbirth\@empty\else%
       \if at titlepage%
         \tud at newline@title%
-        \ifxblank{\dateofbirthtext}{}{\dateofbirthtext\tud at title@delimiter}%
+        \tud at if@strblank{\dateofbirthtext}%
+          {}%
+          {\dateofbirthtext\tud at title@delimiter}%
         \@dateofbirth%
         \ifx\@placeofbirth\@empty\else%
           \nobreakspace\placeofbirthtext\nobreakspace\@placeofbirth%
@@ -1076,15 +1043,17 @@
       \fi%
     \fi%
     \def\@tempc##1{%
-      \ifstr{\csuse{@##1}}{}{}{%
+      \expandafter\ifx\csname @##1\endcsname\@empty\else%
         \if at titlepage%
           \tud at newline@title%
-          \ifstr{\csuse{##1name}}{}{}{\csuse{##1name}\tud at title@delimiter}%
+          \tud at if@strblank{\csuse{##1name}}%
+            {}%
+            {\csuse{##1name}\tud at title@delimiter}%
           \csuse{@##1}%
         \else%
           \tud at title@wrn{##1}%
         \fi%
-      }%
+      \fi%
     }%
     \@tempc{course}%
     \@tempc{discipline}%
@@ -1131,9 +1100,9 @@
 % Autors zentriert ausgegeben.
 %    \begin{macrocode}
   \vbox{%
-    \hsize=.3\textwidth%
+    \hsize=\dimexpr\textwidth*3/10\relax%
     \centering%
-    \rule{.3\textwidth}{.05pt}\newline%
+    \rule{\dimexpr\textwidth*3/10\relax}{.05pt}\newline%
     \ignorespaces#1\strut\unskip%
   }%
 %    \end{macrocode}
@@ -1173,11 +1142,11 @@
   \if at twocolumn%
 %<*book|report|article>
     \if at titlepage%
-      \tud at maketitle[#1]%
-      \onecolumn{#2}\twocolumn%
+      \tud at maketitle[{#1}]%
+      \onecolumn#2\twocolumn%
     \else%
 %</book|report|article>
-      \tud at title@twocolumn{\tud at maketitle[#1]{#2}}%
+      \tud at title@twocolumn{\tud at maketitle[{#1}]#2}%
 %<*book|report|article>
     \fi%
 %</book|report|article>
@@ -1184,7 +1153,8 @@
   \else%
     \ClassError{\TUD at Class@Name}{%
       `\string\maketitleonecolumn' can only be used in twocolumn mode%
-    }{}%
+    }{You should use `\string\maketitle' instead.}%
+    \tud at maketitle[{#1}]#2%
   \fi%
 }
 %    \end{macrocode}
@@ -1210,7 +1180,7 @@
 % werden.
 %    \begin{macrocode}
     \global\setbox\tud at title@box\vbox{%
-      \vspace*{.9\baselineskip}#1\bigskip%
+      \vspace*{\dimexpr1\baselineskip*9/10\relax}#1\bigskip%
     }%
   \endgroup%
 %    \end{macrocode}
@@ -1218,11 +1188,11 @@
 % Vor der Version~v2.03 gab es für das \DDC-Logo einen abweichenden Satzspiegel 
 % der ggf. beachtet werden muss.
 %    \begin{macrocode}
-  \setlength\@tempdima{\textheight}%
+  \tud at setdim\@tempdima{\textheight}%
   \tud at if@v at lower{2.03}{%
     \tud at ddc@check%
     \ifcase\@tempb\relax\else% \tud at ddc@foot at num!=false
-      \setlength\@tempdima{\dimexpr\textheight-\tud at len@ddcdiff\relax}%
+      \tud at setdim\@tempdima{\textheight-\tud at dim@ddcdiff}%
       \@tempswatrue%
     \fi%
   }{}%
@@ -1236,7 +1206,7 @@
       \splitmaxdepth\maxdepth%
       \vsplit\tud at title@box to \@tempdima%
       \clearpage%
-      \setlength\@tempdima{\textheight}%
+      \tud at setdim\@tempdima{\textheight}%
       \tud at if@v at lower{2.03}{\@tempswafalse}{}%
     }%
 %    \end{macrocode}
@@ -1263,7 +1233,7 @@
         You are using a two-column title along with\MessageBreak%
         the DDC-logo. Unfortunately in this case, the\MessageBreak%
         type area has to be adjusted manually. Please\MessageBreak%
-        use `\string\enlargethispage{-\the\tud at len@ddcdiff}'\MessageBreak%
+        use `\string\enlargethispage{-\the\tud at dim@ddcdiff}'\MessageBreak%
         in both columns after the title%
       }%
     \fi%
@@ -1290,8 +1260,7 @@
 % \changes{v2.02}{2014/06/23}{Warnung für die Option \opt{titlepage} mit dem
 %   Wert \val{firstiscover}}^^A
 % \changes{v2.02}{2014/08/08}{ohne \CD verwendbar}^^A
-% \changes{v2.02}{2014/08/12}{Satzspiegel mit \cs{coverpage\dots{}margin}
-%   änderbar, falls CD-Layout deaktiviert}^^A
+% \changes{v2.02}{2014/08/12}{Satzspiegel ohne CD-Layout änderbar}^^A
 % \changes{v2.03}{2015/01/09}{Anpassungen für neue Satzspiegelerzeugung}^^A
 % \begin{parameter}{cdcover}
 % \changes{v2.03}{2015/01/12}{neu}^^A
@@ -1306,7 +1275,7 @@
 % Der Befehl \cs{makecover} ist für eine Umschlagseite bei einem gebundenen 
 % Werk zu verwenden.
 %    \begin{macrocode}
-\newif\if at tud@coverpage
+\tud at newif\if at tud@coverpage
 \newcommand*\makecover[1][]{%
 %    \end{macrocode}
 % Ist die Option \opt{titlepage}|=|\val{firstiscover} aktiv, wird eine Warnung 
@@ -1374,33 +1343,33 @@
 %    \end{macrocode}
 % Wird der Parameter \opt{cdgeometry} aktiviert, werden die Seitenränder wie 
 % durch das \CD vorgegeben eingestellt. Andernfalls entsprechen diese den 
-% Einstellungen des Satzspiegels und können mit \cs{coverpage\dots margin} 
+% Einstellungen des Satzspiegels und können mit |\coverpage|\meta{\dots}|margin|
 % durch den Anwender angepasst werden.
 %    \begin{macrocode}
     \if at tud@cdgeometry at cover%
 %    \end{macrocode}
 % Bei der Höhe des oberen Seitenrandes muss unterschieden werden, ob der
-% Satzspiegel im \CD oder aber im Buchblock erscheinen soll.
+% Satzspiegel im \CD oder aber im Buchblock erscheinen soll. Die Makros werden
+% von \KOMAScript via \cs{dimexpr} interpretiert.
 %    \begin{macrocode}
       \if at tud@coverpage%
         \def\coverpagetopmargin{%
-          \dimexpr\tud at len@topmargin+\tud at len@barheight%
-            +\tud at len@headsep\relax%
+          \tud at dim@topmargin+\tud at dim@barheight+\tud at dim@headsep%
         }%
       \else%
         \tud at if@v at lower{2.03}{%
-          \def\coverpagetopmargin{.5\tud at len@both}%
+          \def\coverpagetopmargin{\tud at dim@bothmargin/2}%
         }{%
-          \def\coverpagetopmargin{\tud at len@slimmargin}%
+          \def\coverpagetopmargin{\tud at dim@slimmargin}%
         }%
       \fi%
       \tud at if@v at lower{2.03}{%
-        \def\coverpagebottommargin{.5\tud at len@both}%
+        \def\coverpagebottommargin{\tud at dim@bothmargin/2}%
       }{%
-        \def\coverpagebottommargin{\tud at len@widemargin}%
+        \def\coverpagebottommargin{\tud at dim@widemargin}%
       }%
-      \def\coverpageleftmargin{\tud at len@widemargin}%
-      \def\coverpagerightmargin{\tud at len@slimmargin}%
+      \def\coverpageleftmargin{\tud at dim@widemargin}%
+      \def\coverpagerightmargin{\tud at dim@slimmargin}%
     \fi%
     \if at tud@coverpage%
 %    \end{macrocode}
@@ -1417,12 +1386,12 @@
       }%
 %    \end{macrocode}
 % Linker und rechter Rand sowie die Textbreite werden identisch erzeugt. Für 
-% das Layout im \CD wurden die Seitenränder (\cs{coverpage\dots margin}) zuvor 
-% angepasst.
+% das Layout im \CD wurden die Seitenränder (|\coverpage|\meta{\dots}|margin|) 
+% zuvor angepasst.
 %    \begin{macrocode}
       \begingroup%
         \tud at cover@setmargins%
-        \tud at len@areavskip=\z@%
+        \tud at setdim\tud at dim@areavskip{\z@}%
 %    \end{macrocode}
 % Die Ausgabe des Covers und ggf. das Wiederherstellen des Satzspiegels.
 %    \begin{macrocode}
@@ -1450,9 +1419,9 @@
 % Die einzelnen Parameter dienen zur Einstellung der Umschlagseite und
 % entsprechen~-- \prm{cdgeometry} ausgenommen~-- in ihrem Verhalten den
 % gleichnamigen Klassenoptionen. Der genannte Parameter kann eigentlich nur mit
-% booleschen Werten verwenet werden. Für einen benutzerdefinierten Satzspiegel 
-% der Umschlagseite müssen die \KOMAScript-Makros \cs{coverpage\dots{}margin} 
-% angepasst werden.
+% booleschen Werten verwendet werden. Für einen benutzerdefinierten Satzspiegel 
+% der Umschlagseite müssen die \KOMAScript-Makros
+% |\coverpage|\meta{\dots}|margin| angepasst werden.
 %    \begin{macrocode}
 \tud at locked@newbool{@tud at cdgeometry@cover}
 \TUD at parameter@family{cover}{%
@@ -1496,18 +1465,18 @@
 % voreingestellt sind. Das Vermeiden einer unerwünschten Überdeckung des Kopfes
 % oder ein zu kleiner Fußbereich muss durch den Anwender korrigiert werden. 
 %    \begin{macrocode}
-\renewcommand*{\coverpagetopmargin}{%
+\renewcommand*\coverpagetopmargin{%
   \if at tud@coverpage%
-    \dimexpr\tud at len@topmargin+\tud at len@barheight+\tud at len@headsep\relax%
+    \tud at dim@topmargin+\tud at dim@barheight+\tud at dim@headsep%
   \else%
-    \dimexpr\topmargin+1in\relax%
+    \topmargin+1in%
   \fi%
 }
-\renewcommand*{\coverpagebottommargin}{%
+\renewcommand*\coverpagebottommargin{%
   \if at tud@coverpage%
-    \dimexpr\tud at len@widemargin\relax%
+    \tud at dim@widemargin%
   \else%
-    2\dimexpr\coverpagetopmargin\relax%
+    \coverpagetopmargin*2%
   \fi%
 }
 %    \end{macrocode}
@@ -1531,26 +1500,22 @@
 % Standardmäßig ist \cs{coverbottommargin} abhängig von \cs{covertopmargin}, 
 % weshalb dieses Makro als erstes expandiert wird.
 %    \begin{macrocode}
-    \setlength\@tempdima{%
-      \dimexpr\coverpagebottommargin-\tud at len@layoutvoffset
-      +\paperheight-\tud at len@layoutheight\relax%
+    \tud at setdim\@tempdima{%
+      \coverpagebottommargin-\tud at dim@layoutvoffset%
+        +\paperheight-\tud at dim@layoutheight%
     }%
     \edef\coverpagebottommargin{\the\@tempdima}%
-    \setlength\@tempdima{%
-      \dimexpr\coverpagetopmargin+\tud at len@layoutvoffset\relax%
-    }%
+    \tud at setdim\@tempdima{\coverpagetopmargin+\tud at dim@layoutvoffset}%
     \edef\coverpagetopmargin{\the\@tempdima}%
 %    \end{macrocode}
 % Selbiges gilt für \cs{coverrightmargin} und \cs{coverleftmargin}.
 %    \begin{macrocode}
-    \setlength\@tempdima{%
-      \dimexpr\coverpagerightmargin-\tud at len@layouthoffset
-      +\paperwidth-\tud at len@layoutwidth\relax%
+    \tud at setdim\@tempdima{%
+      \coverpagerightmargin-\tud at dim@layouthoffset%
+        +\paperwidth-\tud at dim@layoutwidth%
     }%
     \edef\coverpagerightmargin{\the\@tempdima}%
-    \setlength\@tempdima{%
-      \dimexpr\coverpageleftmargin+\tud at len@layouthoffset\relax%
-    }%
+    \tud at setdim\@tempdima{\coverpageleftmargin+\tud at dim@layouthoffset}%
     \edef\coverpageleftmargin{\the\@tempdima}%
 %    \end{macrocode}
 % Abschließend werden die gewünschten Längen nach der lokalen Gruppe definiert.
@@ -1575,7 +1540,7 @@
     -\coverpagebottommargin\relax%
   \headheight=0pt%
   \headsep=0pt%
-  \footskip=\baselineskip%
+  \footskip=1\baselineskip%
   \@colht=\textheight%
   \@colroom=\textheight%
   \vsize=\textheight%
@@ -1592,6 +1557,6 @@
 %</class&body>
 % \fi
 %
-% \Finale
+% \PrintBackMatter
 %
 \endinput

Modified: trunk/Master/texmf-dist/source/latex/tudscr/tudscr-twocolfix.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tudscr/tudscr-twocolfix.dtx	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/source/latex/tudscr/tudscr-twocolfix.dtx	2022-08-09 20:01:54 UTC (rev 64085)
@@ -1,10 +1,10 @@
-% \CheckSum{214}
 % \iffalse meta-comment
+%/GitFileInfo=tudscr-twocolfix.dtx
 %
 %  TUD-Script -- Corporate Design of Technische Universität Dresden
 % ----------------------------------------------------------------------------
 %
-%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2021
+%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2022
 %
 % ----------------------------------------------------------------------------
 %
@@ -23,45 +23,19 @@
 %
 % \fi
 %
-% \CharacterTable
-%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-%   Digits        \0\1\2\3\4\5\6\7\8\9
-%   Exclamation   \!     Double quote  \"     Hash (number) \#
-%   Dollar        \$     Percent       \%     Ampersand     \&
-%   Acute accent  \'     Left paren    \(     Right paren   \)
-%   Asterisk      \*     Plus          \+     Comma         \,
-%   Minus         \-     Point         \.     Solidus       \/
-%   Colon         \:     Semicolon     \;     Less than     \<
-%   Equals        \=     Greater than  \>     Question mark \?
-%   Commercial at \@     Left bracket  \[     Backslash     \\
-%   Right bracket \]     Circumflex    \^     Underscore    \_
-%   Grave accent  \`     Left brace    \{     Vertical bar  \|
-%   Right brace   \}     Tilde         \~}
-%
-% \iffalse
-%%% From File: tudscr-twocolfix.dtx
+% \iffalse ins:batch + dtx:driver
+%<*ins>
+\ifx\documentclass\undefined
+  \input docstrip.tex
+  \ifToplevel{\batchinput{tudscr.ins}}
+\else
+  \let\endbatchfile\relax
+\fi
+\endbatchfile
+%</ins>
 %<*dtx>
-% \fi
-%
-\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
-\ProvidesFile{tudscr-twocolfix.dtx}[2019/06/28 v2.06 TUD-Script\space%
-%
-% \iffalse
-%</dtx>
-%<package>\NeedsTeXFormat{LaTeX2e}
-%<package>\ProvidesPackage{twocolfix}[%
-%<*package>
-%!TUD at Version
-%</package>
-%<package>  package
-%<*dtx|package>
-% \fi
-  (twocolumn layout bugfix)%
-]
-% \iffalse
-%</dtx|package>
-%<*dtx>
+\ProvidesFile{tudscr-twocolfix.dtx}[2022/08/09]
+\RequirePackage{tudscr-gitinfo}
 \documentclass[english,ngerman,xindy]{tudscrdoc}
 \iftutex
   \usepackage{fontspec}
@@ -71,18 +45,11 @@
 \fi
 \usepackage{babel}
 \usepackage{tudscrfonts}
-\KOMAoptions{parskip=half-}
-\usepackage{bookmark}
 \usepackage[babel]{microtype}
 
-\CodelineIndex
-\RecordChanges
-\GetFileInfo{tudscr-twocolfix.dtx}
-\title{\file{\filename}}
-\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
-\date{\fileversion\nobreakspace(\filedate)}
-
+\GitHubBase{\TUDScriptRepository}
 \begin{document}
+  \author{Falk Hanisch\TUDScriptContactTitle}
   \maketitle
   \tableofcontents
   \DocInput{\filename}
@@ -93,28 +60,40 @@
 % \selectlanguage{ngerman}
 %
 % \changes{v2.05}{2016/04/25}{Überprüfen der Definition von \cs{@topnewpage}
-%   des \LaTeXe-Kernels}^^A
+%   des \LaTeXe"~Kernels}^^A
 %
+% \ToDo{Als eingenständiges Paket herauslösen}[v2.08]
+% \ToDo{CheckCommand verwenden?}[v2.08]
+%
+%
+%
 % \section{Das Paket \pkg{twocolfix} -- Bugfix für den zweispaltigen Satz}
 %
-% Der \LaTeXe-Kernel enthält einen Fehler, der Kapitelüberschriften im
-% zweispaltigen Layout höher setzt, als im einspaltigen. Zwar ist der 
-% \hrfn{http://latex-project.org/cgi-bin/ltxbugs2html?pr=latex/3126}{Fehler}
-% schon länger bekannt, allerdings noch nicht in den \LaTeXe-Kernel übernommen
-% worden. Das Paket \pkg{twocolfix} soll das Problem beheben. Eine Integration
-% des Bugfixes in \KOMAScript{} wurde bereits bei Markus Kohm angefragt, jedoch
-% \hrfn{http://www.komascript.de/node/1681}{von ihm nicht weiter verfolgt}.
+% Der \LaTeXe"~Kernel enthält einen
+% \href{http://latex-project.org/cgi-bin/ltxbugs2html?pr=latex/3126}{Fehler},
+% wodurch im zweispaltigen Satz Kapitelüberschriften höher als im 
+% einspaltigen Layout gesetzt werden. Zwar ist dieser schon länger bekannt, 
+% jedoch bisher noch nicht behoben (\GitHubRepo(latex3/latex2e)<509>).
 %
-% \ToDo{Als eingenständiges Paket herauslösen}[v2.??]
-% \ToDo{CheckCommand verwenden}[v2.??]
+% Das Paket \pkg{twocolfix} soll dies beheben. Eine Integration des Bugfixes 
+% in \KOMAScript{} wurde bereits bei Markus Kohm angefragt, jedoch
+% \href{http://www.komascript.de/node/1681}{von ihm nicht weiter verfolgt}.
 %
-% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
+%    \begin{macrocode}
+%<*package>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{twocolfix}[%
+%!TUD at Version
+  package (twocolumn layout bugfix)%
+]
+%</package>
+%    \end{macrocode}
 %
 % \iffalse
 %<*package>
 % \fi
 %
-% Es wird der fehlerhafte Befehl aus dem \LaTeXe-Kernel neu definiert. 
+% Es wird der fehlerhafte Befehl aus dem \LaTeXe"~Kernel neu definiert. 
 % Allerdings definieren die \KOMAScript-Klassen das Makro \cs{@topnewpage} 
 % um und sichern vorher das Original in \cs{scr at topnewpage}. Daher wird der 
 % neue Befehl erst temporär definiert. 
@@ -246,6 +225,6 @@
 %</package>
 % \fi
 %
-% \Finale
+% \PrintBackMatter
 %
 \endinput

Modified: trunk/Master/texmf-dist/source/latex/tudscr/tudscr-version.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tudscr/tudscr-version.dtx	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/source/latex/tudscr/tudscr-version.dtx	2022-08-09 20:01:54 UTC (rev 64085)
@@ -1,10 +1,10 @@
-% \CheckSum{135}
 % \iffalse meta-comment
+%/GitFileInfo=tudscr-version.dtx
 %
 %  TUD-Script -- Corporate Design of Technische Universität Dresden
 % ----------------------------------------------------------------------------
 %
-%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2021
+%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2022
 %
 % ----------------------------------------------------------------------------
 %
@@ -23,27 +23,7 @@
 %
 % \fi
 %
-% \CharacterTable
-%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-%   Digits        \0\1\2\3\4\5\6\7\8\9
-%   Exclamation   \!     Double quote  \"     Hash (number) \#
-%   Dollar        \$     Percent       \%     Ampersand     \&
-%   Acute accent  \'     Left paren    \(     Right paren   \)
-%   Asterisk      \*     Plus          \+     Comma         \,
-%   Minus         \-     Point         \.     Solidus       \/
-%   Colon         \:     Semicolon     \;     Less than     \<
-%   Equals        \=     Greater than  \>     Question mark \?
-%   Commercial at \@     Left bracket  \[     Backslash     \\
-%   Right bracket \]     Circumflex    \^     Underscore    \_
-%   Grave accent  \`     Left brace    \{     Vertical bar  \|
-%   Right brace   \}     Tilde         \~}
-%
-% \iffalse
-%%% From File: tudscr-version.dtx
-% \fi
-%
-% \iffalse
+% \iffalse comment
 % Nicht verwirren lassen! In dieser Datei steht ein Teil der Dokumentation und 
 % des Codes vor dem Treiber. Das ist notwendig, weil der Teil des Codes bereits 
 % am Anfang des Treibers selbst benötigt wird. Genauer gesagt handelt es sich 
@@ -61,52 +41,48 @@
 % \changes{v2.02}{2014/05/16}{Umbennenung mehrerer Befehle zur Kompatibilität
 %   mit anderen Paketen}^^A
 %
-% \section{Die Version des \texorpdfstring{\TUDScript}{TUD-Script}-Bundles}
 %
-% Für alle Klassen und Paketen, die zum \TUDScript-Bundle auf \KOMAScript-Basis
-% gehören wird als erstes die aktuelle Version festgelgt.
 %
-% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
+% \section{Die Version des \TUDScript-Bundles}
 %
+% Für das \TUDScript-Bundle wird die aktuelle Version sowie \LaTeXe{} als 
+% benötigtes Format festgelegt.
+%
+% \subsection{Definition und Validierung der Version}
+%
 % \begin{macro}{\TUD at Version}
-% \begin{macro}{\TUD at Version@Check}
+% \begin{macro}{\TUD@@Version}
 % \changes{v2.02}{2014/07/22}{Expandieren der Versionsangabe bei der Verwendung 
 %   von \pkg{docstrip} ermöglicht}^^A
-% \begin{macro}{\TUD at Version@KOMA}
 % \begin{macro}{\TUDScriptVersion}
 % \begin{macro}{\TUDScriptVersionNumber}
-% Das Makro \cs{TUD at Version} gibt an, zu welcher \TUDScript"~Version die 
-% Datei gehört. Die Klassen und Pakete des Bundles verwenden dieses Makro
-% außerdem zur eigenen Versionsangabe. Je nachdem, ob \cs{TUD at Version}
-% bereits definiert ist oder nicht, wird mit \cs{TUD at Version@Check} die
-% Definition überprüft oder eine globale Definition vorgenommen. Da das Ganze
-% auch bei der Erstellung der Dokumentation geschieht, wird \cs{makeatletter}
-% innerhalb einer Gruppe verwendet. Das Makro \cs{TUD at Version@KOMA} definiert 
-% die mindestens notwendige Version von \KOMAScript. In \cs{TUDScriptVersion} 
-% wird die Versioninformation für den Anwender definiert.
+% \begin{macro}{\TUD at KOMAVersion}
+% \begin{macro}{\TUD at KOMAVersionNumber}
+% Die Klassen und Pakete des \TUDScript-Bundles verwenden \cs{TUD at Version}
+% zur Versionsangabe. Je nachdem, ob \cs{TUD at Version} bereits definiert ist 
+% oder nicht, wird mit \cs{TUD@@Version} die Definition überprüft oder eine 
+% globale Definition vorgenommen. In \cs{TUD at KOMAVersion} wird die mindestens 
+% notwendige Version von \KOMAScript{} definiert.
 %    \begin{macrocode}
+%<*identify>
+%<class|package>\NeedsTeXFormat{LaTeX2e}[2022-06-01]
 \begingroup
-  \catcode`\@11\relax
-%<*!(package|class)>
-  \ifx\newcommand\undefined
-    \gdef\TUD at Version@Check#1{%
+  \catcode`\@11\relax%
+%<*!(class|package)>
+  \ifx\documentclass\undefined%
+    \gdef\TUD@@Version#1#2{%
       \gdef\TUD at Version{\space\space#1}%
-      \gdef\TUDScriptVersion{\space\space#1}%
-      \aftergroup\endinput%
-    }
-  \else
-%</!(package|class)>
-  \ifx\TUD at Version\@undefined
-    \newcommand*\TUD at Version@Check[1]{%
+      \gdef\TUD at KOMAVersion{\space\space#2}%
+    }%
+  \else%
+%</!(class|package)>
+  \ifx\TUD at Version\@undefined%
+    \newcommand*\TUD@@Version[2]{%
       \gdef\TUD at Version{#1}%
-      \gdef\TUDScriptVersion{#1}%
-      \def\@tempb##1 v##2 ##3\relax##4\relax{\gdef\TUDScriptVersionNumber{##2}}%
-      \edef\@tempa{\TUD at Version}%
-      \expandafter\@tempb\@tempa\relax? ? \relax\relax%
-      \gdef\TUD at Version@KOMA{3.32}%
-    }
-  \else
-    \newcommand*\TUD at Version@Check[1]{%
+      \gdef\TUD at KOMAVersion{#2}%
+    }%
+  \else%
+    \newcommand*\TUD@@Version[2]{%
       \def\@tempa{#1}%
       \ifx\TUD at Version\@tempa\else%
         \@latex at warning@no at line{%
@@ -113,30 +89,44 @@
           \noexpand\TUD at Version\space is `\TUD at Version',\MessageBreak%
           but `#1' was expected!\MessageBreak%
           You should not use classes, packages or files from\MessageBreak%
-          different TUD-Script-Bundle versions%
+          different TUD-Script bundle versions%
         }%
       \fi%
-    }
-  \fi
-%<*!(package|class)>
-  \fi
-%</!(package|class)>
-  \TUD at Version@Check{2021/07/15 v2.06n TUD-Script}
+    }%
+  \fi%
+%<*!(class|package)>
+  \fi%
+%</!(class|package)>
+  \TUD@@Version{2022/08/09 v2.06o TUD-Script}{2022/05/01 v3.36 KOMA-Script}%
+  \ifx\TUDScriptVersion\@undefined%
+    \xdef\TUDScriptVersion{\TUD at Version}%
+    \def\@tempa#1 v#2 #3\relax#4\relax#5{\gdef#5{#2}}%
+    \expandafter\@tempa\TUD at Version ? ?\relax\relax{\TUDScriptVersionNumber}%
+    \expandafter\@tempa\TUD at KOMAVersion ? ?\relax\relax{\TUD at KOMAVersionNumber}%
+  \fi%
 \endgroup
+%</identify>
 %    \end{macrocode}
+% \end{macro}^^A \TUD at KOMAVersionNumber
+% \end{macro}^^A \TUD at KOMAVersion
 % \end{macro}^^A \TUDScriptVersionNumber
 % \end{macro}^^A \TUDScriptVersion
-% \end{macro}^^A \TUD at Version@KOMA
-% \end{macro}^^A \TUD at Version@Check
+% \end{macro}^^A \TUD@@Version
 % \end{macro}^^A \TUD at Version
 %
-% \iffalse
+% \iffalse ins:batch + dtx:driver
+%<*ins>
+\ifx\documentclass\undefined
+  \input docstrip.tex
+  \ifToplevel{\batchinput{tudscr.ins}}
+\else
+  \let\endbatchfile\relax
+\fi
+\endbatchfile
+%</ins>
 %<*dtx>
-% \fi
-%
-\ProvidesFile{tudscr-version.dtx}[\TUDScriptVersion\space (versions)]
-%
-% \iffalse
+\ProvidesFile{tudscr-version.dtx}[2022/08/09]
+\RequirePackage{tudscr-gitinfo}
 \documentclass[english,ngerman,xindy]{tudscrdoc}
 \iftutex
   \usepackage{fontspec}
@@ -146,18 +136,11 @@
 \fi
 \usepackage{babel}
 \usepackage{tudscrfonts}
-\KOMAoptions{parskip=half-}
-\usepackage{bookmark}
 \usepackage[babel]{microtype}
 
-\CodelineIndex
-\RecordChanges
-\GetFileInfo{tudscr-version.dtx}
-\title{\file{\filename}}
-\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
-\date{\fileversion\nobreakspace(\filedate)}
-
+\GitHubBase{\TUDScriptRepository}
 \begin{document}
+  \author{Falk Hanisch\TUDScriptContactTitle}
   \maketitle
   \tableofcontents
   \DocInput{\filename}
@@ -165,21 +148,49 @@
 %</dtx>
 % \fi
 %
-% Als erstes das benötigte \LaTeX-Format.
+% \iffalse comment
+% Der Rest wird nicht mehr vom Treiber benötigt.
+% \fi
+%
+% \iffalse 
+%<*identify>
+% \fi
+%
+% \subsection{Das \TUDScript-Logo und Anlaufstellen}
+% \begin{macro}{\TUDScript}
+% Der Schriftzug von \TUDScript.
 %    \begin{macrocode}
-%<package|class>\NeedsTeXFormat{LaTeX2e}[2019/10/01]
+\@ifundefined{TUDScript}{%
+  \DeclareRobustCommand\TUDScript{%
+    \mbox{%
+      \textsf{%
+        T\kern.05em U\kern.05em D\kern.1em-\kern.1em Script%
+      }%
+    }\ifcsname xspace\endcsname\xspace\fi%
+  }%
+}{}
 %    \end{macrocode}
-% \begin{macro}{\tudscrmail}
-% Die E"~Mail-Adresse für Supportanfragen.
+% \end{macro}^^A \TUDScript
+%
+% \begin{macro}{\TUDScriptContact}
+% \begin{macro}{\TUDScriptRepository}
+% \begin{macro}{\TUDScriptForum}
+% Die E"~Mail-Adresse, Repository und Forum für Supportanfragen. 
 %    \begin{macrocode}
-%<package|class>\providecommand*\tudscrmail{hanisch.latex at outlook.com}
+\providecommand*\TUDScriptContact{hanisch.latex at outlook.com}
+\providecommand*\TUDScriptRepository{https://github.com/tud-cd/tudscr}
+\providecommand*\TUDScriptForum{https://latex.wcms-file3.tu-dresden.de/phpBB3/}
 %    \end{macrocode}
-% \end{macro}^^A \tudscrmail
+% \end{macro}^^A \TUDScriptForum
+% \end{macro}^^A \TUDScriptRepository
+% \end{macro}^^A \TUDScriptContact
 %
 % \iffalse
 %<*class>
 % \fi
 %
+% \subsection{Laden von Klassen und Paketen}
+%
 % \begin{macro}{\TUD at ProvidesClass}
 % \changes{v2.04}{2015/06/13}{neu}^^A
 % \begin{macro}{\TUD at ProvidesWrapperClass}
@@ -190,6 +201,8 @@
 % \changes{v2.04}{2015/06/12}{neu}^^A
 % \begin{macro}{\TUD at Class@KOMA}
 % \changes{v2.04}{2015/06/12}{neu}^^A
+% \begin{macro}{\TUDScriptClassName}
+% \begin{macro}{\TUDClassName}
 % Mit diesen Befehlen erfolgt die Versionsangabe der \TUDScript-Klassen beim
 % Laden. Dabei werden hier einmalig die Namen der jeweiligen Klassen definiert. 
 % Hierfür werden die Befehle \cs{TUD at ProvidesClass} für die Hauptklassen und 
@@ -198,31 +211,28 @@
 % Argument entspricht der Basis-Klasse. Das dritte Argument enthält eine kurze 
 % Beschreibung.
 %    \begin{macrocode}
-%<*!inherit>
-\newcommand*\TUD at ProvidesClass[3]{%
+%<!inherit>\newcommand*\TUD at ProvidesClass[3]
+%<inherit>\newcommand*\TUD at ProvidesWrapperClass[3]
+{%
   \ProvidesClass{#1}[%
 %!TUD at Version
     #3 (#2)%
   ]%
-  \newcommand*\TUD at Class@KOMA{#2}%
-  \ifx\TUD at Class@Parent\@undefined%
-    \newcommand*\TUD at Class@Name{#1}%
-    \TUD at Class@Info%
-  \fi%
-}
-%</!inherit>
-%<*inherit>
-\newcommand*\TUD at ProvidesWrapperClass[3]{%
-  \ProvidesClass{#1}[%
-%!TUD at Version
-    #3 (#2)%
-  ]%
-  \newcommand*\TUD at Class@Parent{#2}%
+%<!inherit>  \newcommand*\TUD at Class@KOMA{#2}%
+%<inherit>  \newcommand*\TUD at Class@Parent{#2}%
+%<!inherit>  \ifx\TUD at Class@Parent\@undefined%
   \newcommand*\TUD at Class@Name{#1}%
+%    \end{macrocode}
+% Die Benutzermakros für den Namen der verwendeten \TUDScript-Klasse.
+%    \begin{macrocode}
+  \newcommand*\TUDScriptClassName{#1}%
+  \providecommand*\TUDClassName{\TUDScriptClassName}%
   \TUD at Class@Info%
+%<!inherit>  \fi%
 }
-%</inherit>
 %    \end{macrocode}
+% \end{macro}^^A \TUDClassName
+% \end{macro}^^A \TUDScriptClassName
 % \end{macro}^^A \TUD at Class@KOMA
 % \end{macro}^^A \TUD at Class@Parent
 % \end{macro}^^A \TUD at Class@Name
@@ -236,11 +246,11 @@
 \providecommand*\TUD at Class@Info{%
   \typeout{+------------------------------------------------------------------}%
   \typeout{| Corporate Design of Technische Universitaet Dresden}%
-  \typeout{| Class:      \TUD at Class@Name}%
-  \typeout{| Version:    \TUD at Version}%
-  \typeout{| Author:     Falk Hanisch (\tudscrmail)}%
-  \typeout{| Repository: https://github.com/tud-cd/tudscr}%
-  \typeout{| Forum:      https://latex.wcms-file3.tu-dresden.de}%
+  \typeout{| Class:      \TUDScriptClassName}%
+  \typeout{| Version:    \TUDScriptVersion}%
+  \typeout{| Author:     Falk Hanisch (\TUDScriptContact)}%
+  \typeout{| Repository: \TUDScriptRepository}%
+  \typeout{| Forum:      \TUDScriptForum}%
   \typeout{+------------------------------------------------------------------}%
 }
 %    \end{macrocode}
@@ -254,64 +264,38 @@
 %<doc>\TUD at ProvidesClass{tudscrdoc}{scrartcl}{source code documentation class}
 %<manual>\TUD at ProvidesWrapperClass{tudscrmanual}{tudscrreprt}{manual class}
 %    \end{macrocode}
-% \begin{macro}{\TUDScriptClassName}
-% \begin{macro}{\TUDClassName}
-% Die Benutzermakros für den Namen der verwendeten \TUDScript-Klasse.
-%    \begin{macrocode}
-\edef\TUDScriptClassName{\TUD at Class@Name}
-\providecommand*\TUDClassName{\TUDScriptClassName}
-%    \end{macrocode}
-% \end{macro}^^A \TUDClassName
-% \end{macro}^^A \TUDScriptClassName
 %
 % \iffalse
 %</class>
-%<*package&(supervisor|comp|tutorial)>
+%<*package>
+%<*supervisor|comp|manual>
 % \fi
 %
-% \section{Verwendbarkeit von \TUDScript-Paketen}
-%
+% \begin{macro}{\TUD at Class@Check}
+% \changes{v2.06o}{2022/08/09}{neu}^^A
 % Einige Pakete sind nur mit den \TUDScript-Klassen verwendbar. Diese erzeugen 
-% einen Fehler, wenn sie nicht mit diesen verwendet werden.
+% einen Fehler, wenn sie nicht mit einer dieser verwendet werden.
 %    \begin{macrocode}
-\ifx\TUD at Class@Name\@undefined
-  \PackageError{%
-%<supervisor>    tudscrsupervisor%
-%<comp&base>    tudscrcomp%
-%<comp&book>    tudscrcomp-book%
-%<comp&poster>    tudscrcomp-poster%
-%<tutorial>    tudscrtutorial%
-  }{Unsupported class found}{%
-    This package can only be used with a class out of the\MessageBreak%
-    tudscr bundle (tudscrbook, tudscrreprt, tudscrartcl, tudscrposter).%
-  }%
-  \endinput%
-\fi
+\providecommand*\TUD at Class@Check[1]{%
+  \ifx\TUD at Class@Name\@undefined%
+    \PackageError{#1}{TUD-Script class not loaded}{%
+      This package requires a class of the TUD-Script bundle\MessageBreak%
+      (tudscrbook, tudscrreprt, tudscrartcl, tudscrposter).%
+    }%
+    \DeclareOption*{}%
+    \ProcessOptions\relax%
+    \expandafter\endinput%
+  \fi%
+}%
 %    \end{macrocode}
+% \end{macro}^^A \TUD at Class@Check
 %
 % \iffalse
-%</package&(supervisor|comp|tutorial)>
+%</supervisor|comp|manual>
+%</package>
+%</identify>
 % \fi
 %
-% \section{Das \TUDScript-Logo}
-% \begin{macro}{\TUDScript}
-% Der Schriftzug von \TUDScript.
-%    \begin{macrocode}
-%<*package|class>
-\@ifundefined{TUDScript}{%
-  \DeclareRobustCommand\TUDScript{%
-    \textsf{%
-      T\kern.05em U\kern.05em D\kern.1em-\kern.1em Script%
-    }%
-    \ifcsname xspace\endcsname%
-      \xspace%
-    \fi%
-  }%
-}{}
-%</package|class>
-%    \end{macrocode}
-% \end{macro}^^A \TUDScript
+% \PrintBackMatter
 %
-% \Finale
-%
 \endinput

Modified: trunk/Master/texmf-dist/source/latex/tudscr/tudscr.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/tudscr/tudscr.ins	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/source/latex/tudscr/tudscr.ins	2022-08-09 20:01:54 UTC (rev 64085)
@@ -2,7 +2,7 @@
 %  TUD-Script -- Corporate Design of Technische Universität Dresden
 % ----------------------------------------------------------------------------
 %
-%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2021
+%  Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2022
 %
 % ----------------------------------------------------------------------------
 %
@@ -24,30 +24,55 @@
 \gdef\processLineX%#1{*
   \ifcase\ifx%#10\else
          \ifx<#11\else
-         \ifx!#12\else 3\fi\fi\fi\relax
+         \ifx!#12\else
+         \ifx/#13\else 4\fi\fi\fi\fi\relax
     \expandafter\putMetaComment\or
     \expandafter\checkOption\or
-    \expandafter\expandVariable\or
+    \expandafter\TUDexpandVariable\or
+    \expandafter\TUDexpandCommand\or
     \expandafter\removeComment\fi
   #1}
 \endgroup
-\def\expandVariable!#1\endLine{%
-  \advance\codeLinesPassed\@ne
-  \maybeMsg{x}%
-  \edef\inLine{\csname #1\endcsname}%
-  \let\do\putline at do
-  \activefiles
+\def\TUDexpandVariable!#1\endLine{%
+  \expandafter\ifx\csname#1\endcsname\relax
+    \errmessage{%
+      You've tried to expand the undefined command^^J%
+      \expandafter\string\csname#1\endcsname%
+    }%
+  \else
+    \advance\codeLinesPassed\@ne
+    \maybeMsg{x}%
+    \edef\inLine{\csname#1\endcsname}%
+    \let\do\putline at do
+    \activefiles
+  \fi
 }
+\def\TUDexpandCommand/#1=#2\endLine{%
+  \expandafter\ifx\csname#1\endcsname\relax
+    \errmessage{%
+      You've tried to expand the undefined command^^J%
+      \expandafter\string\csname#1\endcsname%
+    }%
+  \else
+    \advance\codeLinesPassed\@ne
+    \maybeMsg{x}%
+    \expandafter\edef\expandafter\inLine\expandafter{\csname#1\endcsname{#2}}%
+    \let\do\putline at do
+    \activefiles
+  \fi
+}
 \@@input tudscr-version.dtx
+\@@input tudscr-gitinfo.dtx
 \keepsilent
 \preamble
 
 TUD-Script -- Corporate Design of Technische Universitaet Dresden
+            \TUD at Version
 
-\TUD at Version
+Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2022
+              https://github.com/tud-cd/tudscr
+              https://latex.wcms-file3.tu-dresden.de/phpBB3/
 
-Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2021
-
 This file was generated from file(s) of the TUD-Script bundle.
 ----------------------------------------------------------------------------
 
@@ -67,12 +92,11 @@
 \usedir{tex/latex/tudscr}
 \generate{%
   \usepreamble\defaultpreamble%
-  \file{tudscrbase.sty}{%
-    \from{tudscr-version.dtx}{package,base}%
-    \from{tudscr-base.dtx}{package,base}%
-  }
   \file{tudscrbook.cls}{%
-    \from{tudscr-version.dtx}{class,book}%
+    \from{tudscr-version.dtx}{class,book,identify}%
+    \needed{tudscr-fonts.dtx}%
+    \needed{tudscr-supervisor.dtx}%
+    \needed{tudscr-comp.dtx}%
     \from{tudscr-base.dtx}{class,book,load}%
     \from{tudscr-base.dtx}{class,book,option}%
     \from{tudscr-fonts.dtx}{class,book,option}%
@@ -93,11 +117,14 @@
     \from{tudscr-layout.dtx}{class,book,body}%
     \from{tudscr-title.dtx}{class,book,body}%
     \from{tudscr-frontmatter.dtx}{class,book,body}%
+    \from{tudscr-misc.dtx}{class,book,body}%
     \from{tudscr-comp.dtx}{class,book,body}%
-    \from{tudscr-misc.dtx}{class,book,body}%
   }
   \file{tudscrreprt.cls}{%
-    \from{tudscr-version.dtx}{class,report}%
+    \from{tudscr-version.dtx}{class,report,identify}%
+    \needed{tudscr-fonts.dtx}%
+    \needed{tudscr-supervisor.dtx}%
+    \needed{tudscr-comp.dtx}%
     \from{tudscr-base.dtx}{class,report,load}%
     \from{tudscr-base.dtx}{class,report,option}%
     \from{tudscr-fonts.dtx}{class,report,option}%
@@ -118,11 +145,14 @@
     \from{tudscr-layout.dtx}{class,report,body}%
     \from{tudscr-title.dtx}{class,report,body}%
     \from{tudscr-frontmatter.dtx}{class,report,body}%
+    \from{tudscr-misc.dtx}{class,report,body}%
     \from{tudscr-comp.dtx}{class,report,body}%
-    \from{tudscr-misc.dtx}{class,report,body}%
   }
   \file{tudscrartcl.cls}{%
-    \from{tudscr-version.dtx}{class,article}%
+    \from{tudscr-version.dtx}{class,article,identify}%
+    \needed{tudscr-fonts.dtx}%
+    \needed{tudscr-supervisor.dtx}%
+    \needed{tudscr-comp.dtx}%
     \from{tudscr-base.dtx}{class,article,load}%
     \from{tudscr-base.dtx}{class,article,option}%
     \from{tudscr-fonts.dtx}{class,article,option}%
@@ -143,11 +173,14 @@
     \from{tudscr-layout.dtx}{class,article,body}%
     \from{tudscr-title.dtx}{class,article,body}%
     \from{tudscr-frontmatter.dtx}{class,article,body}%
+    \from{tudscr-misc.dtx}{class,article,body}%
     \from{tudscr-comp.dtx}{class,article,body}%
-    \from{tudscr-misc.dtx}{class,article,body}%
   }
   \file{tudscrposter.cls}{%
-    \from{tudscr-version.dtx}{class,poster}%
+    \from{tudscr-version.dtx}{class,poster,identify}%
+    \needed{tudscr-fonts.dtx}%
+    \needed{tudscr-supervisor.dtx}%
+    \needed{tudscr-comp.dtx}%
     \from{tudscr-base.dtx}{class,poster,load}%
     \from{tudscr-base.dtx}{class,poster,option}%
     \from{tudscr-fonts.dtx}{class,poster,option}%
@@ -168,24 +201,36 @@
     \from{tudscr-layout.dtx}{class,poster,body}%
     \from{tudscr-title.dtx}{class,poster,body}%
     \from{tudscr-frontmatter.dtx}{class,poster,body}%
+    \from{tudscr-misc.dtx}{class,poster,body}%
     \from{tudscr-comp.dtx}{class,poster,body}%
-    \from{tudscr-misc.dtx}{class,poster,body}%
   }
-}
-\generate{%
-  \usepreamble\defaultpreamble%
+  \file{tudscrbase.sty}{%
+    \from{tudscr-version.dtx}{package,base,identify}%
+    \from{tudscr-base.dtx}{package,base}%
+  }
+  \file{tudscrcolor.sty}{%
+    \from{tudscr-version.dtx}{package,color,identify}%
+    \from{tudscr-color.dtx}{package,color}%
+  }
   \file{tudscrsupervisor.sty}{%
-    \from{tudscr-version.dtx}{package,supervisor}%
-    \from{tudscr-supervisor.dtx}{package,supervisor}%
-    \from{tudscr-fields.dtx}{package,supervisor}%
-    \from{tudscr-localization.dtx}{package,supervisor}%
+    \from{tudscr-version.dtx}{package,supervisor,identify}%
+    \from{tudscr-supervisor.dtx}{package,supervisor,identify}%
+    \from{tudscr-fields.dtx}{package,supervisor,body}%
+    \from{tudscr-localization.dtx}{package,supervisor,body}%
+    \from{tudscr-supervisor.dtx}{package,supervisor,body}%
   }
-}
-\generate{%
-  \usepreamble\defaultpreamble%
+  \file{tudscrcomp.sty}{%
+    \from{tudscr-version.dtx}{package,comp,identify}%
+    \from{tudscr-comp.dtx}{package,comp,identify}%
+    \needed{tudscr-misc.dtx}%
+    \from{tudscr-comp.dtx}{package,comp,option}%
+    \from{tudscr-misc.dtx}{package,comp,execute}%
+    \from{tudscr-comp.dtx}{package,comp,body}%
+  }
   \file{tudscrfonts.sty}{%
-    \from{tudscr-version.dtx}{package,fonts}%
+    \from{tudscr-version.dtx}{package,fonts,identify}%
     \from{tudscr-fonts.dtx}{package,fonts,identify}%
+    \needed{tudscr-comp.dtx}%
     \from{tudscr-base.dtx}{package,fonts,load}%
     \from{tudscr-fonts.dtx}{package,fonts,option}%
     \from{tudscr-misc.dtx}{package,fonts,option}%
@@ -192,51 +237,16 @@
     \from{tudscr-comp.dtx}{package,fonts,option}%
     \from{tudscr-misc.dtx}{package,fonts,execute}%
     \from{tudscr-fonts.dtx}{package,fonts,body}%
+    \from{tudscr-misc.dtx}{package,fonts,body}%
     \from{tudscr-comp.dtx}{package,fonts,body}%
-    \from{tudscr-misc.dtx}{package,fonts,body}%
   }
-}
-\generate{%
-  \usepreamble\defaultpreamble%
-  \file{tudscrcolor.sty}{%
-    \from{tudscr-version.dtx}{package,color}%
-    \from{tudscr-color.dtx}{package,color}%
-  }
-  \file{twocolfix.sty}{%
-    \from{tudscr-twocolfix.dtx}{package}%
-  }
-  \file{mathswap.sty}{%
-    \from{tudscr-mathswap.dtx}{package}%
-  }
-}
-\generate{%
-  \usepreamble\defaultpreamble%
-  \file{tudscrcomp.sty}{%
-    \from{tudscr-version.dtx}{package,comp,base}%
-    \from{tudscr-comp.dtx}{package,comp,base,identify}%
-  }
-  \file{tudscrcomp-book.sty}{%
-    \from{tudscr-version.dtx}{package,comp,book}%
-    \from{tudscr-comp.dtx}{package,comp,book,identify}%
-    \from{tudscr-comp.dtx}{package,comp,book,option}%
-    \from{tudscr-misc.dtx}{package,comp,book,execute}%
-    \from{tudscr-comp.dtx}{package,comp,book,body}%
-  }
-  \file{tudscrcomp-poster.sty}{%
-    \from{tudscr-version.dtx}{package,comp,poster}%
-    \from{tudscr-comp.dtx}{package,comp,poster,identify}%
-    \from{tudscr-comp.dtx}{package,comp,poster,option}%
-    \from{tudscr-misc.dtx}{package,comp,poster,execute}%
-    \from{tudscr-comp.dtx}{package,comp,poster,body}%
-  }
-}
-\generate{%
-  \usepreamble\defaultpreamble%
   \file{fix-tudscrfonts.sty}{%
-    \from{tudscr-version.dtx}{package,fixfonts}%
+    \from{tudscr-version.dtx}{package,fixfonts,identify}%
     \from{tudscr-comp.dtx}{package,fixfonts,identify}%
     \from{tudscr-base.dtx}{package,fixfonts,load}%
     \from{tudscr-layout.dtx}{package,fixfonts,option}%
+    \needed{tudscr-misc.dtx}%
+    \needed{tudscr-comp.dtx}%
     \from{tudscr-misc.dtx}{package,fixfonts,execute}%
     \from{tudscr-layout.dtx}{package,fixfonts,body}%
     \from{tudscr-comp.dtx}{package,fixfonts,body}%
@@ -245,36 +255,54 @@
 \generate{%
   \usepreamble\defaultpreamble%
   \file{tudscrmanual.cls}{%
-    \from{tudscr-version.dtx}{class,manual,inherit}%
-    \from{tudscr-manual.dtx}{class,manual}%
+    \from{tudscr-version.dtx}{class,manual,identify,inherit}%
+    \needed{tudscr-manual.dtx}%
     \from{tudscr-base.dtx}{class,manual,inherit,load}%
+    \from{tudscr-misc.dtx}{class,manual,option}%
     \from{tudscr-manual.dtx}{class,manual,option}%
     \from{tudscr-misc.dtx}{class,manual,inherit,execute}%
+    \from{tudscr-misc.dtx}{class,manual,body}%
     \from{tudscr-manual.dtx}{class,manual,body}%
     \from{tudscr-fields.dtx}{class,manual,body}%
     \from{tudscr-localization.dtx}{class,manual,body}%
     \from{tudscr-texindy.dtx}{class,manual}%
   }
-  \file{tudscrtutorial.sty}{%
-    \from{tudscr-version.dtx}{package,tutorial}%
-    \from{tudscr-manual.dtx}{package,tutorial,identify}%
-    \from{tudscr-base.dtx}{package,tutorial,load}%
-    \from{tudscr-manual.dtx}{package,tutorial,option}%
-    \from{tudscr-misc.dtx}{package,tutorial,execute}%
-    \from{tudscr-manual.dtx}{package,tutorial,body}%
-    \from{tudscr-texindy.dtx}{package,tutorial}%
+  \file{tudscrmanual.sty}{%
+    \from{tudscr-version.dtx}{package,manual,identify}%
+    \from{tudscr-manual.dtx}{package,manual,identify}%
+    \from{tudscr-base.dtx}{package,manual,load}%
+    \from{tudscr-misc.dtx}{package,manual,option}%
+    \from{tudscr-manual.dtx}{package,manual,option}%
+    \from{tudscr-misc.dtx}{package,manual,execute}%
+    \from{tudscr-misc.dtx}{package,manual,body}%
+    \from{tudscr-manual.dtx}{package,manual,body}%
+    \from{tudscr-texindy.dtx}{package,manual}%
   }
 }
 \generate{%
   \usepreamble\defaultpreamble%
   \file{tudscrdoc.cls}{%
-    \from{tudscr-version.dtx}{class,doc}%
+    \from{tudscr-version.dtx}{class,doc,identify}%
     \from{tudscr-base.dtx}{class,doc,load}%
+    \from{tudscr-misc.dtx}{class,doc,option}%
     \from{tudscr-doc.dtx}{class,doc,option}%
     \from{tudscr-localization.dtx}{class,doc}%
-    \from{tudscr-manual.dtx}{class,doc}%
+    \from{tudscr-misc.dtx}{class,doc,body}%
     \from{tudscr-doc.dtx}{class,doc,body}%
     \from{tudscr-texindy.dtx}{class,doc}%
   }
 }
+\generate{%
+  \usepreamble\defaultpreamble%
+  \file{tudscr-gitinfo.sty}{%
+    \from{tudscr-version.dtx}{package,git,identify}%
+    \from{tudscr-gitinfo.dtx}{identify,package}%
+  }
+  \file{twocolfix.sty}{%
+    \from{tudscr-twocolfix.dtx}{package}%
+  }
+  \file{mathswap.sty}{%
+    \from{tudscr-mathswap.dtx}{package}%
+  }
+}
 \endbatchfile

Modified: trunk/Master/texmf-dist/source/latex/tudscr/tudscrsource.tex
===================================================================
--- trunk/Master/texmf-dist/source/latex/tudscr/tudscrsource.tex	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/source/latex/tudscr/tudscrsource.tex	2022-08-09 20:01:54 UTC (rev 64085)
@@ -1,9 +1,12 @@
-\begingroup
-  \def\ProvidesFile#1[#2]{\csname endinput\endcsname}%
-  \input tudscr-version.dtx
-  \gdef\filename{\jobname}
-\endgroup
-\ProvidesFile{tudscrsource.tex}[\TUDScriptVersion (sourcedoc)]
+\ifx\documentclass\undefined
+  \input docstrip.tex
+  \ifToplevel{\batchinput{tudscr.ins}}
+\else
+  \let\endbatchfile\relax
+\fi
+\endbatchfile
+
+\RequirePackage{tudscr-gitinfo}
 \documentclass[english,ngerman,xindy]{tudscrdoc}
 \iftutex
   \usepackage{fontspec}
@@ -13,22 +16,16 @@
 \fi
 \usepackage{babel}
 \usepackage{tudscrfonts}
-\KOMAoptions{parskip=half-}
-\usepackage{bookmark}
 \usepackage[babel]{microtype}
 
-%\EnableCrossrefs
-\CodelineIndex
-\RecordChanges
-\GetFileInfo{tudscrsource.tex}
-
+\GitHubBase{\TUDScriptRepository}
 \begin{document}
 \addtokomafont{subject}{\sffamily}
 \subject{\TUDScript basierend auf \KOMAScript}
-\title{Ein \LaTeX-Bundle für Dokumente \mbox{im neuen \CD der} \mbox{\TnUD}}
-\subtitle{Dokumentierter Quelltext}
-\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
-\date{\fileversion\nobreakspace(\filedate)}
+\title{Ein \LaTeX-Bundle für Dokumente \mbox{im \CD der} \mbox{\TnUD}}
+\subtitle{Quelltextdokumentation}
+\author{Falk Hanisch\TUDScriptContactTitle}
+\date{\TUDScriptVersion}
 
 \makeatletter
 \begingroup%
@@ -38,9 +35,9 @@
   \let\mailto\@gobble%
   \let\qquad\relax%
   \hypersetup{%
-    pdfauthor = {\@author},%
-    pdftitle = {\@title},%
-    pdfsubject = {Quelltextdokumentation des \TUDScript-Bundles},%
+    pdfauthor   = {\@author},%
+    pdftitle    = {\@title},%
+    pdfsubject  = {\@subtitle},%
     pdfkeywords = {LaTeX, \TUDScript, Quelltext},%
   }%
 \endgroup%
@@ -50,12 +47,11 @@
 
 \maketitle
 
-\ToDo{Release-Prozess mit \app{make} und \file{Makefile}}[v2.07]
 
-Das \TUDScript-Bundle setzt das \TUDCD für \LaTeXe{} um. Die enthaltenen 
+Das \TUDScript-Bundle setzt das \TUDCD für \LaTeX{} um. Die enthaltenen 
 Klassen und Pakete basieren auf dem \KOMAScript-Bundle und sind sehr eng mit 
-diesen verwoben. Momentan ergänzen sie das Vorlagenpaket von Klaus Bergmann, 
-das auf den Standard-\LaTeX-Klassen basiert und als veraltet betrachtet werden 
+diesen verwoben. Momentan ergänzen sie das Vorlagenbundle von Klaus~Bergmann, 
+das auf den \LaTeX"=Standardklassen basiert und als veraltet betrachtet werden 
 kann. Die dazugehörigen Klassen sollen mittel- bis langfristig ersetzt werden.%
 \footnote{%
   aktuell ist dies \cls{tudbook}, geplant \cls{tudfax}, \cls{tudletter}, 
@@ -63,10 +59,17 @@
 }
 Es handelt sich bei diesem Dokument \emph{nicht} um das Anwenderhandbuch
 sondern um den dokumentierten Quelltext der Implementierung von \TUDScript.
-Das Anwenderhandbuch kann über die Kommandozeile respektive das Terminal mit 
-dem Aufruf \texttt{texdoc tudscr} geöffnet werden.
+Das Anwenderhandbuch kann via Kommandozeile/Terminal mit \texttt{texdoc tudscr} 
+geöffnet werden.
 
 \tableofcontents
+\ToDo{Release-Prozess mit \app{make} und \file{Makefile}}[v2.07]
+\ToDo{^^A
+  \cs{kernel at ifnextchar}, \cs{kernel at ifstar} mit \cs{NewDocumentCommand}^^A
+}[v2.07]
+\ToDo{\cs{IfArgIsEmpty} überprüfen/ersetzen}[v2.07]
+% renewcommand[^\{]*?\\[^\{\[]*?\{
+\ToDo{\cs{renewcommand} mit \cs{def} ersetzen, wo sinnvoll}[v2.07]
 \clearpage
 
 \DocInclude{tudscr-version}
@@ -91,16 +94,9 @@
 \DocInclude{tudscr-manual}
 \DocInclude{tudscr-doc}
 \DocInclude{tudscr-texindy}
-%\DocInclude{install/tudscr-metrics}
-%\DocInclude{install/tudscr-scripts}
+\DocInclude{install/tudscr-metrics}
+\DocInclude{install/tudscr-scripts}
 \fi
 
-\addpart{\appendixname}
-\vspace*{-2\baselineskip}
-\PrintIndex
-\clearpage
-\PrintChanges
-\clearpage
-\PrintToDos
-\clearpage
+\PrintBackMatter*
 \end{document}

Modified: trunk/Master/texmf-dist/tex/latex/tudscr/fix-tudscrfonts.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tudscr/fix-tudscrfonts.sty	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/tex/latex/tudscr/fix-tudscrfonts.sty	2022-08-09 20:01:54 UTC (rev 64085)
@@ -4,7 +4,7 @@
 %%
 %% The original source files were:
 %%
-%% tudscr-version.dtx  (with options: `package,fixfonts')
+%% tudscr-version.dtx  (with options: `package,fixfonts,identify')
 %% tudscr-comp.dtx  (with options: `package,fixfonts,identify')
 %% tudscr-base.dtx  (with options: `package,fixfonts,load')
 %% tudscr-layout.dtx  (with options: `package,fixfonts,option')
@@ -13,11 +13,12 @@
 %% tudscr-comp.dtx  (with options: `package,fixfonts,body')
 %% 
 %% TUD-Script -- Corporate Design of Technische Universitaet Dresden
+%%               2022/08/09 v2.06o TUD-Script
 %% 
-%%   2021/07/15 v2.06n TUD-Script
+%% Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2022
+%%               https://github.com/tud-cd/tudscr
+%%               https://latex.wcms-file3.tu-dresden.de/phpBB3/
 %% 
-%% Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2021
-%% 
 %% This file was generated from file(s) of the TUD-Script bundle.
 %% ----------------------------------------------------------------------------
 %% 
@@ -32,20 +33,17 @@
 %% 
 %% The current maintainer and author of this work is Falk Hanisch.
 %% 
-%%% From File: tudscr-version.dtx
+%%%% From File: tudscr-version.dtx (no git version info was found)
+\NeedsTeXFormat{LaTeX2e}[2022-06-01]
 \begingroup
-  \catcode`\@11\relax
-  \ifx\TUD at Version\@undefined
-    \newcommand*\TUD at Version@Check[1]{%
+  \catcode`\@11\relax%
+  \ifx\TUD at Version\@undefined%
+    \newcommand*\TUD@@Version[2]{%
       \gdef\TUD at Version{#1}%
-      \gdef\TUDScriptVersion{#1}%
-      \def\@tempb##1 v##2 ##3\relax##4\relax{\gdef\TUDScriptVersionNumber{##2}}%
-      \edef\@tempa{\TUD at Version}%
-      \expandafter\@tempb\@tempa\relax? ? \relax\relax%
-      \gdef\TUD at Version@KOMA{3.32}%
-    }
-  \else
-    \newcommand*\TUD at Version@Check[1]{%
+      \gdef\TUD at KOMAVersion{#2}%
+    }%
+  \else%
+    \newcommand*\TUD@@Version[2]{%
       \def\@tempa{#1}%
       \ifx\TUD at Version\@tempa\else%
         \@latex at warning@no at line{%
@@ -52,39 +50,48 @@
           \noexpand\TUD at Version\space is `\TUD at Version',\MessageBreak%
           but `#1' was expected!\MessageBreak%
           You should not use classes, packages or files from\MessageBreak%
-          different TUD-Script-Bundle versions%
+          different TUD-Script bundle versions%
         }%
       \fi%
-    }
-  \fi
-  \TUD at Version@Check{2021/07/15 v2.06n TUD-Script}
+    }%
+  \fi%
+  \TUD@@Version{2022/08/09 v2.06o TUD-Script}{2022/05/01 v3.36 KOMA-Script}%
+  \ifx\TUDScriptVersion\@undefined%
+    \xdef\TUDScriptVersion{\TUD at Version}%
+    \def\@tempa#1 v#2 #3\relax#4\relax#5{\gdef#5{#2}}%
+    \expandafter\@tempa\TUD at Version ? ?\relax\relax{\TUDScriptVersionNumber}%
+    \expandafter\@tempa\TUD at KOMAVersion ? ?\relax\relax{\TUD at KOMAVersionNumber}%
+  \fi%
 \endgroup
-\NeedsTeXFormat{LaTeX2e}[2019/10/01]
-\providecommand*\tudscrmail{hanisch.latex at outlook.com}
 \@ifundefined{TUDScript}{%
   \DeclareRobustCommand\TUDScript{%
-    \textsf{%
-      T\kern.05em U\kern.05em D\kern.1em-\kern.1em Script%
-    }%
-    \ifcsname xspace\endcsname%
-      \xspace%
-    \fi%
+    \mbox{%
+      \textsf{%
+        T\kern.05em U\kern.05em D\kern.1em-\kern.1em Script%
+      }%
+    }\ifcsname xspace\endcsname\xspace\fi%
   }%
 }{}
-%%% From File: tudscr-comp.dtx
-\ProvidesPackage{fix-tudscrfonts}[%
-  2021/07/15 v2.06n TUD-Script
+\providecommand*\TUDScriptContact{hanisch.latex at outlook.com}
+\providecommand*\TUDScriptRepository{https://github.com/tud-cd/tudscr}
+\providecommand*\TUDScriptForum{https://latex.wcms-file3.tu-dresden.de/phpBB3/}
+%%%% From File: tudscr-comp.dtx (no git version info was found)
+\ProvidesPackage{fix-tudscrfonts}%
+[%
+  2022/08/09 v2.06o TUD-Script
   package for font fixes
   (compatibility for old tud(scr) classes)%
 ]
-%%% From File: tudscr-base.dtx
-\RequirePackage{tudscrbase}[\TUD at Version]
-%%% From File: tudscr-layout.dtx
-\newif\if at tud@heavyheadings
+%%%% From File: tudscr-base.dtx (no git version info was found)
+\RequirePackage{tudscrbase}[%
+  2022/08/09 v2.06o TUD-Script
+]
+%%%% From File: tudscr-layout.dtx (no git version info was found)
+\tud at newif\if at tud@heavyheadings
 \TUD at key{headings}{%
   \TUD at set@numkey{headings}{@tempa}{%
     {light}{0},{lightfont}{0},{lite}{0},{litefont}{0},{noheavyfont}{0},%
-    {normal}{0},{standard}{0},{std}{0},{normalbold}{0},{boldnormal}{0},%
+    {standard}{0},{std}{0},{normalbold}{0},{boldnormal}{0},%
     {heavy}{1},{heavyfont}{1},{bold}{1},{boldfont}{1},%
     {ultrabold}{1},{boldultra}{1},{heavybold}{1},{boldheavy}{1},%
     {extendedbold}{1},{boldextended}{1}%
@@ -97,29 +104,39 @@
     \fi%
   \fi%
 }
-%%% From File: tudscr-misc.dtx
+%%%% From File: tudscr-misc.dtx (no git version info was found)
+\TUDExecuteOptions{%
+  headings=heavy%
+}
 \DeclareOption*{%
   \expandafter\PassOptionsToPackage\expandafter{\CurrentOption}%
   {tudscrfonts}%
 }
-\TUDExecuteOptions{%
-  headings=heavy%
-}
 \TUDProcessOptions\relax
-%%% From File: tudscr-layout.dtx
+%%%% From File: tudscr-layout.dtx (no git version info was found)
 \AfterPackage{tudscrfonts}{%
 \newcommand*\tud at sec@fontface[1][]{\tud at sec@@fontface{#1}}%
 \newcommand*\tud at sec@@fontface[1]{%
   \sectfont#1%
-  \if at tud@cdfont at active\if at tud@heavyheadings%
-    \if at tud@x at mweights@enabled%
-      \edef\bfseries at rm{\tud at cdfont@ebf}%
-      \edef\bfseries at sf{\tud at cdfont@ebf}%
-      \edef\bfseries at tt{\tud at ttfont@ebf}%
+  \if at tud@cdfont at active%
+    \if at tud@heavyheadings%
+      \if at tud@x at mweights@enabled%
+        \edef\bfseries at rm{\tud at cdfont@ebf}%
+        \edef\bfseries at sf{\tud at cdfont@ebf}%
+        \edef\bfseries at tt{\tud at ttfont@ebf}%
+      \fi%
+      \let\bfdefault\tud at cdfont@ebf%
+      \fontseriesforce{\tud at cdfont@ebf}%
     \fi%
-    \let\bfdefault\tud at cdfont@ebf%
-    \fontseries{\tud at cdfont@ebf}%
-  \fi\fi%
+  \else%
+    \fontfamily{\tud at cdfont@fam}%
+    \if at tud@heavyheadings%
+      \let\bfdefault\tud at cdfont@ebf%
+    \else%
+      \let\bfdefault\tud at cdfont@bf%
+    \fi%
+    \fontseriesforce{\bfdefault}%
+  \fi%
   \selectfont%
 }
 \if at tud@cdoldfont at active
@@ -131,48 +148,39 @@
     \fi%
   }%
 \fi
-\newcommand*\tud at sec@format[2][]{%
-  \IfArgIsEmpty{#1}{%
-    \tud at sec@strut%
-  }{%
-    \begingroup%
-      \usefontofkomafont{#1}%
-      \tud at sec@strut%
-    \endgroup%
-  }%
-  #2%
+\tud at newif\if at tud@sec
+\newrobustcmd*\tud at sec@format{%
+  \@tud at sectrue%
+  \kernel at ifstar{\tud at sec@@format{}}{\tud at sec@@format{\strut}}%
 }
+\newcommand*\tud at sec@@format[1]{%
+  \kernel at ifnextchar[%]
+    {\tud at sec@@@format{#1}}%
+    {\tud at sec@@@format{#1}[]}%
+}
+\newcommand*\tud at sec@@@format{}
+\def\tud at sec@@@format#1[#2]#3{%
+  \begingroup%
+    \IfArgIsEmpty{#2}%
+      {\let\tud at res@a\@firstofone}%
+      {\def\tud at res@a{\usekomafont{#2}}}%
+    \tud at res@a{%
+      \nobreak#1\nobreak\vphantom{\textsuperscript{\tud at font@phantomglyphs}}%
+    }%
+  \endgroup%
+  \tud at sec@@@@format{#3}%
+}
+\newcommand*\tud at sec@@@@format[1]{#1}
 \if at tud@cdoldfont at active
-  \newcommand*\tud at sec@uppercase{\MakeUppercase}%
-  \AfterPackage*{textcase}{%
-    \renewcommand*\tud at sec@uppercase{\MakeTextUppercase}%
-  }%
-  \renewcommand*\tud at sec@format[2][]{%
-    \@tud at res@swafalse%
-    \IfArgIsEmpty{#1}{%
-      \tud at sec@strut%
-      \tud at ifdin{\@tud at res@swatrue}{}%
-    }{%
-      \begingroup%
-        \usefontofkomafont{#1}%
-        \tud at sec@strut%
-        \tud at ifdin{\aftergroup\@tud at res@swatrue}{}%
-      \endgroup%
-    }%
-    \if at tud@res at swa%
-      \tud at sec@uppercase{#2}%
-    \else%
-      #2%
-    \fi%
-  }%
+  \def\tud at sec@@@@format#1{\tud at ifdin{\MakeUppercase{#1}}{#1}}%
 \fi
-\newrobustcmd*\tud at sec@strut{%
 }
-}
-%%% From File: tudscr-comp.dtx
+%%%% From File: tudscr-comp.dtx (no git version info was found)
 \AtEndPreamble{%
   \tud at fixfonts@class at check%
-  \RequirePackage{tudscrfonts}[\TUD at Version]%
+  \RequirePackage{tudscrfonts}[%
+  2022/08/09 v2.06o TUD-Script
+  ]%
 }
 \ifx\usepackage\RequirePackage
   \newcommand*\tud at fixfonts@class at check{%
@@ -215,6 +223,8 @@
     \tud at cs@store{shapedefault}%
     \tud at cs@store{normalfont}%
     \let\normalfont\relax%
+    \let\abovecaptionskip\relax%
+    \let\belowcaptionskip\relax%
     \PassOptionsToClass{serifmath}{#1}%
   }%
   \AfterClass{#1}{%
@@ -235,6 +245,10 @@
     \tud at cs@restore{seriesdefault}%
     \tud at cs@restore{shapedefault}%
     \tud at cs@restore{normalfont}%
+    \newlength\abovecaptionskip%
+    \newlength\belowcaptionskip%
+    \setlength\abovecaptionskip{10\p@}%
+    \setlength\belowcaptionskip{0\p@}%
     #2%
     \AfterPackage{tudscrfonts}{%
       \def\dinBold{\dinbn}%
@@ -325,29 +339,41 @@
 \tud at fixfonts@class at adapt{tudposter}{}
 \tud at fixfonts@class at adapt{tudbeamer}{}
 \tud at fixfonts@class at adapt{tudbook}{%
-  \patchcmd{\@makechapterhead}{\dinBold\Huge\bfseries}{%
+  \patchcmd\@makechapterhead{%
+    \dinBold\Huge\bfseries%
+  }{%
     \tud at sec@fontface%
     \if at color\color{HKS41-100}\fi%
     \Huge%
   }{}{\tud at patch@wrn{@makechapterhead}}%
-  \patchcmd{\@makechapterhead}{\MakeUppercase}{%
+  \patchcmd\@makechapterhead{%
+    \MakeUppercase%
+  }{%
     \tud at sec@format%
   }{}{\tud at patch@wrn{@makechapterhead}}%
-  \patchcmd{\@makeschapterhead}{\dinBold\Huge\bfseries}{%
+  \patchcmd\@makeschapterhead{%
+    \dinBold\Huge\bfseries%
+  }{%
     \tud at sec@fontface%
     \if at color\color{HKS41-100}\fi%
     \Huge%
   }{}{\tud at patch@wrn{@makeschapterhead}}%
-  \patchcmd{\@makeschapterhead}{\MakeUppercase}{%
+  \patchcmd\@makeschapterhead{%
+    \MakeUppercase%
+  }{%
     \tud at sec@format%
   }{}{\tud at patch@wrn{@makeschapterhead}}%
-  \patchcmd{\section}{\dinBold\Large\bfseries\MakeUppercase}{%
+  \patchcmd\section{%
+    \dinBold\Large\bfseries\MakeUppercase%
+  }{%
     \tud at sec@fontface%
     \if at color\color{HKS41-100}\fi%
     \Large%
     \tud at sec@format%
   }{}{\tud at patch@wrn{section}}%
-  \patchcmd{\showtitle}{\dinBold\Huge\bfseries\MakeUppercase}{%
+  \patchcmd\showtitle{%
+    \dinBold\Huge\bfseries\MakeUppercase%
+  }{%
     \tud at sec@fontface%
     \if at colortitle\color{HKS41-30}\fi%
     \Huge%
@@ -355,6 +381,7 @@
   }{}{\tud at patch@wrn{showtitle}}%
 }
 \tud at fixfonts@class at adapt{tudmathposter}{%
+  \ifunivers\PassOptionsToPackage{cdoldfont}{tudscrfonts}\fi%
   \def\raggedtitle{\tud at raggedright}%
   \renewcommand*\raggedpart{\tud at raggedright}%
   \renewcommand*\raggedsection{\tud at raggedright}%
@@ -382,7 +409,9 @@
       \fi
     }%
   }%
-  \apptocmd{\maketitle}{\vspace{-6ex}}{}{\tud at patch@wrn{maketitle}}%
+  \apptocmd\maketitle{%
+    \vspace{-6ex}%
+  }{}{\tud at patch@wrn{maketitle}}%
   \renewcommand*\subtitlefont{%
     \unskip%
     \tud at sec@fontface%
@@ -389,25 +418,22 @@
     \huge%
   }%
   \renewcommand*\preprocesstitle[1]{\raggedtitle\tud at sec@format{#1}}%
-  \if at mathevorgabe%
-    \undef\sectionfont%
-    \undef\subsectionfont%
-  \fi%
-  \newcommand*\sectionfont{\bfseries\LARGE}%
-  \newcommand*\subsectionfont{\sectionfont\large}%
-  \patchcmd{\ps at tudposter}{\textbf{\@einrichtung}}{%
-    \textbf{\fontseries{b}\selectfont\@einrichtung}%
+  \def\sectionfont{\tud at sec@fontface\LARGE}%
+  \def\subsectionfont{\tud at sec@fontface\large}%
+  \patchcmd\ps at tudposter{%
+    \textbf{\@einrichtung}%
+  }{%
+    {\fontseries{b}\selectfont\@einrichtung}%
   }{}{\tud at patch@wrn{ps at tudposter}}%
   \pagestyle{tudposter}%
 }
 \newcommand*\tud at x@tudfonts at prevent{%
-  \RequirePackage{amsmath}%
-  \RequirePackage{amsfonts}%
   \newif\if at tudfonts@nodin%
   \let\DeclareTudMathSizes\@gobblefour%
   \let\tud at x@tudfonts at prevent\relax%
 }
 \PreventPackageFromLoading[\tud at x@tudfonts at prevent]{tudfonts}
+\PreventPackageFromLoading{opensans}
 \endinput
 %%
 %% End of file `fix-tudscrfonts.sty'.

Modified: trunk/Master/texmf-dist/tex/latex/tudscr/mathswap.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tudscr/mathswap.sty	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/tex/latex/tudscr/mathswap.sty	2022-08-09 20:01:54 UTC (rev 64085)
@@ -7,11 +7,12 @@
 %% tudscr-mathswap.dtx  (with options: `package')
 %% 
 %% TUD-Script -- Corporate Design of Technische Universitaet Dresden
+%%               2022/08/09 v2.06o TUD-Script
 %% 
-%%   2021/07/15 v2.06n TUD-Script
+%% Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2022
+%%               https://github.com/tud-cd/tudscr
+%%               https://latex.wcms-file3.tu-dresden.de/phpBB3/
 %% 
-%% Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2021
-%% 
 %% This file was generated from file(s) of the TUD-Script bundle.
 %% ----------------------------------------------------------------------------
 %% 
@@ -26,12 +27,11 @@
 %% 
 %% The current maintainer and author of this work is Falk Hanisch.
 %% 
-%%% From File: tudscr-mathswap.dtx
+%%%% From File: tudscr-mathswap.dtx (no git version info was found)
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesPackage{mathswap}[%
-  2021/07/15 v2.06n TUD-Script
-  package
-  (swap mathematical separators)%
+  2022/08/09 v2.06o TUD-Script
+  package (swap mathematical separators)%
 ]
 \newcommand*\@commaswap{,}
 \newcommand*\commaswap[1]{\gdef\@commaswap{#1}\ignorespaces}
@@ -81,10 +81,10 @@
 }
 \newcommand*\ms at token{}
 \begingroup
-  \catcode`,=\active
-  \gdef,{\futurelet\ms at token\ms at smartcomma}
-  \catcode`.=\active
-  \gdef.{\futurelet\ms at token\ms at smartdot}
+  \catcode`,=\active%
+  \gdef,{\futurelet\ms at token\ms at smartcomma}%
+  \catcode`.=\active%
+  \gdef.{\futurelet\ms at token\ms at smartdot}%
 \endgroup
 \newcommand*\ms at smartcomma{\ms at ifnum{\ms at commaswap}{\ms at commachar}}
 \newcommand*\ms at smartdot{\ms at ifnum{\ms at dotswap}{\ms at dotchar}}

Added: trunk/Master/texmf-dist/tex/latex/tudscr/tudscr-gitinfo.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tudscr/tudscr-gitinfo.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tudscr/tudscr-gitinfo.sty	2022-08-09 20:01:54 UTC (rev 64085)
@@ -0,0 +1,220 @@
+%%
+%% This is file `tudscr-gitinfo.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% tudscr-version.dtx  (with options: `package,git,identify')
+%% tudscr-gitinfo.dtx  (with options: `identify,package')
+%% 
+%% TUD-Script -- Corporate Design of Technische Universitaet Dresden
+%%               2022/08/09 v2.06o TUD-Script
+%% 
+%% Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2022
+%%               https://github.com/tud-cd/tudscr
+%%               https://latex.wcms-file3.tu-dresden.de/phpBB3/
+%% 
+%% This file was generated from file(s) of the TUD-Script bundle.
+%% ----------------------------------------------------------------------------
+%% 
+%% This work may be distributed and/or modified under the conditions of the
+%% LaTeX Project Public License, either version 1.3c of this license or
+%% any later version. The latest version of this license is in
+%%   http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of
+%% LaTeX version 2008-05-04 or later.
+%% 
+%% This work has the LPPL maintenance status "maintained".
+%% 
+%% The current maintainer and author of this work is Falk Hanisch.
+%% 
+%%%% From File: tudscr-version.dtx (no git version info was found)
+\NeedsTeXFormat{LaTeX2e}[2022-06-01]
+\begingroup
+  \catcode`\@11\relax%
+  \ifx\TUD at Version\@undefined%
+    \newcommand*\TUD@@Version[2]{%
+      \gdef\TUD at Version{#1}%
+      \gdef\TUD at KOMAVersion{#2}%
+    }%
+  \else%
+    \newcommand*\TUD@@Version[2]{%
+      \def\@tempa{#1}%
+      \ifx\TUD at Version\@tempa\else%
+        \@latex at warning@no at line{%
+          \noexpand\TUD at Version\space is `\TUD at Version',\MessageBreak%
+          but `#1' was expected!\MessageBreak%
+          You should not use classes, packages or files from\MessageBreak%
+          different TUD-Script bundle versions%
+        }%
+      \fi%
+    }%
+  \fi%
+  \TUD@@Version{2022/08/09 v2.06o TUD-Script}{2022/05/01 v3.36 KOMA-Script}%
+  \ifx\TUDScriptVersion\@undefined%
+    \xdef\TUDScriptVersion{\TUD at Version}%
+    \def\@tempa#1 v#2 #3\relax#4\relax#5{\gdef#5{#2}}%
+    \expandafter\@tempa\TUD at Version ? ?\relax\relax{\TUDScriptVersionNumber}%
+    \expandafter\@tempa\TUD at KOMAVersion ? ?\relax\relax{\TUD at KOMAVersionNumber}%
+  \fi%
+\endgroup
+\@ifundefined{TUDScript}{%
+  \DeclareRobustCommand\TUDScript{%
+    \mbox{%
+      \textsf{%
+        T\kern.05em U\kern.05em D\kern.1em-\kern.1em Script%
+      }%
+    }\ifcsname xspace\endcsname\xspace\fi%
+  }%
+}{}
+\providecommand*\TUDScriptContact{hanisch.latex at outlook.com}
+\providecommand*\TUDScriptRepository{https://github.com/tud-cd/tudscr}
+\providecommand*\TUDScriptForum{https://latex.wcms-file3.tu-dresden.de/phpBB3/}
+%%%% From File: tudscr-gitinfo.dtx (no git version info was found)
+\def\GitContainerFile{tudscr-gitinfo-ver.aux}
+\ProvidesPackage{tudscr-gitinfo}[%
+  2022/08/09 v2.06o TUD-Script
+  package (obtaining git version)%
+]
+\ifcsname ver@\GitContainerFile\endcsname\else
+  \InputIfFileExists{\GitContainerFile}{}{}%
+\fi
+\def\GetFileInfo{\tud at GetFileInfo}
+\newcommand*\tud at git@file at list{}
+\newcommand*\tud at GetFileInfo[1]{%
+  \filename at parse{#1}%
+  \ifx\filename at ext\relax%
+    \edef\filename{\filename at area\filename at base.dtx}%
+    \expandafter\IfFileExists\expandafter{\filename}{}{%
+      \edef\filename{\filename at area\filename at base.tex}%
+    }%
+  \else%
+    \edef\filename{#1}%
+  \fi%
+  \expandafter\tud at git@log\expandafter{\filename}%
+  \ifcsname\filename-ver\endcsname%
+    \def\@tempa##1 ##2 ##3\@nil{%
+      \def\filedate{##1}%
+      \let\fileversion\@empty%
+      \def\filerevision{##3}%
+    }%
+    \edef\@tempb{\csname\filename-ver\endcsname}%
+    \expandafter\@tempa\@tempb\@nil%
+    \let\fileinfo\@empty%
+    \edef\tud at git@file at list{\tud at git@file at list,\filename}%
+  \else%
+    \PackageWarningNoLine{tudscr-gitinfo}{No git info found for \filename}%
+    \expandafter\tud@@GetFileInfo\expandafter{\filename}%
+  \fi%
+}
+\newcommand*\tud@@GetFileInfo[1]{%
+  \@ifundefined{filedate}{\def\filedate{?}}{}%
+  \@ifundefined{fileversion}{\def\fileversion{?}}{}%
+  \@ifundefined{filerevision}{\let\filerevision\@empty}{}%
+  \@ifundefined{fileinfo}{\let\fileinfo\@empty}{}%
+  \ifcsname ver@\filename\endcsname%
+    \def\@tempa##1 ##2 ##3\relax##4\relax{%
+      \def\@tempb####1\relax?####2\@nil{\edef\@tempc{####1}}%
+      \@tempb##1\relax?\@nil%
+      \ifx\@tempc\@empty\else%
+        \let\filedate\@tempc%
+        \@tempb##2\relax?\@nil%
+        \ifx\@tempc\@empty\else%
+          \let\fileversion\@tempc%
+          \@tempb##3\relax?\@nil%
+          \ifx\@tempc\@empty\else%
+            \let\fileinfo\@tempc%
+          \fi%
+        \fi%
+      \fi%
+    }%
+    \edef\@tempb{\csname ver@#1\endcsname}%
+    \expandafter\@tempa\@tempb\relax? ? \relax\relax%
+  \fi%
+}
+\RequirePackage{scrlfile}[%
+  2022/05/01 v3.36 KOMA-Script
+]
+\AfterPackage*{doc}{\def\GetFileInfo{\tud at GetFileInfo}}
+\RequirePackage{pdftexcmds}
+\newcommand*\tud at git@log[1]{%
+  \ifnum\pdf at shellescape=\@ne%
+    \begingroup%
+      \endlinechar=\m at ne%
+      \everyeof{\noexpand}%
+      \edef\@tempa{\tud at git@@log{#1}}%
+      \ifx\@tempa\@empty\else%
+        \edef\@tempa{%
+          \unexpanded{\expandafter\gdef\csname #1-ver\endcsname}{\@tempa}%
+        }%
+        \@tempa%
+      \fi%
+    \endgroup%
+  \fi%
+}
+\begingroup
+\@makeother\|
+\newcommand*\tud at git@@log[1]{}
+\xdef\tud at git@@log#1{%
+  \noexpand\@@input|"git log -1 %
+    --format='\@percentchar ad \@percentchar h' %
+    --date=format:'\@percentchar Y/\@percentchar m/\@percentchar d %
+      \@percentchar H:\@percentchar M:\@percentchar S' %
+    -- #1" %
+}
+\endgroup
+\AtEndDocument{%
+  \ifnum\pdf at shellescape=\@ne%
+    \ifx\tud at git@file at list\@empty\else%
+      \edef\tud at git@file at list{\expandafter\@gobble\tud at git@file at list}%
+      \def\@tempa{%
+        \@percentchar\@percentchar\space%
+        This file was generated with `tudscr-gitinfo.sty'^^J%
+        \@percentchar\@percentchar\space%
+        It is intended to be used for generating either a documentation^^J%
+        \@percentchar\@percentchar\space%
+        with class `tudscrdoc' or installation files with `docstrip'%
+      }%
+      \chardef\reserved at c15 %
+      \ch at ck7\reserved at c\write%
+      \immediate\openout\reserved at c\GitContainerFile\relax%
+      \immediate\write\reserved at c{\@tempa}%
+      \@for\@tempa:=\tud at git@file at list\do{%
+        \edef\@tempb{%
+          \unexpanded{\expandafter\gdef\csname}%
+          \@tempa-ver%
+          \noexpand\endcsname%
+          {\csname\@tempa-ver\endcsname}%
+        }%
+        \immediate\write\reserved at c{\unexpanded\expandafter{\@tempb}}%
+      }%
+      \immediate\closeout\reserved at c%
+    \fi%
+  \fi%
+}
+\AtEndOfPackage{%
+  \GetFileInfo{\jobname}%
+  \edef\@tempa{%
+    \filedate\space\fileversion\space%
+    \ifx\filerevision\@empty\else%
+      \filerevision\ifx\fileinfo\@empty\else\space\fi%
+    \fi%
+    \fileinfo%
+  }%
+  \ifcsname ver@\filename\endcsname%
+    \edef\@tempb{\csname ver@\filename\endcsname}%
+    \ifx\@tempb\filedate\else%
+      \PackageWarningNoLine{tudscr-gitinfo}{%
+        The obtained info for \filename\space is\MessageBreak%
+        \@tempa\MessageBreak%
+        so the current info\MessageBreak%
+        \csname ver@\filename\endcsname\MessageBreak%
+        is overwritten%
+      }%
+    \fi%
+  \fi%
+  \ProvidesFile{\filename}[\@tempa]%
+}
+\endinput
+%%
+%% End of file `tudscr-gitinfo.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/tudscr/tudscr-gitinfo.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/tudscr/tudscrartcl.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tudscr/tudscrartcl.cls	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/tex/latex/tudscr/tudscrartcl.cls	2022-08-09 20:01:54 UTC (rev 64085)
@@ -4,7 +4,7 @@
 %%
 %% The original source files were:
 %%
-%% tudscr-version.dtx  (with options: `class,article')
+%% tudscr-version.dtx  (with options: `class,article,identify')
 %% tudscr-base.dtx  (with options: `class,article,load')
 %% tudscr-base.dtx  (with options: `class,article,option')
 %% tudscr-fonts.dtx  (with options: `class,article,option')
@@ -25,15 +25,16 @@
 %% tudscr-layout.dtx  (with options: `class,article,body')
 %% tudscr-title.dtx  (with options: `class,article,body')
 %% tudscr-frontmatter.dtx  (with options: `class,article,body')
+%% tudscr-misc.dtx  (with options: `class,article,body')
 %% tudscr-comp.dtx  (with options: `class,article,body')
-%% tudscr-misc.dtx  (with options: `class,article,body')
 %% 
 %% TUD-Script -- Corporate Design of Technische Universitaet Dresden
+%%               2022/08/09 v2.06o TUD-Script
 %% 
-%%   2021/07/15 v2.06n TUD-Script
+%% Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2022
+%%               https://github.com/tud-cd/tudscr
+%%               https://latex.wcms-file3.tu-dresden.de/phpBB3/
 %% 
-%% Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2021
-%% 
 %% This file was generated from file(s) of the TUD-Script bundle.
 %% ----------------------------------------------------------------------------
 %% 
@@ -48,20 +49,17 @@
 %% 
 %% The current maintainer and author of this work is Falk Hanisch.
 %% 
-%%% From File: tudscr-version.dtx
+%%%% From File: tudscr-version.dtx (no git version info was found)
+\NeedsTeXFormat{LaTeX2e}[2022-06-01]
 \begingroup
-  \catcode`\@11\relax
-  \ifx\TUD at Version\@undefined
-    \newcommand*\TUD at Version@Check[1]{%
+  \catcode`\@11\relax%
+  \ifx\TUD at Version\@undefined%
+    \newcommand*\TUD@@Version[2]{%
       \gdef\TUD at Version{#1}%
-      \gdef\TUDScriptVersion{#1}%
-      \def\@tempb##1 v##2 ##3\relax##4\relax{\gdef\TUDScriptVersionNumber{##2}}%
-      \edef\@tempa{\TUD at Version}%
-      \expandafter\@tempb\@tempa\relax? ? \relax\relax%
-      \gdef\TUD at Version@KOMA{3.32}%
-    }
-  \else
-    \newcommand*\TUD at Version@Check[1]{%
+      \gdef\TUD at KOMAVersion{#2}%
+    }%
+  \else%
+    \newcommand*\TUD@@Version[2]{%
       \def\@tempa{#1}%
       \ifx\TUD at Version\@tempa\else%
         \@latex at warning@no at line{%
@@ -68,54 +66,63 @@
           \noexpand\TUD at Version\space is `\TUD at Version',\MessageBreak%
           but `#1' was expected!\MessageBreak%
           You should not use classes, packages or files from\MessageBreak%
-          different TUD-Script-Bundle versions%
+          different TUD-Script bundle versions%
         }%
       \fi%
-    }
-  \fi
-  \TUD at Version@Check{2021/07/15 v2.06n TUD-Script}
+    }%
+  \fi%
+  \TUD@@Version{2022/08/09 v2.06o TUD-Script}{2022/05/01 v3.36 KOMA-Script}%
+  \ifx\TUDScriptVersion\@undefined%
+    \xdef\TUDScriptVersion{\TUD at Version}%
+    \def\@tempa#1 v#2 #3\relax#4\relax#5{\gdef#5{#2}}%
+    \expandafter\@tempa\TUD at Version ? ?\relax\relax{\TUDScriptVersionNumber}%
+    \expandafter\@tempa\TUD at KOMAVersion ? ?\relax\relax{\TUD at KOMAVersionNumber}%
+  \fi%
 \endgroup
-\NeedsTeXFormat{LaTeX2e}[2019/10/01]
-\providecommand*\tudscrmail{hanisch.latex at outlook.com}
-\newcommand*\TUD at ProvidesClass[3]{%
+\@ifundefined{TUDScript}{%
+  \DeclareRobustCommand\TUDScript{%
+    \mbox{%
+      \textsf{%
+        T\kern.05em U\kern.05em D\kern.1em-\kern.1em Script%
+      }%
+    }\ifcsname xspace\endcsname\xspace\fi%
+  }%
+}{}
+\providecommand*\TUDScriptContact{hanisch.latex at outlook.com}
+\providecommand*\TUDScriptRepository{https://github.com/tud-cd/tudscr}
+\providecommand*\TUDScriptForum{https://latex.wcms-file3.tu-dresden.de/phpBB3/}
+\newcommand*\TUD at ProvidesClass[3]
+{%
   \ProvidesClass{#1}[%
-  2021/07/15 v2.06n TUD-Script
+  2022/08/09 v2.06o TUD-Script
     #3 (#2)%
   ]%
   \newcommand*\TUD at Class@KOMA{#2}%
   \ifx\TUD at Class@Parent\@undefined%
-    \newcommand*\TUD at Class@Name{#1}%
-    \TUD at Class@Info%
+  \newcommand*\TUD at Class@Name{#1}%
+  \newcommand*\TUDScriptClassName{#1}%
+  \providecommand*\TUDClassName{\TUDScriptClassName}%
+  \TUD at Class@Info%
   \fi%
 }
 \providecommand*\TUD at Class@Info{%
   \typeout{+------------------------------------------------------------------}%
   \typeout{| Corporate Design of Technische Universitaet Dresden}%
-  \typeout{| Class:      \TUD at Class@Name}%
-  \typeout{| Version:    \TUD at Version}%
-  \typeout{| Author:     Falk Hanisch (\tudscrmail)}%
-  \typeout{| Repository: https://github.com/tud-cd/tudscr}%
-  \typeout{| Forum:      https://latex.wcms-file3.tu-dresden.de}%
+  \typeout{| Class:      \TUDScriptClassName}%
+  \typeout{| Version:    \TUDScriptVersion}%
+  \typeout{| Author:     Falk Hanisch (\TUDScriptContact)}%
+  \typeout{| Repository: \TUDScriptRepository}%
+  \typeout{| Forum:      \TUDScriptForum}%
   \typeout{+------------------------------------------------------------------}%
 }
 \TUD at ProvidesClass{tudscrartcl}{scrartcl}{document class}
-\edef\TUDScriptClassName{\TUD at Class@Name}
-\providecommand*\TUDClassName{\TUDScriptClassName}
-\@ifundefined{TUDScript}{%
-  \DeclareRobustCommand\TUDScript{%
-    \textsf{%
-      T\kern.05em U\kern.05em D\kern.1em-\kern.1em Script%
-    }%
-    \ifcsname xspace\endcsname%
-      \xspace%
-    \fi%
-  }%
-}{}
-%%% From File: tudscr-base.dtx
-\RequirePackage{tudscrbase}[\TUD at Version]
+%%%% From File: tudscr-base.dtx (no git version info was found)
+\RequirePackage{tudscrbase}[%
+  2022/08/09 v2.06o TUD-Script
+]
 \renewcommand*\TUD at KOMAoptions[1]{\PassOptionsToClass{#1}{\TUD at Class@KOMA}}
 \AfterClass{\TUD at Class@KOMA}{\let\TUD at KOMAoptions\KOMAoptions}
-%%% From File: tudscr-base.dtx
+%%%% From File: tudscr-base.dtx (no git version info was found)
 \newcommand*\tud at komafont@set[2]{%
   \ifcsdef{tud at komafont@#1}{}{\addtokomafont{#1}{\csuse{tud at komafont@#1}}}%
   \csdef{tud at komafont@#1}{#2\nobreak}%
@@ -127,7 +134,13 @@
 \newcommand*\tud at komafont@reset[1]{%
   \ifcsdef{tud at komafont@#1}{\addtokomafont{#1}{\csuse{tud at komafont@#1}}}{}%
 }
-%%% From File: tudscr-fonts.dtx
+%%%% From File: tudscr-fonts.dtx (no git version info was found)
+\newcommand*\tud at catcodes@restore{}
+\edef\tud at catcodes@restore{%
+  \catcode`\noexpand\"\the\catcode`\"\relax%
+}%
+\@makeother\"%
+\AtEndOfClass{\tud at catcodes@restore}
 \PreventPackageFromLoading[%
   \ClassWarning{\TUD at Class@Name}{%
     The package `tudscrfonts' must not be used with\MessageBreak%
@@ -134,10 +147,10 @@
     a TUD-Script class%
   }%
 ]{tudscrfonts}
-\newif\if at tud@cdfont at active
-\newif\if at tud@cdfont at heavy
-\newif\if at tud@cdfont at ultrabold
-\newif\if at tud@cdfont at lining
+\tud at newif\if at tud@cdfont at active
+\tud at newif\if at tud@cdfont at heavy
+\tud at newif\if at tud@cdfont at ultrabold
+\tud at newif\if at tud@cdfont at lining
 \@tud at cdfont@liningtrue
 \TUD at key{cdfont}[true]{%
   \TUD at set@numkey{cdfont}{@tempa}{%
@@ -235,14 +248,11 @@
       \TUDoptions{cdhead=heavy}%
     \fi%
   \else%
-    \tud at lowerstring\tud at res@a{#1}%
-    \ifdimen{\tud at res@a}{%
-      \ifdim\tud at res@a>\z@\relax%
-        \TUDoptions{fontsize=#1}%
-        \tud at cdfont@activate%
-        \FamilyKeyStateProcessed%
-      \fi%
-    }{}%
+    \TUD at set@dimkey{cdfont}{\@tempa}{#1}%
+    \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+      \TUDoptions{fontsize=#1}%
+      \tud at cdfont@activate%
+    \fi%
   \fi%
 }
 \newcommand*\tud at cdfont@activate{%
@@ -263,8 +273,8 @@
   \tud at locked@bool at preset{@tud at cdmath@active}{false}%
   \TUD at SpecialOptionAtDocument{tud at math@set}%
 }
-\newif\if at tud@cdoldfont at active
-\newif\if at tud@cdoldfont at nodin
+\tud at newif\if at tud@cdoldfont at active
+\tud at newif\if at tud@cdoldfont at nodin
 \TUD at key{cdoldfont}[true]{%
   \TUD at set@numkey{cdoldfont}{@tempa}{%
     \TUD at bool@numkey,%
@@ -297,6 +307,7 @@
     \TUDoptions{cdfont=#1}%
   \fi%
 }
+\TUD at key{cdoldfonts}[true]{\TUDoptions{cdoldfont=#1}}
 \AtEndOfClass%
 {%
   \if at tud@cdoldfont at active%
@@ -323,13 +334,25 @@
     }%
   \fi%
 }
-\newif\if at tud@x at scr@fontsize at set
+\tud at newif\if at tud@x at scr@fontsize at set
 \TUD at key{fontsize}{%
-  \TUD at set@dimenkey{fontsize}{\@tempa}{#1}%
+  \TUD at set@dimkey{fontsize}{\@tempa}{#1}%
   \ifx\FamilyKeyState\FamilyKeyStateProcessed%
-    \@tud at x@scr at fontsize@settrue%
-    \TUD at KOMAoptions{fontsize=#1}%
+    \ifdim\@tempa<\p@\relax%
+      \FamilyKeyStateUnknownValue%
+    \else%
+      \@tud at x@scr at fontsize@settrue%
+      \TUD at KOMAoptions{fontsize=#1}%
+    \fi%
   \fi%
+  \ifx\FamilyKeyState\FamilyKeyStateUnknownValue%
+    \ClassWarningNoLine{\TUD at Class@Name}%
+    {%
+      The value for option `fontsize' must be a dimension\MessageBreak%
+      and at least 1pt but `#1' was given%
+    }%
+    \FamilyKeyStateProcessed%
+  \fi%
 }
 \AtEndOfClass%
 {%
@@ -336,6 +359,7 @@
   \RelaxFamilyKey{TUD}{fontsize}%
   \DefineFamilyMember{KOMA}%
   \DefineFamilyKey{KOMA}{fontsize}{%
+    \FamilyKeyStateUnknownValue%
     \@tud at x@scr at fontsize@settrue%
     \ClassWarning{\TUD at Class@Name}%
     {%
@@ -342,11 +366,10 @@
       The key `fontsize=#1' should only be\MessageBreak%
       used as class option%
     }%
-    \TUD at SpecialOptionAtDocument{tud at font@set}%
-    \FamilyKeyStateProcessed%
+    \TUD at SpecialOptionAtDocument{tud at relspacing@set}%
   }%
 }
-\newif\if at tud@relspacing
+\tud at newif\if at tud@relspacing
 \TUD at key{relspacing}[true]{%
   \TUD at set@numkey{relspacing}{@tempa}{%
     \TUD at bool@numkey,%
@@ -359,7 +382,7 @@
     \or% true
       \@tud at relspacingtrue%
     \fi%
-    \TUD at SpecialOptionAtDocument{tud at font@skip at set}%
+    \TUD at SpecialOptionAtDocument{tud at relspacing@set}%
   \fi%
 }
 \newcommand*\tud at ttfont@num{0}
@@ -432,13 +455,13 @@
 }
 \TUD at key{slantedGreek}[true]{\TUDoptions{slantedgreek=#1}}
 \TUD at key{slantedGreeks}[true]{\TUDoptions{slantedgreek=#1}}
-\newif\if at tud@lgrgreeks
+\tud at newif\if at tud@lgrgreeks
 \TUD at key{lgrgreeks}[true]{\TUD at set@ifkey{lgrgreeks}{@tud at lgrgreeks}{#1}}
 \TUD at key{lgrgreek}[true]{\TUDoptions{lgrgreeks=#1}}
 \TUD at key{LGRgreeks}[true]{\TUDoptions{lgrgreeks=#1}}
 \TUD at key{LGRgreek}[true]{\TUDoptions{lgrgreeks=#1}}
-%%% From File: tudscr-area.dtx
-\newif\if at tud@cdgeometry at reset
+%%%% From File: tudscr-area.dtx (no git version info was found)
+\tud at newif\if at tud@cdgeometry at reset
 \newcommand*\tud at cdgeometry@reset[1]{%
   \@tud at cdgeometry@resettrue%
   \TUDoptions{cdgeometry=#1}%
@@ -487,7 +510,7 @@
     \or% custom
       \tud at locked@num at set{tud at cdgeometry@num}{1}%
     \fi%
-    \if at atdocument%
+    \tud at if@preamble{}{%
       \if at tud@cdgeometry at reset\else% false
         \ifcase\tud at cdgeometry@num\relax%
           \tud at loadgeometry{current at typearea}%
@@ -498,34 +521,31 @@
         \fi%
         \TUD at SpecialOptionAtDocument{tud at cdgeometry@process}%
       \fi%
-    \fi%
+    }%
   \fi%
 }
-\newcommand*\tud at dim@extrabottommargin{\z@}
+\newcommand*\tud at extrabottommargin@dim{0pt}
 \TUD at key{extrabottommargin}{%
-  \TUD at set@dimenkey{extrabottommargin}{\tud at dim@extrabottommargin}{#1}%
+  \TUD at set@dimkey{extrabottommargin}{\tud at extrabottommargin@dim}{#1}%
   \ifx\FamilyKeyState\FamilyKeyStateProcessed%
     \TUD at SpecialOptionAtDocument{tud at cdgeometry@process}%
   \fi%
 }
-\newcommand*\tud at dim@bleedmargin{.2in}
+\newcommand*\tud at bleedmargin@dim{.2in}
 \TUD at key{bleedmargin}{%
-  \TUD at set@dimenkey{bleedmargin}{\tud at dim@bleedmargin}{#1}%
+  \TUD at set@dimkey{bleedmargin}{\tud at bleedmargin@dim}{#1}%
   \ifx\FamilyKeyState\FamilyKeyStateProcessed%
-    \ifdim\dimexpr\tud at dim@bleedmargin\relax<\z@\relax%
-      \def\@tempa-##1\@nil{\def\tud at dim@bleedmargin{##1}}%
-      \@tempa#1\@nil%
-    \fi%
+    \tud at length@setabsolute\tud at bleedmargin@dim%
   \fi%
 }
 \DefineFamilyMember{KOMA}
 \DefineFamilyKey{KOMA}{twoside}{%
+  \FamilyKeyStateUnknownValue%
   \TUD at SpecialOptionAtDocument{tud at cdgeometry@process}%
-  \FamilyKeyStateProcessed%
 }
 \DefineFamilyKey{KOMA}{twocolumn}{%
+  \FamilyKeyStateUnknownValue%
   \TUD at SpecialOptionAtDocument{tud at cdgeometry@process}%
-  \FamilyKeyStateProcessed%
 }
 \newcommand*\tud at x@typearea at warnings@off[1][]{%
   \IfArgIsEmpty{#1}{}{\let#1\@empty}%
@@ -532,17 +552,23 @@
   \tud at cs@store{PackageWarningNoLine}%
   \renewcommand*\PackageWarningNoLine[2]{%
     \@tud at res@swatrue%
-    \ifstr{##1}{typearea}{%
-      \ifstrstart{##2}{Bad type area settings!}{\@tud at res@swafalse}{}%
-      \ifstrstart{##2}{%
+    \tud at if@strequal{##1}{typearea}{%
+      \tud at if@strstart{##2}{%
+        Bad type area settings!%
+      }{\@tud at res@swafalse}{}%
+      \tud at if@strstart{##2}{%
         Maybe no optimal type area settings!%
       }{\@tud at res@swafalse}{}%
-      \ifstrstart{##2}{Very low DIV value!}{\@tud at res@swafalse}{}%
+      \tud at if@strstart{##2}{%
+        Very low DIV value!%
+      }{\@tud at res@swafalse}{}%
     }{}%
     \if at tud@res at swa%
-      \tud at cs@use{PackageWarning}{##1}{##2}%
+      \tud at cs@use{PackageWarningNoLine}{##1}{##2}%
     \else%
-      \IfArgIsEmpty{#1}{}{\listeadd#1{##2}}%
+      \IfArgIsEmpty{#1}{}{%
+        \listeadd#1{\noexpand\tud at cs@use{PackageWarningNoLine}{##1}{##2}}%
+      }%
     \fi%
   }%
 }
@@ -555,12 +581,75 @@
 \AfterPackage{typearea}{%
   \tud at x@typearea at warnings@on%
 }
-%%% From File: tudscr-pagestyle.dtx
+%%%% From File: tudscr-pagestyle.dtx (no git version info was found)
+\tud at newif\if at tud@ddc at internal
+\newcommand*\tud at comp@clearpage{}%
+\newcommand*\tud at comp@resetpagestyle{}%
+\newcommand*\tud at ddc@switch{}
+\edef\tud at ddc@switch{%
+  \TUD at bool@numkey,%
+  {color}{2},{colour}{2},{cdcolor}{2},{cdcolour}{2},%
+  {colorblack}{3},{colourblack}{3},{cdcolorblack}{3},{cdcolourblack}{3},%
+  {gray}{4},{grey}{4},{hks92}{4},{cdgray}{4},{cdgrey}{4},%
+  {black}{5},{cdblack}{5},%
+  {blue}{6},{hks41}{6},{cdblue}{6},{cddarkblue}{6},%
+  {white}{7},{cdwhite}{7}%
+}
+\tud at newif\if at tud@headlogo at option@set
+\tud at newif\if at tud@footlogo at option@set
+\tud at newif\if at tud@ddc at auto
+\newcommand*\tud at ddc@auto at num{0}
+\TUD at key{ddc}[true]{%
+  \tud at comp@clearpage%
+  \TUD at set@numkey{ddc}{tud at ddc@auto at num}{\tud at ddc@switch}{#1}%
+  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+    \if at tud@ddc at internal%
+      \@tud at ddc@autofalse%
+    \else%
+      \@tud at ddc@autotrue%
+      \@tud at ddc@internaltrue%
+      \TUDoptions{ddchead=false}%
+      \TUDoptions{ddcfoot=false}%
+      \@tud at ddc@internalfalse%
+    \fi%
+    \global\@tud at headlogo@option at settrue%
+    \global\@tud at footlogo@option at settrue%
+  \fi%
+  \tud at comp@resetpagestyle%
+}
+\newcommand*\tud at ddc@head at num{0}
+\TUD at key{ddchead}[true]{%
+  \tud at comp@clearpage%
+  \TUD at set@numkey{ddchead}{tud at ddc@head at num}{\tud at ddc@switch}{#1}%
+  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+    \if at tud@ddc at internal\else%
+      \@tud at ddc@internaltrue%
+      \TUDoptions{ddcfoot=false}%
+      \TUDoptions{ddc=false}%
+      \@tud at ddc@internalfalse%
+    \fi%
+  \fi%
+  \tud at comp@resetpagestyle%
+}
+\newcommand*\tud at ddc@foot at num{0}
+\TUD at key{ddcfoot}[true]{%
+  \tud at comp@clearpage%
+  \TUD at set@numkey{ddcfoot}{tud at ddc@foot at num}{\tud at ddc@switch}{#1}%
+  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+    \if at tud@ddc at internal\else%
+      \@tud at ddc@internaltrue%
+      \TUDoptions{ddchead=false}%
+      \TUDoptions{ddc=false}%
+      \@tud at ddc@internalfalse%
+    \fi%
+  \fi%
+  \tud at comp@resetpagestyle%
+}
 \tud at locked@newnum{tud at head@font at num}{0}
 \tud at locked@newnum{tud at head@bar at num}{0}
 \tud at locked@newbool{@tud at head@widebar}
-\newif\if at tud@head at font@set
-\newif\if at tud@head at date
+\tud at newif\if at tud@head at font@set
+\tud at newif\if at tud@head at date
 \TUD at key{cdhead}[true]{%
   \TUD at set@numkey{cdhead}{@tempa}{%
     \TUD at bool@numkey,%
@@ -649,8 +738,10 @@
       \tud at locked@bool at set{@tud at foot@colored}{true}%
     \fi%
   \else%
-    \tud at lowerstring\tud at res@a{#1}%
-    \ifdimen{\tud at res@a}{\TUDoptions{extrabottommargin=#1}}{}%
+    \TUD at set@dimkey{cdfoot}{\@tempa}{#1}%
+    \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+      \TUDoptions{extrabottommargin=#1}%
+    \fi%
   \fi%
 }
 \newcommand*\tud at ps@store[1]{%
@@ -687,87 +778,20 @@
   \tud at ps@@restore{#1}{even}{middle}{foot}%
 }
 \newcommand*\tud at ps@@restore[4]{%
-  \ifcsdef{@@tud at ps@#1@#2@#3@#4}{%
+  \ifcsundef{@@tud at ps@#1@#2@#3@#4}{}{%
     \csletcs{sls at ps@#1@#2@#3@#4}{@@tud at ps@#1@#2@#3@#4}%
     \csundef{@@tud at ps@#1@#2@#3@#4}%
-  }{}%
+  }%
 }
-\newcommand*\tud at dim@footlogoheight{}
-\let\tud at dim@footlogoheight\relax
+\newcommand*\tud at footlogoheight@dim{0pt}
 \TUD at key{footlogoheight}{%
-  \TUD at set@dimenkey{footlogoheight}{\tud at dim@footlogoheight}{#1}%
+  \TUD at set@dimkey{footlogoheight}{\tud at footlogoheight@dim}{#1}%
   \ifx\FamilyKeyState\FamilyKeyStateProcessed%
-    \ifdim\dimexpr\tud at dim@footlogoheight\relax<\z@\relax%
-      \def\@tempa-##1\@nil{\def\tud at dim@footlogoheight{##1}}%
-      \@tempa#1\@nil%
-    \fi%
+    \tud at length@setabsolute\tud at footlogoheight@dim%
     \global\@tud at footlogo@option at settrue%
   \fi%
 }
-\newif\if at tud@ddc at internal
-\newcommand*\tud at comp@clearpage{}%
-\newcommand*\tud at comp@resetpagestyle{}%
-\newcommand*\tud at ddc@switch{}
-\edef\tud at ddc@switch{%
-  \TUD at bool@numkey,%
-  {color}{2},{colour}{2},{cdcolor}{2},{cdcolour}{2},%
-  {colorblack}{3},{colourblack}{3},{cdcolorblack}{3},{cdcolourblack}{3},%
-  {gray}{4},{grey}{4},{hks92}{4},{cdgray}{4},{cdgrey}{4},%
-  {black}{5},{cdblack}{5},%
-  {blue}{6},{hks41}{6},{cdblue}{6},{cddarkblue}{6},%
-  {white}{7},{cdwhite}{7}%
-}
-\newif\if at tud@headlogo at option@set
-\newif\if at tud@footlogo at option@set
-\newif\if at tud@ddc at auto
-\newcommand*\tud at ddc@auto at num{0}
-\TUD at key{ddc}[true]{%
-  \tud at comp@clearpage%
-  \TUD at set@numkey{ddc}{tud at ddc@auto at num}{\tud at ddc@switch}{#1}%
-  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
-    \if at tud@ddc at internal%
-      \@tud at ddc@autofalse%
-    \else%
-      \@tud at ddc@autotrue%
-      \@tud at ddc@internaltrue%
-      \TUDoptions{ddchead=false}%
-      \TUDoptions{ddcfoot=false}%
-      \@tud at ddc@internalfalse%
-    \fi%
-    \global\@tud at headlogo@option at settrue%
-    \global\@tud at footlogo@option at settrue%
-  \fi%
-  \tud at comp@resetpagestyle%
-}
-\newcommand*\tud at ddc@head at num{0}
-\TUD at key{ddchead}[true]{%
-  \tud at comp@clearpage%
-  \TUD at set@numkey{ddchead}{tud at ddc@head at num}{\tud at ddc@switch}{#1}%
-  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
-    \if at tud@ddc at internal\else%
-      \@tud at ddc@internaltrue%
-      \TUDoptions{ddcfoot=false}%
-      \TUDoptions{ddc=false}%
-      \@tud at ddc@internalfalse%
-    \fi%
-  \fi%
-  \tud at comp@resetpagestyle%
-}
-\newcommand*\tud at ddc@foot at num{0}
-\TUD at key{ddcfoot}[true]{%
-  \tud at comp@clearpage%
-  \TUD at set@numkey{ddcfoot}{tud at ddc@foot at num}{\tud at ddc@switch}{#1}%
-  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
-    \if at tud@ddc at internal\else%
-      \@tud at ddc@internaltrue%
-      \TUDoptions{ddchead=false}%
-      \TUDoptions{ddc=false}%
-      \@tud at ddc@internalfalse%
-    \fi%
-  \fi%
-  \tud at comp@resetpagestyle%
-}
-%%% From File: tudscr-layout.dtx
+%%%% From File: tudscr-layout.dtx (no git version info was found)
 \newcommand*\tud at cd@switch{}
 \edef\tud at cd@switch{%
   \TUD at bool@numkey,%
@@ -794,13 +818,13 @@
     \TUD at key@preset{cdpart}{#1}%
     \TUD at key@preset{cdsection}{#1}%
     \TUD at SpecialOptionAtDocument{tud at cd@process}%
-    \if at atdocument\else%
+    \tud at if@preamble{%
       \ifcase\tud at cd@num\relax% false
         \tud at locked@num at preset{tud at cdgeometry@num}{0}%
       \else% !false
         \tud at locked@num at preset{tud at cdgeometry@num}{2}%
       \fi%
-    \fi%
+    }{}%
   \fi%
 }
 \newcommand*\tud at cd@cover at num{0}
@@ -832,19 +856,28 @@
   \fi%
 }
 \newcommand*\tud at pagecolor{}%
-\newcommand*\tud at dim@pageheadingsvskip{0pt}
-\TUD at key{pageheadingsvskip}{%
-  \TUD at set@dimenkey{pageheadingsvskip}{\tud at dim@pageheadingsvskip}{#1}%
+\AfterPackage{xcolor}{%
+  \apptocmd\normalcolor{%
+    \tud at if@strequal{\tud at pagecolor}{HKS41}{\color{white}}{}%
+  }{}{\tud at patch@wrn{normalcolor}}%
+  \AtBeginDocument{%
+    \ifdefvoid{\tud at pagecolor}{}{\sbox\z@{\color{\tud at pagecolor}}}%
+    \normalcolor%
+  }%
 }
-\newcommand*\tud at dim@headingsvskip{0pt}
+\newcommand*\tud at headingsvskip@dim{0pt}
 \TUD at key{headingsvskip}{%
-  \TUD at set@dimenkey{headingsvskip}{\tud at dim@headingsvskip}{#1}%
+  \TUD at set@dimkey{headingsvskip}{\tud at headingsvskip@dim}{#1}%
 }
-\newif\if at tud@heavyheadings
+\newcommand*\tud at pageheadingsvskip@dim{\tud at headingsvskip@dim}
+\TUD at key{pageheadingsvskip}{%
+  \TUD at set@dimkey{pageheadingsvskip}{\tud at pageheadingsvskip@dim}{#1}%
+}
+\tud at newif\if at tud@heavyheadings
 \TUD at key{headings}{%
   \TUD at set@numkey{headings}{@tempa}{%
     {light}{0},{lightfont}{0},{lite}{0},{litefont}{0},{noheavyfont}{0},%
-    {normal}{0},{standard}{0},{std}{0},{normalbold}{0},{boldnormal}{0},%
+    {standard}{0},{std}{0},{normalbold}{0},{boldnormal}{0},%
     {heavy}{1},{heavyfont}{1},{bold}{1},{boldfont}{1},%
     {ultrabold}{1},{boldultra}{1},{heavybold}{1},{boldheavy}{1},%
     {extendedbold}{1},{boldextended}{1}%
@@ -859,19 +892,19 @@
 }
 \DefineFamilyMember{KOMA}
 \DefineFamilyKey{KOMA}{headings}{%
+  \FamilyKeyStateUnknownValue%
   \TUD at SpecialOptionAtDocument{tud at x@scr at headings@reset}%
-  \FamilyKeyStateProcessed%
 }
-%%% From File: tudscr-title.dtx
-\newif\if at tud@subjectthesis
+%%%% From File: tudscr-title.dtx (no git version info was found)
+\tud at newif\if at tud@subjectthesis
 \TUD at key{subjectthesis}[true]{%
   \TUD at set@ifkey{subjectthesis}{@tud at subjectthesis}{#1}%
 }
-\newif\if at tud@titlesignature
+\tud at newif\if at tud@titlesignature
 \TUD at key{titlesignature}[true]{%
   \TUD at set@ifkey{titlesignature}{@tud at titlesignature}{#1}%
 }
-%%% From File: tudscr-frontmatter.dtx
+%%%% From File: tudscr-frontmatter.dtx (no git version info was found)
 \newcommand*\tud at fm@switch{%
   {section}{2},{sect}{2},{sec}{2},{addsec}{2},%
   {new}{2},{standard}{2},{heading}{2},%
@@ -890,11 +923,11 @@
 }
 \newcommand*\tud at abstract@level at num{0}
 \tud at locked@newnum{tud at abstract@toc at num}{0}
-\newif\if at tud@abstract at multi
+\tud at newif\if at tud@abstract at multi
 \@tud at abstract@multitrue
-\newif\if at tud@abstract at fil
+\tud at newif\if at tud@abstract at fil
 \@tud at abstract@filtrue
-\newif\if at tud@abstract at markboth
+\tud at newif\if at tud@abstract at markboth
 \TUD at key{abstract}[true]{%
   \edef\@tempb{\TUD at bool@numkey,\tud at fm@switch}%
   \TUD at set@numkey{abstract}{@tempa}{\@tempb}{#1}%
@@ -951,15 +984,16 @@
 }
 \DefineFamilyMember{KOMA}
 \DefineFamilyKey{KOMA}{abstract}[true]{%
+  \FamilyKeyStateUnknownValue%
   \AtEndOfFamilyOptions{\TUDoptions{abstract=#1}}%
 }
 \newcommand*\tud at declaration@level at num{1}
 \tud at locked@newnum{tud at declaration@toc at num}{0}
-\newif\if at tud@declaration at multi
+\tud at newif\if at tud@declaration at multi
 \@tud at declaration@multitrue
-\newif\if at tud@declaration at fil
+\tud at newif\if at tud@declaration at fil
 \@tud at declaration@filtrue
-\newif\if at tud@declaration at markboth
+\tud at newif\if at tud@declaration at markboth
 \TUD at key{declaration}[true]{%
   \edef\@tempb{\TUD at bool@numkey,\tud at fm@switch}%
   \TUD at set@numkey{declaration}{@tempa}{\@tempb}{#1}%
@@ -1014,8 +1048,8 @@
     \fi%
   \fi%
 }
-%%% From File: tudscr-misc.dtx
-\newif\if at tud@bookmarks
+%%%% From File: tudscr-misc.dtx (no git version info was found)
+\tud at newif\if at tud@bookmarks
 \TUD at key{tudbookmarks}[true]{%
   \TUD at set@ifkey{tudbookmarks}{@tud at bookmarks}{#1}%
 }
@@ -1025,7 +1059,7 @@
 }
 \newcommand*\tud at x@scr at pt{}
 \def\tud at x@scr at pt #1pt#2\@nil{%
-  \ifstr{#2}{pt}{\ifnumber{#1}{\@tud at x@scr at fontsize@settrue}{}}{}%
+  \tud at if@strequal{#2}{pt}{\Ifnumber{#1}{\@tud at x@scr at fontsize@settrue}{}}{}%
 }
 \newcommand*\tud at atdocument@hook{}
 \let\tud at atdocument@hook\relax
@@ -1042,7 +1076,7 @@
     \gappto\tud at atdocument@hook{\global\booltrue{@#1}}%
   }%
 }
-%%% From File: tudscr-comp.dtx
+%%%% From File: tudscr-comp.dtx (no git version info was found)
 \newcommand*\TUD at deprecated@key[2]{%
   \ClassWarning{\TUD at Class@Name}%
   {%
@@ -1093,16 +1127,23 @@
     \tud at res@c%
   }{}%
 }
-\newcommand*\TUD at deprecated@lengthcs[2][]{%
-  \ifdim\csuse{#2}<\maxdimen\relax%
-    \ClassWarning{\TUD at Class@Name}{%
-      Using the length `\@backslashchar#2' is deprecated. \MessageBreak%
-      You should use option `#2' instead%
-    }%
-    \csxdef{tud at dim@#2}{\the\csuse{#2}}%
-    \expandafter\setlength\csname #2\endcsname{\maxdimen}%
-    \global\csuse{#2}=\csuse{#2}%
-    #1%
+\newcommand*\TUD at deprecated@length[1]{%
+  \ifdim#1<\maxdimen\relax%
+    \begingroup%
+      \tud at strlength\tud at res@a{#1}%
+      \edef\tud at res@b{\expandafter\@gobble\string#1}%
+      \ClassWarning{\TUD at Class@Name}{%
+        Setting length `\string#1' is deprecated. \MessageBreak%
+        The option `\tud at res@b=\tud at res@a'\MessageBreak%
+        is used instead%
+      }%
+      \edef\tud at res@a{%
+        \endgroup%
+        \noexpand\TUDoption{\tud at res@b}{\tud at res@a}%
+        \global\noexpand\csletcs{tud@\tud at res@b @dim}{tud@\tud at res@b @dim}%
+      }%
+    \tud at res@a%
+    \global\setlength#1{\maxdimen}%
   \fi%
 }
 \newcommand*\tud at v@comp{\tud at v@last}
@@ -1130,75 +1171,28 @@
 {%
   \RelaxFamilyKey[.comp]{TUD}{tudscrver}%
   \TUD at key@toolate{tudscrver}%
-  \ifcsdef{scr at v@\TUD at Version@KOMA}{%
-    \ifnum\scr at compatibility<\csuse{scr at v@3.12}\relax%
-      \ClassError{\TUD at Class@Name}{%
-        KOMA-Script compatibility level too low%
-      }{%
-        \TUD at Version\space must be used at least with\MessageBreak%
-        `version=3.12' KOMA-Script compatibility option.%
-      }%
-    \fi%
-  }{%
-    \ClassError{\TUD at Class@Name}{%
-      KOMA-Script v\TUD at Version@KOMA is required%
-    }{%
-      \TUD at Version\space must at least be used with\MessageBreak%
-      KOMA-Script v\TUD at Version@KOMA, but \KOMAScriptVersion was found.%
-    }%
-  }%
 }
 \csdef{tud at v@first}{0}
 \csdef{tud at v@2.00}{0}
 \csdef{tud at v@2.01}{0}
-\csdef{tud at v@2.01a}{0}
-\csdef{tud at v@2.01b}{0}
 \csdef{tud at v@2.02}{0}
 \csdef{tud at v@2.03}{1}
-\csdef{tud at v@2.03a}{1}
 \csdef{tud at v@2.04}{2}
-\csdef{tud at v@2.04a}{2}
-\csdef{tud at v@2.04b}{2}
-\csdef{tud at v@2.04c}{2}
-\csdef{tud at v@2.04d}{2}
-\csdef{tud at v@2.04e}{2}
 \csdef{tud at v@2.05}{3}
-\csdef{tud at v@2.05a}{3}
-\csdef{tud at v@2.05b}{3}
-\csdef{tud at v@2.05c}{3}
-\csdef{tud at v@2.05d}{3}
-\csdef{tud at v@2.05e}{3}
-\csdef{tud at v@2.05f}{3}
-\csdef{tud at v@2.05g}{3}
-\csdef{tud at v@2.05h}{3}
-\csdef{tud at v@2.05i}{3}
-\csdef{tud at v@2.05k}{3}
-\csdef{tud at v@2.05l}{3}
-\csdef{tud at v@2.05m}{3}
 \csdef{tud at v@2.06}{4}
-\csdef{tud at v@2.06a}{4}
-\csdef{tud at v@2.06b}{4}
-\csdef{tud at v@2.06c}{4}
-\csdef{tud at v@2.06d}{4}
-\csdef{tud at v@2.06e}{4}
-\csdef{tud at v@2.06f}{4}
-\csdef{tud at v@2.06g}{4}
-\csdef{tud at v@2.06h}{4}
-\csdef{tud at v@2.06i}{4}
-\csdef{tud at v@2.06j}{4}
-\csdef{tud at v@2.06k}{4}
-\csdef{tud at v@2.06l}{4}
-\csdef{tud at v@2.06m}{4}
-\csdef{tud at v@2.06n}{4}
 \csdef{tud at v@last}{4}
 \newcommand*\tud at v@get[2]{%
   \begingroup%
-    \def\@tempa{\kernel at ifnextchar v{\@tempb}{\@tempb v}}%
+    \def\@tempa{%
+      \kernel at ifnextchar v%
+        {\@tempb}%
+        {\@tempb v}%
+    }%
     \def\@tempb v##1\@nil{\def\@tempc{##1}}%
     \@tempa #2\@nil%
     \edef\tud at reserved{%
       \endgroup%
-      \etex at unexpanded{\def#1}{\@tempc}%
+      \unexpanded{\def#1}{\@tempc}%
     }%
   \tud at reserved%
 }
@@ -1205,13 +1199,7 @@
 \newcommand*\tud at if@v at lower[1]{%
   \begingroup%
     \tud at v@get\@tempa{#1}%
-    \ifcsdef{tud at v@\@tempa}{%
-      \ifnum\tud at v@comp<\csuse{tud at v@\@tempa}\relax%
-        \def\tud at reserved{\endgroup\@firstoftwo}%
-      \else%
-        \def\tud at reserved{\endgroup\@secondoftwo}%
-      \fi%
-    }{%
+    \ifcsundef{tud at v@\@tempa}{%
       \def\tud at reserved{%
         \ClassWarningNoLine{\TUD at Class@Name}%
         {%
@@ -1220,6 +1208,12 @@
         }%
         \endgroup\@firstoftwo%
       }%
+    }{%
+      \ifnum\tud at v@comp<\csuse{tud at v@\@tempa}\relax%
+        \def\tud at reserved{\endgroup\@firstoftwo}%
+      \else%
+        \def\tud at reserved{\endgroup\@secondoftwo}%
+      \fi%
     }%
   \tud at reserved%
 }
@@ -1362,7 +1356,7 @@
   \fi%
 }
 \TUD at key{colour}[true]{\TUDoptions{color=#1}}
-\newif\if at tud@x at fontspec@requested
+\tud at newif\if at tud@x at fontspec@requested
 \TUD at key{fontspec}[true]{%
   \TUD at set@ifkey{fontspec}{@tud at x@fontspec at requested}{#1}%
   \ifx\FamilyKeyState\FamilyKeyStateProcessed%
@@ -1377,12 +1371,12 @@
 {%
   \TUD at key@toolate{fontspec}%
   \if at tud@x at fontspec@requested%
-    \RequirePackage{fontspec}[2017/01/24]%
+    \RequirePackage{fontspec}
   \fi%
 }
-%%% From File: tudscr-misc.dtx
+%%%% From File: tudscr-misc.dtx (no git version info was found)
 \DeclareOption*{}
-\FamilyProcessOptions[.comp]{TUD}\relax
+\TUDProcessOptions[.comp]\relax
 \tud at if@v at lower{2.05}{%
   \TUD at key@preset{relspacing}{false}%
 }{%
@@ -1397,34 +1391,36 @@
   \TUD at key@preset{ttfont}{roboto}%
   \TUD at key@preset{headings}{heavy}%
 }
-\DeclareOption*{\tud at x@scr at checkoptions}
 \TUDExecuteOptions{%
   cd=true,tudbookmarks=true%
 }
+\DeclareOption*{\tud at x@scr at checkoptions}
 \TUDProcessOptions\relax
-\LoadClass{\TUD at Class@KOMA}[2020/09/21]
+\LoadClass{\TUD at Class@KOMA}[%
+  2022/05/01 v3.36 KOMA-Script
+]
 \newcommand*\TUD at key@toolate[1]{%
-  \csedef{tud at key@#1 at error}{%
+  \csedef{tud at key@toolate@@#1}{%
     \noexpand\ClassError{\noexpand\TUD at Class@Name}%
     {Option `#1' too late}{%
       Option `#1' can only be set\space%
-      \ifcsname \@currname.\@currext-h@@k\endcsname%
+      \ifcsdef{\@currname.\@currext-h@@k}{%
         as optional \MessageBreak argument while loading\space%
         class `\noexpand\TUD at Class@Name'%
-      \else%
-        in the preamble
-      \fi%
+      }{%
+        in the preamble%
+      }%
       \MessageBreak but you have tried to set it up later.%
     }%
   }%
-  \TUD at key{#1}[]%
+  \TUD at key[]{#1}[]%
   {%
-    \csuse{tud at key@#1 at error}
+    \csuse{tud at key@toolate@@#1}%
     \FamilyKeyStateProcessed%
   }%
 }
-%%% From File: tudscr-base.dtx
-\RequirePackage{environ}[2013/04/01]
+%%%% From File: tudscr-base.dtx (no git version info was found)
+\RequirePackage{environ}
 \newcommand*\tud at x@multicol at num{1}
 \newcommand*\tud at x@multicol at check{%
   \ifnum\tud at x@multicol at num>\@ne\relax%
@@ -1444,14 +1440,16 @@
         which now will be loaded automatically%
       }%
     }{}%
-    \RequirePackage{graphicx}[1999/02/16]%
+    \RequirePackage{graphicx}
   }%
-  \RequirePackage{tudscrcolor}[\TUD at Version]%
+  \RequirePackage{tudscrcolor}[%
+  2022/08/09 v2.06o TUD-Script
+  ]%
 }
-%%% From File: tudscr-fonts.dtx
+%%%% From File: tudscr-fonts.dtx (no git version info was found)
 \newcommand*\tud at cdfont@wrn{\global\let\tud at cdfont@wrn\relax}
 \newcommand*\tud at cdmath@wrn{\global\let\tud at cdmath@wrn\relax}
-\newif\if at tud@x at fontspec@enabled
+\tud at newif\if at tud@x at fontspec@enabled
 \PassOptionsToPackage{no-math}{fontspec}
 \AfterPackage*{fontspec}{%
   \@ifpackagelater{fontspec}{2017/01/24}{%
@@ -1490,11 +1488,9 @@
     }%
   }%
 }
-\TUD at RecommendPackage{mweights}[2017/03/30]%
-\newif\if at tud@x at mweights@enabled
+\TUD at RecommendPackage{mweights}
+\tud at newif\if at tud@x at mweights@enabled
 \AfterPackage*{mweights}{\@tud at x@mweights at enabledtrue}
-\newif\if at tud@cdfont at fam@exist
-\newif\if at tud@cdfont at db@exist
 \newcommand*\tud at cdfont@fam{opensans-TLF}
 \newcommand*\tud at cdfont@fam at lf{opensans-TLF}
 \newcommand*\tud at cdfont@fam at osf{opensans-TOsF}
@@ -1507,12 +1503,17 @@
 \newcommand*\tud at ttfont@fam{tudtt}
 \newcommand*\tud at ttfont@rb{tudtt}
 \newcommand*\tud at ttfont@lm{lmtt}
-\newif\if at tud@ttfont at rb@exist
+\tud at newif\if at tud@ttfont at rb@exist
 \IfFileExists{roboto-mono.sty}{%
   \@tud at ttfont@rb at existtrue%
 }{%
   \TUD at key@preset{ttfont}{lmodern}%
 }
+\tud at newif\if at tud@cdfont at fam@exist
+\tud at newif\if at tud@cdfont at db@exist
+\tud at newif\if at tud@cdmath at fam@exist
+\tud at newif\if at tud@cdmath at db@exist
+\newcommand*\tud at x@mathastext at enc{OT1}
 \newcommand*\tud at cdfont@check{%
   \if at tud@cdoldfont at active%
     \tud at cdfont@@check{Univers}{%
@@ -1520,8 +1521,8 @@
       LightOblique,Oblique,BoldOblique,BlackOblique%
     }{\tud at cdfont@fam at lf}{@tud at cdfont@fam at exist}%
     \tud at cdfont@@check{DIN}{Bold}{\tud at cdfont@db}{@tud at cdfont@db at exist}%
-    \tud at cdfont@@@check{OT1,OML,OMS}{\tud at cdfont@fam at lf}%
-    \tud at cdfont@@@check{OT1,OML,OMS}{\tud at cdfont@db}%
+    \tud at cdfont@@@check{OT1,OML,OMS}{\tud at cdfont@fam at lf}{@tud at cdmath@fam at exist}%
+    \tud at cdfont@@@check{OT1,OML,OMS}{\tud at cdfont@db}{@tud at cdmath@db at exist}%
   \else%
     \@ifpackageloaded{opensans}{%
       \ClassWarningNoLine{\TUD at Class@Name}%
@@ -1538,6 +1539,17 @@
       Light,Regular,SemiBold,Bold,ExtraBold,%
       LightItalic,Italic,SemiBoldItalic,BoldItalic,ExtraBoldItalic%
     }{\tud at cdfont@fam at lf,\tud at cdfont@fam at osf}{@tud at cdfont@fam at exist}%
+    \@expandtwoargs\in@{,\encodingdefault,}{,OT1,T1,TU,EU1,EU2,}%
+    \ifin@%
+      \let\tud at x@mathastext at enc\encodingdefault%
+      \@expandtwoargs\in@{,\tud at x@mathastext at enc,}{,TU,EU1,EU2,}%
+      \ifin@%
+        \@tud at cdmath@fam at existtrue%
+      \else%
+        \tud at cdfont@@@check{\tud at x@mathastext at enc}%
+          {\tud at cdfont@fam at lf}{@tud at cdmath@fam at exist}%
+      \fi%
+    \fi%
   \fi%
 }
 \newcommand*\tud at cdfont@@check[5][-]{%
@@ -1572,7 +1584,7 @@
     \boolfalse{#5}%
   \fi%
 }
-\newcommand*\tud at cdfont@@@check[2]{%
+\newcommand*\tud at cdfont@@@check[3]{%
   \@tud at res@swatrue%
   \def\tud at res@a##1##2{%
     \@tud at res@swafalse%
@@ -1589,7 +1601,10 @@
     }%
   }%
   \@for\tud at res@c:={#1}\do{\tud at res@b{\tud at res@c}{#2}}%
-  \if at tud@res at swa\else%
+  \if at tud@res at swa%
+    \booltrue{#3}%
+  \else%
+    \boolfalse{#3}%
     \AtBeginDocument{%
       \if at tud@cdmath at active%
         \ClassWarningNoLine{\TUD at Class@Name}%
@@ -1597,8 +1612,12 @@
           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
+          \if at tud@cdoldfont at active%
+            all necessary fonts with a installation script\MessageBreak%
+            listed in the manual%
+          \else%
+            package `opensans'%
+          \fi%
         }%
       \fi%
       \TUDoptions{cdmath=false}%
@@ -1612,7 +1631,7 @@
       not found for `#1' encoding. \MessageBreak%
     }%
     \if at tud@x at fontspec@enabled%
-      \ifstr{\encodingdefault}{#1}{%
+      \tud at if@strequal{#1}{\encodingdefault}{%
         \appto\tud at res@a{%
           It seems, you haven't installed the required\MessageBreak%
           OTF-font on your system. You should provide\MessageBreak%
@@ -1630,7 +1649,7 @@
       \fi%
       \@tud at res@swafalse%
       \@for\tud at res@c:=\tud at res@b\do{%
-        \ifstr{\tud at res@c}{#1}{\@tud at res@swatrue}{}%
+        \tud at if@strequal{#1}{\tud at res@c}{\@tud at res@swatrue}{}%
       }%
       \if at tud@res at swa%
         \appto\tud at res@a{%
@@ -1644,8 +1663,8 @@
           . \MessageBreak%
         }%
       \else%
-        \ifstr{\encodingdefault}{#1}{%
-          \ifstr{TU}{#1}{%
+        \tud at if@strequal{#1}{\encodingdefault}{%
+          \tud at if@strequal{#1}{TU}{%
             \appto\tud at res@a{%
               You should either load package `fontspec'\MessageBreak%
               or %
@@ -1662,40 +1681,12 @@
     \fi%
     \appto\tud at res@a{A fallback layout is used}%
     \edef\tud at res@c{%
-      \etex at unexpanded{\ClassWarning{\TUD at Class@Name}}%
-        {\tud at res@a}
+      \unexpanded{\ClassWarningNoLine{\TUD at Class@Name}}%
+        {\tud at res@a}%
     }%
     \xappto#3{\expandonce\tud at res@c}%
   \endgroup%
 }
-\begingroup
-\catcode`\^=7
-\catcode30=12
-\catcode`\!=12
-\edef\tud at reserved{\@gobble^^^^0021}
-\expandafter\endgroup
-\ifx\tud at 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
-\newcommand*\tud at raggedright{\raggedright}
-\newcommand*\tud at RaggedRight{\raggedright}
-\AfterPackage*{ragged2e}{%
-  \ifundef{\LaTeXraggedright}{}{%
-    \renewcommand*\tud at raggedright{\LaTeXraggedright}%
-  }%
-  \renewcommand*\tud at RaggedRight{\RaggedRight}%
-}
-\newif\if at tud@x at siunitx@enabled
-\AfterAtEndOfPackage*{siunitx}{%
-  \@tud at x@siunitx at enabledtrue%
-  \providecommand*\lseries{\fontseries{l}\selectfont}%
-}
-\newif\if at tud@x at bm@requested
-\PreventPackageFromLoading[\@tud at x@bm at requestedtrue]{bm}
 \newcommand*\tud at x@fontspec at init[2]{%
   \begingroup%
     \edef\tud at res@a{%
@@ -1725,7 +1716,7 @@
     }%
     \edef\tud at res@a{%
       \endgroup%
-      \noexpand\DeclareRobustCommand%
+      \noexpand\renewrobustcmd*%
           \expandafter\noexpand\csname #1family\endcsname{%
         \expandafter\noexpand\csname tud at x@fontspec at fam@#2\endcsname%
       }%
@@ -1733,8 +1724,9 @@
     }%
   \tud at res@a%
 }
-\newcommand*\tud at font@set{%
+\newcommand*\tud at font@set[1][\tud at cdfont@wrn]{%
   \if at tud@cdfont at active%
+    #1%
     \tud at cs@store{rmdefault}%
     \tud at cs@store{sfdefault}%
     \tud at cs@store{ttdefault}%
@@ -1759,13 +1751,6 @@
       \tud at cs@store{sffamily}%
       \tud at cs@store{ttfamily}%
     \fi%
-    \renewcommand*\rmdefault{\sfdefault}%
-    \renewcommand*\updefault{n}%
-    \renewcommand*\itdefault{it}%
-    \renewcommand*\sldefault{sl}%
-    \renewcommand*\familydefault{\sfdefault}%
-    \renewcommand*\seriesdefault{\mddefault}%
-    \renewcommand*\shapedefault{\updefault}%
     \tud at cdfont@set%
     \tud at cdfont@symbols at set%
     \tud at ttfont@set%
@@ -1814,12 +1799,19 @@
     \edef\mddef at ult{\mddefault}%
     \edef\famdef at ult{\familydefault}%
   \fi%
-  \tud at font@skip at set%
+  \tud at relspacing@set%
   \normalfont\selectfont%
   \tud at cd@process%
   \global\@tud at head@font at settrue%
 }
 \newcommand*\tud at cdfont@set{%
+  \renewcommand*\rmdefault{\sfdefault}%
+  \renewcommand*\updefault{n}%
+  \renewcommand*\itdefault{it}%
+  \renewcommand*\sldefault{sl}%
+  \renewcommand*\familydefault{\sfdefault}%
+  \renewcommand*\seriesdefault{\mddefault}%
+  \renewcommand*\shapedefault{\updefault}%
   \if at tud@cdfont at fam@exist%
     \if at tud@cdfont at lining%
       \let\tud at cdfont@fam\tud at cdfont@fam at lf%
@@ -1833,7 +1825,6 @@
     \fi%
     \tud at cdfont@@set%
   \fi%
-  \tud at cdfont@wrn%
 }
 \newcommand*\tud at cdfont@md{m}
 \newcommand*\tud at cdfont@bf{b}
@@ -1901,7 +1892,7 @@
   \tud at res@a%
   \expandafter\robustify\csname tud at cdfont@symbol@#1\endcsname%
 }
-\newtoks\tud at cdfont@symbols at toks
+\tud at newtoks\tud at cdfont@symbols at toks
 \newcommand*\tud at cdfont@symbols at set{%
   \expandafter\IfArgIsEmpty\expandafter{\the\tud at cdfont@symbols at toks}{%
     \forlistloop\tud at cdfont@symbols at set@cmd\tud at cdfont@symb at list%
@@ -1922,35 +1913,57 @@
   \tud at cdfont@declare at symb{textlangle}{TS1}{iwona}{60}%
   \tud at cdfont@declare at symb{textrangle}{TS1}{iwona}{62}%
 }
-\newcommand*\tud at font@skip at set{%
+\newcommand*\tud at relspacing@set{%
   \if at tud@relspacing%
-    \tud at skip@store{smallskipamount}%
-    \tud at skip@store{medskipamount}%
-    \tud at skip@store{bigskipamount}%
-    \tud at skip@store{abovecaptionskip}%
-    \tud at skip@store{belowcaptionskip}%
-    \tud at skip@store{columnsep}%
-    \tud at font@skip@@set%
+    \tud at cslength@store{smallskipamount}%
+    \tud at cslength@store{medskipamount}%
+    \tud at cslength@store{bigskipamount}%
+    \tud at cslength@store{abovecaptionskip}%
+    \tud at cslength@store{belowcaptionskip}%
+    \tud at cslength@store{columnsep}%
+    \tud at relspacing@@set%
   \else%
-    \tud at skip@restore{smallskipamount}%
-    \tud at skip@restore{medskipamount}%
-    \tud at skip@restore{bigskipamount}%
-    \tud at skip@restore{abovecaptionskip}%
-    \tud at skip@restore{belowcaptionskip}%
-    \tud at skip@restore{columnsep}%
+    \tud at cslength@restore{smallskipamount}%
+    \tud at cslength@restore{medskipamount}%
+    \tud at cslength@restore{bigskipamount}%
+    \tud at cslength@restore{abovecaptionskip}%
+    \tud at cslength@restore{belowcaptionskip}%
+    \tud at cslength@restore{columnsep}%
   \fi%
 }
-\newcommand*\tud at font@skip@@set{%
-  \smallskipamount=\partopsep%
-  \medskipamount=\partopsep%
-  \multiply\medskipamount by 2%
-  \bigskipamount=\partopsep%
-  \multiply\bigskipamount by 4%
-  \tud at skip@set{abovecaptionskip}{\dimexpr\bigskipamount*5/6\relax}%
-  \tud at skip@set{belowcaptionskip}{\z@}%
-  \tud at skip@set{columnsep}{1.1\baselineskip}%
+\newcommand*\tud at relspacing@@set{%
+  \tud at if@v at lower{2.06}{%
+    \bigskipamount=\partopsep%
+    \multiply\bigskipamount by 4%
+  }{%
+    \begingroup%
+      \tud at setdim\@tempdima{\dimexpr\abovedisplayskip\relax}%
+      \tud at setdim\@tempdimb{\@tempdima/3}%
+      \edef\tud at res@a{%
+        \endgroup%
+        \noexpand\tud at setglue\noexpand\bigskipamount{%
+          \the\@tempdima\@plus\the\@tempdimb\@minus\the\@tempdimb%
+        }%
+      }%
+    \tud at res@a%
+  }%
+  \medskipamount=\bigskipamount%
+  \divide\medskipamount by 2%
+  \smallskipamount=\bigskipamount%
+  \divide\smallskipamount by 4%
+  \tud at if@lengthregister{\abovecaptionskip}{%
+    \tud at setdim\abovecaptionskip{1\bigskipamount*5/6}%
+  }{}%
+  \tud at if@lengthregister{\belowcaptionskip}{%
+    \tud at setdim\belowcaptionskip{\z@}%
+  }{}%
+  \tud at setdim\columnsep{1\baselineskip*11/10}%
 }
 \newcommand*\tud at cdfont@init{%
+  \tud at cdfont@@init%
+  \tud at cdfont@@@init%
+}
+\newcommand*\tud at cdfont@@init{%
   \if at tud@cdfont at fam@exist%
     \if at tud@x at fontspec@enabled%
       \def\tud at res@a{%
@@ -1991,28 +2004,33 @@
       }{}%
       \tud at cdfont@declare at textsymb%
     \fi%
-    \newrobustcmd*\cdfontln{\usefont{\encodingdefault}{\tud at cdfont@fam}{l}{n}}
-    \newrobustcmd*\cdfontrn{\usefont{\encodingdefault}{\tud at cdfont@fam}{m}{n}}
-    \newrobustcmd*\cdfontsn{\usefont{\encodingdefault}{\tud at cdfont@fam}{sb}{n}}
-    \newrobustcmd*\cdfontbn{\usefont{\encodingdefault}{\tud at cdfont@fam}{b}{n}}
-    \newrobustcmd*\cdfontxn{\usefont{\encodingdefault}{\tud at cdfont@fam}{eb}{n}}
-    \newrobustcmd*\cdfontli{\usefont{\encodingdefault}{\tud at cdfont@fam}{l}{it}}
-    \newrobustcmd*\cdfontri{\usefont{\encodingdefault}{\tud at cdfont@fam}{m}{it}}
-    \newrobustcmd*\cdfontsi{\usefont{\encodingdefault}{\tud at cdfont@fam}{sb}{it}}
-    \newrobustcmd*\cdfontbi{\usefont{\encodingdefault}{\tud at cdfont@fam}{b}{it}}
-    \newrobustcmd*\cdfontxi{\usefont{\encodingdefault}{\tud at cdfont@fam}{eb}{it}}
+    \def\tud at res@a##1##2##3{%
+      \newrobustcmd*##1{\usefont{\f at encoding}{\tud at cdfont@fam}{##2}{##3}}%
+    }%
+    \tud at res@a\cdfontln{l}{n}%
+    \tud at res@a\cdfontrn{m}{n}%
+    \tud at res@a\cdfontsn{sb}{n}%
+    \tud at res@a\cdfontbn{b}{n}%
+    \tud at res@a\cdfontxn{eb}{n}%
+    \tud at res@a\cdfontli{l}{it}%
+    \tud at res@a\cdfontri{m}{it}%
+    \tud at res@a\cdfontsi{sb}{it}%
+    \tud at res@a\cdfontbi{b}{it}%
+    \tud at res@a\cdfontxi{eb}{it}%
   \else%
-    \tud at cdfont@fallback\cdfontln{OpenSans-Light}{md}{up}
-    \tud at cdfont@fallback\cdfontrn{OpenSans-Regular}{md}{up}
-    \tud at cdfont@fallback\cdfontsn{OpenSans-SemiBold}{md}{up}
-    \tud at cdfont@fallback\cdfontbn{OpenSans-Bold}{bf}{up}
-    \tud at cdfont@fallback\cdfontxn{OpenSans-ExtraBold}{bf}{up}
-    \tud at cdfont@fallback\cdfontli{OpenSans-LightItalic}{md}{it}
-    \tud at cdfont@fallback\cdfontri{OpenSans-Italic}{md}{it}
-    \tud at cdfont@fallback\cdfontsi{OpenSans-SemiBoldItalic}{md}{it}
-    \tud at cdfont@fallback\cdfontbi{OpenSans-BoldItalic}{bf}{it}
-    \tud at cdfont@fallback\cdfontxi{OpenSans-ExtraBoldItalic}{bf}{it}
+    \tud at cdfont@fallback\cdfontln{OpenSans-Light}{md}{up}%
+    \tud at cdfont@fallback\cdfontrn{OpenSans-Regular}{md}{up}%
+    \tud at cdfont@fallback\cdfontsn{OpenSans-SemiBold}{md}{up}%
+    \tud at cdfont@fallback\cdfontbn{OpenSans-Bold}{bf}{up}%
+    \tud at cdfont@fallback\cdfontxn{OpenSans-ExtraBold}{bf}{up}%
+    \tud at cdfont@fallback\cdfontli{OpenSans-LightItalic}{md}{it}%
+    \tud at cdfont@fallback\cdfontri{OpenSans-Italic}{md}{it}%
+    \tud at cdfont@fallback\cdfontsi{OpenSans-SemiBoldItalic}{md}{it}%
+    \tud at cdfont@fallback\cdfontbi{OpenSans-BoldItalic}{bf}{it}%
+    \tud at cdfont@fallback\cdfontxi{OpenSans-ExtraBoldItalic}{bf}{it}%
   \fi%
+}
+\newcommand*\tud at cdfont@@@init{%
   \newcommand*\textcdln{}%
   \newcommand*\textcdrn{}%
   \newcommand*\textcdsn{}%
@@ -2035,7 +2053,7 @@
   \DeclareTextFontCommand\textcdxi{\cdfontxi}%
 }
 \if at tud@cdoldfont at active
-  \renewcommand*\tud at cdfont@init{%
+  \renewcommand*\tud at cdfont@@init{%
     \if at tud@cdfont at fam@exist%
       \if at tud@x at fontspec@enabled%
         \def\tud at res@a{%
@@ -2053,23 +2071,26 @@
         }%
         \tud at x@fontspec at init{\tud at cdfont@fam at lf}{\tud at res@a}%
       \fi%
-      \newrobustcmd*\univln{\usefont{\encodingdefault}{\tud at cdfont@fam}{l}{n}}
-      \newrobustcmd*\univrn{\usefont{\encodingdefault}{\tud at cdfont@fam}{m}{n}}
-      \newrobustcmd*\univbn{\usefont{\encodingdefault}{\tud at cdfont@fam}{b}{n}}
-      \newrobustcmd*\univxn{\usefont{\encodingdefault}{\tud at cdfont@fam}{eb}{n}}
-      \newrobustcmd*\univls{\usefont{\encodingdefault}{\tud at cdfont@fam}{l}{sl}}
-      \newrobustcmd*\univrs{\usefont{\encodingdefault}{\tud at cdfont@fam}{m}{sl}}
-      \newrobustcmd*\univbs{\usefont{\encodingdefault}{\tud at cdfont@fam}{b}{sl}}
-      \newrobustcmd*\univxs{\usefont{\encodingdefault}{\tud at cdfont@fam}{eb}{sl}}
+      \def\tud at res@a##1##2##3{%
+        \newrobustcmd*##1{\usefont{\f at encoding}{\tud at cdfont@fam}{##2}{##3}}%
+      }%
+      \tud at res@a\univln{l}{n}%
+      \tud at res@a\univrn{m}{n}%
+      \tud at res@a\univbn{b}{n}%
+      \tud at res@a\univxn{eb}{n}%
+      \tud at res@a\univls{l}{it}%
+      \tud at res@a\univrs{m}{it}%
+      \tud at res@a\univbs{b}{it}%
+      \tud at res@a\univxs{eb}{it}%
     \else%
-      \tud at cdfont@fallback\univln{Univers-Light}{md}{up}
-      \tud at cdfont@fallback\univrn{Univers}{md}{up}
-      \tud at cdfont@fallback\univbn{Univers-Bold}{bf}{up}
-      \tud at cdfont@fallback\univxn{Univers-Black}{bf}{up}
-      \tud at cdfont@fallback\univls{Univers-LightOblique}{md}{sl}
-      \tud at cdfont@fallback\univrs{Univers-Oblique}{md}{sl}
-      \tud at cdfont@fallback\univbs{Univers-BoldOblique}{bf}{sl}
-      \tud at cdfont@fallback\univxs{Univers-BlackOblique}{bf}{sl}
+      \tud at cdfont@fallback\univln{Univers-Light}{md}{up}%
+      \tud at cdfont@fallback\univrn{Univers}{md}{up}%
+      \tud at cdfont@fallback\univbn{Univers-Bold}{bf}{up}%
+      \tud at cdfont@fallback\univxn{Univers-Black}{bf}{up}%
+      \tud at cdfont@fallback\univls{Univers-LightOblique}{md}{it}%
+      \tud at cdfont@fallback\univrs{Univers-Oblique}{md}{it}%
+      \tud at cdfont@fallback\univbs{Univers-BoldOblique}{bf}{it}%
+      \tud at cdfont@fallback\univxs{Univers-BlackOblique}{bf}{it}%
     \fi%
     \newcommand*\textuln{}%
     \newcommand*\texturn{}%
@@ -2097,26 +2118,6 @@
     \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}%
     \if at tud@cdfont at db@exist%
       \if at tud@x at fontspec@enabled%
         \def\tud at res@a{%
@@ -2135,7 +2136,7 @@
         \tud at x@fontspec at init{\tud at cdfont@db}{\tud at res@a}%
       \fi%
       \newrobustcmd*\tud at db{%
-        \usefont{\encodingdefault}{\tud at cdfont@db}{b}{n}%
+        \usefont{\f at encoding}{\tud at cdfont@db}{b}{n}%
         \if at tud@cdmath at active\mathversion{tuddin}\fi%
       }%
       \newrobustcmd*\dinbn{\tud at db}%
@@ -2144,7 +2145,7 @@
       \newcommand*\tud at db@wrn{%
         \ClassWarning{\TUD at Class@Name}%
         {%
-          Font `DIN-Bold' is not available and therefore\MessageBreak
+          Font `DIN-Bold' is not available and therefore\MessageBreak%
           can not be used for headings%
         }%
         \global\let\tud at db@wrn\relax%
@@ -2186,7 +2187,7 @@
   \renewcommand*\cdfont[1]{%
     \tud at cdfont@get{#1}%
     \ifx\@tempc\relax\else%
-      \ifstr{\@tempc}{dinbn}{\dinbn}{\csuse{univ\@tempc}}%
+      \tud at if@strequal{\@tempc}{dinbn}{\dinbn}{\csuse{univ\@tempc}}%
     \fi%
   }%
   \renewcommand*\textcd[2]{%
@@ -2194,29 +2195,29 @@
     \ifx\@tempc\relax%
       \textsf{#2}%
     \else%
-      \ifstr{\@tempc}{dinbn}{\textdbn{#2}}{\csuse{textu\@tempc}{#2}}%
+      \tud at if@strequal{\@tempc}{dinbn}{\textdbn{#2}}{\csuse{textu\@tempc}{#2}}%
     \fi%
   }%
 \fi
 \newcommand*\tud at cdfont@get[1]{%
   \tud at 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}}{%
+  \tud at if@strequal{\@tempa}{l} {\def\@tempc{ln}}{%
+  \tud at if@strequal{\@tempa}{}  {\def\@tempc{rn}}{%
+  \tud at if@strequal{\@tempa}{r} {\def\@tempc{rn}}{%
+  \tud at if@strequal{\@tempa}{s} {\def\@tempc{sn}}{%
+  \tud at if@strequal{\@tempa}{b} {\def\@tempc{bn}}{%
+  \tud at if@strequal{\@tempa}{x} {\def\@tempc{xn}}{%
+  \tud at if@strequal{\@tempa}{li}{\def\@tempc{li}}{%
+  \tud at if@strequal{\@tempa}{il}{\def\@tempc{li}}{%
+  \tud at if@strequal{\@tempa}{i} {\def\@tempc{ri}}{%
+  \tud at if@strequal{\@tempa}{ri}{\def\@tempc{ri}}{%
+  \tud at if@strequal{\@tempa}{ir}{\def\@tempc{ri}}{%
+  \tud at if@strequal{\@tempa}{si}{\def\@tempc{si}}{%
+  \tud at if@strequal{\@tempa}{is}{\def\@tempc{si}}{%
+  \tud at if@strequal{\@tempa}{bi}{\def\@tempc{bi}}{%
+  \tud at if@strequal{\@tempa}{ib}{\def\@tempc{bi}}{%
+  \tud at if@strequal{\@tempa}{xi}{\def\@tempc{xi}}{%
+  \tud at if@strequal{\@tempa}{ix}{\def\@tempc{xi}}{%
     \let\@tempc\relax%
     \ClassWarning{\TUD at Class@Name}%
       {The font `#1' is unknown}%
@@ -2225,20 +2226,20 @@
 \if at tud@cdoldfont at active
   \renewcommand*\tud at cdfont@get[1]{%
     \tud at 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}}{%
+    \tud at if@strequal{\@tempa}{45}       {\def\@tempc{ln}}{%
+    \tud at if@strequal{\@tempa}{55}       {\def\@tempc{rn}}{%
+    \tud at if@strequal{\@tempa}{65}       {\def\@tempc{bn}}{%
+    \tud at if@strequal{\@tempa}{75}       {\def\@tempc{xn}}{%
+    \tud at if@strequal{\@tempa}{45oblique}{\def\@tempc{ls}}{%
+    \tud at if@strequal{\@tempa}{55oblique}{\def\@tempc{rs}}{%
+    \tud at if@strequal{\@tempa}{65oblique}{\def\@tempc{bs}}{%
+    \tud at if@strequal{\@tempa}{75oblique}{\def\@tempc{xs}}{%
+    \tud at if@strequal{\@tempa}{oblique45}{\def\@tempc{ls}}{%
+    \tud at if@strequal{\@tempa}{oblique55}{\def\@tempc{rs}}{%
+    \tud at if@strequal{\@tempa}{oblique65}{\def\@tempc{bs}}{%
+    \tud at if@strequal{\@tempa}{oblique75}{\def\@tempc{xs}}{%
+    \tud at if@strequal{\@tempa}{din}      {\def\@tempc{dinbn}}{%
+    \tud at if@strequal{\@tempa}{din65}    {\def\@tempc{dinbn}}{%
       \let\@tempc\relax%
       \ClassWarning{\TUD at Class@Name}%
       {The font `#1' is unknown}%
@@ -2246,8 +2247,7 @@
   }%
 \fi
 \newcommand*\tud at cdfont@trim[2]{%
-  \protected at edef\@tempa{\trim at spaces{#2}}%
-  \tud at lowerstring{\@tempa}{\@tempa}%
+  \tud at strlowercase\@tempa{\trim at spaces{#2}}%
   \tud at cdfont@@trim{ }{}%
   \tud at cdfont@@trim{-}{}%
   \tud at cdfont@@trim{_}{}%
@@ -2256,9 +2256,9 @@
   \tud at cdfont@@trim{light}{l}%
   \tud at cdfont@@trim{regular}{r}%
   \tud at cdfont@@trim{book}{r}%
-  \tud at cdfont@@trim{semibold}{s}%
+  \tud at cdfont@@trim{semi}{s}%
   \tud at cdfont@@trim{demi}{s}%
-  \tud at cdfont@@trim{extrabold}{x}%
+  \tud at cdfont@@trim{extra}{x}%
   \tud at cdfont@@trim{black}{x}%
   \tud at cdfont@@trim{bold}{b}%
   \tud at cdfont@@trim{italic}{i}%
@@ -2268,8 +2268,7 @@
 }
 \if at tud@cdoldfont at active
   \renewcommand*\tud at cdfont@trim[2]{%
-    \protected at edef\@tempa{\trim at spaces{#2}}%
-    \tud at lowerstring{\@tempa}{\@tempa}%
+    \tud at strlowercase\@tempa{\trim at spaces{#2}}%
     \tud at cdfont@@trim{ }{}%
     \tud at cdfont@@trim{-}{}%
     \tud at cdfont@@trim{_}{}%
@@ -2312,12 +2311,12 @@
     \let\tud at ttfont@fam\ttdefault%
   \or% roboto
     \let\tud at ttfont@fam\tud at ttfont@rb%
-  \or% lmodern
+  \else% lmodern
     \let\tud at ttfont@fam\tud at ttfont@lm%
   \fi%
   \ifcase\tud at ttfont@num\relax\else% !false
     \if at tud@x at fontspec@enabled%
-      \ifx\ttdefault\tud at ttfont@fam\else%
+      \ifx\tud at ttfont@fam\ttdefault\else%
         \tud at x@fontspec at set{tt}{\tud at ttfont@fam}%
       \fi%
     \else%
@@ -2402,14 +2401,14 @@
       \edef\tud at ttfont@rb at scale{s*[\tud at ttfont@rb at scale]}%
       \begingroup%
         \def\tud at res@c##1##2{%
-          \tud at lowerstring\tud at res@a{##1}%
+          \tud at strlowercase\tud at res@a{##1}%
           \DeclareFontFamily{##1}{\tud at ttfont@rb}{\hyphenchar\font=\m at ne}%
           \def\tud at res@b####1####2####3{%
             \DeclareFontShape{##1}{\tud at ttfont@rb}{####1}{n}{%
-               <->\tud at ttfont@rb at scale RobotoMono-####2-tlf-\tud at res@a%
+              <->\tud at ttfont@rb at scale RobotoMono-####2-tlf-\tud at res@a%
             }{}%
             \DeclareFontShape{##1}{\tud at ttfont@rb}{####1}{it}{%
-               <->\tud at ttfont@rb at scale RobotoMono-####3-tlf-\tud at res@a%
+              <->\tud at ttfont@rb at scale RobotoMono-####3-tlf-\tud at res@a%
             }{}%
             \DeclareFontShape{##1}{\tud at ttfont@rb}{####1}{sl}{%
               <->ssub*\tud at ttfont@rb/####1/it%
@@ -2416,10 +2415,10 @@
             }{}%
             \ifbool{##2}{%
               \DeclareFontShape{##1}{\tud at ttfont@rb}{####1}{sc}{%
-                 <->\tud at ttfont@rb at scale RobotoMono-####2-tlf-sc-\tud at res@a%
+                <->\tud at ttfont@rb at scale RobotoMono-####2-tlf-sc-\tud at res@a%
               }{}%
               \DeclareFontShape{##1}{\tud at ttfont@rb}{####1}{scit}{%
-                 <->\tud at ttfont@rb at scale RobotoMono-####3-tlf-sc-\tud at res@a%
+                <->\tud at ttfont@rb at scale RobotoMono-####3-tlf-sc-\tud at res@a%
               }{}%
               \DeclareFontShape{##1}{\tud at ttfont@rb}{####1}{scsl}{%
                 <->ssub*\tud at ttfont@rb/####1/scit%
@@ -2434,8 +2433,18 @@
         }%
         \tud at res@c{OT1}{true}%
         \tud at res@c{T1}{true}%
-        \ifcsundef{T at TS1}{}{\tud at res@c{TS1}{false}}%
-      \endgroup%
+        \tud at res@c{TS1}{false}%
+        \def\tud at res@a{\endgroup}%
+        \def\tud at res@b{TS1:RobotoMono-TLF}%
+        \ifcsundef{\tud at res@b}{%
+          \ClassWarningNoLine{\TUD at Class@Name}%
+            {`\tud at res@b' encoding subset undefinied}%
+        }{%
+          \eappto\tud at res@a{%
+            \noexpand\DeclareEncodingSubset{TS1}{tudtt}{\csuse{\tud at res@b}}%
+          }%
+        }%
+      \tud at res@a%
     \fi%
   \fi%
 }
@@ -2519,7 +2528,7 @@
 \newcommand*\tud at math@map@@@greeks[1]{%
   \ifcsundef{it#1}{\ifcsundef{var#1}{}{\csletcs{it#1}{var#1}}}{}%
   \ifcsundef{up#1}{%
-    \tud at lowerstring\tud at res@a{#1}%
+    \tud at strlowercase\tud at res@a{#1}%
     \edef\tud at res@a{Up\tud at res@a}%
     \ifcsundef{\tud at res@a}{}{\csletcs{up#1}{\tud at res@a}}%
   }{}%
@@ -2547,7 +2556,7 @@
     }%
     \tud at cs@use{mv at normal}%
     \let\tud at res@c\@empty%
-    \ifstr{\tud at math@letters at enc}{\detokenize{OML}}{%
+    \tud at if@strequal{\tud at math@letters at enc}{OML}{%
       \def\tud at res@a##1{%
         \ifcsundef{it##1}{%
           \eappto\tud at res@c{%
@@ -2560,7 +2569,7 @@
       \tud at res@cnt=\z@\relax%
       \tud at math@loop at greeks@all\tud at res@a%
     }{}%
-    \ifstr{\tud at math@operators at enc}{\detokenize{OT1}}{%
+    \tud at if@strequal{\tud at math@operators at enc}{OT1}{%
       \def\tud at res@a##1{%
         \ifcsundef{up##1}{%
           \eappto\tud at res@c{%
@@ -2659,26 +2668,19 @@
       }%
     }%
     \@tud at res@swafalse%
-    \ifcsdef{upalpha}{%
-      \ifx\upalpha\alpha%
-        \@tud at res@swatrue%
-      \fi%
-    }{}%
+    \ifundef{\upalpha}{}{\ifx\upalpha\alpha\@tud at res@swatrue\fi}%
     \if at tud@res at swa%
       \def\tud at res@c{\TUD at key@preset{slantedgreek}{false}}%
     \else%
-      \ifcsdef{itGamma}{%
-        \ifx\itGamma\Gamma%
-          \@tud at res@swatrue%
-        \fi%
-      }{%
+      \ifundef{\itGamma}{}{\ifx\itGamma\Gamma\@tud at res@swatrue\fi}%
+      \if at tud@res at swa\else%
         \let\tud at res@a\relax%
         \let\tud at res@b\relax%
         \DeclareMathSymbol{\tud at res@a}{\mathalpha}{letters}{0}%
         \DeclareMathSymbol{\tud at res@b}{\mathord}{letters}{0}%
-        \ifx\Gamma\tud at res@a\relax\@tud at res@swatrue\fi%
-        \ifx\Gamma\tud at res@b\relax\@tud at res@swatrue\fi%
-      }%
+        \ifx\Gamma\tud at res@a\@tud at res@swatrue\fi%
+        \ifx\Gamma\tud at res@b\@tud at res@swatrue\fi%
+      \fi%
       \if at tud@res at swa%
         \def\tud at res@c{\TUD at key@preset{slantedgreek}{true}}%
       \fi%
@@ -2686,43 +2688,9 @@
     \edef\tud at res@c{\endgroup\expandonce\tud at res@c}%
   \tud at res@c%
 }
-\newcommand*\mv at tudnormal{}
-\newcommand*\mv at tudbold{}
-\newcommand*\mv at tuddin{}
-\AfterPackage*{mathastext}{%
-  \newrobustcmd*\tud at mathversion[1]{%
-    \begingroup%
-      \let\tud at res@a\relax%
-      \if at tud@cdmath at active%
-        \ifstr{#1}{normal}{%
-          \def\tud at res@a{tudnormal}%
-        }{%
-          \ifstr{#1}{bold}{%
-            \def\tud at res@a{tudbold}%
-          }{}%
-        }%
-      \fi%
-      \edef\tud at res@a{%
-        \endgroup%
-        \noexpand\tud at cs@restore{mathversion}%
-        \ifx\tud at res@a\relax%
-          \noexpand\mathversion{#1}%
-        \else%
-          \noexpand\MTversion*{\tud at res@a}%
-        \fi%
-        \noexpand\tud at cs@store{mathversion}%
-        \noexpand\tud at cs@letltx{mathversion}{tud at mathversion}%
-      }%
-    \tud at res@a%
-  }%
-  \AtEndPreamble{%
-    \tud at cs@store{mathversion}%
-    \tud at cs@letltx{mathversion}{tud at mathversion}%
-  }%
-}
 \newcommand*\tud at cdmath@init{%
   \@tud at res@swafalse%
-  \if at tud@cdfont at fam@exist%
+  \if at tud@cdmath at fam@exist%
     \@tud at res@swatrue%
     \if at tud@cdoldfont at active\else%
       \tud at if@fdfileexists{LGR}{cmr}{}{%
@@ -2768,12 +2736,11 @@
         subdued,defaultmathsizes,nosmalldelims,noequal,%
         defaultrm,defaultbf,defaultit,defaultsf,defaulttt%
       }{mathastext}%
-      \RequirePackage{mathastext}[2018/08/22]%
+      \RequirePackage{mathastext}
       \tud at math@declare at lgrgreeks{cmr}{m}{bx}{n}{it}%
     \fi%
     \providecommand*\MTDeclareVersion[6][]{\DeclareMathVersion{##2}}%
-    \providecommand*\MTversion@@[1]{}%
-    \tud at cdmath@@init{\tud at cdfont@fam at lf}{\tud at ttfont@fam}%
+    \tud at cdmath@@init%
     \if at tud@cdoldfont at active%
       \tud at res@cnt=\z@\relax%
       \tud at math@loop at greeks@uc\tud at cdmath@declare at greek@uc%
@@ -2783,104 +2750,128 @@
     \fi%
     \tud at cdmath@declare at char{*}{\mathbin}{symbols}{"03}%
     \tud at cdmath@also at greeks%
-  \else%
-    \let\mv at tudnormal\mv at normal%
-    \let\mv at tudbold\mv at bold%
-    \if at tud@cdoldfont at active%
+  \fi%
+  \if at tud@cdoldfont at active%
+    \if at tud@cdmath at db@exist%
+      \tud at cdmath@db at init{\tud at cdfont@db}%
+    \else%
       \let\mv at tuddin\mv at bold%
     \fi%
   \fi%
 }
-\newcommand*\tud at x@mathastext at enc{OT1}
-\newcommand*\tud at cdmath@@init[2]{%
-  \tud at cdfont@@set%
-  \tud at ttfont@@set%
+\newcommand*\tud at cdmath@set{}
+\newcommand*\tud at cdmath@normal at name{tudnormal@\tud at cdfont@md\tud at cdfont@bf}%
+\newcommand*\tud at cdmath@bold at name{tudbold@\tud at cdfont@md\tud at cdfont@bf}%
+\newcommand*\tud at cdmath@@init{%
+  \begingroup%
+    \let\tud at res@b\@empty%
+    \def\tud at res@a##1##2{%
+      \setbool{@tud at cdfont@heavy}{##1}%
+      \setbool{@tud at cdfont@ultrabold}{##2}%
+      \tud at cdfont@@set%
+      \tud at ttfont@@set%
+      \eappto\tud at res@b{%
+        \noexpand\tud at cdmath@@@init%
+          {\tud at cdmath@normal at name}%
+          {\tud at cdmath@bold at name}%
+          {\tud at cdfont@fam at lf}{\tud at cdfont@md}{\tud at cdfont@bf}{\tud at cdfont@ebf}%
+          {\tud at ttfont@fam}{\tud at ttfont@md}{\tud at ttfont@bf}%
+      }%
+    }%
+    \tud at res@a{false}{false}%
+    \tud at res@a{false}{true}%
+    \tud at res@a{true}{false}%
+    \tud at res@a{true}{true}%
+    \if at tud@cdfont at active\else%
+      \preto\tud at res@b{%
+        \@tud at cdfont@activetrue%
+        \tud at font@set[]%
+      }%
+      \appto\tud at res@b{%
+        \@tud at cdfont@activefalse%
+        \tud at font@set[]%
+      }%
+    \fi%
+    \preto\tud at res@b{\endgroup}%
+  \tud at res@b%
+  \renewcommand*\tud at cdmath@set{%
+    \begingroup%
+      \tud at cdfont@@set%
+      \edef\tud at res@a{%
+        \endgroup%
+        \unexpanded{\letcs\mv at normal}{mv@\tud at cdmath@normal at name}%
+        \unexpanded{\letcs\mv at bold}{mv@\tud at cdmath@bold at name}%
+      }%
+    \tud at res@a%
+  }%
+}
+\newcommand*\tud at cdmath@@@init[9]{%
   \if at tud@cdoldfont at active%
-    \DeclareMathVersion{tudnormal}%
-    \DeclareMathVersion{tudbold}%
-    \DeclareMathVersion{tuddin}%
-    \SetSymbolFont{operators}{tudnormal}{OT1}{#1}{\tud at cdfont@md}{n}%
-    \SetSymbolFont{operators}{tudbold}{OT1}{#1}{\tud at cdfont@bf}{n}%
-    \SetSymbolFont{operators}{tuddin}{OT1}{\tud at cdfont@db}{b}{n}%
-    \SetSymbolFont{letters}{tudnormal}{OML}{#1}{\tud at cdfont@md}{sl}%
-    \SetSymbolFont{letters}{tudbold}{OML}{#1}{\tud at cdfont@bf}{sl}%
-    \SetSymbolFont{letters}{tuddin}{OML}{\tud at cdfont@db}{b}{sl}%
-    \SetSymbolFont{symbols}{tudnormal}{OMS}{#1}{\tud at cdfont@md}{n}%
-    \SetSymbolFont{symbols}{tudbold}{OMS}{#1}{\tud at cdfont@bf}{n}%
-    \SetSymbolFont{symbols}{tuddin}{OMS}{\tud at cdfont@db}{b}{n}%
-    \SetSymbolFont{largesymbols}{tudnormal}{OMX}{iwona}{\tud at cdfont@md}{n}%
-    \SetSymbolFont{largesymbols}{tudbold}{OMX}{iwona}{\tud at cdfont@bf}{n}%
-    \SetSymbolFont{largesymbols}{tuddin}{OMX}{iwona}{ebc}{n}%
-    \SetMathAlphabet{\mathnormal}{tudnormal}{OML}{#1}{\tud at cdfont@md}{sl}%
-    \SetMathAlphabet{\mathnormal}{tudbold}{OML}{#1}{\tud at cdfont@bf}{sl}%
-    \SetMathAlphabet{\mathnormal}{tuddin}{OML}{\tud at cdfont@db}{b}{sl}%
+    \DeclareMathVersion{#1}%
+    \DeclareMathVersion{#2}%
+    \SetSymbolFont{operators}{#1}{OT1}{#3}{#4}{n}%
+    \SetSymbolFont{operators}{#2}{OT1}{#3}{#5}{n}%
+    \SetSymbolFont{letters}{#1}{OML}{#3}{#4}{it}%
+    \SetSymbolFont{letters}{#2}{OML}{#3}{#5}{it}%
+    \SetSymbolFont{symbols}{#1}{OMS}{#3}{#4}{n}%
+    \SetSymbolFont{symbols}{#2}{OMS}{#3}{#5}{n}%
+    \SetSymbolFont{largesymbols}{#1}{OMX}{iwona}{#4}{n}%
+    \SetSymbolFont{largesymbols}{#2}{OMX}{iwona}{#5}{n}%
+    \SetMathAlphabet{\mathnormal}{#1}{OML}{#3}{#4}{it}%
+    \SetMathAlphabet{\mathnormal}{#2}{OML}{#3}{#5}{it}%
     \tud at if@ismathalphabet{\mathbold}{%
-      \SetMathAlphabet{\mathbold}{tudnormal}{OML}{#1}{\tud at cdfont@bf}{sl}%
-      \SetMathAlphabet{\mathbold}{tudbold}{OML}{#1}{\tud at cdfont@ebf}{sl}%
-      \SetMathAlphabet{\mathbold}{tuddin}{OML}{\tud at cdfont@db}{b}{sl}%
+      \SetMathAlphabet{\mathbold}{#1}{OML}{#3}{#5}{it}%
+      \SetMathAlphabet{\mathbold}{#2}{OML}{#3}{#6}{it}%
     }{}%
   \else%
-    \edef\tud at res@b{\encodingdefault}%
-    \@tfor\tud at res@a:={T1}{TU}{EU1}{EU2}\do{%
-      \ifx\tud at res@a\tud at res@b%
-        \let\tud at x@mathastext at enc\tud at res@b%
-        \@break at tfor
-      \fi%
-    }%
-    \MTDeclareVersion[it]{tudnormal}%
-      {\tud at x@mathastext at enc}{#1}{\tud at cdfont@md}{n}%
-    \MTDeclareVersion[it]{tudbold}%
-      {\tud at x@mathastext at enc}{#1}{\tud at cdfont@bf}{n}%
-    \SetSymbolFont{operators}{tudnormal}{OT1}{iwona}{\tud at cdfont@md}{n}%
-    \SetSymbolFont{operators}{tudbold}{OT1}{iwona}{\tud at cdfont@bf}{n}%
-    \SetSymbolFont{letters}{tudnormal}{OML}{iwona}{\tud at cdfont@md}{it}%
-    \SetSymbolFont{letters}{tudbold}{OML}{iwona}{\tud at cdfont@bf}{it}%
-    \SetSymbolFont{symbols}{tudnormal}{OMS}{iwona}{\tud at cdfont@md}{n}%
-    \SetSymbolFont{symbols}{tudbold}{OMS}{iwona}{\tud at cdfont@bf}{n}%
-    \SetSymbolFont{largesymbols}{tudnormal}{OMX}{iwona}{\tud at cdfont@md}{n}%
-    \SetSymbolFont{largesymbols}{tudbold}{OMX}{iwona}{\tud at cdfont@bf}{n}%
-    \SetSymbolFont{tudupgrk}{tudnormal}{LGR}{#1}{\tud at cdfont@md}{n}%
-    \SetSymbolFont{tuditgrk}{tudnormal}{LGR}{#1}{\tud at cdfont@md}{it}%
-    \SetSymbolFont{tudupgrk}{tudbold}{LGR}{#1}{\tud at cdfont@bf}{n}%
-    \SetSymbolFont{tuditgrk}{tudbold}{LGR}{#1}{\tud at cdfont@bf}{it}%
+    \MTDeclareVersion[it]{#1}{\tud at x@mathastext at enc}{#3}{#4}{n}%
+    \MTDeclareVersion[it]{#2}{\tud at x@mathastext at enc}{#3}{#5}{n}%
+    \SetSymbolFont{operators}{#1}{OT1}{iwona}{#4}{n}%
+    \SetSymbolFont{operators}{#2}{OT1}{iwona}{#5}{n}%
+    \SetSymbolFont{letters}{#1}{OML}{iwona}{#4}{it}%
+    \SetSymbolFont{letters}{#2}{OML}{iwona}{#5}{it}%
+    \SetSymbolFont{symbols}{#1}{OMS}{iwona}{#4}{n}%
+    \SetSymbolFont{symbols}{#2}{OMS}{iwona}{#5}{n}%
+    \SetSymbolFont{largesymbols}{#1}{OMX}{iwona}{#4}{n}%
+    \SetSymbolFont{largesymbols}{#2}{OMX}{iwona}{#5}{n}%
+    \SetSymbolFont{tuditgrk}{#1}{LGR}{#3}{#4}{it}%
+    \SetSymbolFont{tuditgrk}{#2}{LGR}{#3}{#5}{it}%
+    \SetSymbolFont{tudupgrk}{#1}{LGR}{#3}{#4}{n}%
+    \SetSymbolFont{tudupgrk}{#2}{LGR}{#3}{#5}{n}%
     \tud at if@ismathalphabet{\mathbold}{%
-      \SetMathAlphabet{\mathbold}{tudnormal}%
-        {\tud at x@mathastext at enc}{#1}{\tud at cdfont@bf}{it}%
-      \SetMathAlphabet{\mathbold}{tudbold}%
-        {\tud at x@mathastext at enc}{#1}{\tud at cdfont@ebf}{it}%
+      \SetMathAlphabet{\mathbold}{#1}{\tud at x@mathastext at enc}{#3}{#5}{it}%
+      \SetMathAlphabet{\mathbold}{#2}{\tud at x@mathastext at enc}{#3}{#6}{it}%
     }{}%
   \fi%
-  \SetMathAlphabet{\mathrm}{tudnormal}{OT1}{#1}{\tud at cdfont@md}{n}%
-  \SetMathAlphabet{\mathrm}{tudbold}{OT1}{#1}{\tud at cdfont@bf}{n}%
-  \SetMathAlphabet{\mathbf}{tudnormal}{OT1}{#1}{\tud at cdfont@bf}{n}%
-  \SetMathAlphabet{\mathbf}{tudbold}{OT1}{#1}{\tud at cdfont@ebf}{n}%
-  \SetMathAlphabet{\mathsf}{tudnormal}{OT1}{#1}{\tud at cdfont@md}{n}%
-  \SetMathAlphabet{\mathsf}{tudbold}{OT1}{#1}{\tud at cdfont@bf}{n}%
-  \SetMathAlphabet{\mathit}{tudnormal}{OT1}{#1}{\tud at cdfont@md}{it}%
-  \SetMathAlphabet{\mathit}{tudbold}{OT1}{#1}{\tud at cdfont@bf}{it}%
-  \SetMathAlphabet{\mathtt}{tudnormal}{OT1}{#2}{\tud at ttfont@md}{n}%
-  \SetMathAlphabet{\mathtt}{tudbold}{OT1}{#2}{\tud at ttfont@bf}{n}%
+  \AtBeginDocument{%
+    \tud at if@issymbolfont{legacymaths}{%
+      \SetSymbolFont{legacymaths}{#1}{OT1}{#3}{#4}{n}%
+      \SetSymbolFont{legacymaths}{#2}{OT1}{#3}{#5}{n}%
+    }{}%
+  }%
   \if at tud@cdoldfont at active%
-    \SetMathAlphabet{\mathrm}{tuddin}{OT1}{\tud at cdfont@db}{b}{n}%
-    \SetMathAlphabet{\mathbf}{tuddin}{OT1}{\tud at cdfont@db}{b}{n}%
-    \SetMathAlphabet{\mathsf}{tuddin}{OT1}{\tud at cdfont@db}{b}{n}%
-    \SetMathAlphabet{\mathit}{tuddin}{OT1}{\tud at cdfont@db}{b}{sl}%
-    \SetMathAlphabet{\mathtt}{tuddin}{OT1}{#2}{\tud at ttfont@ebf}{n}%
+    \def\tud at res@a{OT1}%
+  \else%
+    \let\tud at res@a\tud at x@mathastext at enc%
   \fi%
+  \SetMathAlphabet{\mathrm}{#1}{\tud at res@a}{#3}{#4}{n}%
+  \SetMathAlphabet{\mathrm}{#2}{\tud at res@a}{#3}{#5}{n}%
+  \SetMathAlphabet{\mathbf}{#1}{\tud at res@a}{#3}{#5}{n}%
+  \SetMathAlphabet{\mathbf}{#2}{\tud at res@a}{#3}{#6}{n}%
+  \SetMathAlphabet{\mathsf}{#1}{\tud at res@a}{#3}{#4}{n}%
+  \SetMathAlphabet{\mathsf}{#2}{\tud at res@a}{#3}{#5}{n}%
+  \SetMathAlphabet{\mathit}{#1}{\tud at res@a}{#3}{#4}{it}%
+  \SetMathAlphabet{\mathit}{#2}{\tud at res@a}{#3}{#5}{it}%
+  \SetMathAlphabet{\mathtt}{#1}{\tud at res@a}{#7}{#8}{n}%
+  \SetMathAlphabet{\mathtt}{#2}{\tud at res@a}{#7}{#9}{n}%
   \IfFileExists{ueus.fd}{%
-    \SetMathAlphabet{\mathcal}{tudnormal}{U}{eus}{m}{n}%
-    \SetMathAlphabet{\mathcal}{tudbold}{U}{eus}{b}{n}%
-    \if at tud@cdoldfont at active%
-      \SetMathAlphabet{\mathcal}{tuddin}{U}{eus}{b}{n}%
-    \fi%
+    \SetMathAlphabet{\mathcal}{#1}{U}{eus}{m}{n}%
+    \SetMathAlphabet{\mathcal}{#2}{U}{eus}{b}{n}%
   }{}%
   \tud at if@ismathalphabet{\mathfrak}{%
     \IfFileExists{ueuf.fd}{%
-      \SetMathAlphabet{\mathfrak}{tudnormal}{U}{euf}{m}{n}%
-      \SetMathAlphabet{\mathfrak}{tudbold}{U}{euf}{b}{n}%
-      \if at tud@cdoldfont at active%
-        \SetMathAlphabet{\mathfrak}{tuddin}{U}{euf}{b}{n}%
-      \fi%
+      \SetMathAlphabet{\mathfrak}{#1}{U}{euf}{m}{n}%
+      \SetMathAlphabet{\mathfrak}{#2}{U}{euf}{b}{n}%
     }{}%
   }{}%
   \AtBeginDocument{%
@@ -2889,14 +2880,14 @@
     \tud at if@issymbolfont{AMSb}{\@tud at res@swatrue}{}%
     \if at tud@res at swa%
       \if at tud@cdoldfont at active%
-        \DeclareFontFamily{U}{\tud at cdfont@fam at lf a}{}%
-        \DeclareFontShape{U}{\tud at cdfont@fam at lf a}{m}{n}{<->cmbras10}{}%
-        \SetSymbolFont{AMSa}{tudnormal}{U}{\tud at cdfont@fam at lf a}{m}{n}%
-        \SetSymbolFont{AMSa}{tudbold}{U}{\tud at cdfont@fam at lf a}{m}{n}%
-        \DeclareFontFamily{U}{\tud at cdfont@fam at lf b}{}%
-        \DeclareFontShape{U}{\tud at cdfont@fam at lf b}{m}{n}{<->cmbrbs10}{}%
-        \SetSymbolFont{AMSb}{tudnormal}{U}{\tud at cdfont@fam at lf b}{m}{n}%
-        \SetSymbolFont{AMSb}{tudbold}{U}{\tud at cdfont@fam at lf b}{m}{n}%
+        \DeclareFontFamily{U}{#3a}{}%
+        \DeclareFontShape{U}{#3a}{m}{n}{<->cmbras10}{}%
+        \SetSymbolFont{AMSa}{#1}{U}{#3a}{m}{n}%
+        \SetSymbolFont{AMSa}{#2}{U}{#3a}{m}{n}%
+        \DeclareFontFamily{U}{#3b}{}%
+        \DeclareFontShape{U}{#3b}{m}{n}{<->cmbrbs10}{}%
+        \SetSymbolFont{AMSb}{#1}{U}{#3b}{m}{n}%
+        \SetSymbolFont{AMSb}{#2}{U}{#3b}{m}{n}%
       \else%
         \@ifpackageloaded{mdsymbol}{}{%
           \appto\tud at cdmath@wrn{%
@@ -2909,19 +2900,74 @@
         }%
       \fi%
     \fi%
-    \tud at if@issymbolfont{legacymaths}{%
-      \SetSymbolFont{legacymaths}{tudnormal}{OT1}{#1}{\tud at cdfont@md}{n}%
-      \SetSymbolFont{legacymaths}{tudbold}{OT1}{#1}{\tud at cdfont@bf}{n}%
-      \if at tud@cdoldfont at active%
-        \SetSymbolFont{legacymaths}{tuddin}{OT1}{\tud at cdfont@db}{b}{n}%
-      \fi%
+  }%
+}
+\if at tud@cdoldfont at active
+  \newcommand*\tud at cdmath@db at init[1]{%
+    \DeclareMathVersion{tuddin}%
+    \SetSymbolFont{operators}{tuddin}{OT1}{#1}{b}{n}%
+    \SetSymbolFont{letters}{tuddin}{OML}{#1}{b}{it}%
+    \SetSymbolFont{symbols}{tuddin}{OMS}{#1}{b}{n}%
+    \SetSymbolFont{largesymbols}{tuddin}{OMX}{iwona}{ebc}{n}%
+    \AtBeginDocument{%
+      \tud at if@issymbolfont{legacymaths}{%
+        \SetSymbolFont{legacymaths}{tuddin}{OT1}{#1}{b}{n}%
+      }{}%
+    }%
+    \SetMathAlphabet{\mathnormal}{tuddin}{OML}{#1}{b}{it}%
+    \tud at if@ismathalphabet{\mathbold}{%
+      \SetMathAlphabet{\mathbold}{tuddin}{OML}{#1}{b}{it}%
     }{}%
-    \if at tud@cdoldfont at active%
+    \SetMathAlphabet{\mathrm}{tuddin}{OT1}{#1}{b}{n}%
+    \SetMathAlphabet{\mathbf}{tuddin}{OT1}{#1}{b}{n}%
+    \SetMathAlphabet{\mathsf}{tuddin}{OT1}{#1}{b}{n}%
+    \SetMathAlphabet{\mathit}{tuddin}{OT1}{#1}{b}{it}%
+    \IfFileExists{ueus.fd}{%
+      \SetMathAlphabet{\mathcal}{tuddin}{U}{eus}{b}{n}%
+    }{}%
+    \tud at if@ismathalphabet{\mathfrak}{%
+      \IfFileExists{ueuf.fd}{%
+        \SetMathAlphabet{\mathfrak}{tuddin}{U}{euf}{b}{n}%
+      }{}%
+    }{}%
+    \AtBeginDocument{%
       \if at tud@cdmath at active%
-        \sbox\z@{\mathversion{tudnormal}$ $\mathversion{tuddin}$ $}%
+        \sbox\z@{\mathversion{normal}$ $\mathversion{tuddin}$ $}%
       \fi%
-    \fi%
+    }%
   }%
+\fi
+\AfterPackage*{mathastext}{%
+  \newrobustcmd*\tud at mathversion[1]{%
+    \begingroup%
+      \let\tud at res@a\relax%
+      \if at tud@cdmath at active%
+        \tud at if@strequal{#1}{normal}{%
+          \edef\tud at res@a{\tud at cdmath@normal at name}%
+        }{%
+          \tud at if@strequal{#1}{bold}{%
+            \edef\tud at res@a{\tud at cdmath@bold at name}%
+          }{}%
+        }%
+      \fi%
+      \edef\tud at res@a{%
+        \endgroup%
+        \noexpand\tud at cs@restore{mathversion}%
+        \ifx\tud at res@a\relax%
+          \noexpand\mathversion{#1}%
+        \else%
+          \noexpand\MTversion*{\tud at res@a}%
+        \fi%
+        \noexpand\tud at cs@store{mathversion}%
+        \noexpand\tud at cs@letltx{mathversion}{tud at mathversion}%
+      }%
+    \tud at res@a%
+    \ifcsundef{mv@#1}{}{\edef\math at version{#1}}%
+  }%
+  \AtEndPreamble{%
+    \tud at cs@store{mathversion}%
+    \tud at cs@letltx{mathversion}{tud at mathversion}%
+  }%
 }
 \newcommand*\tud at cdmath@symb at list{}
 \newcommand*\tud at cdmath@declare at symb[4]{%
@@ -2949,7 +2995,7 @@
     }%
   \tud at res@a%
 }
-\newtoks\tud at cdmath@symbols at toks
+\tud at newtoks\tud at cdmath@symbols at toks
 \newcommand*\tud at cdmath@symbols at set{%
   \expandafter\IfArgIsEmpty\expandafter{\the\tud at cdmath@symbols at toks}{%
     \forlistloop\tud at cdmath@symbols at set@cmd\tud at cdmath@symb at list%
@@ -2972,7 +3018,7 @@
 }
 \newcommand*\tud at cdmath@symbols at set@chr[1]{%
   \edef\tud at res@a{\global\mathcode`#1=\the\mathcode`#1\relax}%
-  \eaddto at hook\tud at cdmath@symbols at toks{\tud at res@a}%
+  \addto at hook@expandafter\tud at cdmath@symbols at toks{\tud at res@a}%
   \begingroup%
     \edef\tud at res@a{\expandafter\meaning\csname tud at cdmath@symbol@#1\endcsname}%
     \def\tud at res@b##1"##2\@nil{"##2}%
@@ -3075,7 +3121,7 @@
   }%
 }
 \newcommand*\tud at cdmath@also@@@greeks[1]{%
-  \tud at lowerstring\tud at res@a{#1}%
+  \tud at strlowercase\tud at res@a{#1}%
   \edef\tud at res@a{Up\tud at res@a}%
   \ifcsundef{\tud at res@a}{}{%
     \expandafter\tud at cdmath@declare at alias\expandafter{\tud at res@a}{up#1}%
@@ -3084,13 +3130,12 @@
     \expandafter\tud at cdmath@declare at alias\expandafter{var#1}{it#1}%
   }%
 }
-\newcommand*\tud at math@set{%
+\newcommand*\tud at math@set[1][\tud at cdmath@wrn]{%
   \if at tud@cdmath at active%
-    \tud at cdmath@wrn%
+    #1%
     \tud at cs@store{mv at normal}%
     \tud at cs@store{mv at bold}%
-    \let\mv at normal\mv at tudnormal%
-    \let\mv at bold\mv at tudbold%
+    \tud at cdmath@set%
     \tud at cdmath@symbols at set%
     \ifcase\tud at slantedgreek@num\relax% upright
       \tud at math@loop at greeks@all\tud at math@upright at greeks%
@@ -3105,7 +3150,7 @@
     \tud at cs@restore{mv at bold}%
     \tud at cdmath@symbols at reset%
   \fi%
-  \mathversion{normal}%
+  \expandafter\mathversion\expandafter{\math at version}%
 }
 \newcommand*\tud at math@upright at greeks[1]{%
   \ifcsundef{up#1}{}{%
@@ -3119,49 +3164,7 @@
     \csletcs{other#1}{up#1}%
   }%
 }
-\AtEndPreamble{%
-  \if at tud@x at mweights@enabled%
-    \ifundef{\bfseries at rm}{\edef\bfseries at rm{\bfdefault}}{}%
-    \ifundef{\mdseries at rm}{\edef\mdseries at rm{\mddefault}}{}%
-    \ifundef{\bfseries at sf}{\edef\bfseries at sf{\bfdefault}}{}%
-    \ifundef{\mdseries at sf}{\edef\mdseries at sf{\mddefault}}{}%
-    \ifundef{\bfseries at tt}{\edef\bfseries at tt{\bfdefault}}{}%
-    \ifundef{\mdseries at tt}{\edef\mdseries at tt{\mddefault}}{}%
-  \fi%
-  \tud at cdfont@check%
-  \tud at cdfont@init%
-  \tud at ttfont@init%
-  \tud at cdmath@init%
-  \if at tud@x at bm@requested%
-    \UnPreventPackageFromLoading{bm}%
-    \if at tud@cdmath at active%
-      \tud at cs@store{mv at normal}%
-      \tud at cs@store{mv at bold}%
-      \let\mv at normal\mv at tudnormal%
-      \let\mv at bold\mv at tudbold%
-    \fi%
-    \RequirePackage{bm}[2017/01/16]%
-    \tud at cs@restore{mv at normal}%
-    \tud at cs@restore{mv at bold}%
-  \fi%
-  \if at tud@x at siunitx@enabled%
-    \if at tud@cdfont at active%
-      \if at tud@cdfont at heavy%
-        \def\tud at reserved{\TUDoptions{cdfont=heavy}}%
-      \else%
-        \def\tud at reserved{\TUDoptions{cdfont=true}}%
-      \fi%
-    \else%
-      \def\tud at reserved{\TUDoptions{cdfont=false}}%
-    \fi%
-    \expandafter\AfterEndPreamble\expandafter{\tud at reserved}%
-    \TUDoptions{cdfont=false}%
-  \fi%
-  \tud at font@set%
-  \tud at math@map at greeks%
-  \tud at math@checkslanted at greeks%
-  \AtBeginDocument{\tud at math@set}%
-}
+\newcommand*\tud at font@phantomglyphs{\"A\"O\"Ugjpqy}
 \newcommand*\tud at head@font at light{}
 \newcommand*\tud at head@font at bold{}
 \newcommand*\tud at head@font at set{%
@@ -3181,14 +3184,14 @@
   \if at tud@head at font@set%
     \if at tud@x at mweights@enabled%
       \DeclareFixedFont{\tud at head@font at light}{\encodingdefault}%
-        {\sfdefault}{\mdseries at sf}{\updefault}{\tud at head@fontsize}%
+        {\sfdefault}{\mdseries at sf}{\shapedefault}{\tud at head@fontsize}%
       \DeclareFixedFont{\tud at head@font at bold}{\encodingdefault}%
-        {\sfdefault}{\bfseries at sf}{\updefault}{\tud at head@fontsize}%
+        {\sfdefault}{\bfseries at sf}{\shapedefault}{\tud at head@fontsize}%
     \else%
       \DeclareFixedFont{\tud at head@font at light}{\encodingdefault}%
-        {\sfdefault}{\mddefault}{\updefault}{\tud at head@fontsize}%
+        {\sfdefault}{\mddefault}{\shapedefault}{\tud at head@fontsize}%
       \DeclareFixedFont{\tud at head@font at bold}{\encodingdefault}%
-        {\sfdefault}{\bfdefault}{\updefault}{\tud at head@fontsize}%
+        {\sfdefault}{\bfdefault}{\shapedefault}{\tud at head@fontsize}%
     \fi%
     \ifcase\tud at head@font at num\relax\else% true/heavy
       \tud at head@cdfont at set%
@@ -3227,7 +3230,110 @@
     \fi%
   }%
 \fi
-%%% From File: tudscr-fields.dtx
+\begingroup
+\catcode`\^=7
+\catcode30=12
+\catcode`\!=12
+\edef\tud at reserved{\@gobble^^^^0021}
+\expandafter\endgroup
+\ifx\tud at reserved\@empty
+  \RequirePackage{newunicodechar}
+  \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
+\newcommand*\tud at raggedright{\raggedright}
+\newcommand*\tud at RaggedRight{\raggedright}
+\AfterPackage*{ragged2e}{%
+  \ifundef{\LaTeXraggedright}{}{%
+    \renewcommand*\tud at raggedright{\LaTeXraggedright}%
+  }%
+  \renewcommand*\tud at RaggedRight{\RaggedRight}%
+}
+\AfterAtEndOfPackage*{siunitx}{%
+  \IfPackageAtLeastTF{siunitx}{2021-04-18}{%
+    \newcommand*\tud at x@siunitx at mapping{%
+      \if at tud@cdfont at active
+        \csname keys_set:nx\endcsname { siunitx / series-version-mapping }
+          {
+            \tud at cdfont@md  = normal,
+            \tud at cdfont@bf  = bold,
+            \tud at cdfont@ebf = bold
+          }
+      \else
+        \csname keys_set:nn\endcsname { siunitx / series-version-mapping }
+          {
+            ul = light  ,
+            el = light  ,
+            l  = light  ,
+            sl = light  ,
+            m  = normal ,
+            sb = bold   ,
+            b  = bold   ,
+            eb = bold   ,
+            ub = bold
+          }
+      \fi
+    }
+    \xapptocmd\tud at font@set%
+      {\tud at x@siunitx at mapping}%
+      {}{\tud at patch@wrn{tud at font@set}}%
+  }{%
+    \newcommand*\tud at x@siunitx at reset{}%
+    \providecommand*\lseries{\fontseries{l}\selectfont}%
+    \AtEndPreamble{%
+      \if at tud@cdfont at active%
+        \if at tud@cdfont at heavy%
+          \def\tud at x@siunitx at reset{\TUDoptions{cdfont=heavy}}%
+        \else%
+          \def\tud at x@siunitx at reset{\TUDoptions{cdfont=true}}%
+        \fi%
+        \appto\tud at x@siunitx at reset{\tud at font@set[]}%
+        \TUDoptions{cdfont=false}%
+        \tud at font@set[]%
+      \fi%
+    }%
+    \AtBeginDocument{\tud at x@siunitx at reset}%
+  }
+}
+\tud at newif\if at tud@x at bm@requested
+\PreventPackageFromLoading[\@tud at x@bm at requestedtrue]{bm}
+\newcommand*\tud at x@bm at delayed{%
+  \if at tud@x at bm@requested%
+    \UnPreventPackageFromLoading{bm}%
+    \if at tud@cdmath at active%
+      \tud at cs@store{mv at normal}%
+      \tud at cs@store{mv at bold}%
+      \tud at cdmath@set%
+    \fi%
+    \RequirePackage{bm}
+    \tud at cs@restore{mv at normal}%
+    \tud at cs@restore{mv at bold}%
+  \fi%
+  \let\tud at x@bm at delayed\relax%
+}
+\BeforePackage{mathastext}{\tud at x@bm at delayed}
+\AtEndPreamble{%
+  \if at tud@x at mweights@enabled%
+    \ifundef{\bfseries at rm}{\edef\bfseries at rm{\bfdefault}}{}%
+    \ifundef{\mdseries at rm}{\edef\mdseries at rm{\mddefault}}{}%
+    \ifundef{\bfseries at sf}{\edef\bfseries at sf{\bfdefault}}{}%
+    \ifundef{\mdseries at sf}{\edef\mdseries at sf{\mddefault}}{}%
+    \ifundef{\bfseries at tt}{\edef\bfseries at tt{\bfdefault}}{}%
+    \ifundef{\mdseries at tt}{\edef\mdseries at tt{\mddefault}}{}%
+  \fi%
+  \tud at cdfont@check%
+  \tud at cdfont@init%
+  \tud at ttfont@init%
+  \tud at font@set%
+  \tud at cdmath@init%
+  \tud at x@bm at delayed%
+  \tud at math@map at greeks%
+  \tud at math@checkslanted at greeks%
+  \AtBeginDocument{\tud at math@set}%
+}
+%%%% From File: tudscr-fields.dtx (no git version info was found)
 \newcommand*\getfield[2][\@firstofone]{%
   \begingroup%
     \def\tud at res@b{#1}%
@@ -3253,20 +3359,26 @@
 \newcommand*\@department{}
 \newcommand*\@institute{}
 \newcommand*\@chair{}
-\newcommand*\faculty[2][]{\tud at head@text at field{faculty}{#2}}
-\newcommand*\department[2][]{\tud at head@text at field{department}{#2}}
-\newcommand*\institute[2][]{\tud at head@text at field{institute}{#2}}
-\newcommand*\chair[2][]{\tud at head@text at field{chair}{#2}}
+\newcommand*\faculty{\@dblarg{\tud at head@text at field{faculty}}}
+\newcommand*\department{\@dblarg{\tud at head@text at field{department}}}
+\newcommand*\institute{\@dblarg{\tud at head@text at field{institute}}}
+\newcommand*\chair{\@dblarg{\tud at head@text at field{chair}}}
 \newcommand*\@extraheadline{}
-\newcommand*\extraheadline[1]{\tud at head@text at field{extraheadline}{#1}}
-\newcommand*\tud at head@text at field[2]{%
-  \csgdef{@#1}{\trim at spaces{#2}}%
+\newcommand*\extraheadline[1]{\tud at head@text at field{extraheadline}[]{#1}}
+\newcommand*\tud at head@text at field{}
+\def\tud at head@text at field#1[#2]#3{%
+  \expandafter\tud at trim@field\csname @#1\endcsname{#3}%
   \global\@tud at head@text at settrue%
 }
+\newcommand*\tud at trim@field[2]{%
+  \def#1{#2}%
+  \trim at spaces@in#1%
+  \global\let#1#1%
+}
 \newcommand*\@@title{}
 \robustify\@title
 \renewcommand*\title[1]{%
-  \gdef\@title{#1}%
+  \tud at trim@field\@title{#1}%
   \begingroup%
     \let\thanks\@gobble%
     \let\footnote\@gobble%
@@ -3277,7 +3389,7 @@
 }
 \newcommand*\@@author{}
 \renewcommand*\author[1]{%
-  \gdef\@author{#1}%
+  \tud at trim@field\@author{#1}%
   \begingroup%
     \let\thanks\@gobble%
     \let\footnote\@gobble%
@@ -3309,113 +3421,141 @@
   \endgroup%
 }
 \newcommand*\@authormore{}
-\newrobustcmd*\authormore[1]{\gdef\@authormore{#1}\ignorespaces}
+\newrobustcmd*\authormore[1]{\tud at trim@field\@authormore{#1}}
 \newcommand*\@emailaddress{}
-\newrobustcmd*\emailaddress{%
-  \kernel at ifstar{\tud at emailaddress@simple}{\tud at emailaddress@hyper}%
+\newrobustcmd*\emailaddress[2][]{%
+  \kernel at ifstar%
+    {\tud at emailaddress@simple{#2}}%
+    {\tud at emailaddress@hyper[{#1}]{#2}}%
 }
-\newrobustcmd*\tud at emailaddress@simple[1]{\gdef\@emailaddress{#1}}
-\newrobustcmd*\tud at emailaddress@hyper[2][]{\gdef\@emailaddress{#2}}
+\newrobustcmd*\tud at emailaddress@simple[1]{\tud at trim@field\@emailaddress{#1}}
+\newrobustcmd*\tud at emailaddress@hyper[2][]{\tud at trim@field\@emailaddress{#2}}
 \AfterPackage{hyperref}{%
   \renewrobustcmd*\tud at emailaddress@hyper[2][hidelinks]{%
-    \gdef\@emailaddress{%
+    \tud at trim@field\@emailaddress{#2}%
+    \xdef\@emailaddress{%
       \begingroup%
-        \urlstyle{same}%
-        \hypersetup{#1}%
-        \href{mailto:#2}{\nolinkurl{#2}}%
+        \noexpand\urlstyle{same}%
+        \unexpanded{\hypersetup{#1}}%
+        \noexpand\href%
+          {mailto:\expandonce\@emailaddress}%
+          {\noexpand\nolinkurl{\expandonce\@emailaddress}}%
       \endgroup%
     }%
   }%
 }
 \newcommand*\@course{}
-\newrobustcmd*\course[1]{\gdef\@course{#1}\ignorespaces}
+\newrobustcmd*\course[1]{\tud at trim@field\@course{#1}}
 \newcommand*\@discipline{}
-\newrobustcmd*\discipline[1]{\gdef\@discipline{#1}\ignorespaces}
+\newrobustcmd*\discipline[1]{\tud at trim@field\@discipline{#1}}
 \newcommand*\@matriculationnumber{}
-\newrobustcmd*\matriculationnumber[1]{%
-  \gdef\@matriculationnumber{#1}\ignorespaces%
-}
+\newrobustcmd*\matriculationnumber[1]{\tud at trim@field\@matriculationnumber{#1}}
 \newcommand*\@matriculationyear{}
-\newrobustcmd*\matriculationyear[1]{\gdef\@matriculationyear{#1}\ignorespaces}
+\newrobustcmd*\matriculationyear[1]{\tud at trim@field\@matriculationyear{#1}}
 \newcommand*\@placeofbirth{}
-\newrobustcmd*\placeofbirth[1]{\gdef\@placeofbirth{#1}\ignorespaces}
+\newrobustcmd*\placeofbirth[1]{\tud at trim@field\@placeofbirth{#1}}
 \newcommand*\@thesis{}
 \newcommand*\@@thesis{}
-\newcommand*\thesis[1]{\tud at thesis@do{thesis}{#1}}
-\renewcommand*\subject[1]{\tud at thesis@do{subject}{#1}}
-\newcommand*\tud at thanks{}
-\newcommand*\tud at thesis@do[2]{%
+\newcommand*\thesis[1]{\tud at thesis@evaluate{thesis}{#1}}
+\CheckCommand*\subject[1]{\gdef\@subject{#1}}
+\newcommand*\@@subject{}
+\renewcommand*\subject[1]{\tud at thesis@evaluate{subject}{#1}}
+\newcommand*\tud at thesis@evaluate[2]{%
   \begingroup%
-    \global\let\tud at thanks\relax%
-    \def\thanks##1{\gdef\tud at thanks{##1}}%
+    \expandafter\tud at trim@field\csname @#1\endcsname{#2}%
+    \let\tud at res@c\@empty%
+    \def\thanks##1{\listgadd\tud at res@c{##1}}%
     \let\footnote\thanks%
     \sbox\z@{#2}%
     \let\thanks\@gobble%
     \let\footnote\@gobble%
-    \tud at lowerstring{\@tempa}{#2}%
-    \ifstr{#1}{thesis}{\protected at xdef\@@thesis{#2}}{}%
-    \protected at edef\@tempa{%
+    \protected at csxdef{@@#1}{\trim at spaces{#2}}%
+    \letcs\tud at res@a{@@#1}%
+    \TUD at set@numkey{thesis}{@tempa}{%
+      {habil}{0},
+      {diss}{1},{doctoral}{1},{phd}{1},
+      {diploma}{2},
+      {master}{3},
+      {bachelor}{4},
+      {student}{5},
+      {evidence}{6},
+      {project}{7},
+      {seminar}{8},
+      {term}{9},
+      {research}{10},
+      {log}{11},
+      {report}{12},
+      {internship}{13}
+    }{\tud at res@a}%
+    \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+      \ifcase\@tempa\relax% habil
+        \def\tud at res@a{\habilitationname}%
+      \or% diss
+        \def\tud at res@a{\dissertationname}%
+      \or% diploma
+        \def\tud at res@a{\diplomathesisname}%
+      \or% master
+        \def\tud at res@a{\masterthesisname}%
+      \or% bachelor
+        \def\tud at res@a{\bachelorthesisname}%
+      \or% student
+        \def\tud at res@a{\studentthesisname}%
+      \or% evidence
+        \def\tud at res@a{\studentresearchname}%
+      \or% project
+        \def\tud at res@a{\projectpapername}%
+      \or% seminar
+        \def\tud at res@a{\seminarpapername}%
+      \or% term
+        \def\tud at res@a{\termpapername}%
+      \or% research
+        \def\tud at res@a{\researchname}%
+      \or% log
+        \def\tud at res@a{\logname}%
+      \or% report
+        \def\tud at res@a{\reportname}%
+      \or% internship
+        \def\tud at res@a{\internshipname}%
+      \else%
+        \FamilyKeyStateUnknownValue%
+      \fi%
+    \fi%
+    \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+      \global\cslet{@@#1}\tud at res@a%
+      \tud at if@strequal{#1}{subject}{%
+        \ifx\@@thesis\@empty\global\let\@@thesis\@@subject\fi%
+      }{}%
+      \def\do##1{\appto\tud at res@a{\thanks{##1}}}%
+      \dolistloop{\tud at res@c}%
+    \fi%
+    \edef\tud at res@a{%
       \endgroup%
-      \def\noexpand\@tempa{\@tempa}%
+      \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+        \noexpand\csgdef{@#1}{\expandonce\tud at res@a}%
+      \fi%
     }%
-  \@tempa%
-  \ifstr{\@tempa}{diss}{\tud at thesis@@do{#1}{\dissertationname}}{%
-  \ifstr{\@tempa}{doctoral}{\tud at thesis@@do{#1}{\dissertationname}}{%
-  \ifstr{\@tempa}{phd}{\tud at thesis@@do{#1}{\dissertationname}}{%
-  \ifstr{\@tempa}{diploma}{\tud at thesis@@do{#1}{\diplomathesisname}}{%
-  \ifstr{\@tempa}{master}{\tud at thesis@@do{#1}{\masterthesisname}}{%
-  \ifstr{\@tempa}{bachelor}{\tud at thesis@@do{#1}{\bachelorthesisname}}{%
-  \ifstr{\@tempa}{student}{\tud at thesis@@do{#1}{\studentthesisname}}{%
-  \ifstr{\@tempa}{evidence}{\tud at thesis@@do{#1}{\studentresearchname}}{%
-  \ifstr{\@tempa}{project}{\tud at thesis@@do{#1}{\projectpapername}}{%
-  \ifstr{\@tempa}{seminar}{\tud at thesis@@do{#1}{\seminarpapername}}{%
-  \ifstr{\@tempa}{term}{\tud at thesis@@do{#1}{\termpapername}}{%
-  \ifstr{\@tempa}{research}{\tud at thesis@@do{#1}{\researchname}}{%
-  \ifstr{\@tempa}{log}{\tud at thesis@@do{#1}{\logname}}{%
-  \ifstr{\@tempa}{report}{\tud at thesis@@do{#1}{\reportname}}{%
-  \ifstr{\@tempa}{internship}{\tud at thesis@@do{#1}{\internshipname}}{%
-    \csdef{@#1}{#2}%
-  }}}}}}}}}}}}}}}%
+  \tud at res@a%
 }
-\newcommand*\tud at thesis@@do[2]{%
-  \ifstr{#1}{subject}{%
-    \ifx\@thesis\@empty\else%
-      \ClassWarning{\TUD at Class@Name}{%
-        Field `thesis' is overwritten by `subject'%
-      }%
-    \fi%
-    \TUD at key@preset{subjectthesis}{true}%
-  }{%
-    \TUD at key@preset{subjectthesis}{false}%
-  }%
-  \ifx\tud at thanks\relax%
-    \gdef\@thesis{#2}%
-  \else%
-    \protected at xdef\@thesis{\noexpand#2\noexpand\thanks{\tud at thanks}}%
-  \fi%
-  \protected at xdef\@@thesis{\trim at spaces{#2}}%
-}
 \newcommand*\@graduation{}
 \newcommand*\@graduationabbreviation{}
 \newcommand*\graduation[2][]{%
-  \gdef\@graduationabbreviation{}%
-  \ifxblank{#1}{}{\gdef\@graduationabbreviation{(#1)}}%
-  \gdef\@graduation{#2}%
+  \tud at trim@field\@graduationabbreviation{#1}%
+  \tud at trim@field\@graduation{#2}%
 }
 \newcommand*\@professor{}
-\newcommand*\professor[1]{\gdef\@professor{#1}}
+\newcommand*\professor[1]{\tud at trim@field\@professor{#1}}
 \newcommand*\@supervisor{}
-\newcommand*\supervisor[1]{\gdef\@supervisor{#1}}
+\newcommand*\supervisor[1]{\tud at trim@field\@supervisor{#1}}
 \newcommand*\@supporter{}
-\newcommand*\supporter[1]{\gdef\@supporter{#1}}
+\newcommand*\supporter[1]{\tud at trim@field\@supporter{#1}}
 \newcommand*\@company{}
-\newcommand*\company[1]{\gdef\@company{#1}}
+\newcommand*\company[1]{\tud at trim@field\@company{#1}}
 \newcommand*\@referee{}
-\newcommand*\referee[1]{\gdef\@referee{#1}}
+\newcommand*\referee[1]{\tud at trim@field\@referee{#1}}
 \newcommand*\@advisor{}
-\newcommand*\advisor[1]{\gdef\@advisor{#1}}
-\newlength\tud at len@signatureskip
-\setlength\tud at len@signatureskip{8ex plus 6ex minus 6ex}
+\newcommand*\advisor[1]{\tud at trim@field\@advisor{#1}}
+\tud at newglue\tud at glue@signaturevskip
+\tud at setglue\tud at glue@signaturevskip{8ex plus 6ex minus 6ex}
 \newcommand*\@confirmationclosing{%
   \tud at date@check%
   \ifx\@date\@empty\else%
@@ -3422,15 +3562,19 @@
     \medskip\noindent%
     \ifx\@place\@empty\else\@place,\nobreakspace\fi\@date%
   \fi%
-  \vskip\tud at len@signatureskip\noindent%
+  \vskip\tud at glue@signaturevskip\noindent%
   \begingroup%
     \let\and\hfil%
     \@@author\hfil%
   \endgroup%
 }
-\newcommand*\confirmationclosing[1]{\gdef\@confirmationclosing{#1}}
+\newcommand*\confirmationclosing[1]{\tud at trim@field\@confirmationclosing{#1}}
 \newcommand*\@place{Dresden}
-\newcommand*\place[1]{\gdef\@place{#1}}
+\newcommand*\place[1]{\tud at trim@field\@place{#1}}
+\CheckCommand*\subtitle[1]{\gdef\@subtitle{#1}}
+\renewcommand*\subtitle[1]{\tud at trim@field\@subtitle{#1}}
+\CheckCommand\publishers[1]{\gdef\@publishers{#1}}%
+\renewcommand*\publishers[1]{\tud at trim@field\@publishers{#1}}
 \providecommand*\publisher[1]{\publishers{#1}}
 \TUD at UnwindPackage{isodate}{%
   \@ifpackageloaded{datetime2}{%
@@ -3443,9 +3587,10 @@
   \ifx\today#2\relax%
     \gdef#1{#2}%
   \else%
-    \ifxblank{#2}%
-      {\gdef#1{}}%
-      {\gdef#1{\printdate{#2}}}%
+    \tud at trim@field#1{#2}%
+    \tud at if@strblank{#1}%
+      {}%
+      {\xdef#1{\noexpand\printdate{\expandonce#1}}}%
   \fi%
 }
 \newcommand*\tud at date@check{%
@@ -3491,12 +3636,14 @@
 }
 \newcommand*\tud at date@print{%
   \ifx\@date\@empty\else%
+    \trim at spaces@in\@beforedate%
     \ifx\@beforedate\@empty\else%
-      \expandafter\trim at spaces@noexp\expandafter{\@beforedate}\nobreakspace%
+      \@beforedate\nobreakspace%
     \fi%
     \@date%
+    \trim at spaces@in\@afterdate%
     \ifx\@afterdate\@empty\else%
-      \nobreakspace\expandafter\trim at spaces@noexp\expandafter{\@afterdate}%
+      \nobreakspace\@afterdate%
     \fi%
   \fi%
 }
@@ -3503,14 +3650,29 @@
 \newcommand*\@defensedate{}
 \newcommand*\defensedate[1]{\tud at printdate{\@defensedate}{#1}}
 \newcommand*\@dateofbirth{}
-\newrobustcmd*\dateofbirth[1]{%
-  \tud at printdate{\@dateofbirth}{#1}\ignorespaces%
+\newrobustcmd*\dateofbirth[1]{\tud at printdate{\@dateofbirth}{#1}}
+\newcommand*\tud at if@field at unset[1]{%
+  \begingroup%
+    \edef\tud at res@a{%
+      \def\noexpand\tud at res@a####1\string\@latex@####2\noexpand\@nil{%
+        \noexpand\IfArgIsEmpty{####2}%
+        \unexpanded{\@tud at res@swafalse\@tud at res@swatrue}%
+      }%
+      \noexpand\tud at res@a%
+        \expandafter\strip at prefix\meaning#1%
+        \string\@latex@\noexpand\@nil%
+    }%
+    \tud at res@a%
+    \if at tud@res at swa%
+      \aftergroup\@firstoftwo%
+    \else%
+      \aftergroup\@secondoftwo%
+    \fi%
+  \endgroup%
 }
 \newcommand*\tud at multiple@@split{}
 \newcommand*\tud at multiple@split[1]{%
-  \expandafter\ifpatchable\expandafter{\csname#1\endcsname}{%
-    \@latex at warning@no at line%
-  }{%
+  \expandafter\tud at if@field at unset\expandafter{\csname #1\endcsname}{%
     \csuse{#1}\csgdef{#1}{}%
   }{}%
   \def\tud at multiple@@split##1\and##2\relax{%
@@ -3520,20 +3682,27 @@
     \let\and\relax%
     \let\newline\@empty%
     \let\\\@empty%
-    \edef\@tempa{\csname#1\endcsname\and}%
+    \edef\@tempa{\csname #1\endcsname\and}%
   \expandafter\endgroup%
   \expandafter\tud at multiple@@split\@tempa\relax%
 }
 \newcommand*\tud at multiple@@@split[2]{%
-  \ifx\relax#1\relax%
+  \IfArgIsEmpty{#1}{%
     \let\@tempb\relax%
-  \else%
+  }{%
     \def\@tempb{#2\tud at multiple@@split#1\relax}%
-  \fi%
+  }%
   \@tempb%
 }
 \newcommand*\tud at multiple@fields at store[2]{%
-  \def\@tempa##1{\ifcsdef{@##1}{\tud at cs@store{@##1}}{}}%
+  \def\@tempa##1{%
+    \ifcsdef{@##1}{\tud at cs@store{@##1}}{}%
+    \ifcsdef{##1}{%
+      \tud at cs@store{##1}%
+      \expandafter\xapptocmd\csname ##1\endcsname{\ignorespaces}%
+        {}{\tud at patch@wrn##1}%
+    }{}%
+  }%
   \letcs\@tempb{tud at split#1 at list}%
   \let\and\relax%
   \expandafter\forcsvlist\expandafter\@tempa\expandafter{\@tempb}%
@@ -3549,6 +3718,7 @@
       \tud at cs@restore{@##1}%
       \global\csletcs{@##1}{@##1}%
     }{}%
+    \ifcsdef{##1}{\tud at cs@restore{##1}}{}%
   }%
   \letcs\@tempb{tud at split#1 at list}%
   \let\and\relax%
@@ -3557,9 +3727,9 @@
 \newcommand*\tud at multiple@fields at preset[3]{%
   \def\@tempa##1{%
     \edef\@tempc{\csuse{##1}}%
-    \ifstr{#2}{*}{%
+    \if\detokenize{#2*}\relax%
       \csdef{@##1}{}%
-    }{%
+    \else%
       \begingroup%
         \protected at expandtwoargs\in@{\@tempc}{\csuse{#1}}%
         \ifin@%
@@ -3566,7 +3736,7 @@
           \ifcsvoid{@##1}{\@tempc{#2}}{}%
         \fi%
       \endgroup%
-    }%
+    \fi%
   }%
   \letcs\@tempb{tud at split#1 at list}%
   \let\and\relax%
@@ -3584,7 +3754,7 @@
   matriculationnumber,studentid,matriculationid,%
   placeofbirth,birthplace,dateofbirth,birthday,%
 }
-%%% From File: tudscr-localization.dtx
+%%%% From File: tudscr-localization.dtx (no git version info was found)
 \newcommand*\tud at localization@define[1]{%
   \providecommand*#1{%
     \ClassError{\TUD at Class@Name}{%
@@ -3594,7 +3764,7 @@
       languages german and english as well as its dialects. You\MessageBreak%
       must define single patterns by yourself, e.g.:\MessageBreak%
       `\string\providecaptionname{\languagename}\string#1{<text>}'\MessageBreak%
-      You can send your definitions to \tudscrmail\space in\MessageBreak%
+      You can send your definitions to \TUDScriptContact\space in\MessageBreak%
       order to implement support for additional languages.%
     }%
   }%
@@ -3625,6 +3795,7 @@
 \tud at localization@define{\disciplinename}
 \tud at localization@define{\listingname}
 \tud at localization@define{\listlistingname}
+\tud at localization@define{\habilitationname}
 \tud at localization@define{\dissertationname}
 \tud at localization@define{\diplomathesisname}
 \tud at localization@define{\masterthesisname}
@@ -3749,6 +3920,7 @@
 \tud at localization@german{\disciplinename}{Studienrichtung}
 \tud at localization@german{\listingname}{Quelltext}
 \tud at localization@german{\listlistingname}{Quelltextverzeichnis}
+\tud at localization@german{\habilitationname}{Habilitation}
 \tud at localization@german{\dissertationname}{Dissertation}
 \tud at localization@german{\diplomathesisname}{Diplomarbeit}
 \tud at localization@german{\masterthesisname}{Master-Arbeit}
@@ -3854,6 +4026,7 @@
 \tud at localization@english{\disciplinename}{Discipline}
 \tud at localization@english{\listingname}{Listing}
 \tud at localization@english{\listlistingname}{List of Listings}
+\tud at localization@english{\habilitationname}{Habilitation}
 \tud at localization@english{\dissertationname}{Dissertation}
 \tud at localization@english{\diplomathesisname}{Diploma Thesis}
 \tud at localization@english{\masterthesisname}{Master Thesis}
@@ -3877,8 +4050,8 @@
   \tud at localization@english{\@commaswap}{\,}%
   \tud at localization@english{\@dotswap}{.}%
 }
-%%% From File: tudscr-area.dtx
-\newif\if at tud@x at crop@center
+%%%% From File: tudscr-area.dtx (no git version info was found)
+\tud at newif\if at tud@x at crop@center
 \AfterPackage{crop}{%
   \CheckCommand*\CROP at center{%
     \voffset\stockheight
@@ -3888,73 +4061,73 @@
     \advance\hoffset-\paperwidth
     \hoffset.5\hoffset
   }%
-  \pretocmd{\CROP at center}{%
+  \pretocmd\CROP at center{%
     \@tud at x@crop at centertrue%
   }{}{\tud at patch@wrn{CROP at center}}%
 }
-\newif\if at tud@x at standalone@crop
+\tud at newif\if at tud@x at standalone@crop
 \AfterClass*{standalone}{\let\if at tud@x at standalone@crop\ifsa at crop}
-\newlength\tud at len@widemargin
-\newlength\tud at len@slimmargin
-\newlength\tud at len@both
-\newlength\tud at len@topmargin
-\newlength\tud at len@barheight
-\newlength\tud at len@headsep
-\newlength\tud at len@footsep
-\newlength\tud at len@logox
-\newlength\tud at len@logoy
-\newlength\tud at len@logowidth
-\newlength\tud at len@line
-\newlength\tud at len@heavyline
-\newlength\tud at len@thinline
-\newlength\tud at len@areaheadvskip
-\newlength\tud at len@areadiff
-\newlength\tud at len@areavskip
-\tud at if@v at lower{2.03}{\newlength\tud at len@ddcdiff}{}
+\tud at newdim\tud at dim@widemargin
+\tud at newdim\tud at dim@slimmargin
+\tud at newdim\tud at dim@bothmargin
+\tud at newdim\tud at dim@topmargin
+\tud at newdim\tud at dim@barheight
+\tud at newdim\tud at dim@headsep
+\tud at newdim\tud at dim@footsep
+\tud at newdim\tud at dim@logox
+\tud at newdim\tud at dim@logoy
+\tud at newdim\tud at dim@logowidth
+\tud at newdim\tud at dim@line
+\tud at newdim\tud at dim@heavyline
+\tud at newdim\tud at dim@thinline
+\tud at newdim\tud at dim@areaheadvskip
+\tud at newdim\tud at dim@areadiff
+\tud at newdim\tud at dim@areavskip
+\tud at if@v at lower{2.03}{\tud at newdim\tud at dim@ddcdiff}{}
 \newcommand*\tud at head@fontsize{}
-\newif\if at tud@cdgeometry at adjust
-\newlength\tud at len@layoutwidth
-\newlength\tud at len@layoutheight
-\newlength\tud at len@layouthoffset
-\newlength\tud at len@layoutvoffset
+\tud at newif\if at tud@cdgeometry at adjust
+\tud at newdim\tud at dim@layoutwidth
+\tud at newdim\tud at dim@layoutheight
+\tud at newdim\tud at dim@layouthoffset
+\tud at newdim\tud at dim@layoutvoffset
 \newcommand*\tud at cdgeometry@set{%
   \tud at cdgeometry@assignlayout%
   \tud at if@v at lower{2.05}{%
-    \ifdim\tud at len@layoutheight<\dimexpr105mm+1.5mm\relax%
+    \ifdim\tud at dim@layoutheight<\dimexpr105mm+1.5mm\relax%
       \def\@tempa{0}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr148mm+1.5mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr148mm+1.5mm\relax%
       \def\@tempa{1}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr229mm+2mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr229mm+2mm\relax%
       \def\@tempa{2}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr297mm+2mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr297mm+2mm\relax%
       \def\@tempa{3}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr420mm+2mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr420mm+2mm\relax%
       \def\@tempa{4}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr594mm+2mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr594mm+2mm\relax%
       \def\@tempa{5}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr841mm+3mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr841mm+3mm\relax%
       \def\@tempa{6}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr1189mm+3mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr1189mm+3mm\relax%
       \def\@tempa{7}%
     \else%
       \def\@tempa{8}%
     \fi\fi\fi\fi\fi\fi\fi\fi%
   }{%
-    \ifdim\tud at len@layoutheight<\dimexpr125mm+1.5mm\relax%
+    \ifdim\tud at dim@layoutheight<\dimexpr125mm+1.5mm\relax%
       \def\@tempa{0}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr176mm+2mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr176mm+2mm\relax%
       \def\@tempa{1}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr250mm+2mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr250mm+2mm\relax%
       \def\@tempa{2}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr353mm+2mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr353mm+2mm\relax%
       \def\@tempa{3}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr500mm+2mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr500mm+2mm\relax%
       \def\@tempa{4}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr707mm+3mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr707mm+3mm\relax%
       \def\@tempa{5}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr1000mm+3mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr1000mm+3mm\relax%
       \def\@tempa{6}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr1414mm+3mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr1414mm+3mm\relax%
       \def\@tempa{7}%
     \else%
       \def\@tempa{8}%
@@ -3977,58 +4150,58 @@
         calculate a proper type area%
       }%
     \fi%
-    \tud at divide\@tempa{\tud at len@layoutheight}{148mm}%
-    \setlength\tud at len@widemargin{15mm}%
-    \setlength\tud at len@widemargin{\@tempa\tud at len@widemargin}%
-    \setlength\tud at len@heavyline{0.5pt}%
-    \setlength\tud at len@heavyline{\@tempa\tud at len@heavyline}%
-    \setlength\tud at len@thinline{0.25pt}%
-    \setlength\tud at len@thinline{\@tempa\tud at len@thinline}%
-    \setlength\@tempdima{4.5pt}%
-    \setlength\@tempdima{\@tempa\@tempdima}%
+    \tud at divide\@tempa{\tud at dim@layoutheight}{148mm}%
+    \tud at setdim\tud at dim@widemargin{15mm}%
+    \tud at setdim\tud at dim@widemargin{\@tempa\tud at dim@widemargin}%
+    \tud at setdim\tud at dim@heavyline{0.5pt}%
+    \tud at setdim\tud at dim@heavyline{\@tempa\tud at dim@heavyline}%
+    \tud at setdim\tud at dim@thinline{0.25pt}%
+    \tud at setdim\tud at dim@thinline{\@tempa\tud at dim@thinline}%
+    \tud at setdim\@tempdima{4.5pt}%
+    \tud at setdim\@tempdima{\@tempa\@tempdima}%
     \edef\tud at head@fontsize{\strip at pt\@tempdima}%
   \or% <=A6/B6
-    \setlength\tud at len@widemargin{15mm}%
-    \setlength\tud at len@heavyline{0.5pt}%
-    \setlength\tud at len@thinline{0.25pt}%
+    \tud at setdim\tud at dim@widemargin{15mm}%
+    \tud at setdim\tud at dim@heavyline{0.5pt}%
+    \tud at setdim\tud at dim@thinline{0.25pt}%
     \renewcommand*\tud at head@fontsize{4.5}%
   \or% <=A5/B5
     \ifnum\tud at cdgeometry@calc at num=\z@\relax% restricted
       \@tud at cdgeometry@adjusttrue%
-      \setlength\tud at len@widemargin{30mm}%
-      \setlength\tud at len@heavyline{1pt}%
-      \setlength\tud at len@thinline{0.5pt}%
+      \tud at setdim\tud at dim@widemargin{30mm}%
+      \tud at setdim\tud at dim@heavyline{1pt}%
+      \tud at setdim\tud at dim@thinline{0.5pt}%
       \renewcommand*\tud at head@fontsize{9}%
     \else%
-      \setlength\tud at len@widemargin{21.213203mm}%
-      \setlength\tud at len@heavyline{0.707107pt}%
-      \setlength\tud at len@thinline{0.353553pt}%
+      \tud at setdim\tud at dim@widemargin{21.213203mm}%
+      \tud at setdim\tud at dim@heavyline{0.707107pt}%
+      \tud at setdim\tud at dim@thinline{0.353553pt}%
       \renewcommand*\tud at head@fontsize{6.363961}%
     \fi%
   \or% <=A4/B4
-    \setlength\tud at len@widemargin{30mm}%
-    \setlength\tud at len@heavyline{1pt}%
-    \setlength\tud at len@thinline{0.5pt}%
+    \tud at setdim\tud at dim@widemargin{30mm}%
+    \tud at setdim\tud at dim@heavyline{1pt}%
+    \tud at setdim\tud at dim@thinline{0.5pt}%
     \renewcommand*\tud at head@fontsize{9}%
   \or% <=A3/B3
-    \setlength\tud at len@widemargin{42.426407mm}%
-    \setlength\tud at len@heavyline{1.414214pt}%
-    \setlength\tud at len@thinline{0.707107pt}%
+    \tud at setdim\tud at dim@widemargin{42.426407mm}%
+    \tud at setdim\tud at dim@heavyline{1.414214pt}%
+    \tud at setdim\tud at dim@thinline{0.707107pt}%
     \renewcommand*\tud at head@fontsize{12.727922}%
   \or% <=A2/B2
-    \setlength\tud at len@widemargin{60mm}%
-    \setlength\tud at len@heavyline{2pt}%
-    \setlength\tud at len@thinline{1pt}%
+    \tud at setdim\tud at dim@widemargin{60mm}%
+    \tud at setdim\tud at dim@heavyline{2pt}%
+    \tud at setdim\tud at dim@thinline{1pt}%
     \renewcommand*\tud at head@fontsize{18}%
   \or% <=A1/B1
-    \setlength\tud at len@widemargin{84.852814mm}%
-    \setlength\tud at len@heavyline{2.828427pt}%
-    \setlength\tud at len@thinline{1.414214pt}%
+    \tud at setdim\tud at dim@widemargin{84.852814mm}%
+    \tud at setdim\tud at dim@heavyline{2.828427pt}%
+    \tud at setdim\tud at dim@thinline{1.414214pt}%
     \renewcommand*\tud at head@fontsize{25.455844}%
   \or% <=A0/B0
-    \setlength\tud at len@widemargin{120mm}%
-    \setlength\tud at len@heavyline{4pt}%
-    \setlength\tud at len@thinline{2pt}%
+    \tud at setdim\tud at dim@widemargin{120mm}%
+    \tud at setdim\tud at dim@heavyline{4pt}%
+    \tud at setdim\tud at dim@thinline{2pt}%
     \renewcommand*\tud at head@fontsize{36}%
   \else% >A0/B0
     \ifnum\tud at cdgeometry@calc at num=\tw@\relax\else%
@@ -4039,50 +4212,48 @@
         calculate a proper type area%
       }%
     \fi%
-    \tud at divide\@tempa{\tud at len@layoutheight}{1189mm}%
-    \setlength\tud at len@widemargin{120mm}%
-    \setlength\tud at len@widemargin{\@tempa\tud at len@widemargin}%
-    \setlength\tud at len@heavyline{4pt}%
-    \setlength\tud at len@heavyline{\@tempa\tud at len@heavyline}%
-    \setlength\tud at len@thinline{2pt}%
-    \setlength\tud at len@thinline{\@tempa\tud at len@thinline}%
-    \setlength\@tempdima{36pt}%
-    \setlength\@tempdima{\@tempa\@tempdima}%
+    \tud at divide\@tempa{\tud at dim@layoutheight}{1189mm}%
+    \tud at setdim\tud at dim@widemargin{120mm}%
+    \tud at setdim\tud at dim@widemargin{\@tempa\tud at dim@widemargin}%
+    \tud at setdim\tud at dim@heavyline{4pt}%
+    \tud at setdim\tud at dim@heavyline{\@tempa\tud at dim@heavyline}%
+    \tud at setdim\tud at dim@thinline{2pt}%
+    \tud at setdim\tud at dim@thinline{\@tempa\tud at dim@thinline}%
+    \tud at setdim\@tempdima{36pt}%
+    \tud at setdim\@tempdima{\@tempa\@tempdima}%
     \edef\tud at head@fontsize{\strip at pt\@tempdima}%
   \fi%
   \ifnum\tud at cdgeometry@calc at num=\tw@\relax%
-    \tud at divide\@tempa{\tud at len@layoutheight}{297mm}%
-    \setlength\tud at len@widemargin{\@tempa\tud at len@widemargin}%
-    \setlength\tud at len@heavyline{\@tempa\tud at len@heavyline}%
-    \setlength\tud at len@thinline{\@tempa\tud at len@thinline}%
-    \setlength\@tempdima{\tud at head@fontsize pt}%
-    \setlength\@tempdima{\@tempa\@tempdima}%
+    \tud at divide\@tempa{\tud at dim@layoutheight}{297mm}%
+    \tud at setdim\tud at dim@widemargin{\@tempa\tud at dim@widemargin}%
+    \tud at setdim\tud at dim@heavyline{\@tempa\tud at dim@heavyline}%
+    \tud at setdim\tud at dim@thinline{\@tempa\tud at dim@thinline}%
+    \tud at setdim\@tempdima{\tud at head@fontsize pt}%
+    \tud at setdim\@tempdima{\@tempa\@tempdima}%
     \edef\tud at head@fontsize{\strip at pt\@tempdima}%
   \fi%
   \global\@tud at head@font at settrue%
-  \setlength\tud at len@slimmargin{\dimexpr2\tud at len@widemargin/3\relax}%
-  \setlength\tud at len@both{\dimexpr5\tud at len@widemargin/3\relax}%
-  \setlength\tud at len@topmargin{\dimexpr7\tud at len@widemargin/6\relax}%
-  \setlength\tud at len@barheight{\dimexpr\tud at len@widemargin/6\relax}%
-  \setlength\tud at len@headsep{\dimexpr2\tud at len@widemargin/5\relax}%
-  \setlength\tud at len@logox{\dimexpr1.1\tud at len@widemargin/3\relax}%
-  \setlength\tud at len@logoy{\dimexpr0.45\tud at len@widemargin\relax}%
-  \setlength\tud at len@logowidth{\dimexpr1.9\tud at len@widemargin\relax}%
-  \setlength\tud at len@footsep{%
-    \dimexpr\tud at len@widemargin-.6\tud at len@topmargin\relax%
-  }%
+  \tud at setdim\tud at dim@slimmargin{\tud at dim@widemargin*2/3}%
+  \tud at setdim\tud at dim@bothmargin{\tud at dim@widemargin*5/3}%
+  \tud at setdim\tud at dim@topmargin{\tud at dim@widemargin*7/6}%
+  \tud at setdim\tud at dim@barheight{\tud at dim@widemargin/6}%
+  \tud at setdim\tud at dim@headsep{\tud at dim@widemargin*2/5}%
+  \tud at setdim\tud at dim@logox{\tud at dim@widemargin*11/30}%
+  \tud at setdim\tud at dim@logoy{\tud at dim@widemargin*9/20}%
+  \tud at setdim\tud at dim@logowidth{\tud at dim@widemargin*19/10}%
+  \tud at setdim\tud at dim@footsep{\tud at dim@widemargin-\tud at dim@topmargin*3/5}%
   \if at tud@cdgeometry at adjust%
-    \setlength\tud at len@headsep{\dimexpr.707107\tud at len@headsep\relax}%
-    \setlength\tud at len@footsep{\dimexpr.707107\tud at len@footsep\relax}%
+    \tud at setdim\tud at dim@headsep{.707107\tud at dim@headsep}%
+    \tud at setdim\tud at dim@footsep{.707107\tud at dim@footsep}%
   \fi%
   \tud at cdgeometry@papersize at store%
 }
 \newcommand*\tud at cdgeometry@assignlayout{%
-  \ifdim\tud at len@layoutwidth<\p@\relax%
-    \setlength\tud at len@layoutwidth{\paperwidth}%
+  \ifdim\tud at dim@layoutwidth<\p@\relax%
+    \tud at setdim\tud at dim@layoutwidth{\paperwidth}%
   \fi%
-  \ifdim\tud at len@layoutheight<\p@\relax%
-    \setlength\tud at len@layoutheight{\paperheight}%
+  \ifdim\tud at dim@layoutheight<\p@\relax%
+    \tud at setdim\tud at dim@layoutheight{\paperheight}%
   \fi%
 }
 \newcommand*\tud at cdgeometry@papersize at last{}
@@ -4098,8 +4269,8 @@
     }%
     \ifx\tud at res@a\tud at cdgeometry@papersize at last\else%
       \appto\tud at res@b{%
-        \setlength\tud at len@layoutwidth{\z@}%
-        \setlength\tud at len@layoutheight{\z@}%
+        \tud at setdim\tud at dim@layoutwidth{\z@}%
+        \tud at setdim\tud at dim@layoutheight{\z@}%
         \tud at x@geometry at fixmargins%
       }%
     \fi%
@@ -4113,11 +4284,11 @@
   \expandafter\pagestyle\expandafter{\currentpagestyle}%
 }
 \if at tud@x at standalone@crop
-  \PreventPackageFromLoading{geometry}%
-  \let\tud at cdgeometry@process\relax%
+  \PreventPackageFromLoading{geometry}
+  \let\tud at cdgeometry@process\relax
 \else
-  \RequirePackage{geometry}[2010/09/12]%
-\fi%
+  \RequirePackage{geometry}
+\fi
 \AfterPackage*{geometry}{%
   \CheckCommand*\Gm at initnewgm{%
     \Gm at passfalse
@@ -4255,7 +4426,7 @@
     }{\@nameuse{Gm at restore@@#1}%
     \Gm at changelayout}%
   }%
-  \newif\if at tud@x at geometry@enabled%
+  \tud at newif\if at tud@x at geometry@enabled%
   \@tud at x@geometry at enabledtrue%
   \tud at cs@store{geometry}%
   \tud at cs@store{newgeometry}%
@@ -4269,7 +4440,7 @@
   }%
   \renewcommand*\restoregeometry[1][custom]{%
     \tud at cdgeometry@reset{#1}%
-    \if at atdocument%
+    \tud at if@preamble{}{%
       \ifcase\tud at cdgeometry@num\relax% false
         \tud at loadgeometry{init at typearea}%
         \@tud at x@geometry at fixmarginstrue%
@@ -4278,11 +4449,11 @@
         \@tud at x@geometry at fixmarginstrue%
       \fi%
       \tud at cdgeometry@process%
-    \fi%
+    }%
   }%
-  \apptocmd{\Gm at changelayout}{%
+  \apptocmd\Gm at changelayout{%
     \if at tud@x at geometry@enabled%
-      \if at atdocument%
+      \tud at if@preamble{}{%
         \@tud at x@geometry at fixmarginstrue%
         \ifcase\tud at cdgeometry@num\relax% false
           \tud at cdgeometry@reset{typearea}%
@@ -4290,15 +4461,15 @@
           \tud at cdgeometry@reset{custom}%
         \fi%
         \tud at cdgeometry@process%
-      \fi%
+      }%
     \fi%
   }{}{\tud at patch@wrn{Gm at changelayout}}%
-  \newif\if at tud@x at geometry@fixmargins%
+  \tud at newif\if at tud@x at geometry@fixmargins%
   \newcommand*\tud at x@geometry at fixmargins{%
     \ifGm at pass\else%
-      \addtolength\oddsidemargin{-\tud at len@layouthoffset}%
-      \addtolength\evensidemargin{-\tud at len@layouthoffset}%
-      \addtolength\topmargin{-\tud at len@layoutvoffset}%
+      \tud at addtodim\oddsidemargin{-\tud at dim@layouthoffset}%
+      \tud at addtodim\evensidemargin{-\tud at dim@layouthoffset}%
+      \tud at addtodim\topmargin{-\tud at dim@layoutvoffset}%
       \@tud at x@geometry at fixmarginsfalse%
     \fi%
   }%
@@ -4319,16 +4490,19 @@
         \tud at cdgeometry@assignlayout%
         \edef\tud at res@a{%
           \endgroup%
-            \noexpand\setlength\noexpand\tud at len@layoutwidth{\the\paperwidth}%
-            \noexpand\setlength\noexpand\tud at len@layoutheight{\the\paperheight}%
+            \unexpanded{\tud at setdim\tud at dim@layoutwidth}{\the\paperwidth}%
+            \unexpanded{\tud at setdim\tud at dim@layoutheight}{\the\paperheight}%
         }%
       \tud at res@a%
     \fi%
-    \ifstr{#2}{newgeometry}{%
-      \eappto\Gm at restore@org{%
+    \tud at if@strequal{#2}{newgeometry}{%
+      \edef\@tempb{%
         \noexpand\paperwidth=\the\paperwidth\relax%
         \noexpand\paperheight=\the\paperheight\relax%
       }%
+      \expandafter\apptocmd\expandafter\Gm at restore@org\expandafter{%
+        \@tempb%
+      }{}{\tud at patch@wrn{Gm at restore@org}}%
       \ifcase\tud at cdgeometry@num\relax%
         \typearea[current]{current}%
         \ifx\tud at x@geometry at parameter\@empty\else%
@@ -4367,11 +4541,11 @@
       \tud at x@geometry at area@def{paper}{\paperwidth:#1}%
     }%
     \TUD at parameter@def{layout}{%
-      \ifstr{#1}{false}{%
-        \setlength\tud at len@layoutwidth{\z@}%
-        \setlength\tud at len@layoutheight{\z@}%
-        \setlength\tud at len@layouthoffset{\z@}%
-        \setlength\tud at len@layoutvoffset{\z@}%
+      \tud at if@strequal{#1}{false}{%
+        \tud at setdim\tud at dim@layoutwidth{\z@}%
+        \tud at setdim\tud at dim@layoutheight{\z@}%
+        \tud at setdim\tud at dim@layouthoffset{\z@}%
+        \tud at setdim\tud at dim@layoutvoffset{\z@}%
       }{%
         \tud at x@geometry at area@def{layout}{#1}%
       }%
@@ -4388,25 +4562,25 @@
       \@tempa#1,,\@nil%
     }%
     \TUD at parameter@def{layoutwidth}{%
-      \tud at x@geometry at area@def{layout}{#1:\tud at len@layoutheight}%
+      \tud at x@geometry at area@def{layout}{#1:\tud at dim@layoutheight}%
     }%
     \TUD at parameter@def{layoutheight}{%
-      \tud at x@geometry at area@def{layout}{\tud at len@layoutwidth:#1}%
+      \tud at x@geometry at area@def{layout}{\tud at dim@layoutwidth:#1}%
     }%
     \TUD at parameter@def{layoutoffset}{%
       \def\@tempa##1,##2,##3\@nil{%
         \IfArgIsEmpty{##2}{%
-          \setlength\tud at len@layouthoffset{##1}%
-          \setlength\tud at len@layoutvoffset{##1}%
+          \tud at setdim\tud at dim@layouthoffset{##1}%
+          \tud at setdim\tud at dim@layoutvoffset{##1}%
         }{%
-          \setlength\tud at len@layouthoffset{##1}%
-          \setlength\tud at len@layoutvoffset{##2}%
+          \tud at setdim\tud at dim@layouthoffset{##1}%
+          \tud at setdim\tud at dim@layoutvoffset{##2}%
         }%
       }%
       \@tempa#1,,\@nil%
     }%
-    \TUD at parameter@def{layouthoffset}{\setlength\tud at len@layouthoffset{#1}}%
-    \TUD at parameter@def{layoutvoffset}{\setlength\tud at len@layoutvoffset{#1}}%
+    \TUD at parameter@def{layouthoffset}{\tud at setdim\tud at dim@layouthoffset{#1}}%
+    \TUD at parameter@def{layoutvoffset}{\tud at setdim\tud at dim@layoutvoffset{#1}}%
     \TUD at parameter@def{bleedmargin}{\TUDoption{bleedmargin}{#1}}%
     \TUD at parameter@handler at macro{%
       \eappto\tud at x@geometry at parameter{%
@@ -4417,20 +4591,24 @@
     }%
   }%
   \newcommand*\tud at x@geometry at area@def[2]{%
-    \tud at lowerstring{\@tempa}{#2}%
+    \tud at strlowercase\@tempa{#2}%
     \def\@tempb##1paper##2\@nil{%
-      \ifstr{##2}{paper}{\def\@tempa{##1}}{}%
+      \tud at if@strequal{##2}{paper}{\def\@tempa{##1}}{}%
     }%
     \expandafter\@tempb\@tempa paper\@nil%
     \@tempswafalse%
-    \ifstr{\@tempa}{seascape}{\@tempswatrue}{}%
-    \ifstr{\@tempa}{landscape}{\@tempswatrue}{}%
-    \ifstr{\@tempa}{portrait}{\@tempswatrue}{}%
-    \ifstr{\@tempa}{letter}{\@tempswatrue}{}%
-    \ifstr{\@tempa}{executive}{\@tempswatrue}{}%
-    \ifstr{\@tempa}{legal}{\@tempswatrue}{}%
+    \TUD at set@numkey{paper}{@tempc}{%
+      {seascape}{0},{landscape}{0},{portrait}{0},%
+      {letter}{0},{executive}{0},{legal}{0}%
+    }{\@tempa}%
+    \@tempswafalse%
+    \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+      \ifcase\@tempc\relax%
+        \@tempswatrue%
+      \fi%
+    \fi%
     \if at tempswa\else%
-      \ifx\@tempa\@empty\relax\else%
+      \ifx\@tempa\@empty\else%
         \def\@tempb##1##2\@nil{%
           \if ##1a\@tempswatrue%
             \else\if ##1b\@tempswatrue%
@@ -4439,7 +4617,7 @@
           \fi\fi\fi\fi%
           \if at tempswa%
             \@tempswafalse%
-            \IfArgIsEmpty{##2}{}{\ifnumber{##2}{\@tempswatrue}{}}%
+            \IfArgIsEmpty{##2}{}{\Ifnumber{##2}{\@tempswatrue}{}}%
           \fi%
         }%
         \expandafter\@tempb\@tempa\@nil%
@@ -4455,7 +4633,7 @@
         \if at tempswa\else%
           \def\tud at reserved##1:##2:##3:##4\@nil{%
             \if at tempswa\else%
-              \ifstr{\@tempa}{##1}{%
+              \tud at if@strequal{\@tempa}{##1}{%
                 \@tempswatrue%
                 \def\@tempa{##2##4:##3##4}%
               }{}%
@@ -4490,7 +4668,7 @@
         \IfArgIsEmpty{##2}{%
           \KOMAoption{paper}{##1}%
         }{%
-          \ifstr{#1}{layout}{\let\scr at setpaperorientation\relax}{}%
+          \tud at if@strequal{#1}{layout}{\let\scr at setpaperorientation\relax}{}%
           \KOMAoption{paper}{##1:##2}%
         }%
       }%
@@ -4505,16 +4683,16 @@
       \begingroup%
         \tud at cdgeometry@assignlayout%
         \@tud at res@swafalse%
-        \ifdim\tud at len@layoutwidth=\paperwidth\relax\else\@tud at res@swatrue\fi%
-        \ifdim\tud at len@layoutheight=\paperheight\relax\else\@tud at res@swatrue\fi%
+        \ifdim\tud at dim@layoutwidth=\paperwidth\relax\else\@tud at res@swatrue\fi%
+        \ifdim\tud at dim@layoutheight=\paperheight\relax\else\@tud at res@swatrue\fi%
         \edef\tud at res@a{%
           \endgroup%
-          \etex at unexpanded{\def#1}{%
+          \unexpanded{\def#1}{%
             layoutoffset={%
-              \the\tud at len@layouthoffset,\the\tud at len@layoutvoffset%
+              \the\tud at dim@layouthoffset,\the\tud at dim@layoutvoffset%
             }%
             \if at tud@res at swa%
-              ,layoutsize={\the\tud at len@layoutwidth,\the\tud at len@layoutheight}%
+              ,layoutsize={\the\tud at dim@layoutwidth,\the\tud at dim@layoutheight}%
             \fi%
           }%
         }%
@@ -4523,24 +4701,25 @@
   }%
   \newcommand*\tud at x@geometry at set[1]{%
     \@tud at x@geometry at enabledfalse%
-    \if at atdocument%
+    \tud at if@preamble{%
+      \Gm at initnewgm%
+      \edef\@tempa{papersize={\the\paperwidth,\the\paperheight},#1}%
+      \def\@tempc{\tud at cs@use{geometry}}%
+      \expandafter\@tempc\expandafter{\@tempa,driver=none}%
+    }{%
       \edef\@tempa{#1}%
       \tud at cs@store{Gm at restore@org}%
-      \eappto\Gm at restore@org{%
+      \edef\@tempb{%
         \noexpand\paperwidth=\the\paperwidth\relax%
         \noexpand\paperheight=\the\paperheight\relax%
       }%
+      \expandafter\apptocmd\expandafter\Gm at restore@org\expandafter{%
+        \@tempb%
+      }{}{\tud at patch@wrn{Gm at restore@org}}%
       \def\@tempc{\tud at cs@use{newgeometry}}%
       \expandafter\@tempc\expandafter{\@tempa}%
       \tud at cs@restore{Gm at restore@org}%
-    \else%
-      \Gm at initnewgm%
-      \edef\@tempa{%
-        paperwidth=\the\paperwidth,paperheight=\the\paperheight,#1%
-      }%
-      \def\@tempc{\tud at cs@use{geometry}}%
-      \expandafter\@tempc\expandafter{\@tempa,driver=none}%
-    \fi%
+    }%
     \@tud at x@geometry at enabledtrue%
   }%
   \newcommand*\tud at savegeometry[1]{%
@@ -4591,7 +4770,7 @@
       \fi%
       \ifcase\tud at cdgeometry@num\relax%
         \edef\tud at cdgeometry@hmargin{%
-          left=\the\dimexpr\oddsidemargin+1in-\ta at bcor\relax,%
+          left=\the\dimexpr\glueexpr\oddsidemargin+1in-\ta at bcor\relax\relax,%
           textwidth=\the\textwidth,%
           \tud at cdgeometry@mpincl,%
           marginparwidth=\the\marginparwidth,%
@@ -4609,8 +4788,7 @@
             top=\the\dimexpr\topmargin+1in\relax,%
           \else%
             includehead=false,%
-            top=\the\dimexpr\topmargin%
-              +\headheight+\headsep+1in\relax,%
+            top=\the\dimexpr\topmargin+\headheight+\headsep+1in\relax,%
           \fi%
           headheight=\the\headheight,%
           headsep=\the\headsep,%
@@ -4621,7 +4799,8 @@
       \else% custom
         \ifGm at pass\else%
           \edef\tud at cdgeometry@hmargin{%
-            left=\the\dimexpr\oddsidemargin+1in-\Gm at bindingoffset\relax,%
+            left=\the\dimexpr\glueexpr\oddsidemargin+1in%
+              -\Gm at bindingoffset\relax\relax,%
             textwidth=\the\textwidth,%
             \ifGm at includemp%
               includemp=true,%
@@ -4643,8 +4822,7 @@
               top=\the\dimexpr\topmargin+1in\relax,%
             \else%
               includehead=false,%
-              top=\the\dimexpr\topmargin%
-                +\headheight+\headsep+1in\relax,%
+              top=\the\dimexpr\topmargin+\headheight+\headsep+1in\relax,%
             \fi%
             headheight=\the\headheight,%
             headsep=\the\headsep,%
@@ -4658,37 +4836,43 @@
           }%
         \fi%
       \fi%
-      \setlength\tud at len@areadiff{%
-        \dimexpr\tud at len@topmargin+\tud at len@barheight+\tud at len@headsep%
-          -\topmargin-\headheight-\headsep-1in\relax%
+      \if at twoside%
+        \appto\tud at cdgeometry@hmargin{,twoside}%
+      \fi%
+      \if at twocolumn%
+        \appto\tud at cdgeometry@hmargin{,twocolumn}%
+      \fi%
+      \tud at setdim\tud at dim@areadiff{%
+        \tud at dim@topmargin+\tud at dim@barheight+\tud at dim@headsep%
+          -\topmargin-\headheight-\headsep-1in%
       }%
-      \ifdim\tud at len@areadiff<\z@\relax%
-        \addtolength\tud at len@headsep{-\tud at len@areadiff}%
-        \setlength\@tempdima{\z@}%
+      \ifdim\tud at dim@areadiff<\z@\relax%
+        \tud at addtodim\tud at dim@headsep{-\tud at dim@areadiff}%
+        \tud at setdim\@tempdima{\z@}%
       \else%
-        \setlength\@tempdima{\tud at len@areadiff}%
+        \tud at setdim\@tempdima{\tud at dim@areadiff}%
       \fi%
       \edef\tud at cdgeometry@tudmargin{%
         ignorehead=true,%
-        top=\the\dimexpr\tud at len@topmargin+\tud at len@barheight%
-          +\tud at len@headsep\relax,%
-        headheight=\the\dimexpr\tud at len@topmargin+\tud at len@barheight%
-          -\tud at len@logoy\relax,%
-        headsep=\the\tud at len@headsep,%
+        top=\the\dimexpr\tud at dim@topmargin+\tud at dim@barheight%
+          +\tud at dim@headsep\relax,%
+        headheight=\the\dimexpr\tud at dim@topmargin+\tud at dim@barheight%
+          -\tud at dim@logoy\relax,%
+        headsep=\the\tud at dim@headsep,%
         textheight=\the\dimexpr\textheight-\@tempdima\relax%
       }%
       \tud at if@v at lower{2.03}{%
-        \setlength\tud at len@ddcdiff{%
-          \dimexpr.6\tud at len@topmargin-\footskip+\tud at len@headsep%
-            +\footheight-1.25\baselineskip\relax%
+        \tud at setdim\tud at dim@ddcdiff{%
+          \tud at dim@topmargin*3/5-\footskip+\tud at dim@headsep%
+            +\footheight-1\baselineskip*5/4%
         }%
         \edef\tud at cdgeometry@ddcmargin{%
-          textheight=\the\dimexpr\textheight-\tud at len@areadiff%
-            -\tud at len@ddcdiff\relax,%
-          footskip=\the\dimexpr\footskip+\tud at len@ddcdiff\relax%
+          textheight=\the\dimexpr\textheight-\tud at dim@areadiff%
+            -\tud at dim@ddcdiff\relax,%
+          footskip=\the\dimexpr\footskip+\tud at dim@ddcdiff\relax%
         }%
       }{}%
-      \ifdim\dimexpr\tud at dim@extrabottommargin\relax=\z@\relax\else%
+      \ifdim\dimexpr\tud at extrabottommargin@dim\relax=\z@\relax\else%
         \begingroup%
           \edef\tud at res@a{%
             The key `extrabottommargin' is ineffective\MessageBreak%
@@ -4707,38 +4891,36 @@
           }%
         \tud at res@a%
       \fi%
-    \else%  true/symmetric/twoside
-      \ifcase\tud at cdgeometry@num\relax\or\or%  true
-        \setlength\@tempdima{\tud at len@widemargin}%
+    \else% true/symmetric/twoside
+      \ifcase\tud at cdgeometry@num\relax\or\or% true
+        \tud at setdim\@tempdima{\tud at dim@widemargin}%
         \if at reversemargin%
-          \setlength\@tempdimc{\tud at len@widemargin}%
+          \tud at setdim\@tempdimc{\tud at dim@widemargin}%
         \else%
-          \setlength\@tempdimc{\tud at len@slimmargin}%
+          \tud at setdim\@tempdimc{\tud at dim@slimmargin}%
         \fi%
       \or% symmetric
-        \setlength\@tempdima{.5\tud at len@both}%
-        \setlength\@tempdimc{.5\tud at len@both}%
+        \tud at setdim\@tempdima{\tud at dim@bothmargin/2}%
+        \tud at setdim\@tempdimc{\tud at dim@bothmargin/2}%
       \or% twoside
         \if at twoside%
-          \setlength\@tempdima{.4\tud at len@both}%
+          \tud at setdim\@tempdima{\tud at dim@bothmargin*2/5}%
         \else%
-          \setlength\@tempdima{.5\tud at len@both}%
+          \tud at setdim\@tempdima{\tud at dim@bothmargin/2}%
         \fi%
-        \setlength\@tempdimc{.5\tud at len@both}%
+        \tud at setdim\@tempdimc{\tud at dim@bothmargin/2}%
         \if at twoside%
           \if at reversemargin%
-            \setlength\@tempdimc{.4\tud at len@both}%
+            \tud at setdim\@tempdimc{\tud at dim@bothmargin*2/5}%
           \else%
-            \setlength\@tempdimc{.6\tud at len@both}%
+            \tud at setdim\@tempdimc{\tud at dim@bothmargin*3/5}%
           \fi%
         \fi%
       \fi%
-      \addtolength\@tempdimc{-\headsep}%
-      \setlength\@tempdimb{%
-        \dimexpr\tud at len@layoutwidth-\tud at len@both-\ta at bcor\relax%
-      }%
+      \tud at addtodim\@tempdimc{-\headsep}%
+      \tud at setdim\@tempdimb{\tud at dim@layoutwidth-\tud at dim@bothmargin-\ta at bcor}%
       \if at mincl%
-        \addtolength\@tempdimb{-\@tempdimc}%
+        \tud at addtodim\@tempdimb{-\@tempdimc}%
       \fi%
       \edef\tud at cdgeometry@hmargin{%
         left=\the\@tempdima,%
@@ -4745,7 +4927,7 @@
         textwidth=\the\@tempdimb,%
         \tud at cdgeometry@mpincl,%
         marginparwidth=\the\@tempdimc,%
-        marginparsep=\the\dimexpr.5\headsep\relax,%
+        marginparsep=\the\dimexpr\headsep/2\relax,%
         \if at reversemargin%
           reversemarginpar=true,%
         \else%
@@ -4766,68 +4948,69 @@
       \tud at if@v at lower{2.03}{%
         \edef\tud at cdgeometry@vmargin{%
           \tud at cdgeometry@hincl,%
-          top=\the\dimexpr.5\tud at len@both\relax,%
+          top=\the\dimexpr\tud at dim@bothmargin/2\relax,%
           headheight=\the\headheight,%
-          headsep=\the\tud at len@headsep,%
-          bottom=\the\dimexpr.5\tud at len@both+\tud at dim@extrabottommargin\relax,%
+          headsep=\the\tud at dim@headsep,%
+          bottom=\the\dimexpr\glueexpr\tud at dim@bothmargin/2%
+            +\tud at extrabottommargin@dim\relax\relax,%
           \tud at cdgeometry@fincl,%
-          footskip=\the\dimexpr\tud at len@headsep+\footheight%
-            -1.25\baselineskip\relax%
+          footskip=\the\dimexpr\tud at dim@headsep+\footheight%
+            -1\baselineskip*5/4\relax%
         }%
       }{%
         \edef\tud at cdgeometry@vmargin{%
           \tud at cdgeometry@hincl,%
-          top=\the\tud at len@slimmargin,%
+          top=\the\tud at dim@slimmargin,%
           headheight=\the\headheight,%
           headsep=\the\headsep,%
-          bottom=\the\dimexpr\tud at len@widemargin%
-            +\tud at dim@extrabottommargin\relax,%
+          bottom=\the\dimexpr\glueexpr\tud at dim@widemargin%
+            +\tud at extrabottommargin@dim\relax\relax,%
           \tud at cdgeometry@fincl,%
-          footskip=\the\dimexpr\tud at len@footsep+\footheight\relax%
+          footskip=\the\dimexpr\tud at dim@footsep+\footheight\relax%
         }%
       }%
       \edef\tud at cdgeometry@tudmargin{%
         ignorehead=true,%
-        top=\the\dimexpr\tud at len@topmargin+\tud at len@barheight%
-          +\tud at len@headsep\relax,%
-        headheight=\the\dimexpr\tud at len@topmargin+\tud at len@barheight%
-          -\tud at len@logoy\relax,%
-        headsep=\the\tud at len@headsep%
+        top=\the\dimexpr\tud at dim@topmargin+\tud at dim@barheight%
+          +\tud at dim@headsep\relax,%
+        headheight=\the\dimexpr\tud at dim@topmargin+\tud at dim@barheight%
+          -\tud at dim@logoy\relax,%
+        headsep=\the\tud at dim@headsep%
       }%
-      \setlength\tud at len@areadiff{%
-        \dimexpr\tud at len@topmargin+\tud at len@barheight+\tud at len@headsep%
-          -\tud at len@slimmargin\relax%
+      \tud at setdim\tud at dim@areadiff{%
+        \tud at dim@topmargin+\tud at dim@barheight+\tud at dim@headsep%
+          -\tud at dim@slimmargin%
       }%
       \tud at if@v at lower{2.03}{%
-        \setlength\tud at len@areadiff{%
-          \dimexpr\tud at len@topmargin+\tud at len@barheight+\tud at len@headsep%
-            -.5\tud at len@both\relax%
+        \tud at setdim\tud at dim@areadiff{%
+          \tud at dim@topmargin+\tud at dim@barheight+\tud at dim@headsep%
+            -\tud at dim@bothmargin/2%
         }%
-        \setlength\tud at len@ddcdiff{.6\tud at len@topmargin}%
+        \tud at setdim\tud at dim@ddcdiff{\tud at dim@topmargin*3/5}%
         \edef\tud at cdgeometry@ddcmargin{%
           \if at fincl%
-            bottom=\the\dimexpr.5\tud at len@both+\tud at dim@extrabottommargin%
-              +\tud at len@ddcdiff+\tud at len@headsep+\footheight%
-              -1.25\baselineskip\relax,%
+            bottom=\the\dimexpr\glueexpr\tud at dim@bothmargin/2%
+              +\tud at extrabottommargin@dim+\tud at dim@ddcdiff+\tud at dim@headsep%
+              +\footheight-1\baselineskip*5/4\relax\relax,%
           \else%
-            bottom=\the\dimexpr.5\tud at len@both+\tud at dim@extrabottommargin%
-              +\tud at len@ddcdiff\relax,%
+            bottom=\the\dimexpr\glueexpr\tud at dim@bothmargin/2%
+              +\tud at extrabottommargin@dim+\tud at dim@ddcdiff\relax\relax,%
           \fi%
-          footskip=\the\dimexpr\tud at len@headsep+\footheight%
-            -1.25\baselineskip+\tud at len@ddcdiff\relax,%
+          footskip=\the\dimexpr\tud at dim@headsep+\footheight%
+            -1\baselineskip*5/4+\tud at dim@ddcdiff\relax,%
         }%
       }{}%
     \fi%
-    \ifdim\tud at len@areadiff<\z@\relax\setlength\tud at len@areadiff{\z@}\fi%
-    \global\tud at len@areadiff=\tud at len@areadiff%
-    \setlength\tud at len@areaheadvskip{.22\tud at len@topmargin}%
+    \ifdim\tud at dim@areadiff<\z@\relax\tud at setdim\tud at dim@areadiff{\z@}\fi%
+    \global\tud at dim@areadiff=\tud at dim@areadiff%
+    \tud at setdim\tud at dim@areaheadvskip{\tud at dim@topmargin*11/50}%
     \if at tud@cdgeometry at adjust%
-      \setlength\tud at len@areaheadvskip{.5\tud at len@areaheadvskip}%
+      \tud at setdim\tud at dim@areaheadvskip{\tud at dim@areaheadvskip/2}%
     \fi%
-    \global\tud at len@areaheadvskip=\tud at len@areaheadvskip%
+    \global\tud at dim@areaheadvskip=\tud at dim@areaheadvskip%
     \tud at if@v at lower{2.03}{%
-      \ifdim\tud at len@ddcdiff<\z@\relax\setlength\tud at len@ddcdiff{\z@}\fi%
-      \global\tud at len@ddcdiff=\tud at len@ddcdiff%
+      \ifdim\tud at dim@ddcdiff<\z@\relax\tud at setdim\tud at dim@ddcdiff{\z@}\fi%
+      \global\tud at dim@ddcdiff=\tud at dim@ddcdiff%
     }{}%
     \tud at cdgeometry@@@process%
   }%
@@ -4862,11 +5045,11 @@
     \or% custom
       \tud at savegeometry{current at custom}%
     \fi%
-    \if at atdocument%
-      \ifstr{\tud at currentgeometry}{stdarea}{}{%
+    \tud at if@preamble{}{%
+      \tud at if@strequal{\tud at currentgeometry}{stdarea}{}{%
         \expandafter\tud at loadgeometry\expandafter{\tud at currentgeometry}%
       }%
-    \fi%
+    }%
   }%
   \newcommand*\tud at cdgeometry@hincl{%
     \if at hincl%
@@ -4893,12 +5076,12 @@
     \csuse{@ta at usegeometryfalse}%
     \tud at x@geometry at getlayout{\tud at cdgeometry@layout}%
     \tud at cs@store{tud at cdgeometry@num}%
-    \tud at cs@store{tud at dim@extrabottommargin}%
-    \def\tud at dim@extrabottommargin{\z@}%
+    \tud at cs@store{tud at extrabottommargin@dim}%
+    \def\tud at extrabottommargin@dim{0pt}%
     \tud at cdgeometry@reset{custom}%
     \begingroup%
       \epreto\tud at x@geometry at init{%
-        paperwidth=\the\paperwidth,paperheight=\the\paperheight,%
+        papersize={\the\paperwidth,\the\paperheight},%
         \tud at cdgeometry@layout,%
         \tud at cdgeometry@mpincl,%
         \if at reversemargin%
@@ -4924,14 +5107,14 @@
     \tud at x@typearea at warnings@on%
     \tud at cdgeometry@@process%
     \tud at savegeometry{init at typearea}%
-    \def\tud at res@b##1{%
-      \eappto\Gm at restore@@init at typearea{%
-        \noexpand\PackageWarningNoLine{typearea}{##1}%
-      }%
+    \def\do##1{%
+      \apptocmd\Gm at restore@@init at typearea{%
+        ##1%
+      }{}{\tud at patch@wrn{Gm at restore@@init at typearea}}%
     }%
-    \forlistloop\tud at res@b{\tud at res@a}%
+    \dolistloop{\tud at res@a}%
     \tud at cs@restore{tud at cdgeometry@num}%
-    \tud at cs@restore{tud at dim@extrabottommargin}%
+    \tud at cs@restore{tud at extrabottommargin@dim}%
     \BeforeSelectAnyPageStyle{\tud at BeforeSelectAnyPageStyle{##1}}%
     \ifcase\tud at cdgeometry@num\relax% typearea
       \tud at loadgeometry{init at typearea}%
@@ -4942,90 +5125,84 @@
     \tud at cdgeometry@process%
     \let\tud at cdgeometry@@init\relax%
   }%
-  \newcommand*\tud at currentgeometry{}
+  \newcommand*\tud at currentgeometry{}%
   \newcommand*\tud at BeforeSelectAnyPageStyle[1]{%
-    \ifstr{#1}{\GetRealPageStyle{#1}}{%
+    \tud at if@strequal{#1}{\GetRealPageStyle{#1}}{%
       \tud at if@tudheadings{#1}{%
         \tud at if@v at lower{2.03}{%
           \tud at ddc@check%
           \ifcase\@tempb\relax% \tud at ddc@foot at num=false
-            \ifstr{\tud at currentgeometry}{tudarea}{}{%
+            \tud at if@strequal{\tud at currentgeometry}{tudarea}{}{%
               \tud at loadgeometry{tudarea}%
               \gdef\tud at currentgeometry{tudarea}%
             }%
           \else% \tud at ddc@foot at num!=false
-            \ifstr{\tud at currentgeometry}{tudareaddc}{}{%
+            \tud at if@strequal{\tud at currentgeometry}{tudareaddc}{}{%
               \tud at loadgeometry{tudareaddc}%
               \gdef\tud at currentgeometry{tudareaddc}%
             }%
           \fi%
         }{%
-          \ifstr{\tud at currentgeometry}{tudarea}{}{%
+          \tud at if@strequal{\tud at currentgeometry}{tudarea}{}{%
             \tud at loadgeometry{tudarea}%
             \gdef\tud at currentgeometry{tudarea}%
           }%
         }%
-        \setlength\tud at len@areavskip{\z@}%
-        \tud at komafont@set{pagenumber}{\usekomafont{tudheadings}}%
-        \tud at komafont@set{pagefoot}{\usekomafont{tudheadings}}%
+        \tud at setdim\tud at dim@areavskip{\z@}%
       }{%
-        \ifstr{\tud at currentgeometry}{stdarea}{}{%
+        \tud at if@strequal{\tud at currentgeometry}{stdarea}{}{%
           \tud at loadgeometry{stdarea}%
           \gdef\tud at currentgeometry{stdarea}%
         }%
-        \setlength\tud at len@areavskip{\tud at len@areadiff}%
+        \tud at setdim\tud at dim@areavskip{\tud at dim@areadiff}%
         \ifnum\tud at cdgeometry@num>\@ne\relax% true/symmetric/twoside
           \if at hincl%
-            \addtolength\tud at len@areavskip{%
-              \dimexpr-\headheight-\tud at len@headsep\relax%
-            }%
+            \tud at addtodim\tud at dim@areavskip{-\headheight-\tud at dim@headsep}%
           \fi%
         \fi%
-        \tud at komafont@unset{pagenumber}%
-        \tud at komafont@unset{pagefoot}%
       }%
-      \global\tud at len@areavskip=\tud at len@areavskip%
+      \global\tud at dim@areavskip=\tud at dim@areavskip%
     }{}%
-  }
+  }%
 }
 \newcommand*\tud at x@typearea at before{%
   \tud at cdgeometry@resetlayout%
-  \tud at skip@store{paperheight}%
-  \tud at skip@store{paperwidth}%
+  \tud at cslength@store{paperheight}%
+  \tud at cslength@store{paperwidth}%
   \begingroup%
     \tud at cdgeometry@assignlayout%
     \edef\tud at res@a{%
       \endgroup%
-      \etex at unexpanded{\setlength\paperheight}{\the\tud at len@layoutheight}%
-      \etex at unexpanded{\setlength\paperwidth}{\the\tud at len@layoutwidth}%
+      \unexpanded{\tud at setdim\paperheight}{\the\tud at dim@layoutheight}%
+      \unexpanded{\tud at setdim\paperwidth}{\the\tud at dim@layoutwidth}%
     }%
   \tud at res@a%
 }
 \newcommand*\tud at x@typearea at after{%
-  \tud at skip@restore{paperheight}%
-  \tud at skip@restore{paperwidth}%
-  \if at atdocument%
+  \tud at cslength@restore{paperheight}%
+  \tud at cslength@restore{paperwidth}%
+  \tud at if@preamble{%
+    \TUD at key@preset{cdgeometry}{false}%
+  }{%
     \tud at cdgeometry@reset{typearea}%
     \tud at cdgeometry@process%
-  \else%
-    \TUD at key@preset{cdgeometry}{false}%
-  \fi%
+  }%
 }
 \newcommand*\tud at x@typearea at init{\recalctypearea}%
 \xpretocmd{\typearea}{%
   \tud at x@typearea at before%
-  \def\tud at x@typearea at init{\typearea[#1]{#2}}%
+  \def\tud at x@typearea at init{\typearea[{#1}]{#2}}%
 }{}{\tud at patch@wrn{typearea}}
 \xapptocmd{\typearea}{\tud at x@typearea at after}{}{\tud at patch@wrn{typearea}}
 \xpretocmd{\areaset}{%
   \tud at x@typearea at before%
   \begingroup%
-    \setlength\@tempdima{#2}%
-    \setlength\@tempdimb{#3}%
+    \tud at setdim\@tempdima{#2}%
+    \tud at setdim\@tempdimb{#3}%
     \edef\tud at res@a{%
       \endgroup%
-      \noexpand\def\noexpand\tud at x@typearea at init{%
-        \noexpand\areaset[#1]{\the\@tempdima}{\the\@tempdimb}%
+      \def\noexpand\tud at x@typearea at init{%
+        \unexpanded{\areaset[{#1}]}{\the\@tempdima}{\the\@tempdimb}%
       }%
     }%
   \tud at res@a%
@@ -5033,17 +5210,17 @@
 \xapptocmd{\areaset}{\tud at x@typearea at after}{}{\tud at patch@wrn{areaset}}
 \tud at cs@store{storeareas}
 \renewcommand*\storeareas[1]{%
-  \begingroup
+  \begingroup%
     \tud at x@geometry at fixmargins%
     \tud at cs@use{storeareas}{#1}%
-    \def\tud at res@b##1{\unexpanded{\setlength##1}{\the##1}}%
+    \def\tud at res@b##1{\unexpanded{\tud at setdim##1}{\the##1}}%
     \edef\tud at res@a{%
       \endgroup%
-      \etex at unexpanded{\def#1}{%
-        \tud at res@b{\tud at len@layoutwidth}%
-        \tud at res@b{\tud at len@layoutheight}%
-        \tud at res@b{\tud at len@layouthoffset}%
-        \tud at res@b{\tud at len@layoutvoffset}%
+      \unexpanded{\def#1}{%
+        \tud at res@b{\tud at dim@layoutwidth}%
+        \tud at res@b{\tud at dim@layoutheight}%
+        \tud at res@b{\tud at dim@layouthoffset}%
+        \tud at res@b{\tud at dim@layoutvoffset}%
         \expandonce#1%
         \def\noexpand\tud at cdgeometry@num{\tud at cdgeometry@num}%
       }%
@@ -5057,8 +5234,8 @@
     \let\tud at cdgeometry@@init\relax%
   }%
   \newcommand*\tud at cdgeometry@@process{%
-    \setlength\tud at len@layoutwidth{\paperwidth}%
-    \setlength\tud at len@layoutheight{\paperheight}%
+    \tud at setdim\tud at dim@layoutwidth{\paperwidth}%
+    \tud at setdim\tud at dim@layoutheight{\paperheight}%
     \tud at cdgeometry@set%
   }%
   \newcommand*\tud at x@geometry at fixmargins{}%
@@ -5073,41 +5250,52 @@
     \fi%
   }%
 }
-\patchcmd{\cleardoubleoddpageusingstyle}{\pagestyle}{%
-  \let\tud at BeforeSelectAnyPageStyle\@gobble\pagestyle%
+\patchcmd\cleardoubleoddpageusingstyle{%
+  \pagestyle%
+}{%
+  \let\tud at BeforeSelectAnyPageStyle\@gobble%
+  \pagestyle%
 }{}{\tud at patch@wrn{cleardoubleoddpageusingstyle}}
-\patchcmd{\cleardoubleevenpageusingstyle}{\pagestyle}{%
-  \let\tud at BeforeSelectAnyPageStyle\@gobble\pagestyle%
+\patchcmd\cleardoubleevenpageusingstyle{%
+  \pagestyle%
+}{%
+  \let\tud at BeforeSelectAnyPageStyle\@gobble%
+  \pagestyle%
 }{}{\tud at patch@wrn{cleardoubleevenpageusingstyle}}
-\patchcmd{\cleardoublepageusingstyle}{\pagestyle}{%
-  \let\tud at BeforeSelectAnyPageStyle\@gobble\pagestyle%
+\patchcmd\cleardoublepageusingstyle{%
+  \pagestyle%
+}{%
+  \let\tud at BeforeSelectAnyPageStyle\@gobble%
+  \pagestyle%
 }{}{\tud at patch@wrn{cleardoublepageusingstyle}}
 \tud at if@v at lower{2.03}{%
   \newcommand*\tud at ddc@enlargepage[1][]{%
     \tud at if@tudheadings{#1}{%
-      \ifstr{\tud at currentgeometry}{tudareaddc}{}{%
+      \tud at if@strequal{\tud at currentgeometry}{tudareaddc}{}{%
         \tud at ddc@check%
         \ifcase\@tempb\relax\else% \tud at ddc@foot at num!=false
-          \enlargethispage{-\tud at len@ddcdiff}%
+          \enlargethispage{-\tud at dim@ddcdiff}%
         \fi%
       }%
     }{}%
   }%
 }{}
-%%% From File: tudscr-pagestyle.dtx
+%%%% From File: tudscr-pagestyle.dtx (no git version info was found)
 \if at tud@x at standalone@crop
   \PreventPackageFromLoading{scrlayer-scrpage}%
 \else
   \PassOptionsToPackage{automark}{scrlayer-scrpage}%
-  \AtEndPreamble{\RequirePackage{scrlayer-scrpage}[2020/09/21]}%
+  \AtEndPreamble{\RequirePackage{scrlayer-scrpage}[%
+  2022/05/01 v3.36 KOMA-Script
+  ]}%
 \fi
 \AfterPackage{scrlayer-scrpage}{%
   \DeclareNewLayer[%
     background,headsep,%
-    addhoffset=\dimexpr\tud at len@logox-\tud at len@widemargin\relax,%
-    addwidth=\dimexpr-\tud at len@logox+\tud at len@widemargin\relax,%
-    voffset=\tud at len@logoy,%
-    addvoffset=\tud at len@layoutvoffset,%
+    addhoffset=\tud at dim@logox-\tud at dim@widemargin,%
+    addwidth=-\tud at dim@logox+\tud at dim@widemargin,%
+    voffset=\tud at dim@logoy,%
+    addvoffset=\tud at dim@layoutvoffset,%
     contents={%
       \tud at mainlogo@set%
       \tud at headlogo@option at set%
@@ -5116,10 +5304,10 @@
   ]{tudheadings.head.content}%
   \DeclareNewLayer[%
     background,%
-    width=\dimexpr\tud at len@layoutwidth+\tud at dim@bleedmargin*2\relax,%
-    addhoffset=\dimexpr\tud at len@layouthoffset-\tud at dim@bleedmargin\relax,%
-    height=\dimexpr\tud at len@topmargin+\tud at dim@bleedmargin\relax,%
-    addvoffset=\dimexpr\tud at len@layoutvoffset-\tud at dim@bleedmargin\relax,%
+    width=\glueexpr\tud at dim@layoutwidth+(\tud at bleedmargin@dim)*2\relax,%
+    addhoffset=\glueexpr\tud at dim@layouthoffset-\tud at bleedmargin@dim\relax,%
+    height=\glueexpr\tud at dim@topmargin+\tud at bleedmargin@dim\relax,%
+    addvoffset=\glueexpr\tud at dim@layoutvoffset-\tud at bleedmargin@dim\relax,%
     contents={%
       \ifnum\tud at head@bar at num>\tw@\relax% cdhead=color
         \color{HKS41}%
@@ -5129,16 +5317,16 @@
   ]{tudheadings.head.back}%
   \DeclareNewLayer[%
     background,%
-    width=\dimexpr\tud at len@layoutwidth+\tud at dim@bleedmargin*2\relax,%
-    addhoffset=\dimexpr\tud at len@layouthoffset-\tud at dim@bleedmargin\relax,%
-    height=\tud at len@barheight,%
-    voffset=\tud at len@topmargin,%
-    addvoffset=\tud at len@layoutvoffset,%
+    width=\glueexpr\tud at dim@layoutwidth+(\tud at bleedmargin@dim)*2\relax,%
+    addhoffset=\glueexpr\tud at dim@layouthoffset-\tud at bleedmargin@dim\relax,%
+    height=\tud at dim@barheight,%
+    voffset=\tud at dim@topmargin,%
+    addvoffset=\tud at dim@layoutvoffset,%
     contents={%
       \ifnum\tud at head@bar at num>\@ne\relax% cdhead=barcolor/color
         \color{HKS41!60}%
-        \setlength\@tempdima{\dimexpr\ht\strutbox-\tud at len@barheight\relax}%
-        \ifdim\@tempdima<\z@\relax\setlength\@tempdima{\z@}\fi%
+        \tud at setdim\@tempdima{\ht\strutbox-\tud at dim@barheight}%
+        \ifdim\@tempdima<\z@\relax\tud at setdim\@tempdima{\z@}\fi%
         \raisebox{\@tempdima}{\rule{\layerwidth}{\layerheight}}%
       \fi%
     },%
@@ -5145,8 +5333,8 @@
   ]{tudheadings.head.bar}%
   \DeclareNewLayer[%
     background,headsep,%
-    voffset=\dimexpr\tud at len@topmargin+\tud at len@line\relax,%
-    addvoffset=\tud at len@layoutvoffset,%
+    voffset=\tud at dim@topmargin+\tud at dim@line,%
+    addvoffset=\tud at dim@layoutvoffset,%
     contents={%
       \tud at head@font at set%
       \tud at head@text at set%
@@ -5155,8 +5343,8 @@
   ]{tudheadings.head.text}%
   \DeclareNewLayer[%
     background,headsep,%
-    voffset=\dimexpr\tud at len@topmargin-.5\tud at len@line\relax,%
-    addvoffset=\tud at len@layoutvoffset,%
+    voffset=\tud at dim@topmargin-\tud at dim@line/2,%
+    addvoffset=\tud at dim@layoutvoffset,%
     contents={%
       \ifnum\tud at head@bar at num<\tw@\relax% cdhead=nocolor/litecolor
         \if at tud@head at widebar\else\tud at head@rule{\layerwidth}\fi%
@@ -5165,9 +5353,8 @@
   ]{tudheadings.head.upline}%
   \DeclareNewLayer[%
     background,headsep,%
-    voffset=\dimexpr\tud at len@topmargin+\tud at len@barheight%
-      -.5\tud at len@line\relax,%
-    addvoffset=\tud at len@layoutvoffset,%
+    voffset=\tud at dim@topmargin+\tud at dim@barheight-\tud at dim@line/2,%
+    addvoffset=\tud at dim@layoutvoffset,%
     contents={%
       \ifnum\tud at head@bar at num<\tw@\relax% cdhead=nocolor/litecolor
         \if at tud@head at widebar\else\tud at head@rule{\layerwidth}\fi%
@@ -5176,10 +5363,10 @@
   ]{tudheadings.head.lowline}%
   \DeclareNewLayer[%
     background,%
-    width=\dimexpr\tud at len@layoutwidth+\tud at dim@bleedmargin*2\relax,%
-    addhoffset=\dimexpr\tud at len@layouthoffset-\tud at dim@bleedmargin\relax,%
-    voffset=\dimexpr\tud at len@topmargin-.5\tud at len@line\relax,%
-    addvoffset=\tud at len@layoutvoffset,%
+    width=\glueexpr\tud at dim@layoutwidth+(\tud at bleedmargin@dim)*2\relax,%
+    addhoffset=\glueexpr\tud at dim@layouthoffset-\tud at bleedmargin@dim\relax,%
+    voffset=\tud at dim@topmargin-\tud at dim@line/2,%
+    addvoffset=\tud at dim@layoutvoffset,%
     contents={%
       \ifnum\tud at head@bar at num<\tw@\relax% cdhead=nocolor/litecolor
         \if at tud@head at widebar\tud at head@rule{\layerwidth}\fi%
@@ -5188,11 +5375,10 @@
   ]{tudheadings.head.uplinewide}%
   \DeclareNewLayer[%
     background,%
-    width=\dimexpr\tud at len@layoutwidth+\tud at dim@bleedmargin*2\relax,%
-    addhoffset=\dimexpr\tud at len@layouthoffset-\tud at dim@bleedmargin\relax,%
-    voffset=\dimexpr\tud at len@topmargin+\tud at len@barheight%
-      -.5\tud at len@line\relax,%
-    addvoffset=\tud at len@layoutvoffset,%
+    width=\glueexpr\tud at dim@layoutwidth+(\tud at bleedmargin@dim)*2\relax,%
+    addhoffset=\glueexpr\tud at dim@layouthoffset-\tud at bleedmargin@dim\relax,%
+    voffset=\tud at dim@topmargin+\tud at dim@barheight-\tud at dim@line/2,%
+    addvoffset=\tud at dim@layoutvoffset,%
     contents={%
       \ifnum\tud at head@bar at num<\tw@\relax% cdhead=nocolor/litecolor
         \if at tud@head at widebar\tud at head@rule{\layerwidth}\fi%
@@ -5201,16 +5387,16 @@
   ]{tudheadings.head.lowlinewide}%
   \DeclareNewLayer[%
     foreground,headsep,%
-    addvoffset=.5\tud at len@headsep,%
-    height=\baselineskip,%
+    addvoffset=\tud at dim@headsep/2,%
+    height=1\baselineskip,%
     contents={\if at tud@head at date\hfill\tud at date@print\fi},%
   ]{tudheadings.head.date}%
   \DeclareNewLayer[%
     background,foot,%
-    width=\dimexpr\tud at len@layoutwidth+\tud at dim@bleedmargin*2\relax,%
-    hoffset=\dimexpr\tud at len@layouthoffset-\tud at dim@bleedmargin\relax,%
-    height=\dimexpr\tud at len@layoutheight-\layeryoffset%
-      +\tud at len@layoutvoffset+\tud at dim@bleedmargin\relax,%
+    width=\glueexpr\tud at dim@layoutwidth+(\tud at bleedmargin@dim)*2\relax,%
+    hoffset=\glueexpr\tud at dim@layouthoffset-\tud at bleedmargin@dim\relax,%
+    height=\glueexpr\tud at dim@layoutheight-\layeryoffset%
+      +\tud at dim@layoutvoffset+\tud at bleedmargin@dim\relax,%
     addvoffset=-\dp\strutbox,%
     contents={%
       \if at tud@foot at colored%
@@ -5225,7 +5411,9 @@
           \fi%
         }{%
           \def\@tempc{\color{HKS41}}%
-          \ifstr{\tud at pagecolor}{HKS41}{\def\@tempc{\color{HKS41!60}}}{}%
+          \tud at if@strequal{\tud at pagecolor}{HKS41}%
+            {\def\@tempc{\color{HKS41!60}}}%
+            {}%
         }%
         \ifx\@tempc\relax\else%
           \@tempc\rule{\layerwidth}{\layerheight}%
@@ -5235,7 +5423,7 @@
   ]{tudheadings.foot.back}%
   \tud at if@v at lower{2.03}{%
     \ModifyLayer[%
-      addvoffset=-\tud at len@ddcdiff+\ht\strutbox,%
+      addvoffset=-\tud at dim@ddcdiff+\ht\strutbox,%
       contents={%
         \if at tud@foot at colored%
           \let\@tempc\relax%
@@ -5247,7 +5435,9 @@
             \fi%
           }{%
             \def\@tempc{\color{HKS41}}%
-            \ifstr{\tud at pagecolor}{HKS41}{\def\@tempc{\color{HKS41!60}}}{}%
+            \tud at if@strequal{\tud at pagecolor}{HKS41}%
+              {\def\@tempc{\color{HKS41!60}}}%
+              {}%
           }%
           \ifx\@tempc\relax\else%
             \tud at ddc@check%
@@ -5255,7 +5445,7 @@
               \vbox to \layerheight{%
                 \vfil\@tempc%
                 \rule{\layerwidth}{%
-                  \dimexpr\layerheight-\tud at len@ddcdiff+\ht\strutbox\relax%
+                  \dimexpr\layerheight-\tud at dim@ddcdiff+\ht\strutbox\relax%
                 }%
               }%
             \else% \tud at ddc@foot at num!=false
@@ -5268,13 +5458,9 @@
   }{}%
   \DeclareNewLayer[%
     background,foot,%
-    height=\dimexpr\tud at len@layoutheight-\layeryoffset%
-      +\tud at len@layoutvoffset\relax,%
+    height=\tud at dim@layoutheight-\layeryoffset+\tud at dim@layoutvoffset,%
     contents={%
-      \TUD at deprecated@lengthcs[%
-        \global\@tud at footlogo@option at settrue%
-      ]{footlogoheight}%
-      \setlength\@tempdima{\dimexpr\layerheight-\dp\strutbox\relax}%
+      \tud at setdim\@tempdima{\layerheight-\dp\strutbox}%
       \tud at footlogo@cmd at use{\@tempdima}{\layerwidth}%
       \tud at footlogo@ddc at use{\@tempdima}{\layerwidth}%
       \tud at footcontent@use{\@tempdima}{\layerwidth}%
@@ -5282,16 +5468,13 @@
   ]{tudheadings.foot.content}%
   \tud at if@v at lower{2.03}{%
     \ModifyLayer[%
-      addvoffset=-\tud at len@ddcdiff+\ht\strutbox,%
+      addvoffset=-\tud at dim@ddcdiff+\ht\strutbox,%
       contents={%
-        \TUD at deprecated@lengthcs[%
-          \global\@tud at footlogo@option at settrue%
-        ]{footlogoheight}%
-        \setlength\@tempdima{\dimexpr\layerheight-\dp\strutbox\relax}%
+        \tud at setdim\@tempdima{\layerheight-\dp\strutbox}%
         \tud at ddc@check%
         \ifcase\@tempb\relax% \tud at ddc@foot at num=false
-          \addtolength\@tempdima{\dimexpr\ht\strutbox-\tud at len@ddcdiff\relax}%
-          \vskip\dimexpr\tud at len@ddcdiff-\ht\strutbox-\baselineskip\relax%
+          \tud at addtodim\@tempdima{\ht\strutbox-\tud at dim@ddcdiff}%
+          \vskip\dimexpr\tud at dim@ddcdiff-\ht\strutbox-1\baselineskip\relax%
         \fi%
         \tud at footlogo@cmd at use{\@tempdima}{\layerwidth}%
         \tud at footlogo@ddc at use{\@tempdima}{\layerwidth}%
@@ -5303,7 +5486,7 @@
     background,%
   ]{tudheadings.last}%
   \DeclareNewPageStyleByLayers[%
-    onselect=\tud at ps@onselect,onbackground=\tud at ps@onbackground%
+    onbackground=\tud at ps@onbackground%
   ]{tudheadings}{%
     tudheadings.head.back,%
     tudheadings.head.content,%
@@ -5327,7 +5510,7 @@
   \DeclareNewPageStyleAlias{tudscr}{tudheadings}%
   \DeclareNewPageStyleAlias{tudscrheadings}{tudheadings}%
   \DeclareNewPageStyleByLayers[%
-    onselect=\tud at ps@onselect,onbackground=\tud at ps@onbackground%
+    onbackground=\tud at ps@onbackground%
   ]{plain.tudheadings}{%
     tudheadings.head.back,%
     tudheadings.head.content,%
@@ -5353,7 +5536,7 @@
   \DeclareNewPageStyleAlias{tudheadingsplain}{plain.tudheadings}%
   \DeclareNewPageStyleAlias{tudscrheadingsplain}{plain.tudheadings}%
   \DeclareNewPageStyleByLayers[%
-    onselect=\tud at ps@onselect,onbackground=\tud at ps@onbackground%
+    onbackground=\tud at ps@onbackground%
   ]{empty.tudheadings}{%
     tudheadings.head.back,%
     tudheadings.head.content,%
@@ -5375,12 +5558,10 @@
   \DeclareNewPageStyleAlias{tudscrheadingsempty}{empty.tudheadings}%
   \DeclareNewLayer[%
     background,%
-    area=%
-      {\dimexpr\tud at len@layouthoffset-\tud at dim@bleedmargin\relax}%
-      {\dimexpr\tud at len@layoutvoffset-\tud at dim@bleedmargin\relax}%
-      {\dimexpr\tud at len@layoutwidth+\tud at dim@bleedmargin*2\relax}%
-      {\dimexpr\tud at len@layoutheight+\tud at dim@bleedmargin*2\relax}%
-    ,%
+    hoffset=\glueexpr\tud at dim@layouthoffset-\tud at bleedmargin@dim\relax,%
+    voffset=\glueexpr\tud at dim@layoutvoffset-\tud at bleedmargin@dim\relax,%
+    width=\glueexpr\tud at dim@layoutwidth+(\tud at bleedmargin@dim)*2\relax,%
+    height=\glueexpr\tud at dim@layoutheight+(\tud at bleedmargin@dim)*2\relax,%
     contents={%
       \ifdefvoid{\tud at pagecolor}{}{%
         \color{\tud at pagecolor}%
@@ -5389,6 +5570,22 @@
     },%
   ]{tudheadings.pagecolor}%
   \AddLayersToPageStyle{@everystyle@}{tudheadings.pagecolor}%
+  \AddToLayerPageStyleOptions{@everystyle@}{%
+    onselect={%
+      \tud at if@tudheadings{\currentpagestyle}{%
+        \DeclarePageStyleAlias{plain}{plain.tudheadings}%
+        \DeclarePageStyleAlias{headings}{tudheadings}%
+        \def\sls at currentheadings{tudheadings}%
+        \def\sls at currentplain{plain.tudheadings}%
+        \TUD at deprecated@length\footlogoheight%
+        \tud at komafont@set{pagenumber}{\usekomafont{tudheadings}}%
+        \tud at komafont@set{pagefoot}{\usekomafont{tudheadings}}%
+      }{%
+        \tud at komafont@unset{pagenumber}%
+        \tud at komafont@unset{pagefoot}%
+      }%
+    }%
+  }%
 }
 \newcommand*\tud at ps@list{}
 \listadd\tud at ps@list{tudheadings}
@@ -5397,13 +5594,15 @@
 \newcommand*\tud at if@tudheadings[3]{%
   \xifinlist{\GetRealPageStyle{#1}}{\tud at ps@list}{#2}{#3}%
 }
-\patchcmd{\thispagestyle}{\gdef\@specialstyle{#1}}{%
+\patchcmd\thispagestyle{%
+  \gdef\@specialstyle{#1}%
+}{%
   \xdef\@specialstyle{\GetRealPageStyle{#1}}%
 }{}{\tud at patch@wrn{thispagestyle}}
 \newcommand*\tud at pagestyle{}
 \let\tud at pagestyle\pagestyle
 \newcommand*\currentpagestyle{plain}
-\pretocmd{\tud at pagestyle}{%
+\pretocmd\tud at pagestyle{%
   \tud at BeforeSelectAnyPageStyle{#1}%
   \edef\currentpagestyle{#1}%
 }{}{\tud at patch@wrn{pagestyle}}
@@ -5419,9 +5618,9 @@
 }
 \AfterAtEndOfPackage*{scrlayer-scrpage}{\AtEndPreamble{\tud at cdgeometry@init}}
 \TUD at UnwindPackage{scrlayer-scrpage}{%
-  \ifcsundef{if at chapter}{%
+  \ifundef{\if at chapter}{%
     \newif\if at chapter%
-    \ifcsundef{chapter}{\@chapterfalse}{\@chaptertrue}%
+    \ifundef{\chapter}{\@chapterfalse}{\@chaptertrue}%
   }{}%
   \cslet{ps at tudheadings}{\ps at headings}%
   \cslet{ps at plain.tudheadings}{\ps at plain}%
@@ -5428,17 +5627,12 @@
   \cslet{ps at empty.tudheadings}{\ps at empty}%
   \providecommand*\currentpagestyle{plain}%
   \providecommand*\BeforeSelectAnyPageStyle[1]{}%
+  \providecommand*\tud at BeforeSelectAnyPageStyle[1]{}%
   \providecommand*\GetRealPageStyle[1]{#1}%
   \let\pagestyle\tud at pagestyle%
   \undef\tud at pagestyle%
   \tud at cdgeometry@init%
 }
-\newcommand*\tud at ps@onselect{%
-  \DeclarePageStyleAlias{plain}{plain.tudheadings}%
-  \DeclarePageStyleAlias{headings}{tudheadings}%
-  \def\sls at currentheadings{tudheadings}%
-  \def\sls at currentplain{plain.tudheadings}%
-}
 \newcommand*\tud at head@logocolor{black}
 \newcommand*\tud at head@fontcolor{}
 \newcommand*\tud at foot@logocolor{black}
@@ -5478,7 +5672,7 @@
     \fi%
   }{%
     \tud at locked@bool at preset{@tud at head@widebar}{true}%
-    \ifstr{\tud at pagecolor}{HKS41}{%
+    \tud at if@strequal{\tud at pagecolor}{HKS41}{%
       \renewcommand*\tud at head@logocolor{white}%
       \renewcommand*\tud at head@fontcolor{white}%
       \renewcommand*\tud at foot@logocolor{white}%
@@ -5503,8 +5697,10 @@
       \fi%
     }%
   }%
-  \let\tud at len@line\tud at len@thinline%
-  \ifstr{\tud at head@fontcolor}{white}{\let\tud at len@line\tud at len@heavyline}{}%
+  \let\tud at dim@line\tud at dim@thinline%
+  \tud at if@strequal{\tud at head@fontcolor}{white}%
+    {\let\tud at dim@line\tud at dim@heavyline}%
+    {}%
   \global\let\tud at foot@fontcolor\tud at foot@fontcolor%
 }
 \newcommand*\tud at head@text at line{}
@@ -5512,13 +5708,13 @@
 \newcommand*\tud at head@text at delimiter{}
 \newcommand*\tud at head@text at buffer{}
 \newcommand*\tud at head@text at add[3][{, }]{%
-  \ifxblank{#3}{}{%
+  \tud at if@strblank{#3}{}{%
     \edef\tud at head@text at delimiter{\expandonce\tud at head@text at buffer}%
     \def\tud at head@text at buffer{#1}%
     \edef\@tempa{%
       \expandonce\tud at head@text at line%
       \expandonce\tud at head@text at delimiter%
-      \etex at unexpanded{#2#3}%
+      \unexpanded{#2#3}%
     }%
     \settowidth\@tempdima{\@tempa}%
     \ifdim\@tempdima>\textwidth\relax%
@@ -5529,7 +5725,7 @@
     \fi%
   }%
 }
-\newif\if at tud@head at text@set
+\tud at newif\if at tud@head at text@set
 \newcommand*\tud at head@text at wrn[1]{}
 \newcommand*\tud at head@text at set{%
   \if at tud@head at text@set%
@@ -5541,7 +5737,7 @@
     \tud at head@text at add{\tud at head@font at light}{\@institute}%
     \tud at head@text at add{\tud at head@font at light}{\@chair}%
     \listeadd\tud at head@text at list{\expandonce\tud at head@text at line}%
-    \ifxblank{\@extraheadline}{}{%
+    \tud at if@strblank{\@extraheadline}{}{%
       \listadd\tud at head@text at list{\tud at head@font at light\@extraheadline}%
     }%
     \gdef\tud at head@text at wrn##1{%
@@ -5555,7 +5751,7 @@
 }
 \newcommand*\tud at head@text at box{%
   \def\@tempb{\tud at color{\tud at head@fontcolor}}%
-  \def\@tempc{\depth+\tud at len@heavyline}%
+  \def\@tempc{\depth+\tud at dim@heavyline}%
   \def\@tempa##1{%
     \settowidth\@tempdima{##1}%
     \ifdim\@tempdima>\textwidth\relax%
@@ -5567,16 +5763,16 @@
     \@tempb%
     \tud at head@text at write[\@tempc]{##1}%
     \def\@tempb{\newline}%
-    \def\@tempc{\z@}%
+    \let\@tempc\z@%
     \ifnum\tud at head@bar at num>\@ne\relax% cdhead=barcolor/color
       \ifdefvoid{\tud at pagecolor}{\color{HKS41}}{%
-        \ifstr{\tud at pagecolor}{HKS41}{\color{white}}{\color{HKS41}}%
+        \tud at if@strequal{\tud at pagecolor}{HKS41}{\color{white}}{\color{HKS41}}%
       }%
     \fi%
   }%
   \vbox{%
     \let\@raggedtwoe at everyselectfont\relax%
-    \setlength\spaceskip{\z@}%
+    \tud at setdim\spaceskip{\z@}%
     \selectfont%
     \offinterlineskip%
     \forlistloop\@tempa{\tud at head@text at list}%
@@ -5584,16 +5780,18 @@
   \global\let\tud at head@text at wrn\@gobble%
 }
 \newcommand*\tud at head@text at write[2][\z@]{%
-  \raisebox{\dimexpr(\tud at len@barheight+2\tud at len@line-\totalheight)/2\relax}[%
-    \dimexpr\tud at len@barheight-\depth\relax%
-  ][\dimexpr#1\relax]{#2\vphantom{gjpqy\"A\"O\"U}}%
+  \raisebox{%
+    \dimexpr(\tud at dim@barheight+\tud at dim@line*2-\totalheight)/2\relax%
+  }[%
+    \dimexpr\tud at dim@barheight-\depth\relax%
+  ][\dimexpr\glueexpr#1\relax\relax]{#2\vphantom{\tud at font@phantomglyphs}}%
 }
 \newcommand*\tud at head@rule[1]{%
   \tud at color{\tud at head@fontcolor}%
-  \rule[\ht\strutbox]{#1}{\tud at len@line}%
+  \rule[\ht\strutbox]{#1}{\tud at dim@line}%
 }
 \newcommand*\tud at newlayerbox[1]{%
-  \expandafter\newsavebox\csname tud at layer@#1\endcsname%
+  \global\expandafter\newsavebox\csname tud at layer@#1\endcsname%
 }
 \newcommand*\tud at savelayerbox[1]{%
   \global\expandafter\sbox\csname tud at layer@#1\endcsname%
@@ -5601,33 +5799,74 @@
 \newcommand*\tud at uselayerbox[1]{%
   \expandafter\usebox\csname tud at layer@#1\endcsname%
 }
-\newcommand*\tud at vlayerbox[3]{%
+\newcommand*\tud at vlayerbox[4][]{%
   \begingroup%
-    \setbox\z@\vbox{#2}%
-    \setlength\@tempdima{\dimexpr\ht\z at +\dp\z at -#1\relax}%
-    \ifdim\@tempdima>\z@\relax%
-      \ClassWarning{\TUD at Class@Name}{%
-        #3\MessageBreak%
-        The maximum height is exceeded by \the\@tempdima\MessageBreak%
+    \setbox\z@\vbox{#3}%
+    \tud at setdim\tud at res@glue{\dimexpr\glueexpr#2\relax\relax}%
+    \ifdim\dimexpr\ht\z at +\dp\z at -\tud at res@glue\relax>\p@\relax%
+      \edef\tud at res@a{%
+        \noexpand\ClassWarning{\noexpand\TUD at Class@Name}{%
+          #4\noexpand\MessageBreak%
+          The total height of \the\dimexpr\ht\z at +\dp\z@\relax\space exceeds the%
+          \noexpand\MessageBreak maximum height (\the\tud at res@glue)%
+        }%
       }%
+      \IfArgIsEmpty{#1}{\tud at res@a}{%
+        \expandafter\ifx\csname tud at layer@#1 at wrn\endcsname\tud at res@a\else%
+          \tud at res@a%
+          \global\cslet{tud at layer@#1 at wrn}\tud at res@a%
+        \fi%
+      }%
     \fi%
   \endgroup%
-  \vbox to #1{#2}%
+  \vbox to #2{#3}%
 }
+\tud at if@v at lower{2.04}{%
+  \renewcommand*\tud at comp@clearpage{%
+    \if at tud@ddc at internal\else%
+      \tud at if@tudheadings{\currentpagestyle}{\clearpage}{}%
+    \fi%
+  }%
+  \renewcommand*\tud at comp@resetpagestyle{%
+    \if at tud@ddc at internal\else%
+      \tud at if@tudheadings{\currentpagestyle}{%
+        \expandafter\pagestyle\expandafter{\currentpagestyle}%
+      }{}%
+    \fi%
+  }%
+}{}%
+\newcommand*\tud at ddc@check{%
+  \let\@tempa\tud at ddc@head at num%
+  \let\@tempb\tud at ddc@foot at num%
+  \if at tud@ddc at auto%
+    \ifdefvoid{\tud at headlogo@filename}{%
+      \let\@tempa\tud at ddc@auto at num%
+      \let\@tempb\z@%
+    }{%
+      \let\@tempa\z@%
+      \let\@tempb\tud at ddc@auto at num%
+    }%
+  \fi%
+  \tud at if@v at lower{2.03}{%
+    \ifnum\@tempb=\z@\relax%
+      \ifdefvoid{\tud at footlogo@filenames}{}{\let\@tempb\m at ne}%
+    \fi%
+  }{}%
+}
 \tud at newlayerbox{main at black}
 \tud at newlayerbox{main at HKS41}
 \tud at newlayerbox{main at white}
-\newlength\tud at len@mainlogoheight
+\tud at newdim\tud at dim@mainlogoheight
 \newcommand*\tud at mainlogo@wrn[1]{}
-\newif\if at tud@mainlogo at set
+\tud at newif\if at tud@mainlogo at set
 \newcommand*\tud at mainlogo@set{%
   \if at tud@mainlogo at set%
-    \def\@tempa{\includegraphics[keepaspectratio,width=\tud at len@logowidth]}%
+    \def\@tempa{\includegraphics[keepaspectratio,width=\tud at dim@logowidth]}%
     \tud at savelayerbox{main at black}{\@tempa{TUD-black}}%
     \tud at savelayerbox{main at HKS41}{\@tempa{TUD-blue}}%
     \tud at savelayerbox{main at white}{\@tempa{TUD-white}}%
-    \settoheight\tud at len@mainlogoheight{\tud at uselayerbox{main at black}}%
-    \global\tud at len@mainlogoheight=\tud at len@mainlogoheight%
+    \settoheight\tud at dim@mainlogoheight{\tud at uselayerbox{main at black}}%
+    \global\tud at dim@mainlogoheight=\tud at dim@mainlogoheight%
     \gdef\tud at mainlogo@wrn##1{%
       \ifdim##1<\ta at bcor\relax%
         \ClassWarning{\TUD at Class@Name}{%
@@ -5642,14 +5881,18 @@
       \fi%
     }%
     \tud at headlogo@set%
-    \@tud at footlogo@option at settrue%
+    \global\@tud at footlogo@option at settrue%
     \tud at footlogo@option at set%
     \global\@tud at mainlogo@setfalse%
   \fi%
 }
+\AtBeginDocument{%
+  \@tud at mainlogo@settrue%
+  \tud at mainlogo@set%
+}
 \newcommand*\tud at mainlogo@use{%
   \tud at mainlogo@wrn{%
-    \dimexpr\oddsidemargin+1in+\tud at len@logox-\tud at len@widemargin\relax%
+    \dimexpr\oddsidemargin+1in+\tud at dim@logox-\tud at dim@widemargin\relax%
   }%
   \tud at uselayerbox{main@\tud at head@logocolor}%
 }
@@ -5659,7 +5902,6 @@
 \tud at newlayerbox{head at option}
 \newcommand*\tud at headlogo@filename{}
 \newcommand*\tud at headlogo@fileoptions{}
-\newcommand*\tud at headlogo@wrn{}
 \newcommand*\headlogo[2][]{%
   \tud at comp@clearpage%
   \renewcommand*\tud at headlogo@filename{#2}%
@@ -5666,19 +5908,11 @@
   \renewcommand*\tud at headlogo@fileoptions{#1}%
   \global\@tud at headlogo@option at settrue%
   \global\@tud at footlogo@option at settrue%
-  \gdef\tud at headlogo@wrn{%
-    \ClassWarning{\TUD at Class@Name}{%
-      Secondary logo `\string\headlogo{\tud at headlogo@filename}'\MessageBreak%
-      is overwritten with DDC logo. Maybe you should\MessageBreak%
-      use `ddcfoot' or better `ddc' instead of `ddchead'%
-    }%
-    \global\let\tud at headlogo@wrn\relax%
-  }%
   \tud at comp@resetpagestyle%
 }
 \newcommand*\tud at headlogo@set{%
   \def\@tempa{%
-    \includegraphics[keepaspectratio,totalheight=\tud at len@mainlogoheight]%
+    \includegraphics[keepaspectratio,totalheight=\tud at dim@mainlogoheight]%
   }%
   \tud at savelayerbox{head at black}{\@tempa{DDC-24}}%
   \tud at savelayerbox{head at HKS41}{\@tempa{DDC-27}}%
@@ -5689,9 +5923,11 @@
   \if at tud@headlogo at option@set%
     \def\@tempc##1##2{%
       \tud at savelayerbox{head at option}{%
-        \includegraphics[%
-          keepaspectratio,totalheight=\tud at len@mainlogoheight,##2%
-        ]{##1}%
+        \includegraphics[{%
+          keepaspectratio,%
+          totalheight=\tud at dim@mainlogoheight,%
+          ##2%
+        }]{##1}%
       }%
     }%
     \tud at savelayerbox{head at option}{}%
@@ -5698,9 +5934,8 @@
     \tud at ddc@check%
     \ifcase\@tempa\relax% \tud at ddc@head at num=false
       \ifdefvoid{\tud at headlogo@filename}{}{%
-        \protected at edef\tud at headlogo@filename{%
-          \expandafter\trim at spaces\expandafter{\tud at headlogo@filename}%
-        }%
+        \protected at edef\tud at headlogo@filename{\tud at headlogo@filename}%
+        \trim at spaces@in\tud at headlogo@filename%
         \protected at edef\@tempb{%
           \noexpand\@tempc{\tud at headlogo@filename}{\tud at headlogo@fileoptions}%
         }%
@@ -5719,11 +5954,21 @@
     \or% \tud at ddc@head at num=white
       \@tempc{DDC-30}{}%
     \fi%
+    \ifnum\@tempa>\z@\relax
+      \ifdefvoid{\tud at headlogo@filename}{}{%
+        \ClassWarning{\TUD at Class@Name}{%
+          Secondary logo `\tud at headlogo@filename'\MessageBreak%
+          is overwritten with DDC logo. Maybe you should\MessageBreak%
+          use `ddcfoot' or better `ddc' instead of `ddchead'%
+        }%
+      }%
+    \fi%
     \global\@tud at headlogo@option at setfalse%
   \fi%
 }
+\newcommand*\tud at layer@headlogo at wrn{}
 \newcommand*\tud at headlogo@use{%
-  \tud at vlayerbox{\tud at len@mainlogoheight}{%
+  \tud at vlayerbox[headlogo]{\tud at dim@mainlogoheight}{%
     \vss%
     \hbox{%
       \tud at ddc@check%
@@ -5737,19 +5982,15 @@
   }{%
     The given `\string\headlogo{\tud at headlogo@filename}' is too large.%
   }%
-  \ifdefvoid{\tud at headlogo@filename}{}{%
-    \tud at ddc@check%
-    \ifnum\@tempa>\z@\relax\tud at headlogo@wrn\fi%
-  }%
 }
-\AtEndOfClass{%
-  \ifdefvoid{\tud at dim@footlogoheight}{%
+\newcommand*\tud at footlogoheight@set{%
+  \ifdim\dimexpr\tud at footlogoheight@dim\relax=\z@\relax%
     \tud at if@v at lower{2.03}{%
-      \def\tud at dim@footlogoheight{.6\tud at len@topmargin}%
+      \def\tud at footlogoheight@dim{\tud at dim@topmargin*3/5}%
     }{%
-      \def\tud at dim@footlogoheight{\tud at len@mainlogoheight}%
+      \def\tud at footlogoheight@dim{\tud at dim@mainlogoheight}%
     }%
-  }{}%
+  \fi%
 }
 \tud at newlayerbox{foot at black}
 \tud at newlayerbox{foot at HKS41}
@@ -5756,38 +5997,44 @@
 \tud at newlayerbox{foot at white}
 \tud at newlayerbox{foot at option}
 \newcommand*\tud at footlogo@ddc at set[2]{%
-  \tud at savelayerbox{foot@#1}{%
-    \includegraphics[keepaspectratio,totalheight=\tud at dim@footlogoheight]{#2}%
+  \tud at savelayerbox{#1}{%
+    \includegraphics[%
+      keepaspectratio,%
+      totalheight=\dimexpr\glueexpr\tud at footlogoheight@dim\relax\relax%
+    ]{#2}%
   }%
 }
 \newcommand*\tud at footlogo@option at set{%
+  \tud at footlogoheight@set%
   \if at tud@footlogo at option@set%
-    \tud at footlogo@ddc at set{black}{DDC-22}%
-    \tud at footlogo@ddc at set{HKS41}{DDC-25}%
-    \tud at footlogo@ddc at set{white}{DDC-28}%
+    \tud at footlogo@ddc at set{foot at black}{DDC-22}%
+    \tud at footlogo@ddc at set{foot at HKS41}{DDC-25}%
+    \tud at footlogo@ddc at set{foot at white}{DDC-28}%
     \tud at ddc@check%
     \ifcase\@tempb\relax\or\or% \tud at ddc@foot at num=color
-      \tud at footlogo@ddc at set{option}{DDC-01}%
+      \tud at footlogo@ddc at set{foot at option}{DDC-01}%
     \or% \tud at ddc@foot at num=colorblack
-      \tud at footlogo@ddc at set{option}{DDC-07}%
+      \tud at footlogo@ddc at set{foot at option}{DDC-07}%
     \or% \tud at ddc@foot at num=gray
-      \tud at footlogo@ddc at set{option}{DDC-19}%
+      \tud at footlogo@ddc at set{foot at option}{DDC-19}%
     \or% \tud at ddc@foot at num=black
-      \tud at footlogo@ddc at set{option}{DDC-22}%
+      \tud at footlogo@ddc at set{foot at option}{DDC-22}%
     \or% \tud at ddc@foot at num=blue
-      \tud at footlogo@ddc at set{option}{DDC-25}%
+      \tud at footlogo@ddc at set{foot at option}{DDC-25}%
     \or% \tud at ddc@foot at num=white
-      \tud at footlogo@ddc at set{option}{DDC-28}%
+      \tud at footlogo@ddc at set{foot at option}{DDC-28}%
     \fi%
     \global\@tud at footlogo@option at setfalse%
+    \global\@tud at footlogo@cmd at settrue%
   \fi%
 }
+\newcommand*\tud at layer@footlogo at wrn{}
 \newcommand*\tud at footlogo@ddc at use[2]{%
   \tud at ddc@check%
   \ifcase\@tempb\relax\else% \tud at ddc@foot at num=!false
     \tud at footlogo@option at set%
     \setbox\z@\hbox{%
-      \tud at vlayerbox{#1}{%
+      \tud at vlayerbox[footlogo]{#1}{%
         \vss%
         \hbox to #2{%
           \hss%
@@ -5799,12 +6046,12 @@
         }%
         \vss\vss%
       }{%
-        You should reduce `footlogoheight', because it is\MessageBreak%
-        too high (\the\dimexpr\tud at dim@footlogoheight\relax).%
+        You should reduce `footlogoheight', because it is\noexpand\MessageBreak%
+        too high. %
         \ifnum\tud at cdgeometry@num>\@ne% true/symmetric/twoside
-          \MessageBreak%
-          Alternatively you can enlarge the bottom margin\MessageBreak%
-          by using option `extrabottommargin'.%
+          Alternatively you could use\noexpand\MessageBreak%
+          option `extrabottommargin=<length>'\noexpand\MessageBreak%
+          in order to enlarge the bottom margin. %
         \fi%
       }%
     }%
@@ -5822,7 +6069,7 @@
   \global\@tud at footlogo@cmd at settrue%
   \tud at comp@resetpagestyle%
 }
-\newif\if at tud@footlogo at cmd@set
+\tud at newif\if at tud@footlogo at cmd@set
 \newcommand*\tud at footlogo@cmd at set[2]{%
   \if at tud@footlogo at cmd@set%
     \tud at savelayerbox{foot at cmd}{%
@@ -5829,7 +6076,8 @@
       \hbox to #2{%
         \let\@tempa\relax%
         \@for\@tempb:=\tud at footlogo@filenames\do{%
-          \edef\@tempb{\expandafter\trim at spaces\expandafter{\@tempb}}%
+          \protected at edef\@tempb{\@tempb}%
+          \trim at spaces@in{\@tempb}%
           \@tempa%
           \ifx\@tempb\@empty\else%
             \expandafter\tud at footlogo@cmd@@set\expandafter{\@tempb}{#1}%
@@ -5859,11 +6107,14 @@
     \DeclareListParser{\@tempc}{:}%
     \@tempc{#1}%
     \preto\tud at footlogo@fileoptions{%
-      keepaspectratio,totalheight=\tud at dim@footlogoheight,%
+      keepaspectratio,%
+      totalheight=\dimexpr\glueexpr\tud at footlogoheight@dim\relax\relax,%
     }%
     \eappto\tud at footlogo@fileoptions{\expandonce\@tempb}%
     \protected at edef\@tempc{%
-      \noexpand\includegraphics[\expandonce\tud at footlogo@fileoptions]{\@tempa}%
+      \noexpand\includegraphics[{%
+        \expandonce\tud at footlogo@fileoptions%
+      }]{\@tempa}%
     }%
     \tud at vlayerbox{#2}{\vss\hbox{\@tempc}\vss\vss}{%
       The given `\string\footlogo{\@tempa}' is too large.%
@@ -5877,26 +6128,27 @@
   \usebox\z@\hspace*{-\wd\z@}%
 }
 \newkomafont{tudheadings}{\tud at color{\tud at foot@fontcolor}}
-\newcommand*\tud at footcontent@usefont[1]{%
+\newcommand*\tud at footcontent@font at use[1]{%
   \usekomafont{tudheadings}{%
-    \tud at footcontent@fontsize%
-    \tud at footcontent@fontface%
+    \tud at footcontent@font at size%
+    \tud at footcontent@font at face%
     \selectfont%
     #1%
   }%
 }
-\newcommand*\tud at footcontent@fontsize{}
-\newcommand*\tud at footcontent@fontface{}
+\newcommand*\tud at footcontent@font at size{}
+\newcommand*\tud at footcontent@font at face{}
 \newcommand*\tud at footcontent@left{}
-\newcommand*\tud at footcontent@right{\@nil}
+\newcommand*\tud at footcontent@right{}
+\let\tud at footcontent@right\@nnil
 \newcommand*\footcontent{%
   \kernel at ifstar{%
-    \renewcommand*\tud at footcontent@fontsize{}%
+    \renewcommand*\tud at footcontent@font at size{}%
     \tud at footcontent@do%
   }{%
-    \renewcommand*\tud at footcontent@fontsize{%
-      \setlength\@tempdima{\tud at head@fontsize\p@}%
-      \fontsize{\@tempdima}{1.25\@tempdima}%
+    \renewcommand*\tud at footcontent@font at size{%
+      \tud at setdim\tud at res@glue{\tud at head@fontsize\p@}%
+      \fontsize{\tud at res@glue}{\dimexpr1\tud at res@glue*5/4\relax}%
     }%
     \tud at footcontent@do%
   }%
@@ -5908,22 +6160,22 @@
 }
 \newcommand*\tud at footcontent@@do{}
 \def\tud at footcontent@@do#1#2[#3]{%
-  \if\detokenize{*#1}\relax\else%
-    \renewcommand*\tud at footcontent@fontface{#1}%
+  \if\detokenize{#1*}\relax\else%
+    \renewcommand*\tud at footcontent@font at face{#1}%
   \fi%
-  \if\detokenize{*#2}\relax\else%
+  \if\detokenize{#2*}\relax\else%
     \renewcommand*\tud at footcontent@left{#2}%
   \fi%
-  \if\detokenize{*#3}\relax\else%
+  \if\detokenize{#3*}\relax\else%
     \renewcommand*\tud at footcontent@right{#3}%
   \fi%
 }
+\newcommand*\tud at layer@footcontent at wrn{}
 \newcommand*\tud at footcontent@use[2]{%
   \@tempswafalse%
-  \ifx\tud at footcontent@left\@empty\relax%
-    \def\@tempa{\@nil}%
-    \ifx\@tempa\tud at footcontent@right\relax\else%
-      \ifx\tud at footcontent@right\@empty\relax\else%
+  \ifx\tud at footcontent@left\@empty%
+    \ifx\tud at footcontent@right\@nnil\else%
+      \ifx\tud at footcontent@right\@empty\else%
         \@tempswatrue%
       \fi%
     \fi%
@@ -5933,44 +6185,29 @@
   \if at tempswa%
     \tud at ddc@check%
     \ifcase\@tempb\relax%
-      \setlength\@tempdimc{\z@}%
+      \tud at setdim\@tempdimc{\z@}%
     \else%
       \settowidth\@tempdimc{\tud at uselayerbox{foot at black}}%
-      \addtolength\@tempdimc{\columnsep}%
+      \tud at addtodim\@tempdimc{\columnsep}%
     \fi%
-    \tud at vlayerbox{#1}{%
+    \tud at vlayerbox[footcontent]{#1}{%
       \linespread{1}%
       \vss%
       \hbox to #2{%
-        \tud at footcontent@usefont{%
-          \def\@tempa{\@nil}%
-          \ifx\@tempa\tud at footcontent@right\relax%
-            \vtop{%
-              \hsize=\dimexpr#2-\@tempdimc\relax%
-              \strut\ignorespaces\tud at footcontent@left\strut%
-            }%
-          \else%
-            \vtop{%
-              \hsize=\dimexpr(#2-\columnsep)/2\relax%
-              \strut\ignorespaces\tud at footcontent@left\strut%
-            }%
-            \hspace{\columnsep}%
-            \vtop{%
-              \hsize=\dimexpr(#2-\columnsep)/2-\@tempdimc\relax%
-              \strut\ignorespaces\tud at footcontent@right\strut%
-            }%
-          \fi%
+        \tud at footcontent@font at use{%
+          \tud at setglue\tud at res@glue{#2}%
+          \tud at footcontent@@use{\tud at res@glue}%
           \hss%
         }%
       }%
       \vss\vss%
     }{%
-      The content for the footer (`\string\footcontent')\MessageBreak%
-      is too high. You should either reduce the content\MessageBreak%
+      The content for the footer (`\string\footcontent')\noexpand\MessageBreak%
+      is too high. You should either reduce the content\noexpand\MessageBreak%
       or lower the fontsize via the optional argument.%
       \ifnum\tud at cdgeometry@num>\@ne% true/symmetric/twoside
-        \MessageBreak%
-        Alternatively you can enlarge the bottom margin\MessageBreak%
+        \noexpand\MessageBreak%
+        Alternatively you can enlarge the bottom margin\noexpand\MessageBreak%
         by using option `extrabottommargin'.%
       \fi%
     }%
@@ -5978,39 +6215,25 @@
     \hbox to #2{}%
   \fi%
 }
-\tud at if@v at lower{2.04}{%
-  \renewcommand*\tud at comp@clearpage{%
-    \if at tud@ddc at internal\else%
-      \tud at if@tudheadings{\currentpagestyle}{\clearpage}{}%
-    \fi%
-  }%
-  \renewcommand*\tud at comp@resetpagestyle{%
-    \if at tud@ddc at internal\else%
-      \tud at if@tudheadings{\currentpagestyle}{%
-        \expandafter\pagestyle\expandafter{\currentpagestyle}%
-      }{}%
-    \fi%
-  }%
-}{}%
-\newcommand*\tud at ddc@check{%
-  \let\@tempa\tud at ddc@head at num%
-  \let\@tempb\tud at ddc@foot at num%
-  \if at tud@ddc at auto%
-    \ifdefvoid{\tud at headlogo@filename}{%
-      \let\@tempa\tud at ddc@auto at num%
-      \let\@tempb\z@%
-    }{%
-      \let\@tempa\z@%
-      \let\@tempb\tud at ddc@auto at num%
+\newcommand*\tud at footcontent@@use[1]{%
+  \ifx\tud at footcontent@right\@nnil%
+    \vtop{%
+      \hsize=\dimexpr\glueexpr#1-\@tempdimc\relax\relax%
+      \strut\ignorespaces\tud at footcontent@left\strut%
     }%
+  \else%
+    \vtop{%
+      \hsize=\dimexpr\glueexpr(#1-\columnsep)/2\relax\relax%
+      \strut\ignorespaces\tud at footcontent@left\strut%
+    }%
+    \hspace{\columnsep}%
+    \vtop{%
+      \hsize=\dimexpr\glueexpr(#1-\columnsep)/2-\@tempdimc\relax\relax%
+      \strut\ignorespaces\tud at footcontent@right\strut%
+    }%
   \fi%
-  \tud at if@v at lower{2.03}{%
-    \ifnum\@tempb=\z@\relax%
-      \ifdefvoid{\tud at footlogo@filenames}{}{\let\@tempb\m at ne}%
-    \fi%
-  }{}%
 }
-\newif\if at tud@parameter at ps@font at set
+\tud at newif\if at tud@parameter at ps@font at set
 \newcommand*\TUD at parameter@ps at def[1]{%
   \TUD at parameter@def{cdfont}[true]{%
     \TUDoption{cdfont}{#1}%
@@ -6039,11 +6262,11 @@
 \newcommand*\tud at envir@ps{tudheadings}
 \newcommand*\tud at envir@selectps{%
   \expandafter\pagestyle\expandafter{\tud at envir@ps}%
-  \ifstr{\GetRealPageStyle{\tud at envir@ps}}{empty}{%
+  \tud at if@strequal{\GetRealPageStyle{\tud at envir@ps}}{empty}{%
     \renewcommand*\titlepagestyle{empty}%
     \renewcommand*\indexpagestyle{empty}%
   }{}%
-  \ifstr{\GetRealPageStyle{\tud at envir@ps}}{empty.tudheadings}{%
+  \tud at if@strequal{\GetRealPageStyle{\tud at envir@ps}}{empty.tudheadings}{%
     \renewcommand*\titlepagestyle{empty.tudheadings}%
     \renewcommand*\indexpagestyle{empty.tudheadings}%
   }{}%
@@ -6082,11 +6305,12 @@
   \TUD at parameter@def{language}{\selectlanguage{#1}}%
   \TUD at parameter@def{columns}{\renewcommand*\tud at x@multicol at num{#1}}%
   \TUD at parameter@def{pagestyle}{%
-    \tud at if@tudheadings{#1}{\renewcommand*\tud at envir@ps{#1}}{%
-      \ifstr{#1}{empty}{\renewcommand*\tud at envir@ps{empty.tudheadings}}{%
-      \ifstr{#1}{plain}{\renewcommand*\tud at envir@ps{plain.tudheadings}}{%
-      \ifstr{#1}{headings}{\renewcommand*\tud at envir@ps{tudheadings}}{%
-        \TUD at parameter@error{pagestyle}{%
+    \tud at if@tudheadings{#1}{\def\tud at envir@ps{#1}}{%
+      \def\tud at envir@ps{tudheadings}%
+      \tud at if@strequal{#1}{empty}{\def\tud at envir@ps{empty.tudheadings}}{%
+      \tud at if@strequal{#1}{plain}{\def\tud at envir@ps{plain.tudheadings}}{%
+      \tud at if@strequal{#1}{headings}{}{%
+        \TUD at parameter@err{pagestyle}{%
           headings, plain, empty or any tudheadings page style type%
         }%
       }}}%
@@ -6102,38 +6326,50 @@
     capabilities of package `scrlayer-scrpage' instead%
   }%
 ]{fancyhdr}
-%%% From File: tudscr-layout.dtx
-\newcommand*\tud at x@scr at headings@current{}
-\newcommand*\tud at sec@fontsize{}
-\newcommand*\tud at thesis@fontsize{}
-\newcommand*\tud at x@scr at headings@set[1][]{%
-  \def\@tempa##1##2##3{%
-    \ifstr{##1}{\tud at x@scr at headings@current}{}{%
-      \renewcommand*\tud at x@scr at headings@current{##1}%
-      \renewcommand*\tud at sec@fontsize{##2}%
-      \renewcommand*\tud at thesis@fontsize{##3}%
-      #1%
-    }%
-  }%
-  \KOMAoptionOf[\def\@tempb]{\KOMAClassFileName}{headings}%
-  \@for\@tempc:=\@tempb\do{%
-    \ifstr{standardclasses}{\@tempc}{\@tempa{standardclasses}{\Huge}{\LARGE}}{%
-    \ifstr{big}{\@tempc}{\@tempa{big}{\Huge}{\LARGE}}{%
-    \ifstr{normal}{\@tempc}{\@tempa{normal}{\huge}{\Large}}{%
-    \ifstr{small}{\@tempc}{\@tempa{small}{\LARGE}{\large}}{}}}}%
-  }%
-  \begingroup
-    \tud at sec@fontsize%
-    \@tempskipa=\glueexpr%
-      .8\baselineskip \@plus .05\baselineskip \@minus .1\baselineskip%
-    \relax\relax%
+%%%% From File: tudscr-layout.dtx (no git version info was found)
+\newcommand*\tud at subtitle@fontsizecmd{\LARGE}
+\newcommand*\tud at prefix@fontsizecmd{\huge}
+\newcommand*\tud at sec@fontsizecmd{\Huge}
+\newcommand*\tud at sec@baselineskip@@dim{}
+\newcommand*\tud at sec@baselineskip at set{%
+  \begingroup%
+    \tud at sec@fontsizecmd%
     \edef\tud at res@a{%
       \endgroup%
-      \def\noexpand\tud at cd@afterskip{\the\@tempskipa}%
+      \unexpanded{\def\tud at sec@baselineskip@@dim}{%
+        \the\dimexpr\glueexpr\f at baselineskip\relax\relax%
+      }%
     }%
   \tud at res@a%
 }
-\AtEndPreamble{\tud at x@scr at headings@set}
+\tud at sec@baselineskip at set
+\newcommand*\tud at x@scr at headings@set[1][]{%
+  \def\@tempb##1##2##3{%
+    \renewcommand*\tud at sec@fontsizecmd{##1}%
+    \renewcommand*\tud at prefix@fontsizecmd{##2}%
+    \renewcommand*\tud at subtitle@fontsizecmd{##3}%
+    \tud at sec@baselineskip at set%
+    #1%
+  }%
+  \KOMAoptionOf[\def\@tempc]{\KOMAClassFileName}{headings}%
+  \@for\@tempc:=\@tempc\do{%
+    \TUD at set@numkey{headings}{@tempa}{%
+      {standardclasses}{0},{big}{1},{normal}{2},{small}{3}%
+    }{\@tempc}%
+    \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+      \ifcase\@tempa\relax% standardclasses
+        \@tempb{\Huge} {\LARGE}{\Large}%
+      \or% big
+        \@tempb{\Huge} {\huge} {\LARGE}%
+      \or% normal
+        \@tempb{\huge} {\LARGE}{\Large}%
+      \or% small
+        \@tempb{\LARGE}{\Large}{\large}%
+      \fi%
+    \fi%
+  }%
+}
+\AfterEndPreamble{\tud at x@scr at headings@set}
 \newcommand*\tud at x@scr at headings@reset{%
   \tud at cd@process%
   \tud at x@scr at headings@set[%
@@ -6151,15 +6387,25 @@
 \newcommand*\tud at sec@fontface[1][]{\tud at sec@@fontface{#1}}%
 \newcommand*\tud at sec@@fontface[1]{%
   \sectfont#1%
-  \if at tud@cdfont at active\if at tud@heavyheadings%
-    \if at tud@x at mweights@enabled%
-      \edef\bfseries at rm{\tud at cdfont@ebf}%
-      \edef\bfseries at sf{\tud at cdfont@ebf}%
-      \edef\bfseries at tt{\tud at ttfont@ebf}%
+  \if at tud@cdfont at active%
+    \if at tud@heavyheadings%
+      \if at tud@x at mweights@enabled%
+        \edef\bfseries at rm{\tud at cdfont@ebf}%
+        \edef\bfseries at sf{\tud at cdfont@ebf}%
+        \edef\bfseries at tt{\tud at ttfont@ebf}%
+      \fi%
+      \let\bfdefault\tud at cdfont@ebf%
+      \fontseriesforce{\tud at cdfont@ebf}%
     \fi%
-    \let\bfdefault\tud at cdfont@ebf%
-    \fontseries{\tud at cdfont@ebf}%
-  \fi\fi%
+  \else%
+    \fontfamily{\tud at cdfont@fam}%
+    \if at tud@heavyheadings%
+      \let\bfdefault\tud at cdfont@ebf%
+    \else%
+      \let\bfdefault\tud at cdfont@bf%
+    \fi%
+    \fontseriesforce{\bfdefault}%
+  \fi%
   \selectfont%
 }
 \if at tud@cdoldfont at active
@@ -6171,46 +6417,32 @@
     \fi%
   }%
 \fi
-\newcommand*\tud at sec@format[2][]{%
-  \IfArgIsEmpty{#1}{%
-    \tud at sec@strut%
-  }{%
-    \begingroup%
-      \usefontofkomafont{#1}%
-      \tud at sec@strut%
-    \endgroup%
-  }%
-  #2%
+\tud at newif\if at tud@sec
+\newrobustcmd*\tud at sec@format{%
+  \@tud at sectrue%
+  \kernel at ifstar{\tud at sec@@format{}}{\tud at sec@@format{\strut}}%
 }
-\if at tud@cdoldfont at active
-  \newcommand*\tud at sec@uppercase{\MakeUppercase}%
-  \AfterPackage*{textcase}{%
-    \renewcommand*\tud at sec@uppercase{\MakeTextUppercase}%
-  }%
-  \renewcommand*\tud at sec@format[2][]{%
-    \@tud at res@swafalse%
-    \IfArgIsEmpty{#1}{%
-      \tud at sec@strut%
-      \tud at ifdin{\@tud at res@swatrue}{}%
-    }{%
-      \begingroup%
-        \usefontofkomafont{#1}%
-        \tud at sec@strut%
-        \tud at ifdin{\aftergroup\@tud at res@swatrue}{}%
-      \endgroup%
+\newcommand*\tud at sec@@format[1]{%
+  \kernel at ifnextchar[%]
+    {\tud at sec@@@format{#1}}%
+    {\tud at sec@@@format{#1}[]}%
+}
+\newcommand*\tud at sec@@@format{}
+\def\tud at sec@@@format#1[#2]#3{%
+  \begingroup%
+    \IfArgIsEmpty{#2}%
+      {\let\tud at res@a\@firstofone}%
+      {\def\tud at res@a{\usekomafont{#2}}}%
+    \tud at res@a{%
+      \nobreak#1\nobreak\vphantom{\textsuperscript{\tud at font@phantomglyphs}}%
     }%
-    \if at tud@res at swa%
-      \tud at sec@uppercase{#2}%
-    \else%
-      #2%
-    \fi%
-  }%
-\fi
-\newrobustcmd*\tud at sec@strut{%
-  \begingroup%
-    \strut\setbox\strutbox\hbox{\vphantom{\textsuperscript{\"A\"O\"U}}}\strut%
   \endgroup%
+  \tud at sec@@@@format{#3}%
 }
+\newcommand*\tud at sec@@@@format[1]{#1}
+\if at tud@cdoldfont at active
+  \def\tud at sec@@@@format#1{\tud at ifdin{\MakeUppercase{#1}}{#1}}%
+\fi
 \newcommand*\tud at title@fontcolor{}
 \newcommand*\tud at part@fontcolor{}
 \newcommand*\tud at section@fontcolor{}
@@ -6233,16 +6465,17 @@
       \usekomafont{disposition}%
       \raggedtitle%
       \tud at sec@fontface%
-      \tud at sec@fontsize%
+      \tud at sec@fontsizecmd%
       \tud at color{\tud at title@fontcolor}%
     }%
     \tud at komafont@set{subtitle}{%
-      \tud at thesis@fontsize%
-      \fontseries{\tud at cdfont@bf}\selectfont%
+      \tud at subtitle@fontsizecmd%
+      \fontseriesforce{\tud at cdfont@bf}\selectfont%
     }%
     \tud at komafont@set{subject}{%
+      \usesizeofkomafont{section}%
       \sffamily%
-      \usesizeofkomafont{section}%
+      \fontseriesforce{\tud at cdfont@bf}\selectfont%
       \tud at color{\tud at title@fontcolor}%
     }%
     \tud at komafont@set{author}{\usekomafont{subject}}%
@@ -6250,22 +6483,24 @@
     \tud at komafont@set{date}{\usekomafont{titlepage}}%
   \fi%
   \ifcase\tud at cd@part at num\relax% false
+    \tud at cs@restore{partlineswithprefixformat}%
     \tud at cs@restore{scr at part@beforeskip}%
     \tud at cs@restore{scr at part@afterskip}%
     \tud at cs@restore{partheadstartvskip}%
-    \tud at cs@restore{partlineswithprefixformat}%
     \tud at komafont@unset{part}%
     \tud at komafont@unset{partnumber}%
     \tud at cs@restore{raggedpart}%
   \else% !false
+    \tud at cs@store{partlineswithprefixformat}%
+    \let\partlineswithprefixformat\tud at partlineswithprefixformat%
     \tud at cs@store{scr at part@beforeskip}%
-    \renewcommand*\scr at part@beforeskip{\tud at cd@afterskip+\baselineskip}%
+    \renewcommand*\scr at part@beforeskip{%
+      \glueexpr\tud at cd@aftervskip@@glue+\baselineskip\relax%
+    }%
     \tud at cs@store{scr at part@afterskip}%
-    \renewcommand*\scr at part@afterskip{\tud at cd@afterskip}%
+    \renewcommand*\scr at part@afterskip{\tud at cd@aftervskip@@glue}%
     \tud at cs@store{partheadstartvskip}%
     \let\partheadstartvskip\tud at partheadstartvskip%
-    \tud at cs@store{partlineswithprefixformat}%
-    \let\partlineswithprefixformat\tud at partlineswithprefixformat%
     \tud at komafont@set{part}{%
       \tud at sec@fontface%
       \tud at color{\tud at part@fontcolor}%
@@ -6272,6 +6507,7 @@
     }%
     \tud at komafont@set{partnumber}{%
       \tud at sec@fontface%
+      \tud at prefix@fontsizecmd%
       \tud at color{\tud at part@fontcolor}%
     }%
     \tud at cs@store{raggedpart}%
@@ -6315,12 +6551,12 @@
     \renewcommand*\raggedsection{\tud at raggedright}%
     \tud at cs@store{minisec}%
     \renewcommand\minisec[1]{%
-      \tud at cs@use{minisec}{\tud at sec@format{##1}}%
+      \tud at cs@use{minisec}{\tud at sec@format*{##1}}%
     }%
     \tud at komafont@set{minisec}{%
       \tud at sec@fontface%
       \ifcase\tud at cd@section at num\relax\or\else% *color
-        \ifstr{\tud at pagecolor}{HKS41}{}{\color{HKS41}}%
+        \tud at if@strequal{\tud at pagecolor}{HKS41}{}{\color{HKS41}}%
       \fi%
     }%
   \fi%
@@ -6336,42 +6572,51 @@
   \tud at cs@store{footnoterule}%
   \let\footnoterule\relax%
 }
-\newcommand*\tud at cd@beforeskip{%
-  \dimexpr-\tud at len@areavskip-\tud at len@areaheadvskip\relax%
+\newcommand*\tud at cd@beforevskip@@dim{%
+  \dimexpr-\tud at dim@areavskip-\tud at dim@areaheadvskip\relax%
 }
-\newcommand*\tud at cd@innerskip{.25\baselineskip}%
-\newcommand*\tud at cd@afterskip{%
-  .75\baselineskip \@plus .05\baselineskip \@minus .1\baselineskip%
+\newcommand*\tud at cd@innervskip@@dim{%
+  \dimexpr(\tud at sec@baselineskip@@dim)/5\relax%
+}%
+\newcommand*\tud at cd@aftervskip@@glue{%
+  \glueexpr
+    \dimexpr(\tud at sec@baselineskip@@dim)*4/5\relax
+    \@plus\dimexpr(\tud at sec@baselineskip@@dim)/20\relax
+    \@minus\dimexpr(\tud at sec@baselineskip@@dim)/10\relax
+  \relax
 }
-\newcommand*\tud at cd@headstartvskip{%
-  \@tempskipa=\glueexpr\tud at cd@beforeskip\relax\relax%
-  \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi%
-  \null\vskip-\baselineskip\vskip\@tempskipa%
+\newcommand*\tud at cd@headstart at vskip{%
+  \tud at setdim\@tempdima{\tud at cd@beforevskip@@dim}%
+  \tud at length@setabsolute\@tempdima%
+  \null\vskip\dimexpr\glueexpr\@tempdima-\f at baselineskip-\parskip\relax\relax%
 }
 \newcommand*\tud at cd@vphantom{%
   \begingroup%
-    \usekomafont{partnumber}{\nobreak\tud at sec@strut}%
-    \setlength\@tempskipa{\tud at cd@innerskip}%
-    \par\nobreak\vskip\@tempskipa%
+    \usekomafont{partnumber}{%
+      \tud at sec@format{\vskip\tud at cd@innervskip@@dim}%
+    }%
   \endgroup%
 }
 \newcommand*\tud at part@subtitle{}
 \newcommand*\setpartsubtitle[1]{\gdef\tud at part@subtitle{#1}}
 \newkomafont{partsubtitle}{%
-  \tud at thesis@fontsize%
-  \fontseries{\tud at cdfont@bf}\selectfont%
+  \tud at subtitle@fontsizecmd%
+  \fontseriesforce{\tud at cdfont@bf}\selectfont%
   \tud at color{\tud at part@fontcolor}%
 }
 \aliaskomafont{parttitle}{partsubtitle}
 \newcommand*\tud at sec@subtitle[1]{%
   \ifcsvoid{tud@#1 at subtitle}{}{%
-    {\usekomafont{#1subtitle}{\tud at sec@format{\csuse{tud@#1 at subtitle}}}}\par%
+    {\usekomafont{#1subtitle}{%
+      \vskip-1\parskip%
+      \tud at sec@format{\csuse{tud@#1 at subtitle}}%
+    }}\par%
     \global\cslet{tud@#1 at subtitle}{\@empty}%
   }%
 }
 \newcommand*\tud at partheadstartvskip{}
 \let\tud at partheadstartvskip\partheadstartvskip
-\pretocmd{\tud at partheadstartvskip}{%
+\pretocmd\tud at partheadstartvskip{%
   \renewcommand*\tud at part@fontcolor{}% false/true
   \ifcase\tud at cd@part at num\relax\or\else% *color
     \renewcommand*\tud at part@fontcolor{HKS41}%
@@ -6382,28 +6627,33 @@
     \edef\tud at partformat{\noexpand\tud at sec@format{\expandonce\partformat}}%
     \let\partformat\tud at partformat%
     \IfUseNumber{}{\tud at cd@vphantom}%
-    #2\tud at sec@format[#1]{#3}%
+    #2\tud at sec@format[{#1}]{#3}%
   \tud at sec@subtitle{#1}%
 }
+\if at tud@cdoldfont at active
+  \patchcmd\tud at partlineswithprefixformat
+    {#2\tud at sec@format[{#1}]{#3}}
+    {#2\tud at sec@format[{#1}]{}\addtokomafont{#1}{\tud at sec@format}#3}
+    {}{\tud at patch@wrn{tud at partlineswithprefixformat}}
+\fi
 \At at startsection{%
   \renewcommand*\tud at section@fontcolor{}%
   \ifcase\tud at cd@section at num\relax\or\else% *color
-    \ifstr{\tud at pagecolor}{HKS41}{}{%
+    \tud at if@strequal{\tud at pagecolor}{HKS41}{}{%
       \renewcommand*\tud at section@fontcolor{HKS41}%
     }%
   \fi%
 }
 \newcommand*\tud at sectionlinesformat[4]{%
-  \@hangfrom{\hskip #2#3}{\tud at sec@format[#1]{#4}}%
+  \@hangfrom{\hskip #2#3}{\tud at sec@format*[{#1}]{#4}}%
 }
 \newcommand*\tud at sectioncatchphraseformat[4]{%
-  \let\tud at sec@strut\relax%
-  \hskip #2#3\tud at sec@format[#1]{#4}%
+  \hskip #2#3\tud at sec@format*[{#1}]{#4}%
 }
-%%% From File: tudscr-title.dtx
+%%%% From File: tudscr-title.dtx (no git version info was found)
 \newkomafont{thesis}{%
   \usekomafont{title}%
-  \tud at thesis@fontsize%
+  \tud at subtitle@fontsizecmd%
 }
 \newkomafont{titlepage}{%
   \raggedtitle%
@@ -6417,6 +6667,8 @@
 \newcommand*\tud at title@pagenumber{}
 \let\tud at title@pagenumber\relax
 \newcommand*\tud at maketitle[1][]{%
+  \TUD at deprecated@length\pageheadingsvskip%
+  \TUD at deprecated@length\headingsvskip%
   \begingroup%
     \cleardoublepage%
     \TUD at parameter@set{title}{#1}%
@@ -6430,7 +6682,9 @@
         \tud at cs@use{maketitle}[\tud at title@pagenumber]%
       \fi%
       \tud at if@tudheadings{\currentpagestyle}{%
-        \ifstr{\titlepagestyle}{empty}{\thispagestyle{empty.tudheadings}}{}%
+        \tud at if@strequal{\titlepagestyle}{empty}%
+          {\thispagestyle{empty.tudheadings}}%
+          {}%
       }{}%
     \else% !false
       \if at tud@parameter at ps@font at set\else%
@@ -6464,7 +6718,9 @@
 }
 \tud at cs@store{maketitle}
 \let\maketitle\tud at maketitle
-\patchcmd{\titlepage}{\thispagestyle{empty}}{%
+\patchcmd\titlepage{%
+  \thispagestyle{empty}%
+}{%
   \tud at if@tudheadings{\currentpagestyle}{%
     \thispagestyle{empty.tudheadings}%
   }{%
@@ -6534,9 +6790,9 @@
       \fi%
       \next at tdpage%
     \fi%
-    \tud at cd@headstartvskip%
-    \TUD at deprecated@lengthcs{pageheadingsvskip}%
-    \vspace*{\tud at dim@pageheadingsvskip}%
+    \vspace*{-\baselineskip}%
+    \tud at cd@headstart at vskip%
+    \vspace*{\dimexpr\tud at pageheadingsvskip@dim\relax}%
     \tud at cd@vphantom%
     \setparsizes{\z@}{\z@}{\z@\@plus1fil}\par at updaterelative%
     {\usekomafont{titlepage}{%
@@ -6543,10 +6799,9 @@
       \tud at maketitle@head%
       {\usekomafont{title}{\tud at title@format{\@title}\par}}%
       \ifx\@subtitle\@empty\else%
-        {\usekomafont{partnumber}{\nobreak\tud at sec@strut}}%
-        {\usekomafont{subtitle}{\tud at title@format{\@subtitle}\par}}%
+        {\usekomafont{subtitle}{\tud at title@format[partnumber]{\@subtitle}\par}}%
       \fi%
-      \vskip 2\bigskipamount%
+      \vskip\glueexpr\bigskipamount*2\relax%
       \let\tud at split@author at do\tud at split@author at title%
       \tud at multiple@split{@author}\par%
       \vskip 2ex\@plus1ex\@minus1ex%
@@ -6569,7 +6824,7 @@
             \def\@tempc{%
               \@graduation%
               \ifx\@graduationabbreviation\@empty\else%
-                \nobreakspace\@graduationabbreviation%
+                \nobreakspace(\@graduationabbreviation)%
               \fi%
             }%
             {\usekomafont{titlepage}{\graduationtext\par}}%
@@ -6589,10 +6844,10 @@
           \tud at date@check%
           \ifx\@date\@empty\else%
             \vskip 2ex\@plus1ex\@minus1ex%
-            \ifxblank{\datetext}{}{\datetext\tud at title@delimiter}%
+            \tud at if@strblank{\datetext}{}{\datetext\tud at title@delimiter}%
             {\usekomafont{date}{\tud at date@print\par}}%
             \ifx\@defensedate\@empty\else%
-              \ifxblank{\defensedatetext}{}{%
+              \tud at if@strblank{\defensedatetext}{}{%
                 \defensedatetext\tud at title@delimiter%
               }%
               {\usekomafont{date}{\@defensedate\par}}%
@@ -6601,7 +6856,7 @@
         \fi%
         \if at tud@titlesignature%
           \let\tud at split@@author at do\tud at split@author at signature%
-          \vskip\tud at len@signatureskip\noindent%
+          \vskip\tud at glue@signaturevskip\noindent%
           \tud at ifin@and{\@@author}{}{\hfill}%
           \tud at multiple@split{@@author}%
         \fi%
@@ -6680,7 +6935,9 @@
 \newcommand*\tud at maketitle@inpage{%
   \renewcommand*\tud at title@fontcolor{}%
   \ifcase\tud at cd@title at num\relax\or\else% *color
-    \ifstr{\tud at pagecolor}{HKS41}{}{\renewcommand*\tud at title@fontcolor{HKS41}}%
+    \tud at if@strequal{\tud at pagecolor}{HKS41}%
+      {}%
+      {\renewcommand*\tud at title@fontcolor{HKS41}}%
   \fi%
   \par%
   \ifx\tud at title@pagenumber\relax\else%
@@ -6704,7 +6961,7 @@
     \ifx\@extratitle\@empty%
       \ifx\@frontispiece\@empty\else%
         \if at twoside\null\fi%
-      \fi
+      \fi%
     \else%
       \tud at res@a{\@makeextratitle}%
     \fi%
@@ -6720,9 +6977,9 @@
 }
 \newcommand*\tud at maketitle@@inpage{%
   \global\@topnum=\z@%
-  \tud at cd@headstartvskip%
-  \TUD at deprecated@lengthcs{headingsvskip}%
-  \vspace*{\tud at dim@headingsvskip}%
+  \vspace*{-\baselineskip}%
+  \tud at cd@headstart at vskip%
+  \vspace*{\dimexpr\tud at headingsvskip@dim\relax}%
   \tud at cd@vphantom%
   \setparsizes{\z@}{\z@}{\z@\@plus1fil}\par at updaterelative%
   {\usekomafont{titlepage}{%
@@ -6731,11 +6988,10 @@
     \tud at maketitle@head%
     {\usekomafont{title}{\tud at title@format{\@title}\par}}%
     \ifx\@subtitle\@empty\else%
-      \vskip 1ex\@plus.5ex\@minus.5ex%
-      {\usekomafont{subtitle}{\tud at title@format{\@subtitle}\par}}%
+      {\usekomafont{subtitle}{\tud at title@format[partnumber]{\@subtitle}\par}}%
     \fi%
     \vskip 2ex\@plus1ex\@minus1ex%
-    \vskip 2\bigskipamount%
+    \vskip\bigskipamount%
     \let\tud at split@author at do\tud at split@author at title%
     \tud at multiple@split{@author}\par%
     \ifx\@date\@empty\else%
@@ -6755,11 +7011,9 @@
     \ifx\@advisor\@empty\else\tud at title@wrn{advisor}\fi%
     \ifx\@supervisor\@empty\else\tud at title@wrn{supervisor}\fi%
     \ifx\@professor\@empty\else\tud at title@wrn{professor}\fi%
-    \vskip 2\bigskipamount%
+    \vskip\bigskipamount%
     \ifnum\col at number>\@ne\relax%
-      \ifdefvoid{\multicolsep}{}{%
-        \ifisskip{\multicolsep}{\vspace{-\multicolsep}}{}%
-      }%
+      \tud at if@lengthregister{\multicolsep}{\vspace{-\multicolsep}}{}%
     \fi%
     \tud at if@v at lower{2.03}{\tud at ddc@enlargepage[\titlepagestyle]}{}%
   }}%
@@ -6767,43 +7021,27 @@
 \newcommand*\tud at maketitle@head{%
   \setbox\z@\vbox{%
     \ifx\@titlehead\@empty\else%
-      {\usekomafont{titlehead}{%
-        \begin{minipage}[t]{\textwidth}%
-          \@titlehead\tud at sec@strut%
-        \end{minipage}%
-      }}%
+      \begin{minipage}[t]{\textwidth}%
+        \usekomafont{titlehead}{\@titlehead\strut\par}%
+      \end{minipage}%
     \fi%
     \tud at thesis@tosubject%
     \ifx\@subject\@empty\else%
       \par\medskip%
-      {\usekomafont{subject}{%
-        \@subject\tud at sec@strut%
-      }}%
+      {\usekomafont{subject}{\tud at sec@format[partnumber]{\@subject}}}%
     \fi%
   }%
-  \setlength\@tempdima{\dimexpr\ht\z at +\dp\z@\relax}%
+  \tud at setdim\@tempdima{\ht\z at +\dp\z@}%
   \ifdim\@tempdima>\z@\relax%
-    \vskip\dimexpr-\@tempdima-\p at -\medskipamount\relax%
+    \vskip\dimexpr-\@tempdima-\p at -1\medskipamount\relax%
     \usebox\z@\par\medskip%
   \fi%
 }
-\newcommand*\tud at title@format[1]{%
+\newcommand*\tud at title@format[2][]{%
   \begingroup%
     \let\\\newline%
-    \let\tud at thanks\relax%
-    \def\thanks##1{\gdef\tud at thanks{##1}}%
-    \let\footnote\thanks%
-    \sbox\z@{#1}%
-    \let\thanks\@gobble%
-    \let\footnote\@gobble%
-    \tud at sec@format{#1}%
-    \edef\tud at res@a{%
-      \endgroup%
-      \ifx\tud at thanks\relax\else%
-        \noexpand\thanks{\expandonce\tud at thanks}%
-      \fi%
-    }%
-  \tud at res@a%
+    \tud at sec@format[{#1}]{#2}%
+  \endgroup%
 }
 \newcommand*\tud at thesis@tosubject{%
   \if at tud@subjectthesis\ifx\@thesis\@empty\else%
@@ -6854,7 +7092,9 @@
     \ifx\@dateofbirth\@empty\else%
       \if at titlepage%
         \tud at newline@title%
-        \ifxblank{\dateofbirthtext}{}{\dateofbirthtext\tud at title@delimiter}%
+        \tud at if@strblank{\dateofbirthtext}%
+          {}%
+          {\dateofbirthtext\tud at title@delimiter}%
         \@dateofbirth%
         \ifx\@placeofbirth\@empty\else%
           \nobreakspace\placeofbirthtext\nobreakspace\@placeofbirth%
@@ -6864,15 +7104,17 @@
       \fi%
     \fi%
     \def\@tempc##1{%
-      \ifstr{\csuse{@##1}}{}{}{%
+      \expandafter\ifx\csname @##1\endcsname\@empty\else%
         \if at titlepage%
           \tud at newline@title%
-          \ifstr{\csuse{##1name}}{}{}{\csuse{##1name}\tud at title@delimiter}%
+          \tud at if@strblank{\csuse{##1name}}%
+            {}%
+            {\csuse{##1name}\tud at title@delimiter}%
           \csuse{@##1}%
         \else%
           \tud at title@wrn{##1}%
         \fi%
-      }%
+      \fi%
     }%
     \@tempc{course}%
     \@tempc{discipline}%
@@ -6891,9 +7133,9 @@
 \newcommand*\tud at split@author at signature[2]{%
   \tud at multiple@fields at store{@author}{#1}%
   \vbox{%
-    \hsize=.3\textwidth%
+    \hsize=\dimexpr\textwidth*3/10\relax%
     \centering%
-    \rule{.3\textwidth}{.05pt}\newline%
+    \rule{\dimexpr\textwidth*3/10\relax}{.05pt}\newline%
     \ignorespaces#1\strut\unskip%
   }%
   \tud at multiple@fields at restore{@author}%
@@ -6902,15 +7144,16 @@
 \newcommand\maketitleonecolumn[2][]{%
   \if at twocolumn%
     \if at titlepage%
-      \tud at maketitle[#1]%
-      \onecolumn{#2}\twocolumn%
+      \tud at maketitle[{#1}]%
+      \onecolumn#2\twocolumn%
     \else%
-      \tud at title@twocolumn{\tud at maketitle[#1]{#2}}%
+      \tud at title@twocolumn{\tud at maketitle[{#1}]#2}%
     \fi%
   \else%
     \ClassError{\TUD at Class@Name}{%
       `\string\maketitleonecolumn' can only be used in twocolumn mode%
-    }{}%
+    }{You should use `\string\maketitle' instead.}%
+    \tud at maketitle[{#1}]#2%
   \fi%
 }
 \newsavebox\tud at title@box
@@ -6920,14 +7163,14 @@
     \let\clearpage\relax%
     \let\newpage\relax%
     \global\setbox\tud at title@box\vbox{%
-      \vspace*{.9\baselineskip}#1\bigskip%
+      \vspace*{\dimexpr1\baselineskip*9/10\relax}#1\bigskip%
     }%
   \endgroup%
-  \setlength\@tempdima{\textheight}%
+  \tud at setdim\@tempdima{\textheight}%
   \tud at if@v at lower{2.03}{%
     \tud at ddc@check%
     \ifcase\@tempb\relax\else% \tud at ddc@foot at num!=false
-      \setlength\@tempdima{\dimexpr\textheight-\tud at len@ddcdiff\relax}%
+      \tud at setdim\@tempdima{\textheight-\tud at dim@ddcdiff}%
       \@tempswatrue%
     \fi%
   }{}%
@@ -6937,7 +7180,7 @@
       \splitmaxdepth\maxdepth%
       \vsplit\tud at title@box to \@tempdima%
       \clearpage%
-      \setlength\@tempdima{\textheight}%
+      \tud at setdim\@tempdima{\textheight}%
       \tud at if@v at lower{2.03}{\@tempswafalse}{}%
     }%
   \else%
@@ -6950,13 +7193,13 @@
         You are using a two-column title along with\MessageBreak%
         the DDC-logo. Unfortunately in this case, the\MessageBreak%
         type area has to be adjusted manually. Please\MessageBreak%
-        use `\string\enlargethispage{-\the\tud at len@ddcdiff}'\MessageBreak%
+        use `\string\enlargethispage{-\the\tud at dim@ddcdiff}'\MessageBreak%
         in both columns after the title%
       }%
     \fi%
   }{}%
 }
-\newif\if at tud@coverpage
+\tud at newif\if at tud@coverpage
 \newcommand*\makecover[1][]{%
   \if at titlepageiscoverpage%
     \ClassWarning{\TUD at Class@Name}{%
@@ -6993,23 +7236,22 @@
     \if at tud@cdgeometry at cover%
       \if at tud@coverpage%
         \def\coverpagetopmargin{%
-          \dimexpr\tud at len@topmargin+\tud at len@barheight%
-            +\tud at len@headsep\relax%
+          \tud at dim@topmargin+\tud at dim@barheight+\tud at dim@headsep%
         }%
       \else%
         \tud at if@v at lower{2.03}{%
-          \def\coverpagetopmargin{.5\tud at len@both}%
+          \def\coverpagetopmargin{\tud at dim@bothmargin/2}%
         }{%
-          \def\coverpagetopmargin{\tud at len@slimmargin}%
+          \def\coverpagetopmargin{\tud at dim@slimmargin}%
         }%
       \fi%
       \tud at if@v at lower{2.03}{%
-        \def\coverpagebottommargin{.5\tud at len@both}%
+        \def\coverpagebottommargin{\tud at dim@bothmargin/2}%
       }{%
-        \def\coverpagebottommargin{\tud at len@widemargin}%
+        \def\coverpagebottommargin{\tud at dim@widemargin}%
       }%
-      \def\coverpageleftmargin{\tud at len@widemargin}%
-      \def\coverpagerightmargin{\tud at len@slimmargin}%
+      \def\coverpageleftmargin{\tud at dim@widemargin}%
+      \def\coverpagerightmargin{\tud at dim@slimmargin}%
     \fi%
     \if at tud@coverpage%
       \edef\titlepage at restore{%
@@ -7022,7 +7264,7 @@
       }%
       \begingroup%
         \tud at cover@setmargins%
-        \tud at len@areavskip=\z@%
+        \tud at setdim\tud at dim@areavskip{\z@}%
         \tud at maketitle%
         \clearpage%
       \titlepage at restore%
@@ -7053,18 +7295,18 @@
   \TUD at parameter@ps at def{#1}%
   \TUD at parameter@handler at value{pagenumber}%
 }
-\renewcommand*{\coverpagetopmargin}{%
+\renewcommand*\coverpagetopmargin{%
   \if at tud@coverpage%
-    \dimexpr\tud at len@topmargin+\tud at len@barheight+\tud at len@headsep\relax%
+    \tud at dim@topmargin+\tud at dim@barheight+\tud at dim@headsep%
   \else%
-    \dimexpr\topmargin+1in\relax%
+    \topmargin+1in%
   \fi%
 }
-\renewcommand*{\coverpagebottommargin}{%
+\renewcommand*\coverpagebottommargin{%
   \if at tud@coverpage%
-    \dimexpr\tud at len@widemargin\relax%
+    \tud at dim@widemargin%
   \else%
-    2\dimexpr\coverpagetopmargin\relax%
+    \coverpagetopmargin*2%
   \fi%
 }
 \newcommand*\tud at cover@fixmargins{%
@@ -7071,23 +7313,19 @@
   \begingroup%
     \tud at cdgeometry@assignlayout%
     \tud at x@geometry at fixmargins%
-    \setlength\@tempdima{%
-      \dimexpr\coverpagebottommargin-\tud at len@layoutvoffset
-      +\paperheight-\tud at len@layoutheight\relax%
+    \tud at setdim\@tempdima{%
+      \coverpagebottommargin-\tud at dim@layoutvoffset%
+        +\paperheight-\tud at dim@layoutheight%
     }%
     \edef\coverpagebottommargin{\the\@tempdima}%
-    \setlength\@tempdima{%
-      \dimexpr\coverpagetopmargin+\tud at len@layoutvoffset\relax%
-    }%
+    \tud at setdim\@tempdima{\coverpagetopmargin+\tud at dim@layoutvoffset}%
     \edef\coverpagetopmargin{\the\@tempdima}%
-    \setlength\@tempdima{%
-      \dimexpr\coverpagerightmargin-\tud at len@layouthoffset
-      +\paperwidth-\tud at len@layoutwidth\relax%
+    \tud at setdim\@tempdima{%
+      \coverpagerightmargin-\tud at dim@layouthoffset%
+        +\paperwidth-\tud at dim@layoutwidth%
     }%
     \edef\coverpagerightmargin{\the\@tempdima}%
-    \setlength\@tempdima{%
-      \dimexpr\coverpageleftmargin+\tud at len@layouthoffset\relax%
-    }%
+    \tud at setdim\@tempdima{\coverpageleftmargin+\tud at dim@layouthoffset}%
     \edef\coverpageleftmargin{\the\@tempdima}%
     \edef\tud at res@a{%
       \endgroup%
@@ -7109,7 +7347,7 @@
     -\coverpagebottommargin\relax%
   \headheight=0pt%
   \headsep=0pt%
-  \footskip=\baselineskip%
+  \footskip=1\baselineskip%
   \@colht=\textheight%
   \@colroom=\textheight%
   \vsize=\textheight%
@@ -7117,10 +7355,10 @@
   \hsize=\columnwidth%
   \linewidth=\hsize%
 }
-%%% From File: tudscr-frontmatter.dtx
+%%%% From File: tudscr-frontmatter.dtx (no git version info was found)
 \newcommand*\tud at fm@check[2]{%
   \global\let\tud at fm@set\tud at fm@first%
-  \ifnumless{\csuse{tud@#1 at level@num}}{3}{% false/true/section
+  \ifnum\csuse{tud@#1 at level@num}<3\relax% false/true/section
     \ifboolexpr{%
       bool {@titlepage} and bool {@tud@#1 at fil} and bool {@tud@#1 at multi}%
     }{%
@@ -7139,8 +7377,8 @@
         \boolfalse{@tud@#1 at fil}%
       \fi%
     }{}%
-  }{% chapter
-  }%
+  \else% chapter
+  \fi%
   \ifnum\csuse{tud@#1 at toc@num}>\tw@\relax%
     \tud at fm@toc{#1}{#2}%
   \fi%
@@ -7148,26 +7386,27 @@
   #2%
 }
 \newcommand*\tud at fm@@toc{}
-\newcommand*\tud at fm@@@toc{}
 \newcommand*\tud at fm@toc[2]{%
   \ifbool{@tud@#1 at multi}{%
     \begingroup%
-      \let\tud at fm@@@toc\@empty%
+      \let\tud at fm@@toc\@empty%
       \renewcommand*\tud at fm@head[2]{%
-        \protected at edef\@tempa{##2}%
-        \protected at xdef\tud at fm@@toc{\tud at fm@@@toc\@tempa}%
-        \protected at xdef\tud at fm@@@toc{\tud at fm@@toc/}%
+        \protected at xdef\tud at fm@@toc{%
+          \ifx\tud at fm@@toc\@empty\else\tud at fm@@toc/\fi##2%
+        }%
       }%
       \let\clearpage\relax%
       \sbox\z@{\vbox{#2}}%
       \csuse{phantomsection}%
       \protected at edef\@tempa{%
-        \noexpand\endgroup%
-        \noexpand\ifnumodd{\csname tud@#1 at toc@num\endcsname}{%
-          \noexpand\addsectiontocentry{}{\tud at fm@@toc}%
-        }{%
-          \noexpand\addsubsectiontocentry{}{\tud at fm@@toc}%
-        }%
+        \endgroup%
+        \ifx\tud at fm@@toc\@empty\else%
+          \ifodd\csuse{tud@#1 at toc@num}\relax
+            \noexpand\addsectiontocentry{}{\tud at fm@@toc}%
+          \else
+            \noexpand\addsubsectiontocentry{}{\tud at fm@@toc}%
+          \fi
+        \fi%
       }%
     \@tempa%
   }{%
@@ -7243,19 +7482,20 @@
   \ifcase\csuse{tud@#1 at level@num}\relax% false
     \if at titlepage\endgraf\fi%
     \csuse{phantomsection}%
-    \ifstr{\@currenvir}{\tud at quoting}{}{%
+    \tud at if@strequal{\@currenvir}{\tud at quoting}{}{%
       \if at twocolumn%
-        \vskip\dimexpr\smallskipamount-\parskip\relax%
+        \vskip\smallskipamount%
       \else%
-        \vskip\dimexpr\bigskipamount-\parskip\relax%
+        \vskip\bigskipamount%
       \fi%
+      \vskip-\parskip%
     }%
   \or% true
     \if at titlepage\endgraf\fi%
     \csuse{phantomsection}%
     \@afterindentfalse%
-    \ifstr{\@currenvir}{\tud at quoting}{}{%
-      \vskip\dimexpr\bigskipamount-\parskip\relax%
+    \tud at if@strequal{\@currenvir}{\tud at quoting}{}{%
+      \vskip\bigskipamount\vskip-\parskip%
     }%
     \begingroup%
       \noindent\centering%
@@ -7264,7 +7504,7 @@
       \endgraf%
     \endgroup%
     \nopagebreak%
-    \vskip\dimexpr\medskipamount-\parskip\relax%
+    \vskip\medskipamount\vskip-\parskip%
     \@afterheading%
   \or% section
     \section*{#2}%
@@ -7330,7 +7570,7 @@
     \clearpage%
   \else%
     \ifnum\tud at abstract@level at num=\tw@\relax%
-      \vskip\dimexpr\bigskipamount-\parskip\relax%
+      \vskip\bigskipamount\vskip-\parskip%
     \fi%
   \fi%
 ]
@@ -7339,7 +7579,7 @@
   \TUD at parameter@def{columns}{\renewcommand*\tud at x@multicol at num{#1}}%
   \TUD at parameter@def{pagestyle}{\tud at fm@pagestyle{abstract}{#1}}%
   \TUD at parameter@def{markboth}[true]{%
-    \ifstrbool{#1}{%
+    \tud at if@strbool{#1}{%
       \@tud at abstract@markbothtrue%
       \ifx\tud at envir@ps\relax\def\tud at envir@ps{headings}\fi%
     }{%
@@ -7360,7 +7600,7 @@
     the environment `abstract'.%
   }%
 }
-\newif\if at tud@declarations
+\tud at newif\if at tud@declarations
 \NewEnviron{declarations}[1][]{%
   \@tud at declarationstrue%
   \let\tud at envir@ps\relax%
@@ -7388,7 +7628,7 @@
     \clearpage%
   \else%
     \ifnum\tud at declaration@level at num=\tw@\relax%
-      \vskip\dimexpr\bigskipamount-\parskip\relax%
+      \vskip\bigskipamount\vskip-\parskip%
     \fi%
   \fi%
 ]
@@ -7397,7 +7637,7 @@
   \TUD at parameter@def{columns}{\renewcommand*\tud at x@multicol at num{#1}}%
   \TUD at parameter@def{pagestyle}{\tud at fm@pagestyle{declaration}{#1}}%
   \TUD at parameter@def{markboth}[true]{%
-    \ifstrbool{#1}{%
+    \tud at if@strbool{#1}{%
       \@tud at declaration@markbothtrue%
       \ifx\tud at envir@ps\relax\def\tud at envir@ps{headings}\fi%
     }{%
@@ -7428,29 +7668,29 @@
   }%
 }
 \newcommand*\tud at fm@declaration[1][]{%
-  \ifbool{@tud at declarations}{%
+  \if at tud@declarations%
     \begingroup%
-      \tud at fm@@confirmation[\tud at fm@supporter,#1]%
-      \tud at fm@blocking[#1]%
+      \tud at fm@@confirmation[{\tud at fm@supporter,#1}]%
+      \tud at fm@blocking[{#1}]%
     \endgroup%
-  }{%
-    \begin{declarations}[\tud at fm@supporter,#1]%
+  \else%
+    \begin{declarations}[{\tud at fm@supporter,#1}]%
       \tud at fm@@confirmation%
       \tud at fm@blocking%
     \end{declarations}%
-  }%
+  \fi%
 }
 \newcommand*\nextdeclaration[3][]{%
-  \ifbool{@tud at declarations}{%
+  \if at tud@declarations%
     \tud at fm@body at start{declaration}{#1}{#2}%
       #3%
     \tud at fm@body at end{declaration}%
-  }{%
+  \else%
     \ClassError{\TUD at Class@Name}{Incorrect usage of `\string\nextdeclaration'}{%
       The command `\string\nextdeclaration' can only be used\MessageBreak%
       within the environment `declarations'.%
     }%
-  }%
+  \fi%
 }
 \newcommand*\confirmation{%
   \kernel at ifstar{%
@@ -7465,18 +7705,18 @@
   \begingroup%
     \TUD at parameter@handler at default[declaration]{supporter}%
     \undef\KV at declaration@company%
-    \ifbool{@tud at declarations}{%
-      \tud at fm@@confirmation[\tud at fm@supporter,#1]%
-    }{%
-      \begin{declarations}[\tud at fm@supporter,#1]%
+    \if at tud@declarations%
+      \tud at fm@@confirmation[{\tud at fm@supporter,#1}]%
+    \else%
+      \begin{declarations}[{\tud at fm@supporter,#1}]%
         \tud at fm@@confirmation%
       \end{declarations}%
-    }%
+    \fi%
   \endgroup%
 }
 \newcommand*\tud at fm@@confirmation[1][]{%
   \tud at fm@body at start{declaration}{#1}{\confirmationname}%
-    \confirmationtext\vskip\z@\@confirmationclosing%
+    \confirmationtext\vskip\z at skip\@confirmationclosing%
   \tud at fm@body at end{declaration}%
 }
 \newcommand*\blocking[1][]{%
@@ -7485,13 +7725,13 @@
     \undef\KV at declaration@supporter%
     \undef\KV at declaration@closing%
     \undef\KV at declaration@confirmationclosing%
-    \ifbool{@tud at declarations}{%
-      \tud at fm@blocking[#1]%
-    }{%
-      \begin{declarations}[#1]%
+    \if at tud@declarations%
+      \tud at fm@blocking[{#1}]%
+    \else%
+      \begin{declarations}[{#1}]%
         \tud at fm@blocking%
       \end{declarations}%
-    }%
+    \fi%
   \endgroup%
 }
 \newcommand*\tud at fm@blocking[1][]{%
@@ -7499,74 +7739,15 @@
     \blockingtext%
   \tud at fm@body at end{declaration}%
 }
-%%% From File: tudscr-comp.dtx
-\newlength\footlogoheight
-\setlength\footlogoheight{\maxdimen}
-\newlength\pageheadingsvskip
-\setlength\pageheadingsvskip{\maxdimen}
-\newlength\headingsvskip
-\setlength\headingsvskip{\maxdimen}
-\TUD at deprecated@cs{professorship}{chair}
-\TUD at deprecated@cs{studentid}{matriculationnumber}
-\TUD at deprecated@cs{matriculationid}{matriculationnumber}
-\TUD at deprecated@cs{enrolmentyear}{matriculationyear}
-\TUD at deprecated@cs{birthplace}{placeofbirth}
-\TUD at deprecated@cs{submissiondate}{date}
-\TUD at deprecated@cs{oralexaminationdate}{defensedate}
-\TUD at deprecated@cs{birthday}{dateofbirth}
-\TUD at deprecated@cs{location}{place}
-\TUD at deprecated@cs{logofile}{headlogo}
-\TUD at deprecated@cs{logofilename}{headlogo}
-\AfterPackage{tudscrsupervisor}{%
-  \TUD at deprecated@cs{startdate}{issuedate}%
-  \TUD at deprecated@cs{finaldate}{duedate}%
-  \TUD at deprecated@cs{maturitydate}{duedate}%
-}
-\TUD at deprecated@cs{textcdfont}{textcd}%
-\TUD at deprecated@cs{tudfont}{cdfont}%
-\TUD at deprecated@cs{univln}{cdfontln}%
-\TUD at deprecated@cs{univrn}{cdfontrn}%
-\TUD at deprecated@cs{univbn}{cdfontsn}%
-\TUD at deprecated@cs{univxn}{cdfontbn}%
-\TUD at deprecated@cs{univls}{cdfontli}%
-\TUD at deprecated@cs{univrs}{cdfontri}%
-\TUD at deprecated@cs{univbs}{cdfontsi}%
-\TUD at deprecated@cs{univxs}{cdfontbi}%
-\TUD at deprecated@cs{textuln}{textcdln}%
-\TUD at deprecated@cs{texturn}{textcdrn}%
-\TUD at deprecated@cs{textubn}{textcdsn}%
-\TUD at deprecated@cs{textuxn}{textcdbn}%
-\TUD at deprecated@cs{textuls}{textcdli}%
-\TUD at deprecated@cs{texturs}{textcdri}%
-\TUD at deprecated@cs{textubs}{textcdsi}%
-\TUD at deprecated@cs{textuxs}{textcdbi}%
-\TUD at deprecated@cs{dinbn}{cdfontxn}%
-\TUD at deprecated@cs{textdbn}{textcdxn}%
-\TUD at deprecated@cs{ifdin}{@secondoftwo}
-\newrobustcmd*\tud at ifdin{%
-  \ifx\f at family\tud at cdfont@db%
-    \expandafter\@firstoftwo%
-  \else%
-    \expandafter\@secondoftwo%
-  \fi%
-}
-\if at tud@cdoldfont at active
-  \newcommand*\ifdin{}%
-  \let\ifdin\tud at ifdin%
-\fi
-\def\tud at res@a#1{%
-  \TUD at deprecated@cs{var#1}{it#1}%
-}
-\tud at math@loop at greeks@uc\tud at res@a%
-%%% From File: tudscr-misc.dtx
+%%%% From File: tudscr-misc.dtx (no git version info was found)
 \newcommand*\tudbookmark[1][]{\@gobbletwo}
 \newcommand*\tud at x@hyperref at realfootnotes{}
 \AfterPackage{hyperref}{%
-  \renewcommand*\tudbookmark[3][]{%
+  \renewcommand*\tudbookmark[3][0]{%
     \relax%
     \if at tud@bookmarks%
-      \phantomsection%
-      \ifblank{#1}{\pdfbookmark{#2}{#3}}{\pdfbookmark[#1]{#2}{#3}}%
+      \csuse{phantomsection}%
+      \pdfbookmark[{#1}]{#2}{#3}%
     \fi%
   }%
   \renewcommand*\tud at x@hyperref at realfootnotes{%
@@ -7575,7 +7756,6 @@
     \let\@footnotemark\H@@footnotemark%
     \let\@footnotetext\H@@footnotetext%
   }%
-  \pdfstringdefDisableCommands{\let\NoCaseChange\@firstofone}%
 }
 \newcommand*\tud at x@bookmark at startatroot{\relax}
 \AfterPackage{bookmark}{%
@@ -7583,7 +7763,7 @@
     \if at tud@bookmarks\bookmarksetup{startatroot}\fi%
   }%
 }
-\apptocmd{\titlepage}{%
+\apptocmd\titlepage{%
   \tud at x@bookmark at startatroot%
   \@tud at res@swafalse%
   \if at tud@coverpage\@tud at res@swatrue\fi%
@@ -7598,13 +7778,13 @@
     ]{\titlepagename}{title}%
   \fi%
 }{}{\tud at patch@wrn{titlepage}}
-\pretocmd{\tud at maketitle@inpage}{%
+\pretocmd\tud at maketitle@inpage{%
   \tud at x@bookmark at startatroot%
   \tudbookmark[%
   1%
   ]{\titlename}{title}%
 }{}{\tud at patch@wrn{tud at maketitle@inpage}}
-\pretocmd{\@maketitle}{%
+\pretocmd\@maketitle{%
   \tud at x@bookmark at startatroot%
   \tudbookmark[%
   1%
@@ -7631,10 +7811,10 @@
 \AtBeginDocument{%
   \if at tud@x at scr@fontsize at set\else%
     \@tud at res@swafalse%
-    \ifdim\tud at len@layoutwidth<208mm\relax\@tud at res@swatrue\fi%
-    \ifdim\tud at len@layoutwidth>212mm\relax\@tud at res@swatrue\fi%
-    \ifdim\tud at len@layoutheight<295mm\relax\@tud at res@swatrue\fi%
-    \ifdim\tud at len@layoutheight>299mm\relax\@tud at res@swatrue\fi%
+    \ifdim\tud at dim@layoutwidth<208mm\relax\@tud at res@swatrue\fi%
+    \ifdim\tud at dim@layoutwidth>212mm\relax\@tud at res@swatrue\fi%
+    \ifdim\tud at dim@layoutheight<295mm\relax\@tud at res@swatrue\fi%
+    \ifdim\tud at dim@layoutheight>299mm\relax\@tud at res@swatrue\fi%
     \if at tud@res at swa%
       \ClassWarningNoLine{\TUD at Class@Name}{%
         You've set a layout size, which is different from\MessageBreak%
@@ -7645,22 +7825,22 @@
     \fi%
   \fi%
 }
-\newif\if at tud@font at set
-\newif\if at tud@math at set
-\newif\if at tud@font at skip@set
-\newif\if at tud@x at scr@headings at reset
-\newif\if at tud@cd at process
-\newif\if at tud@cdgeometry at process
+\tud at newif\if at tud@font at set
+\tud at newif\if at tud@math at set
+\tud at newif\if at tud@relspacing at set
+\tud at newif\if at tud@x at scr@headings at reset
+\tud at newif\if at tud@cd at process
+\tud at newif\if at tud@cdgeometry at process
 \newcommand*\tud at atdocument@process{%
   \if at tud@font at set%
     \tud at font@set%
     \global\@tud at font@setfalse%
-    \global\@tud at font@skip at setfalse%
+    \global\@tud at relspacing@setfalse%
     \global\@tud at cd@processfalse%
   \fi%
-  \if at tud@font at skip@set%
-    \tud at font@skip at set%
-    \global\@tud at font@skip at setfalse%
+  \if at tud@relspacing at set%
+    \tud at relspacing@set%
+    \global\@tud at relspacing@setfalse%
   \fi%
   \if at tud@math at set%
     \tud at math@set%
@@ -7680,22 +7860,65 @@
     \global\@tud at cdgeometry@processfalse%
   \fi%
 }
+%%%% From File: tudscr-comp.dtx (no git version info was found)
+\tud at newglue\footlogoheight
+\tud at setdim\footlogoheight{\maxdimen}
+\tud at newglue\pageheadingsvskip
+\tud at setdim\pageheadingsvskip{\maxdimen}
+\tud at newglue\headingsvskip
+\tud at setdim\headingsvskip{\maxdimen}
+\TUD at deprecated@cs{professorship}{chair}
+\TUD at deprecated@cs{studentid}{matriculationnumber}
+\TUD at deprecated@cs{matriculationid}{matriculationnumber}
+\TUD at deprecated@cs{enrolmentyear}{matriculationyear}
+\TUD at deprecated@cs{birthplace}{placeofbirth}
+\TUD at deprecated@cs{submissiondate}{date}
+\TUD at deprecated@cs{oralexaminationdate}{defensedate}
+\TUD at deprecated@cs{birthday}{dateofbirth}
+\TUD at deprecated@cs{location}{place}
+\TUD at deprecated@cs{logofile}{headlogo}
+\TUD at deprecated@cs{logofilename}{headlogo}
+\AfterPackage{tudscrsupervisor}{%
+  \TUD at deprecated@cs{startdate}{issuedate}%
+  \TUD at deprecated@cs{finaldate}{duedate}%
+  \TUD at deprecated@cs{maturitydate}{duedate}%
+}
+\TUD at deprecated@cs{textcdfont}{textcd}%
+\TUD at deprecated@cs{tudfont}{cdfont}%
+\TUD at deprecated@cs{univln}{cdfontln}%
+\TUD at deprecated@cs{univrn}{cdfontrn}%
+\TUD at deprecated@cs{univbn}{cdfontsn}%
+\TUD at deprecated@cs{univxn}{cdfontbn}%
+\TUD at deprecated@cs{univls}{cdfontli}%
+\TUD at deprecated@cs{univrs}{cdfontri}%
+\TUD at deprecated@cs{univbs}{cdfontsi}%
+\TUD at deprecated@cs{univxs}{cdfontbi}%
+\TUD at deprecated@cs{textuln}{textcdln}%
+\TUD at deprecated@cs{texturn}{textcdrn}%
+\TUD at deprecated@cs{textubn}{textcdsn}%
+\TUD at deprecated@cs{textuxn}{textcdbn}%
+\TUD at deprecated@cs{textuls}{textcdli}%
+\TUD at deprecated@cs{texturs}{textcdri}%
+\TUD at deprecated@cs{textubs}{textcdsi}%
+\TUD at deprecated@cs{textuxs}{textcdbi}%
+\TUD at deprecated@cs{dinbn}{cdfontxn}%
+\TUD at deprecated@cs{textdbn}{textcdxn}%
+\TUD at deprecated@cs{ifdin}{@secondoftwo}
+\newrobustcmd*\tud at ifdin{%
+  \ifx\f at family\tud at cdfont@db%
+    \expandafter\@firstoftwo%
+  \else%
+    \expandafter\@secondoftwo%
+  \fi%
+}
 \if at tud@cdoldfont at active
-  \RequirePackage{textcase}[2004/10/07]
-  \AfterPackage*{textcase}{%
-    \robustify\NoCaseChange%
-    \newcommand*\tud at x@textcase at uclcnotmath{%
-      \@nonchangecase\hologo%
-      \def\footnote##1##{\toks@{\noexpand\footnote##1}\@footnote}%
-      \def\@footnote##1{\NoCaseChange{\the\toks@{##1}}}%
-      \def\@mkboth##1##2{\NoCaseChange{\@mkboth{##1}{##2}}}%
-    }%
-    \patchcmd{\@uclcnotmath}{\@nonchangecase\ensuremath}{%
-      \@nonchangecase\ensuremath\tud at x@textcase at uclcnotmath%
-    }{}{\tud at patch@wrn{@uclcnotmath}}%
-  }%
+  \newcommand*\ifdin{}
+  \let\ifdin\tud at ifdin
 \fi
-\TUD at deprecated@cs{NoCaseChange}{@firstofone}
+\def\tud at res@a#1{%
+  \TUD at deprecated@cs{var#1}{it#1}%
+}
+\tud at math@loop at greeks@uc\tud at res@a%
 \endinput
 %%
 %% End of file `tudscrartcl.cls'.

Modified: trunk/Master/texmf-dist/tex/latex/tudscr/tudscrbase.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tudscr/tudscrbase.sty	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/tex/latex/tudscr/tudscrbase.sty	2022-08-09 20:01:54 UTC (rev 64085)
@@ -4,15 +4,16 @@
 %%
 %% The original source files were:
 %%
-%% tudscr-version.dtx  (with options: `package,base')
+%% tudscr-version.dtx  (with options: `package,base,identify')
 %% tudscr-base.dtx  (with options: `package,base')
 %% 
 %% TUD-Script -- Corporate Design of Technische Universitaet Dresden
+%%               2022/08/09 v2.06o TUD-Script
 %% 
-%%   2021/07/15 v2.06n TUD-Script
+%% Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2022
+%%               https://github.com/tud-cd/tudscr
+%%               https://latex.wcms-file3.tu-dresden.de/phpBB3/
 %% 
-%% Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2021
-%% 
 %% This file was generated from file(s) of the TUD-Script bundle.
 %% ----------------------------------------------------------------------------
 %% 
@@ -27,20 +28,17 @@
 %% 
 %% The current maintainer and author of this work is Falk Hanisch.
 %% 
-%%% From File: tudscr-version.dtx
+%%%% From File: tudscr-version.dtx (no git version info was found)
+\NeedsTeXFormat{LaTeX2e}[2022-06-01]
 \begingroup
-  \catcode`\@11\relax
-  \ifx\TUD at Version\@undefined
-    \newcommand*\TUD at Version@Check[1]{%
+  \catcode`\@11\relax%
+  \ifx\TUD at Version\@undefined%
+    \newcommand*\TUD@@Version[2]{%
       \gdef\TUD at Version{#1}%
-      \gdef\TUDScriptVersion{#1}%
-      \def\@tempb##1 v##2 ##3\relax##4\relax{\gdef\TUDScriptVersionNumber{##2}}%
-      \edef\@tempa{\TUD at Version}%
-      \expandafter\@tempb\@tempa\relax? ? \relax\relax%
-      \gdef\TUD at Version@KOMA{3.32}%
-    }
-  \else
-    \newcommand*\TUD at Version@Check[1]{%
+      \gdef\TUD at KOMAVersion{#2}%
+    }%
+  \else%
+    \newcommand*\TUD@@Version[2]{%
       \def\@tempa{#1}%
       \ifx\TUD at Version\@tempa\else%
         \@latex at warning@no at line{%
@@ -47,81 +45,240 @@
           \noexpand\TUD at Version\space is `\TUD at Version',\MessageBreak%
           but `#1' was expected!\MessageBreak%
           You should not use classes, packages or files from\MessageBreak%
-          different TUD-Script-Bundle versions%
+          different TUD-Script bundle versions%
         }%
       \fi%
-    }
-  \fi
-  \TUD at Version@Check{2021/07/15 v2.06n TUD-Script}
+    }%
+  \fi%
+  \TUD@@Version{2022/08/09 v2.06o TUD-Script}{2022/05/01 v3.36 KOMA-Script}%
+  \ifx\TUDScriptVersion\@undefined%
+    \xdef\TUDScriptVersion{\TUD at Version}%
+    \def\@tempa#1 v#2 #3\relax#4\relax#5{\gdef#5{#2}}%
+    \expandafter\@tempa\TUD at Version ? ?\relax\relax{\TUDScriptVersionNumber}%
+    \expandafter\@tempa\TUD at KOMAVersion ? ?\relax\relax{\TUD at KOMAVersionNumber}%
+  \fi%
 \endgroup
-\NeedsTeXFormat{LaTeX2e}[2019/10/01]
-\providecommand*\tudscrmail{hanisch.latex at outlook.com}
 \@ifundefined{TUDScript}{%
   \DeclareRobustCommand\TUDScript{%
-    \textsf{%
-      T\kern.05em U\kern.05em D\kern.1em-\kern.1em Script%
-    }%
-    \ifcsname xspace\endcsname%
-      \xspace%
-    \fi%
+    \mbox{%
+      \textsf{%
+        T\kern.05em U\kern.05em D\kern.1em-\kern.1em Script%
+      }%
+    }\ifcsname xspace\endcsname\xspace\fi%
   }%
 }{}
-%%% From File: tudscr-base.dtx
+\providecommand*\TUDScriptContact{hanisch.latex at outlook.com}
+\providecommand*\TUDScriptRepository{https://github.com/tud-cd/tudscr}
+\providecommand*\TUDScriptForum{https://latex.wcms-file3.tu-dresden.de/phpBB3/}
+%%%% From File: tudscr-base.dtx (no git version info was found)
 \ProvidesPackage{tudscrbase}[%
-  2021/07/15 v2.06n TUD-Script
-  package
-  (basics for the bundle)%
+  2022/08/09 v2.06o TUD-Script
+  package (basics for the bundle)%
 ]
-\providecommand*{\ifstr}{\Ifstr}
-\providecommand*{\ifstrstart}{\Ifstrstart}
-\providecommand*{\ifisskip}{\Ifisskip}
-\providecommand*{\ifdimen}{\Ifdimen}
-\providecommand*{\ifisdimen}{\Ifisdimen}
-\providecommand*{\ifisdimension}{\Ifisdimension}
-\providecommand*{\ifnumber}{\Ifnumber}
-\RequirePackage{scrbase}[2020/09/21]
-\RequirePackage{iftex}[2019/11/07]
-\RequirePackage{etoolbox}[2011/01/03]
-\RequirePackage{xpatch}[2012/10/02]
-\RequirePackage{letltxmacro}[2016/05/16]
-\RequirePackage{etexcmds}[2011/02/16]
-\RequirePackage{kvsetkeys}[2012/04/25]
-\RequirePackage{trimspaces}[2009/09/17]
+\AtBeginDocument{%
+  \ifcsundef{scr at v@first}{}{%
+    \ifcsundef{scr at v@\TUD at KOMAVersionNumber}{%
+      \PackageError{tudscrbase}{%
+        KOMA-Script v\TUD at KOMAVersionNumber\space is required%
+      }{%
+        \TUD at Version\space must be used at least with\MessageBreak%
+        \TUD at KOMAVersion, but only\MessageBreak%
+        \KOMAScriptVersion\space was found.%
+      }%
+    }{%
+      \expandafter\ifnum\scr at v@is at lt{3.12}\relax%
+        \PackageError{tudscrbase}{%
+          KOMA-Script compatibility level too low%
+        }{%
+          \TUD at Version\space must be used at least with\MessageBreak%
+          `version=3.12' KOMA-Script compatibility option.%
+        }%
+      \fi%
+    }%
+  }%
+}
+\RequirePackage{scrbase}[%
+  2022/05/01 v3.36 KOMA-Script
+]
+\RequirePackage{iftex}
+\RequirePackage{etoolbox}
+\RequirePackage{xpatch}
+\RequirePackage{letltxmacro}
+\RequirePackage{kvsetkeys}
+\RequirePackage{trimspaces}
+\AfterPackage*{hyperref}{%
+  \pdfstringdefDisableCommands{%
+    \def\TUDScript{TUD-Script}%
+    \def\KOMAScript{KOMA-Script}%
+  }%
+}
+\newcommand*\tud at newif[1]{\@ifdefinable#1{\newif#1}}
+\newcommand*\tud at newcount[1]{\@ifdefinable#1{\newcount#1}}
+\newcommand*\tud at newtoks[1]{\@ifdefinable#1{\newtoks#1}}
+\newcommand*\tud at newread[1]{\@ifdefinable#1{\newread#1}}
+\newcommand*\tud at newwrite[1]{\@ifdefinable#1{\newwrite#1}}
+\newcommand*\tud at newglue[1]{\@ifdefinable#1{\newskip#1}}
+\newcommand*\tud at newdim[1]{\@ifdefinable#1{\newdimen#1}}
+\newrobustcmd*\tud at setglue[2]{%
+  \ifdefdimen{#1}{%
+    \PackageWarning{tudscrbase}{%
+      You tried to assign dimen \string#1\MessageBreak%
+      so \string\tud at setdim\space is used%
+    }%
+    \tud at setdim{#1}{#2}%
+  }{%
+    \setlength#1{\glueexpr#2\relax}%
+  }%
+}
+\newrobustcmd*\tud at setdim[2]{%
+  \begingroup%
+    \@tud at res@swafalse%
+    \setlength\@tempskipa{\glueexpr#2\relax}%
+    \ifdim\gluestretch\@tempskipa=\z@\relax\else%
+      \@tud at res@swatrue%
+    \fi%
+    \ifdim\glueshrink\glueexpr\@tempskipa\relax=\z@\relax\else%
+      \@tud at res@swatrue%
+    \fi%
+    \if at tud@res at swa%
+      \PackageWarning{tudscrbase}{%
+        You tried to use \string\tud at setdim\string#1\MessageBreak%
+        with glue \detokenize{#2} (\the\@tempskipa)\MessageBreak%
+        but only the base value is used%
+      }%
+    \fi%
+  \endgroup%
+  \setlength#1{\dimexpr\glueexpr#2\relax\relax}%
+}
+\newrobustcmd*\tud at addtoglue[2]{%
+  \tud at setglue#1{\glueexpr#1+#2\relax}%
+}
+\newrobustcmd*\tud at addtodim[2]{%
+  \tud at setdim#1{\glueexpr#1+#2\relax}%
+}
+\tud at newglue\tud at res@glue
+\newcommand*\tud at if@lengthregister[1]{%
+  \begingroup%
+    \@tud at res@swafalse%
+    \ifdeflength{#1}{\@tud at res@swatrue}{}%
+    \ifdefdimen{#1}{\@tud at res@swatrue}{}%
+    \if at tud@res at swa%
+      \aftergroup\@firstoftwo%
+    \else%
+      \aftergroup\@secondoftwo%
+    \fi%
+  \endgroup%
+}
+\newcommand*\tud at length@setabsolute[1]{%
+  \tud at if@lengthregister{#1}{%
+    \ifdim#1<\z@%
+      \setlength#1{-\glueexpr#1\relax}%
+    \fi%
+  }{%
+    \protected at edef#1{%
+      \noexpand\ifdim\noexpand\glueexpr\expandonce#1\relax<\z at -\noexpand\fi%
+      \noexpand\glueexpr\expandonce#1\relax%
+    }%
+  }%
+}
 \newcommand*\tud at reserved{}
 \newcommand*\tud at res@a{}
 \newcommand*\tud at res@b{}
 \newcommand*\tud at res@c{}
-\newif\if at tud@res at swa
-\newcount\tud at res@cnt
-\newread\tud at res@read
-\newtoks\tud at toks@
-\newcommand*\eaddto at hook[2]{%
+\newcommand*\tud at res@d{}
+\tud at newif\if at tud@res at swa
+\tud at newcount\tud at res@cnt
+\tud at newtoks\tud at toks@
+\newcommand*\addto at hook@expandafter[2]{%
   \expandafter\addto at hook\expandafter#1\expandafter{#2}%
 }
-\newcommand*\ifxblank{\ifstr{}}
-\newcommand*\ifstrbool[4]{%
-  \ifstr{#1}{true}{#2}{%
-    \ifstr{#1}{on}{#2}{%
-      \ifstr{#1}{yes}{#2}{%
-        \ifstr{#1}{false}{#3}{%
-          \ifstr{#1}{no}{#3}{%
-            \ifstr{#1}{off}{#3}{%
-              #4%
-            }%
-          }%
-        }%
+\newcommand*\tud at if@preamble{}
+\let\tud at if@preamble\@firstoftwo
+\AfterEndPreamble{\let\tud at if@preamble\@secondoftwo}
+\newcommand*\tud at if@strequal[2]{%
+  \begingroup%
+    \protected at edef\tud at res@a{%
+      \endgroup%
+      \noexpand\ifstrequal{#1}{#2}%
+    }%
+  \tud at res@a%
+}
+\newcommand*\tud at if@strstart[2]{%
+  \begingroup%
+    \protected at edef\tud at res@a{%
+      \endgroup%
+      \noexpand\Ifstrstart{\noexpand\detokenize{#1}}{\noexpand\detokenize{#2}}%
+    }%
+  \tud at res@a%
+}
+\newcommand*\tud at if@strempty{\tud at if@strequal{}}
+\newcommand*\tud at if@strblank[1]{%
+  \begingroup%
+    \protected at edef\tud at res@a{%
+      \endgroup%
+      \noexpand\ifblank{#1}%
+    }%
+  \tud at res@a%
+}
+\newcommand*\tud at if@strbool[4]{%
+  \TUD at set@ifkey{strbool}{@tempswa}{#1}%
+  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+    \if at tempswa#2\else#3\fi%
+  \else%
+    #4
+  \fi%
+}
+\newcommand*\tud at strlowercase[2]{%
+  \protected at edef#1{%
+    \lowercase{\def\noexpand#1{#2}}%
+  }#1%
+}
+\newcommand*\tud at strlength[2]{%
+  \begingroup%
+    \def\tud at res@c{\glueexpr#2\relax}%
+    \edef\tud at res@a{\strip at pt\dimexpr\tud at res@c\relax pt}%
+    \edef\tud at res@b{\strip at pt\dimexpr\gluestretch\tud at res@c\relax}%
+    \ifdim\tud at res@b\p@=\z@\relax\else%
+      \eappto\tud at res@a{%
+        \space\@plus\space\tud at res@b%
+        \ifcase\gluestretchorder\tud at res@c pt\or fil\or fill\or filll\fi%
       }%
+    \fi%
+    \edef\tud at res@b{\strip at pt\dimexpr\glueshrink\tud at res@c\relax}%
+    \ifdim\tud at res@b\p@=\z@\relax\else%
+      \eappto\tud at res@a{%
+        \space\@minus\space\tud at res@b%
+        \ifcase\glueshrinkorder\tud at res@c pt\or fil\or fill\or filll\fi%
+      }%
+    \fi%
+    \edef\tud at res@a{%
+      \endgroup%
+      \unexpanded{\def#1}{\tud at res@a}%
     }%
-  }%
+  \tud at res@a%
 }
-\newcommand*\iflanguageloaded[1]{%
-  \PackageWarning{tudscrbase}{%
-    Whether package `babel' nor package `polyglossia' has been loaded%
+\newcommand*\tud at remove@spaces at within[1]{%
+  \begingroup%
+    \protected at edef\tud at res@a{\noexpand\zap at space#1\space\noexpand\@empty}%
+    \protected at edef\tud at res@a{%
+      \endgroup%
+      \unexpanded{\def#1}{\tud at res@a}%
+    }%
+  \tud at res@a%
+}
+\AtEndPreamble{%
+  \providecommand*\iflanguageloaded[1]{%
+    \PackageWarning{tudscrbase}{%
+      `\string\iflanguageloaded' is not defined. Loading\MessageBreak%
+      either package `babel' or package `polyglossia'\MessageBreak%
+      is recommended%
+    }%
+    \def\iflanguageloaded##1{\expandafter\@secondoftwo}%
+    \iflanguageloaded{#1}%
   }%
-  \expandafter\@secondoftwo%
 }
 \AfterPackage*{babel}{%
-  \renewcommand*\iflanguageloaded[1]{%
+  \providecommand*\iflanguageloaded[1]{%
     \@expandtwoargs\in@{,#1,}{,\bbl at loaded,}%
     \ifin@%
       \expandafter\@firstoftwo%
@@ -130,7 +287,6 @@
     \fi%
   }%
 }
-\BeforePackage{polyglossia}{\undef\iflanguageloaded}
 \providecommand*\protected at expandtwoargs[3]{%
   \protected at edef\reserved at a{\noexpand#1{#2}{#3}}\reserved at a%
 }
@@ -140,41 +296,35 @@
     \@defaultunits\@tempdimb #3pt\relax\@nnil%
     \ifdim\@tempdima>\@tempdimb\relax%
       \@whiledim\@tempdimb>1pt\relax\do{%
-        \setlength\@tempdima{.1\@tempdima}%
-        \setlength\@tempdimb{.1\@tempdimb}%
+        \setlength\@tempdima{\dimexpr\@tempdima/10\relax}%
+        \setlength\@tempdimb{\dimexpr\@tempdimb/10\relax}%
       }%
       \setlength\@tempdimc{\@tempdima}%
     \else%
       \@whiledim\@tempdima>1pt\relax\do{%
-        \setlength\@tempdima{.1\@tempdima}%
-        \setlength\@tempdimb{.1\@tempdimb}%
+        \setlength\@tempdima{\dimexpr\@tempdima/10\relax}%
+        \setlength\@tempdimb{\dimexpr\@tempdimb/10\relax}%
       }%
       \setlength\@tempdimc{\@tempdimb}%
     \fi%
     \@tempcnta=1\relax%
-    \@whiledim\dimexpr\@tempcnta\@tempdimc\relax<.01\maxdimen\do{%
+    \@whiledim%
+      \dimexpr\@tempcnta\@tempdimc\relax<\dimexpr\maxdimen/100\relax%
+    \do{%
       \multiply\@tempcnta by 10\relax%
     }%
-    \setlength\@tempdimc{%
-      \dimexpr(\@tempcnta\@tempdima / \@tempdimb * \p@)\relax%
-    }%
-    \setlength\@tempdimc{\dimexpr \@tempdimc/\@tempcnta\relax}%
+    \setlength\@tempdimc{\dimexpr(\@tempcnta\@tempdima/\@tempdimb*\p@)\relax}%
+    \setlength\@tempdimc{\dimexpr\@tempdimc/\@tempcnta\relax}%
     \edef\@tempa{\endgroup\def\noexpand#1{\strip at pt\@tempdimc}}%
   \@tempa%
 }
-\newcommand*\tud at lowerstring[2]{%
-  \protected at edef#1{#2}%
-  \lowercase\expandafter{%
-    \expandafter\def\expandafter #1\expandafter{#1}%
-  }%
-}
 \newcommand*\tud at if@fdfileexists[2]{%
   \begingroup%
     \@tud at res@swatrue%
-    \tud at lowerstring\tud at res@a{#1#2.fd}%
+    \tud at strlowercase\tud at res@a{#1#2.fd}%
     \IfFileExists{\tud at res@a}{\@tud at res@swafalse}{}%
     \if at tud@res at swa%
-      \tud at lowerstring\tud at res@a{#1}%
+      \tud at strlowercase\tud at res@a{#1}%
       \edef\tud at res@a{\tud at res@a#2.fd}%
       \IfFileExists{\tud at res@a}{\@tud at res@swafalse}{}%
     \fi%
@@ -194,9 +344,10 @@
   \expandafter\csname #1\expandafter\endcsname\csname #2\endcsname%
 }
 \newrobustcmd*\tud at cs@store[1]{%
-  \tud at cs@check{#1}%
-  \ifcsdef{@@tud@#1}{}{%
-    \tud at cs@letltx{@@tud@#1}{#1}%
+  \tud at cs@check{#1}{%
+    \ifcsdef{@@tud@#1}{}{%
+      \tud at cs@letltx{@@tud@#1}{#1}%
+    }%
   }%
 }
 \newrobustcmd*\tud at cs@restore[1]{%
@@ -205,92 +356,109 @@
       \cslet{#1}{\relax}%
     }{}%
   }%
-  \tud at cs@check{#1}%
-  \ifcsdef{@@tud@#1}{%
-    \tud at cs@letltx{#1}{@@tud@#1}%
-    \csundef{@@tud@#1}%
-  }{}%
+  \tud at cs@check{#1}{%
+    \ifcsdef{@@tud@#1}{%
+      \tud at cs@letltx{#1}{@@tud@#1}%
+      \csundef{@@tud@#1}%
+    }{}%
+  }%
 }
 \newrobustcmd*\tud at cs@reset[1]{%
-  \tud at cs@check{#1}%
-  \ifcsdef{@@tud@#1}{%
-    \tud at cs@letltx{#1}{@@tud@#1}%
-  }{}%
+  \tud at cs@check{#1}{%
+    \ifcsdef{@@tud@#1}{%
+      \tud at cs@letltx{#1}{@@tud@#1}%
+    }{}%
+  }%
 }
 \newrobustcmd*\tud at cs@update[1]{%
-  \tud at cs@check{#1}%
-  \ifcsdef{@@tud@#1}{%
-    \tud at cs@letltx{@@tud@#1}{#1}%
-  }{}%
+  \tud at cs@check{#1}{%
+    \ifcsdef{@@tud@#1}{%
+      \tud at cs@letltx{@@tud@#1}{#1}%
+    }{}%
+  }%
 }
 \newrobustcmd*\tud at cs@use[1]{%
-  \tud at cs@check{#1}%
-  \ifcsdef{@@tud@#1}{%
-    \csuse{@@tud@#1}%
-  }{%
-    \csuse{#1}%
+  \tud at cs@check{#1}{%
+    \ifcsdef{@@tud@#1}{%
+      \csuse{@@tud@#1}%
+    }{%
+      \csuse{#1}%
+    }%
   }%
 }
 \newrobustcmd*\tud at cs@check[1]{%
-  \ifcsdef{#1}{}{%
-    \PackageError{tudscrbase}{%
-      `\@backslashchar#1' is not defined}{%
-      The command `\@backslashchar#1' was never defined. \MessageBreak%
-      Please contact the TUD-Script maintainer\MessageBreak%
-      via \tudscrmail. A bugfix is urgently required.%
-    }%
+  \begingroup%
+    \ifcsdef{#1}{\@tud at res@swatrue}{\@tud at res@swafalse}%
+    \if at tud@res at swa%
+      \ifcscounter{#1}{\@tud at res@swafalse}{}%
+      \ifcslength{#1}{\@tud at res@swafalse}{}%
+      \ifcsdimen{#1}{\@tud at res@swafalse}{}%
+    \fi%
+    \if at tud@res at swa%
+      \aftergroup\@firstofone%
+    \else%
+      \PackageError{tudscrbase}{`\@backslashchar#1' is not a defined macro}{%
+        The macro `\@backslashchar#1' was never defined. \MessageBreak%
+        Please contact the TUD-Script maintainer\MessageBreak%
+        via \TUDScriptContact. A bugfix is urgently required.%
+      }%
+      \aftergroup\@gobble%
+    \fi%
+  \endgroup%
+}
+\newcommand*\tud at cslength@store[1]{%
+  \tud at cslength@check{#1}{%
+    \ifcsundef{@@tud at length@#1}{%
+      \csedef{@@tud at length@#1}{\expandafter\the\csname #1\endcsname}%
+    }{}%
   }%
 }
-\newcommand*\tud at skip@store[1]{%
-  \tud at skip@check{#1}{%
-    \ifcsdef{@@tud at skip@#1}{}{%
-      \csedef{@@tud at skip@#1}{\expandafter\the\csname #1\endcsname}%
+\newcommand*\tud at cslength@restore[1]{%
+  \tud at cslength@check{#1}{%
+    \ifcsundef{@@tud at length@#1}{}{%
+      \expandafter\setlength\csname #1\endcsname{%
+        \csname @@tud at length@#1\endcsname%
+      }%
+      \csundef{@@tud at length@#1}%
     }%
   }%
 }
-\newcommand*\tud at skip@restore[1]{%
-  \tud at skip@check{#1}{%
-    \ifcsdef{@@tud at skip@#1}{%
-      \csname #1\endcsname=\csname @@tud at skip@#1\endcsname%
-      \csundef{@@tud at skip@#1}%
-    }{}%
+\newcommand*\tud at cslength@reset[1]{%
+  \tud at cslength@check{#1}{%
+    \ifcsundef{@@tud at length@#1}{}{%
+      \expandafter\setlength\csname #1\endcsname{%
+        \csname @@tud at length@#1\endcsname%
+      }%
+    }%
   }%
 }
-\newcommand*\tud at skip@reset[1]{%
-  \tud at skip@check{#1}{%
-    \ifcsdef{@@tud at skip@#1}{%
-      \csname#1\endcsname=\csname @@tud at skip@#1\endcsname%
-    }{}%
+\newcommand*\tud at cslength@check[1]{%
+  \expandafter\tud at if@lengthregister\expandafter{\csname #1\endcsname}{%
+    \expandafter\@firstofone%
+  }{%
+    \PackageError{tudscrbase}{`\@backslashchar#1' is not a defined length}{%
+      The length `\@backslashchar#1' was never defined. \MessageBreak%
+      Please contact the TUD-Script maintainer\MessageBreak%
+      via \TUDScriptContact. A bugfix is urgently required.%
+    }%
+    \expandafter\@gobble%
   }%
 }
-\newcommand*\tud at skip@set[2]{%
-  \tud at skip@check{#1}{%
-    \expandafter\setlength\csname #1\endcsname{#2}%
-  }%
-}
-\newcommand*\tud at skip@check[1]{%
-  \begingroup%
-    \@tempswafalse%
-    \expandafter\ifisskip\expandafter{\csname#1\endcsname}{\@tempswatrue}{}%
-    \expandafter\ifisdimen\expandafter{\csname#1\endcsname}{\@tempswatrue}{}%
-    \if at tempswa%
-      \aftergroup\@firstofone%
-    \else%
-      \aftergroup\@gobble%
-    \fi%
-  \endgroup%
-}
 \newcommand*\tud at patch@wrn[1]{%
   \PackageWarning{tudscrbase}{%
     It wasn't possible to patch `\@backslashchar#1'\MessageBreak%
     Please contact the TUD-Script maintainer\MessageBreak%
-    via \tudscrmail. Without a bugfix an\MessageBreak%
+    via \TUDScriptContact. Without a bugfix an\MessageBreak%
     erroneous output may occur%
   }%
 }
 \DefineFamily{TUD}
-\newcommand*\TUDProcessOptions{\FamilyProcessOptions{TUD}}
-\newcommand*\TUDExecuteOptions{\FamilyExecuteOptions{TUD}}
+\newcommand*\TUDProcessOptions[1][.\@currname.\@currext]{%
+  \FamilyProcessOptions[{#1}]{TUD}%
+}
+\newcommand*\TUDExecuteOptions[1][.\@currname.\@currext]{%
+  \FamilyExecuteOptions[{#1}]{TUD}%
+}
 \newcommand*\TUDoptions{\FamilyOptions{TUD}}
 \newcommand*\TUDoption{\FamilyOption{TUD}}
 \newcommand*\TUD at key[2][.\@currname.\@currext]{%
@@ -325,29 +493,215 @@
   }%
 }
 \newcommand*\TUD at set@ifkey[3]{%
-  \tud at lowerstring\tud at res@a{#3}%
-  \edef\tud at res@b{%
-    \etex at unexpanded{\FamilySetBool{TUD}{#1}{#2}}{\tud at res@a}%
-  }\tud at res@b%
+  \begingroup%
+    \tud at strlowercase\tud at res@a{#3}%
+    \edef\tud at res@a{%
+      \endgroup%
+      \unexpanded{\FamilySetBool{TUD}{#1}{#2}}{\tud at res@a}%
+    }%
+  \tud at res@a%
 }
 \newcommand*\TUD at set@numkey[4]{%
-  \tud at lowerstring\tud at res@a{#4}%
-  \edef\tud at res@b{%
-    \etex at unexpanded{\FamilySetNumerical{TUD}{#1}{#2}{#3}}{\tud at res@a}%
-  }\tud at res@b%
+  \begingroup%
+    \tud at strlowercase\tud at res@a{#4}%
+    \edef\tud at res@a{%
+      \endgroup%
+      \unexpanded{\FamilySetNumerical{TUD}{#1}{#2}{#3}}{\tud at res@a}%
+    }%
+  \tud at res@a%
 }
 \newcommand*\TUD at bool@numkey{%
   {false}{0},{off}{0},{no}{0},{true}{1},{on}{1},{yes}{1}%
 }
-\newcommand*\TUD at set@dimenkey[3]{%
-  \tud at lowerstring\tud at res@a{#3}%
-  \edef\tud at res@b{%
-    \etex at unexpanded{\FamilySetUseLengthMacro{TUD}{#1}{#2}}{\tud at res@a}%
-  }\tud at res@b%
+\newcommand*\TUD at set@gluekey[4][pt]{%
+  \begingroup%
+    \tud at strlowercase\tud at res@a{#4}%
+    \edef\tud at res@b{\detokenize\expandafter{\tud at res@a}}%
+    \edef\tud at res@c{\detokenize\expandafter{\@backslashchar}}%
+    \@expandtwoargs\in@{\tud at res@c}{\tud at res@b}%
+    \ifin@\else%
+      \tud at normalize@gluekey\tud at res@a{#1}%
+    \fi%
+    \protected at edef\tud at res@a{%
+      \endgroup%
+      \ifx\tud at res@a\@empty%
+        \noexpand\FamilyKeyStateUnknownValue%
+      \else%
+        \unexpanded{\tud at validate@gluekey{#2}}{\tud at res@a}{#4}%
+        \unexpanded{\FamilySetUseLengthMacro{TUD}{#2}{#3}}{\tud at res@a}%
+      \fi%
+    }%
+  \tud at res@a%
 }
+\newcommand*\tud at normalize@gluekey[2]{%
+  \begingroup%
+    \edef\tud at res@c{#1}%
+    \def\tud at res@a##1plus##2plus##3\@nil{%
+      \let\tud at res@a\@empty%
+      \tud at res@b##1minusminus\@nil%
+      \tud at res@b##2minusminus\@nil%
+    }%
+    \def\tud at res@b##1minus##2minus##3\@nil{%
+      \eappto\tud at res@a{{\trim at spaces{##1}}{\trim at spaces{##2}}}%
+    }%
+    \expandafter\tud at res@a\tud at res@c plusplus\@nil%
+    \def\tud at res@b##1##2##3##4{%
+      \IfArgIsEmpty{##2}{%
+        \def\tud at res@a{{##1}{##3}{##4}}%
+      }{%
+        \def\tud at res@a{{##1}{##3}{##2}}%
+      }%
+    }%
+    \expandafter\tud at res@b\tud at res@a%
+    \edef\tud at res@b{%
+      \unexpanded{\@tfor\tud at res@b:=}\tud at res@a%
+    }%
+    \let\tud at res@c\@empty%
+    \@tud at res@swatrue%
+    \tud at res@b\do{%
+      \tud at normalize@@gluekey\tud at res@a{\tud at res@b}{#2}%
+      \ifx\tud at res@a\relax%
+        \@tud at res@swafalse%
+        \@break at tfor%
+      \else%
+        \eappto\tud at res@c{{\tud at res@a}}%
+      \fi%
+    }%
+    \let\tud at res@a\@empty%
+    \if at tud@res at swa%
+      \def\tud at res@b##1##2##3{%
+        \IfArgIsEmpty{##1}{\def\tud at res@b{0#2}}{\def\tud at res@b{##1}}%
+        \Ifdimen{\tud at res@b}{%
+          \edef\tud at res@a{%
+            \tud at res@b%
+            \IfArgIsEmpty{##2}{}{\space\@plus\space##2}%
+            \IfArgIsEmpty{##3}{}{\space\@minus\space##3}%
+          }%
+        }{}%
+      }%
+      \expandafter\tud at res@b\tud at res@c%
+    \fi%
+    \edef\tud at res@c{%
+      \endgroup%
+      \unexpanded{\def#1}{\tud at res@a}%
+    }%
+  \tud at res@c%
+}
+\newcommand*\tud at normalize@@gluekey[3]{%
+  \begingroup%
+    \edef\tud at res@a{#2}%
+    \@tud at res@swafalse%
+    \expandafter\if\expandafter\@car\tud at res@a\relax\@nil+\@tud at res@swatrue\fi%
+    \expandafter\if\expandafter\@car\tud at res@a\relax\@nil-\@tud at res@swatrue\fi%
+    \if at tud@res at swa%
+      \protected at edef\tud at res@b{\expandafter\@car\tud at res@a\relax\@nil}%
+      \protected at edef\tud at res@a{\expandafter\@gobble\tud at res@a}%
+    \else%
+      \let\tud at res@b\@empty%
+    \fi%
+    \@tud at res@swatrue%
+    \Ifdimen{\tud at res@a}{}{%
+      \Ifdimen{\tud at res@a#3}{%
+        \appto\tud at res@a{#3}%
+      }{%
+        \@tud at res@swafalse%
+      }%
+    }%
+    \if at tud@res at swa%
+      \Ifisdimension{\tud at res@a}{}{%
+        \let\tud at res@a\@empty%
+        \let\tud at res@b\@empty%
+      }%
+    \else%
+      \def\tud at res@c##1fil##2fil##3\@nil{%
+        \IfArgIsEmpty{##1}{\def\tud at res@a{1}}{\def\tud at res@a{##1}}%
+        \Ifdimen{\tud at res@a pt}{\@tud at res@swatrue}{\@tud at res@swafalse}%
+        \if at tud@res at swa%
+          \appto\tud at res@a{fil##2}%
+          \tud at if@strequal{##2}{}{}{%
+            \tud at if@strequal{##2}{l}{}{%
+              \tud at if@strequal{##2}{ll}{}{\@tud at res@swafalse}%
+            }%
+          }%
+        \fi%
+      }%
+      \expandafter\tud at res@c\tud at res@a filfil\@nil%
+    \fi%
+    \edef\tud at res@c{%
+      \endgroup%
+      \if at tud@res at swa%
+        \unexpanded{\def#1}{\tud at res@b\tud at res@a}%
+      \else%
+        \unexpanded{\let#1\relax}%
+      \fi%
+    }%
+  \tud at res@c%
+}
+\newcommand*\tud at validate@gluekey[3]{%
+  \begingroup%
+    \protected at edef\tud at res@a{#2}%
+    \protected at edef\tud at res@b{#3}%
+    \tud at remove@spaces at within\tud at res@a%
+    \tud at remove@spaces at within\tud at res@b%
+    \ifx\tud at res@a\tud at res@b%
+      \aftergroup\@gobble%
+    \else%
+      \aftergroup\@firstofone%
+    \fi%
+  \endgroup{%
+    \PackageWarning{tudscrbase}{%
+      The length `#3'\MessageBreak%
+      seems to be wrong formatted. Assuming, you meant\MessageBreak%
+      `#1=#2'%
+    }%
+  }%
+}
+\newcommand*\TUD at set@dimkey[4][pt]{%
+  \begingroup%
+    \TUD at set@gluekey[{#1}]{#2}{\tud at res@a}{#4}%
+    \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+      \@tud at res@swafalse%
+      \Ifisskip{\tud at res@a}{%
+        \protected at edef\tud at res@a{\dimexpr\tud at res@a\relax}%
+        \def\tud at res@b{a \string\skip\space register}%
+        \@tud at res@swatrue%
+      }{%
+        \Ifisglueexpr{\tud at res@a}{%
+          \protected at edef\tud at res@a{\dimexpr\tud at res@a\relax}%
+          \def\tud at res@b{a glue expression}%
+          \@tud at res@swatrue%
+        }{%
+          \Ifisglue{\tud at res@a}{%
+            \Ifisdimension{\tud at res@a}{}{%
+              \setlength\@tempdima{\dimexpr\glueexpr\tud at res@a\relax\relax}%
+              \tud at strlength\tud at res@a{\@tempdima}%
+              \def\tud at res@b{something containing glue}%
+              \@tud at res@swatrue%
+            }%
+          }{}%
+        }%
+      }%
+      \if at tud@res at swa%
+        \PackageWarning{tudscrbase}{%
+          Using option `#2' with\MessageBreak%
+          \tud at res@b\space(#4)\MessageBreak%
+          is not recommended. You should consider to use\MessageBreak%
+          an expression for a dimen instead. Setting\MessageBreak%
+          `#2=\tud at res@a'%
+        }%
+      \fi%
+      \protected at edef\tud at res@a{%
+        \endgroup%
+        \unexpanded{\FamilySetUseLengthMacro{TUD}{#2}{#3}}{\tud at res@a}%
+      }%
+    \else%
+      \def\tud at res@a{\endgroup\FamilyKeyStateUnknownValue}%
+    \fi%
+  \tud at res@a%
+}
 \newcommand*\TUD at unknown@keyval{\FamilyUnknownKeyValue{TUD}}
 \newcommand*\tud at locked@newnum[2]{%
-  \expandafter\newcommand\expandafter*\csname#1\endcsname{#2}%
+  \expandafter\newcommand\expandafter*\csname #1\endcsname{#2}%
   \newbool{#1 at locked}%
   \tud at num@set{#1}{#2}%
 }
@@ -362,8 +716,15 @@
   \booltrue{#1 at locked}%
 }
 \newcommand*\tud at num@set[2]{%
-  \ifcsdef{#1}{%
-    \ifnumber{#2}{%
+  \ifcsundef{#1}{%
+    \PackageError{tudscrbase}{%
+      `\@backslashchar#1' was never defined%
+    }{%
+      You tried using the numerical expression `\@backslashchar#1'\MessageBreak%
+      but you didn't define it with `\string\tud at locked@newnum'.%
+    }%
+  }{%
+    \Ifnumber{#2}{%
       \csdef{#1}{#2}%
     }{%
       \PackageError{tudscrbase}{%
@@ -373,13 +734,6 @@
         to value `#2', which isn't numerical.%
       }%
     }%
-  }{%
-    \PackageError{tudscrbase}{%
-      `\@backslashchar#1' was never defined%
-    }{%
-      You tried using the numerical expression `\@backslashchar#1'\MessageBreak%
-      but you didn't define it with `\string\tud at locked@newnum'.%
-    }%
   }%
 }
 \newcommand*\tud at locked@newbool[2][false]{%
@@ -398,7 +752,7 @@
   \booltrue{#1 at locked}%
 }
 \newcommand*\tud at bool@set[2]{%
-  \ifstrbool{#2}{\booltrue{#1}}{\boolfalse{#1}}{%
+  \tud at if@strbool{#2}{\booltrue{#1}}{\boolfalse{#1}}{%
     \PackageError{tudscrbase}{%
       `#2' is not a valid boolean expression%
     }{%
@@ -415,7 +769,7 @@
   \gdef\TUD at parameter@@family{}%
 }
 \newcommand*\TUD at parameter@checkfamily[2]{%
-  \ifxblank{#1}{%
+  \tud at if@strblank{#1}{%
     \PackageError{tudscrbase}{%
       No family for \@backslashchar#2 defined%
     }{%
@@ -470,7 +824,7 @@
 \newcommand*\TUD at parameter@handler at macro[3][\TUD at parameter@@family]{%
   \TUD at parameter@checkfamily{#1}{TUD at parameter@handler at macro}%
   \expandafter\kv at set@family at handler\expandafter{#1}{%
-    \ifstr{\kv at key}{\TUD at parameter@nokey}{#3}{#2}%
+    \tud at if@strequal{\kv at key}{\TUD at parameter@nokey}{#3}{#2}%
   }%
 }
 \newcommand*\TUD at parameter@handler at value[2][\TUD at parameter@@family]{%
@@ -478,27 +832,29 @@
   \protected at edef\@tempa{%
     \noexpand\TUD at parameter@set{#1}{#2=\noexpand\kv at value}%
   }%
-  \def\@tempb{\TUD at parameter@handler at macro[#1]{\kv at handled@false}}%
+  \def\@tempb{\TUD at parameter@handler at macro[{#1}]{\kv at handled@false}}%
   \expandafter\@tempb\expandafter{\@tempa}%
 }
 \newcommand*\TUD at parameter@handler at default[2][\TUD at parameter@@family]{%
   \TUD at parameter@checkfamily{#1}{TUD at parameter@handler at default}%
-  \ifxblank{#2}{%
+  \tud at if@strblank{#2}{%
     \def\@tempa{\let\tud at reserved\relax}%
   }{%
     \def\@tempa{\def\tud at reserved{#2=\kv at value}}%
   }%
   \appto\@tempa{%
-    \ifstr{\kv at value}{twocolumn}{\def\kv at value{2}}{}%
-    \ifnumber{\kv at value}{\def\tud at reserved{columns=\kv at value}}{}%
+    \tud at if@strequal{\kv at value}{twocolumn}{\def\kv at value{2}}{}%
+    \Ifnumber{\kv at value}{\def\tud at reserved{columns=\kv at value}}{}%
     \iflanguageloaded{\kv at value}{\def\tud at reserved{language=\kv at value}}{}%
     \ifx\tud at reserved\relax%
-      \PackageError{tudscrbase}{%
-        Unknown default value `\kv at value'%
-      }{%
-        If `\kv at value' is a language, you haven't loaded it. \MessageBreak%
-        Otherwise, there's no handler for the given value. \MessageBreak%
-        You should specify a certian key (<key>=\kv at value).%
+      \tud at if@strblank{\kv at value}{}{%
+        \PackageError{tudscrbase}{%
+          Unknown default value `\kv at value'%
+        }{%
+          If `\kv at value' is a language, you haven't loaded it. \MessageBreak%
+          Otherwise, there's no handler for the given value. \MessageBreak%
+          You should specify a certian key (<key>=\kv at value).%
+        }%
       }%
     \fi%
   }%
@@ -507,21 +863,25 @@
       \noexpand\TUD at parameter@set{#1}{\noexpand\tud at reserved}%
     \noexpand\fi%
   }%
-  \def\@tempb{\TUD at parameter@handler at macro[#1]{\kv at handled@false}}%
+  \def\@tempb{\TUD at parameter@handler at macro[{#1}]{\kv at handled@false}}%
   \expandafter\@tempb\expandafter{\@tempa}%
 }
-\newcommand*\TUD at parameter@error[2]{%
+\newcommand*\TUD at parameter@err[2]{%
   \PackageError{tudscrbase}{Unsupported value for parameter `#1'}{%
     `#1' can only be used with values:\MessageBreak#2%
+    \MessageBreak Please choose a valid one.%
   }%
 }
-\newcommand*\TUD at UnwindPackage[2]{\AtEndPreamble{\@ifpackageloaded{#1}{}{#2}}}
+\NewDocumentCommand\TUD at UnwindPackage{s m m}{%
+  \IfBooleanT{#1}{\AfterPackage*{#2}{#3}}%
+  \AtEndPreamble{\@ifpackageloaded{#2}{}{#3}}%
+}
 \@onlypreamble\TUD at UnwindPackage
 \newcommand*\TUD at CheckPackage[2]{%
   \tud at if@packagelater at exists{#1}{#2}{}{%
     \PackageWarningNoLine{tudscrbase}{%
       The version `#2' of package `#1'\MessageBreak%
-      is urgently required. An erroneous output\MessageBreak
+      is urgently required. An erroneous output\MessageBreak%
       may occur. Please update your distribution%
     }%
     \IfFileExists{#1.sty}{}{\RequirePackage{#1}[#2]}%
@@ -533,14 +893,15 @@
     \let\tud at res@a\@empty%
     \def\tud at res@b[##1]{\def\tud at res@a{##1}}%
     \def\ProvidesPackage##1{%
-      \@ifnextchar[%]
-        {\tud at res@b}{\tud at res@b[]}%
+      \kernel at ifnextchar[%]
+        {\tud at res@b}%
+        {\tud at res@b[]}%
     }%
     \IfFileExists{#1.sty}{%
-      \openin\tud at res@read=#1.sty%
+      \openin\@inputcheck=#1.sty%
       \@tud at res@swatrue%
       \loop%
-        \read\tud at res@read to\tud at res@c%
+        \read\@inputcheck to\tud at res@c%
         \@expandtwoargs\in@{\string\ProvidesPackage}%
           {\expandafter\detokenize\expandafter{\tud at res@c}}%
         \ifin@%
@@ -547,23 +908,23 @@
           \@tud at res@swafalse%
           \tud at res@c%
         \fi%
-        \ifeof\tud at res@read\@tud at res@swafalse\fi%
+        \ifeof\@inputcheck\@tud at res@swafalse\fi%
         \if at tud@res at swa%
       \repeat%
-      \closein\tud at res@read%
+      \closein\@inputcheck%
     }{}%
-    \edef\tud at res@a{\endgroup\noexpand\@ifl at t@r{\tud at res@a}{#2}}
+    \edef\tud at res@a{\endgroup\noexpand\@ifl at t@r{\tud at res@a}{#2}}%
   \tud at res@a%
 }
 \@onlypreamble\tud at if@packagelater at exists
 \newcommand*\TUD at RecommendPackage[1]{%
   \kernel at ifnextchar[%]
-    {\TUD@@RecommendPackage#1}%
-    {\TUD@@RecommendPackage#1[]}%
+    {\TUD at Recommend@Package#1}%
+    {\TUD at Recommend@Package#1[]}%
 }
 \@onlypreamble\TUD at RecommendPackage
-\newcommand*\TUD@@RecommendPackage{}
-\def\TUD@@RecommendPackage#1[#2]{%
+\newcommand*\TUD at Recommend@Package{}
+\def\TUD at Recommend@Package#1[#2]{%
   \IfFileExists{#1.sty}{%
     \RequirePackage{#1}[#2]%
   }{%
@@ -573,24 +934,23 @@
     }%
   }%
 }
-\@onlypreamble\TUD@@RecommendPackage
+\@onlypreamble\TUD at Recommend@Package
 \newcommand*\TUD at AfterPackage@set[1]{%
   \newbool{@tud@#1 at loaded}%
   \AfterAtEndOfPackage*{#1}{\booltrue{@tud@#1 at loaded}}%
 }
 \newcommand*\TUD at AfterPackage@do[2]{%
-  \ifcsdef{if at tud@#1 at loaded}{%
-    \if at atdocument%
-      \ifbool{@tud@#1 at loaded}{#2}{}%
-    \else%
-      \AfterAtEndOfPackage*{#1}{#2}%
-    \fi%
-  }{%
+  \ifcsundef{if at tud@#1 at loaded}{%
     \PackageError{tudscrbase}{\string\TUD at AfterPackage@set{#1} missing}{%
       You have to set \string\TUD at AfterPackage@set{#1} before\MessageBreak%
-      the usage of \string\TUD at AfterPackage@do{#1}{<code>} is\MessageBreak%
-      possible.%
+      using \string\TUD at AfterPackage@do{#1}{<code>}.%
     }%
+  }{%
+    \tud at if@preamble{%
+      \AfterAtEndOfPackage*{#1}{#2}%
+    }{%
+      \ifbool{@tud@#1 at loaded}{#2}{}%
+    }%
   }%
 }
 \newcommand*\TUD at KOMAoptions[1]{}
@@ -597,13 +957,14 @@
 \ifundef{\KOMAClassName}{%
   \renewcommand*\TUD at KOMAoptions[1]{%
     \PackageWarning{tudscrbase}{%
-      You should load package `scrextend' right after the\MessageBreak%
-      documentclass. Option \string\TUD at KOMAoptions{`#1'} is gobbled%
+      You should load package `scrextend' right after\MessageBreak%
+      the documentclass. The following option is gobbled:\MessageBreak%
+      \string\KOMAoptions{`#1'}%
     }%
   }%
-  \AfterPackage*{scrextend}{\let\TUD at KOMAoptions\KOMAoptions}%
+  \AfterPackage*{scrextend}{\def\TUD at KOMAoptions{\KOMAoptions}}%
 }{%
-  \let\TUD at KOMAoptions\KOMAoptions%
+  \def\TUD at KOMAoptions{\KOMAoptions}%
 }
 \endinput
 %%

Modified: trunk/Master/texmf-dist/tex/latex/tudscr/tudscrbook.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tudscr/tudscrbook.cls	2022-08-09 20:01:04 UTC (rev 64084)
+++ trunk/Master/texmf-dist/tex/latex/tudscr/tudscrbook.cls	2022-08-09 20:01:54 UTC (rev 64085)
@@ -4,7 +4,7 @@
 %%
 %% The original source files were:
 %%
-%% tudscr-version.dtx  (with options: `class,book')
+%% tudscr-version.dtx  (with options: `class,book,identify')
 %% tudscr-base.dtx  (with options: `class,book,load')
 %% tudscr-base.dtx  (with options: `class,book,option')
 %% tudscr-fonts.dtx  (with options: `class,book,option')
@@ -25,15 +25,16 @@
 %% tudscr-layout.dtx  (with options: `class,book,body')
 %% tudscr-title.dtx  (with options: `class,book,body')
 %% tudscr-frontmatter.dtx  (with options: `class,book,body')
+%% tudscr-misc.dtx  (with options: `class,book,body')
 %% tudscr-comp.dtx  (with options: `class,book,body')
-%% tudscr-misc.dtx  (with options: `class,book,body')
 %% 
 %% TUD-Script -- Corporate Design of Technische Universitaet Dresden
+%%               2022/08/09 v2.06o TUD-Script
 %% 
-%%   2021/07/15 v2.06n TUD-Script
+%% Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2022
+%%               https://github.com/tud-cd/tudscr
+%%               https://latex.wcms-file3.tu-dresden.de/phpBB3/
 %% 
-%% Copyright (C) Falk Hanisch <hanisch.latex at outlook.com>, 2012-2021
-%% 
 %% This file was generated from file(s) of the TUD-Script bundle.
 %% ----------------------------------------------------------------------------
 %% 
@@ -48,20 +49,17 @@
 %% 
 %% The current maintainer and author of this work is Falk Hanisch.
 %% 
-%%% From File: tudscr-version.dtx
+%%%% From File: tudscr-version.dtx (no git version info was found)
+\NeedsTeXFormat{LaTeX2e}[2022-06-01]
 \begingroup
-  \catcode`\@11\relax
-  \ifx\TUD at Version\@undefined
-    \newcommand*\TUD at Version@Check[1]{%
+  \catcode`\@11\relax%
+  \ifx\TUD at Version\@undefined%
+    \newcommand*\TUD@@Version[2]{%
       \gdef\TUD at Version{#1}%
-      \gdef\TUDScriptVersion{#1}%
-      \def\@tempb##1 v##2 ##3\relax##4\relax{\gdef\TUDScriptVersionNumber{##2}}%
-      \edef\@tempa{\TUD at Version}%
-      \expandafter\@tempb\@tempa\relax? ? \relax\relax%
-      \gdef\TUD at Version@KOMA{3.32}%
-    }
-  \else
-    \newcommand*\TUD at Version@Check[1]{%
+      \gdef\TUD at KOMAVersion{#2}%
+    }%
+  \else%
+    \newcommand*\TUD@@Version[2]{%
       \def\@tempa{#1}%
       \ifx\TUD at Version\@tempa\else%
         \@latex at warning@no at line{%
@@ -68,54 +66,63 @@
           \noexpand\TUD at Version\space is `\TUD at Version',\MessageBreak%
           but `#1' was expected!\MessageBreak%
           You should not use classes, packages or files from\MessageBreak%
-          different TUD-Script-Bundle versions%
+          different TUD-Script bundle versions%
         }%
       \fi%
-    }
-  \fi
-  \TUD at Version@Check{2021/07/15 v2.06n TUD-Script}
+    }%
+  \fi%
+  \TUD@@Version{2022/08/09 v2.06o TUD-Script}{2022/05/01 v3.36 KOMA-Script}%
+  \ifx\TUDScriptVersion\@undefined%
+    \xdef\TUDScriptVersion{\TUD at Version}%
+    \def\@tempa#1 v#2 #3\relax#4\relax#5{\gdef#5{#2}}%
+    \expandafter\@tempa\TUD at Version ? ?\relax\relax{\TUDScriptVersionNumber}%
+    \expandafter\@tempa\TUD at KOMAVersion ? ?\relax\relax{\TUD at KOMAVersionNumber}%
+  \fi%
 \endgroup
-\NeedsTeXFormat{LaTeX2e}[2019/10/01]
-\providecommand*\tudscrmail{hanisch.latex at outlook.com}
-\newcommand*\TUD at ProvidesClass[3]{%
+\@ifundefined{TUDScript}{%
+  \DeclareRobustCommand\TUDScript{%
+    \mbox{%
+      \textsf{%
+        T\kern.05em U\kern.05em D\kern.1em-\kern.1em Script%
+      }%
+    }\ifcsname xspace\endcsname\xspace\fi%
+  }%
+}{}
+\providecommand*\TUDScriptContact{hanisch.latex at outlook.com}
+\providecommand*\TUDScriptRepository{https://github.com/tud-cd/tudscr}
+\providecommand*\TUDScriptForum{https://latex.wcms-file3.tu-dresden.de/phpBB3/}
+\newcommand*\TUD at ProvidesClass[3]
+{%
   \ProvidesClass{#1}[%
-  2021/07/15 v2.06n TUD-Script
+  2022/08/09 v2.06o TUD-Script
     #3 (#2)%
   ]%
   \newcommand*\TUD at Class@KOMA{#2}%
   \ifx\TUD at Class@Parent\@undefined%
-    \newcommand*\TUD at Class@Name{#1}%
-    \TUD at Class@Info%
+  \newcommand*\TUD at Class@Name{#1}%
+  \newcommand*\TUDScriptClassName{#1}%
+  \providecommand*\TUDClassName{\TUDScriptClassName}%
+  \TUD at Class@Info%
   \fi%
 }
 \providecommand*\TUD at Class@Info{%
   \typeout{+------------------------------------------------------------------}%
   \typeout{| Corporate Design of Technische Universitaet Dresden}%
-  \typeout{| Class:      \TUD at Class@Name}%
-  \typeout{| Version:    \TUD at Version}%
-  \typeout{| Author:     Falk Hanisch (\tudscrmail)}%
-  \typeout{| Repository: https://github.com/tud-cd/tudscr}%
-  \typeout{| Forum:      https://latex.wcms-file3.tu-dresden.de}%
+  \typeout{| Class:      \TUDScriptClassName}%
+  \typeout{| Version:    \TUDScriptVersion}%
+  \typeout{| Author:     Falk Hanisch (\TUDScriptContact)}%
+  \typeout{| Repository: \TUDScriptRepository}%
+  \typeout{| Forum:      \TUDScriptForum}%
   \typeout{+------------------------------------------------------------------}%
 }
 \TUD at ProvidesClass{tudscrbook}{scrbook}{document class}
-\edef\TUDScriptClassName{\TUD at Class@Name}
-\providecommand*\TUDClassName{\TUDScriptClassName}
-\@ifundefined{TUDScript}{%
-  \DeclareRobustCommand\TUDScript{%
-    \textsf{%
-      T\kern.05em U\kern.05em D\kern.1em-\kern.1em Script%
-    }%
-    \ifcsname xspace\endcsname%
-      \xspace%
-    \fi%
-  }%
-}{}
-%%% From File: tudscr-base.dtx
-\RequirePackage{tudscrbase}[\TUD at Version]
+%%%% From File: tudscr-base.dtx (no git version info was found)
+\RequirePackage{tudscrbase}[%
+  2022/08/09 v2.06o TUD-Script
+]
 \renewcommand*\TUD at KOMAoptions[1]{\PassOptionsToClass{#1}{\TUD at Class@KOMA}}
 \AfterClass{\TUD at Class@KOMA}{\let\TUD at KOMAoptions\KOMAoptions}
-%%% From File: tudscr-base.dtx
+%%%% From File: tudscr-base.dtx (no git version info was found)
 \newcommand*\tud at komafont@set[2]{%
   \ifcsdef{tud at komafont@#1}{}{\addtokomafont{#1}{\csuse{tud at komafont@#1}}}%
   \csdef{tud at komafont@#1}{#2\nobreak}%
@@ -127,7 +134,13 @@
 \newcommand*\tud at komafont@reset[1]{%
   \ifcsdef{tud at komafont@#1}{\addtokomafont{#1}{\csuse{tud at komafont@#1}}}{}%
 }
-%%% From File: tudscr-fonts.dtx
+%%%% From File: tudscr-fonts.dtx (no git version info was found)
+\newcommand*\tud at catcodes@restore{}
+\edef\tud at catcodes@restore{%
+  \catcode`\noexpand\"\the\catcode`\"\relax%
+}%
+\@makeother\"%
+\AtEndOfClass{\tud at catcodes@restore}
 \PreventPackageFromLoading[%
   \ClassWarning{\TUD at Class@Name}{%
     The package `tudscrfonts' must not be used with\MessageBreak%
@@ -134,10 +147,10 @@
     a TUD-Script class%
   }%
 ]{tudscrfonts}
-\newif\if at tud@cdfont at active
-\newif\if at tud@cdfont at heavy
-\newif\if at tud@cdfont at ultrabold
-\newif\if at tud@cdfont at lining
+\tud at newif\if at tud@cdfont at active
+\tud at newif\if at tud@cdfont at heavy
+\tud at newif\if at tud@cdfont at ultrabold
+\tud at newif\if at tud@cdfont at lining
 \@tud at cdfont@liningtrue
 \TUD at key{cdfont}[true]{%
   \TUD at set@numkey{cdfont}{@tempa}{%
@@ -235,14 +248,11 @@
       \TUDoptions{cdhead=heavy}%
     \fi%
   \else%
-    \tud at lowerstring\tud at res@a{#1}%
-    \ifdimen{\tud at res@a}{%
-      \ifdim\tud at res@a>\z@\relax%
-        \TUDoptions{fontsize=#1}%
-        \tud at cdfont@activate%
-        \FamilyKeyStateProcessed%
-      \fi%
-    }{}%
+    \TUD at set@dimkey{cdfont}{\@tempa}{#1}%
+    \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+      \TUDoptions{fontsize=#1}%
+      \tud at cdfont@activate%
+    \fi%
   \fi%
 }
 \newcommand*\tud at cdfont@activate{%
@@ -263,8 +273,8 @@
   \tud at locked@bool at preset{@tud at cdmath@active}{false}%
   \TUD at SpecialOptionAtDocument{tud at math@set}%
 }
-\newif\if at tud@cdoldfont at active
-\newif\if at tud@cdoldfont at nodin
+\tud at newif\if at tud@cdoldfont at active
+\tud at newif\if at tud@cdoldfont at nodin
 \TUD at key{cdoldfont}[true]{%
   \TUD at set@numkey{cdoldfont}{@tempa}{%
     \TUD at bool@numkey,%
@@ -297,6 +307,7 @@
     \TUDoptions{cdfont=#1}%
   \fi%
 }
+\TUD at key{cdoldfonts}[true]{\TUDoptions{cdoldfont=#1}}
 \AtEndOfClass%
 {%
   \if at tud@cdoldfont at active%
@@ -323,13 +334,25 @@
     }%
   \fi%
 }
-\newif\if at tud@x at scr@fontsize at set
+\tud at newif\if at tud@x at scr@fontsize at set
 \TUD at key{fontsize}{%
-  \TUD at set@dimenkey{fontsize}{\@tempa}{#1}%
+  \TUD at set@dimkey{fontsize}{\@tempa}{#1}%
   \ifx\FamilyKeyState\FamilyKeyStateProcessed%
-    \@tud at x@scr at fontsize@settrue%
-    \TUD at KOMAoptions{fontsize=#1}%
+    \ifdim\@tempa<\p@\relax%
+      \FamilyKeyStateUnknownValue%
+    \else%
+      \@tud at x@scr at fontsize@settrue%
+      \TUD at KOMAoptions{fontsize=#1}%
+    \fi%
   \fi%
+  \ifx\FamilyKeyState\FamilyKeyStateUnknownValue%
+    \ClassWarningNoLine{\TUD at Class@Name}%
+    {%
+      The value for option `fontsize' must be a dimension\MessageBreak%
+      and at least 1pt but `#1' was given%
+    }%
+    \FamilyKeyStateProcessed%
+  \fi%
 }
 \AtEndOfClass%
 {%
@@ -336,6 +359,7 @@
   \RelaxFamilyKey{TUD}{fontsize}%
   \DefineFamilyMember{KOMA}%
   \DefineFamilyKey{KOMA}{fontsize}{%
+    \FamilyKeyStateUnknownValue%
     \@tud at x@scr at fontsize@settrue%
     \ClassWarning{\TUD at Class@Name}%
     {%
@@ -342,11 +366,10 @@
       The key `fontsize=#1' should only be\MessageBreak%
       used as class option%
     }%
-    \TUD at SpecialOptionAtDocument{tud at font@set}%
-    \FamilyKeyStateProcessed%
+    \TUD at SpecialOptionAtDocument{tud at relspacing@set}%
   }%
 }
-\newif\if at tud@relspacing
+\tud at newif\if at tud@relspacing
 \TUD at key{relspacing}[true]{%
   \TUD at set@numkey{relspacing}{@tempa}{%
     \TUD at bool@numkey,%
@@ -359,7 +382,7 @@
     \or% true
       \@tud at relspacingtrue%
     \fi%
-    \TUD at SpecialOptionAtDocument{tud at font@skip at set}%
+    \TUD at SpecialOptionAtDocument{tud at relspacing@set}%
   \fi%
 }
 \newcommand*\tud at ttfont@num{0}
@@ -432,13 +455,13 @@
 }
 \TUD at key{slantedGreek}[true]{\TUDoptions{slantedgreek=#1}}
 \TUD at key{slantedGreeks}[true]{\TUDoptions{slantedgreek=#1}}
-\newif\if at tud@lgrgreeks
+\tud at newif\if at tud@lgrgreeks
 \TUD at key{lgrgreeks}[true]{\TUD at set@ifkey{lgrgreeks}{@tud at lgrgreeks}{#1}}
 \TUD at key{lgrgreek}[true]{\TUDoptions{lgrgreeks=#1}}
 \TUD at key{LGRgreeks}[true]{\TUDoptions{lgrgreeks=#1}}
 \TUD at key{LGRgreek}[true]{\TUDoptions{lgrgreeks=#1}}
-%%% From File: tudscr-area.dtx
-\newif\if at tud@cdgeometry at reset
+%%%% From File: tudscr-area.dtx (no git version info was found)
+\tud at newif\if at tud@cdgeometry at reset
 \newcommand*\tud at cdgeometry@reset[1]{%
   \@tud at cdgeometry@resettrue%
   \TUDoptions{cdgeometry=#1}%
@@ -487,7 +510,7 @@
     \or% custom
       \tud at locked@num at set{tud at cdgeometry@num}{1}%
     \fi%
-    \if at atdocument%
+    \tud at if@preamble{}{%
       \if at tud@cdgeometry at reset\else% false
         \ifcase\tud at cdgeometry@num\relax%
           \tud at loadgeometry{current at typearea}%
@@ -498,34 +521,31 @@
         \fi%
         \TUD at SpecialOptionAtDocument{tud at cdgeometry@process}%
       \fi%
-    \fi%
+    }%
   \fi%
 }
-\newcommand*\tud at dim@extrabottommargin{\z@}
+\newcommand*\tud at extrabottommargin@dim{0pt}
 \TUD at key{extrabottommargin}{%
-  \TUD at set@dimenkey{extrabottommargin}{\tud at dim@extrabottommargin}{#1}%
+  \TUD at set@dimkey{extrabottommargin}{\tud at extrabottommargin@dim}{#1}%
   \ifx\FamilyKeyState\FamilyKeyStateProcessed%
     \TUD at SpecialOptionAtDocument{tud at cdgeometry@process}%
   \fi%
 }
-\newcommand*\tud at dim@bleedmargin{.2in}
+\newcommand*\tud at bleedmargin@dim{.2in}
 \TUD at key{bleedmargin}{%
-  \TUD at set@dimenkey{bleedmargin}{\tud at dim@bleedmargin}{#1}%
+  \TUD at set@dimkey{bleedmargin}{\tud at bleedmargin@dim}{#1}%
   \ifx\FamilyKeyState\FamilyKeyStateProcessed%
-    \ifdim\dimexpr\tud at dim@bleedmargin\relax<\z@\relax%
-      \def\@tempa-##1\@nil{\def\tud at dim@bleedmargin{##1}}%
-      \@tempa#1\@nil%
-    \fi%
+    \tud at length@setabsolute\tud at bleedmargin@dim%
   \fi%
 }
 \DefineFamilyMember{KOMA}
 \DefineFamilyKey{KOMA}{twoside}{%
+  \FamilyKeyStateUnknownValue%
   \TUD at SpecialOptionAtDocument{tud at cdgeometry@process}%
-  \FamilyKeyStateProcessed%
 }
 \DefineFamilyKey{KOMA}{twocolumn}{%
+  \FamilyKeyStateUnknownValue%
   \TUD at SpecialOptionAtDocument{tud at cdgeometry@process}%
-  \FamilyKeyStateProcessed%
 }
 \newcommand*\tud at x@typearea at warnings@off[1][]{%
   \IfArgIsEmpty{#1}{}{\let#1\@empty}%
@@ -532,17 +552,23 @@
   \tud at cs@store{PackageWarningNoLine}%
   \renewcommand*\PackageWarningNoLine[2]{%
     \@tud at res@swatrue%
-    \ifstr{##1}{typearea}{%
-      \ifstrstart{##2}{Bad type area settings!}{\@tud at res@swafalse}{}%
-      \ifstrstart{##2}{%
+    \tud at if@strequal{##1}{typearea}{%
+      \tud at if@strstart{##2}{%
+        Bad type area settings!%
+      }{\@tud at res@swafalse}{}%
+      \tud at if@strstart{##2}{%
         Maybe no optimal type area settings!%
       }{\@tud at res@swafalse}{}%
-      \ifstrstart{##2}{Very low DIV value!}{\@tud at res@swafalse}{}%
+      \tud at if@strstart{##2}{%
+        Very low DIV value!%
+      }{\@tud at res@swafalse}{}%
     }{}%
     \if at tud@res at swa%
-      \tud at cs@use{PackageWarning}{##1}{##2}%
+      \tud at cs@use{PackageWarningNoLine}{##1}{##2}%
     \else%
-      \IfArgIsEmpty{#1}{}{\listeadd#1{##2}}%
+      \IfArgIsEmpty{#1}{}{%
+        \listeadd#1{\noexpand\tud at cs@use{PackageWarningNoLine}{##1}{##2}}%
+      }%
     \fi%
   }%
 }
@@ -555,12 +581,75 @@
 \AfterPackage{typearea}{%
   \tud at x@typearea at warnings@on%
 }
-%%% From File: tudscr-pagestyle.dtx
+%%%% From File: tudscr-pagestyle.dtx (no git version info was found)
+\tud at newif\if at tud@ddc at internal
+\newcommand*\tud at comp@clearpage{}%
+\newcommand*\tud at comp@resetpagestyle{}%
+\newcommand*\tud at ddc@switch{}
+\edef\tud at ddc@switch{%
+  \TUD at bool@numkey,%
+  {color}{2},{colour}{2},{cdcolor}{2},{cdcolour}{2},%
+  {colorblack}{3},{colourblack}{3},{cdcolorblack}{3},{cdcolourblack}{3},%
+  {gray}{4},{grey}{4},{hks92}{4},{cdgray}{4},{cdgrey}{4},%
+  {black}{5},{cdblack}{5},%
+  {blue}{6},{hks41}{6},{cdblue}{6},{cddarkblue}{6},%
+  {white}{7},{cdwhite}{7}%
+}
+\tud at newif\if at tud@headlogo at option@set
+\tud at newif\if at tud@footlogo at option@set
+\tud at newif\if at tud@ddc at auto
+\newcommand*\tud at ddc@auto at num{0}
+\TUD at key{ddc}[true]{%
+  \tud at comp@clearpage%
+  \TUD at set@numkey{ddc}{tud at ddc@auto at num}{\tud at ddc@switch}{#1}%
+  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+    \if at tud@ddc at internal%
+      \@tud at ddc@autofalse%
+    \else%
+      \@tud at ddc@autotrue%
+      \@tud at ddc@internaltrue%
+      \TUDoptions{ddchead=false}%
+      \TUDoptions{ddcfoot=false}%
+      \@tud at ddc@internalfalse%
+    \fi%
+    \global\@tud at headlogo@option at settrue%
+    \global\@tud at footlogo@option at settrue%
+  \fi%
+  \tud at comp@resetpagestyle%
+}
+\newcommand*\tud at ddc@head at num{0}
+\TUD at key{ddchead}[true]{%
+  \tud at comp@clearpage%
+  \TUD at set@numkey{ddchead}{tud at ddc@head at num}{\tud at ddc@switch}{#1}%
+  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+    \if at tud@ddc at internal\else%
+      \@tud at ddc@internaltrue%
+      \TUDoptions{ddcfoot=false}%
+      \TUDoptions{ddc=false}%
+      \@tud at ddc@internalfalse%
+    \fi%
+  \fi%
+  \tud at comp@resetpagestyle%
+}
+\newcommand*\tud at ddc@foot at num{0}
+\TUD at key{ddcfoot}[true]{%
+  \tud at comp@clearpage%
+  \TUD at set@numkey{ddcfoot}{tud at ddc@foot at num}{\tud at ddc@switch}{#1}%
+  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+    \if at tud@ddc at internal\else%
+      \@tud at ddc@internaltrue%
+      \TUDoptions{ddchead=false}%
+      \TUDoptions{ddc=false}%
+      \@tud at ddc@internalfalse%
+    \fi%
+  \fi%
+  \tud at comp@resetpagestyle%
+}
 \tud at locked@newnum{tud at head@font at num}{0}
 \tud at locked@newnum{tud at head@bar at num}{0}
 \tud at locked@newbool{@tud at head@widebar}
-\newif\if at tud@head at font@set
-\newif\if at tud@head at date
+\tud at newif\if at tud@head at font@set
+\tud at newif\if at tud@head at date
 \TUD at key{cdhead}[true]{%
   \TUD at set@numkey{cdhead}{@tempa}{%
     \TUD at bool@numkey,%
@@ -649,8 +738,10 @@
       \tud at locked@bool at set{@tud at foot@colored}{true}%
     \fi%
   \else%
-    \tud at lowerstring\tud at res@a{#1}%
-    \ifdimen{\tud at res@a}{\TUDoptions{extrabottommargin=#1}}{}%
+    \TUD at set@dimkey{cdfoot}{\@tempa}{#1}%
+    \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+      \TUDoptions{extrabottommargin=#1}%
+    \fi%
   \fi%
 }
 \newcommand*\tud at ps@store[1]{%
@@ -687,87 +778,20 @@
   \tud at ps@@restore{#1}{even}{middle}{foot}%
 }
 \newcommand*\tud at ps@@restore[4]{%
-  \ifcsdef{@@tud at ps@#1@#2@#3@#4}{%
+  \ifcsundef{@@tud at ps@#1@#2@#3@#4}{}{%
     \csletcs{sls at ps@#1@#2@#3@#4}{@@tud at ps@#1@#2@#3@#4}%
     \csundef{@@tud at ps@#1@#2@#3@#4}%
-  }{}%
+  }%
 }
-\newcommand*\tud at dim@footlogoheight{}
-\let\tud at dim@footlogoheight\relax
+\newcommand*\tud at footlogoheight@dim{0pt}
 \TUD at key{footlogoheight}{%
-  \TUD at set@dimenkey{footlogoheight}{\tud at dim@footlogoheight}{#1}%
+  \TUD at set@dimkey{footlogoheight}{\tud at footlogoheight@dim}{#1}%
   \ifx\FamilyKeyState\FamilyKeyStateProcessed%
-    \ifdim\dimexpr\tud at dim@footlogoheight\relax<\z@\relax%
-      \def\@tempa-##1\@nil{\def\tud at dim@footlogoheight{##1}}%
-      \@tempa#1\@nil%
-    \fi%
+    \tud at length@setabsolute\tud at footlogoheight@dim%
     \global\@tud at footlogo@option at settrue%
   \fi%
 }
-\newif\if at tud@ddc at internal
-\newcommand*\tud at comp@clearpage{}%
-\newcommand*\tud at comp@resetpagestyle{}%
-\newcommand*\tud at ddc@switch{}
-\edef\tud at ddc@switch{%
-  \TUD at bool@numkey,%
-  {color}{2},{colour}{2},{cdcolor}{2},{cdcolour}{2},%
-  {colorblack}{3},{colourblack}{3},{cdcolorblack}{3},{cdcolourblack}{3},%
-  {gray}{4},{grey}{4},{hks92}{4},{cdgray}{4},{cdgrey}{4},%
-  {black}{5},{cdblack}{5},%
-  {blue}{6},{hks41}{6},{cdblue}{6},{cddarkblue}{6},%
-  {white}{7},{cdwhite}{7}%
-}
-\newif\if at tud@headlogo at option@set
-\newif\if at tud@footlogo at option@set
-\newif\if at tud@ddc at auto
-\newcommand*\tud at ddc@auto at num{0}
-\TUD at key{ddc}[true]{%
-  \tud at comp@clearpage%
-  \TUD at set@numkey{ddc}{tud at ddc@auto at num}{\tud at ddc@switch}{#1}%
-  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
-    \if at tud@ddc at internal%
-      \@tud at ddc@autofalse%
-    \else%
-      \@tud at ddc@autotrue%
-      \@tud at ddc@internaltrue%
-      \TUDoptions{ddchead=false}%
-      \TUDoptions{ddcfoot=false}%
-      \@tud at ddc@internalfalse%
-    \fi%
-    \global\@tud at headlogo@option at settrue%
-    \global\@tud at footlogo@option at settrue%
-  \fi%
-  \tud at comp@resetpagestyle%
-}
-\newcommand*\tud at ddc@head at num{0}
-\TUD at key{ddchead}[true]{%
-  \tud at comp@clearpage%
-  \TUD at set@numkey{ddchead}{tud at ddc@head at num}{\tud at ddc@switch}{#1}%
-  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
-    \if at tud@ddc at internal\else%
-      \@tud at ddc@internaltrue%
-      \TUDoptions{ddcfoot=false}%
-      \TUDoptions{ddc=false}%
-      \@tud at ddc@internalfalse%
-    \fi%
-  \fi%
-  \tud at comp@resetpagestyle%
-}
-\newcommand*\tud at ddc@foot at num{0}
-\TUD at key{ddcfoot}[true]{%
-  \tud at comp@clearpage%
-  \TUD at set@numkey{ddcfoot}{tud at ddc@foot at num}{\tud at ddc@switch}{#1}%
-  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
-    \if at tud@ddc at internal\else%
-      \@tud at ddc@internaltrue%
-      \TUDoptions{ddchead=false}%
-      \TUDoptions{ddc=false}%
-      \@tud at ddc@internalfalse%
-    \fi%
-  \fi%
-  \tud at comp@resetpagestyle%
-}
-%%% From File: tudscr-layout.dtx
+%%%% From File: tudscr-layout.dtx (no git version info was found)
 \newcommand*\tud at cd@switch{}
 \edef\tud at cd@switch{%
   \TUD at bool@numkey,%
@@ -795,13 +819,13 @@
     \TUD at key@preset{cdchapter}{#1}%
     \TUD at key@preset{cdsection}{#1}%
     \TUD at SpecialOptionAtDocument{tud at cd@process}%
-    \if at atdocument\else%
+    \tud at if@preamble{%
       \ifcase\tud at cd@num\relax% false
         \tud at locked@num at preset{tud at cdgeometry@num}{0}%
       \else% !false
         \tud at locked@num at preset{tud at cdgeometry@num}{2}%
       \fi%
-    \fi%
+    }{}%
   \fi%
 }
 \newcommand*\tud at cd@cover at num{0}
@@ -844,15 +868,15 @@
     \TUD at SpecialOptionAtDocument{tud at cd@process}%
   \fi%
 }
-\newif\if at tud@parttitle
+\tud at newif\if at tud@parttitle
 \TUD at key{parttitle}[true]{%
   \TUD at set@ifkey{parttitle}{@tud at parttitle}{#1}%
 }
-\newif\if at tud@chapterpage
+\tud at newif\if at tud@chapterpage
 \TUD at key{chapterpage}[true]{%
   \TUD at set@ifkey{chapterpage}{@tud at chapterpage}{#1}%
 }
-\newif\if at tud@clearcolor
+\tud at newif\if at tud@clearcolor
 \newcommand*\tud at cleardoublepage{\cleardoubleoddpage}
 \TUD at key{cleardoublespecialpage}[true]{%
   \TUD at set@numkey{cleardoublespecialpage}{@tempa}{%
@@ -877,7 +901,7 @@
       \renewcommand*\tud at cleardoublepage{\cleardoubleoddstandardpage}%
     \fi%
   \else%
-    \AfterPreamble{%
+    \AfterEndPreamble{%
       \ifcsundef{ps@#1}{%
         \ClassError{\TUD at Class@Name}{`#1' is no valid pagestyle}{%
           You tried to use `#1' as a pagestyle for option\MessageBreak%
@@ -891,19 +915,28 @@
   \fi%
 }
 \newcommand*\tud at pagecolor{}%
-\newcommand*\tud at dim@pageheadingsvskip{0pt}
-\TUD at key{pageheadingsvskip}{%
-  \TUD at set@dimenkey{pageheadingsvskip}{\tud at dim@pageheadingsvskip}{#1}%
+\AfterPackage{xcolor}{%
+  \apptocmd\normalcolor{%
+    \tud at if@strequal{\tud at pagecolor}{HKS41}{\color{white}}{}%
+  }{}{\tud at patch@wrn{normalcolor}}%
+  \AtBeginDocument{%
+    \ifdefvoid{\tud at pagecolor}{}{\sbox\z@{\color{\tud at pagecolor}}}%
+    \normalcolor%
+  }%
 }
-\newcommand*\tud at dim@headingsvskip{0pt}
+\newcommand*\tud at headingsvskip@dim{0pt}
 \TUD at key{headingsvskip}{%
-  \TUD at set@dimenkey{headingsvskip}{\tud at dim@headingsvskip}{#1}%
+  \TUD at set@dimkey{headingsvskip}{\tud at headingsvskip@dim}{#1}%
 }
-\newif\if at tud@heavyheadings
+\newcommand*\tud at pageheadingsvskip@dim{\tud at headingsvskip@dim}
+\TUD at key{pageheadingsvskip}{%
+  \TUD at set@dimkey{pageheadingsvskip}{\tud at pageheadingsvskip@dim}{#1}%
+}
+\tud at newif\if at tud@heavyheadings
 \TUD at key{headings}{%
   \TUD at set@numkey{headings}{@tempa}{%
     {light}{0},{lightfont}{0},{lite}{0},{litefont}{0},{noheavyfont}{0},%
-    {normal}{0},{standard}{0},{std}{0},{normalbold}{0},{boldnormal}{0},%
+    {standard}{0},{std}{0},{normalbold}{0},{boldnormal}{0},%
     {heavy}{1},{heavyfont}{1},{bold}{1},{boldfont}{1},%
     {ultrabold}{1},{boldultra}{1},{heavybold}{1},{boldheavy}{1},%
     {extendedbold}{1},{boldextended}{1}%
@@ -918,27 +951,27 @@
 }
 \DefineFamilyMember{KOMA}
 \DefineFamilyKey{KOMA}{headings}{%
+  \FamilyKeyStateUnknownValue%
   \TUD at SpecialOptionAtDocument{tud at x@scr at headings@reset}%
-  \FamilyKeyStateProcessed%
 }
 \DefineFamilyKey{KOMA}{open}{%
+  \FamilyKeyStateUnknownValue%
   \TUD at SpecialOptionAtDocument{tud at x@scr at headings@reset}%
-  \FamilyKeyStateProcessed%
 }
 \DefineFamilyKey{KOMA}{chapterprefix}{%
+  \FamilyKeyStateUnknownValue%
   \TUD at SpecialOptionAtDocument{tud at x@scr at headings@reset}%
-  \FamilyKeyStateProcessed%
 }
-%%% From File: tudscr-title.dtx
-\newif\if at tud@subjectthesis
+%%%% From File: tudscr-title.dtx (no git version info was found)
+\tud at newif\if at tud@subjectthesis
 \TUD at key{subjectthesis}[true]{%
   \TUD at set@ifkey{subjectthesis}{@tud at subjectthesis}{#1}%
 }
-\newif\if at tud@titlesignature
+\tud at newif\if at tud@titlesignature
 \TUD at key{titlesignature}[true]{%
   \TUD at set@ifkey{titlesignature}{@tud at titlesignature}{#1}%
 }
-%%% From File: tudscr-frontmatter.dtx
+%%%% From File: tudscr-frontmatter.dtx (no git version info was found)
 \newcommand*\tud at fm@switch{%
   {section}{2},{sect}{2},{sec}{2},{addsec}{2},%
   {chapter}{3},{chap}{3},{addchap}{3},%
@@ -958,11 +991,11 @@
 }
 \newcommand*\tud at abstract@level at num{3}
 \tud at locked@newnum{tud at abstract@toc at num}{1}
-\newif\if at tud@abstract at multi
+\tud at newif\if at tud@abstract at multi
 \@tud at abstract@multitrue
-\newif\if at tud@abstract at fil
+\tud at newif\if at tud@abstract at fil
 \@tud at abstract@filtrue
-\newif\if at tud@abstract at markboth
+\tud at newif\if at tud@abstract at markboth
 \TUD at key{abstract}[chapter]{%
   \edef\@tempb{\tud at fm@switch}%
   \TUD at set@numkey{abstract}{@tempa}{\@tempb}{#1}%
@@ -1017,15 +1050,16 @@
 }
 \DefineFamilyMember{KOMA}
 \DefineFamilyKey{KOMA}{abstract}[true]{%
+  \FamilyKeyStateUnknownValue%
   \AtEndOfFamilyOptions{\TUDoptions{abstract=#1}}%
 }
 \newcommand*\tud at declaration@level at num{3}
 \tud at locked@newnum{tud at declaration@toc at num}{1}
-\newif\if at tud@declaration at multi
+\tud at newif\if at tud@declaration at multi
 \@tud at declaration@multitrue
-\newif\if at tud@declaration at fil
+\tud at newif\if at tud@declaration at fil
 \@tud at declaration@filtrue
-\newif\if at tud@declaration at markboth
+\tud at newif\if at tud@declaration at markboth
 \TUD at key{declaration}[chapter]{%
   \edef\@tempb{\TUD at bool@numkey,\tud at fm@switch}%
   \TUD at set@numkey{declaration}{@tempa}{\@tempb}{#1}%
@@ -1082,8 +1116,8 @@
     \fi%
   \fi%
 }
-%%% From File: tudscr-misc.dtx
-\newif\if at tud@bookmarks
+%%%% From File: tudscr-misc.dtx (no git version info was found)
+\tud at newif\if at tud@bookmarks
 \TUD at key{tudbookmarks}[true]{%
   \TUD at set@ifkey{tudbookmarks}{@tud at bookmarks}{#1}%
 }
@@ -1093,7 +1127,7 @@
 }
 \newcommand*\tud at x@scr at pt{}
 \def\tud at x@scr at pt #1pt#2\@nil{%
-  \ifstr{#2}{pt}{\ifnumber{#1}{\@tud at x@scr at fontsize@settrue}{}}{}%
+  \tud at if@strequal{#2}{pt}{\Ifnumber{#1}{\@tud at x@scr at fontsize@settrue}{}}{}%
 }
 \newcommand*\tud at atdocument@hook{}
 \let\tud at atdocument@hook\relax
@@ -1110,7 +1144,7 @@
     \gappto\tud at atdocument@hook{\global\booltrue{@#1}}%
   }%
 }
-%%% From File: tudscr-comp.dtx
+%%%% From File: tudscr-comp.dtx (no git version info was found)
 \newcommand*\TUD at deprecated@key[2]{%
   \ClassWarning{\TUD at Class@Name}%
   {%
@@ -1161,16 +1195,23 @@
     \tud at res@c%
   }{}%
 }
-\newcommand*\TUD at deprecated@lengthcs[2][]{%
-  \ifdim\csuse{#2}<\maxdimen\relax%
-    \ClassWarning{\TUD at Class@Name}{%
-      Using the length `\@backslashchar#2' is deprecated. \MessageBreak%
-      You should use option `#2' instead%
-    }%
-    \csxdef{tud at dim@#2}{\the\csuse{#2}}%
-    \expandafter\setlength\csname #2\endcsname{\maxdimen}%
-    \global\csuse{#2}=\csuse{#2}%
-    #1%
+\newcommand*\TUD at deprecated@length[1]{%
+  \ifdim#1<\maxdimen\relax%
+    \begingroup%
+      \tud at strlength\tud at res@a{#1}%
+      \edef\tud at res@b{\expandafter\@gobble\string#1}%
+      \ClassWarning{\TUD at Class@Name}{%
+        Setting length `\string#1' is deprecated. \MessageBreak%
+        The option `\tud at res@b=\tud at res@a'\MessageBreak%
+        is used instead%
+      }%
+      \edef\tud at res@a{%
+        \endgroup%
+        \noexpand\TUDoption{\tud at res@b}{\tud at res@a}%
+        \global\noexpand\csletcs{tud@\tud at res@b @dim}{tud@\tud at res@b @dim}%
+      }%
+    \tud at res@a%
+    \global\setlength#1{\maxdimen}%
   \fi%
 }
 \newcommand*\tud at v@comp{\tud at v@last}
@@ -1198,75 +1239,28 @@
 {%
   \RelaxFamilyKey[.comp]{TUD}{tudscrver}%
   \TUD at key@toolate{tudscrver}%
-  \ifcsdef{scr at v@\TUD at Version@KOMA}{%
-    \ifnum\scr at compatibility<\csuse{scr at v@3.12}\relax%
-      \ClassError{\TUD at Class@Name}{%
-        KOMA-Script compatibility level too low%
-      }{%
-        \TUD at Version\space must be used at least with\MessageBreak%
-        `version=3.12' KOMA-Script compatibility option.%
-      }%
-    \fi%
-  }{%
-    \ClassError{\TUD at Class@Name}{%
-      KOMA-Script v\TUD at Version@KOMA is required%
-    }{%
-      \TUD at Version\space must at least be used with\MessageBreak%
-      KOMA-Script v\TUD at Version@KOMA, but \KOMAScriptVersion was found.%
-    }%
-  }%
 }
 \csdef{tud at v@first}{0}
 \csdef{tud at v@2.00}{0}
 \csdef{tud at v@2.01}{0}
-\csdef{tud at v@2.01a}{0}
-\csdef{tud at v@2.01b}{0}
 \csdef{tud at v@2.02}{0}
 \csdef{tud at v@2.03}{1}
-\csdef{tud at v@2.03a}{1}
 \csdef{tud at v@2.04}{2}
-\csdef{tud at v@2.04a}{2}
-\csdef{tud at v@2.04b}{2}
-\csdef{tud at v@2.04c}{2}
-\csdef{tud at v@2.04d}{2}
-\csdef{tud at v@2.04e}{2}
 \csdef{tud at v@2.05}{3}
-\csdef{tud at v@2.05a}{3}
-\csdef{tud at v@2.05b}{3}
-\csdef{tud at v@2.05c}{3}
-\csdef{tud at v@2.05d}{3}
-\csdef{tud at v@2.05e}{3}
-\csdef{tud at v@2.05f}{3}
-\csdef{tud at v@2.05g}{3}
-\csdef{tud at v@2.05h}{3}
-\csdef{tud at v@2.05i}{3}
-\csdef{tud at v@2.05k}{3}
-\csdef{tud at v@2.05l}{3}
-\csdef{tud at v@2.05m}{3}
 \csdef{tud at v@2.06}{4}
-\csdef{tud at v@2.06a}{4}
-\csdef{tud at v@2.06b}{4}
-\csdef{tud at v@2.06c}{4}
-\csdef{tud at v@2.06d}{4}
-\csdef{tud at v@2.06e}{4}
-\csdef{tud at v@2.06f}{4}
-\csdef{tud at v@2.06g}{4}
-\csdef{tud at v@2.06h}{4}
-\csdef{tud at v@2.06i}{4}
-\csdef{tud at v@2.06j}{4}
-\csdef{tud at v@2.06k}{4}
-\csdef{tud at v@2.06l}{4}
-\csdef{tud at v@2.06m}{4}
-\csdef{tud at v@2.06n}{4}
 \csdef{tud at v@last}{4}
 \newcommand*\tud at v@get[2]{%
   \begingroup%
-    \def\@tempa{\kernel at ifnextchar v{\@tempb}{\@tempb v}}%
+    \def\@tempa{%
+      \kernel at ifnextchar v%
+        {\@tempb}%
+        {\@tempb v}%
+    }%
     \def\@tempb v##1\@nil{\def\@tempc{##1}}%
     \@tempa #2\@nil%
     \edef\tud at reserved{%
       \endgroup%
-      \etex at unexpanded{\def#1}{\@tempc}%
+      \unexpanded{\def#1}{\@tempc}%
     }%
   \tud at reserved%
 }
@@ -1273,13 +1267,7 @@
 \newcommand*\tud at if@v at lower[1]{%
   \begingroup%
     \tud at v@get\@tempa{#1}%
-    \ifcsdef{tud at v@\@tempa}{%
-      \ifnum\tud at v@comp<\csuse{tud at v@\@tempa}\relax%
-        \def\tud at reserved{\endgroup\@firstoftwo}%
-      \else%
-        \def\tud at reserved{\endgroup\@secondoftwo}%
-      \fi%
-    }{%
+    \ifcsundef{tud at v@\@tempa}{%
       \def\tud at reserved{%
         \ClassWarningNoLine{\TUD at Class@Name}%
         {%
@@ -1288,6 +1276,12 @@
         }%
         \endgroup\@firstoftwo%
       }%
+    }{%
+      \ifnum\tud at v@comp<\csuse{tud at v@\@tempa}\relax%
+        \def\tud at reserved{\endgroup\@firstoftwo}%
+      \else%
+        \def\tud at reserved{\endgroup\@secondoftwo}%
+      \fi%
     }%
   \tud at reserved%
 }
@@ -1441,7 +1435,7 @@
   \fi%
 }
 \TUD at key{clearcolour}[true]{\TUDoptions{clearcolor=#1}}
-\newif\if at tud@x at fontspec@requested
+\tud at newif\if at tud@x at fontspec@requested
 \TUD at key{fontspec}[true]{%
   \TUD at set@ifkey{fontspec}{@tud at x@fontspec at requested}{#1}%
   \ifx\FamilyKeyState\FamilyKeyStateProcessed%
@@ -1456,12 +1450,12 @@
 {%
   \TUD at key@toolate{fontspec}%
   \if at tud@x at fontspec@requested%
-    \RequirePackage{fontspec}[2017/01/24]%
+    \RequirePackage{fontspec}
   \fi%
 }
-%%% From File: tudscr-misc.dtx
+%%%% From File: tudscr-misc.dtx (no git version info was found)
 \DeclareOption*{}
-\FamilyProcessOptions[.comp]{TUD}\relax
+\TUDProcessOptions[.comp]\relax
 \tud at if@v at lower{2.05}{%
   \TUD at key@preset{relspacing}{false}%
 }{%
@@ -1476,34 +1470,36 @@
   \TUD at key@preset{ttfont}{roboto}%
   \TUD at key@preset{headings}{heavy}%
 }
-\DeclareOption*{\tud at x@scr at checkoptions}
 \TUDExecuteOptions{%
   cd=true,tudbookmarks=true%
 }
+\DeclareOption*{\tud at x@scr at checkoptions}
 \TUDProcessOptions\relax
-\LoadClass{\TUD at Class@KOMA}[2020/09/21]
+\LoadClass{\TUD at Class@KOMA}[%
+  2022/05/01 v3.36 KOMA-Script
+]
 \newcommand*\TUD at key@toolate[1]{%
-  \csedef{tud at key@#1 at error}{%
+  \csedef{tud at key@toolate@@#1}{%
     \noexpand\ClassError{\noexpand\TUD at Class@Name}%
     {Option `#1' too late}{%
       Option `#1' can only be set\space%
-      \ifcsname \@currname.\@currext-h@@k\endcsname%
+      \ifcsdef{\@currname.\@currext-h@@k}{%
         as optional \MessageBreak argument while loading\space%
         class `\noexpand\TUD at Class@Name'%
-      \else%
-        in the preamble
-      \fi%
+      }{%
+        in the preamble%
+      }%
       \MessageBreak but you have tried to set it up later.%
     }%
   }%
-  \TUD at key{#1}[]%
+  \TUD at key[]{#1}[]%
   {%
-    \csuse{tud at key@#1 at error}
+    \csuse{tud at key@toolate@@#1}%
     \FamilyKeyStateProcessed%
   }%
 }
-%%% From File: tudscr-base.dtx
-\RequirePackage{environ}[2013/04/01]
+%%%% From File: tudscr-base.dtx (no git version info was found)
+\RequirePackage{environ}
 \newcommand*\tud at x@multicol at num{1}
 \newcommand*\tud at x@multicol at check{%
   \ifnum\tud at x@multicol at num>\@ne\relax%
@@ -1523,14 +1519,16 @@
         which now will be loaded automatically%
       }%
     }{}%
-    \RequirePackage{graphicx}[1999/02/16]%
+    \RequirePackage{graphicx}
   }%
-  \RequirePackage{tudscrcolor}[\TUD at Version]%
+  \RequirePackage{tudscrcolor}[%
+  2022/08/09 v2.06o TUD-Script
+  ]%
 }
-%%% From File: tudscr-fonts.dtx
+%%%% From File: tudscr-fonts.dtx (no git version info was found)
 \newcommand*\tud at cdfont@wrn{\global\let\tud at cdfont@wrn\relax}
 \newcommand*\tud at cdmath@wrn{\global\let\tud at cdmath@wrn\relax}
-\newif\if at tud@x at fontspec@enabled
+\tud at newif\if at tud@x at fontspec@enabled
 \PassOptionsToPackage{no-math}{fontspec}
 \AfterPackage*{fontspec}{%
   \@ifpackagelater{fontspec}{2017/01/24}{%
@@ -1569,11 +1567,9 @@
     }%
   }%
 }
-\TUD at RecommendPackage{mweights}[2017/03/30]%
-\newif\if at tud@x at mweights@enabled
+\TUD at RecommendPackage{mweights}
+\tud at newif\if at tud@x at mweights@enabled
 \AfterPackage*{mweights}{\@tud at x@mweights at enabledtrue}
-\newif\if at tud@cdfont at fam@exist
-\newif\if at tud@cdfont at db@exist
 \newcommand*\tud at cdfont@fam{opensans-TLF}
 \newcommand*\tud at cdfont@fam at lf{opensans-TLF}
 \newcommand*\tud at cdfont@fam at osf{opensans-TOsF}
@@ -1586,12 +1582,17 @@
 \newcommand*\tud at ttfont@fam{tudtt}
 \newcommand*\tud at ttfont@rb{tudtt}
 \newcommand*\tud at ttfont@lm{lmtt}
-\newif\if at tud@ttfont at rb@exist
+\tud at newif\if at tud@ttfont at rb@exist
 \IfFileExists{roboto-mono.sty}{%
   \@tud at ttfont@rb at existtrue%
 }{%
   \TUD at key@preset{ttfont}{lmodern}%
 }
+\tud at newif\if at tud@cdfont at fam@exist
+\tud at newif\if at tud@cdfont at db@exist
+\tud at newif\if at tud@cdmath at fam@exist
+\tud at newif\if at tud@cdmath at db@exist
+\newcommand*\tud at x@mathastext at enc{OT1}
 \newcommand*\tud at cdfont@check{%
   \if at tud@cdoldfont at active%
     \tud at cdfont@@check{Univers}{%
@@ -1599,8 +1600,8 @@
       LightOblique,Oblique,BoldOblique,BlackOblique%
     }{\tud at cdfont@fam at lf}{@tud at cdfont@fam at exist}%
     \tud at cdfont@@check{DIN}{Bold}{\tud at cdfont@db}{@tud at cdfont@db at exist}%
-    \tud at cdfont@@@check{OT1,OML,OMS}{\tud at cdfont@fam at lf}%
-    \tud at cdfont@@@check{OT1,OML,OMS}{\tud at cdfont@db}%
+    \tud at cdfont@@@check{OT1,OML,OMS}{\tud at cdfont@fam at lf}{@tud at cdmath@fam at exist}%
+    \tud at cdfont@@@check{OT1,OML,OMS}{\tud at cdfont@db}{@tud at cdmath@db at exist}%
   \else%
     \@ifpackageloaded{opensans}{%
       \ClassWarningNoLine{\TUD at Class@Name}%
@@ -1617,6 +1618,17 @@
       Light,Regular,SemiBold,Bold,ExtraBold,%
       LightItalic,Italic,SemiBoldItalic,BoldItalic,ExtraBoldItalic%
     }{\tud at cdfont@fam at lf,\tud at cdfont@fam at osf}{@tud at cdfont@fam at exist}%
+    \@expandtwoargs\in@{,\encodingdefault,}{,OT1,T1,TU,EU1,EU2,}%
+    \ifin@%
+      \let\tud at x@mathastext at enc\encodingdefault%
+      \@expandtwoargs\in@{,\tud at x@mathastext at enc,}{,TU,EU1,EU2,}%
+      \ifin@%
+        \@tud at cdmath@fam at existtrue%
+      \else%
+        \tud at cdfont@@@check{\tud at x@mathastext at enc}%
+          {\tud at cdfont@fam at lf}{@tud at cdmath@fam at exist}%
+      \fi%
+    \fi%
   \fi%
 }
 \newcommand*\tud at cdfont@@check[5][-]{%
@@ -1651,7 +1663,7 @@
     \boolfalse{#5}%
   \fi%
 }
-\newcommand*\tud at cdfont@@@check[2]{%
+\newcommand*\tud at cdfont@@@check[3]{%
   \@tud at res@swatrue%
   \def\tud at res@a##1##2{%
     \@tud at res@swafalse%
@@ -1668,7 +1680,10 @@
     }%
   }%
   \@for\tud at res@c:={#1}\do{\tud at res@b{\tud at res@c}{#2}}%
-  \if at tud@res at swa\else%
+  \if at tud@res at swa%
+    \booltrue{#3}%
+  \else%
+    \boolfalse{#3}%
     \AtBeginDocument{%
       \if at tud@cdmath at active%
         \ClassWarningNoLine{\TUD at Class@Name}%
@@ -1676,8 +1691,12 @@
           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
+          \if at tud@cdoldfont at active%
+            all necessary fonts with a installation script\MessageBreak%
+            listed in the manual%
+          \else%
+            package `opensans'%
+          \fi%
         }%
       \fi%
       \TUDoptions{cdmath=false}%
@@ -1691,7 +1710,7 @@
       not found for `#1' encoding. \MessageBreak%
     }%
     \if at tud@x at fontspec@enabled%
-      \ifstr{\encodingdefault}{#1}{%
+      \tud at if@strequal{#1}{\encodingdefault}{%
         \appto\tud at res@a{%
           It seems, you haven't installed the required\MessageBreak%
           OTF-font on your system. You should provide\MessageBreak%
@@ -1709,7 +1728,7 @@
       \fi%
       \@tud at res@swafalse%
       \@for\tud at res@c:=\tud at res@b\do{%
-        \ifstr{\tud at res@c}{#1}{\@tud at res@swatrue}{}%
+        \tud at if@strequal{#1}{\tud at res@c}{\@tud at res@swatrue}{}%
       }%
       \if at tud@res at swa%
         \appto\tud at res@a{%
@@ -1723,8 +1742,8 @@
           . \MessageBreak%
         }%
       \else%
-        \ifstr{\encodingdefault}{#1}{%
-          \ifstr{TU}{#1}{%
+        \tud at if@strequal{#1}{\encodingdefault}{%
+          \tud at if@strequal{#1}{TU}{%
             \appto\tud at res@a{%
               You should either load package `fontspec'\MessageBreak%
               or %
@@ -1741,40 +1760,12 @@
     \fi%
     \appto\tud at res@a{A fallback layout is used}%
     \edef\tud at res@c{%
-      \etex at unexpanded{\ClassWarning{\TUD at Class@Name}}%
-        {\tud at res@a}
+      \unexpanded{\ClassWarningNoLine{\TUD at Class@Name}}%
+        {\tud at res@a}%
     }%
     \xappto#3{\expandonce\tud at res@c}%
   \endgroup%
 }
-\begingroup
-\catcode`\^=7
-\catcode30=12
-\catcode`\!=12
-\edef\tud at reserved{\@gobble^^^^0021}
-\expandafter\endgroup
-\ifx\tud at 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
-\newcommand*\tud at raggedright{\raggedright}
-\newcommand*\tud at RaggedRight{\raggedright}
-\AfterPackage*{ragged2e}{%
-  \ifundef{\LaTeXraggedright}{}{%
-    \renewcommand*\tud at raggedright{\LaTeXraggedright}%
-  }%
-  \renewcommand*\tud at RaggedRight{\RaggedRight}%
-}
-\newif\if at tud@x at siunitx@enabled
-\AfterAtEndOfPackage*{siunitx}{%
-  \@tud at x@siunitx at enabledtrue%
-  \providecommand*\lseries{\fontseries{l}\selectfont}%
-}
-\newif\if at tud@x at bm@requested
-\PreventPackageFromLoading[\@tud at x@bm at requestedtrue]{bm}
 \newcommand*\tud at x@fontspec at init[2]{%
   \begingroup%
     \edef\tud at res@a{%
@@ -1804,7 +1795,7 @@
     }%
     \edef\tud at res@a{%
       \endgroup%
-      \noexpand\DeclareRobustCommand%
+      \noexpand\renewrobustcmd*%
           \expandafter\noexpand\csname #1family\endcsname{%
         \expandafter\noexpand\csname tud at x@fontspec at fam@#2\endcsname%
       }%
@@ -1812,8 +1803,9 @@
     }%
   \tud at res@a%
 }
-\newcommand*\tud at font@set{%
+\newcommand*\tud at font@set[1][\tud at cdfont@wrn]{%
   \if at tud@cdfont at active%
+    #1%
     \tud at cs@store{rmdefault}%
     \tud at cs@store{sfdefault}%
     \tud at cs@store{ttdefault}%
@@ -1838,13 +1830,6 @@
       \tud at cs@store{sffamily}%
       \tud at cs@store{ttfamily}%
     \fi%
-    \renewcommand*\rmdefault{\sfdefault}%
-    \renewcommand*\updefault{n}%
-    \renewcommand*\itdefault{it}%
-    \renewcommand*\sldefault{sl}%
-    \renewcommand*\familydefault{\sfdefault}%
-    \renewcommand*\seriesdefault{\mddefault}%
-    \renewcommand*\shapedefault{\updefault}%
     \tud at cdfont@set%
     \tud at cdfont@symbols at set%
     \tud at ttfont@set%
@@ -1893,12 +1878,19 @@
     \edef\mddef at ult{\mddefault}%
     \edef\famdef at ult{\familydefault}%
   \fi%
-  \tud at font@skip at set%
+  \tud at relspacing@set%
   \normalfont\selectfont%
   \tud at cd@process%
   \global\@tud at head@font at settrue%
 }
 \newcommand*\tud at cdfont@set{%
+  \renewcommand*\rmdefault{\sfdefault}%
+  \renewcommand*\updefault{n}%
+  \renewcommand*\itdefault{it}%
+  \renewcommand*\sldefault{sl}%
+  \renewcommand*\familydefault{\sfdefault}%
+  \renewcommand*\seriesdefault{\mddefault}%
+  \renewcommand*\shapedefault{\updefault}%
   \if at tud@cdfont at fam@exist%
     \if at tud@cdfont at lining%
       \let\tud at cdfont@fam\tud at cdfont@fam at lf%
@@ -1912,7 +1904,6 @@
     \fi%
     \tud at cdfont@@set%
   \fi%
-  \tud at cdfont@wrn%
 }
 \newcommand*\tud at cdfont@md{m}
 \newcommand*\tud at cdfont@bf{b}
@@ -1980,7 +1971,7 @@
   \tud at res@a%
   \expandafter\robustify\csname tud at cdfont@symbol@#1\endcsname%
 }
-\newtoks\tud at cdfont@symbols at toks
+\tud at newtoks\tud at cdfont@symbols at toks
 \newcommand*\tud at cdfont@symbols at set{%
   \expandafter\IfArgIsEmpty\expandafter{\the\tud at cdfont@symbols at toks}{%
     \forlistloop\tud at cdfont@symbols at set@cmd\tud at cdfont@symb at list%
@@ -2001,35 +1992,57 @@
   \tud at cdfont@declare at symb{textlangle}{TS1}{iwona}{60}%
   \tud at cdfont@declare at symb{textrangle}{TS1}{iwona}{62}%
 }
-\newcommand*\tud at font@skip at set{%
+\newcommand*\tud at relspacing@set{%
   \if at tud@relspacing%
-    \tud at skip@store{smallskipamount}%
-    \tud at skip@store{medskipamount}%
-    \tud at skip@store{bigskipamount}%
-    \tud at skip@store{abovecaptionskip}%
-    \tud at skip@store{belowcaptionskip}%
-    \tud at skip@store{columnsep}%
-    \tud at font@skip@@set%
+    \tud at cslength@store{smallskipamount}%
+    \tud at cslength@store{medskipamount}%
+    \tud at cslength@store{bigskipamount}%
+    \tud at cslength@store{abovecaptionskip}%
+    \tud at cslength@store{belowcaptionskip}%
+    \tud at cslength@store{columnsep}%
+    \tud at relspacing@@set%
   \else%
-    \tud at skip@restore{smallskipamount}%
-    \tud at skip@restore{medskipamount}%
-    \tud at skip@restore{bigskipamount}%
-    \tud at skip@restore{abovecaptionskip}%
-    \tud at skip@restore{belowcaptionskip}%
-    \tud at skip@restore{columnsep}%
+    \tud at cslength@restore{smallskipamount}%
+    \tud at cslength@restore{medskipamount}%
+    \tud at cslength@restore{bigskipamount}%
+    \tud at cslength@restore{abovecaptionskip}%
+    \tud at cslength@restore{belowcaptionskip}%
+    \tud at cslength@restore{columnsep}%
   \fi%
 }
-\newcommand*\tud at font@skip@@set{%
-  \smallskipamount=\partopsep%
-  \medskipamount=\partopsep%
-  \multiply\medskipamount by 2%
-  \bigskipamount=\partopsep%
-  \multiply\bigskipamount by 4%
-  \tud at skip@set{abovecaptionskip}{\dimexpr\bigskipamount*5/6\relax}%
-  \tud at skip@set{belowcaptionskip}{\z@}%
-  \tud at skip@set{columnsep}{1.1\baselineskip}%
+\newcommand*\tud at relspacing@@set{%
+  \tud at if@v at lower{2.06}{%
+    \bigskipamount=\partopsep%
+    \multiply\bigskipamount by 4%
+  }{%
+    \begingroup%
+      \tud at setdim\@tempdima{\dimexpr\abovedisplayskip\relax}%
+      \tud at setdim\@tempdimb{\@tempdima/3}%
+      \edef\tud at res@a{%
+        \endgroup%
+        \noexpand\tud at setglue\noexpand\bigskipamount{%
+          \the\@tempdima\@plus\the\@tempdimb\@minus\the\@tempdimb%
+        }%
+      }%
+    \tud at res@a%
+  }%
+  \medskipamount=\bigskipamount%
+  \divide\medskipamount by 2%
+  \smallskipamount=\bigskipamount%
+  \divide\smallskipamount by 4%
+  \tud at if@lengthregister{\abovecaptionskip}{%
+    \tud at setdim\abovecaptionskip{1\bigskipamount*5/6}%
+  }{}%
+  \tud at if@lengthregister{\belowcaptionskip}{%
+    \tud at setdim\belowcaptionskip{\z@}%
+  }{}%
+  \tud at setdim\columnsep{1\baselineskip*11/10}%
 }
 \newcommand*\tud at cdfont@init{%
+  \tud at cdfont@@init%
+  \tud at cdfont@@@init%
+}
+\newcommand*\tud at cdfont@@init{%
   \if at tud@cdfont at fam@exist%
     \if at tud@x at fontspec@enabled%
       \def\tud at res@a{%
@@ -2070,28 +2083,33 @@
       }{}%
       \tud at cdfont@declare at textsymb%
     \fi%
-    \newrobustcmd*\cdfontln{\usefont{\encodingdefault}{\tud at cdfont@fam}{l}{n}}
-    \newrobustcmd*\cdfontrn{\usefont{\encodingdefault}{\tud at cdfont@fam}{m}{n}}
-    \newrobustcmd*\cdfontsn{\usefont{\encodingdefault}{\tud at cdfont@fam}{sb}{n}}
-    \newrobustcmd*\cdfontbn{\usefont{\encodingdefault}{\tud at cdfont@fam}{b}{n}}
-    \newrobustcmd*\cdfontxn{\usefont{\encodingdefault}{\tud at cdfont@fam}{eb}{n}}
-    \newrobustcmd*\cdfontli{\usefont{\encodingdefault}{\tud at cdfont@fam}{l}{it}}
-    \newrobustcmd*\cdfontri{\usefont{\encodingdefault}{\tud at cdfont@fam}{m}{it}}
-    \newrobustcmd*\cdfontsi{\usefont{\encodingdefault}{\tud at cdfont@fam}{sb}{it}}
-    \newrobustcmd*\cdfontbi{\usefont{\encodingdefault}{\tud at cdfont@fam}{b}{it}}
-    \newrobustcmd*\cdfontxi{\usefont{\encodingdefault}{\tud at cdfont@fam}{eb}{it}}
+    \def\tud at res@a##1##2##3{%
+      \newrobustcmd*##1{\usefont{\f at encoding}{\tud at cdfont@fam}{##2}{##3}}%
+    }%
+    \tud at res@a\cdfontln{l}{n}%
+    \tud at res@a\cdfontrn{m}{n}%
+    \tud at res@a\cdfontsn{sb}{n}%
+    \tud at res@a\cdfontbn{b}{n}%
+    \tud at res@a\cdfontxn{eb}{n}%
+    \tud at res@a\cdfontli{l}{it}%
+    \tud at res@a\cdfontri{m}{it}%
+    \tud at res@a\cdfontsi{sb}{it}%
+    \tud at res@a\cdfontbi{b}{it}%
+    \tud at res@a\cdfontxi{eb}{it}%
   \else%
-    \tud at cdfont@fallback\cdfontln{OpenSans-Light}{md}{up}
-    \tud at cdfont@fallback\cdfontrn{OpenSans-Regular}{md}{up}
-    \tud at cdfont@fallback\cdfontsn{OpenSans-SemiBold}{md}{up}
-    \tud at cdfont@fallback\cdfontbn{OpenSans-Bold}{bf}{up}
-    \tud at cdfont@fallback\cdfontxn{OpenSans-ExtraBold}{bf}{up}
-    \tud at cdfont@fallback\cdfontli{OpenSans-LightItalic}{md}{it}
-    \tud at cdfont@fallback\cdfontri{OpenSans-Italic}{md}{it}
-    \tud at cdfont@fallback\cdfontsi{OpenSans-SemiBoldItalic}{md}{it}
-    \tud at cdfont@fallback\cdfontbi{OpenSans-BoldItalic}{bf}{it}
-    \tud at cdfont@fallback\cdfontxi{OpenSans-ExtraBoldItalic}{bf}{it}
+    \tud at cdfont@fallback\cdfontln{OpenSans-Light}{md}{up}%
+    \tud at cdfont@fallback\cdfontrn{OpenSans-Regular}{md}{up}%
+    \tud at cdfont@fallback\cdfontsn{OpenSans-SemiBold}{md}{up}%
+    \tud at cdfont@fallback\cdfontbn{OpenSans-Bold}{bf}{up}%
+    \tud at cdfont@fallback\cdfontxn{OpenSans-ExtraBold}{bf}{up}%
+    \tud at cdfont@fallback\cdfontli{OpenSans-LightItalic}{md}{it}%
+    \tud at cdfont@fallback\cdfontri{OpenSans-Italic}{md}{it}%
+    \tud at cdfont@fallback\cdfontsi{OpenSans-SemiBoldItalic}{md}{it}%
+    \tud at cdfont@fallback\cdfontbi{OpenSans-BoldItalic}{bf}{it}%
+    \tud at cdfont@fallback\cdfontxi{OpenSans-ExtraBoldItalic}{bf}{it}%
   \fi%
+}
+\newcommand*\tud at cdfont@@@init{%
   \newcommand*\textcdln{}%
   \newcommand*\textcdrn{}%
   \newcommand*\textcdsn{}%
@@ -2114,7 +2132,7 @@
   \DeclareTextFontCommand\textcdxi{\cdfontxi}%
 }
 \if at tud@cdoldfont at active
-  \renewcommand*\tud at cdfont@init{%
+  \renewcommand*\tud at cdfont@@init{%
     \if at tud@cdfont at fam@exist%
       \if at tud@x at fontspec@enabled%
         \def\tud at res@a{%
@@ -2132,23 +2150,26 @@
         }%
         \tud at x@fontspec at init{\tud at cdfont@fam at lf}{\tud at res@a}%
       \fi%
-      \newrobustcmd*\univln{\usefont{\encodingdefault}{\tud at cdfont@fam}{l}{n}}
-      \newrobustcmd*\univrn{\usefont{\encodingdefault}{\tud at cdfont@fam}{m}{n}}
-      \newrobustcmd*\univbn{\usefont{\encodingdefault}{\tud at cdfont@fam}{b}{n}}
-      \newrobustcmd*\univxn{\usefont{\encodingdefault}{\tud at cdfont@fam}{eb}{n}}
-      \newrobustcmd*\univls{\usefont{\encodingdefault}{\tud at cdfont@fam}{l}{sl}}
-      \newrobustcmd*\univrs{\usefont{\encodingdefault}{\tud at cdfont@fam}{m}{sl}}
-      \newrobustcmd*\univbs{\usefont{\encodingdefault}{\tud at cdfont@fam}{b}{sl}}
-      \newrobustcmd*\univxs{\usefont{\encodingdefault}{\tud at cdfont@fam}{eb}{sl}}
+      \def\tud at res@a##1##2##3{%
+        \newrobustcmd*##1{\usefont{\f at encoding}{\tud at cdfont@fam}{##2}{##3}}%
+      }%
+      \tud at res@a\univln{l}{n}%
+      \tud at res@a\univrn{m}{n}%
+      \tud at res@a\univbn{b}{n}%
+      \tud at res@a\univxn{eb}{n}%
+      \tud at res@a\univls{l}{it}%
+      \tud at res@a\univrs{m}{it}%
+      \tud at res@a\univbs{b}{it}%
+      \tud at res@a\univxs{eb}{it}%
     \else%
-      \tud at cdfont@fallback\univln{Univers-Light}{md}{up}
-      \tud at cdfont@fallback\univrn{Univers}{md}{up}
-      \tud at cdfont@fallback\univbn{Univers-Bold}{bf}{up}
-      \tud at cdfont@fallback\univxn{Univers-Black}{bf}{up}
-      \tud at cdfont@fallback\univls{Univers-LightOblique}{md}{sl}
-      \tud at cdfont@fallback\univrs{Univers-Oblique}{md}{sl}
-      \tud at cdfont@fallback\univbs{Univers-BoldOblique}{bf}{sl}
-      \tud at cdfont@fallback\univxs{Univers-BlackOblique}{bf}{sl}
+      \tud at cdfont@fallback\univln{Univers-Light}{md}{up}%
+      \tud at cdfont@fallback\univrn{Univers}{md}{up}%
+      \tud at cdfont@fallback\univbn{Univers-Bold}{bf}{up}%
+      \tud at cdfont@fallback\univxn{Univers-Black}{bf}{up}%
+      \tud at cdfont@fallback\univls{Univers-LightOblique}{md}{it}%
+      \tud at cdfont@fallback\univrs{Univers-Oblique}{md}{it}%
+      \tud at cdfont@fallback\univbs{Univers-BoldOblique}{bf}{it}%
+      \tud at cdfont@fallback\univxs{Univers-BlackOblique}{bf}{it}%
     \fi%
     \newcommand*\textuln{}%
     \newcommand*\texturn{}%
@@ -2176,26 +2197,6 @@
     \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}%
     \if at tud@cdfont at db@exist%
       \if at tud@x at fontspec@enabled%
         \def\tud at res@a{%
@@ -2214,7 +2215,7 @@
         \tud at x@fontspec at init{\tud at cdfont@db}{\tud at res@a}%
       \fi%
       \newrobustcmd*\tud at db{%
-        \usefont{\encodingdefault}{\tud at cdfont@db}{b}{n}%
+        \usefont{\f at encoding}{\tud at cdfont@db}{b}{n}%
         \if at tud@cdmath at active\mathversion{tuddin}\fi%
       }%
       \newrobustcmd*\dinbn{\tud at db}%
@@ -2223,7 +2224,7 @@
       \newcommand*\tud at db@wrn{%
         \ClassWarning{\TUD at Class@Name}%
         {%
-          Font `DIN-Bold' is not available and therefore\MessageBreak
+          Font `DIN-Bold' is not available and therefore\MessageBreak%
           can not be used for headings%
         }%
         \global\let\tud at db@wrn\relax%
@@ -2265,7 +2266,7 @@
   \renewcommand*\cdfont[1]{%
     \tud at cdfont@get{#1}%
     \ifx\@tempc\relax\else%
-      \ifstr{\@tempc}{dinbn}{\dinbn}{\csuse{univ\@tempc}}%
+      \tud at if@strequal{\@tempc}{dinbn}{\dinbn}{\csuse{univ\@tempc}}%
     \fi%
   }%
   \renewcommand*\textcd[2]{%
@@ -2273,29 +2274,29 @@
     \ifx\@tempc\relax%
       \textsf{#2}%
     \else%
-      \ifstr{\@tempc}{dinbn}{\textdbn{#2}}{\csuse{textu\@tempc}{#2}}%
+      \tud at if@strequal{\@tempc}{dinbn}{\textdbn{#2}}{\csuse{textu\@tempc}{#2}}%
     \fi%
   }%
 \fi
 \newcommand*\tud at cdfont@get[1]{%
   \tud at 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}}{%
+  \tud at if@strequal{\@tempa}{l} {\def\@tempc{ln}}{%
+  \tud at if@strequal{\@tempa}{}  {\def\@tempc{rn}}{%
+  \tud at if@strequal{\@tempa}{r} {\def\@tempc{rn}}{%
+  \tud at if@strequal{\@tempa}{s} {\def\@tempc{sn}}{%
+  \tud at if@strequal{\@tempa}{b} {\def\@tempc{bn}}{%
+  \tud at if@strequal{\@tempa}{x} {\def\@tempc{xn}}{%
+  \tud at if@strequal{\@tempa}{li}{\def\@tempc{li}}{%
+  \tud at if@strequal{\@tempa}{il}{\def\@tempc{li}}{%
+  \tud at if@strequal{\@tempa}{i} {\def\@tempc{ri}}{%
+  \tud at if@strequal{\@tempa}{ri}{\def\@tempc{ri}}{%
+  \tud at if@strequal{\@tempa}{ir}{\def\@tempc{ri}}{%
+  \tud at if@strequal{\@tempa}{si}{\def\@tempc{si}}{%
+  \tud at if@strequal{\@tempa}{is}{\def\@tempc{si}}{%
+  \tud at if@strequal{\@tempa}{bi}{\def\@tempc{bi}}{%
+  \tud at if@strequal{\@tempa}{ib}{\def\@tempc{bi}}{%
+  \tud at if@strequal{\@tempa}{xi}{\def\@tempc{xi}}{%
+  \tud at if@strequal{\@tempa}{ix}{\def\@tempc{xi}}{%
     \let\@tempc\relax%
     \ClassWarning{\TUD at Class@Name}%
       {The font `#1' is unknown}%
@@ -2304,20 +2305,20 @@
 \if at tud@cdoldfont at active
   \renewcommand*\tud at cdfont@get[1]{%
     \tud at 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}}{%
+    \tud at if@strequal{\@tempa}{45}       {\def\@tempc{ln}}{%
+    \tud at if@strequal{\@tempa}{55}       {\def\@tempc{rn}}{%
+    \tud at if@strequal{\@tempa}{65}       {\def\@tempc{bn}}{%
+    \tud at if@strequal{\@tempa}{75}       {\def\@tempc{xn}}{%
+    \tud at if@strequal{\@tempa}{45oblique}{\def\@tempc{ls}}{%
+    \tud at if@strequal{\@tempa}{55oblique}{\def\@tempc{rs}}{%
+    \tud at if@strequal{\@tempa}{65oblique}{\def\@tempc{bs}}{%
+    \tud at if@strequal{\@tempa}{75oblique}{\def\@tempc{xs}}{%
+    \tud at if@strequal{\@tempa}{oblique45}{\def\@tempc{ls}}{%
+    \tud at if@strequal{\@tempa}{oblique55}{\def\@tempc{rs}}{%
+    \tud at if@strequal{\@tempa}{oblique65}{\def\@tempc{bs}}{%
+    \tud at if@strequal{\@tempa}{oblique75}{\def\@tempc{xs}}{%
+    \tud at if@strequal{\@tempa}{din}      {\def\@tempc{dinbn}}{%
+    \tud at if@strequal{\@tempa}{din65}    {\def\@tempc{dinbn}}{%
       \let\@tempc\relax%
       \ClassWarning{\TUD at Class@Name}%
       {The font `#1' is unknown}%
@@ -2325,8 +2326,7 @@
   }%
 \fi
 \newcommand*\tud at cdfont@trim[2]{%
-  \protected at edef\@tempa{\trim at spaces{#2}}%
-  \tud at lowerstring{\@tempa}{\@tempa}%
+  \tud at strlowercase\@tempa{\trim at spaces{#2}}%
   \tud at cdfont@@trim{ }{}%
   \tud at cdfont@@trim{-}{}%
   \tud at cdfont@@trim{_}{}%
@@ -2335,9 +2335,9 @@
   \tud at cdfont@@trim{light}{l}%
   \tud at cdfont@@trim{regular}{r}%
   \tud at cdfont@@trim{book}{r}%
-  \tud at cdfont@@trim{semibold}{s}%
+  \tud at cdfont@@trim{semi}{s}%
   \tud at cdfont@@trim{demi}{s}%
-  \tud at cdfont@@trim{extrabold}{x}%
+  \tud at cdfont@@trim{extra}{x}%
   \tud at cdfont@@trim{black}{x}%
   \tud at cdfont@@trim{bold}{b}%
   \tud at cdfont@@trim{italic}{i}%
@@ -2347,8 +2347,7 @@
 }
 \if at tud@cdoldfont at active
   \renewcommand*\tud at cdfont@trim[2]{%
-    \protected at edef\@tempa{\trim at spaces{#2}}%
-    \tud at lowerstring{\@tempa}{\@tempa}%
+    \tud at strlowercase\@tempa{\trim at spaces{#2}}%
     \tud at cdfont@@trim{ }{}%
     \tud at cdfont@@trim{-}{}%
     \tud at cdfont@@trim{_}{}%
@@ -2391,12 +2390,12 @@
     \let\tud at ttfont@fam\ttdefault%
   \or% roboto
     \let\tud at ttfont@fam\tud at ttfont@rb%
-  \or% lmodern
+  \else% lmodern
     \let\tud at ttfont@fam\tud at ttfont@lm%
   \fi%
   \ifcase\tud at ttfont@num\relax\else% !false
     \if at tud@x at fontspec@enabled%
-      \ifx\ttdefault\tud at ttfont@fam\else%
+      \ifx\tud at ttfont@fam\ttdefault\else%
         \tud at x@fontspec at set{tt}{\tud at ttfont@fam}%
       \fi%
     \else%
@@ -2481,14 +2480,14 @@
       \edef\tud at ttfont@rb at scale{s*[\tud at ttfont@rb at scale]}%
       \begingroup%
         \def\tud at res@c##1##2{%
-          \tud at lowerstring\tud at res@a{##1}%
+          \tud at strlowercase\tud at res@a{##1}%
           \DeclareFontFamily{##1}{\tud at ttfont@rb}{\hyphenchar\font=\m at ne}%
           \def\tud at res@b####1####2####3{%
             \DeclareFontShape{##1}{\tud at ttfont@rb}{####1}{n}{%
-               <->\tud at ttfont@rb at scale RobotoMono-####2-tlf-\tud at res@a%
+              <->\tud at ttfont@rb at scale RobotoMono-####2-tlf-\tud at res@a%
             }{}%
             \DeclareFontShape{##1}{\tud at ttfont@rb}{####1}{it}{%
-               <->\tud at ttfont@rb at scale RobotoMono-####3-tlf-\tud at res@a%
+              <->\tud at ttfont@rb at scale RobotoMono-####3-tlf-\tud at res@a%
             }{}%
             \DeclareFontShape{##1}{\tud at ttfont@rb}{####1}{sl}{%
               <->ssub*\tud at ttfont@rb/####1/it%
@@ -2495,10 +2494,10 @@
             }{}%
             \ifbool{##2}{%
               \DeclareFontShape{##1}{\tud at ttfont@rb}{####1}{sc}{%
-                 <->\tud at ttfont@rb at scale RobotoMono-####2-tlf-sc-\tud at res@a%
+                <->\tud at ttfont@rb at scale RobotoMono-####2-tlf-sc-\tud at res@a%
               }{}%
               \DeclareFontShape{##1}{\tud at ttfont@rb}{####1}{scit}{%
-                 <->\tud at ttfont@rb at scale RobotoMono-####3-tlf-sc-\tud at res@a%
+                <->\tud at ttfont@rb at scale RobotoMono-####3-tlf-sc-\tud at res@a%
               }{}%
               \DeclareFontShape{##1}{\tud at ttfont@rb}{####1}{scsl}{%
                 <->ssub*\tud at ttfont@rb/####1/scit%
@@ -2513,8 +2512,18 @@
         }%
         \tud at res@c{OT1}{true}%
         \tud at res@c{T1}{true}%
-        \ifcsundef{T at TS1}{}{\tud at res@c{TS1}{false}}%
-      \endgroup%
+        \tud at res@c{TS1}{false}%
+        \def\tud at res@a{\endgroup}%
+        \def\tud at res@b{TS1:RobotoMono-TLF}%
+        \ifcsundef{\tud at res@b}{%
+          \ClassWarningNoLine{\TUD at Class@Name}%
+            {`\tud at res@b' encoding subset undefinied}%
+        }{%
+          \eappto\tud at res@a{%
+            \noexpand\DeclareEncodingSubset{TS1}{tudtt}{\csuse{\tud at res@b}}%
+          }%
+        }%
+      \tud at res@a%
     \fi%
   \fi%
 }
@@ -2598,7 +2607,7 @@
 \newcommand*\tud at math@map@@@greeks[1]{%
   \ifcsundef{it#1}{\ifcsundef{var#1}{}{\csletcs{it#1}{var#1}}}{}%
   \ifcsundef{up#1}{%
-    \tud at lowerstring\tud at res@a{#1}%
+    \tud at strlowercase\tud at res@a{#1}%
     \edef\tud at res@a{Up\tud at res@a}%
     \ifcsundef{\tud at res@a}{}{\csletcs{up#1}{\tud at res@a}}%
   }{}%
@@ -2626,7 +2635,7 @@
     }%
     \tud at cs@use{mv at normal}%
     \let\tud at res@c\@empty%
-    \ifstr{\tud at math@letters at enc}{\detokenize{OML}}{%
+    \tud at if@strequal{\tud at math@letters at enc}{OML}{%
       \def\tud at res@a##1{%
         \ifcsundef{it##1}{%
           \eappto\tud at res@c{%
@@ -2639,7 +2648,7 @@
       \tud at res@cnt=\z@\relax%
       \tud at math@loop at greeks@all\tud at res@a%
     }{}%
-    \ifstr{\tud at math@operators at enc}{\detokenize{OT1}}{%
+    \tud at if@strequal{\tud at math@operators at enc}{OT1}{%
       \def\tud at res@a##1{%
         \ifcsundef{up##1}{%
           \eappto\tud at res@c{%
@@ -2738,26 +2747,19 @@
       }%
     }%
     \@tud at res@swafalse%
-    \ifcsdef{upalpha}{%
-      \ifx\upalpha\alpha%
-        \@tud at res@swatrue%
-      \fi%
-    }{}%
+    \ifundef{\upalpha}{}{\ifx\upalpha\alpha\@tud at res@swatrue\fi}%
     \if at tud@res at swa%
       \def\tud at res@c{\TUD at key@preset{slantedgreek}{false}}%
     \else%
-      \ifcsdef{itGamma}{%
-        \ifx\itGamma\Gamma%
-          \@tud at res@swatrue%
-        \fi%
-      }{%
+      \ifundef{\itGamma}{}{\ifx\itGamma\Gamma\@tud at res@swatrue\fi}%
+      \if at tud@res at swa\else%
         \let\tud at res@a\relax%
         \let\tud at res@b\relax%
         \DeclareMathSymbol{\tud at res@a}{\mathalpha}{letters}{0}%
         \DeclareMathSymbol{\tud at res@b}{\mathord}{letters}{0}%
-        \ifx\Gamma\tud at res@a\relax\@tud at res@swatrue\fi%
-        \ifx\Gamma\tud at res@b\relax\@tud at res@swatrue\fi%
-      }%
+        \ifx\Gamma\tud at res@a\@tud at res@swatrue\fi%
+        \ifx\Gamma\tud at res@b\@tud at res@swatrue\fi%
+      \fi%
       \if at tud@res at swa%
         \def\tud at res@c{\TUD at key@preset{slantedgreek}{true}}%
       \fi%
@@ -2765,43 +2767,9 @@
     \edef\tud at res@c{\endgroup\expandonce\tud at res@c}%
   \tud at res@c%
 }
-\newcommand*\mv at tudnormal{}
-\newcommand*\mv at tudbold{}
-\newcommand*\mv at tuddin{}
-\AfterPackage*{mathastext}{%
-  \newrobustcmd*\tud at mathversion[1]{%
-    \begingroup%
-      \let\tud at res@a\relax%
-      \if at tud@cdmath at active%
-        \ifstr{#1}{normal}{%
-          \def\tud at res@a{tudnormal}%
-        }{%
-          \ifstr{#1}{bold}{%
-            \def\tud at res@a{tudbold}%
-          }{}%
-        }%
-      \fi%
-      \edef\tud at res@a{%
-        \endgroup%
-        \noexpand\tud at cs@restore{mathversion}%
-        \ifx\tud at res@a\relax%
-          \noexpand\mathversion{#1}%
-        \else%
-          \noexpand\MTversion*{\tud at res@a}%
-        \fi%
-        \noexpand\tud at cs@store{mathversion}%
-        \noexpand\tud at cs@letltx{mathversion}{tud at mathversion}%
-      }%
-    \tud at res@a%
-  }%
-  \AtEndPreamble{%
-    \tud at cs@store{mathversion}%
-    \tud at cs@letltx{mathversion}{tud at mathversion}%
-  }%
-}
 \newcommand*\tud at cdmath@init{%
   \@tud at res@swafalse%
-  \if at tud@cdfont at fam@exist%
+  \if at tud@cdmath at fam@exist%
     \@tud at res@swatrue%
     \if at tud@cdoldfont at active\else%
       \tud at if@fdfileexists{LGR}{cmr}{}{%
@@ -2847,12 +2815,11 @@
         subdued,defaultmathsizes,nosmalldelims,noequal,%
         defaultrm,defaultbf,defaultit,defaultsf,defaulttt%
       }{mathastext}%
-      \RequirePackage{mathastext}[2018/08/22]%
+      \RequirePackage{mathastext}
       \tud at math@declare at lgrgreeks{cmr}{m}{bx}{n}{it}%
     \fi%
     \providecommand*\MTDeclareVersion[6][]{\DeclareMathVersion{##2}}%
-    \providecommand*\MTversion@@[1]{}%
-    \tud at cdmath@@init{\tud at cdfont@fam at lf}{\tud at ttfont@fam}%
+    \tud at cdmath@@init%
     \if at tud@cdoldfont at active%
       \tud at res@cnt=\z@\relax%
       \tud at math@loop at greeks@uc\tud at cdmath@declare at greek@uc%
@@ -2862,104 +2829,128 @@
     \fi%
     \tud at cdmath@declare at char{*}{\mathbin}{symbols}{"03}%
     \tud at cdmath@also at greeks%
-  \else%
-    \let\mv at tudnormal\mv at normal%
-    \let\mv at tudbold\mv at bold%
-    \if at tud@cdoldfont at active%
+  \fi%
+  \if at tud@cdoldfont at active%
+    \if at tud@cdmath at db@exist%
+      \tud at cdmath@db at init{\tud at cdfont@db}%
+    \else%
       \let\mv at tuddin\mv at bold%
     \fi%
   \fi%
 }
-\newcommand*\tud at x@mathastext at enc{OT1}
-\newcommand*\tud at cdmath@@init[2]{%
-  \tud at cdfont@@set%
-  \tud at ttfont@@set%
+\newcommand*\tud at cdmath@set{}
+\newcommand*\tud at cdmath@normal at name{tudnormal@\tud at cdfont@md\tud at cdfont@bf}%
+\newcommand*\tud at cdmath@bold at name{tudbold@\tud at cdfont@md\tud at cdfont@bf}%
+\newcommand*\tud at cdmath@@init{%
+  \begingroup%
+    \let\tud at res@b\@empty%
+    \def\tud at res@a##1##2{%
+      \setbool{@tud at cdfont@heavy}{##1}%
+      \setbool{@tud at cdfont@ultrabold}{##2}%
+      \tud at cdfont@@set%
+      \tud at ttfont@@set%
+      \eappto\tud at res@b{%
+        \noexpand\tud at cdmath@@@init%
+          {\tud at cdmath@normal at name}%
+          {\tud at cdmath@bold at name}%
+          {\tud at cdfont@fam at lf}{\tud at cdfont@md}{\tud at cdfont@bf}{\tud at cdfont@ebf}%
+          {\tud at ttfont@fam}{\tud at ttfont@md}{\tud at ttfont@bf}%
+      }%
+    }%
+    \tud at res@a{false}{false}%
+    \tud at res@a{false}{true}%
+    \tud at res@a{true}{false}%
+    \tud at res@a{true}{true}%
+    \if at tud@cdfont at active\else%
+      \preto\tud at res@b{%
+        \@tud at cdfont@activetrue%
+        \tud at font@set[]%
+      }%
+      \appto\tud at res@b{%
+        \@tud at cdfont@activefalse%
+        \tud at font@set[]%
+      }%
+    \fi%
+    \preto\tud at res@b{\endgroup}%
+  \tud at res@b%
+  \renewcommand*\tud at cdmath@set{%
+    \begingroup%
+      \tud at cdfont@@set%
+      \edef\tud at res@a{%
+        \endgroup%
+        \unexpanded{\letcs\mv at normal}{mv@\tud at cdmath@normal at name}%
+        \unexpanded{\letcs\mv at bold}{mv@\tud at cdmath@bold at name}%
+      }%
+    \tud at res@a%
+  }%
+}
+\newcommand*\tud at cdmath@@@init[9]{%
   \if at tud@cdoldfont at active%
-    \DeclareMathVersion{tudnormal}%
-    \DeclareMathVersion{tudbold}%
-    \DeclareMathVersion{tuddin}%
-    \SetSymbolFont{operators}{tudnormal}{OT1}{#1}{\tud at cdfont@md}{n}%
-    \SetSymbolFont{operators}{tudbold}{OT1}{#1}{\tud at cdfont@bf}{n}%
-    \SetSymbolFont{operators}{tuddin}{OT1}{\tud at cdfont@db}{b}{n}%
-    \SetSymbolFont{letters}{tudnormal}{OML}{#1}{\tud at cdfont@md}{sl}%
-    \SetSymbolFont{letters}{tudbold}{OML}{#1}{\tud at cdfont@bf}{sl}%
-    \SetSymbolFont{letters}{tuddin}{OML}{\tud at cdfont@db}{b}{sl}%
-    \SetSymbolFont{symbols}{tudnormal}{OMS}{#1}{\tud at cdfont@md}{n}%
-    \SetSymbolFont{symbols}{tudbold}{OMS}{#1}{\tud at cdfont@bf}{n}%
-    \SetSymbolFont{symbols}{tuddin}{OMS}{\tud at cdfont@db}{b}{n}%
-    \SetSymbolFont{largesymbols}{tudnormal}{OMX}{iwona}{\tud at cdfont@md}{n}%
-    \SetSymbolFont{largesymbols}{tudbold}{OMX}{iwona}{\tud at cdfont@bf}{n}%
-    \SetSymbolFont{largesymbols}{tuddin}{OMX}{iwona}{ebc}{n}%
-    \SetMathAlphabet{\mathnormal}{tudnormal}{OML}{#1}{\tud at cdfont@md}{sl}%
-    \SetMathAlphabet{\mathnormal}{tudbold}{OML}{#1}{\tud at cdfont@bf}{sl}%
-    \SetMathAlphabet{\mathnormal}{tuddin}{OML}{\tud at cdfont@db}{b}{sl}%
+    \DeclareMathVersion{#1}%
+    \DeclareMathVersion{#2}%
+    \SetSymbolFont{operators}{#1}{OT1}{#3}{#4}{n}%
+    \SetSymbolFont{operators}{#2}{OT1}{#3}{#5}{n}%
+    \SetSymbolFont{letters}{#1}{OML}{#3}{#4}{it}%
+    \SetSymbolFont{letters}{#2}{OML}{#3}{#5}{it}%
+    \SetSymbolFont{symbols}{#1}{OMS}{#3}{#4}{n}%
+    \SetSymbolFont{symbols}{#2}{OMS}{#3}{#5}{n}%
+    \SetSymbolFont{largesymbols}{#1}{OMX}{iwona}{#4}{n}%
+    \SetSymbolFont{largesymbols}{#2}{OMX}{iwona}{#5}{n}%
+    \SetMathAlphabet{\mathnormal}{#1}{OML}{#3}{#4}{it}%
+    \SetMathAlphabet{\mathnormal}{#2}{OML}{#3}{#5}{it}%
     \tud at if@ismathalphabet{\mathbold}{%
-      \SetMathAlphabet{\mathbold}{tudnormal}{OML}{#1}{\tud at cdfont@bf}{sl}%
-      \SetMathAlphabet{\mathbold}{tudbold}{OML}{#1}{\tud at cdfont@ebf}{sl}%
-      \SetMathAlphabet{\mathbold}{tuddin}{OML}{\tud at cdfont@db}{b}{sl}%
+      \SetMathAlphabet{\mathbold}{#1}{OML}{#3}{#5}{it}%
+      \SetMathAlphabet{\mathbold}{#2}{OML}{#3}{#6}{it}%
     }{}%
   \else%
-    \edef\tud at res@b{\encodingdefault}%
-    \@tfor\tud at res@a:={T1}{TU}{EU1}{EU2}\do{%
-      \ifx\tud at res@a\tud at res@b%
-        \let\tud at x@mathastext at enc\tud at res@b%
-        \@break at tfor
-      \fi%
-    }%
-    \MTDeclareVersion[it]{tudnormal}%
-      {\tud at x@mathastext at enc}{#1}{\tud at cdfont@md}{n}%
-    \MTDeclareVersion[it]{tudbold}%
-      {\tud at x@mathastext at enc}{#1}{\tud at cdfont@bf}{n}%
-    \SetSymbolFont{operators}{tudnormal}{OT1}{iwona}{\tud at cdfont@md}{n}%
-    \SetSymbolFont{operators}{tudbold}{OT1}{iwona}{\tud at cdfont@bf}{n}%
-    \SetSymbolFont{letters}{tudnormal}{OML}{iwona}{\tud at cdfont@md}{it}%
-    \SetSymbolFont{letters}{tudbold}{OML}{iwona}{\tud at cdfont@bf}{it}%
-    \SetSymbolFont{symbols}{tudnormal}{OMS}{iwona}{\tud at cdfont@md}{n}%
-    \SetSymbolFont{symbols}{tudbold}{OMS}{iwona}{\tud at cdfont@bf}{n}%
-    \SetSymbolFont{largesymbols}{tudnormal}{OMX}{iwona}{\tud at cdfont@md}{n}%
-    \SetSymbolFont{largesymbols}{tudbold}{OMX}{iwona}{\tud at cdfont@bf}{n}%
-    \SetSymbolFont{tudupgrk}{tudnormal}{LGR}{#1}{\tud at cdfont@md}{n}%
-    \SetSymbolFont{tuditgrk}{tudnormal}{LGR}{#1}{\tud at cdfont@md}{it}%
-    \SetSymbolFont{tudupgrk}{tudbold}{LGR}{#1}{\tud at cdfont@bf}{n}%
-    \SetSymbolFont{tuditgrk}{tudbold}{LGR}{#1}{\tud at cdfont@bf}{it}%
+    \MTDeclareVersion[it]{#1}{\tud at x@mathastext at enc}{#3}{#4}{n}%
+    \MTDeclareVersion[it]{#2}{\tud at x@mathastext at enc}{#3}{#5}{n}%
+    \SetSymbolFont{operators}{#1}{OT1}{iwona}{#4}{n}%
+    \SetSymbolFont{operators}{#2}{OT1}{iwona}{#5}{n}%
+    \SetSymbolFont{letters}{#1}{OML}{iwona}{#4}{it}%
+    \SetSymbolFont{letters}{#2}{OML}{iwona}{#5}{it}%
+    \SetSymbolFont{symbols}{#1}{OMS}{iwona}{#4}{n}%
+    \SetSymbolFont{symbols}{#2}{OMS}{iwona}{#5}{n}%
+    \SetSymbolFont{largesymbols}{#1}{OMX}{iwona}{#4}{n}%
+    \SetSymbolFont{largesymbols}{#2}{OMX}{iwona}{#5}{n}%
+    \SetSymbolFont{tuditgrk}{#1}{LGR}{#3}{#4}{it}%
+    \SetSymbolFont{tuditgrk}{#2}{LGR}{#3}{#5}{it}%
+    \SetSymbolFont{tudupgrk}{#1}{LGR}{#3}{#4}{n}%
+    \SetSymbolFont{tudupgrk}{#2}{LGR}{#3}{#5}{n}%
     \tud at if@ismathalphabet{\mathbold}{%
-      \SetMathAlphabet{\mathbold}{tudnormal}%
-        {\tud at x@mathastext at enc}{#1}{\tud at cdfont@bf}{it}%
-      \SetMathAlphabet{\mathbold}{tudbold}%
-        {\tud at x@mathastext at enc}{#1}{\tud at cdfont@ebf}{it}%
+      \SetMathAlphabet{\mathbold}{#1}{\tud at x@mathastext at enc}{#3}{#5}{it}%
+      \SetMathAlphabet{\mathbold}{#2}{\tud at x@mathastext at enc}{#3}{#6}{it}%
     }{}%
   \fi%
-  \SetMathAlphabet{\mathrm}{tudnormal}{OT1}{#1}{\tud at cdfont@md}{n}%
-  \SetMathAlphabet{\mathrm}{tudbold}{OT1}{#1}{\tud at cdfont@bf}{n}%
-  \SetMathAlphabet{\mathbf}{tudnormal}{OT1}{#1}{\tud at cdfont@bf}{n}%
-  \SetMathAlphabet{\mathbf}{tudbold}{OT1}{#1}{\tud at cdfont@ebf}{n}%
-  \SetMathAlphabet{\mathsf}{tudnormal}{OT1}{#1}{\tud at cdfont@md}{n}%
-  \SetMathAlphabet{\mathsf}{tudbold}{OT1}{#1}{\tud at cdfont@bf}{n}%
-  \SetMathAlphabet{\mathit}{tudnormal}{OT1}{#1}{\tud at cdfont@md}{it}%
-  \SetMathAlphabet{\mathit}{tudbold}{OT1}{#1}{\tud at cdfont@bf}{it}%
-  \SetMathAlphabet{\mathtt}{tudnormal}{OT1}{#2}{\tud at ttfont@md}{n}%
-  \SetMathAlphabet{\mathtt}{tudbold}{OT1}{#2}{\tud at ttfont@bf}{n}%
+  \AtBeginDocument{%
+    \tud at if@issymbolfont{legacymaths}{%
+      \SetSymbolFont{legacymaths}{#1}{OT1}{#3}{#4}{n}%
+      \SetSymbolFont{legacymaths}{#2}{OT1}{#3}{#5}{n}%
+    }{}%
+  }%
   \if at tud@cdoldfont at active%
-    \SetMathAlphabet{\mathrm}{tuddin}{OT1}{\tud at cdfont@db}{b}{n}%
-    \SetMathAlphabet{\mathbf}{tuddin}{OT1}{\tud at cdfont@db}{b}{n}%
-    \SetMathAlphabet{\mathsf}{tuddin}{OT1}{\tud at cdfont@db}{b}{n}%
-    \SetMathAlphabet{\mathit}{tuddin}{OT1}{\tud at cdfont@db}{b}{sl}%
-    \SetMathAlphabet{\mathtt}{tuddin}{OT1}{#2}{\tud at ttfont@ebf}{n}%
+    \def\tud at res@a{OT1}%
+  \else%
+    \let\tud at res@a\tud at x@mathastext at enc%
   \fi%
+  \SetMathAlphabet{\mathrm}{#1}{\tud at res@a}{#3}{#4}{n}%
+  \SetMathAlphabet{\mathrm}{#2}{\tud at res@a}{#3}{#5}{n}%
+  \SetMathAlphabet{\mathbf}{#1}{\tud at res@a}{#3}{#5}{n}%
+  \SetMathAlphabet{\mathbf}{#2}{\tud at res@a}{#3}{#6}{n}%
+  \SetMathAlphabet{\mathsf}{#1}{\tud at res@a}{#3}{#4}{n}%
+  \SetMathAlphabet{\mathsf}{#2}{\tud at res@a}{#3}{#5}{n}%
+  \SetMathAlphabet{\mathit}{#1}{\tud at res@a}{#3}{#4}{it}%
+  \SetMathAlphabet{\mathit}{#2}{\tud at res@a}{#3}{#5}{it}%
+  \SetMathAlphabet{\mathtt}{#1}{\tud at res@a}{#7}{#8}{n}%
+  \SetMathAlphabet{\mathtt}{#2}{\tud at res@a}{#7}{#9}{n}%
   \IfFileExists{ueus.fd}{%
-    \SetMathAlphabet{\mathcal}{tudnormal}{U}{eus}{m}{n}%
-    \SetMathAlphabet{\mathcal}{tudbold}{U}{eus}{b}{n}%
-    \if at tud@cdoldfont at active%
-      \SetMathAlphabet{\mathcal}{tuddin}{U}{eus}{b}{n}%
-    \fi%
+    \SetMathAlphabet{\mathcal}{#1}{U}{eus}{m}{n}%
+    \SetMathAlphabet{\mathcal}{#2}{U}{eus}{b}{n}%
   }{}%
   \tud at if@ismathalphabet{\mathfrak}{%
     \IfFileExists{ueuf.fd}{%
-      \SetMathAlphabet{\mathfrak}{tudnormal}{U}{euf}{m}{n}%
-      \SetMathAlphabet{\mathfrak}{tudbold}{U}{euf}{b}{n}%
-      \if at tud@cdoldfont at active%
-        \SetMathAlphabet{\mathfrak}{tuddin}{U}{euf}{b}{n}%
-      \fi%
+      \SetMathAlphabet{\mathfrak}{#1}{U}{euf}{m}{n}%
+      \SetMathAlphabet{\mathfrak}{#2}{U}{euf}{b}{n}%
     }{}%
   }{}%
   \AtBeginDocument{%
@@ -2968,14 +2959,14 @@
     \tud at if@issymbolfont{AMSb}{\@tud at res@swatrue}{}%
     \if at tud@res at swa%
       \if at tud@cdoldfont at active%
-        \DeclareFontFamily{U}{\tud at cdfont@fam at lf a}{}%
-        \DeclareFontShape{U}{\tud at cdfont@fam at lf a}{m}{n}{<->cmbras10}{}%
-        \SetSymbolFont{AMSa}{tudnormal}{U}{\tud at cdfont@fam at lf a}{m}{n}%
-        \SetSymbolFont{AMSa}{tudbold}{U}{\tud at cdfont@fam at lf a}{m}{n}%
-        \DeclareFontFamily{U}{\tud at cdfont@fam at lf b}{}%
-        \DeclareFontShape{U}{\tud at cdfont@fam at lf b}{m}{n}{<->cmbrbs10}{}%
-        \SetSymbolFont{AMSb}{tudnormal}{U}{\tud at cdfont@fam at lf b}{m}{n}%
-        \SetSymbolFont{AMSb}{tudbold}{U}{\tud at cdfont@fam at lf b}{m}{n}%
+        \DeclareFontFamily{U}{#3a}{}%
+        \DeclareFontShape{U}{#3a}{m}{n}{<->cmbras10}{}%
+        \SetSymbolFont{AMSa}{#1}{U}{#3a}{m}{n}%
+        \SetSymbolFont{AMSa}{#2}{U}{#3a}{m}{n}%
+        \DeclareFontFamily{U}{#3b}{}%
+        \DeclareFontShape{U}{#3b}{m}{n}{<->cmbrbs10}{}%
+        \SetSymbolFont{AMSb}{#1}{U}{#3b}{m}{n}%
+        \SetSymbolFont{AMSb}{#2}{U}{#3b}{m}{n}%
       \else%
         \@ifpackageloaded{mdsymbol}{}{%
           \appto\tud at cdmath@wrn{%
@@ -2988,19 +2979,74 @@
         }%
       \fi%
     \fi%
-    \tud at if@issymbolfont{legacymaths}{%
-      \SetSymbolFont{legacymaths}{tudnormal}{OT1}{#1}{\tud at cdfont@md}{n}%
-      \SetSymbolFont{legacymaths}{tudbold}{OT1}{#1}{\tud at cdfont@bf}{n}%
-      \if at tud@cdoldfont at active%
-        \SetSymbolFont{legacymaths}{tuddin}{OT1}{\tud at cdfont@db}{b}{n}%
-      \fi%
+  }%
+}
+\if at tud@cdoldfont at active
+  \newcommand*\tud at cdmath@db at init[1]{%
+    \DeclareMathVersion{tuddin}%
+    \SetSymbolFont{operators}{tuddin}{OT1}{#1}{b}{n}%
+    \SetSymbolFont{letters}{tuddin}{OML}{#1}{b}{it}%
+    \SetSymbolFont{symbols}{tuddin}{OMS}{#1}{b}{n}%
+    \SetSymbolFont{largesymbols}{tuddin}{OMX}{iwona}{ebc}{n}%
+    \AtBeginDocument{%
+      \tud at if@issymbolfont{legacymaths}{%
+        \SetSymbolFont{legacymaths}{tuddin}{OT1}{#1}{b}{n}%
+      }{}%
+    }%
+    \SetMathAlphabet{\mathnormal}{tuddin}{OML}{#1}{b}{it}%
+    \tud at if@ismathalphabet{\mathbold}{%
+      \SetMathAlphabet{\mathbold}{tuddin}{OML}{#1}{b}{it}%
     }{}%
-    \if at tud@cdoldfont at active%
+    \SetMathAlphabet{\mathrm}{tuddin}{OT1}{#1}{b}{n}%
+    \SetMathAlphabet{\mathbf}{tuddin}{OT1}{#1}{b}{n}%
+    \SetMathAlphabet{\mathsf}{tuddin}{OT1}{#1}{b}{n}%
+    \SetMathAlphabet{\mathit}{tuddin}{OT1}{#1}{b}{it}%
+    \IfFileExists{ueus.fd}{%
+      \SetMathAlphabet{\mathcal}{tuddin}{U}{eus}{b}{n}%
+    }{}%
+    \tud at if@ismathalphabet{\mathfrak}{%
+      \IfFileExists{ueuf.fd}{%
+        \SetMathAlphabet{\mathfrak}{tuddin}{U}{euf}{b}{n}%
+      }{}%
+    }{}%
+    \AtBeginDocument{%
       \if at tud@cdmath at active%
-        \sbox\z@{\mathversion{tudnormal}$ $\mathversion{tuddin}$ $}%
+        \sbox\z@{\mathversion{normal}$ $\mathversion{tuddin}$ $}%
       \fi%
-    \fi%
+    }%
   }%
+\fi
+\AfterPackage*{mathastext}{%
+  \newrobustcmd*\tud at mathversion[1]{%
+    \begingroup%
+      \let\tud at res@a\relax%
+      \if at tud@cdmath at active%
+        \tud at if@strequal{#1}{normal}{%
+          \edef\tud at res@a{\tud at cdmath@normal at name}%
+        }{%
+          \tud at if@strequal{#1}{bold}{%
+            \edef\tud at res@a{\tud at cdmath@bold at name}%
+          }{}%
+        }%
+      \fi%
+      \edef\tud at res@a{%
+        \endgroup%
+        \noexpand\tud at cs@restore{mathversion}%
+        \ifx\tud at res@a\relax%
+          \noexpand\mathversion{#1}%
+        \else%
+          \noexpand\MTversion*{\tud at res@a}%
+        \fi%
+        \noexpand\tud at cs@store{mathversion}%
+        \noexpand\tud at cs@letltx{mathversion}{tud at mathversion}%
+      }%
+    \tud at res@a%
+    \ifcsundef{mv@#1}{}{\edef\math at version{#1}}%
+  }%
+  \AtEndPreamble{%
+    \tud at cs@store{mathversion}%
+    \tud at cs@letltx{mathversion}{tud at mathversion}%
+  }%
 }
 \newcommand*\tud at cdmath@symb at list{}
 \newcommand*\tud at cdmath@declare at symb[4]{%
@@ -3028,7 +3074,7 @@
     }%
   \tud at res@a%
 }
-\newtoks\tud at cdmath@symbols at toks
+\tud at newtoks\tud at cdmath@symbols at toks
 \newcommand*\tud at cdmath@symbols at set{%
   \expandafter\IfArgIsEmpty\expandafter{\the\tud at cdmath@symbols at toks}{%
     \forlistloop\tud at cdmath@symbols at set@cmd\tud at cdmath@symb at list%
@@ -3051,7 +3097,7 @@
 }
 \newcommand*\tud at cdmath@symbols at set@chr[1]{%
   \edef\tud at res@a{\global\mathcode`#1=\the\mathcode`#1\relax}%
-  \eaddto at hook\tud at cdmath@symbols at toks{\tud at res@a}%
+  \addto at hook@expandafter\tud at cdmath@symbols at toks{\tud at res@a}%
   \begingroup%
     \edef\tud at res@a{\expandafter\meaning\csname tud at cdmath@symbol@#1\endcsname}%
     \def\tud at res@b##1"##2\@nil{"##2}%
@@ -3154,7 +3200,7 @@
   }%
 }
 \newcommand*\tud at cdmath@also@@@greeks[1]{%
-  \tud at lowerstring\tud at res@a{#1}%
+  \tud at strlowercase\tud at res@a{#1}%
   \edef\tud at res@a{Up\tud at res@a}%
   \ifcsundef{\tud at res@a}{}{%
     \expandafter\tud at cdmath@declare at alias\expandafter{\tud at res@a}{up#1}%
@@ -3163,13 +3209,12 @@
     \expandafter\tud at cdmath@declare at alias\expandafter{var#1}{it#1}%
   }%
 }
-\newcommand*\tud at math@set{%
+\newcommand*\tud at math@set[1][\tud at cdmath@wrn]{%
   \if at tud@cdmath at active%
-    \tud at cdmath@wrn%
+    #1%
     \tud at cs@store{mv at normal}%
     \tud at cs@store{mv at bold}%
-    \let\mv at normal\mv at tudnormal%
-    \let\mv at bold\mv at tudbold%
+    \tud at cdmath@set%
     \tud at cdmath@symbols at set%
     \ifcase\tud at slantedgreek@num\relax% upright
       \tud at math@loop at greeks@all\tud at math@upright at greeks%
@@ -3184,7 +3229,7 @@
     \tud at cs@restore{mv at bold}%
     \tud at cdmath@symbols at reset%
   \fi%
-  \mathversion{normal}%
+  \expandafter\mathversion\expandafter{\math at version}%
 }
 \newcommand*\tud at math@upright at greeks[1]{%
   \ifcsundef{up#1}{}{%
@@ -3198,49 +3243,7 @@
     \csletcs{other#1}{up#1}%
   }%
 }
-\AtEndPreamble{%
-  \if at tud@x at mweights@enabled%
-    \ifundef{\bfseries at rm}{\edef\bfseries at rm{\bfdefault}}{}%
-    \ifundef{\mdseries at rm}{\edef\mdseries at rm{\mddefault}}{}%
-    \ifundef{\bfseries at sf}{\edef\bfseries at sf{\bfdefault}}{}%
-    \ifundef{\mdseries at sf}{\edef\mdseries at sf{\mddefault}}{}%
-    \ifundef{\bfseries at tt}{\edef\bfseries at tt{\bfdefault}}{}%
-    \ifundef{\mdseries at tt}{\edef\mdseries at tt{\mddefault}}{}%
-  \fi%
-  \tud at cdfont@check%
-  \tud at cdfont@init%
-  \tud at ttfont@init%
-  \tud at cdmath@init%
-  \if at tud@x at bm@requested%
-    \UnPreventPackageFromLoading{bm}%
-    \if at tud@cdmath at active%
-      \tud at cs@store{mv at normal}%
-      \tud at cs@store{mv at bold}%
-      \let\mv at normal\mv at tudnormal%
-      \let\mv at bold\mv at tudbold%
-    \fi%
-    \RequirePackage{bm}[2017/01/16]%
-    \tud at cs@restore{mv at normal}%
-    \tud at cs@restore{mv at bold}%
-  \fi%
-  \if at tud@x at siunitx@enabled%
-    \if at tud@cdfont at active%
-      \if at tud@cdfont at heavy%
-        \def\tud at reserved{\TUDoptions{cdfont=heavy}}%
-      \else%
-        \def\tud at reserved{\TUDoptions{cdfont=true}}%
-      \fi%
-    \else%
-      \def\tud at reserved{\TUDoptions{cdfont=false}}%
-    \fi%
-    \expandafter\AfterEndPreamble\expandafter{\tud at reserved}%
-    \TUDoptions{cdfont=false}%
-  \fi%
-  \tud at font@set%
-  \tud at math@map at greeks%
-  \tud at math@checkslanted at greeks%
-  \AtBeginDocument{\tud at math@set}%
-}
+\newcommand*\tud at font@phantomglyphs{\"A\"O\"Ugjpqy}
 \newcommand*\tud at head@font at light{}
 \newcommand*\tud at head@font at bold{}
 \newcommand*\tud at head@font at set{%
@@ -3260,14 +3263,14 @@
   \if at tud@head at font@set%
     \if at tud@x at mweights@enabled%
       \DeclareFixedFont{\tud at head@font at light}{\encodingdefault}%
-        {\sfdefault}{\mdseries at sf}{\updefault}{\tud at head@fontsize}%
+        {\sfdefault}{\mdseries at sf}{\shapedefault}{\tud at head@fontsize}%
       \DeclareFixedFont{\tud at head@font at bold}{\encodingdefault}%
-        {\sfdefault}{\bfseries at sf}{\updefault}{\tud at head@fontsize}%
+        {\sfdefault}{\bfseries at sf}{\shapedefault}{\tud at head@fontsize}%
     \else%
       \DeclareFixedFont{\tud at head@font at light}{\encodingdefault}%
-        {\sfdefault}{\mddefault}{\updefault}{\tud at head@fontsize}%
+        {\sfdefault}{\mddefault}{\shapedefault}{\tud at head@fontsize}%
       \DeclareFixedFont{\tud at head@font at bold}{\encodingdefault}%
-        {\sfdefault}{\bfdefault}{\updefault}{\tud at head@fontsize}%
+        {\sfdefault}{\bfdefault}{\shapedefault}{\tud at head@fontsize}%
     \fi%
     \ifcase\tud at head@font at num\relax\else% true/heavy
       \tud at head@cdfont at set%
@@ -3306,7 +3309,110 @@
     \fi%
   }%
 \fi
-%%% From File: tudscr-fields.dtx
+\begingroup
+\catcode`\^=7
+\catcode30=12
+\catcode`\!=12
+\edef\tud at reserved{\@gobble^^^^0021}
+\expandafter\endgroup
+\ifx\tud at reserved\@empty
+  \RequirePackage{newunicodechar}
+  \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
+\newcommand*\tud at raggedright{\raggedright}
+\newcommand*\tud at RaggedRight{\raggedright}
+\AfterPackage*{ragged2e}{%
+  \ifundef{\LaTeXraggedright}{}{%
+    \renewcommand*\tud at raggedright{\LaTeXraggedright}%
+  }%
+  \renewcommand*\tud at RaggedRight{\RaggedRight}%
+}
+\AfterAtEndOfPackage*{siunitx}{%
+  \IfPackageAtLeastTF{siunitx}{2021-04-18}{%
+    \newcommand*\tud at x@siunitx at mapping{%
+      \if at tud@cdfont at active
+        \csname keys_set:nx\endcsname { siunitx / series-version-mapping }
+          {
+            \tud at cdfont@md  = normal,
+            \tud at cdfont@bf  = bold,
+            \tud at cdfont@ebf = bold
+          }
+      \else
+        \csname keys_set:nn\endcsname { siunitx / series-version-mapping }
+          {
+            ul = light  ,
+            el = light  ,
+            l  = light  ,
+            sl = light  ,
+            m  = normal ,
+            sb = bold   ,
+            b  = bold   ,
+            eb = bold   ,
+            ub = bold
+          }
+      \fi
+    }
+    \xapptocmd\tud at font@set%
+      {\tud at x@siunitx at mapping}%
+      {}{\tud at patch@wrn{tud at font@set}}%
+  }{%
+    \newcommand*\tud at x@siunitx at reset{}%
+    \providecommand*\lseries{\fontseries{l}\selectfont}%
+    \AtEndPreamble{%
+      \if at tud@cdfont at active%
+        \if at tud@cdfont at heavy%
+          \def\tud at x@siunitx at reset{\TUDoptions{cdfont=heavy}}%
+        \else%
+          \def\tud at x@siunitx at reset{\TUDoptions{cdfont=true}}%
+        \fi%
+        \appto\tud at x@siunitx at reset{\tud at font@set[]}%
+        \TUDoptions{cdfont=false}%
+        \tud at font@set[]%
+      \fi%
+    }%
+    \AtBeginDocument{\tud at x@siunitx at reset}%
+  }
+}
+\tud at newif\if at tud@x at bm@requested
+\PreventPackageFromLoading[\@tud at x@bm at requestedtrue]{bm}
+\newcommand*\tud at x@bm at delayed{%
+  \if at tud@x at bm@requested%
+    \UnPreventPackageFromLoading{bm}%
+    \if at tud@cdmath at active%
+      \tud at cs@store{mv at normal}%
+      \tud at cs@store{mv at bold}%
+      \tud at cdmath@set%
+    \fi%
+    \RequirePackage{bm}
+    \tud at cs@restore{mv at normal}%
+    \tud at cs@restore{mv at bold}%
+  \fi%
+  \let\tud at x@bm at delayed\relax%
+}
+\BeforePackage{mathastext}{\tud at x@bm at delayed}
+\AtEndPreamble{%
+  \if at tud@x at mweights@enabled%
+    \ifundef{\bfseries at rm}{\edef\bfseries at rm{\bfdefault}}{}%
+    \ifundef{\mdseries at rm}{\edef\mdseries at rm{\mddefault}}{}%
+    \ifundef{\bfseries at sf}{\edef\bfseries at sf{\bfdefault}}{}%
+    \ifundef{\mdseries at sf}{\edef\mdseries at sf{\mddefault}}{}%
+    \ifundef{\bfseries at tt}{\edef\bfseries at tt{\bfdefault}}{}%
+    \ifundef{\mdseries at tt}{\edef\mdseries at tt{\mddefault}}{}%
+  \fi%
+  \tud at cdfont@check%
+  \tud at cdfont@init%
+  \tud at ttfont@init%
+  \tud at font@set%
+  \tud at cdmath@init%
+  \tud at x@bm at delayed%
+  \tud at math@map at greeks%
+  \tud at math@checkslanted at greeks%
+  \AtBeginDocument{\tud at math@set}%
+}
+%%%% From File: tudscr-fields.dtx (no git version info was found)
 \newcommand*\getfield[2][\@firstofone]{%
   \begingroup%
     \def\tud at res@b{#1}%
@@ -3332,20 +3438,26 @@
 \newcommand*\@department{}
 \newcommand*\@institute{}
 \newcommand*\@chair{}
-\newcommand*\faculty[2][]{\tud at head@text at field{faculty}{#2}}
-\newcommand*\department[2][]{\tud at head@text at field{department}{#2}}
-\newcommand*\institute[2][]{\tud at head@text at field{institute}{#2}}
-\newcommand*\chair[2][]{\tud at head@text at field{chair}{#2}}
+\newcommand*\faculty{\@dblarg{\tud at head@text at field{faculty}}}
+\newcommand*\department{\@dblarg{\tud at head@text at field{department}}}
+\newcommand*\institute{\@dblarg{\tud at head@text at field{institute}}}
+\newcommand*\chair{\@dblarg{\tud at head@text at field{chair}}}
 \newcommand*\@extraheadline{}
-\newcommand*\extraheadline[1]{\tud at head@text at field{extraheadline}{#1}}
-\newcommand*\tud at head@text at field[2]{%
-  \csgdef{@#1}{\trim at spaces{#2}}%
+\newcommand*\extraheadline[1]{\tud at head@text at field{extraheadline}[]{#1}}
+\newcommand*\tud at head@text at field{}
+\def\tud at head@text at field#1[#2]#3{%
+  \expandafter\tud at trim@field\csname @#1\endcsname{#3}%
   \global\@tud at head@text at settrue%
 }
+\newcommand*\tud at trim@field[2]{%
+  \def#1{#2}%
+  \trim at spaces@in#1%
+  \global\let#1#1%
+}
 \newcommand*\@@title{}
 \robustify\@title
 \renewcommand*\title[1]{%
-  \gdef\@title{#1}%
+  \tud at trim@field\@title{#1}%
   \begingroup%
     \let\thanks\@gobble%
     \let\footnote\@gobble%
@@ -3356,7 +3468,7 @@
 }
 \newcommand*\@@author{}
 \renewcommand*\author[1]{%
-  \gdef\@author{#1}%
+  \tud at trim@field\@author{#1}%
   \begingroup%
     \let\thanks\@gobble%
     \let\footnote\@gobble%
@@ -3388,113 +3500,141 @@
   \endgroup%
 }
 \newcommand*\@authormore{}
-\newrobustcmd*\authormore[1]{\gdef\@authormore{#1}\ignorespaces}
+\newrobustcmd*\authormore[1]{\tud at trim@field\@authormore{#1}}
 \newcommand*\@emailaddress{}
-\newrobustcmd*\emailaddress{%
-  \kernel at ifstar{\tud at emailaddress@simple}{\tud at emailaddress@hyper}%
+\newrobustcmd*\emailaddress[2][]{%
+  \kernel at ifstar%
+    {\tud at emailaddress@simple{#2}}%
+    {\tud at emailaddress@hyper[{#1}]{#2}}%
 }
-\newrobustcmd*\tud at emailaddress@simple[1]{\gdef\@emailaddress{#1}}
-\newrobustcmd*\tud at emailaddress@hyper[2][]{\gdef\@emailaddress{#2}}
+\newrobustcmd*\tud at emailaddress@simple[1]{\tud at trim@field\@emailaddress{#1}}
+\newrobustcmd*\tud at emailaddress@hyper[2][]{\tud at trim@field\@emailaddress{#2}}
 \AfterPackage{hyperref}{%
   \renewrobustcmd*\tud at emailaddress@hyper[2][hidelinks]{%
-    \gdef\@emailaddress{%
+    \tud at trim@field\@emailaddress{#2}%
+    \xdef\@emailaddress{%
       \begingroup%
-        \urlstyle{same}%
-        \hypersetup{#1}%
-        \href{mailto:#2}{\nolinkurl{#2}}%
+        \noexpand\urlstyle{same}%
+        \unexpanded{\hypersetup{#1}}%
+        \noexpand\href%
+          {mailto:\expandonce\@emailaddress}%
+          {\noexpand\nolinkurl{\expandonce\@emailaddress}}%
       \endgroup%
     }%
   }%
 }
 \newcommand*\@course{}
-\newrobustcmd*\course[1]{\gdef\@course{#1}\ignorespaces}
+\newrobustcmd*\course[1]{\tud at trim@field\@course{#1}}
 \newcommand*\@discipline{}
-\newrobustcmd*\discipline[1]{\gdef\@discipline{#1}\ignorespaces}
+\newrobustcmd*\discipline[1]{\tud at trim@field\@discipline{#1}}
 \newcommand*\@matriculationnumber{}
-\newrobustcmd*\matriculationnumber[1]{%
-  \gdef\@matriculationnumber{#1}\ignorespaces%
-}
+\newrobustcmd*\matriculationnumber[1]{\tud at trim@field\@matriculationnumber{#1}}
 \newcommand*\@matriculationyear{}
-\newrobustcmd*\matriculationyear[1]{\gdef\@matriculationyear{#1}\ignorespaces}
+\newrobustcmd*\matriculationyear[1]{\tud at trim@field\@matriculationyear{#1}}
 \newcommand*\@placeofbirth{}
-\newrobustcmd*\placeofbirth[1]{\gdef\@placeofbirth{#1}\ignorespaces}
+\newrobustcmd*\placeofbirth[1]{\tud at trim@field\@placeofbirth{#1}}
 \newcommand*\@thesis{}
 \newcommand*\@@thesis{}
-\newcommand*\thesis[1]{\tud at thesis@do{thesis}{#1}}
-\renewcommand*\subject[1]{\tud at thesis@do{subject}{#1}}
-\newcommand*\tud at thanks{}
-\newcommand*\tud at thesis@do[2]{%
+\newcommand*\thesis[1]{\tud at thesis@evaluate{thesis}{#1}}
+\CheckCommand*\subject[1]{\gdef\@subject{#1}}
+\newcommand*\@@subject{}
+\renewcommand*\subject[1]{\tud at thesis@evaluate{subject}{#1}}
+\newcommand*\tud at thesis@evaluate[2]{%
   \begingroup%
-    \global\let\tud at thanks\relax%
-    \def\thanks##1{\gdef\tud at thanks{##1}}%
+    \expandafter\tud at trim@field\csname @#1\endcsname{#2}%
+    \let\tud at res@c\@empty%
+    \def\thanks##1{\listgadd\tud at res@c{##1}}%
     \let\footnote\thanks%
     \sbox\z@{#2}%
     \let\thanks\@gobble%
     \let\footnote\@gobble%
-    \tud at lowerstring{\@tempa}{#2}%
-    \ifstr{#1}{thesis}{\protected at xdef\@@thesis{#2}}{}%
-    \protected at edef\@tempa{%
+    \protected at csxdef{@@#1}{\trim at spaces{#2}}%
+    \letcs\tud at res@a{@@#1}%
+    \TUD at set@numkey{thesis}{@tempa}{%
+      {habil}{0},
+      {diss}{1},{doctoral}{1},{phd}{1},
+      {diploma}{2},
+      {master}{3},
+      {bachelor}{4},
+      {student}{5},
+      {evidence}{6},
+      {project}{7},
+      {seminar}{8},
+      {term}{9},
+      {research}{10},
+      {log}{11},
+      {report}{12},
+      {internship}{13}
+    }{\tud at res@a}%
+    \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+      \ifcase\@tempa\relax% habil
+        \def\tud at res@a{\habilitationname}%
+      \or% diss
+        \def\tud at res@a{\dissertationname}%
+      \or% diploma
+        \def\tud at res@a{\diplomathesisname}%
+      \or% master
+        \def\tud at res@a{\masterthesisname}%
+      \or% bachelor
+        \def\tud at res@a{\bachelorthesisname}%
+      \or% student
+        \def\tud at res@a{\studentthesisname}%
+      \or% evidence
+        \def\tud at res@a{\studentresearchname}%
+      \or% project
+        \def\tud at res@a{\projectpapername}%
+      \or% seminar
+        \def\tud at res@a{\seminarpapername}%
+      \or% term
+        \def\tud at res@a{\termpapername}%
+      \or% research
+        \def\tud at res@a{\researchname}%
+      \or% log
+        \def\tud at res@a{\logname}%
+      \or% report
+        \def\tud at res@a{\reportname}%
+      \or% internship
+        \def\tud at res@a{\internshipname}%
+      \else%
+        \FamilyKeyStateUnknownValue%
+      \fi%
+    \fi%
+    \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+      \global\cslet{@@#1}\tud at res@a%
+      \tud at if@strequal{#1}{subject}{%
+        \ifx\@@thesis\@empty\global\let\@@thesis\@@subject\fi%
+      }{}%
+      \def\do##1{\appto\tud at res@a{\thanks{##1}}}%
+      \dolistloop{\tud at res@c}%
+    \fi%
+    \edef\tud at res@a{%
       \endgroup%
-      \def\noexpand\@tempa{\@tempa}%
+      \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+        \noexpand\csgdef{@#1}{\expandonce\tud at res@a}%
+      \fi%
     }%
-  \@tempa%
-  \ifstr{\@tempa}{diss}{\tud at thesis@@do{#1}{\dissertationname}}{%
-  \ifstr{\@tempa}{doctoral}{\tud at thesis@@do{#1}{\dissertationname}}{%
-  \ifstr{\@tempa}{phd}{\tud at thesis@@do{#1}{\dissertationname}}{%
-  \ifstr{\@tempa}{diploma}{\tud at thesis@@do{#1}{\diplomathesisname}}{%
-  \ifstr{\@tempa}{master}{\tud at thesis@@do{#1}{\masterthesisname}}{%
-  \ifstr{\@tempa}{bachelor}{\tud at thesis@@do{#1}{\bachelorthesisname}}{%
-  \ifstr{\@tempa}{student}{\tud at thesis@@do{#1}{\studentthesisname}}{%
-  \ifstr{\@tempa}{evidence}{\tud at thesis@@do{#1}{\studentresearchname}}{%
-  \ifstr{\@tempa}{project}{\tud at thesis@@do{#1}{\projectpapername}}{%
-  \ifstr{\@tempa}{seminar}{\tud at thesis@@do{#1}{\seminarpapername}}{%
-  \ifstr{\@tempa}{term}{\tud at thesis@@do{#1}{\termpapername}}{%
-  \ifstr{\@tempa}{research}{\tud at thesis@@do{#1}{\researchname}}{%
-  \ifstr{\@tempa}{log}{\tud at thesis@@do{#1}{\logname}}{%
-  \ifstr{\@tempa}{report}{\tud at thesis@@do{#1}{\reportname}}{%
-  \ifstr{\@tempa}{internship}{\tud at thesis@@do{#1}{\internshipname}}{%
-    \csdef{@#1}{#2}%
-  }}}}}}}}}}}}}}}%
+  \tud at res@a%
 }
-\newcommand*\tud at thesis@@do[2]{%
-  \ifstr{#1}{subject}{%
-    \ifx\@thesis\@empty\else%
-      \ClassWarning{\TUD at Class@Name}{%
-        Field `thesis' is overwritten by `subject'%
-      }%
-    \fi%
-    \TUD at key@preset{subjectthesis}{true}%
-  }{%
-    \TUD at key@preset{subjectthesis}{false}%
-  }%
-  \ifx\tud at thanks\relax%
-    \gdef\@thesis{#2}%
-  \else%
-    \protected at xdef\@thesis{\noexpand#2\noexpand\thanks{\tud at thanks}}%
-  \fi%
-  \protected at xdef\@@thesis{\trim at spaces{#2}}%
-}
 \newcommand*\@graduation{}
 \newcommand*\@graduationabbreviation{}
 \newcommand*\graduation[2][]{%
-  \gdef\@graduationabbreviation{}%
-  \ifxblank{#1}{}{\gdef\@graduationabbreviation{(#1)}}%
-  \gdef\@graduation{#2}%
+  \tud at trim@field\@graduationabbreviation{#1}%
+  \tud at trim@field\@graduation{#2}%
 }
 \newcommand*\@professor{}
-\newcommand*\professor[1]{\gdef\@professor{#1}}
+\newcommand*\professor[1]{\tud at trim@field\@professor{#1}}
 \newcommand*\@supervisor{}
-\newcommand*\supervisor[1]{\gdef\@supervisor{#1}}
+\newcommand*\supervisor[1]{\tud at trim@field\@supervisor{#1}}
 \newcommand*\@supporter{}
-\newcommand*\supporter[1]{\gdef\@supporter{#1}}
+\newcommand*\supporter[1]{\tud at trim@field\@supporter{#1}}
 \newcommand*\@company{}
-\newcommand*\company[1]{\gdef\@company{#1}}
+\newcommand*\company[1]{\tud at trim@field\@company{#1}}
 \newcommand*\@referee{}
-\newcommand*\referee[1]{\gdef\@referee{#1}}
+\newcommand*\referee[1]{\tud at trim@field\@referee{#1}}
 \newcommand*\@advisor{}
-\newcommand*\advisor[1]{\gdef\@advisor{#1}}
-\newlength\tud at len@signatureskip
-\setlength\tud at len@signatureskip{8ex plus 6ex minus 6ex}
+\newcommand*\advisor[1]{\tud at trim@field\@advisor{#1}}
+\tud at newglue\tud at glue@signaturevskip
+\tud at setglue\tud at glue@signaturevskip{8ex plus 6ex minus 6ex}
 \newcommand*\@confirmationclosing{%
   \tud at date@check%
   \ifx\@date\@empty\else%
@@ -3501,15 +3641,19 @@
     \medskip\noindent%
     \ifx\@place\@empty\else\@place,\nobreakspace\fi\@date%
   \fi%
-  \vskip\tud at len@signatureskip\noindent%
+  \vskip\tud at glue@signaturevskip\noindent%
   \begingroup%
     \let\and\hfil%
     \@@author\hfil%
   \endgroup%
 }
-\newcommand*\confirmationclosing[1]{\gdef\@confirmationclosing{#1}}
+\newcommand*\confirmationclosing[1]{\tud at trim@field\@confirmationclosing{#1}}
 \newcommand*\@place{Dresden}
-\newcommand*\place[1]{\gdef\@place{#1}}
+\newcommand*\place[1]{\tud at trim@field\@place{#1}}
+\CheckCommand*\subtitle[1]{\gdef\@subtitle{#1}}
+\renewcommand*\subtitle[1]{\tud at trim@field\@subtitle{#1}}
+\CheckCommand\publishers[1]{\gdef\@publishers{#1}}%
+\renewcommand*\publishers[1]{\tud at trim@field\@publishers{#1}}
 \providecommand*\publisher[1]{\publishers{#1}}
 \TUD at UnwindPackage{isodate}{%
   \@ifpackageloaded{datetime2}{%
@@ -3522,9 +3666,10 @@
   \ifx\today#2\relax%
     \gdef#1{#2}%
   \else%
-    \ifxblank{#2}%
-      {\gdef#1{}}%
-      {\gdef#1{\printdate{#2}}}%
+    \tud at trim@field#1{#2}%
+    \tud at if@strblank{#1}%
+      {}%
+      {\xdef#1{\noexpand\printdate{\expandonce#1}}}%
   \fi%
 }
 \newcommand*\tud at date@check{%
@@ -3570,12 +3715,14 @@
 }
 \newcommand*\tud at date@print{%
   \ifx\@date\@empty\else%
+    \trim at spaces@in\@beforedate%
     \ifx\@beforedate\@empty\else%
-      \expandafter\trim at spaces@noexp\expandafter{\@beforedate}\nobreakspace%
+      \@beforedate\nobreakspace%
     \fi%
     \@date%
+    \trim at spaces@in\@afterdate%
     \ifx\@afterdate\@empty\else%
-      \nobreakspace\expandafter\trim at spaces@noexp\expandafter{\@afterdate}%
+      \nobreakspace\@afterdate%
     \fi%
   \fi%
 }
@@ -3582,14 +3729,29 @@
 \newcommand*\@defensedate{}
 \newcommand*\defensedate[1]{\tud at printdate{\@defensedate}{#1}}
 \newcommand*\@dateofbirth{}
-\newrobustcmd*\dateofbirth[1]{%
-  \tud at printdate{\@dateofbirth}{#1}\ignorespaces%
+\newrobustcmd*\dateofbirth[1]{\tud at printdate{\@dateofbirth}{#1}}
+\newcommand*\tud at if@field at unset[1]{%
+  \begingroup%
+    \edef\tud at res@a{%
+      \def\noexpand\tud at res@a####1\string\@latex@####2\noexpand\@nil{%
+        \noexpand\IfArgIsEmpty{####2}%
+        \unexpanded{\@tud at res@swafalse\@tud at res@swatrue}%
+      }%
+      \noexpand\tud at res@a%
+        \expandafter\strip at prefix\meaning#1%
+        \string\@latex@\noexpand\@nil%
+    }%
+    \tud at res@a%
+    \if at tud@res at swa%
+      \aftergroup\@firstoftwo%
+    \else%
+      \aftergroup\@secondoftwo%
+    \fi%
+  \endgroup%
 }
 \newcommand*\tud at multiple@@split{}
 \newcommand*\tud at multiple@split[1]{%
-  \expandafter\ifpatchable\expandafter{\csname#1\endcsname}{%
-    \@latex at warning@no at line%
-  }{%
+  \expandafter\tud at if@field at unset\expandafter{\csname #1\endcsname}{%
     \csuse{#1}\csgdef{#1}{}%
   }{}%
   \def\tud at multiple@@split##1\and##2\relax{%
@@ -3599,20 +3761,27 @@
     \let\and\relax%
     \let\newline\@empty%
     \let\\\@empty%
-    \edef\@tempa{\csname#1\endcsname\and}%
+    \edef\@tempa{\csname #1\endcsname\and}%
   \expandafter\endgroup%
   \expandafter\tud at multiple@@split\@tempa\relax%
 }
 \newcommand*\tud at multiple@@@split[2]{%
-  \ifx\relax#1\relax%
+  \IfArgIsEmpty{#1}{%
     \let\@tempb\relax%
-  \else%
+  }{%
     \def\@tempb{#2\tud at multiple@@split#1\relax}%
-  \fi%
+  }%
   \@tempb%
 }
 \newcommand*\tud at multiple@fields at store[2]{%
-  \def\@tempa##1{\ifcsdef{@##1}{\tud at cs@store{@##1}}{}}%
+  \def\@tempa##1{%
+    \ifcsdef{@##1}{\tud at cs@store{@##1}}{}%
+    \ifcsdef{##1}{%
+      \tud at cs@store{##1}%
+      \expandafter\xapptocmd\csname ##1\endcsname{\ignorespaces}%
+        {}{\tud at patch@wrn##1}%
+    }{}%
+  }%
   \letcs\@tempb{tud at split#1 at list}%
   \let\and\relax%
   \expandafter\forcsvlist\expandafter\@tempa\expandafter{\@tempb}%
@@ -3628,6 +3797,7 @@
       \tud at cs@restore{@##1}%
       \global\csletcs{@##1}{@##1}%
     }{}%
+    \ifcsdef{##1}{\tud at cs@restore{##1}}{}%
   }%
   \letcs\@tempb{tud at split#1 at list}%
   \let\and\relax%
@@ -3636,9 +3806,9 @@
 \newcommand*\tud at multiple@fields at preset[3]{%
   \def\@tempa##1{%
     \edef\@tempc{\csuse{##1}}%
-    \ifstr{#2}{*}{%
+    \if\detokenize{#2*}\relax%
       \csdef{@##1}{}%
-    }{%
+    \else%
       \begingroup%
         \protected at expandtwoargs\in@{\@tempc}{\csuse{#1}}%
         \ifin@%
@@ -3645,7 +3815,7 @@
           \ifcsvoid{@##1}{\@tempc{#2}}{}%
         \fi%
       \endgroup%
-    }%
+    \fi%
   }%
   \letcs\@tempb{tud at split#1 at list}%
   \let\and\relax%
@@ -3663,7 +3833,7 @@
   matriculationnumber,studentid,matriculationid,%
   placeofbirth,birthplace,dateofbirth,birthday,%
 }
-%%% From File: tudscr-localization.dtx
+%%%% From File: tudscr-localization.dtx (no git version info was found)
 \newcommand*\tud at localization@define[1]{%
   \providecommand*#1{%
     \ClassError{\TUD at Class@Name}{%
@@ -3673,7 +3843,7 @@
       languages german and english as well as its dialects. You\MessageBreak%
       must define single patterns by yourself, e.g.:\MessageBreak%
       `\string\providecaptionname{\languagename}\string#1{<text>}'\MessageBreak%
-      You can send your definitions to \tudscrmail\space in\MessageBreak%
+      You can send your definitions to \TUDScriptContact\space in\MessageBreak%
       order to implement support for additional languages.%
     }%
   }%
@@ -3705,6 +3875,7 @@
 \tud at localization@define{\disciplinename}
 \tud at localization@define{\listingname}
 \tud at localization@define{\listlistingname}
+\tud at localization@define{\habilitationname}
 \tud at localization@define{\dissertationname}
 \tud at localization@define{\diplomathesisname}
 \tud at localization@define{\masterthesisname}
@@ -3830,6 +4001,7 @@
 \tud at localization@german{\disciplinename}{Studienrichtung}
 \tud at localization@german{\listingname}{Quelltext}
 \tud at localization@german{\listlistingname}{Quelltextverzeichnis}
+\tud at localization@german{\habilitationname}{Habilitation}
 \tud at localization@german{\dissertationname}{Dissertation}
 \tud at localization@german{\diplomathesisname}{Diplomarbeit}
 \tud at localization@german{\masterthesisname}{Master-Arbeit}
@@ -3936,6 +4108,7 @@
 \tud at localization@english{\disciplinename}{Discipline}
 \tud at localization@english{\listingname}{Listing}
 \tud at localization@english{\listlistingname}{List of Listings}
+\tud at localization@english{\habilitationname}{Habilitation}
 \tud at localization@english{\dissertationname}{Dissertation}
 \tud at localization@english{\diplomathesisname}{Diploma Thesis}
 \tud at localization@english{\masterthesisname}{Master Thesis}
@@ -3959,8 +4132,8 @@
   \tud at localization@english{\@commaswap}{\,}%
   \tud at localization@english{\@dotswap}{.}%
 }
-%%% From File: tudscr-area.dtx
-\newif\if at tud@x at crop@center
+%%%% From File: tudscr-area.dtx (no git version info was found)
+\tud at newif\if at tud@x at crop@center
 \AfterPackage{crop}{%
   \CheckCommand*\CROP at center{%
     \voffset\stockheight
@@ -3970,73 +4143,73 @@
     \advance\hoffset-\paperwidth
     \hoffset.5\hoffset
   }%
-  \pretocmd{\CROP at center}{%
+  \pretocmd\CROP at center{%
     \@tud at x@crop at centertrue%
   }{}{\tud at patch@wrn{CROP at center}}%
 }
-\newif\if at tud@x at standalone@crop
+\tud at newif\if at tud@x at standalone@crop
 \AfterClass*{standalone}{\let\if at tud@x at standalone@crop\ifsa at crop}
-\newlength\tud at len@widemargin
-\newlength\tud at len@slimmargin
-\newlength\tud at len@both
-\newlength\tud at len@topmargin
-\newlength\tud at len@barheight
-\newlength\tud at len@headsep
-\newlength\tud at len@footsep
-\newlength\tud at len@logox
-\newlength\tud at len@logoy
-\newlength\tud at len@logowidth
-\newlength\tud at len@line
-\newlength\tud at len@heavyline
-\newlength\tud at len@thinline
-\newlength\tud at len@areaheadvskip
-\newlength\tud at len@areadiff
-\newlength\tud at len@areavskip
-\tud at if@v at lower{2.03}{\newlength\tud at len@ddcdiff}{}
+\tud at newdim\tud at dim@widemargin
+\tud at newdim\tud at dim@slimmargin
+\tud at newdim\tud at dim@bothmargin
+\tud at newdim\tud at dim@topmargin
+\tud at newdim\tud at dim@barheight
+\tud at newdim\tud at dim@headsep
+\tud at newdim\tud at dim@footsep
+\tud at newdim\tud at dim@logox
+\tud at newdim\tud at dim@logoy
+\tud at newdim\tud at dim@logowidth
+\tud at newdim\tud at dim@line
+\tud at newdim\tud at dim@heavyline
+\tud at newdim\tud at dim@thinline
+\tud at newdim\tud at dim@areaheadvskip
+\tud at newdim\tud at dim@areadiff
+\tud at newdim\tud at dim@areavskip
+\tud at if@v at lower{2.03}{\tud at newdim\tud at dim@ddcdiff}{}
 \newcommand*\tud at head@fontsize{}
-\newif\if at tud@cdgeometry at adjust
-\newlength\tud at len@layoutwidth
-\newlength\tud at len@layoutheight
-\newlength\tud at len@layouthoffset
-\newlength\tud at len@layoutvoffset
+\tud at newif\if at tud@cdgeometry at adjust
+\tud at newdim\tud at dim@layoutwidth
+\tud at newdim\tud at dim@layoutheight
+\tud at newdim\tud at dim@layouthoffset
+\tud at newdim\tud at dim@layoutvoffset
 \newcommand*\tud at cdgeometry@set{%
   \tud at cdgeometry@assignlayout%
   \tud at if@v at lower{2.05}{%
-    \ifdim\tud at len@layoutheight<\dimexpr105mm+1.5mm\relax%
+    \ifdim\tud at dim@layoutheight<\dimexpr105mm+1.5mm\relax%
       \def\@tempa{0}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr148mm+1.5mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr148mm+1.5mm\relax%
       \def\@tempa{1}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr229mm+2mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr229mm+2mm\relax%
       \def\@tempa{2}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr297mm+2mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr297mm+2mm\relax%
       \def\@tempa{3}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr420mm+2mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr420mm+2mm\relax%
       \def\@tempa{4}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr594mm+2mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr594mm+2mm\relax%
       \def\@tempa{5}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr841mm+3mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr841mm+3mm\relax%
       \def\@tempa{6}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr1189mm+3mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr1189mm+3mm\relax%
       \def\@tempa{7}%
     \else%
       \def\@tempa{8}%
     \fi\fi\fi\fi\fi\fi\fi\fi%
   }{%
-    \ifdim\tud at len@layoutheight<\dimexpr125mm+1.5mm\relax%
+    \ifdim\tud at dim@layoutheight<\dimexpr125mm+1.5mm\relax%
       \def\@tempa{0}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr176mm+2mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr176mm+2mm\relax%
       \def\@tempa{1}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr250mm+2mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr250mm+2mm\relax%
       \def\@tempa{2}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr353mm+2mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr353mm+2mm\relax%
       \def\@tempa{3}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr500mm+2mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr500mm+2mm\relax%
       \def\@tempa{4}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr707mm+3mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr707mm+3mm\relax%
       \def\@tempa{5}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr1000mm+3mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr1000mm+3mm\relax%
       \def\@tempa{6}%
-    \else\ifdim\tud at len@layoutheight<\dimexpr1414mm+3mm\relax%
+    \else\ifdim\tud at dim@layoutheight<\dimexpr1414mm+3mm\relax%
       \def\@tempa{7}%
     \else%
       \def\@tempa{8}%
@@ -4059,58 +4232,58 @@
         calculate a proper type area%
       }%
     \fi%
-    \tud at divide\@tempa{\tud at len@layoutheight}{148mm}%
-    \setlength\tud at len@widemargin{15mm}%
-    \setlength\tud at len@widemargin{\@tempa\tud at len@widemargin}%
-    \setlength\tud at len@heavyline{0.5pt}%
-    \setlength\tud at len@heavyline{\@tempa\tud at len@heavyline}%
-    \setlength\tud at len@thinline{0.25pt}%
-    \setlength\tud at len@thinline{\@tempa\tud at len@thinline}%
-    \setlength\@tempdima{4.5pt}%
-    \setlength\@tempdima{\@tempa\@tempdima}%
+    \tud at divide\@tempa{\tud at dim@layoutheight}{148mm}%
+    \tud at setdim\tud at dim@widemargin{15mm}%
+    \tud at setdim\tud at dim@widemargin{\@tempa\tud at dim@widemargin}%
+    \tud at setdim\tud at dim@heavyline{0.5pt}%
+    \tud at setdim\tud at dim@heavyline{\@tempa\tud at dim@heavyline}%
+    \tud at setdim\tud at dim@thinline{0.25pt}%
+    \tud at setdim\tud at dim@thinline{\@tempa\tud at dim@thinline}%
+    \tud at setdim\@tempdima{4.5pt}%
+    \tud at setdim\@tempdima{\@tempa\@tempdima}%
     \edef\tud at head@fontsize{\strip at pt\@tempdima}%
   \or% <=A6/B6
-    \setlength\tud at len@widemargin{15mm}%
-    \setlength\tud at len@heavyline{0.5pt}%
-    \setlength\tud at len@thinline{0.25pt}%
+    \tud at setdim\tud at dim@widemargin{15mm}%
+    \tud at setdim\tud at dim@heavyline{0.5pt}%
+    \tud at setdim\tud at dim@thinline{0.25pt}%
     \renewcommand*\tud at head@fontsize{4.5}%
   \or% <=A5/B5
     \ifnum\tud at cdgeometry@calc at num=\z@\relax% restricted
       \@tud at cdgeometry@adjusttrue%
-      \setlength\tud at len@widemargin{30mm}%
-      \setlength\tud at len@heavyline{1pt}%
-      \setlength\tud at len@thinline{0.5pt}%
+      \tud at setdim\tud at dim@widemargin{30mm}%
+      \tud at setdim\tud at dim@heavyline{1pt}%
+      \tud at setdim\tud at dim@thinline{0.5pt}%
       \renewcommand*\tud at head@fontsize{9}%
     \else%
-      \setlength\tud at len@widemargin{21.213203mm}%
-      \setlength\tud at len@heavyline{0.707107pt}%
-      \setlength\tud at len@thinline{0.353553pt}%
+      \tud at setdim\tud at dim@widemargin{21.213203mm}%
+      \tud at setdim\tud at dim@heavyline{0.707107pt}%
+      \tud at setdim\tud at dim@thinline{0.353553pt}%
       \renewcommand*\tud at head@fontsize{6.363961}%
     \fi%
   \or% <=A4/B4
-    \setlength\tud at len@widemargin{30mm}%
-    \setlength\tud at len@heavyline{1pt}%
-    \setlength\tud at len@thinline{0.5pt}%
+    \tud at setdim\tud at dim@widemargin{30mm}%
+    \tud at setdim\tud at dim@heavyline{1pt}%
+    \tud at setdim\tud at dim@thinline{0.5pt}%
     \renewcommand*\tud at head@fontsize{9}%
   \or% <=A3/B3
-    \setlength\tud at len@widemargin{42.426407mm}%
-    \setlength\tud at len@heavyline{1.414214pt}%
-    \setlength\tud at len@thinline{0.707107pt}%
+    \tud at setdim\tud at dim@widemargin{42.426407mm}%
+    \tud at setdim\tud at dim@heavyline{1.414214pt}%
+    \tud at setdim\tud at dim@thinline{0.707107pt}%
     \renewcommand*\tud at head@fontsize{12.727922}%
   \or% <=A2/B2
-    \setlength\tud at len@widemargin{60mm}%

@@ Diff output truncated at 1234567 characters. @@


More information about the tex-live-commits mailing list.