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]{%
-    \