% \iffalse meta-comment
%/GitFileInfo=tudscr-comp.dtx
%
%  TUD-Script -- Corporate Design of Technische Universität Dresden
% ----------------------------------------------------------------------------
%
%  Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2022
%
% ----------------------------------------------------------------------------
%
%  This work may be distributed and/or modified under the conditions of the
%  LaTeX Project Public License, either version 1.3c of this license or
%  any later version. The latest version of this license is in
%    http://www.latex-project.org/lppl.txt
%  and version 1.3c or later is part of all distributions of
%  LaTeX version 2008-05-04 or later.
%
%  This work has the LPPL maintenance status "maintained".
%
%  The current maintainer and author of this work is Falk Hanisch.
%
% ----------------------------------------------------------------------------
%
% \fi
%
% \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-comp.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
%
% \selectlanguage{ngerman}
%
% \changes{v2.02}{2014/09/30}{\pkg{tudscrfonts}: Nutzung alter TUD-Klassen 
%   mit neuen Schriftfamilien ermöglicht}^^A
% \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 
% der Benutzerschnittstelle in \TUDScript geändert. Dabei wird versucht, die
% Kompatibilität zu früheren Versionen so weit es geht aufrecht zu erhalten und
% veraltete Optionen und Befehle zumindest weiter bereitzustellen, wobei bei
% der Verwendung dieser der Anwender darüber informiert wird. Die Vorkehrungen 
% betreffen sowohl die Klassen selber als auch die zusätzlich bereitgestellten 
% Pakete.
%
%    \begin{macrocode}
%<*package&identify>
%<comp>\ProvidesPackage{tudscrcomp}%
%<fixfonts>\ProvidesPackage{fix-tudscrfonts}%
[%
%!TUD@Version
%<comp>  package
%<fixfonts>  package for font fixes
  (compatibility for old tud(scr) classes)%
]
%<comp>\TUD@Class@Check{tudscrcomp}
%</package&identify>
%    \end{macrocode}
%
% \iffalse
%<*class|package&fonts>
%<*option>
% \fi
%
% \begin{macro}{\TUD@deprecated@key}
% \changes{v2.03}{2015/02/05}{neu}^^A
% \begin{macro}{\TUD@deprecated@cs}
% \changes{v2.03}{2015/02/05}{neu}^^A
% \begin{macro}{\TUD@deprecated@@cs}
% \changes{v2.06}{2018/08/07}{neu}^^A
% \begin{macro}{\TUD@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
% lediglich die empfohlene Option ausgegeben. Das Ausführen dieser wird später
% definiert.
%    \begin{macrocode}
\newcommand*\TUD@deprecated@key[2]{%
%<*class>
  \ClassWarning{\TUD@Class@Name}%
%</class>
%<*package&fonts>
  \PackageWarning{tudscrfonts}%
%</package&fonts>
  {%
    The key `#1' is deprecated. It's\MessageBreak%
    recommended to use `#2'\MessageBreak%
    instead%
  }%
  \TUDoptions{#2}%
}
%    \end{macrocode}
% Bei alten Befehlen wird nach der Warnung die Definition des neuen Befehls auf 
% den alten überschrieben.
%    \begin{macrocode}
\newcommand*\TUD@deprecated@cs[2]{%
  \begingroup%
    \edef\tud@res@a{%
      \endgroup%
      \noexpand\AfterEndPreamble{%
        \noexpand\TUD@deprecated@@cs{#1}{#2}%
      }%
    }%
  \tud@res@a%
}
\newcommand*\TUD@deprecated@@cs[2]{%
  \ifcsundef{#1}{%
    \begingroup%
      \def\tud@res@a{%
        The command `\@backslashchar#1' is deprecated. \MessageBreak%
      }%
      \def\tud@res@b##1@##2\@nil{%
        \IfArgIsEmpty{##2}{%
          \appto\tud@res@a{%
            You should use `\@backslashchar#2' instead%
          }%
        }{%
          \appto\tud@res@a{%
            You should not use this command. It is substituted\MessageBreak%
            with `\@backslashchar#2' internally%
          }%
        }%
      }%
      \tud@res@b#2@\@nil%
      \edef\tud@res@c{%
        \endgroup%
        \noexpand\newrobustcmd\csname #1\endcsname{%
%<*class>
          \noexpand\ClassWarning{\noexpand\TUD@Class@Name}%
%</class>
%<*package&fonts>
          \noexpand\PackageWarning{tudscrfonts}%
%</package&fonts>
          {\tud@res@a}%
          \noexpand\csletcs{#1}{#2}%
          \noexpand\csuse{#2}%
        }%
      }%
    \tud@res@c%
  }{}%
}
%<*class>
\newcommand*\TUD@deprecated@length[1]{%
  \ifdim#1<\maxdimen\relax%
    \begingroup%
      \tud@strlength\tud@res@a{#1}%
      \edef\tud@res@b{\expandafter\@gobble\string#1}%
      \ClassWarning{\TUD@Class@Name}{%
        Setting length `\string#1' is deprecated. \MessageBreak%
        The option `\tud@res@b=\tud@res@a'\MessageBreak%
        is used instead%
      }%
      \edef\tud@res@a{%
        \endgroup%
        \noexpand\TUDoption{\tud@res@b}{\tud@res@a}%
        \global\noexpand\csletcs{tud@\tud@res@b @dim}{tud@\tud@res@b @dim}%
      }%
    \tud@res@a%
    \global\setlength#1{\maxdimen}%
  \fi%
}
%</class>
%    \end{macrocode}
% \end{macro}^^A \TUD@deprecated@length
% \end{macro}^^A \TUD@deprecated@@cs
% \end{macro}^^A \TUD@deprecated@cs
% \end{macro}^^A \TUD@deprecated@key
%
% \begin{option}{tudscrver}
% \changes{v2.02}{2014/08/22}{neu}^^A
% \begin{macro}{\tud@v@comp}
% \changes{v2.02}{2014/08/22}{neu}^^A
% In einigen Fällen sind Änderungen mit früheren Versionen nicht kompatibel 
% oder unerwünscht, weil diese beispielsweise das Ausgabeergebnis verändern.
% Standardmäßig werden die Klassen in der aktuellen Version geladen. Mit 
% \opt{tudscrver}|=|\val{\meta{Version}} kann auf das Verhalten einer früheren
% Version geschaltet werden. Die eingestellte Kompatibilität wird als Zahl in 
% \cs{tud@v@comp} gespeichert. In den Makros |\tud@v@|\meta{Version} werden die
% zugehörigen Nummern gespeichert.
%    \begin{macrocode}
\newcommand*\tud@v@comp{\tud@v@last}
%    \end{macrocode}
% Damit dieser Schlüssel gezielt als erstes bei der Abarbeitung der Optionen
% aufgerufen werden kann, wird diesem ein spezielles Mitglied zugeteilt.
%    \begin{macrocode}
\TUD@key[.comp]{tudscrver}[last]{%
  \tud@v@get\@tempa{#1}%
  \ifcsundef{tud@v@\@tempa}{%
%<*class>
    \ClassWarningNoLine{\TUD@Class@Name}%
%</class>
%<*package&fonts>
    \PackageWarningNoLine{tudscrfonts}%
%</package&fonts>
    {%
      You have set option `tudscrver' to `\@tempa', but\MessageBreak%
      this value is not supported. Because of this,\MessageBreak%
      `tudscrver=first' was set%
    }%
    \renewcommand*\tud@v@comp{0}%
  }{%
%<*class>
    \ClassInfoNoLine{\TUD@Class@Name}%
%</class>
%<*package&fonts>
    \PackageInfoNoLine{tudscrfonts}%
%</package&fonts>
    {%
      Switching compatibility level to `v\@tempa'%
    }%
    \edef\tud@v@comp{\csuse{tud@v@\@tempa}}%
  }%
  \FamilyKeyStateProcessed%
}
%    \end{macrocode}
% Da die Schlüssel global für \emph{jedes} Mitglied ausgewertet werden, muss 
% auch ein Schlüssel für das Standardmitglied definiert werden, der einfach 
% nichts macht.
%    \begin{macrocode}
\TUD@key{tudscrver}{\FamilyKeyStateProcessed}%
%    \end{macrocode}
% Eine zusätzliche Bedingung gibt es noch: Die Kompatibilität kann nur beim
% Laden der Klasse bzw. des Paketes gesetzt werden, danach nicht mehr.
%    \begin{macrocode}
%<*class>
\AtEndOfClass%
%</class>
%<*package>
\AtEndOfPackage%
%</package>
{%
  \RelaxFamilyKey[.comp]{TUD}{tudscrver}%
  \TUD@key@toolate{tudscrver}%
}
%    \end{macrocode}
% \end{macro}^^A \tud@v@comp
% \end{option}^^A tudscrver
% \ToDo{Für jede neue Version der entsprechende Befehl}[Release]
% \begin{macro}{\tud@v@first}
% \changes{v2.02}{2014/08/22}{neu}^^A
% \begin{macro}{\tud@v@2.00}
% \changes{v2.02}{2014/08/22}{neu}^^A
% \begin{macro}{\tud@v@2.01}
% \changes{v2.02}{2014/08/22}{neu}^^A
% \begin{macro}{\tud@v@2.02}
% \changes{v2.02}{2014/08/22}{neu}^^A
% \begin{macro}{\tud@v@2.03}
% \changes{v2.03}{2015/01/13}{neu}^^A
% \begin{macro}{\tud@v@2.04}
% \changes{v2.04}{2015/02/18}{neu}^^A
% \begin{macro}{\tud@v@2.05}
% \changes{v2.05}{2015/07/03}{neu}^^A
% \begin{macro}{\tud@v@2.06}
% \changes{v2.06}{2018/06/26}{neu}^^A
% \begin{macro}{\tud@v@last}
% \changes{v2.02}{2014/08/22}{neu}^^A
% \changes{v2.03}{2015/01/13}{angepasst}^^A
% \changes{v2.04}{2015/02/18}{angepasst}^^A
% \changes{v2.05}{2015/07/03}{angepasst}^^A
% \changes{v2.06}{2018/06/26}{angepasst}^^A
% Die numerischen Werte zu den einzelnen Versionen.
%    \begin{macrocode}
\csdef{tud@v@first}{0}
\csdef{tud@v@2.00}{0}
\csdef{tud@v@2.01}{0}
\csdef{tud@v@2.02}{0}
\csdef{tud@v@2.03}{1}
\csdef{tud@v@2.04}{2}
\csdef{tud@v@2.05}{3}
\csdef{tud@v@2.06}{4}
\csdef{tud@v@last}{4}
%    \end{macrocode}
% \end{macro}^^A \tud@v@last
% \end{macro}^^A \tud@v@2.06
% \end{macro}^^A \tud@v@2.05
% \end{macro}^^A \tud@v@2.04
% \end{macro}^^A \tud@v@2.03
% \end{macro}^^A \tud@v@2.02
% \end{macro}^^A \tud@v@2.01
% \end{macro}^^A \tud@v@2.00
% \end{macro}^^A \tud@v@first
% \begin{macro}{\tud@v@get}
% \changes{v2.05}{2016/05/31}{neu}^^A
% Mit \cs{tud@v@get} wird die angegebene Versionsnummer in eine Normalform 
% gebracht und an das Makro im ersten Argument übergeben. Damit spielt es keine 
% Rolle, ob die im zweiten Argument übergebene Versionsnummer mit oder ohne 
% führendes \enquote*{\texttt{v}} angegeben wird.
%    \begin{macrocode}
\newcommand*\tud@v@get[2]{%
  \begingroup%
    \def\@tempa{%
      \kernel@ifnextchar v%
        {\@tempb}%
        {\@tempb v}%
    }%
    \def\@tempb v##1\@nil{\def\@tempc{##1}}%
    \@tempa #2\@nil%
    \edef\tud@reserved{%
      \endgroup%
      \unexpanded{\def#1}{\@tempc}%
    }%
  \tud@reserved%
}
%    \end{macrocode}
% \end{macro}^^A \tud@v@get
% \begin{macro}{\tud@if@v@lower}
% \changes{v2.03}{2015/01/13}{neu}^^A
% Mit diesem Befehl können abhängig von der gegebenen Kompatibilitätsversion in 
% den Klassen unterschiedliche Einstellungen vorgenommen werden.
%    \begin{macrocode}
\newcommand*\tud@if@v@lower[1]{%
  \begingroup%
    \tud@v@get\@tempa{#1}%
    \ifcsundef{tud@v@\@tempa}{%
      \def\tud@reserved{%
%<*class>
        \ClassWarningNoLine{\TUD@Class@Name}%
%</class>
%<*package&fonts>
        \PackageWarningNoLine{tudscrfonts}%
%</package&fonts>
        {%
          Erroneous usage of `\string\tud@if@v@lower'. \MessageBreak%
          There's no defined macro `\string\tud@v@\@tempa'%
        }%
        \endgroup\@firstoftwo%
      }%
    }{%
      \ifnum\tud@v@comp<\csuse{tud@v@\@tempa}\relax%
        \def\tud@reserved{\endgroup\@firstoftwo}%
      \else%
        \def\tud@reserved{\endgroup\@secondoftwo}%
      \fi%
    }%
  \tud@reserved%
}
%    \end{macrocode}
% \end{macro}^^A \tud@if@v@lower
%
% \subsection{Veraltete Optionen}
%
% \begin{option}{cdfonts}
% \begin{option}{tudfonts}
% Diese Optionen werden nur aus Gründen der Kompatibilität zu v1.0 definiert.
%    \begin{macrocode}
\TUD@key{cdfonts}[true]{%
  \TUD@set@ifkey{cdfonts}{@tempswa}{#1}%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
    \TUD@deprecated@key{cdfonts=#1}{cdfont=#1}%
  \fi%
}
\TUD@key{tudfonts}[true]{%
  \TUD@set@ifkey{tudfonts}{@tempswa}{#1}%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
    \TUD@deprecated@key{tudfonts=#1}{cdfont=#1}%
  \fi%
}
%    \end{macrocode}
% \end{option}^^A tudfonts
% \end{option}^^A cdfonts
% \begin{option}{heavyfont}
% Hiermit lässt sich die Schriftstärke im Dokument beeinflussen.
%    \begin{macrocode}
\TUD@key{heavyfont}[true]{%
  \TUD@set@ifkey{heavyfont}{@tempswa}{#1}%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
    \if@tempswa%
      \TUD@deprecated@key{heavyfont}{cdfont=heavy}%
    \else%
      \TUD@deprecated@key{heavyfont=#1}{cdfont=true}%
    \fi%
  \fi%
}
%    \end{macrocode}
% \end{option}^^A heavyfont
% \begin{option}{sansmath}
% \begin{option}{serifmath}
% Mit dieser Option kann die genutzte Standardschrift für den Mathematiksatz
% für das gesamte Dokument umgestellt werden. Die \cls{tudbook}-Klasse hat 
% neben der Option \opt{sansmath} außerdem den zusätzlichen Schlüssel
% \opt{serifmath} definiert, welcher aus Gründen der Kompatibilität hier
% ebenfalls vorgehalten wird.
%    \begin{macrocode}
\TUD@key{sansmath}[true]{%
  \TUD@set@ifkey{sansmath}{@tempswa}{#1}%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
    \if@tempswa%
      \TUD@deprecated@key{sansmath}{cdmath=true}%
    \else%
      \TUD@deprecated@key{sansmath=#1}{cdmath=false}%
    \fi%
  \fi%
}
\TUD@key{serifmath}[true]{%
  \TUD@set@ifkey{serifmath}{@tempswa}{#1}%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
    \if@tempswa%
      \TUD@deprecated@key{serifmath}{cdmath=false}%
    \else%
      \TUD@deprecated@key{serifmath=#1}{cdmath=true}%
    \fi%
  \fi%
}
%    \end{macrocode}
% \end{option}^^A serifmath
% \end{option}^^A sansmath
% \begin{option}{din}
% \begin{option}{nodin}
% \begin{option}{noDIN}
% \changes{v2.04}{2015/04/22}{neu}^^A
% Diese Optionen dienten zur Auswahl, ob die Schrift \DIN für die Überschriften
% verwendet werden soll.
%    \begin{macrocode}
\TUD@key{din}[true]{%
  \TUD@set@ifkey{din}{@tempswa}{#1}%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
    \if@tempswa%
      \TUD@deprecated@key{din}{cdoldfont=din}%
    \else%
      \TUD@deprecated@key{din=#1}{cdoldfont=nodin}%
    \fi%
  \fi%
}
\TUD@key{nodin}[true]{%
  \TUD@set@ifkey{nodin}{@tempswa}{#1}%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
    \if@tempswa%
      \TUD@deprecated@key{nodin}{cdoldfont=nodin}%
    \else%
      \TUD@deprecated@key{nodin=#1}{cdoldfont=din}%
    \fi%
  \fi%
}
\TUD@key{noDIN}[true]{%
  \TUD@set@ifkey{noDIN}{@tempswa}{#1}%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
    \if@tempswa%
      \TUD@deprecated@key{noDIN}{cdoldfont=nodin}%
    \else%
      \TUD@deprecated@key{noDIN=#1}{cdoldfont=din}%
    \fi%
  \fi%
}
%    \end{macrocode}
% \end{option}^^A noDIN
% \end{option}^^A nodin
% \end{option}^^A din
%
% \iffalse
%<*class>
% \fi
%
% \begin{option}{geometry}
% \changes{v2.02}{2014/07/08}{neu}^^A
% Umbenennung der zu allgemein bezeichneten Option, um zukünftig potenziellen 
% Konflikten mit \KOMAScript{} aus dem Weg zu gehen.
%    \begin{macrocode}
\TUD@key{geometry}[true]{\TUD@deprecated@key{geometry=#1}{cdgeometry=#1}}
%    \end{macrocode}
% \end{option}^^A geometry
% \begin{option}{barfont}
% \changes{v2.02}{2014/07/08}{neu}^^A
% Mit dieser Option kann die Schrift des \CDs und deren Schriftstärke in der
% TUD-Kopfzeile unabhängig von der gewählten Schriftart für den Fließtext 
% aktiviert werden.
%    \begin{macrocode}
\TUD@key{barfont}[true]{%
  \TUD@set@numkey{barfont}{@tempa}{%
    \TUD@bool@numkey,%
    {nocd}{0},{nocdfont}{0},{nocdfonts}{0},{notudfonts}{0},%
    {cd}{1},{cdfont}{1},{cdfonts}{1},{tudfonts}{1},%
    {light}{1},{lightfont}{1},{lite}{1},{litefont}{1},{noheavyfont}{1},%
    {heavy}{2},{heavyfont}{2},{bold}{2},{boldfont}{2}%
  }{#1}%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
    \ifcase\@tempa\relax% false
      \TUD@deprecated@key{barfont=#1}{cdhead=false}%
    \or% true
      \TUD@deprecated@key{barfont=#1}{cdhead=true}%
    \or% heavy
      \TUD@deprecated@key{barfont=#1}{cdhead=heavy}%
    \fi%
  \fi%
}
%    \end{macrocode}
% \end{option}^^A barfont
% \begin{option}{widehead}
% Der Schalter dient zur Steuerung der Breite des Querbalkens im Kopf der
% \env{tudpage}-Seite. Entweder der Querbalken liegt im Satzspiegel oder
% aber über die komplette Papierbreite.
%    \begin{macrocode}
\TUD@key{widehead}[true]{%
  \TUD@set@ifkey{widehead}{@tempswa}{#1}%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
    \if@tempswa%
      \TUD@deprecated@key{widehead}{cdhead=paperwidth}%
    \else%
      \TUD@deprecated@key{widehead=#1}{cdhead=textwidth}%
    \fi%
  \fi%
}
%    \end{macrocode}
% \end{option}^^A widehead
% \begin{option}{tudfoot}
% Diese Option wird nur aus Gründen der Kompatibilität zu v1.0 definiert.
%    \begin{macrocode}
\TUD@key{tudfoot}[true]{%
  \TUD@set@ifkey{tudfoot}{@tempswa}{#1}%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
    \if@tempswa%
      \TUD@deprecated@key{tudfoot}{cdfoot=true}%
    \else%
      \TUD@deprecated@key{tudfoot=#1}{cdfoot=false}%
    \fi%
  \fi%
}
%    \end{macrocode}
% \end{option}^^A tudfoot
% \begin{option}{color}
% \begin{option}{colour}
% Die alte \cls{tudbook}-Klasse hat die Option \opt{color} definiert, mit
% welcher ein Umschalten auf farbige Titel- und Kapitelseiten möglich ist. Aus
% Kompatibilitätsgründen wird diese hier ebenfalls vorgehalten.
%    \begin{macrocode}
\TUD@key{color}[true]{%
  \TUD@set@numkey{color}{@tempa}{%
    \TUD@bool@numkey,%
    {nocolor}{0},{nocolour}{0},{monochrome}{0},{monochromatic}{0},%
    {color}{1},{colour}{1},%
    {lite}{2},{light}{2},{pale}{2},%
    {colorlite}{2},{litecolor}{2},{colourlite}{2},{litecolour}{2},%
    {colorlight}{2},{lightcolor}{2},{colourlight}{2},{lightcolour}{2},%
    {colorpale}{2},{palecolor}{2},{colourpale}{2},{palecolour}{2},%
    {bicolor}{3},{bicolour}{3},{twocolor}{3},{twocolour}{3},%
    {bichrome}{3},{bichromatic}{3},{dichrome}{3},{dichromatic}{3},%
    {full}{4},{colorfull}{4},{fullcolor}{4},{colourfull}{4},{fullcolour}{4}%
  }{#1}%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
    \ifcase\@tempa\relax% false
      \TUD@deprecated@key{color=#1}{cd=true}%
    \or% true
      \TUD@deprecated@key{color=#1}{cd=color}%
    \or% litecolor
      \TUD@deprecated@key{color=#1}{cd=pale}%
    \or% bicolor
      \TUD@deprecated@key{color=#1}{cd=bicolor}%
    \or% full
      \TUD@deprecated@key{color=#1}{cd=fullcolor}%
    \fi%
  \fi%
}
\TUD@key{colour}[true]{\TUDoptions{color=#1}}
%    \end{macrocode}
% \end{option}^^A colour
% \end{option}^^A color
% \begin{option}{clearcolor}
% \changes{v2.06}{2018/08/21}{in \opt{cleardoublespecialpage} integriert}^^A
% \begin{option}{clearcolour}
% Die Option wurde in Option \opt{cleardoublespecialpage} integriert.
%    \begin{macrocode}
%<*book|report>
\TUD@key{clearcolor}[true]{%
  \TUD@set@ifkey{clearcolor}{@tempswa}{#1}%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
    \if@tempswa%
      \TUD@deprecated@key{clearcolor}{cleardoublespecialpage=color}%
    \else%
      \TUD@deprecated@key{clearcolor=#1}{cleardoublespecialpage=nocolor}%
    \fi%
  \fi%
}
\TUD@key{clearcolour}[true]{\TUDoptions{clearcolor=#1}}
%</book|report>
%    \end{macrocode}
% \end{option}^^A clearcolour
% \end{option}^^A clearcolor
%
% \iffalse
%</class>
% \fi
%
% \begin{option}{fontspec}
% \changes{v2.02}{2014/08/29}{neu}^^A
% \changes{v2.05}{2015/07/06}{veraltet}^^A
% \begin{macro}{\if@tud@x@fontspec@requested}
% Früher musste die Unterstützung für die Schriftauswahl via \pkg{fontspec} 
% manuell über die folgende Option aktiviert werden.
%    \begin{macrocode}
\tud@newif\if@tud@x@fontspec@requested
\TUD@key{fontspec}[true]{%
  \TUD@set@ifkey{fontspec}{@tud@x@fontspec@requested}{#1}%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
%<*class>
    \ClassWarningNoLine{\TUD@Class@Name}%
%</class>
%<*package&fonts>
    \PackageWarningNoLine{tudscrfonts}%
%</package&fonts>
    {%
      The key `fontspec' is deprecated. \MessageBreak%
      You should load the package `fontspec' manually%
    }%
  \fi%
}
%    \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 bzw. des Paketes zugelassen.
%    \begin{macrocode}
%<*class>
\AtEndOfClass%
%</class>
%<*package&fonts>
\AtEndOfPackage%
%</package&fonts>
{%
  \TUD@key@toolate{fontspec}%
  \if@tud@x@fontspec@requested%
    \RequirePackage{fontspec}
  \fi%
}
%    \end{macrocode}
% \end{macro}^^A \if@tud@x@fontspec@requested
% \end{option}^^A fontspec
%
% \iffalse
%</option>
%</class|package&fonts>
%<*body>
%<*class>
% \fi
%
% \subsection{Veraltete Befehle und Längen}
%
% \begin{length}{\footlogoheight}
% \changes{v2.03}{2015/01/27}{neu}^^A
% 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 die Länge anpassen, wird dies mit \cs{TUD@deprecated@length} an 
% der entsprechenden Stelle geprüft und die korrespondierende Option auf 
% diesen Wert gesetzt, wobei eine Warnung erzeugt wird.
%    \begin{macrocode}
\tud@newglue\footlogoheight
\tud@setdim\footlogoheight{\maxdimen}
%    \end{macrocode}
% \end{length}^^A \footlogoheight
% \begin{length}{\pageheadingsvskip}
% \changes{v2.02}{2014/06/23}{neu}^^A
% \begin{length}{\headingsvskip}
% \changes{v2.02}{2014/06/23}{neu}^^A
% Mit diesen Längen 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. Auch hier wird eine Warnung erzeugt, falls der Anwender diesen 
% Wert ändern sollte.
%    \begin{macrocode}
%<*book|report|article>
\tud@newglue\pageheadingsvskip
\tud@setdim\pageheadingsvskip{\maxdimen}
\tud@newglue\headingsvskip
\tud@setdim\headingsvskip{\maxdimen}
%</book|report|article>
%    \end{macrocode}
% \end{length}^^A \headingsvskip
% \end{length}^^A \pageheadingsvskip
% \begin{length}{\chapterheadingvskip}
% Die Länge \cs{chapterheadingvskip} wird aus Gründen der Kompatibilität zu
% älteren Versionen definiert.
%    \begin{macrocode}
%<*book|report>
\newcommand*\chapterheadingvskip{}
\let\chapterheadingvskip\headingsvskip
%</book|report>
%    \end{macrocode}
% \end{length}^^A \chapterheadingvskip
% \begin{macro}{\professorship}
% Für die Angabe des Lehrstuhls bzw. der Professur mit kann anstelle von 
% \cs{chair} als Aliasbefehl auch \cs{professorship} genutzt werden.
%    \begin{macrocode}
\TUD@deprecated@cs{professorship}{chair}
%    \end{macrocode}
% \end{macro}^^A \professorship
%
% \iffalse
%<*book|report|article>
% \fi
%
% \begin{macro}{\studentid}
% \begin{macro}{\matriculationid}
% Zur Angabe von Matrikelnummer kann auch \cs{studentid} oder
% \cs{matriculationnumber} genutzt werden.
%    \begin{macrocode}
\TUD@deprecated@cs{studentid}{matriculationnumber}
\TUD@deprecated@cs{matriculationid}{matriculationnumber}
%    \end{macrocode}
% \end{macro}^^A \matriculationid
% \end{macro}^^A \studentid
% \begin{macro}{\enrolmentyear}
% Das Immatrikulationsjahr kann auch mit \cs{enrolmentyear} angegeben werden.
%    \begin{macrocode}
\TUD@deprecated@cs{enrolmentyear}{matriculationyear}
%    \end{macrocode}
% \end{macro}^^A \enrolmentyear
% \begin{macro}{\birthplace}
% Zur Angabe des Geburtsortes kann auch \cs{birthplace} verwendet werden.
%    \begin{macrocode}
\TUD@deprecated@cs{birthplace}{placeofbirth}
%    \end{macrocode}
% \end{macro}^^A \birthplace
% \begin{macro}{\submissiondate}
% Der Befehl \cs{submissiondate} kann als Aliasbefehl für den Standardbefehl 
% \cs{date} zur Datumsangabe genutzt werden.
%    \begin{macrocode}
\TUD@deprecated@cs{submissiondate}{date}
%    \end{macrocode}
% \end{macro}^^A \submissiondate
% \begin{macro}{\oralexaminationdate}
% Für \cs{defensedate} kann als Aliasbefehl auch \cs{oralexaminationdate}
% verwendet werden.
%    \begin{macrocode}
\TUD@deprecated@cs{oralexaminationdate}{defensedate}
%    \end{macrocode}
% \end{macro}^^A \oralexaminationdate
% \begin{macro}{\birthday}
% Der Geburtstag kann auch mit \cs{birthday} angegeben werden.
%    \begin{macrocode}
\TUD@deprecated@cs{birthday}{dateofbirth}
%    \end{macrocode}
% \end{macro}^^A \birthday
%
% \iffalse
%</book|report|article>
% \fi
%
% \begin{macro}{\location}
% Für die Angabe des Ortes kann auch \cs{location} genutzt werden.
%    \begin{macrocode}
\TUD@deprecated@cs{location}{place}
%    \end{macrocode}
% \end{macro}^^A \location
% \begin{macro}{\logofile}
% \begin{macro}{\logofilename}
% Diese beiden Befehle können anstelle von \cs{headlogo} eingesetzt werden.
%    \begin{macrocode}
\TUD@deprecated@cs{logofile}{headlogo}
\TUD@deprecated@cs{logofilename}{headlogo}
%    \end{macrocode}
% \end{macro}^^A \logofilename
% \end{macro}^^A \logofile
% \begin{macro}{\startdate}
% \begin{macro}{\finaldate}
% \begin{macro}{\maturitydate}
% Für das Paket \pkg{tudscrsupervisor} sind auch einige Befehle als veraltet 
% anzusehen.
%    \begin{macrocode}
\AfterPackage{tudscrsupervisor}{%
  \TUD@deprecated@cs{startdate}{issuedate}%
  \TUD@deprecated@cs{finaldate}{duedate}%
  \TUD@deprecated@cs{maturitydate}{duedate}%
}
%    \end{macrocode}
% \end{macro}^^A \maturitydate
% \end{macro}^^A \finaldate
% \end{macro}^^A \startdate
%
% \iffalse
%</class>
%<*class|package&fonts>
% \fi
%
% \begin{macro}{\textcdfont}
% \begin{macro}{\tudfont}
% \begin{macro}{\univln}
% \begin{macro}{\univrn}
% \begin{macro}{\univbn}
% \begin{macro}{\univxn}
% \begin{macro}{\univls}
% \begin{macro}{\univrs}
% \begin{macro}{\univbs}
% \begin{macro}{\univxs}
% \begin{macro}{\textuln}
% \begin{macro}{\texturn}
% \begin{macro}{\textubn}
% \begin{macro}{\textuxn}
% \begin{macro}{\textuls}
% \begin{macro}{\texturs}
% \begin{macro}{\textubs}
% \begin{macro}{\textuxs}
% \begin{macro}{\dinbn}
% \begin{macro}{\textdbn}
% Für die Klassen und das Paket \pkg{tudscrfonts} werden die expliziten Befehle 
% zur Schriftauswahl zumindest vorgehalten und auf die neuen Schriften gelegt.
%    \begin{macrocode}
\TUD@deprecated@cs{textcdfont}{textcd}%
\TUD@deprecated@cs{tudfont}{cdfont}%
\TUD@deprecated@cs{univln}{cdfontln}%
\TUD@deprecated@cs{univrn}{cdfontrn}%
\TUD@deprecated@cs{univbn}{cdfontsn}%
\TUD@deprecated@cs{univxn}{cdfontbn}%
\TUD@deprecated@cs{univls}{cdfontli}%
\TUD@deprecated@cs{univrs}{cdfontri}%
\TUD@deprecated@cs{univbs}{cdfontsi}%
\TUD@deprecated@cs{univxs}{cdfontbi}%
\TUD@deprecated@cs{textuln}{textcdln}%
\TUD@deprecated@cs{texturn}{textcdrn}%
\TUD@deprecated@cs{textubn}{textcdsn}%
\TUD@deprecated@cs{textuxn}{textcdbn}%
\TUD@deprecated@cs{textuls}{textcdli}%
\TUD@deprecated@cs{texturs}{textcdri}%
\TUD@deprecated@cs{textubs}{textcdsi}%
\TUD@deprecated@cs{textuxs}{textcdbi}%
\TUD@deprecated@cs{dinbn}{cdfontxn}%
\TUD@deprecated@cs{textdbn}{textcdxn}%
%    \end{macrocode}
% \end{macro}^^A \textdbn
% \end{macro}^^A \dinbn
% \end{macro}^^A \textuxs
% \end{macro}^^A \textubs
% \end{macro}^^A \texturs
% \end{macro}^^A \textuls
% \end{macro}^^A \textuxn
% \end{macro}^^A \textubn
% \end{macro}^^A \texturn
% \end{macro}^^A \textuln
% \end{macro}^^A \univxs
% \end{macro}^^A \univbs
% \end{macro}^^A \univrs
% \end{macro}^^A \univls
% \end{macro}^^A \univxn
% \end{macro}^^A \univbn
% \end{macro}^^A \univrn
% \end{macro}^^A \univln
% \end{macro}^^A \tudfont
% \end{macro}^^A \textcdfont
% \begin{macro}{\ifdin}
% \changes{v2.02}{2014/08/29}{Anpassungen für \pkg{fontspec}}^^A
% \changes{v2.06}{2018/07/10}{für \OpenSans hinfällig}^^A
% \begin{macro}{\tud@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@deprecated@cs{ifdin}{@secondoftwo}
%    \end{macrocode}
% Für die alten Schriften prüft er auf die Verwendung von \DIN. Davon abhängig 
% wird entweder das erste oder das zweite Argument ausgeführt. Dies kann für die
% Befehle aller Gliederungsebenen genutzt werden, um zwischen der Ausgabe im
% Dokument sowie Inhaltsverzeichnis und/oder Kolumnentitel zu unterscheiden.
% Um nicht alle Klassen und Pakete anpassen zu müssen, wird \cs{tud@ifdin} zur 
% internen Nutzung in jedem Fall definiert, um die Kompatibilität gewährleisten
% zu können.
%    \begin{macrocode}
\newrobustcmd*\tud@ifdin{%
  \ifx\f@family\tud@cdfont@db%
    \expandafter\@firstoftwo%
  \else%
    \expandafter\@secondoftwo%
  \fi%
}
\if@tud@cdoldfont@active
  \newcommand*\ifdin{}
  \let\ifdin\tud@ifdin
\fi
%    \end{macrocode}
% \end{macro}^^A \tud@ifdin
% \end{macro}^^A \ifdin
% \begin{macro}{\varGamma}
% \begin{macro}{\varDelta}
% \begin{macro}{\varTheta}
% \begin{macro}{\varLambda}
% \begin{macro}{\varXi}
% \begin{macro}{\varPi}
% \begin{macro}{\varSigma}
% \begin{macro}{\varUpsilon}
% \begin{macro}{\varPhi}
% \begin{macro}{\varPsi}
% \begin{macro}{\varOmega}
% Die veralteten Befehle für kursive griechische Majuskeln.
%    \begin{macrocode}
\def\tud@res@a#1{%
  \TUD@deprecated@cs{var#1}{it#1}%
}
\tud@math@loop@greeks@uc\tud@res@a%
%    \end{macrocode}
% \end{macro}^^A \varOmega
% \end{macro}^^A \varPsi
% \end{macro}^^A \varPhi
% \end{macro}^^A \varUpsilon
% \end{macro}^^A \varSigma
% \end{macro}^^A \varPi
% \end{macro}^^A \varXi
% \end{macro}^^A \varLambda
% \end{macro}^^A \varTheta
% \end{macro}^^A \varDelta
% \end{macro}^^A \varGamma
%
% \iffalse
%</class|package&fonts>
%</body>
% \fi
%
% \section{Das Paket \pkg{tudscrcomp} -- Kompatibilität veralteter Klassen}
%
% 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 
% Posterklassen \cls{tudmathposter} bzw. \cls{tudposter} bereitgestellt wurden.
%
% \iffalse
%<*package&comp>
%<*identify>
% \fi
%
% \subsection{Erkennen der geladenen Klasse}
%
% Damit je nach geladener Klasse die passenden Kompatibilitätseinstellungen und 
% -befehle bereitgestellt werden können, wird auf die geladene Klasse geprüft.
% \begin{macro}{\tud@comp@on@main@class}
% \begin{macro}{\tud@comp@on@poster@class}
%    \begin{macrocode}
\@tud@res@swafalse%
\newcommand*\tud@comp@on@main@class{\@gobble}
\@tfor\tud@res@a:={tudscrbook}{tudscrreprt}{tudscrartcl}\do{%
  \@ifclassloaded{\tud@res@a}{\@tud@res@swatrue}{}%
  \if@tud@res@swa%
    \renewcommand*\tud@comp@on@main@class{\@firstofone}%
    \@break@tfor%
  \fi%
}%
\newcommand*\tud@comp@on@poster@class{\@gobble}
\@ifclassloaded{tudscrposter}{%
  \renewcommand*\tud@comp@on@poster@class{\@firstofone}%
}{}%
%    \end{macrocode}
% \end{macro}^^A \tud@comp@on@poster@class
% \end{macro}^^A \tud@comp@on@main@class
%
% \iffalse
%</identify>
%<*option>
% \fi
%
% \subsection{Gemeinsame Optionen und Befehle für alle Klassen}
%
% 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}
\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}
% \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>
%<*option>
% \fi
%
% \subsection{Kompatibilität zu \cls{tudbook}}
%
% Die folgenden Optionen und Befehle werden durch die Klasse \cls{tudbook} und
% teilweise durch \TUDScript~v1.0 definiert.
%
% \begin{option}{colortitle}
% \begin{option}{nocolortitle}
% Für farbige Einstellungen wird von \cls{tudbook} die Option \opt{color} 
% definiert. Soll die Titelseite konträr dazu gesetzt werden, muss sich mit den
% Schlüsseln \opt{colortitle} und \opt{nocolortitle} beholfen werden.
%    \begin{macrocode}
\TUD@key{colortitle}[true]{%
  \TUD@set@ifkey{colortitle}{@tempswa}{#1}%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
    \if@tempswa%
      \TUDoptions{cdtitle=color}%
    \else%
      \TUDoptions{cdtitle=true}%
    \fi%
  \fi%
}
\TUD@key{nocolortitle}[true]{%
  \TUD@set@ifkey{nocolortitle}{@tempswa}{#1}%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
    \if@tempswa%
      \TUDoptions{cdtitle=true}%
    \else%
      \TUDoptions{cdtitle=color}%
    \fi%
  \fi%
}
%    \end{macrocode}
% \end{option}^^A nocolortitle
% \end{option}^^A colortitle
% \begin{option}{ddcfooter}
% Außer der Option \opt{ddc} gibt es bei der alten \cls{tudbook}-Klasse noch
% den Schlüssel \opt{ddcfooter}. Dieser wird auf die Option \opt{ddcfoot} 
% gelegt.
%    \begin{macrocode}
\TUD@key{ddcfooter}[true]{%
  \TUD@set@ifkey{ddcfooter}{@tempswa}{#1}%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
    \if@tempswa%
      \TUDoptions{ddcfoot=true}%
    \else%
      \TUDoptions{ddcfoot=false}%
    \fi%
  \fi%
}
%    \end{macrocode}
% \end{option}^^A ddcfooter
%
% \iffalse
%</option>
%<*body>
% \fi
%
% Die folgenden Makros werden für die Hauptklassen definiert.
%    \begin{macrocode}
\tud@comp@on@main@class{%
%    \end{macrocode}
%
% \begin{macro}{\submitdate}
% \begin{macro}{\submittedon}
% \begin{macro}{\supervisorII}
% \begin{macro}{\supervisedby}
% \begin{macro}{\supervisedIIby}
% Es werden weitere Aliasbefehle für die Eingabefelder der \cls{tudbook}-Klasse 
% definiert.
%    \begin{macrocode}
\newcommand*\submitdate{\date}
\newcommand*\submittedon[1]{\gdef\datetext{#1}}
\newcommand*\supervisorII[1]{\g@addto@macro\@supervisor{\and\space#1}}
\newcommand*\supervisedby[1]{\gdef\supervisorname{#1}}
\newcommand*\supervisedIIby[1]{\gdef\supervisorothername{#1}}
%    \end{macrocode}
% \end{macro}^^A \supervisedIIby
% \end{macro}^^A \supervisedby
% \end{macro}^^A \supervisorII
% \end{macro}^^A \submittedon
% \end{macro}^^A \submitdate
% \begin{macro}{\dissertation}
% Bei der Definition des Typs der Abschlussarbeit mit \cs{dissertation} wird
% die Lokalisierungsvariable \cs{dissertationname} verwendet und die Feldnamen
% angepasst.
%    \begin{macrocode}
\newcommand*\dissertation{%
  \thesis{\dissertationname}%
  \let\supervisorname\refereename%
  \let\supervisorothername\refereeothername%
}
%    \end{macrocode}
% \end{macro}^^A \dissertation
% \begin{macro}{\chapterpage}
% \begin{macro}{\if@tud@comp@chapterpage}
% \begin{macro}{\tud@comp@chapterpage@set}
% \begin{macro}{\tud@comp@chapterpage@unset}
% \begin{macro}{\tud@comp@chapterpage@wrn}
% \begin{macro}{\tud@chapter@pre}
% \begin{macro}{\tud@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
% statt Kapitelseiten lediglich Überschriften zu setzen und umgekehrt. Dies ist
% typographisch durchaus zu hinterfragen, allerdings sollen die neuen Klassen
% möglichst kompatibel zu der alten sein, weshalb diese Funktionalität trotzdem
% implementiert wird. Der Befehl \cs{chapterpage} setzt den globalen Schalter
% \cs{if@tud@comp@chapterpage}. Der Befehl \cs{tud@comp@chapterpage@set} setzt 
% für Kapitel das komplementäre Verhalten zur eigentlich gewählten
% \opt{chapterpage}-Option. Nach dem Setzen der entsprechenden Überschrift
% wird \cs{tud@comp@chapterpage@set} nochmals aufgerufen, das Verhalten auf den
% ursprünglichen Zustand geschaltet und der globale Schalter
% \cs{if@tud@comp@chapterpage} zurückgesetzt.
%    \begin{macrocode}
\tud@newif\if@tud@comp@chapterpage
\newcommand*\chapterpage{%
  \global\@tud@comp@chapterpagetrue%
  \tud@comp@chapterpage@wrn%
}
\newcommand*\tud@comp@chapterpage@set{%
  \if@tud@comp@chapterpage%
    \if@tud@chapterpage%
      \TUDoptions{chapterpage=false}%
    \else%
      \TUDoptions{chapterpage=true}%
    \fi%
  \fi%
}
\newcommand*\tud@comp@chapterpage@unset{%
  \tud@comp@chapterpage@set%
  \global\@tud@comp@chapterpagefalse%
}
%    \end{macrocode}
% Da wie bereits beschrieben das Vorgehen äußerst fragwürdig ist, wird bei der
% Verwendung von \cs{chapterpage} zumindest einmalig eine Warnung ausgegeben.
%    \begin{macrocode}
\newcommand*\tud@comp@chapterpage@wrn{%
  \PackageWarning{tudscrcomp}{%
    The command `\string\chapterpage'\space is not\MessageBreak%
    recommended. You should use the same style for\MessageBreak%
    chapters throughout the document%
  }%
  \global\let\tud@comp@chapterpage@wrn\relax%
}
%    \end{macrocode}
% Hier erfolgt die notwendige Anpassungen der internen Gliederungsbefehle.
%    \begin{macrocode}
\AtEndPreamble{%
  \ifundef{\if@chapter}{%
    \newif\if@chapter%
    \ifundef{\chapter}{\@chapterfalse}{\@chaptertrue}%
  }{}%
  \if@chapter%
    \pretocmd\tud@chapter@pre{%
      \tud@comp@chapterpage@set%
    }{}{\tud@patch@wrn{tud@chapter@pre}}%
    \apptocmd\tud@chapter@app{%
      \tud@comp@chapterpage@unset%
    }{}{\tud@patch@wrn{tud@chapter@app}}%
  \else%
    \renewcommand*\tud@comp@chapterpage@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@comp@chapterpage@wrn\relax%
    }%
  \fi%
}
%    \end{macrocode}
% \end{macro}^^A \tud@chapter@app
% \end{macro}^^A \tud@chapter@pre
% \end{macro}^^A \tud@comp@chapterpage@wrn
% \end{macro}^^A \tud@comp@chapterpage@unset
% \end{macro}^^A \tud@comp@chapterpage@set
% \end{macro}^^A \if@tud@comp@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@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>
%<*option>
% \fi
%
% \subsection{Kompatibilität zu \cls{tudmathposter}}
%
% 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@comp@on@poster@class{%
\tud@newif\if@tud@comp@loadpackages
\TUD@key{loadpackages}[true]{%
  \TUD@set@ifkey{loadpackages}{@tud@comp@loadpackages}{#1}%
}
\AtEndPreamble{\TUD@key@toolate{loadpackages}}
}
%    \end{macrocode}
% \end{option}^^A loadpackages
%
% \iffalse
%</option>
%<*body>
% \fi
%
%    \begin{macrocode}
\tud@comp@on@poster@class{%
\AtEndPreamble{%
  \if@tud@comp@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@comp@on@poster@class{%
\TUD@key{bluebg}[true]{%
  \TUD@set@ifkey{bluebg}{@tempswa}{#1}%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
    \if@tempswa%
      \TUDoptions{backcolor=true}%
    \else%
      \TUDoptions{backcolor=false}%
    \fi%
  \fi%
}
}
%    \end{macrocode}
% \end{option}^^A bluebg
%
% \iffalse
%</option>
%<*body>
% \fi
%
% Die folgenden Makros werden für die Posterklasse definiert.
%    \begin{macrocode}
\tud@comp@on@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} 
% definiert.
%    \begin{macrocode}
\newcommand*\ps@tudposter{}
\let\ps@tudposter\ps@empty
\AfterPackage*{scrlayer-scrpage}{%
  \DeclarePageStyleAlias{tudposter}{empty.tudheadings}%
}
%    \end{macrocode}
% \end{layerpagestyle}^^A tudposter
% \begin{macro}{\telefon}
% \changes{v2.05}{2016/04/17}{neu}^^A
% \begin{macro}{\fax}
% \changes{v2.05}{2016/04/17}{neu}^^A
% \begin{macro}{\email}
% \changes{v2.05}{2016/04/17}{neu}^^A
% \begin{macro}{\tud@split@author@list}
% Hier werden alle alten Feldbefehle auf die Pendants von \TUDScript gelegt und 
% das Makro \cs{tud@split@author@list} um diese Befehle erweitert.
%    \begin{macrocode}
\newrobustcmd*\telefon{\telephone}
\patchcmd\tud@split@author@list
  {telephone}
  {telephone,telefon}
  {}{\tud@patch@wrn{tud@split@author@list}}
\newrobustcmd*\fax{\telefax}
\patchcmd\tud@split@author@list
  {telefax}
  {telefax,fax}
  {}{\tud@patch@wrn{tud@split@author@list}}
\newrobustcmd*\email[1]{\emailaddress*{#1}}
\patchcmd\tud@split@author@list
  {emailaddress}
  {emailaddress,email}
  {}{\tud@patch@wrn{tud@split@author@list}}
%    \end{macrocode}
% \end{macro}^^A \tud@split@author@list
% \end{macro}^^A \email
% \end{macro}^^A \fax
% \end{macro}^^A \telefon
% \begin{macro}{\homepage}
% \changes{v2.05}{2016/04/17}{neu}^^A
% Für die Angabe einer Website wird \cs{webpage*} verwendet, um etwaige Makros 
% zur Formatierung nicht beachten zu müssen.
%    \begin{macrocode}
\newcommand*\homepage[1]{\webpage*{#1}}
%    \end{macrocode}
% \end{macro}^^A \homepage
% \begin{macro}{\zweitlogofile}
% \changes{v2.05}{2016/04/17}{neu}^^A
% \begin{macro}{\zweitlogo}
% \changes{v2.05}{2016/04/17}{neu}^^A
% \begin{macro}{\institutslogofile}
% \changes{v2.05}{2016/04/17}{neu}^^A
% \begin{macro}{\institutslogo}
% \changes{v2.05}{2016/04/17}{neu}^^A
% \begin{macro}{\drittlogofile}
% \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 (|\...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*\zweitlogo[1]{%
  \PackageWarning{tudscrcomp}{%
    It isn't possible to redefine the definition for\MessageBreak%
    including a logo in the header. Please see the\MessageBreak%
    documentation of \string\headlogo%
  }%
}
\newcommand*\institutslogofile[2][]{\footlogo[{#1}]{,,,,,,,#2,}}
\newcommand*\institutslogo[1]{%
  \PackageWarning{tudscrcomp}{%
    It isn't possible to redefine the definition for\MessageBreak%
    including a logo in the footer. Please see the\MessageBreak%
    documentation of \string\footlogo%
  }%
}
\newcommand*\drittlogofile[1]{%
  \PackageWarning{tudscrcomp}{%
    Nothing happened, you should use \string\footlogo\MessageBreak%
    instead. Please see the documentation of \string\footlogo\MessageBreak%
    and option `ddc' or `ddcfoot'%
  }%
}
\newcommand*\drittlogo[1]{%
  \PackageWarning{tudscrcomp}{%
    It isn't possible to redefine the definition for\MessageBreak%
    including a logo in the footer. Please see the\MessageBreak%
    documentation of \string\footlogo\space and option\MessageBreak%
    `ddc' or `ddcfoot'%
  }%
}
%    \end{macrocode}
% \end{macro}^^A \drittlogo
% \end{macro}^^A \drittlogofile
% \end{macro}^^A \institutslogo
% \end{macro}^^A \institutslogofile
% \end{macro}^^A \zweitlogo
% \end{macro}^^A \zweitlogofile
% \begin{macro}{\topsection}
% \changes{v2.05}{2016/04/17}{neu}^^A
% \begin{counter}{topsection}
% \changes{v2.05}{2016/04/17}{neu}^^A
% \begin{macro}{\topsubsection}
% \changes{v2.05}{2016/04/17}{neu}^^A
% \begin{counter}{topsubsection}
% \changes{v2.05}{2016/04/17}{neu}^^A
% Die Klasse \cls{tudmathposter} definiert zusätzliche Gliederungsbefehle, 
% welche allerdings völlig willkürliche vertikale Abstände davor und danach 
% verwendet. Es besteht keinerlei Ambition, diese genau abzubilden. Falls hier 
% tatsächlich ein Anpassungsbedarf besteht, kann dies mit den entsprechenden
% Mitteln von \KOMAScript{} (\cs{RedeclareSectionCommand}) nach dem Laden von
% \pkg{tudscrcomp} erfolgen.
%
% Die neuen Gliederungsbefehle erschließen sich mir ohnehin nicht, wirken eher 
% so, als ob diese entstanden sind, weil auf Anwendungsebene etwas nicht so 
% funktioniert hat, wie gewollt und statt einer vernünftigen Ursachenforschung 
% einfach ein eigenes Konstrukt erschaffen wurde, um unzulängliche Fähigkeiten 
% 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.08]
%    \begin{macrocode}
\newcommand*\topsectionnumdepth{\sectionnumdepth}
\newcommand*\scr@topsection@sectionindent{\scr@section@sectionindent}
\newcommand*\scr@topsection@beforeskip{\scr@section@beforeskip}
\newcommand*\scr@topsection@afterskip{\scr@section@afterskip}
\newcommand*\topsectiontocdepth{\sectiontocdepth}
\newcommand*\scr@topsection@tocindent{\scr@section@tocindent}
\newcommand*\scr@topsection@tocnumwidth{\scr@section@tocnumwidth}
\newcommand*\l@topsection{\l@section}
\DeclareNewSectionCommand[%
  style=section,%
  font={\usekomafont{section}},%
  beforeskip=\z@,%
]{topsection}
\let\c@topsection\c@section
\newcommand*\topsubsectionnumdepth{\subsectionnumdepth}
\newcommand*\scr@topsubsection@sectionindent{\scr@subsection@sectionindent}
\newcommand*\scr@topsubsection@beforeskip{\scr@subsection@beforeskip}
\newcommand*\scr@topsubsection@afterskip{\scr@subsection@afterskip}
\newcommand*\topsubsectiontocdepth{\subsectiontocdepth}
\newcommand*\scr@topsubsection@tocindent{\scr@subsection@tocindent}
\newcommand*\scr@topsubsection@tocnumwidth{\scr@subsection@tocnumwidth}
\newcommand*\l@topsubsection{\l@subsection}
\DeclareNewSectionCommand[%
  style=section,%
  font={\usekomafont{subsection}},%
  beforeskip=\z@,%
]{topsubsection}
\let\c@topsubsection\c@subsection
%    \end{macrocode}
% \end{counter}^^A topsubsection
% \end{macro}^^A \topsubsection
% \end{counter}^^A topsection
% \end{macro}^^A \topsection
% \begin{macro}{\centersection}
% \changes{v2.05}{2016/04/17}{neu}^^A
% \begin{macro}{\centersubsection}
% \changes{v2.05}{2016/04/17}{neu}^^A
% \begin{macro}{\topcentersection}
% \changes{v2.05}{2016/04/17}{neu}^^A
% \begin{macro}{\topcentersubsection}
% \changes{v2.05}{2016/04/17}{neu}^^A
% \begin{macro}{\tud@comp@centersection}
% \changes{v2.05}{2016/04/17}{neu}^^A
% Weiterhin werden Gliederungsebenen definiert, die unabhängig vom restlichen 
% Layout zentriert gesetzt werden. Eine Mischung von unterschiedlichen Stilen 
% gleichartiger Ebenen ist aus sicht von Typographie und Layout eher fraglich.
%    \begin{macrocode}
\NewDocumentCommand\centersection{o m}{%
  \tud@comp@centersection{section}{#1}{#2}%
}
\NewDocumentCommand\centersubsection{o m}{%
  \tud@comp@centersection{subsection}{#1}{#2}%
}
\NewDocumentCommand\topcentersection{o m}{%
  \tud@comp@centersection{topsection}{#1}{#2}%
}
\NewDocumentCommand\topcentersubsection{o m}{%
  \tud@comp@centersection{topsubsection}{#1}{#2}%
}
%    \end{macrocode}
% Alle Gliederungsbefehle nutzen die passenden Ebenen mit der standardmaßig 
% Ausrichtung und passen kurzfristig \cs{raggedsection} an. Dabei auch darauf 
% geachtet, ob das optionale Argument durch den Anwender verwendet wird.
%    \begin{macrocode}
\newcommand*\tud@comp@centersection[3]{%
  \tud@cs@store{raggedsection}%
  \let\raggedsection\centering%
  \IfValueTF{#2}{%
    \csuse{#1}[{#2}]{#3}%
  }{%
    \csuse{#1}{#3}%
  }
  \tud@cs@restore{raggedsection}%
}
%    \end{macrocode}
% \end{macro}^^A \tud@comp@centersection
% \end{macro}^^A \topcentersubsection
% \end{macro}^^A \topcentersection
% \end{macro}^^A \centersubsection
% \end{macro}^^A \centersection
% \begin{macro}{\sectiontopskip}
% \changes{v2.05}{2016/04/17}{neu}^^A
% \begin{macro}{\subsectiontopskip}
% \changes{v2.05}{2016/04/17}{neu}^^A
% Die Klasse \cls{tudmathposter} stellt zu den neuen Gliederungsbefehlen noch 
% zusätzlich die beiden Makros \cs{sectiontopskip} und \cs{subsectiontopskip}
% bereit. Diese werden in darin bei der Definition dieser Gliederungsebenen
% verwendet. Da die \TUDScript-Klassen den Ansatz verfolgen, dem Benutzer
% weitestgehende Freiheiten bei der Gestaltung des Layouts einzuräumen, werden 
% diese an die Einstellungen der zentralen \KOMAScript"=Benutzerschnittstelle 
% gekoppelt.
%    \begin{macrocode}
\newcommand\sectiontopskip{\scr@section@beforeskip}
\newcommand\subsectiontopskip{\scr@subsection@beforeskip}
%    \end{macrocode}
% \end{macro}^^A \subsectiontopskip
% \end{macro}^^A \sectiontopskip
% \begin{counter}{secnumdepth}
% Standardmäßig wird die Nummerierung aller Gliederungsebenen deaktiviert.
%    \begin{macrocode}
\setcounter{secnumdepth}{\m@ne}
%    \end{macrocode}
% \end{counter}^^A secnumdepth
% \begin{environment}{farbtabellen}
% \changes{v2.05}{2016/04/17}{neu}^^A
% \begin{macro}{\if@tud@comp@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}
\tud@newif\if@tud@comp@graytable
\newcommand*\blautabelle{\@tud@comp@graytablefalse}
\newcommand*\grautabelle{\@tud@comp@graytabletrue}
\newenvironment{farbtabellen}{%
  \if@tud@comp@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@tud@comp@graytable
% \end{environment}^^A farbtabellen
%
% Das waren die Makros für die Posterklassen.
%    \begin{macrocode}
}
%    \end{macrocode}
%
% \iffalse
%</body>
%<*option>
% \fi
%
% Zuletzt wir die Option für das Laden von \pkg{colortbl} durchgereicht.
%    \begin{macrocode}
\tud@comp@on@poster@class{%
\PassOptionsToPackage{table}{xcolor}
}
%    \end{macrocode}
%
% \begin{option}{cropmargin}
% \changes{v2.06o}{2022/08/03}{neu}^^A
% \begin{macro}{\tud@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@comp@on@poster@class{%
\newcommand*\tud@cropmargin@set{}%
\preto\tud@cdgeometry@@init{\tud@cropmargin@set}%
\TUD@key{cropmargin}[5mm]{%
  \TUD@set@dimkey[mm]{cropmargin}{\@tempa}{#1}%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
    \edef\tud@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@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@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@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@tud@mathfoot}
% \changes{v2.05}{2016/04/17}{neu}^^A
% 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}
\tud@comp@on@poster@class{%
\tud@newif\if@tud@mathfoot
\TUD@key{tudmathfoot}[true]{%
  \TUD@set@ifkey{tudmathfoot}{@tud@mathfoot}{#1}%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
    \if@tud@mathfoot%
      \footcontent[\small]{%
        \tud@footcontent@@left{}%
      }[%
        \tud@footcontent@@right{}{}%
      ]%
    \else%
      \footcontent{%
        \tud@footcontent@@left{\contactname}%
      }[%
        \tud@footcontent@@right{\authorname}{\contactpersonname}%
      ]%
    \fi%
  \fi%
}
\TUD@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@key{cdfoot}{%
  \TUD@set@numkey{cdfoot}{@tempa}{%
    {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{tudmathfoot=false}%
    \else% tudmathposter
      \TUDoptions{tudmathfoot=true}%
    \fi%
  \fi%
}
}
%    \end{macrocode}
% \end{macro}^^A \if@tud@mathfoot
% \end{option}^^A cdfoot
% \end{option}^^A tudmathposterfoot
% \end{option}^^A tudmathfoot
%
% \iffalse
%</option>
%<*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@footcontent@use}
% 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@comp@on@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@footcontent@use} erfolgen.
% Normalerweise wird der Fußbereich in zwei gleichbreite Spalten über die
% komplette Textbreite aufgeteilt. Dahingegen werden durch die Klasse 
% \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{tudmathfoot} aktiviert werden und wird hier nachgebildet.
%    \begin{macrocode}
\patchcmd\tud@footcontent@use{%
  \tud@footcontent@@use{\tud@res@glue}%
}{%
  \if@tud@mathfoot%
    \tud@footcontent@@use{\glueexpr\tud@dim@widemargin*21/5\relax}%
  \else%
    \tud@footcontent@@use{\@tud@res@glue}%
  \fi%
}{}{\tud@patch@wrn{tud@footcontent@use}}
}
%    \end{macrocode}
% \end{macro}^^A \tud@footcontent@use
% \end{macro}^^A \footcolumn
% \end{macro}^^A \fusszeile
%
% \iffalse
%</body>
%</package&comp>
% \fi
%
% \section{Das Paket \pkg{fix-tudscrfonts} -- Schriften für alte TUD-Klassen}
%
% \changes{v2.05}{2015/12/08}{\pkg{fix-tudscrfonts}: Dieses Paket übernimmt die 
%   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
% die Posterklassen an. 
%
% \iffalse
%<*package&fixfonts>
%<*body>
% \fi
%
% Das Paket \pkg{tudscrfonts} wird am Ende der Präambel geladen, falls dies 
% zuvor nicht durch den Anwender geschieht.
%    \begin{macrocode}
\AtEndPreamble{%
  \tud@fixfonts@class@check%
  \RequirePackage{tudscrfonts}[%
%!TUD@Version
  ]%
}
%    \end{macrocode}
%
% \subsection{Verwendbarkeit und Ladezeitpunkt von \pkg{fix-tudscrfonts}}
%
% Da das Paket eine Vielzahl an Anpassungen der Schriftbefehle vornimmt sowie
% 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@fixfonts@class@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 Klasse geladen werden, so
% wird ein Fehler ausgegeben.
%    \begin{macrocode}
\ifx\usepackage\RequirePackage
  \newcommand*\tud@fixfonts@class@check{%
    \PackageError{fix-tudscrfonts}{Package too late}{%
      You must load `fix-tudscrfonts' with\MessageBreak%
      `\string\RequirePackage' before any document class.%
    }%
  }%
%    \end{macrocode}
% Wird das Paket mit einer nicht unterstützten Klasse verwendet, wird ebenfalls
% ein Fehler ausgegeben.
%    \begin{macrocode}
\else
  \newcommand*\tud@fixfonts@class@check{%
    \PackageError{fix-tudscrfonts}{Unsupported class found}{%
      You have to use `fix-tudscrfonts' only\MessageBreak%
      with supported classes. These are: `tudbook',\MessageBreak%
      `tudbeamer', `tudfax', `tudform', `tudhaus',\MessageBreak%
      and `tudletter' as well as `tudposter'\MessageBreak%
      and `tudmathposter'. Otherwise it's adequate\MessageBreak%
      to use package `tudscrfonts' as usual.%
    }%
  }%
\fi
%    \end{macrocode}
% \end{macro}^^A \tud@fixfonts@class@check
%
% \subsection{Patches für die unterstützten Klassen}
%
% Für alle unterstützten Klassen sind vor und nach dem Laden einige Anpassungen 
% an den bereitgestellten Schriftbefehlen notwendig.
%
% \begin{macro}{\tud@fixfonts@class@adapt}
% \changes{v2.05}{2016/01/02}{neu}^^A
% \begin{macro}{\dinBold}
% \changes{v2.05}{2015/07/13}{neu}^^A
% \begin{macro}{\dinfamily}
% \changes{v2.05}{2015/07/13}{neu}^^A
% \begin{macro}{\univLightVII}
% \begin{macro}{\univLightObliqueVII}
% \begin{macro}{\univBoldVII}
% \begin{macro}{\univLightIX}
% \begin{macro}{\univLightObliqueIX}
% \begin{macro}{\univBoldIX}
% \begin{macro}{\univLightXI}
% \begin{macro}{\univLightObliqueXI}
% \begin{macro}{\univBoldXI}
% \begin{macro}{\univLightXV}
% \begin{macro}{\univLightObliqueXV}
% \begin{macro}{\univBoldXV}
% \begin{macro}{\univLightHead}
% \begin{macro}{\univBoldHead}
% \begin{macro}{\tud@head@fontsize}
% Mit diesen beiden Befehlen werden vor dem Laden der alten Klassen einige
% Befehle gesichert und die benötigten Optionen gesetzt. Nach dem Laden der 
% jeweiligen Klasse werden die gesicherten Makrodefinitionen wiederhergestellt 
% und einige Schriftdefinitionen angepasst. Bei den alten TUD-Klassen betrifft 
% dies in erster Linie die Mathematikschriften sowie die in den Klassen
% definierten, fixen Schriften.
%    \begin{macrocode}
\newcommand*\tud@fixfonts@class@adapt[2]{%
  \BeforeClass{#1}{%
    \let\tud@fixfonts@class@check\relax%
    \tud@cs@store{DeclareFixedFont}%
    \renewcommand*\DeclareFixedFont[6]{}%
    \tud@cs@store{rmdefault}%
    \tud@cs@store{sfdefault}%
    \tud@cs@store{ttdefault}%
    \tud@cs@store{bfdefault}%
    \tud@cs@store{mddefault}%
    \tud@cs@store{itdefault}%
    \tud@cs@store{sldefault}%
    \tud@cs@store{scdefault}%
    \tud@cs@store{updefault}%
    \tud@cs@store{rmfamily}%
    \tud@cs@store{sffamily}%
    \tud@cs@store{ttfamily}%
    \tud@cs@store{familydefault}%
    \tud@cs@store{seriesdefault}%
    \tud@cs@store{shapedefault}%
    \tud@cs@store{normalfont}%
    \let\normalfont\relax%
    \let\abovecaptionskip\relax%
    \let\belowcaptionskip\relax%
    \PassOptionsToClass{serifmath}{#1}%
  }%
  \AfterClass{#1}{%
    \tud@cs@restore{DeclareFixedFont}%
    \tud@cs@restore{rmdefault}%
    \tud@cs@restore{sfdefault}%
    \tud@cs@restore{ttdefault}%
    \tud@cs@restore{bfdefault}%
    \tud@cs@restore{mddefault}%
    \tud@cs@restore{itdefault}%
    \tud@cs@restore{sldefault}%
    \tud@cs@restore{scdefault}%
    \tud@cs@restore{updefault}%
    \tud@cs@restore{rmfamily}%
    \tud@cs@restore{sffamily}%
    \tud@cs@restore{ttfamily}%
    \tud@cs@restore{familydefault}%
    \tud@cs@restore{seriesdefault}%
    \tud@cs@restore{shapedefault}%
    \tud@cs@restore{normalfont}%
    \newlength\abovecaptionskip%
    \newlength\belowcaptionskip%
    \setlength\abovecaptionskip{10\p@}%
    \setlength\belowcaptionskip{0\p@}%
    #2%
    \AfterPackage{tudscrfonts}{%
      \def\dinBold{\dinbn}%
      \def\dinfamily{\dinbn}%
      \AtBeginDocument{%
        \newcommand*\univLightVII{}%
        \newcommand*\univLightObliqueVII{}%
        \newcommand*\univBoldVII{}%
        \newcommand*\univLightIX{}%
        \newcommand*\univLightObliqueIX{}%
        \newcommand*\univBoldIX{}%
        \newcommand*\univLightXI{}%
        \newcommand*\univLightObliqueXI{}%
        \newcommand*\univBoldXI{}%
        \newcommand*\univLightXV{}%
        \newcommand*\univLightObliqueXV{}%
        \newcommand*\univBoldXV{}%
        \newcommand*\univLightHead{}%
        \newcommand*\univBoldHead{}%
        \providecommand*\tud@head@fontsize{9}%
        \if@tud@cdfont@fam@exist%
          \DeclareFixedFont{\univLightVII}{\encodingdefault}%
            {\tud@cdfont@fam@lf}{l}{n}{7}%
          \DeclareFixedFont{\univLightObliqueVII}{\encodingdefault}%
            {\tud@cdfont@fam@lf}{l}{sl}{7}%
          \DeclareFixedFont{\univBoldVII}{\encodingdefault}%
            {\tud@cdfont@fam@lf}{b}{n}{7}%
          \DeclareFixedFont{\univLightIX}{\encodingdefault}%
            {\tud@cdfont@fam@lf}{l}{n}{9}%
          \DeclareFixedFont{\univLightObliqueIX}{\encodingdefault}%
            {\tud@cdfont@fam@lf}{l}{sl}{9}%
          \DeclareFixedFont{\univBoldIX}{\encodingdefault}%
            {\tud@cdfont@fam@lf}{b}{n}{9}%
          \DeclareFixedFont{\univLightXI}{\encodingdefault}%
            {\tud@cdfont@fam@lf}{l}{n}{11}%
          \DeclareFixedFont{\univLightObliqueXI}{\encodingdefault}%
            {\tud@cdfont@fam@lf}{l}{sl}{11}%
          \DeclareFixedFont{\univBoldXI}{\encodingdefault}%
            {\tud@cdfont@fam@lf}{b}{n}{11}%
          \DeclareFixedFont{\univLightXV}{\encodingdefault}%
            {\tud@cdfont@fam@lf}{l}{n}{15}%
          \DeclareFixedFont{\univLightObliqueXV}{\encodingdefault}%
            {\tud@cdfont@fam@lf}{l}{sl}{15}%
          \DeclareFixedFont{\univBoldXV}{\encodingdefault}%
            {\tud@cdfont@fam@lf}{b}{n}{15}%
          \DeclareFixedFont{\univLightHead}{\encodingdefault}%
            {\tud@cdfont@fam@lf}{l}{n}{\tud@head@fontsize}%
          \DeclareFixedFont{\univBoldHead}{\encodingdefault}%
            {\tud@cdfont@fam@lf}{b}{n}{\tud@head@fontsize}%
        \else%
          \DeclareFixedFont{\univLightVII}{\encodingdefault}%
            {\sfdefault}{\mddefault}{\updefault}{7}%
          \DeclareFixedFont{\univLightObliqueVII}{\encodingdefault}%
            {\sfdefault}{\mddefault}{\sldefault}{7}%
          \DeclareFixedFont{\univBoldVII}{\encodingdefault}%
            {\sfdefault}{\bfdefault}{\updefault}{7}%
          \DeclareFixedFont{\univLightIX}{\encodingdefault}%
            {\sfdefault}{\mddefault}{\updefault}{9}%
          \DeclareFixedFont{\univLightObliqueIX}{\encodingdefault}%
            {\sfdefault}{\mddefault}{\sldefault}{9}%
          \DeclareFixedFont{\univBoldIX}{\encodingdefault}%
            {\sfdefault}{\bfdefault}{\updefault}{9}%
          \DeclareFixedFont{\univLightXI}{\encodingdefault}%
            {\sfdefault}{\mddefault}{\updefault}{11}%
          \DeclareFixedFont{\univLightObliqueXI}{\encodingdefault}%
            {\sfdefault}{\mddefault}{\sldefault}{11}%
          \DeclareFixedFont{\univBoldXI}{\encodingdefault}%
            {\sfdefault}{\bfdefault}{\updefault}{11}%
          \DeclareFixedFont{\univLightXV}{\encodingdefault}%
            {\sfdefault}{\mddefault}{\updefault}{15}%
          \DeclareFixedFont{\univLightObliqueXV}{\encodingdefault}%
            {\sfdefault}{\mddefault}{\sldefault}{15}%
          \DeclareFixedFont{\univBoldXV}{\encodingdefault}%
            {\sfdefault}{\bfdefault}{\updefault}{15}%
          \DeclareFixedFont{\univLightHead}{\encodingdefault}%
            {\sfdefault}{\mddefault}{\updefault}{\tud@head@fontsize}%
          \DeclareFixedFont{\univBoldHead}{\encodingdefault}%
            {\sfdefault}{\bfdefault}{\updefault}{\tud@head@fontsize}%
        \fi%
      }%
    }%
  }%
}
%    \end{macrocode}
% \end{macro}^^A \tud@head@fontsize
% \end{macro}^^A \univBoldHead
% \end{macro}^^A \univLightHead
% \end{macro}^^A \univBoldXV
% \end{macro}^^A \univLightObliqueXV
% \end{macro}^^A \univLightXV
% \end{macro}^^A \univBoldXI
% \end{macro}^^A \univLightObliqueXI
% \end{macro}^^A \univLightXI
% \end{macro}^^A \univBoldIX
% \end{macro}^^A \univLightObliqueIX
% \end{macro}^^A \univLightIX
% \end{macro}^^A \univBoldVII
% \end{macro}^^A \univLightObliqueVII
% \end{macro}^^A \univLightVII
% \end{macro}^^A \dinfamily
% \end{macro}^^A \dinBold
% \end{macro}^^A \tud@fixfonts@class@adapt
%
% Nach der Definition der notwendigen Befehle erfolgt nun die Umsetzung für 
% alle unterstützten Klassen.
%    \begin{macrocode}
\tud@fixfonts@class@adapt{tudletter}{}
\tud@fixfonts@class@adapt{tudfax}{}
\tud@fixfonts@class@adapt{tudform}{}
\tud@fixfonts@class@adapt{tudhaus}{}
\tud@fixfonts@class@adapt{tudposter}{}
\tud@fixfonts@class@adapt{tudbeamer}{}
%    \end{macrocode}
%
% Wird das Paket \pkg{fix-tudscrfonts} mit den alten TUD-Klassen \cls{tudbook}, 
% \cls{tudmathposter} etc. oder \TUDScript in der Version~v1.0 verwendet,
% müssen einige Kompatibilitätseinstellungen vorgenmommen werden. Hierfür sind
% wenige Patches notwendig.
%
% \subsection{Spezielle Patches für die Klasse \cls{tudbook}}
%
% Die notwendigen Anpassungen der Klasse \cls{tudbook} betreffen die
% Schriftauswahl bei Überschriften.
%
% \begin{macro}{\@makechapterhead}
% \begin{macro}{\@makeschapterhead}
% \begin{macro}{\section}
% \begin{macro}{\showtitle}
% Die Überschriften sollen abhängig von der Option \opt{cdfont} und nicht immer 
% zwingend in \DIN gesetzt werden.
%    \begin{macrocode}
\tud@fixfonts@class@adapt{tudbook}{%
  \patchcmd\@makechapterhead{%
    \dinBold\Huge\bfseries%
  }{%
    \tud@sec@fontface%
    \if@color\color{HKS41-100}\fi%
    \Huge%
  }{}{\tud@patch@wrn{@makechapterhead}}%
  \patchcmd\@makechapterhead{%
    \MakeUppercase%
  }{%
    \tud@sec@format%
  }{}{\tud@patch@wrn{@makechapterhead}}%
  \patchcmd\@makeschapterhead{%
    \dinBold\Huge\bfseries%
  }{%
    \tud@sec@fontface%
    \if@color\color{HKS41-100}\fi%
    \Huge%
  }{}{\tud@patch@wrn{@makeschapterhead}}%
  \patchcmd\@makeschapterhead{%
    \MakeUppercase%
  }{%
    \tud@sec@format%
  }{}{\tud@patch@wrn{@makeschapterhead}}%
  \patchcmd\section{%
    \dinBold\Large\bfseries\MakeUppercase%
  }{%
    \tud@sec@fontface%
    \if@color\color{HKS41-100}\fi%
    \Large%
    \tud@sec@format%
  }{}{\tud@patch@wrn{section}}%
  \patchcmd\showtitle{%
    \dinBold\Huge\bfseries\MakeUppercase%
  }{%
    \tud@sec@fontface%
    \if@colortitle\color{HKS41-30}\fi%
    \Huge%
    \tud@sec@format%
  }{}{\tud@patch@wrn{showtitle}}%
}
%    \end{macrocode}
% \end{macro}^^A \showtitle
% \end{macro}^^A \section
% \end{macro}^^A \@makeschapterhead
% \end{macro}^^A \@makechapterhead
%
% \subsection{Spezielle Patches für die Klasse \cls{tudmathposter}}
%
% Auch für die Posterklasse \cls{tudmathposter} sowie das Paket \pkg{tudfonts} 
% sind kleine Anpassungen notwendig.
%
% \begin{KOMAfont}{title}
% \changes{v2.04}{2015/04/24}{\cls{tudmathposter} wird unterstützt}^^A
% \begin{macro}{\maketitle}
% \changes{v2.04}{2015/04/24}{\cls{tudmathposter} wird unterstützt}^^A
% \begin{macro}{\subtitlefont}
% \changes{v2.04}{2015/04/24}{\cls{tudmathposter} wird unterstützt}^^A
% \begin{macro}{\preprocesstitle}
% \changes{v2.04}{2015/04/24}{\cls{tudmathposter} wird unterstützt}^^A
% \begin{macro}{\sectionfont}
% \changes{v2.04}{2015/04/24}{\cls{tudmathposter} wird unterstützt}^^A
% \begin{macro}{\subsectionfont}
% \changes{v2.04}{2015/04/24}{\cls{tudmathposter} wird unterstützt}^^A
% \begin{macro}{\ps@tudposter}
% \changes{v2.04}{2015/04/24}{\cls{tudmathposter} wird unterstützt}^^A
% Es werden einige Einstellungen für die Überschriften angepasst.
%    \begin{macrocode}
\tud@fixfonts@class@adapt{tudmathposter}{%
  \ifunivers\PassOptionsToPackage{cdoldfont}{tudscrfonts}\fi%
  \def\raggedtitle{\tud@raggedright}%
  \renewcommand*\raggedpart{\tud@raggedright}%
  \renewcommand*\raggedsection{\tud@raggedright}%
  \setkomafont{title}{\tud@sec@fontface\Huge}%
  \CheckCommand\maketitle{%
    \if@matheanull
    \setlength\@tempskipa{31.194586mm-\topsep}%
    \else
    \setlength\@tempskipa{33.02mm-\topskip}%
    \fi
    \vskip\@tempskipa
   {%
      \ifx\@title\@empty\else
      \usekomafont{title}\preprocesstitle{\@title}%
      \ifx\@subtitle\@empty\else\\\fi
      \fi
    }{
      \ifx\@subtitle\@empty\else
      \subtitlefont\preprocesstitle{\@subtitle}%
      \fi
      \if@matheanull
      \vskip 2.9948cm\relax
      \else
      \vskip 3.17cm\relax
      \fi
    }%
  }%
  \apptocmd\maketitle{%
    \vspace{-6ex}%
  }{}{\tud@patch@wrn{maketitle}}%
  \renewcommand*\subtitlefont{%
    \unskip%
    \tud@sec@fontface%
    \huge%
  }%
  \renewcommand*\preprocesstitle[1]{\raggedtitle\tud@sec@format{#1}}%
  \def\sectionfont{\tud@sec@fontface\LARGE}%
  \def\subsectionfont{\tud@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@tudposter{%
    \textbf{\@einrichtung}%
  }{%
    {\fontseries{b}\selectfont\@einrichtung}%
  }{}{\tud@patch@wrn{ps@tudposter}}%
  \pagestyle{tudposter}%
}
%    \end{macrocode}
% \end{macro}^^A \ps@tudposter
% \end{macro}^^A \subsectionfont
% \end{macro}^^A \sectionfont
% \end{macro}^^A \preprocesstitle
% \end{macro}^^A \subtitlefont
% \end{macro}^^A \maketitle
% \end{KOMAfont}^^A title
%
% \begin{macro}{\tud@x@tudfonts@prevent}
% \changes{v2.06}{2018/02/14}{neu}^^A
% \begin{macro}{\if@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@x@tudfonts@prevent{%
  \newif\if@tudfonts@nodin%
  \let\DeclareTudMathSizes\@gobblefour%
  \let\tud@x@tudfonts@prevent\relax%
}
\PreventPackageFromLoading[\tud@x@tudfonts@prevent]{tudfonts}
\PreventPackageFromLoading{opensans}
%    \end{macrocode}
% \end{macro}^^A \if@tudfonts@nodin
% \end{macro}^^A \tud@x@tudfonts@prevent
%
% \iffalse
%</body>
%</package&fixfonts>
% \fi
%
% \PrintBackMatter
%
\endinput
