% \iffalse meta-comment
%/GitFileInfo=tudscr-pagestyle.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-pagestyle.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/06/23}{Paket \pkg{titlepage} nicht weiter unterstützt}^^A
% \changes{v2.02}{2014/07/08}{\cs{FamilyKeyState} wird von Optionen genutzt}^^A
% \changes{v2.05}{2015/07/06}{Seitenstil für Poster}^^A
%
%
%
% \section{Der Seitenstil des \CDs}
%
% Es wird der Seitenstil des \TUDCD mit Logo und dem charakteristischen 
% Querbalken im Kopfbereich definiert. Hierfür kommt das \KOMAScript-Paket 
% \pkg{scrlayer-scrpage} zum Einsatz.
% \ToDo{Abhängigkeiten Satzspiegel<>Seitenstil beseitigen}[v2.07]
%
% \iffalse
%<*class&body>
% \fi
%
% \subsection{Definition des Seitenstils mit dem Paket \pkg{scrlayer-scrpage}}
%
% Ein zentraler Bestandteil von \TUDScript ist der Seitenkopf des \CDs. Dieser 
% wird ab der Version~v2.02 mit Hilfe des Paketes \pkg{scrlayer-scrpage} 
% erzeugt. Dafür werden einzelnene Seitenstile erstellt, welche zum einen von 
% verschiedenen Befehlen wie beispielsweise von\cs{maketitle} oder \cs{part} 
% bzw. \cs{addpart} genutzt werden. Zum anderen kann der Anwender selbst diese 
% entweder direkt über die Wahl des Seitenstils oder aber mit der
% \env{tudpage}-Umgebung nutzen.
%
% Ist die Klasse \cls{standalone} zusammen mit der Option \opt{crop} aktiv,
% werden die Seitenränder auf die Einstellungen dieser Klasse gesetzt und das
% Laden von \pkg{scrlayer-scrpage} verhindert.
% \ToDo{Setzen der Boxen mit \cs{tud@vlayerbox} komplett überarbeiten}[v2.07]
% \ToDo{lazy init der Boxen für Grafiken?}[v2.07]
%    \begin{macrocode}
\if@tud@x@standalone@crop
  \PreventPackageFromLoading{scrlayer-scrpage}%
\else
  \PassOptionsToPackage{automark}{scrlayer-scrpage}%
  \AtEndPreamble{\RequirePackage{scrlayer-scrpage}[%
%!TUD@KOMAVersion
  ]}%
\fi
%    \end{macrocode}
% Für das Erzeugen der Seitenstile wird das Paket \pkg{scrlayer-scrpage} 
% genutzt. Mit diesem können verschiedene Ebenen erstellt werden, aus welchen 
% anschließend der eigentliche Seitenstil zusammengesetzt wird. Dabei werden 
% verschiedene, sogenannte Layers respektive Ebenen für die einzelnen Elemente
% auf einer Seite erstellt.
%    \begin{macrocode}
\AfterPackage{scrlayer-scrpage}{%
%    \end{macrocode}
% \begin{layerpagestyle}{tudheadings}
% \changes{v2.02}{2014/06/23}{neu}^^A
% \begin{layerpagestyle}{plain.tudheadings}
% \changes{v2.02}{2014/06/23}{neu}^^A
% \begin{layerpagestyle}{empty.tudheadings}
% \changes{v2.02}{2014/06/23}{neu}^^A
% Es wird ein neuer Seitenstil kreiert, der das \TUDCD mit der prägenden
% Kopfzeile umsetzt. Dabei soll dieser Kopf auch verwendbar sein, wenn nicht
% die vom \CD vorgeschriebenen Seitenränder sondern das Paket \pkg{typearea}
% genutzt wird. Dafür wird das Logo im Kopf so wie im \CD vorgesehen mit dem
% Logo der \TnUD in den Rand und dem Schriftzug bündig zum Textblock gesetzt. 
%
% \Attention{%
%   Um Längenangaben aus Makros sicher auf Dimensionsausdrücke zu reduzieren,
%   müssen diese in \cs{dimexpr}\cs{glueexpr}\val{\dots}\cs{relax}\cs{relax}
%   eingehüllt werden. Das Paket \pkg{scrlayer} verwendet allerdings lediglich 
%   \cs{dimexpr}, weshalb hier noch zusätzlich \cs{glueexpr} genutzt wird. Dies
%   ist insbesondere für \cs{tud@bleedmargin@dim} relevant. Siehe hierzu auch 
%   \GitHubRepo(latex3/latex2e)<227>. 
% }
%
% \begin{layer}{tudheadings.head.content}
% \changes{v2.04}{2015/05/31}{neu}^^A
% Dies sind das links aus dem Satzspiegel verschobene Logo der \TnUD und das 
% Zweitlogo. Diese werden seit der Version~v2.04 nicht mehr in zwei getrennten 
% sondern in einer gemeinsamen Ebene gesetzt.
%    \begin{macrocode}
  \DeclareNewLayer[%
    background,headsep,%
    addhoffset=\tud@dim@logox-\tud@dim@widemargin,%
    addwidth=-\tud@dim@logox+\tud@dim@widemargin,%
    voffset=\tud@dim@logoy,%
    addvoffset=\tud@dim@layoutvoffset,%
    contents={%
%    \end{macrocode}
% Vor der Ausgabe der Logoboxen werden diese im Bedarfsfall neu gesetzt.
%    \begin{macrocode}
      \tud@mainlogo@set%
      \tud@headlogo@option@set%
      \tud@mainlogo@use\hfill\tud@headlogo@use%
    },%
  ]{tudheadings.head.content}%
%    \end{macrocode}
% \end{layer}^^A tudheadings.head.content
% \begin{layer}{tudheadings.head.back}
% \changes{v2.03}{2015/02/14}{neu}^^A
% \begin{layer}{tudheadings.head.bar}
% \changes{v2.03}{2015/02/14}{neu}^^A
% \changes{v2.05}{2015/07/14}{Bugfix verschobener Balken}^^A
% Außerdem gibt es eine Variante ohne Querbalken-Outline. Stattdessen werden
% der Querbalken und der darüberliegende Kopf farbig abgesetzt. 
%    \begin{macrocode}
  \DeclareNewLayer[%
    background,%
    width=\glueexpr\tud@dim@layoutwidth+(\tud@bleedmargin@dim)*2\relax,%
    addhoffset=\glueexpr\tud@dim@layouthoffset-\tud@bleedmargin@dim\relax,%
    height=\glueexpr\tud@dim@topmargin+\tud@bleedmargin@dim\relax,%
    addvoffset=\glueexpr\tud@dim@layoutvoffset-\tud@bleedmargin@dim\relax,%
    contents={%
      \ifnum\tud@head@bar@num>\tw@\relax% cdhead=color
        \color{HKS41}%
        \rule{\layerwidth}{\layerheight}%
      \fi%
    },%
  ]{tudheadings.head.back}%
  \DeclareNewLayer[%
    background,%
    width=\glueexpr\tud@dim@layoutwidth+(\tud@bleedmargin@dim)*2\relax,%
    addhoffset=\glueexpr\tud@dim@layouthoffset-\tud@bleedmargin@dim\relax,%
    height=\tud@dim@barheight,%
    voffset=\tud@dim@topmargin,%
    addvoffset=\tud@dim@layoutvoffset,%
    contents={%
      \ifnum\tud@head@bar@num>\@ne\relax% cdhead=barcolor/color
        \color{HKS41!60}%
        \tud@setdim\@tempdima{\ht\strutbox-\tud@dim@barheight}%
        \ifdim\@tempdima<\z@\relax\tud@setdim\@tempdima{\z@}\fi%
        \raisebox{\@tempdima}{\rule{\layerwidth}{\layerheight}}%
      \fi%
    },%
  ]{tudheadings.head.bar}%
%    \end{macrocode}
% \end{layer}^^A tudheadings.head.bar
% \end{layer}^^A tudheadings.head.back
% \begin{layer}{tudheadings.head.text}
% \changes{v2.02}{2014/06/23}{neu}^^A
% Fakultät, Einrichtung, Institut und Lehrstuhl als Inhalt des Querbalkens.
%    \begin{macrocode}
  \DeclareNewLayer[%
    background,headsep,%
    voffset=\tud@dim@topmargin+\tud@dim@line,%
    addvoffset=\tud@dim@layoutvoffset,%
    contents={%
      \tud@head@font@set%
      \tud@head@text@set%
      \tud@head@text@box%
    },%
  ]{tudheadings.head.text}%
%    \end{macrocode}
% \end{layer}^^A tudheadings.head.text
% \begin{layer}{tudheadings.head.upline}
% \changes{v2.02}{2014/06/23}{neu}^^A
% \begin{layer}{tudheadings.head.lowline}
% \changes{v2.02}{2014/06/23}{neu}^^A
% \begin{layer}{tudheadings.head.uplinewide}
% \changes{v2.02}{2014/06/23}{neu}^^A
% \begin{layer}{tudheadings.head.lowlinewide}
% \changes{v2.02}{2014/06/23}{neu}^^A
% Die Ebenen für obere und untere Linie des Querbalkens sowohl in der normalen 
% Version, welche den Textbereich überspannt als auch in der Variante über die 
% komplette Seitenbreite. Dabei muss für beide Varianten der entsprechenden 
% horizontale Versatz beachtet werden. Dafür wird ggf. der Parameter \val{head} 
% von \pkg{scrlayer-scrpage} verwendet. 
%    \begin{macrocode}
  \DeclareNewLayer[%
    background,headsep,%
    voffset=\tud@dim@topmargin-\tud@dim@line/2,%
    addvoffset=\tud@dim@layoutvoffset,%
    contents={%
      \ifnum\tud@head@bar@num<\tw@\relax% cdhead=nocolor/litecolor
        \if@tud@head@widebar\else\tud@head@rule{\layerwidth}\fi%
      \fi%
    },%
  ]{tudheadings.head.upline}%
  \DeclareNewLayer[%
    background,headsep,%
    voffset=\tud@dim@topmargin+\tud@dim@barheight-\tud@dim@line/2,%
    addvoffset=\tud@dim@layoutvoffset,%
    contents={%
      \ifnum\tud@head@bar@num<\tw@\relax% cdhead=nocolor/litecolor
        \if@tud@head@widebar\else\tud@head@rule{\layerwidth}\fi%
      \fi%
    },%
  ]{tudheadings.head.lowline}%
  \DeclareNewLayer[%
    background,%
    width=\glueexpr\tud@dim@layoutwidth+(\tud@bleedmargin@dim)*2\relax,%
    addhoffset=\glueexpr\tud@dim@layouthoffset-\tud@bleedmargin@dim\relax,%
    voffset=\tud@dim@topmargin-\tud@dim@line/2,%
    addvoffset=\tud@dim@layoutvoffset,%
    contents={%
      \ifnum\tud@head@bar@num<\tw@\relax% cdhead=nocolor/litecolor
        \if@tud@head@widebar\tud@head@rule{\layerwidth}\fi%
      \fi%
    },%
  ]{tudheadings.head.uplinewide}%
  \DeclareNewLayer[%
    background,%
    width=\glueexpr\tud@dim@layoutwidth+(\tud@bleedmargin@dim)*2\relax,%
    addhoffset=\glueexpr\tud@dim@layouthoffset-\tud@bleedmargin@dim\relax,%
    voffset=\tud@dim@topmargin+\tud@dim@barheight-\tud@dim@line/2,%
    addvoffset=\tud@dim@layoutvoffset,%
    contents={%
      \ifnum\tud@head@bar@num<\tw@\relax% cdhead=nocolor/litecolor
        \if@tud@head@widebar\tud@head@rule{\layerwidth}\fi%
      \fi%
    },%
  ]{tudheadings.head.lowlinewide}%
%    \end{macrocode}
% \end{layer}^^A tudheadings.head.lowlinewide
% \end{layer}^^A tudheadings.head.uplinewide
% \end{layer}^^A tudheadings.head.lowline
% \end{layer}^^A tudheadings.head.upline
% \begin{layer}{tudheadings.head.date}
% \changes{v2.05}{2016/05/27}{neu}^^A
% Optionales Datum rechts oberhalb des Textbereiches.
%    \begin{macrocode}
  \DeclareNewLayer[%
    foreground,headsep,%
    addvoffset=\tud@dim@headsep/2,%
    height=1\baselineskip,%
    contents={\if@tud@head@date\hfill\tud@date@print\fi},%
  ]{tudheadings.head.date}%
%    \end{macrocode}
% \end{layer}^^A tudheadings.head.date
% \begin{layer}{tudheadings.foot.back}
% \changes{v2.03}{2015/02/15}{neu}^^A
% \begin{layer}{tudheadings.foot.logo}
% \changes{v2.02}{2014/06/23}{neu}^^A
% \changes{v2.04}{2015/05/31}{neu}^^A
% \changes{v2.03}{2015/02/15}{überarbeitetet}^^A
% \begin{layer}{tudheadings.foot.content}
% \changes{v2.04}{2015/04/21}{neu}^^A
% \changes{v2.05}{2015/07/06}{Bugfix für Kompatibilitätsmodus}^^A
% Die folgenden Ebenen dienen für die Ausgabe des Fußbereiches. Dieser kann mit
% einem farbigen Hintergrund und zusätzlichen Logos (\cs{footlogo}) sowie frei 
% wählbare Inhalte ein- oder zweispaltig mit \cs{footcontent} erstellt werden. 
% Dabei werden die Ebenen in Abhängigkeit vom gewählten Kompatibilitätsmodus
% unterschiedlich definiert. Die erste Ebene bestimmt die Hintergrundgestaltung
% des Fußbereiches.
%    \begin{macrocode}
  \DeclareNewLayer[%
    background,foot,%
    width=\glueexpr\tud@dim@layoutwidth+(\tud@bleedmargin@dim)*2\relax,%
    hoffset=\glueexpr\tud@dim@layouthoffset-\tud@bleedmargin@dim\relax,%
    height=\glueexpr\tud@dim@layoutheight-\layeryoffset%
      +\tud@dim@layoutvoffset+\tud@bleedmargin@dim\relax,%
    addvoffset=-\dp\strutbox,%
    contents={%
      \if@tud@foot@colored%
        \let\@tempc\relax%
        \ifdefvoid{\tud@pagecolor}{%
          \ifcase\tud@head@bar@num\relax\or% cdhead=litecolor
            \def\@tempc{\color{HKS41!60}}%
          \or% cdhead=barcolor
            \def\@tempc{\color{HKS41!60}}%
          \or% cdhead=color
            \def\@tempc{\color{HKS41}}%
          \fi%
        }{%
          \def\@tempc{\color{HKS41}}%
          \tud@if@strequal{\tud@pagecolor}{HKS41}%
            {\def\@tempc{\color{HKS41!60}}}%
            {}%
        }%
        \ifx\@tempc\relax\else%
          \@tempc\rule{\layerwidth}{\layerheight}%
        \fi%
      \fi%
    },%
  ]{tudheadings.foot.back}%
%    \end{macrocode}
% Bis zur Version~v2.02 wurde für die Verwendung des \DDC-Logos der Satzspiegel
% geändert. Hier wird dem Rechnung getragen, indem der farbige Hintergrund im 
% Zweifelsfall vergrößert wird.
%    \begin{macrocode}
  \tud@if@v@lower{2.03}{%
    \ModifyLayer[%
      addvoffset=-\tud@dim@ddcdiff+\ht\strutbox,%
      contents={%
        \if@tud@foot@colored%
          \let\@tempc\relax%
          \ifdefvoid{\tud@pagecolor}{%
            \ifcase\tud@head@bar@num\relax\or\or% cdhead=barcolor
              \def\@tempc{\color{HKS41!60}}%
            \or% cdhead=color
              \def\@tempc{\color{HKS41}}%
            \fi%
          }{%
            \def\@tempc{\color{HKS41}}%
            \tud@if@strequal{\tud@pagecolor}{HKS41}%
              {\def\@tempc{\color{HKS41!60}}}%
              {}%
          }%
          \ifx\@tempc\relax\else%
            \tud@ddc@check%
            \ifcase\@tempb\relax% \tud@ddc@foot@num=false
              \vbox to \layerheight{%
                \vfil\@tempc%
                \rule{\layerwidth}{%
                  \dimexpr\layerheight-\tud@dim@ddcdiff+\ht\strutbox\relax%
                }%
              }%
            \else% \tud@ddc@foot@num!=false
              \@tempc\rule{\layerwidth}{\layerheight}%
            \fi%
          \fi%
        \fi%
      },%
    ]{tudheadings.foot.back}%
  }{}%
%    \end{macrocode}
% Die zweite Ebene wird für die Ausgabe von Drittlogos und des \DDC-Logos sowie 
% freien Inhalten im Seitenfuß erstellt. Ab Version~v2.03 wird der Satzspiegel
% so gewählt, dass das \DDC-Logo und andere Inhalten in den normalen Seitenfuß
% passen.
%    \begin{macrocode}
  \DeclareNewLayer[%
    background,foot,%
    height=\tud@dim@layoutheight-\layeryoffset+\tud@dim@layoutvoffset,%
    contents={%
%    \end{macrocode}
% Falls die Höhe der Logos im Fuß nicht durch den Anwender festgelegt wurden, 
% werden passende Standardwerte gesetzt. Außerdem wird die genutzte Höhe des
% Layers nicht vollständig genutzt, um bei einem farbigen Fußbereich einen 
% gewissen Abstand vom Inhalt zur Kante zu erhalten.
%    \begin{macrocode}
      \tud@setdim\@tempdima{\layerheight-\dp\strutbox}%
%    \end{macrocode}
% Im Bedarfsfall werden die Boxen vor der Ausgabe durch die einzelnen 
% |\...@use|-Befehle neu gesetzt. Danach erfolgt die Ausgabe, wobei die 
% Boxen übereinander gelegt werden.
%    \begin{macrocode}
      \tud@footlogo@cmd@use{\@tempdima}{\layerwidth}%
      \tud@footlogo@ddc@use{\@tempdima}{\layerwidth}%
      \tud@footcontent@use{\@tempdima}{\layerwidth}%
    },%
  ]{tudheadings.foot.content}%
%    \end{macrocode}
% Bis zur Version~v2.02 wurde für die Verwendung des \DDC-Logos der Satzspiegel
% geändert. Hier wird dem Rechnung getragen.
%    \begin{macrocode}
  \tud@if@v@lower{2.03}{%
    \ModifyLayer[%
      addvoffset=-\tud@dim@ddcdiff+\ht\strutbox,%
      contents={%
        \tud@setdim\@tempdima{\layerheight-\dp\strutbox}%
        \tud@ddc@check%
        \ifcase\@tempb\relax% \tud@ddc@foot@num=false
          \tud@addtodim\@tempdima{\ht\strutbox-\tud@dim@ddcdiff}%
          \vskip\dimexpr\tud@dim@ddcdiff-\ht\strutbox-1\baselineskip\relax%
        \fi%
        \tud@footlogo@cmd@use{\@tempdima}{\layerwidth}%
        \tud@footlogo@ddc@use{\@tempdima}{\layerwidth}%
        \tud@footcontent@use{\@tempdima}{\layerwidth}%
      },%
    ]{tudheadings.foot.content}%
  }{}%
%    \end{macrocode}
% \end{layer}^^A tudheadings.foot.content
% \end{layer}^^A tudheadings.foot.logo
% \end{layer}^^A tudheadings.foot.back
% \begin{layer}{tudheadings.last}
% \changes{v2.04}{2015/04/02}{neu}^^A
% Die letzte Ebene dient nicht der Ausgabe eines bestimmten Inhaltes sondern 
% wird für evtl. notwendige Aufräumarbeiten etc. bereitgehalten.
%    \begin{macrocode}
  \DeclareNewLayer[%
    background,%
%    \end{macrocode}
% Falls ein Kapitel ohne die Option \opt{chapterpage} gesetzt wird und dennoch 
% die Gestalt des Kopfes des \pgs{tudheadings}-Seitenstils sich vom restlichen 
% Dokument unterscheiden soll (\opt{cd} bzw. \opt{cdchapter}), so dient das 
% Makro \cs{tud@head@bar@restore} zum Zurücksetzen auf das normale Verhalten. 
% Siehe \cs{tud@chapter@app}.
%    \begin{macrocode}
%<book|report>    contents=\tud@head@bar@restore,%
  ]{tudheadings.last}%
%    \end{macrocode}
% \end{layer}^^A tudheadings.last
% Aus den zuvor erstellten Ebenen werden jetzt die eigentlichen Seitenstile 
% zusammengesetzt. Als erstes wird der \pgs{headings}-Seitenstil definiert.
% Dieser verwendet den TUD-Kopf und die Fußzeilenebenen des Seitenstils
% \pgs{scrheadings}, welche zur Definition des Seitenstils verwendet werden.
% Beim Aktivieren des Seitenstils wird außerdem \cs{tud@ps@init} ausgeführt.
% Damit die Benutzerschnittstelle von \pkg{scrlayer-scrpage} für die Fußzeile 
% weiterhin durch den Anwender verwendet werden kann, werden wie erwähnt die
% entsprechenden \pgs{scrheadings}-Ebenen verwendet. 
%    \begin{macrocode}
  \DeclareNewPageStyleByLayers[%
    onbackground=\tud@ps@onbackground%
  ]{tudheadings}{%
    tudheadings.head.back,%
    tudheadings.head.content,%
    tudheadings.head.bar,%
    tudheadings.head.text,%
    tudheadings.head.upline,%
    tudheadings.head.lowline,%
    tudheadings.head.uplinewide,%
    tudheadings.head.lowlinewide,%
    tudheadings.head.date,%
    tudheadings.foot.back,%
    tudheadings.foot.content,%
    tudheadings.last,%
    scrheadings.foot.odd,%
    scrheadings.foot.even,%
    scrheadings.foot.oneside,%
    scrheadings.foot.above.line,%
    scrheadings.foot.below.line%
  }%
%    \end{macrocode}
% Zuletzt werden Aliasnamen für den Seitenstil definiert.
%    \begin{macrocode}
  \DeclareNewPageStyleAlias{tud}{tudheadings}%
  \DeclareNewPageStyleAlias{tudscr}{tudheadings}%
  \DeclareNewPageStyleAlias{tudscrheadings}{tudheadings}%
%    \end{macrocode}
% Für den \pgs{plain}-Seitenstil wird ebenso verfahren. Hier werden für die 
% Fußzeilenebenen des Seitenstils \pgs{plain.scrheadings} hinzugefügt.
%    \begin{macrocode}
  \DeclareNewPageStyleByLayers[%
    onbackground=\tud@ps@onbackground%
  ]{plain.tudheadings}{%
    tudheadings.head.back,%
    tudheadings.head.content,%
    tudheadings.head.bar,%
    tudheadings.head.text,%
    tudheadings.head.upline,%
    tudheadings.head.lowline,%
    tudheadings.head.uplinewide,%
    tudheadings.head.lowlinewide,%
    tudheadings.head.date,%
    tudheadings.foot.back,%
    tudheadings.foot.content,%
    tudheadings.last,%
    plain.scrheadings.foot.odd,%
    plain.scrheadings.foot.even,%
    plain.scrheadings.foot.oneside,%
    plain.scrheadings.foot.above.line,%
    plain.scrheadings.foot.below.line%
  }%
  \DeclareNewPageStyleAlias{plain.tudscrheadings}{plain.tudheadings}%
  \DeclareNewPageStyleAlias{tudplain}{plain.tudheadings}%
  \DeclareNewPageStyleAlias{tudscrplain}{plain.tudheadings}%
  \DeclareNewPageStyleAlias{tudheadingsplain}{plain.tudheadings}%
  \DeclareNewPageStyleAlias{tudscrheadingsplain}{plain.tudheadings}%
%    \end{macrocode}
% Des Weiteren gibt es einen selbstständigen \enquote{leeren} Seitenstil, der 
% lediglich aus dem Kopf besteht und einen lerren Seitenfuß hat.
%    \begin{macrocode}
  \DeclareNewPageStyleByLayers[%
    onbackground=\tud@ps@onbackground%
  ]{empty.tudheadings}{%
    tudheadings.head.back,%
    tudheadings.head.content,%
    tudheadings.head.bar,%
    tudheadings.head.text,%
    tudheadings.head.upline,%
    tudheadings.head.lowline,%
    tudheadings.head.uplinewide,%
    tudheadings.head.lowlinewide,%
    tudheadings.head.date,%
    tudheadings.foot.back,%
    tudheadings.foot.content,%
    tudheadings.last%
  }%
  \DeclareNewPageStyleAlias{empty.tudscrheadings}{empty.tudheadings}%
  \DeclareNewPageStyleAlias{tudempty}{empty.tudheadings}%
  \DeclareNewPageStyleAlias{tudscrempty}{empty.tudheadings}%
  \DeclareNewPageStyleAlias{tudheadingsempty}{empty.tudheadings}%
  \DeclareNewPageStyleAlias{tudscrheadingsempty}{empty.tudheadings}%
%    \end{macrocode}
% \begin{layer}{tudheadings.pagecolor}
% \changes{v2.03}{2015/01/09}{neu}^^A
% Um farbige Titel- Teil- und Kapitelseiten \emph{unabhängig} vom aktuell 
% verwendeten Seitenstil erstellen zu können, wird die zusätzliche Ebene 
% \val{tudheadings.pagecolor} definiert, die \emph{allen} Seitenstilen
% hinzugefügt wird. Dabei dient das Makros \cs{tud@pagecolor} zum Umschalten
% der Hintergrundfarben. 
%    \begin{macrocode}
  \DeclareNewLayer[%
    background,%
    hoffset=\glueexpr\tud@dim@layouthoffset-\tud@bleedmargin@dim\relax,%
    voffset=\glueexpr\tud@dim@layoutvoffset-\tud@bleedmargin@dim\relax,%
    width=\glueexpr\tud@dim@layoutwidth+(\tud@bleedmargin@dim)*2\relax,%
    height=\glueexpr\tud@dim@layoutheight+(\tud@bleedmargin@dim)*2\relax,%
    contents={%
      \ifdefvoid{\tud@pagecolor}{}{%
        \color{\tud@pagecolor}%
        \rule{\layerwidth}{\layerheight}%
      }%
    },%
  ]{tudheadings.pagecolor}%
  \AddLayersToPageStyle{@everystyle@}{tudheadings.pagecolor}%
%    \end{macrocode}
% \end{layer}^^A tudheadings.pagecolor
% Damit wurden alle Ebenen und die darauf aufbauenden Seitenstile deklariert.
% \end{layerpagestyle}^^A empty.tudheadings
% \end{layerpagestyle}^^A plain.tudheadings
% \end{layerpagestyle}^^A tudheadings
% Normalerweise werden durch \pkg{scrlayer-scrpage} bei der Umschaltung auf 
% einen mit dem Befehl \cs{newpairofpagestyles}\marg{Seitenstil} definierten 
% Seitenstil, die Seitenstile \pgs{headings} und \pgs{plain} als Aliase für 
% \pgs{\meta{Seitenstil}} und \pgs{plain.\meta{Seitenstil}} festgelegt. 
% Allerdings definiert dieser Befehl zusätzliche Ebenen für Kopf- und Fußzeile, 
% weshalb auf die Verwendung verzichtet wird. Das automatische Umschalten soll 
% dennoch ermöglicht werden, weshalb hierfür der Haken \val{onselect} verwendet 
% wird, der für jeden Seitenstil bei der Initialisierung aufgerufen wird.
%    \begin{macrocode}
  \AddToLayerPageStyleOptions{@everystyle@}{%
    onselect={%
      \tud@if@tudheadings{\currentpagestyle}{%
        \DeclarePageStyleAlias{plain}{plain.tudheadings}%
        \DeclarePageStyleAlias{headings}{tudheadings}%
        \def\sls@currentheadings{tudheadings}%
        \def\sls@currentplain{plain.tudheadings}%
        \TUD@deprecated@length\footlogoheight%
%    \end{macrocode}
% Im Seitenfuß wird für die Seitenzahl und ggf. die Kolumnentitel die passende 
% Schrift verwendet.
%    \begin{macrocode}
        \tud@komafont@set{pagenumber}{\usekomafont{tudheadings}}%
        \tud@komafont@set{pagefoot}{\usekomafont{tudheadings}}%
      }{%
%    \end{macrocode}
% Handelt es sich nicht um einen \pgs{tudheadings} Seitenstil, werden die 
% Schriften für Seitenzahl und Kolumnentitel zurückgesetzt.
%    \begin{macrocode}
        \tud@komafont@unset{pagenumber}%
        \tud@komafont@unset{pagefoot}%
      }%
    }%
  }%
%    \end{macrocode}
% Damit ist die Deklaration der Seitenstile mit \pkg{scrlayer-scrpage} beendet.
%    \begin{macrocode}
}
%    \end{macrocode}
%
% \subsubsection{Erweitertung der Seitenstilauswahl}
%
% Da sich die zuvor definierten Seitenstile von den Standardseitenstilen stark 
% unterscheiden und auch einen separaten Satzspiegel benötigen, sind einige 
% Makros zur Kontrollstrukturierung notwendig.
%
% \begin{macro}{\tud@if@tudheadings}
% \changes{v2.02}{2014/06/23}{neu}^^A
% \begin{macro}{\tud@ps@list}
% \changes{v2.02}{2014/06/23}{neu}^^A
% Mit dem Befehl \cs{tud@if@tudheadings} kann geprüft werden, ob der im ersten 
% Argument gegebene Seitenstil~-- was auch das Makro \cs{currentpagestyle} sein
% kann, welches durch das Paket \pkg{scrlayer-scrpage} definiert wird und den
% aktuellen Seitenstil beinhaltet~-- einem aus der Liste \cs{tud@ps@list}
% entspricht. Ist dies der Fall, wird das zweite Argument ausgeführt, 
% anderfalls das dritte. In die Liste \cs{tud@ps@list} werden die drei zuvor 
% definierten Seitenstile eingetragen.
%    \begin{macrocode}
\newcommand*\tud@ps@list{}
\listadd\tud@ps@list{tudheadings}
\listadd\tud@ps@list{plain.tudheadings}
\listadd\tud@ps@list{empty.tudheadings}
\newcommand*\tud@if@tudheadings[3]{%
  \xifinlist{\GetRealPageStyle{#1}}{\tud@ps@list}{#2}{#3}%
}
%    \end{macrocode}
% \end{macro}^^A \tud@ps@list
% \end{macro}^^A \tud@if@tudheadings
% \begin{macro}{\thispagestyle}
% \changes{v2.03}{2015/01/20}{Auswahl eines Aliasseitenstils unterdrückt}^^A
% Wird der Befehl \cs{thispagestyle} verwendet, muss dafür Sorge getragen 
% werden, dass kein Alias-Seitenstil expandiert wird.
%    \begin{macrocode}
\patchcmd\thispagestyle{%
  \gdef\@specialstyle{#1}%
}{%
  \xdef\@specialstyle{\GetRealPageStyle{#1}}%
}{}{\tud@patch@wrn{thispagestyle}}
%    \end{macrocode}
% \end{macro}^^A \thispagestyle
% \begin{macro}{\pagestyle}
% \changes{v2.04}{2015/06/18}{Aktivierung der Seitenstile \pgs{tudheadings} vor
%   \pkg{scrlayer-scrpage} möglich}^^A
% \begin{macro}{\tud@pagestyle}
% \changes{v2.04}{2015/06/18}{neu}
% Für den Fall, dass das Paket \pkg{scrlayer-scrpage} nicht geladen wird und 
% dennoch das Makro \cs{currentpagestyle} wie erwartet definiert ist, wird der 
% originale Befehl etwas angepasst.
%    \begin{macrocode}
\newcommand*\tud@pagestyle{}
\let\tud@pagestyle\pagestyle
\newcommand*\currentpagestyle{plain}
\pretocmd\tud@pagestyle{%
  \tud@BeforeSelectAnyPageStyle{#1}%
  \edef\currentpagestyle{#1}%
}{}{\tud@patch@wrn{pagestyle}}
%    \end{macrocode}
% Damit die neuen Seitenstile auch vor dem Laden von \pkg{scrlayer-scrpage} 
% bereits durch den Anwender ausgewählt werden können, wird \cs{pagestyle} 
% temporär zurechtgebogen. Die Definition des Makros wird gesichert und direkt 
% vor dem Laden des Paketes wiederhergestellt. Damit werden die Seitenstile
% erst aktiviert, nachdem diese auch tatsächlich erstellt wurden. Alle zuvor 
% angeforderten Seitenstile werden erst nach dem Paket propagiert.
%    \begin{macrocode}
\tud@cs@store{pagestyle}
\renewcommand*\pagestyle[1]{%
  \csuse{ps@#1}%
  \AfterAtEndOfPackage*{scrlayer-scrpage}{\pagestyle{#1}}%
}
\BeforePackage{scrlayer-scrpage}{%
  \tud@cs@restore{pagestyle}%
  \undef\tud@pagestyle%
  \undef\currentpagestyle%
}
%    \end{macrocode}
% \end{macro}^^A \tud@pagestyle
% \end{macro}^^A \pagestyle
% Die Seitenstile und Satzspiegel korrelieren sehr stark, weshalb das Paket 
% \pkg{scrlayer-scrpage} geladen sein muss und auch alle darauf aufbauenden 
% Einstellungen abgeschlossen sein müssen, um die Satzspiegel zu definieren.
% \ToDo{Abhängigkeiten Satzspiegel<>Seitenstil beseitigen}[v2.07]
%    \begin{macrocode}
\AfterAtEndOfPackage*{scrlayer-scrpage}{\AtEndPreamble{\tud@cdgeometry@init}}
%    \end{macrocode}
% \begin{macro}{\ps@tudheadings}
% \begin{macro}{\ps@plain.tudheadings}
% \begin{macro}{\ps@empty.tudheadings}
% \begin{macro}{\currentpagestyle}
% \begin{macro}{\BeforeSelectAnyPageStyle}
% \begin{macro}{\GetRealPageStyle}
% Um die rudimentäre Verwendung der Klassen auch zu ermöglichen, wenn das Laden 
% des Paketes \pkg{scrlayer-scrpage} verhindert wurde, werden für diesen Fall 
% einige notwendige Makros definiert.
%    \begin{macrocode}
\TUD@UnwindPackage{scrlayer-scrpage}{%
  \ifundef{\if@chapter}{%
    \newif\if@chapter%
    \ifundef{\chapter}{\@chapterfalse}{\@chaptertrue}%
  }{}%
  \cslet{ps@tudheadings}{\ps@headings}%
  \cslet{ps@plain.tudheadings}{\ps@plain}%
  \cslet{ps@empty.tudheadings}{\ps@empty}%
  \providecommand*\currentpagestyle{plain}%
  \providecommand*\BeforeSelectAnyPageStyle[1]{}%
  \providecommand*\tud@BeforeSelectAnyPageStyle[1]{}%
  \providecommand*\GetRealPageStyle[1]{#1}%
%    \end{macrocode}
% Außerdem wird die angepasste Definition von \cs{pagestyle} verwendet. 
%    \begin{macrocode}
  \let\pagestyle\tud@pagestyle%
  \undef\tud@pagestyle%
%    \end{macrocode}
% Das Erstellen des Satzsiegels erfolgt normalerweise nach dem Paket.
%    \begin{macrocode}
  \tud@cdgeometry@init%
}
%    \end{macrocode}
% \end{macro}^^A \GetRealPageStyle
% \end{macro}^^A \BeforeSelectAnyPageStyle
% \end{macro}^^A \currentpagestyle
% \end{macro}^^A \ps@empty.tudheadings
% \end{macro}^^A \ps@plain.tudheadings
% \end{macro}^^A \ps@tudheadings
%
% \subsubsection{Gestaltungsvarianten für Kopf- und Fußzeile}
%
% \begin{macro}{\tud@ps@onbackground}
% \changes{v2.03}{2015/02/14}{neu}^^A
% \changes{v2.04}{2015/04/21}{Kopf- und Fußeinstellungen abhängig von der Farbe 
%   des Seitenhintergrunds}^^A
% \begin{macro}{\tud@head@logocolor}
% \begin{macro}{\tud@head@fontcolor}
% \changes{v2.04}{2015/05/18}{neu}^^A
% \begin{macro}{\tud@foot@logocolor}
% \changes{v2.03}{2015/02/15}{neu}^^A
% \begin{macro}{\tud@foot@fontcolor}
% \changes{v2.04}{2015/04/21}{neu}^^A
% Das Makro \cs{tud@head@logocolor} enthält die Farbe des Kopfes. Die Gestalt 
% des Querbalkens kann über die Option \opt{cdhead} geändert werden. Für Titel, 
% Teil und Kapitel gibt es speziell dazugehörige Optionen, womit das Aussehen
% des Kopfes ggf. angepasst werden kann. Mit \cs{tud@foot@logocolor} kann
% die Farbe eines etwaigen \DDC-Logo gleichermaßen festgelegt werden, in 
% \cs{tud@foot@fontcolor} wird ggf. die Schriftfarbe für den Fuß gespeichert. 
% Um die Optionen innerhalb des Dokumentes ändern zu können, werden die 
% Anpassungen bei jeder Ausgabe eines Seitenstiles mit \cs{tud@ps@onbackground} 
% ausgeführt.
%    \begin{macrocode}
\newcommand*\tud@head@logocolor{black}
\newcommand*\tud@head@fontcolor{}
\newcommand*\tud@foot@logocolor{black}
\newcommand*\tud@foot@fontcolor{}
\newcommand*\tud@ps@onbackground{%
%    \end{macrocode}
% Zunächst die Einstellungen für Seiten ohne spezielle Hintergrundfarbe für den 
% Kopf\dots
%    \begin{macrocode}
  \ifdefvoid{\tud@pagecolor}{%
    \ifcase\tud@head@bar@num\relax% cdhead=nocolor
      \renewcommand*\tud@head@logocolor{black}%
      \renewcommand*\tud@head@fontcolor{}%
    \or% cdhead=litecolor
      \renewcommand*\tud@head@logocolor{HKS41}%
      \renewcommand*\tud@head@fontcolor{HKS41}%
    \or% cdhead=barcolor
      \renewcommand*\tud@head@logocolor{HKS41}%
      \renewcommand*\tud@head@fontcolor{white}%
    \or% cdhead=color
      \renewcommand*\tud@head@logocolor{white}%
      \renewcommand*\tud@head@fontcolor{white}%
    \fi%
%    \end{macrocode}
% \dots und den Fuß.
%    \begin{macrocode}
    \ifcase\tud@head@bar@num\relax% cdhead=nocolor
      \renewcommand*\tud@foot@logocolor{black}%
      \renewcommand*\tud@foot@fontcolor{}%
      \if@tud@foot@colored%
        \ClassWarning{\TUD@Class@Name}{%
          It isn't possible to use a colored foot together\MessageBreak%
          with a non-colored head (`cdhead=nocolor')%
        }%
      \fi%
    \else% cdhead=*color
      \if@tud@foot@colored%
        \renewcommand*\tud@foot@logocolor{white}%
        \renewcommand*\tud@foot@fontcolor{white}%
      \else%
        \renewcommand*\tud@foot@logocolor{HKS41}%
        \renewcommand*\tud@foot@fontcolor{HKS41}%
      \fi%
    \fi%
  }{%
%    \end{macrocode}
% Die Einstellungen für Seiten mit Hintergrundfarbe variieren davon. Zuerst die 
% für farbige Titel- und Teileseiten\dots
%    \begin{macrocode}
    \tud@locked@bool@preset{@tud@head@widebar}{true}%
    \tud@if@strequal{\tud@pagecolor}{HKS41}{%
      \renewcommand*\tud@head@logocolor{white}%
      \renewcommand*\tud@head@fontcolor{white}%
      \renewcommand*\tud@foot@logocolor{white}%
%    \end{macrocode}
% Die Farbe für die Schrift im Fuß wird für Poster immer weiß gesetzt, falls 
% über die Option \opt{backcolor} für den Seitenhintergrund die primäre
% Hausfarbe genutzt wird.
%    \begin{macrocode}
%<*book|report|article>
      \if@tud@foot@colored%
%</book|report|article>
        \renewcommand*\tud@foot@fontcolor{white}%
%<*book|report|article>
      \else%
        \renewcommand*\tud@foot@fontcolor{HKS41!30}%
      \fi%
%</book|report|article>
%    \end{macrocode}
% \dots sowie die für die farbigen Kapitelseiten.
%    \begin{macrocode}
    }{%
      \renewcommand*\tud@head@logocolor{HKS41}%
      \renewcommand*\tud@head@fontcolor{HKS41}%
      \ifcase\tud@head@bar@num\relax\or\or\or% cdhead=color
        \renewcommand*\tud@head@logocolor{white}%
        \renewcommand*\tud@head@fontcolor{white}%
      \fi%
      \if@tud@foot@colored%
        \renewcommand*\tud@foot@logocolor{white}%
        \renewcommand*\tud@foot@fontcolor{white}%
      \else%
        \renewcommand*\tud@foot@logocolor{HKS41}%
        \renewcommand*\tud@foot@fontcolor{HKS41}%
      \fi%
    }%
  }%
%    \end{macrocode}
% Abhängig von der eingestzten Schriftfarbe des Kopfes wird die Linienstärke
% des Querbalkens gesetzt, die Schriftfarbe des Fußes wird global geändert, 
% damit Seitenzahl und Kolumnentitel gegebenenfalls angepasst werden.
%    \begin{macrocode}
  \let\tud@dim@line\tud@dim@thinline%
  \tud@if@strequal{\tud@head@fontcolor}{white}%
    {\let\tud@dim@line\tud@dim@heavyline}%
    {}%
  \global\let\tud@foot@fontcolor\tud@foot@fontcolor%
}
%    \end{macrocode}
% \end{macro}^^A \tud@foot@fontcolor
% \end{macro}^^A \tud@foot@logocolor
% \end{macro}^^A \tud@head@fontcolor
% \end{macro}^^A \tud@head@logocolor
% \end{macro}^^A \tud@ps@onbackground
%
% \subsubsection{Inhalt des Querbalkens in der Kopfzeile}
%
% Mit dem Makro \cs{tud@head@font@set} wird die zu verwendende Schrift für den 
% Querbalken definiert. Hier wird der zu verwendende Inhalt formatiert. 
%
% \begin{macro}{\tud@head@text@line}
% \begin{macro}{\tud@head@text@list}
% \changes{v2.05}{2015/11/26}{neu}^^A
% \begin{macro}{\tud@head@text@delimiter}
% \begin{macro}{\tud@head@text@buffer}
% Diese Befehle sind Hilfsmakros, die bei der Erzeugung der Textzeile inner- und
% unterhalb des Querbalkens des TUD-Kopfes dienen.
%    \begin{macrocode}
\newcommand*\tud@head@text@line{}
\newcommand*\tud@head@text@list{}
\newcommand*\tud@head@text@delimiter{}
\newcommand*\tud@head@text@buffer{}
%    \end{macrocode}
% \end{macro}^^A \tud@head@text@buffer
% \end{macro}^^A \tud@head@text@delimiter
% \end{macro}^^A \tud@head@text@list
% \end{macro}^^A \tud@head@text@line
% \begin{macro}{\tud@head@text@add}
% \changes{v2.04}{2015/04/08}{Verwendung von \cs{protected@edef}}^^A
% \changes{v2.05}{2015/11/26}{Redesign}^^A
% Dieser Befehl dient zum Füllen einer Liste für die spätere Ausgabe der 
% Kopfzeilenfelder. Es werden sequentiellalle potenziellen Felder hinzugefügt. 
% Sollte das hinzuzufügende Feld dazu führen, dass der Text der Kopfzeile über
% den Seitenrand hinausragen würde, so wird eine weitere Zeile begonnen. Das 
% Trennzeichen zwischen einzelnen Feldern muss gepuffert werden, da dieses nur
% gesetzt werden soll, wenn ein weiteres Feld nachfolgt.
%    \begin{macrocode}
\newcommand*\tud@head@text@add[3][{, }]{%
  \tud@if@strblank{#3}{}{%
    \edef\tud@head@text@delimiter{\expandonce\tud@head@text@buffer}%
    \def\tud@head@text@buffer{#1}%
    \edef\@tempa{%
      \expandonce\tud@head@text@line%
      \expandonce\tud@head@text@delimiter%
      \unexpanded{#2#3}%
    }%
%    \end{macrocode}
% Sollte das hinzuzufügende Feld die aktuelle Kopfzeile \cs{tud@head@text@line} 
% über die Textbreite hinaus erweitern, wird der bisherige Inhalt in die Liste 
% \cs{tud@head@text@list} gespeichert und eine neue mit dem aktuellen Inhalt 
% begonnen. Andernfalls wird der aktuelle Inhalt dem bestehenden hinzugefügt.
%    \begin{macrocode}
    \settowidth\@tempdima{\@tempa}%
    \ifdim\@tempdima>\textwidth\relax%
      \listeadd\tud@head@text@list{\expandonce\tud@head@text@line}%
      \protected@edef\tud@head@text@line{#2#3}%
    \else%
      \edef\tud@head@text@line{\expandonce\@tempa}%
    \fi%
  }%
}
%    \end{macrocode}
% \end{macro}^^A \tud@head@text@add
% \begin{macro}{\tud@head@text@set}
% \changes{v2.05}{2015/11/28}{neu}^^A
% \begin{macro}{\tud@head@text@wrn}
% \begin{macro}{\if@tud@head@text@set}
% \changes{v2.05}{2015/11/28}{neu}^^A
% Für die Felder im Kopf wird bei einer Änderung dieser die Warnung bezüglich 
% der zu großen Breite der Kopfinformationen, was bei kleinen Papierformaten
% geschehen kann, (re-)definiert.
%    \begin{macrocode}
\tud@newif\if@tud@head@text@set
\newcommand*\tud@head@text@wrn[1]{}
\newcommand*\tud@head@text@set{%
  \if@tud@head@text@set%
%    \end{macrocode}
% Der Inhalt der Kopfzeile wird durch die angegeben Fakultät etc. vorgegeben.
% Sollte der Platz in einer Zeile dafür nicht ausreichen, wird eine weitere
% Zeile begonnen. Ob diese benötigt wird, ist abhängig vom Inhalt und von der
% sich daraus ergebenden Breite der Textzeile. Das Erzeugen der einzelnen 
% Textzeilen im Kopf, die in \cs{tud@head@text@list} gesichert werden, erfolgt 
% mit \cs{tud@head@text@add}\oarg{Trennzeichen}\marg{Schrift}\marg{Feld}. Die
% dafür benötigten Hilfsmakros werden vor der Verwendung initialisiert.
%    \begin{macrocode}
    \let\tud@head@text@line\@empty%
    \let\tud@head@text@list\@empty%
    \let\tud@head@text@buffer\@empty%
    \tud@head@text@add[\enskip]{\tud@head@font@bold}{\@faculty}%
    \tud@head@text@add{\tud@head@font@light}{\@department}%
    \tud@head@text@add{\tud@head@font@light}{\@institute}%
    \tud@head@text@add{\tud@head@font@light}{\@chair}%
%    \end{macrocode}
% Ganz zum Schluss wird der Rest aus \cs{tud@head@text@line} ebenso wie ggf. 
% die zusätzliche Zeile in die Liste expandiert.
%    \begin{macrocode}
    \listeadd\tud@head@text@list{\expandonce\tud@head@text@line}%
    \tud@if@strblank{\@extraheadline}{}{%
      \listadd\tud@head@text@list{\tud@head@font@light\@extraheadline}%
    }%
    \gdef\tud@head@text@wrn##1{%
      \ClassWarning{\TUD@Class@Name}{%
        The given entries for the headline\MessageBreak%
        (faculty, institute etc.) are ##1\MessageBreak%
        too wide for the textwidth%
      }%
    }%
  \fi%
}
%    \end{macrocode}
% \end{macro}^^A \if@tud@head@text@set
% \end{macro}^^A \tud@head@text@wrn
% \end{macro}^^A \tud@head@text@set
% \begin{macro}{\tud@head@text@box}
% \changes{v2.02}{2014/06/23}{neu}^^A
% \changes{v2.03}{2015/01/09}{Zweite Zeile wird auch leer gesetzt.}^^A
% Dieser Befehl ist der Inhalt der Ebene für den Text der Kopfzeile.
%    \begin{macrocode}
\newcommand*\tud@head@text@box{%
%    \end{macrocode}
% Die Ausgabe der Textzeile(n) mit Fakultät etc. im Kopfbereiche erfolgt über 
% das Makro \cs{tud@head@text@write}. Hierbei ist zu beachten, dass für die 
% erste Zeile bei einem zweifarbigem Kopf eine andere Textfarbe als für die 
% restlichen benötigt wird. Außerdem ist für diese aufgrund der Linien im
% Querbalken ein etwas größerer Abstand zur zweiten Zeile notwendig, weshalb
% die temporären Makros \cs{@tempb} und \cs{@tempc} einmalig genutzt werden.
% Die Farbe des Textes der ersten Zeile entspricht immer der des Kopfes.
%    \begin{macrocode}
  \def\@tempb{\tud@color{\tud@head@fontcolor}}%
  \def\@tempc{\depth+\tud@dim@heavyline}%
%    \end{macrocode}
% Das Makro \cs{@tempa} wird zur Ababreitung der Liste \cs{tud@head@text@list} 
% definiert.
%    \begin{macrocode}
  \def\@tempa##1{%
    \settowidth\@tempdima{##1}%
%    \end{macrocode}
% Sollte eine der Textzeilen zu lang sein, was insbesondere bei kleineren 
% Papierformaten vorkommen kann, dann wird eine Warnung ausgegeben.
%    \begin{macrocode}
    \ifdim\@tempdima>\textwidth\relax%
      \tud@head@text@wrn{\the\dimexpr\@tempdima-\textwidth\relax}%
      \ifdim\dimexpr\@tempdima-\textwidth\relax>\hfuzz\relax%
        \hfuzz=\dimexpr\@tempdima-\textwidth\relax%
      \fi%
    \fi%
    \@tempb%
    \tud@head@text@write[\@tempc]{##1}%
    \def\@tempb{\newline}%
    \let\@tempc\z@%
%    \end{macrocode}
% Die weiteren Zeilen sind bei zweifarbigen Kopf normalerweise blau, nur für
% einen dunklen Seitenhintergrund weiß.
%    \begin{macrocode}
    \ifnum\tud@head@bar@num>\@ne\relax% cdhead=barcolor/color
      \ifdefvoid{\tud@pagecolor}{\color{HKS41}}{%
        \tud@if@strequal{\tud@pagecolor}{HKS41}{\color{white}}{\color{HKS41}}%
      }%
    \fi%
  }%
%    \end{macrocode}
% Dies ist nun die eigentliche Ausgabe, welche in einer vertikalen Box erfolgt.
%    \begin{macrocode}
  \vbox{%
%    \end{macrocode}
% Das Paket \pkg{ragged2e} ändert im Zweifelsfall die Länge \cs{spaceskip}. Um 
% den Kopf unbeeinflusst davon immer in der gleichen Gestalt erscheinen zu 
% lassen, wird dies hier temporär unterdrückt.
%    \begin{macrocode}
    \let\@raggedtwoe@everyselectfont\relax%
    \tud@setdim\spaceskip{\z@}%
    \selectfont%
    \offinterlineskip%
    \forlistloop\@tempa{\tud@head@text@list}%
  }%
  \global\let\tud@head@text@wrn\@gobble%
}
%    \end{macrocode}
% \end{macro}^^A \tud@head@text@box
% \begin{macro}{\tud@head@text@write}
% \changes{v2.02}{2014/06/23}{Vertikaler Freiraum für Ober- und Unterlängen 
%   mit \cs{vphantom} eingefügt}^^A
% \changes{v2.02}{2014/12/04}{Zentrierung des Zeilentextes}^^A
% Befehl zur Ausgabe der ersten und evtl. zweiten Textzeile im TUD-Kopf
%    \begin{macrocode}
\newcommand*\tud@head@text@write[2][\z@]{%
  \raisebox{%
    \dimexpr(\tud@dim@barheight+\tud@dim@line*2-\totalheight)/2\relax%
  }[%
    \dimexpr\tud@dim@barheight-\depth\relax%
  ][\dimexpr\glueexpr#1\relax\relax]{#2\vphantom{\tud@font@phantomglyphs}}%
}
%    \end{macrocode}
% \end{macro}^^A \tud@head@text@write
% \begin{macro}{\tud@head@rule}
% \changes{v2.02}{2014/06/23}{gewünschte Breite als Argument}^^A
% Der Querbalken des Kopfes läuft je nach Parameterwahl \cs{tud@head@bar@num}
% entweder nur über den Textbereich oder aber über die gesamte Seitenbreite.
% Der Befehl erzeugt eine horizontale Linie mit der übergebenen Breite und 
% über \cs{tud@dim@line} definierter Dicke.
%    \begin{macrocode}
\newcommand*\tud@head@rule[1]{%
  \tud@color{\tud@head@fontcolor}%
  \rule[\ht\strutbox]{#1}{\tud@dim@line}%
}
%    \end{macrocode}
% \end{macro}^^A \tud@head@rule
%
% \subsubsection{Boxen für Layerinhalte}
%
% \begin{macro}{\tud@newlayerbox}
% \changes{v2.04}{2015/05/31}{neu}^^A
% \begin{macro}{\tud@savelayerbox}
% \changes{v2.04}{2015/05/31}{neu}^^A
% \begin{macro}{\tud@uselayerbox}
% \changes{v2.04}{2015/05/31}{neu}^^A
% Die Inhalte für Kopf und Fuß der \pgs{tudheadings}-Seitenstile~-- sprich das 
% Logo der \TnUD, die \DDC-Logos, ein mögliches Zweilogo sowie die Logos und 
% Inhalte im Fuß werden in Boxen gesetzt, um die Anzahl der benötigten Aufrufe
% von \cs{includegraphics} möglichst gering zu halten.
%    \begin{macrocode}
\newcommand*\tud@newlayerbox[1]{%
  \global\expandafter\newsavebox\csname tud@layer@#1\endcsname%
}
\newcommand*\tud@savelayerbox[1]{%
  \global\expandafter\sbox\csname tud@layer@#1\endcsname%
}
\newcommand*\tud@uselayerbox[1]{%
  \expandafter\usebox\csname tud@layer@#1\endcsname%
}
%    \end{macrocode}
% \end{macro}^^A \tud@uselayerbox
% \end{macro}^^A \tud@savelayerbox
% \end{macro}^^A \tud@newlayerbox
% \begin{macro}{\tud@vlayerbox}
% \changes{v2.04}{2015/05/31}{neu}^^A
% \changes{v2.06o}{2022/08/08}{unschöner Fix für duplizierte Warnungen}^^A
% Für die Ausgabe der Logos und Inhalte wird dieser Befehl definiert. Dieser 
% setzt die im zweiten Argument angegebenen Inhalte in eine vertikale Box, 
% deren gewünschte Höhe im ersten Argument angegeben wird. Für den Fall, dass 
% die gewünschten Inhalte die maximale Höhe überschreiten, wird eine Warnung 
% erzeugt. Der Inhalt dieser Warnung wird im dritten Argument angegeben. Damit
% soll dem Anwender geholfen werden, in diesem Fall die richtigen Maßnahmen zu
% ergreifen und nicht lediglich eine Meldung einer zu übervollen \cs{vbox} zu
% erhalten.
%    \begin{macrocode}
\newcommand*\tud@vlayerbox[4][]{%
  \begingroup%
    \setbox\z@\vbox{#3}%
    \tud@setdim\tud@res@glue{\dimexpr\glueexpr#2\relax\relax}%
    \ifdim\dimexpr\ht\z@+\dp\z@-\tud@res@glue\relax>\p@\relax%
      \edef\tud@res@a{%
        \noexpand\ClassWarning{\noexpand\TUD@Class@Name}{%
          #4\noexpand\MessageBreak%
          The total height of \the\dimexpr\ht\z@+\dp\z@\relax\space exceeds the%
          \noexpand\MessageBreak maximum height (\the\tud@res@glue)%
        }%
      }%
      \IfArgIsEmpty{#1}{\tud@res@a}{%
        \expandafter\ifx\csname tud@layer@#1@wrn\endcsname\tud@res@a\else%
          \tud@res@a%
          \global\cslet{tud@layer@#1@wrn}\tud@res@a%
        \fi%
      }%
    \fi%
  \endgroup%
  \vbox to #2{#3}%
}
%    \end{macrocode}
% \end{macro}^^A \tud@vlayerbox
%
% \iffalse
%</class&body>
% \fi
%
% \subsection{Optionen für das \DDC-Logo}
%
% \begin{macro}{\tud@comp@clearpage}
% \changes{v2.04}{2015/05/31}{neu}^^A
% \begin{macro}{\tud@comp@resetpagestyle}
% \changes{v2.04}{2015/05/31}{neu}^^A
% \begin{macro}{\if@tud@ddc@internal}
% \changes{v2.02}{2014/07/08}{neu}^^A
% Bis zur Version~v2.02 wurden unterschiedliche Satzsiegel für den Seitenfuß 
% mit und ohne \DDC-Logo verwendet. Damit dieser im Zweifelsfall umgestellt 
% werden kann, wurde vor dem Ausführen der entsprechenden Optionen ein 
% Seitenumbruch erzwungen und nach dem Verarbeiten der Optionen der aktuelle 
% Seitenstil erneut aufgerufen. Die beiden folgenden Makros werden für dieses 
% Unterfangen definiert, jedoch bei der Abarbeitung der Optionen nur noch im 
% Kompatibilitätmodus ausgeführt. Der Schalter \cs{if@tud@ddc@internal} wird 
% intern von den Optionen \opt{ddc}, \opt{ddchead} und \opt{ddcfoot} verwendet,
% um rekursive Aufrufe der Optionen zu verhindern.
%    \begin{macrocode}
%<*class&option>
\tud@newif\if@tud@ddc@internal
\newcommand*\tud@comp@clearpage{}%
\newcommand*\tud@comp@resetpagestyle{}%
%</class&option>
%<*class&body>
\tud@if@v@lower{2.04}{%
  \renewcommand*\tud@comp@clearpage{%
    \if@tud@ddc@internal\else%
      \tud@if@tudheadings{\currentpagestyle}{\clearpage}{}%
    \fi%
  }%
  \renewcommand*\tud@comp@resetpagestyle{%
    \if@tud@ddc@internal\else%
      \tud@if@tudheadings{\currentpagestyle}{%
        \expandafter\pagestyle\expandafter{\currentpagestyle}%
      }{}%
    \fi%
  }%
}{}%
%</class&body>
%    \end{macrocode}
% \end{macro}^^A \if@tud@ddc@internal
% \end{macro}^^A \tud@comp@clearpage
% \end{macro}^^A \tud@comp@resetpagestyle
%
% \iffalse
%<*class&option>
% \fi
%
% \begin{option}{ddc}
% \changes{v2.02}{2014/06/23}{automatische Logowahl}^^A
% \begin{option}{ddchead}
% \changes{v2.02}{2014/06/23}{Logo von \DDC entweder in Kopf oder Fuß}^^A
% \begin{option}{ddcfoot}
% \changes{v2.02}{2014/06/23}{Logo von \DDC entweder in Kopf oder Fuß}^^A
% Diese Optionen dienen zur Auswahl des \DDC-Logos auf Seiten mit dem Stil 
% \pgs{tudheadings}. Die Option \opt{ddchead} setzt das Logo dabei immer in den
% Kopf, wobei ein mit \cs{headlogo} definiertes Zweitlogo gegebenenfalls 
% überschrieben wird. Die Option \opt{ddcfoot} setzt das Logo immer in den Fuß. 
% Mit der Option \opt{ddc} wird das Logo nur in den Kopf gesetzt, wenn kein 
% Zweitlogo angegeben ist. Ist dies jedoch der Fall, wird das Logo stattdessen 
% im Fuß ausgegeben.
% \begin{macro}{\tud@ddc@switch}
% \changes{v2.02}{2014/06/23}{neu}^^A
% Das Makro definiert die gültigen Werte für die \DDC-Optionen \opt{ddc}, 
% \opt{ddchead} sowie \opt{ddcfoot}.
%    \begin{macrocode}
\newcommand*\tud@ddc@switch{}
\edef\tud@ddc@switch{%
  \TUD@bool@numkey,%
  {color}{2},{colour}{2},{cdcolor}{2},{cdcolour}{2},%
  {colorblack}{3},{colourblack}{3},{cdcolorblack}{3},{cdcolourblack}{3},%
  {gray}{4},{grey}{4},{hks92}{4},{cdgray}{4},{cdgrey}{4},%
  {black}{5},{cdblack}{5},%
  {blue}{6},{hks41}{6},{cdblue}{6},{cddarkblue}{6},%
  {white}{7},{cdwhite}{7}%
}
%    \end{macrocode}
% \end{macro}^^A \tud@ddc@switch
% \begin{macro}{\tud@ddc@auto@num}
% \changes{v2.02}{2014/06/23}{neu}^^A
% \begin{macro}{\if@tud@ddc@auto}
% \changes{v2.02}{2014/06/23}{neu}^^A
% \begin{macro}{\if@tud@headlogo@option@set}
% \changes{v2.04}{2015/05/31}{neu}^^A
% \begin{macro}{\if@tud@footlogo@option@set}
% \changes{v2.04}{2015/06/01}{neu}^^A
% Die Option \opt{ddc}.
%    \begin{macrocode}
\tud@newif\if@tud@headlogo@option@set
\tud@newif\if@tud@footlogo@option@set
\tud@newif\if@tud@ddc@auto
\newcommand*\tud@ddc@auto@num{0}
\TUD@key{ddc}[true]{%
%    \end{macrocode}
% Im Kompatibiltätsmodus wird ein Seitenumbruch erzwungen. Anschließend wird 
% die Option abgearbeitet.
%    \begin{macrocode}
  \tud@comp@clearpage%
  \TUD@set@numkey{ddc}{tud@ddc@auto@num}{\tud@ddc@switch}{#1}%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
%    \end{macrocode}
% Wurde die Option \opt{ddc} intern durch \opt{ddchead} oder \opt{ddcfoot} 
% aufgerufen, wird die automatische Auswahl des \DDC-Logos deaktiviert.
%    \begin{macrocode}
    \if@tud@ddc@internal%
      \@tud@ddc@autofalse%
    \else%
%    \end{macrocode}
% Andernfalls wird die automatische Auswahl aktiviert und die beiden Optionen
% \opt{ddchead} sowie \opt{ddcfoot} intern zurückgesetzt.
%    \begin{macrocode}
      \@tud@ddc@autotrue%
      \@tud@ddc@internaltrue%
      \TUDoptions{ddchead=false}%
      \TUDoptions{ddcfoot=false}%
      \@tud@ddc@internalfalse%
    \fi%
%    \end{macrocode}
% Sowohl die \DDC-Logos als auch ein mögliches Zweilogo (\cs{headlogo}) werden
% in den entsprechenden Layern durch Boxen ausgegeben. Die beiden Schalter 
% führen zum Erneuern der dazugehörigen Logoboxen. Siehe die Beschreibung der 
% Makros \cs{tud@headlogo@option@set} sowie \cs{tud@footlogo@option@set}.
%    \begin{macrocode}
    \global\@tud@headlogo@option@settrue%
    \global\@tud@footlogo@option@settrue%
  \fi%
%    \end{macrocode}
% Abschließend wird im Kompatibilitätsmodus der aktuelle Seitenstil aufgerufen,
% um bei einem geänderten Fuß den notwendigen Satzspiegel zu laden.
%    \begin{macrocode}
  \tud@comp@resetpagestyle%
}
%    \end{macrocode}
% \end{macro}^^A \if@tud@footlogo@option@set
% \end{macro}^^A \if@tud@headlogo@option@set
% \end{macro}^^A \if@tud@ddc@auto
% \end{macro}^^A \tud@ddc@auto@num
% \begin{macro}{\tud@ddc@head@num}
% \changes{v2.03}{2015/01/22}{Seitenstilauswahl bei Deaktivierung verbessert}^^A
% Die Option \opt{ddchead} dient zum zwingenden Setzen des \DDC-Logos im Kopf 
% der Seiten im Stil von \pgs{tudheadings}.
%    \begin{macrocode}
\newcommand*\tud@ddc@head@num{0}
\TUD@key{ddchead}[true]{%
%    \end{macrocode}
% Der Seitenumbruch im Kompatibilitätsmodus.
%    \begin{macrocode}
  \tud@comp@clearpage%
  \TUD@set@numkey{ddchead}{tud@ddc@head@num}{\tud@ddc@switch}{#1}%
%    \end{macrocode}
% Beim internen Aufruf soll lediglich der Wert des Schlüssels geändert werden. 
% Wurde die Option durch den Anwender genutzt, werden die korrespondierenden 
% Optionen zurückgesetzt. Der Aufruf der Option \opt{ddc} führt zum erneuten 
% setzen der Logoboxen.
%    \begin{macrocode}
  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
    \if@tud@ddc@internal\else%
      \@tud@ddc@internaltrue%
      \TUDoptions{ddcfoot=false}%
      \TUDoptions{ddc=false}%
      \@tud@ddc@internalfalse%
    \fi%
  \fi%
%    \end{macrocode}
% Das Setzen des Seitenstils im Kompatibilitätsmodus.
%    \begin{macrocode}
  \tud@comp@resetpagestyle%
}
%    \end{macrocode}
% \end{macro}^^A \tud@ddc@head@num
% \begin{macro}{\tud@ddc@foot@num}
% \changes{v2.03}{2015/01/22}{Seitenstilauswahl bei Deaktivierung verbessert}^^A
% Die Option \opt{ddcfoot} dient zum zwingenden Setzen des \DDC-Logos im Fuß 
% der Seiten im Stil von \pgs{tudheadings}. Das Vorgehen beim Umschalten des
% Schlüssels ist äquivalent zur Option \opt{ddchead}
%    \begin{macrocode}
\newcommand*\tud@ddc@foot@num{0}
\TUD@key{ddcfoot}[true]{%
%    \end{macrocode}
% Der Seitenumbruch im Kompatibilitätsmodus.
%    \begin{macrocode}
  \tud@comp@clearpage%
  \TUD@set@numkey{ddcfoot}{tud@ddc@foot@num}{\tud@ddc@switch}{#1}%
%    \end{macrocode}
% Beim internen Aufruf soll lediglich der Wert des Schlüssels geändert werden. 
% Wurde die Option durch den Anwender genutzt, werden die korrespondierenden 
% Optionen zurückgesetzt. Der Aufruf der Option \opt{ddc} führt zum erneuten 
% setzen der Logoboxen.
%    \begin{macrocode}
  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
    \if@tud@ddc@internal\else%
      \@tud@ddc@internaltrue%
      \TUDoptions{ddchead=false}%
      \TUDoptions{ddc=false}%
      \@tud@ddc@internalfalse%
    \fi%
  \fi%
%    \end{macrocode}
% Das Setzen des Seitenstils im Kompatibilitätsmodus.
%    \begin{macrocode}
  \tud@comp@resetpagestyle%
}
%    \end{macrocode}
% \end{macro}^^A \tud@ddc@foot@num
% \end{option}^^A ddcfoot
% \end{option}^^A ddchead
% \end{option}^^A ddc
%
% \iffalse
%</class&option>
%<*class&body>
% \fi
%
% \begin{macro}{\tud@ddc@check}
% \changes{v2.02}{2014/06/23}{neu}^^A
% Dieses Hilfsmakro wird aufgerufen, wenn geprüft wird, welche Einstellungen
% für Kopf und Fuß des Seitenstiles \pgs{tudheadings} zum Tragen kommen sollen.
% Über den Schalter \cs{if@tud@ddc@auto} wird festgelegt, ob die Auswahl des
% \DDC-Logos automatisch erfolgen soll~-- Option \opt{ddc} wurde verwendet.
% Ist dies der Fall, wird das Logo standardmäßig im Kopf gesetzt. Ist jedoch
% durch den Befehl \cs{headlogo} ein Zweitlogo angegeben worde, wird dieses in
% der Fußzeile ausgegeben. Die Verwendung einer der Optionen \opt{ddchead} bzw. 
% \opt{ddcfoot} forciert die Ausgabe des \DDC-Logos an der gewünschten Stelle.
% Die jeweils gültige Auswahl für Kopf bzw. Fuß wird in den Makros \cs{@tempa} 
% bzw. \cs{@tempb} geschrieben und kann anschließend ausgewertet werden.
%    \begin{macrocode}
\newcommand*\tud@ddc@check{%
  \let\@tempa\tud@ddc@head@num%
  \let\@tempb\tud@ddc@foot@num%
  \if@tud@ddc@auto%
    \ifdefvoid{\tud@headlogo@filename}{%
      \let\@tempa\tud@ddc@auto@num%
      \let\@tempb\z@%
    }{%
      \let\@tempa\z@%
      \let\@tempb\tud@ddc@auto@num%
    }%
  \fi%
%    \end{macrocode}
% Für die Satzspiegelvergrößerung wird beim Vorhandensein eines oder mehrerer 
% Logos im Fuß die Variable \cs{@tempb} auf einen negativen Wert gesetzt, um 
% auch ohne die Ausgabe eines \DDC-Logos den Fußbereich zu vergrößern.
%    \begin{macrocode}
  \tud@if@v@lower{2.03}{%
    \ifnum\@tempb=\z@\relax%
      \ifdefvoid{\tud@footlogo@filenames}{}{\let\@tempb\m@ne}%
    \fi%
  }{}%
}
%    \end{macrocode}
% \end{macro}^^A \tud@ddc@check
%
% \iffalse
%</class&body>
%<*class&option>
% \fi
%
% \subsection{Der Kopfbereich der Seitenstile}
%
% Es folgen Option und Befehle zur Gestaltung des Kopfbereichs mit Hauptlogo, 
% Querbalken und ggf. Zweitlogo.
%
% \begin{option}{cdhead}
% \changes{v2.03}{2015/01/29}{neu}^^A
% \changes{v2.04}{2015/05/18}{Wert \val{barcolor} neu}^^A
% \begin{macro}{\tud@head@font@num}
% \changes{v2.03}{2015/02/04}{neu}^^A
% \begin{macro}{\if@tud@head@font@num@locked}
% \changes{v2.03}{2015/02/04}{neu}^^A
% \begin{macro}{\tud@head@bar@num}
% \changes{v2.03}{2015/02/04}{neu}^^A
% \begin{macro}{\if@tud@head@bar@num@locked}
% \changes{v2.04}{2015/04/01}{neu}^^A
% \begin{macro}{\if@tud@head@widebar}
% \changes{v2.03}{2015/02/14}{neu}^^A
% \begin{macro}{\if@tud@head@widebar@locked}
% \changes{v2.03}{2015/02/14}{neu}^^A
% \begin{macro}{\if@tud@head@font@set}
% \begin{macro}{\if@tud@head@date}
% \changes{v2.05}{2016/05/27}{neu}^^A
% Mit dieser Option wird die zentrale Benutzerschnittstelle für Einstellungen 
% des typischen Querbalkens für den TUD-Kopf geschaffen. Durch sie können
% sowohl die verwendete Schrift als auch die Stärke für den Balkentext
% (Institut, Fakultät etc.) geändert werden. Zusätzlich ist die Laufweite des 
% Querbalkens bzw. die Farbe einstellbar.
%    \begin{macrocode}
\tud@locked@newnum{tud@head@font@num}{0}
\tud@locked@newnum{tud@head@bar@num}{0}
\tud@locked@newbool{@tud@head@widebar}
\tud@newif\if@tud@head@font@set
\tud@newif\if@tud@head@date
\TUD@key{cdhead}[true]{%
  \TUD@set@numkey{cdhead}{@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},%
    {nocolor}{3},{nocolour}{3},{monochrome}{3},{monochromatic}{3},%
    {colorlite}{4},{litecolor}{4},{colourlite}{4},{litecolour}{4},%
    {colorlight}{4},{lightcolor}{4},{colourlight}{4},{lightcolour}{4},%
    {pale}{4},{colorpale}{4},{palecolor}{4},{colourpale}{4},{palecolour}{4},%
    {colorbar}{5},{barcolor}{5},{colourbar}{5},{barcolour}{5},%
    {bicolor}{6},{bicolour}{6},{twocolor}{6},{twocolour}{6},%
    {bichrome}{6},{bichromatic}{6},{dichrome}{6},{dichromatic}{6},%
    {color}{6},{colour}{6},%
    {full}{6},{colorfull}{6},{fullcolor}{6},{colourfull}{6},{fullcolour}{6},%
    {textwidth}{7},{slim}{7},{slimhead}{7},{nowide}{7},{nowidehead}{7},%
    {narrow}{7},{narrowhead}{7},{small}{7},{smallhead}{7},%
    {paperwidth}{8},{wide}{8},{widehead}{8},%
    {date}{9},{showdate}{9},{dateon}{9},{datetrue}{9},{dateyes}{9},%
    {nodate}{10},{hidedate}{10},{dateoff}{10},{datefalse}{10},{dateno}{10}%
  }{#1}%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
    \ifcase\@tempa\relax% false
      \tud@locked@num@set{tud@head@font@num}{0}%
    \or% true
      \tud@locked@num@set{tud@head@font@num}{1}%
    \or% heavy
      \tud@locked@num@set{tud@head@font@num}{2}%
    \or% nocolor
      \tud@locked@num@set{tud@head@bar@num}{0}%
    \or% litecolor
      \tud@locked@num@set{tud@head@bar@num}{1}%
    \or% barcolor
      \tud@locked@num@set{tud@head@bar@num}{2}%
    \or% color
      \tud@locked@num@set{tud@head@bar@num}{3}%
    \or% textwidth
      \tud@locked@bool@set{@tud@head@widebar}{false}%
    \or% paperwidth
      \tud@locked@bool@set{@tud@head@widebar}{true}%
    \or% date
      \@tud@head@datetrue%
    \or% nodate
      \@tud@head@datefalse%
    \fi%
    \ifnum\@tempa<\thr@@\relax%
      \global\@tud@head@font@settrue%
    \fi%
  \fi%
}
%    \end{macrocode}
% \end{macro}^^A \if@tud@head@date
% \end{macro}^^A \if@tud@head@font@set
% \end{macro}^^A \if@tud@head@widebar@locked
% \end{macro}^^A \if@tud@head@widebar
% \end{macro}^^A \if@tud@head@bar@num@locked
% \end{macro}^^A \tud@head@bar@num
% \end{macro}^^A \if@tud@head@font@num@locked
% \end{macro}^^A \tud@head@font@num
% \end{option}^^A cdhead
%
% \iffalse
%</class&option>
%<*class&body>
% \fi
%
% \begin{macro}{\tud@layer@main@black}
% \changes{v2.04}{2015/05/31}{neu}^^A
% \begin{macro}{\tud@layer@main@HKS41}
% \changes{v2.04}{2015/05/31}{neu}^^A
% \begin{macro}{\tud@layer@main@white}
% \changes{v2.04}{2015/05/31}{neu}^^A
% Diese drei Boxen werden für das Logo der \TnUD reserviert. Abhängig von der 
% gewählten Option des Layouts und der Seitenfarbe wird eine der Logos in der 
% notwendigen Farbe ausgewählt.
%    \begin{macrocode}
\tud@newlayerbox{main@black}
\tud@newlayerbox{main@HKS41}
\tud@newlayerbox{main@white}
%    \end{macrocode}
% \end{macro}^^A \tud@layer@main@white
% \end{macro}^^A \tud@layer@main@HKS41
% \end{macro}^^A \tud@layer@main@black
%
% \subsubsection{Das Hauptlogo der \TnUD}
%
% \begin{macro}{\tud@mainlogo@set}
% \changes{v2.04}{2015/05/31}{neu}^^A
% \begin{macro}{\if@tud@mainlogo@wrn}
% \changes{v2.04}{2015/05/31}{neu}^^A
% \begin{length}{\tud@dim@mainlogoheight}
% \changes{v2.04}{2015/05/31}{neu}^^A
% \begin{macro}{\tud@mainlogo@wrn}
% \changes{v2.02}{2014/06/23}{Umbenennen von \cs{tud@head@logo@wrn}}^^A
% Das Makro \cs{tud@mainlogo@set} setzt sowohl das Logo der \TnUD als auch~-- 
% durch den Aufruf der entsprechenden Befehle zum Schluss~-- alle weiteren
% Logos und Inhalte im Kopf und Fuß. Dies geschieht nach jeder Änderung des 
% Satzspiegels beim Ausführen der einzelnen Seitenstil-Layer. Dafür wird der
% Schalter \cs{if@tud@mainlogo@set} im Hook \cs{tud@AfterChangingArea} gesetzt.
%    \begin{macrocode}
\tud@newdim\tud@dim@mainlogoheight
\newcommand*\tud@mainlogo@wrn[1]{}
\tud@newif\if@tud@mainlogo@set
\newcommand*\tud@mainlogo@set{%
  \if@tud@mainlogo@set%
    \def\@tempa{\includegraphics[keepaspectratio,width=\tud@dim@logowidth]}%
    \tud@savelayerbox{main@black}{\@tempa{TUD-black}}%
    \tud@savelayerbox{main@HKS41}{\@tempa{TUD-blue}}%
    \tud@savelayerbox{main@white}{\@tempa{TUD-white}}%
    \settoheight\tud@dim@mainlogoheight{\tud@uselayerbox{main@black}}%
    \global\tud@dim@mainlogoheight=\tud@dim@mainlogoheight%
%    \end{macrocode}
% Es soll sichergestellt werden, dass das bei der Verwendung von \pkg{typearea}
% über den Satzspiegel in den Seitenrand hinausragende TUD-Logo nicht außerhalb
% des Druckrandes liegt. Dies kann beispielsweise bei kleinen Papierformaten, 
% zweiseitigem Satz und/oder einem zu großen \opt{DIV}-Wertes passieren. Es
% wird in diesem Fall eine Warnung ausgegeben, damit das Problem durch den
% Anwender behoben werden kann.
%    \begin{macrocode}
    \gdef\tud@mainlogo@wrn##1{%
      \ifdim##1<\ta@bcor\relax%
        \ClassWarning{\TUD@Class@Name}{%
          The selected page layout means that the\MessageBreak%
          logo of TUD extends beyond the printing area. \MessageBreak%
          The inner margin is smaller than BCOR\MessageBreak%
          (`BCOR=\the\ta@bcor', inner margin is \the##1)\MessageBreak%
          Maybe you should decrease the current value\MessageBreak%
          of DIV (`DIV=\the\ta@div')%
        }%
        \global\let\tud@mainlogo@wrn\@gobble%
      \fi%
    }%
%    \end{macrocode}
% Hier werden die beiden Makros aufgerufen, um die Inhalte von Kopf und Fuß in 
% den Boxen in der richtigen Größe neu zu setzen.
%    \begin{macrocode}
    \tud@headlogo@set%
    \global\@tud@footlogo@option@settrue%
    \tud@footlogo@option@set%
    \global\@tud@mainlogo@setfalse%
  \fi%
}
\AtBeginDocument{%
  \@tud@mainlogo@settrue%
  \tud@mainlogo@set%
}
%    \end{macrocode}
% \end{macro}^^A \tud@mainlogo@wrn
% \end{length}^^A \tud@dim@mainlogoheight
% \end{macro}^^A \if@tud@mainlogo@set
% \end{macro}^^A \tud@mainlogo@set
% \begin{macro}{\tud@mainlogo@use}
% \changes{v2.04}{2015/05/31}{neu}^^A
% Hiermit erfolgt die Ausgabe der gespeicherten Boxen für das Logo der \TnUD, 
% wobei \cs{tud@head@logocolor} die Farbe festlegt.
%    \begin{macrocode}
\newcommand*\tud@mainlogo@use{%
  \tud@mainlogo@wrn{%
    \dimexpr\oddsidemargin+1in+\tud@dim@logox-\tud@dim@widemargin\relax%
  }%
  \tud@uselayerbox{main@\tud@head@logocolor}%
}
%    \end{macrocode}
% \end{macro}^^A \tud@mainlogo@use
%
% \subsubsection{Optionales Zweit- oder \DDC-Logo}
%
% \begin{macro}{\tud@layer@head@black}
% \changes{v2.04}{2015/05/31}{neu}^^A
% \begin{macro}{\tud@layer@head@HKS41}
% \changes{v2.04}{2015/05/31}{neu}^^A
% \begin{macro}{\tud@layer@head@white}
% \changes{v2.04}{2015/05/31}{neu}^^A
% \begin{macro}{\tud@layer@head@option}
% \changes{v2.04}{2015/05/31}{neu}^^A
% Diese Boxen werden für das \DDC-Logo und das Zweitlogo im Kopf definiert. Der 
% Box \cs{tud@layer@head@option} fäält dabei die Rolle zu, entweder ein~-- per 
% Option gewähltes~-- \DDC-Logo oder aber das mit \cs{headlogo} angegebene 
% Zweitlogo zusichern und auszugeben. Die anderen drei Boxen speichern das Logo 
% von \DDC in den drei für die unterschiedlichen Layoutausprägung benötigten 
% Varianten.
%    \begin{macrocode}
\tud@newlayerbox{head@black}
\tud@newlayerbox{head@HKS41}
\tud@newlayerbox{head@white}
\tud@newlayerbox{head@option}
%    \end{macrocode}
% \end{macro}^^A \tud@layer@head@option
% \end{macro}^^A \tud@layer@head@white
% \end{macro}^^A \tud@layer@head@HKS41
% \end{macro}^^A \tud@layer@head@black
% \begin{macro}{\headlogo}
% \changes{v2.02}{2014/06/23}{Anpassung an automatische Wahl des \DDC-Logos}^^A
% \begin{macro}{\tud@headlogo@filename}
% \changes{v2.02}{2014/06/23}{neu}^^A
% \begin{macro}{\tud@headlogo@fileoptions}
% \changes{v2.02}{2014/06/23}{neu}^^A
% Diese Befehle dienen zum Einbinden eines möglichen Zweitlogos im Kopf bündig
% zum rechten Seitenrand. Mit \cs{headlogo}\oarg{Optionsliste}\marg{Dateiname} 
% werden der Dateiname und das optionale Argument in \cs{tud@headlogo@filename} 
% bzw. \cs{tud@headlogo@fileoptions} gespeichert, damit diese später bei der
% tatsächlichen Verwendung des Logos mit dem Makro \cs{tud@headlogo@set} an den
% Befehl \cs{includegraphics} weitergereicht werden können.
% \ToDo{angehängte Parameterliste \val{:} für tudpage unterstützen}[v2.07]
%    \begin{macrocode}
\newcommand*\tud@headlogo@filename{}
\newcommand*\tud@headlogo@fileoptions{}
\newcommand*\headlogo[2][]{%
  \tud@comp@clearpage%
  \renewcommand*\tud@headlogo@filename{#2}%
  \renewcommand*\tud@headlogo@fileoptions{#1}%
%    \end{macrocode}
% Nach dem Setzen des Zweitlogos müssen die Boxen mit den Logos von \DDC neu
% gesetzt werden. Weil dieses dabei vom Kopf in den Fuß oder umgekehrt wandern
% könnte, werden beide relevanten Makros ausgeführt.
%    \begin{macrocode}
  \global\@tud@headlogo@option@settrue%
  \global\@tud@footlogo@option@settrue%
  \tud@comp@resetpagestyle%
}
%    \end{macrocode}
% \end{macro}^^A \tud@headlogo@fileoptions
% \end{macro}^^A \tud@headlogo@filename
% \end{macro}^^A \headlogo
% \begin{macro}{\tud@headlogo@set}
% \changes{v2.04}{2015/05/31}{neu}^^A
% \begin{macro}{\tud@headlogo@option@set}
% \changes{v2.04}{2015/05/31}{neu}^^A
% \changes{v2.05}{2015/07/27}{Bugfix für Dateien in Unterordnern}^^A
% Äquivalent zum Logo der \TnUD werden auch für das Logo von \DDC drei
% Farbvarianten erstellt. 
%    \begin{macrocode}
\newcommand*\tud@headlogo@set{%
  \def\@tempa{%
    \includegraphics[keepaspectratio,totalheight=\tud@dim@mainlogoheight]%
  }%
  \tud@savelayerbox{head@black}{\@tempa{DDC-24}}%
  \tud@savelayerbox{head@HKS41}{\@tempa{DDC-27}}%
  \tud@savelayerbox{head@white}{\@tempa{DDC-30}}%
  \tud@headlogo@option@set%
}
%    \end{macrocode}
% Hiermit werden die \DDC-Optionen \opt{ddc} bzw. \opt{ddchead} abgearbeitet 
% sowie ein ggf. gegebenes Zweitlogo gespeichert. Dies geschieht beim Aufruf 
% des passenden Layers, falls der Schalter \cs{if@tud@headlogo@option@set} 
% gesetzt wurde.
%    \begin{macrocode}
\newcommand*\tud@headlogo@option@set{%
  \if@tud@headlogo@option@set%
    \def\@tempc##1##2{%
      \tud@savelayerbox{head@option}{%
        \includegraphics[{%
          keepaspectratio,%
          totalheight=\tud@dim@mainlogoheight,%
          ##2%
        }]{##1}%
      }%
    }%
    \tud@savelayerbox{head@option}{}%
    \tud@ddc@check%
    \ifcase\@tempa\relax% \tud@ddc@head@num=false
      \ifdefvoid{\tud@headlogo@filename}{}{%
        \protected@edef\tud@headlogo@filename{\tud@headlogo@filename}%
        \trim@spaces@in\tud@headlogo@filename%
        \protected@edef\@tempb{%
          \noexpand\@tempc{\tud@headlogo@filename}{\tud@headlogo@fileoptions}%
        }%
        \@tempb%
      }%
    \or\or% \tud@ddc@head@num=color
      \@tempc{DDC-03}{}%
    \or% \tud@ddc@head@num=colorblack
      \@tempc{DDC-09}{}%
    \or% \tud@ddc@head@num=gray
      \@tempc{DDC-21}{}%
    \or% \tud@ddc@head@num=black
      \@tempc{DDC-24}{}%
    \or% \tud@ddc@head@num=blue
      \@tempc{DDC-27}{}%
    \or% \tud@ddc@head@num=white
      \@tempc{DDC-30}{}%
    \fi%
    \ifnum\@tempa>\z@\relax
      \ifdefvoid{\tud@headlogo@filename}{}{%
        \ClassWarning{\TUD@Class@Name}{%
          Secondary logo `\tud@headlogo@filename'\MessageBreak%
          is overwritten with DDC logo. Maybe you should\MessageBreak%
          use `ddcfoot' or better `ddc' instead of `ddchead'%
        }%
      }%
    \fi%
    \global\@tud@headlogo@option@setfalse%
  \fi%
}
%    \end{macrocode}
% \end{macro}^^A \tud@headlogo@option@set
% \end{macro}^^A \tud@headlogo@set
% \begin{macro}{\tud@headlogo@use}
% \changes{v2.04}{2015/05/31}{neu}^^A
% \begin{macro}{\tud@layer@headlogo@wrn}
% Die Ausgabe von \DDC- oder Zweitlogo im Kopf erfolgt mit diesem Makro. Dabei 
% werden diese in einer Box vertikal zentriert.
%    \begin{macrocode}
\newcommand*\tud@layer@headlogo@wrn{}
\newcommand*\tud@headlogo@use{%
  \tud@vlayerbox[headlogo]{\tud@dim@mainlogoheight}{%
    \vss%
    \hbox{%
      \tud@ddc@check%
      \ifnum\@tempa=\@ne\relax% \tud@ddc@head@num=true
        \tud@uselayerbox{head@\tud@head@logocolor}%
      \else%
        \tud@uselayerbox{head@option}%
      \fi%
    }%
    \vss%
  }{%
    The given `\string\headlogo{\tud@headlogo@filename}' is too large.%
  }%
}
%    \end{macrocode}
% \end{macro}^^A \tud@layer@headlogo@wrn
% \end{macro}^^A \tud@headlogo@use
%
% \iffalse
%</class&body>
%<*class&option>
% \fi
%
% \subsection{Der Fußbereich der Seitenstile}
%
% Es folgen Option und Befehle zur Gestaltung des Fußbereichs mit optionalem 
% Inhalt im Fuß, Drittlogos und \DDC-Logo.
%
% \begin{option}{cdfoot}
% \changes{v2.03}{2015/02/02}{Bei Längenangabe wird \opt{extrabottommargin}
%   indirekt genutzt}^^A
% \changes{v2.04}{2015/06/18}{bedingtes Setzen der Option \opt{automark}}^^A
% \begin{macro}{\if@tud@foot@colored}
% \changes{v2.03}{2015/02/15}{neu}^^A
% \begin{macro}{\if@tud@foot@colored@locked}
% \changes{v2.05}{2015/07/14}{neu}^^A
% \begin{macro}{\tud@ps@store}
% \changes{v2.02}{2014/06/23}{neu}^^A
% \begin{macro}{\tud@ps@@store}
% \changes{v2.02}{2014/06/23}{neu}^^A
% \begin{macro}{\tud@ps@restore}
% \changes{v2.02}{2014/06/23}{neu}^^A
% \begin{macro}{\tud@ps@@restore}
% \changes{v2.02}{2014/06/23}{neu}^^A
% Dieser Seitenstil mit dem Kolumnentitel im Fuß wurde bereits für die alte
% \cls{tudbook}-Klasse bereitgestellt und soll auch hier optional angeboten
% werden. Zusätzlich kann mit dieser Option ggf. ein farbiger Hintergrund in 
% der Fußzeile aktiviert werden.
%
% Einige Einstellungen sind abhängig vom Paket \pkg{scrlayer-scrpage}, welches 
% unter Umständen nicht geladen wird. Mit \cs{TUD@AfterPackage@do} kann
% Quelltext nur dann ausgeführt werden, wenn ein Paket auch tatsächlich geladen 
% wurde. Hierfür ist die Initialisierung mit \cs{TUD@AfterPackage@set} nötig.
%    \begin{macrocode}
\TUD@AfterPackage@set{scrlayer-scrpage}
\tud@locked@newbool{@tud@foot@colored}
\TUD@key{cdfoot}[true]{%
  \TUD@set@numkey{cdfoot}{@tempa}{%
    \TUD@bool@numkey,%
    {nocolor}{2},{nocolour}{2},{monochrome}{2},{monochromatic}{2},%
    {bicolor}{3},{bicolour}{3},{twocolor}{3},{twocolour}{3},%
    {bichrome}{3},{bichromatic}{3},{dichrome}{3},{dichromatic}{3},%
    {color}{3},{colour}{3},%
    {full}{3},{colorfull}{3},{fullcolor}{3},{colourfull}{3},{fullcolour}{3}%
  }{#1}%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
    \ifcase\@tempa\relax% false
%    \end{macrocode}
% Die ursprünglichen Kopf- und Fußzeilen werden mit \cs{tud@ps@restore}
% wiederhergestellt. Dies wird allerdings frühestens nach dem Laden von 
% \pkg{scrlayer-scrpage} durchgeführt.
%    \begin{macrocode}
      \TUD@AfterPackage@do{scrlayer-scrpage}{%
        \tud@ps@restore{scrheadings}%
        \tud@ps@restore{plain.scrheadings}%
        \tud@komafont@unset{pageheadfoot}%
      }%
%    \end{macrocode}
% Die ursprünglichen Kopf- und Fußzeilen werden mit dem Makro \cs{tud@ps@store} 
% gesichert, um gegebenenfalls zurückschalten zu können. Anschließend werden
% diese mit dem neuen Stil überschrieben. Dies wird allerdings frühestens nach 
% dem Laden von \pkg{scrlayer-scrpage} durchgeführt. 
%    \begin{macrocode}
    \or% true
      \TUD@AfterPackage@do{scrlayer-scrpage}{%
        \tud@ps@store{scrheadings}%
        \tud@ps@store{plain.scrheadings}%
        \tud@komafont@set{pageheadfoot}{\upshape}%
        \clearpairofpagestyles%
        \ofoot[\pagemark]{%
          \if@twoside\ifodd\value{page}\else\pagemark\quad\fi\fi%
          {\footnotesize\headmark}%
          \if@twoside\ifodd\value{page}\quad\pagemark\fi\else\quad\pagemark\fi%
        }%
        \ifx\@mkdouble\@gobble\else\KOMAoptions{automark}\fi%
      }%
%    \end{macrocode}
% Hier kann die Hintergrundfarbe des Fußes aktiviert bzw. deaktiviert werden.
%    \begin{macrocode}
    \or% nocolor
      \tud@locked@bool@set{@tud@foot@colored}{false}%
    \or% color
      \tud@locked@bool@set{@tud@foot@colored}{true}%
    \fi%
%    \end{macrocode}
% Außerdem kann mit der Option \opt{extrabottommargin} gesetzt werden.
%    \begin{macrocode}
  \else%
    \TUD@set@dimkey{cdfoot}{\@tempa}{#1}%
    \ifx\FamilyKeyState\FamilyKeyStateProcessed%
      \TUDoptions{extrabottommargin=#1}%
    \fi%
  \fi%
}
%    \end{macrocode}
% Die nächsten beiden Befehle dienen zum Sichern der Kopf- und Fußzeilen\dots
%    \begin{macrocode}
\newcommand*\tud@ps@store[1]{%
  \tud@ps@@store{#1}{odd}{left}{head}%
  \tud@ps@@store{#1}{odd}{right}{head}%
  \tud@ps@@store{#1}{odd}{middle}{head}%
  \tud@ps@@store{#1}{even}{left}{head}%
  \tud@ps@@store{#1}{even}{right}{head}%
  \tud@ps@@store{#1}{even}{middle}{head}%
  \tud@ps@@store{#1}{odd}{left}{foot}%
  \tud@ps@@store{#1}{odd}{right}{foot}%
  \tud@ps@@store{#1}{odd}{middle}{foot}%
  \tud@ps@@store{#1}{even}{left}{foot}%
  \tud@ps@@store{#1}{even}{right}{foot}%
  \tud@ps@@store{#1}{even}{middle}{foot}%
}
%    \end{macrocode}
% \dots, wobei hierfür auf die internen Befehle von \pkg{scrlayer-scrpage} 
% zurückgegriffen werden muss.
%    \begin{macrocode}
\newcommand*\tud@ps@@store[4]{%
  \ifcsundef{@@tud@ps@#1@#2@#3@#4}{%
    \csletcs{@@tud@ps@#1@#2@#3@#4}{sls@ps@#1@#2@#3@#4}%
  }{}%
}
\newcommand*\tud@ps@restore[1]{%
  \tud@ps@@restore{#1}{odd}{left}{head}%
  \tud@ps@@restore{#1}{odd}{right}{head}%
  \tud@ps@@restore{#1}{odd}{middle}{head}%
  \tud@ps@@restore{#1}{even}{left}{head}%
  \tud@ps@@restore{#1}{even}{right}{head}%
  \tud@ps@@restore{#1}{even}{middle}{head}%
  \tud@ps@@restore{#1}{odd}{left}{foot}%
  \tud@ps@@restore{#1}{odd}{right}{foot}%
  \tud@ps@@restore{#1}{odd}{middle}{foot}%
  \tud@ps@@restore{#1}{even}{left}{foot}%
  \tud@ps@@restore{#1}{even}{right}{foot}%
  \tud@ps@@restore{#1}{even}{middle}{foot}%
}
\newcommand*\tud@ps@@restore[4]{%
  \ifcsundef{@@tud@ps@#1@#2@#3@#4}{}{%
    \csletcs{sls@ps@#1@#2@#3@#4}{@@tud@ps@#1@#2@#3@#4}%
    \csundef{@@tud@ps@#1@#2@#3@#4}%
  }%
}
%    \end{macrocode}
% \end{macro}^^A \tud@ps@@restore
% \end{macro}^^A \tud@ps@restore
% \end{macro}^^A \tud@ps@@store
% \end{macro}^^A \tud@ps@store
% \end{macro}^^A \if@tud@foot@colored@locked
% \end{macro}^^A \if@tud@foot@colored
% \end{option}^^A cdfoot
%
% \iffalse
%</class&option>
%<*class>
% \fi
%
% \subsubsection{Optionales \DDC-Logo oder Drittlogos}
%
% \begin{option}{footlogoheight}
% \changes{v2.05}{2016/06/16}{neu}^^A
% \begin{macro}{\tud@footlogoheight@dim}
% \changes{v2.04}{2015/06/01}{neu}^^A
% \begin{macro}{\tud@footlogoheight@set}
% Für den Anwender besteht mit der Option \opt{footlogoheight} die Möglichkeit, 
% die Höhe aller Logos im Fußbereich~-- also eventuell das \DDC-Logo sowie
% vom Anwender mit dem Befehl \cs{footlogo} angegebene Logos~-- zentral
% festzulegen. Dabei wird der gewünschte Wert in \cs{tud@footlogoheight@dim} 
% abgelegt. Ist dieser \val{0pt}, wird die Höhe des Loogs der \TnUD genutzt.
% \ToDo{\cs{tud@footlogoheight@dim} sollte raus, ergibt keinen Sinn}[v2.07]
%    \begin{macrocode}
%<*option>
\newcommand*\tud@footlogoheight@dim{0pt}
\TUD@key{footlogoheight}{%
  \TUD@set@dimkey{footlogoheight}{\tud@footlogoheight@dim}{#1}%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
    \tud@length@setabsolute\tud@footlogoheight@dim%
    \global\@tud@footlogo@option@settrue%
  \fi%
}
%</option>
%    \end{macrocode}
% Da sich mit der Version~v2.03 die Standardhöhe des \DDC-Logos im Fußbereich 
% geändert hat, wird dieser Wert abhängig von der Einstellung für die Option 
% \opt{tudscrver} gesetzt.
%    \begin{macrocode}
%<*body>
\newcommand*\tud@footlogoheight@set{%
  \ifdim\dimexpr\tud@footlogoheight@dim\relax=\z@\relax%
    \tud@if@v@lower{2.03}{%
      \def\tud@footlogoheight@dim{\tud@dim@topmargin*3/5}%
    }{%
      \def\tud@footlogoheight@dim{\tud@dim@mainlogoheight}%
    }%
  \fi%
}
%</body>
%    \end{macrocode}
% \end{macro}^^A \tud@footlogoheight@set
% \end{macro}^^A \tud@footlogoheight@dim
% \end{option}^^A footlogoheight
%
% \iffalse
%</class>
%<*class&body>
% \fi
%
% \begin{macro}{\tud@layer@foot@black}
% \changes{v2.04}{2015/06/01}{neu}^^A
% \begin{macro}{\tud@layer@foot@HKS41}
% \changes{v2.04}{2015/06/01}{neu}^^A
% \begin{macro}{\tud@layer@foot@white}
% \changes{v2.04}{2015/06/01}{neu}^^A
% \begin{macro}{\tud@layer@foot@option}
% \changes{v2.04}{2015/06/01}{neu}^^A
% Im Fußbereich kann das \DDC-Logo rechtsbündig ausgegeben. Hierfür werden die 
% entsprechenden Boxen für alle Farbvarianten definiert. Diese werden genutzt,
% wenn entweder die Option \opt{ddcfoot} oder aber \opt{ddc} in Verbindung mit
% einem Zweitlogo (\cs{headlogo}) genutzt wird. 
%    \begin{macrocode}
\tud@newlayerbox{foot@black}
\tud@newlayerbox{foot@HKS41}
\tud@newlayerbox{foot@white}
\tud@newlayerbox{foot@option}
%    \end{macrocode}
% \end{macro}^^A \tud@layer@foot@option
% \end{macro}^^A \tud@layer@foot@white
% \end{macro}^^A \tud@layer@foot@HKS41
% \end{macro}^^A \tud@layer@foot@black
% \begin{macro}{\tud@footlogo@ddc@set}
% \changes{v2.04}{2015/06/01}{neu}^^A
% \begin{macro}{\tud@footlogo@option@set}
% \changes{v2.04}{2015/06/01}{neu}^^A
% Auch im Fuß werden für das \DDC-Logo verschiedene Boxen für die Farbvarianten 
% \val{black}, \val{HKS41} und \val{white} sowie eine für die gezielte Auswahl
% über die Optionen \opt{ddc} bzw. \opt{ddcfoot} erstellt. Dafür wird zunächst
% das Makro \cs{tud@footlogo@ddc@set} definiert.
%    \begin{macrocode}
\newcommand*\tud@footlogo@ddc@set[2]{%
  \tud@savelayerbox{#1}{%
    \includegraphics[%
      keepaspectratio,%
      totalheight=\dimexpr\glueexpr\tud@footlogoheight@dim\relax\relax%
    ]{#2}%
  }%
}
%    \end{macrocode}
% Hiermit werden die \DDC-Optionen \opt{ddc} bzw. \opt{ddcfoot} abgearbeitet. 
% Dies geschieht, falls hierfür der Schalter \cs{if@tud@footlogo@option@set}
% gesetzt wurde, bei der Ausgabe des dazugehörigen Layers.
%    \begin{macrocode}
\newcommand*\tud@footlogo@option@set{%
  \tud@footlogoheight@set%
  \if@tud@footlogo@option@set%
    \tud@footlogo@ddc@set{foot@black}{DDC-22}%
    \tud@footlogo@ddc@set{foot@HKS41}{DDC-25}%
    \tud@footlogo@ddc@set{foot@white}{DDC-28}%
    \tud@ddc@check%
    \ifcase\@tempb\relax\or\or% \tud@ddc@foot@num=color
      \tud@footlogo@ddc@set{foot@option}{DDC-01}%
    \or% \tud@ddc@foot@num=colorblack
      \tud@footlogo@ddc@set{foot@option}{DDC-07}%
    \or% \tud@ddc@foot@num=gray
      \tud@footlogo@ddc@set{foot@option}{DDC-19}%
    \or% \tud@ddc@foot@num=black
      \tud@footlogo@ddc@set{foot@option}{DDC-22}%
    \or% \tud@ddc@foot@num=blue
      \tud@footlogo@ddc@set{foot@option}{DDC-25}%
    \or% \tud@ddc@foot@num=white
      \tud@footlogo@ddc@set{foot@option}{DDC-28}%
    \fi%
    \global\@tud@footlogo@option@setfalse%
    \global\@tud@footlogo@cmd@settrue%
  \fi%
}
%    \end{macrocode}
% \end{macro}^^A \tud@footlogo@option@set
% \end{macro}^^A \tud@footlogo@ddc@set
% \begin{macro}{\tud@footlogo@ddc@use}
% \changes{v2.04}{2015/06/01}{neu}^^A
% \begin{macro}{\tud@layer@footlogo@wrn}
% Die Ausgabe des \DDC-Logos im Fuß erfolgt mit diesem Makro. Dabei wird dieses 
% in einer Box optisch~-- leicht nach oben verschoben~-- vertikal zentriert.
%    \begin{macrocode}
\newcommand*\tud@layer@footlogo@wrn{}
\newcommand*\tud@footlogo@ddc@use[2]{%
  \tud@ddc@check%
  \ifcase\@tempb\relax\else% \tud@ddc@foot@num=!false
    \tud@footlogo@option@set%
    \setbox\z@\hbox{%
      \tud@vlayerbox[footlogo]{#1}{%
        \vss%
        \hbox to #2{%
          \hss%
          \ifcase\@tempb\relax\or% \tud@ddc@foot@num=true
            \tud@uselayerbox{foot@\tud@foot@logocolor}%
          \else%
            \tud@uselayerbox{foot@option}%
          \fi%
        }%
        \vss\vss%
      }{%
        You should reduce `footlogoheight', because it is\noexpand\MessageBreak%
        too high. %
        \ifnum\tud@cdgeometry@num>\@ne% true/symmetric/twoside
          Alternatively you could use\noexpand\MessageBreak%
          option `extrabottommargin=<length>'\noexpand\MessageBreak%
          in order to enlarge the bottom margin. %
        \fi%
      }%
    }%
%    \end{macrocode}
% Nach der Ausgabe wird ein begativer horizontaler Abstand in der Boxbreite 
% eingefügt, damit nachfolgende Boxen überlagert werden können.
%    \begin{macrocode}
    \usebox\z@\hspace*{-\wd\z@}%
  \fi%
}
%    \end{macrocode}
% \end{macro}^^A \tud@layer@footlogo@wrn
% \end{macro}^^A \tud@footlogo@ddc@use
% \begin{macro}{\tud@layer@foot@cmd}
% \changes{v2.04}{2015/06/01}{neu}^^A
% Für das Setzen von benutzerdefinierten Logos im Fußbereich wird diese Box 
% verwendet.
%    \begin{macrocode}
\tud@newlayerbox{foot@cmd}
%    \end{macrocode}
% \end{macro}^^A \tud@layer@foot@cmd
% \begin{macro}{\footlogo}
% \changes{v2.03}{2015/01/27}{neu}^^A
% \begin{macro}{\tud@footlogo@filenames}
% \changes{v2.03}{2015/01/27}{neu}^^A
% \begin{macro}{\tud@footlogo@fileoptions}
% \changes{v2.03}{2015/01/27}{neu}^^A
% \begin{macro}{\footlogosep}
% \changes{v2.03}{2015/01/27}{neu}^^A
% \begin{macro}{\tud@footlogo@cmd@set}
% \changes{v2.04}{2015/06/01}{neu}^^A
% \begin{macro}{\tud@footlogo@cmd@@set}
% \changes{v2.03}{2015/01/27}{neu}^^A
% \changes{v2.03}{2015/02/02}{optionale Parameter für unterschiedliche Dateien 
%   individuell nutzbar}^^A
% \begin{macro}{\if@tud@footlogo@cmd@set}
% \changes{v2.04}{2015/06/01}{neu}^^A
% Mit dem Befehl \cs{footlogo} kann eine kommasparierte Liste für Logos im 
% Fuß angegeben werden, die mit \cs{footlogosep} voneinander getrennt werden.
%    \begin{macrocode}
\newcommand*\footlogosep{\hfill}
\newcommand*\tud@footlogo@filenames{}
\newcommand*\tud@footlogo@fileoptions{}
\newcommand*\footlogo[2][]{%
  \tud@comp@clearpage%
  \renewcommand*\tud@footlogo@filenames{#2}%
  \renewcommand*\tud@footlogo@fileoptions{#1}%
  \global\@tud@footlogo@cmd@settrue%
  \tud@comp@resetpagestyle%
}
%    \end{macrocode}
% Die mit \cs{footlogo} angegeben Logos und die dazugehörigen Einstellungen, 
% welche entweder allgemein über das optionale Argument oder aber individuell 
% durch \val{:} an den Dateinamen angehängt übergeben wurden, werden hier in
% der Box \cs{tud@layer@foot@cmd} gespeichert.
%    \begin{macrocode}
\tud@newif\if@tud@footlogo@cmd@set
\newcommand*\tud@footlogo@cmd@set[2]{%
  \if@tud@footlogo@cmd@set%
    \tud@savelayerbox{foot@cmd}{%
      \hbox to #2{%
%    \end{macrocode}
% Hier erfolgt die eigentliche Abarbeitung der mit \cs{footlogo} angegeben 
% Liste der benutzerdefinierten Logos. In \cs{@tempa} wird nach dem ersten 
% Durchlauf der Schleife der Inhalt von \cs{footlogosep} gespeichert und nach
% dem ersten Logo vor jedem weiteren eingefügt. Um versehentlich angegebene 
% Leerzeichen zu entfernen, werden diese mit \cs{trim@spaces} entfernt.
%    \begin{macrocode}
        \let\@tempa\relax%
        \@for\@tempb:=\tud@footlogo@filenames\do{%
          \protected@edef\@tempb{\@tempb}%
          \trim@spaces@in{\@tempb}%
          \@tempa%
          \ifx\@tempb\@empty\else%
            \expandafter\tud@footlogo@cmd@@set\expandafter{\@tempb}{#1}%
          \fi%
          \let\@tempa\footlogosep%
        }%
        \hss%
      }%
    }%
    \global\@tud@footlogo@cmd@setfalse%
  \fi%
}
%    \end{macrocode}
% Der Befehl \cs{tud@footlogo@cmd@set} wird genutzt, um die einzelnen Logos für
% den Fuß nacheinander in der Box \cs{tud@layer@foot@cmd} zu setzen.
%    \begin{macrocode}
\newcommand*\tud@footlogo@cmd@@set[2]{%
  \begingroup%
%    \end{macrocode}
% Dabei soll es möglich sein, optionale Parameter an \cs{includegraphics} zu 
% übergeben. Dies soll zum einen global für alle Dateien als auch individuell 
% für einzelne Logos möglich sein. Zu diesem Zweck wird die Schnittstelle für 
% den Anwender so gestaltet, dass individuelle Parameter mit einem Doppelpunkt
% direkt an den Dateinamen angehangen werden können.
% \ToDo{\cs{DeclareListParser} außerhalb global definieren}[v2.07]
%    \begin{macrocode}
    \let\@tempa\@empty%
    \let\@tempb\@empty%
    \@tempswatrue%
    \def\do##1{%
      \if@tempswa%
        \def\@tempa{##1}%
        \@tempswafalse%
      \else%
        \l@addto@macro\@tempb{,##1}%
      \fi%
    }%
    \let\@tempc\relax%
    \DeclareListParser{\@tempc}{:}%
    \@tempc{#1}%
%    \end{macrocode}
% In jedem Fall werden die Grundeinstellungen als erstes ausgeführt.
%    \begin{macrocode}
    \preto\tud@footlogo@fileoptions{%
      keepaspectratio,%
      totalheight=\dimexpr\glueexpr\tud@footlogoheight@dim\relax\relax,%
    }%
%    \end{macrocode}
% Wurden tatsächlich inidviduelle Parameter übergeben, so werden diese als 
% letztes ausgeführt, um vorige Einstellungen überschreiben zu können.
%    \begin{macrocode}
    \eappto\tud@footlogo@fileoptions{\expandonce\@tempb}%
    \protected@edef\@tempc{%
      \noexpand\includegraphics[{%
        \expandonce\tud@footlogo@fileoptions%
      }]{\@tempa}%
    }%
%    \end{macrocode}
% Die Logos werden~-- wie auch das \DDC-Logo im Fuß~-- individuell optisch
% vertikal zentriert.
%    \begin{macrocode}
    \tud@vlayerbox{#2}{\vss\hbox{\@tempc}\vss\vss}{%
      The given `\string\footlogo{\@tempa}' is too large.%
    }%
  \endgroup%
}
%    \end{macrocode}
% \end{macro}^^A \if@tud@footlogo@cmd@set
% \end{macro}^^A \tud@footlogo@cmd@@set
% \end{macro}^^A \tud@footlogo@cmd@set
% \end{macro}^^A \footlogosep
% \end{macro}^^A \tud@footlogo@fileoptions
% \end{macro}^^A \tud@footlogo@filenames
% \end{macro}^^A \footlogo
% \begin{macro}{\tud@footlogo@cmd@use}
% \changes{v2.04}{2015/06/01}{neu}^^A
% Der Befehl \cs{tud@footlogo@cmd@use} wird genutzt, um die einzelnen Logos für
% den Fuß innerhalb der Ebene \val{tudheadings.foot.content} auszugeben.
%    \begin{macrocode}
\newcommand*\tud@footlogo@cmd@use[2]{%
  \tud@footlogo@option@set%
  \tud@footlogo@cmd@set{#1}{#2}%
  \setbox\z@\hbox{\tud@uselayerbox{foot@cmd}}%
  \usebox\z@\hspace*{-\wd\z@}%
}
%    \end{macrocode}
% \end{macro}^^A \tud@footlogo@cmd@use
%
% \subsubsection{Optionaler Inhalt im Fußbereich}
%
% \begin{macro}{\footcontent}
% \changes{v2.04}{2015/04/21}{neu}^^A
% \begin{KOMAfont}{tudheadings}
% \changes{v2.04}{2015/04/21}{neu}^^A
% \begin{macro}{\tud@footcontent@do}
% \changes{v2.04}{2015/04/21}{neu}^^A
% \begin{macro}{\tud@footcontent@@do}
% \changes{v2.04}{2015/04/21}{neu}^^A
% \changes{v2.05}{2016/04/17}{Stern im Argument erhält aktuellen Inhalt}^^A
% \begin{macro}{\tud@footcontent@font@use}
% \changes{v2.06}{2018/08/01}{neu}^^A
% \begin{macro}{\tud@footcontent@font@size}
% \changes{v2.06}{2018/08/01}{neu}^^A
% \begin{macro}{\tud@footcontent@font@face}
% \changes{v2.04}{2015/06/01}{neu}^^A
% \changes{v2.05}{2015/07/21}{Bugfix für die Schriftgröße und den Durchschuss 
%   bei einer entsprechenden Anpassung der Schriftart \val{tudheadings}}^^A
% \begin{macro}{\tud@footcontent@left}
% \changes{v2.04}{2015/06/01}{neu}^^A
% \begin{macro}{\tud@footcontent@right}
% \changes{v2.04}{2015/06/01}{neu}^^A
% Mit dem Befehl \cs{footcontent} kann der Inhalt für den Fußbereich der 
% Seiten im Stil \pgs{tudheadings} festgelegt werden. Dieser wird mit passenden 
% Schrifteinstellungen entweder einspaltig oder zweispaltig gesetzt. Die 
% Sternversion des Befehls nimmt keinerlei Einstellungen für die Schrift vor.
%    \begin{macrocode}
\newkomafont{tudheadings}{\tud@color{\tud@foot@fontcolor}}
%    \end{macrocode}
% Dieser Befehl wird zur Formatierung der Schrift im Fußbereich definiert.
%    \begin{macrocode}
\newcommand*\tud@footcontent@font@use[1]{%
  \usekomafont{tudheadings}{%
    \tud@footcontent@font@size%
    \tud@footcontent@font@face%
    \selectfont%
    #1%
  }%
}
%    \end{macrocode}
% Die mit \cs{footcontent} angegebenen Einstellungen und Inhalte werden in 
% diesen Makros gesichert, weshalb diese vorher alloziert werden. Anschließend
% erfolgt die Definition des Befehls.
%    \begin{macrocode}
\newcommand*\tud@footcontent@font@size{}
\newcommand*\tud@footcontent@font@face{}
\newcommand*\tud@footcontent@left{}
\newcommand*\tud@footcontent@right{}
\let\tud@footcontent@right\@nnil
%    \end{macrocode}
% Die Sternversion ändert die Schriftgröße vom Inhalt nicht. Die Normalversion
% nutzt die Schriftgröße der Kopfzeile mit einem passenden Durchschuss.
%    \begin{macrocode}
\newcommand*\footcontent{%
  \kernel@ifstar{%
    \renewcommand*\tud@footcontent@font@size{}%
    \tud@footcontent@do%
  }{%
    \renewcommand*\tud@footcontent@font@size{%
      \tud@setdim\tud@res@glue{\tud@head@fontsize\p@}%
      \fontsize{\tud@res@glue}{\dimexpr1\tud@res@glue*5/4\relax}%
    }%
    \tud@footcontent@do%
  }%
}
%    \end{macrocode}
% Normalerweise wird der Inhalt vollständig über die verfügbare Seitenfußbreite 
% gesetzt. Wird das optionale Argument \emph{nach} dem obligatorischen genutzt, 
% so erfolgt die Ausgabe zweispaltig. Das optionale Argument kann für 
% zusätzliche Formatierungsbefehle genutzt werden.
%    \begin{macrocode}
\newcommand*\tud@footcontent@do[2][]{%
  \kernel@ifnextchar[%]
    {\tud@footcontent@@do{#1}{#2}}%
    {\tud@footcontent@@do{#1}{#2}[\@nil]}%
}
\newcommand*\tud@footcontent@@do{}
\def\tud@footcontent@@do#1#2[#3]{%
%    \end{macrocode}
% Wurde im optionalen Argument für zusätzliche Schrifteinstellungen ein Stern 
% verwendet, bleibt die bisherige Definition bestehen.
%    \begin{macrocode}
  \if\detokenize{#1*}\relax\else%
    \renewcommand*\tud@footcontent@font@face{#1}%
  \fi%
%    \end{macrocode}
% Wurde in einem der Argumente für den linken und/oder rechten Inhalt ein Stern 
% verwendet, bleibt die bisherige Definition bestehen.
%    \begin{macrocode}
  \if\detokenize{#2*}\relax\else%
    \renewcommand*\tud@footcontent@left{#2}%
  \fi%
  \if\detokenize{#3*}\relax\else%
    \renewcommand*\tud@footcontent@right{#3}%
  \fi%
}
%    \end{macrocode}
% \end{macro}^^A \tud@footcontent@right
% \end{macro}^^A \tud@footcontent@left
% \end{macro}^^A \tud@footcontent@font@face
% \end{macro}^^A \tud@footcontent@font@size
% \end{macro}^^A \tud@footcontent@font@use
% \end{macro}^^A \tud@footcontent@@do
% \end{macro}^^A \tud@footcontent@do
% \end{KOMAfont}^^A tudheadings
% \end{macro}^^A \footcontent
%
% \iffalse
%<*class&poster>
% \fi
%
% \begin{macro}{\tud@footcontent@@left}
% \changes{v2.05}{2015/07/06}{neu}^^A
% \changes{v2.05}{2016/04/17}{Überschrift optional}^^A
% \begin{macro}{\tud@footcontent@@right}
% \changes{v2.05}{2015/07/06}{neu}^^A
% \changes{v2.05}{2016/04/17}{Überschrift optional}^^A
% \begin{macro}{\tud@newline@poster}
% Mit diesen beiden Hilfsmakros werden die linke und die rechte Spalte des 
% Standard-Seitenfußes eines Posters festgelegt. In der linken Spalte werden 
% dabei Fakultät, Einrichtung, Institut und Lehrstuhl sowie der Professor 
% ausgegeben, wobei die Angaben über das optionale Argument der entsprechenden 
% Feldbefehle, die in den Klassen normalerweise nur für den Seitenkopf genutzt 
% werden, variiert werden können.
%    \begin{macrocode}
\newcommand*\tud@newline@poster{}
\newcommand*\tud@footcontent@@left[1]{%
  \tud@if@strblank{#1}{}{{\tud@head@font@@bold#1\newline}}%
  Technische Universit\"at Dresden%
  \tud@foot@line@write{faculty}%
  \tud@foot@line@write{department}%
  \tud@foot@line@write{institute}%
  \tud@foot@line@write{chair}%
  \tud@foot@line@write{professor}%
}
%    \end{macrocode}
% In der rechten Spalte werden der Autor oder die Autoren (\cs{author}) und 
% die Kontaktperson(en) (\cs{contactperson}) ausgegeben. Zu jeder Person können
% individuelle Angaben bzgl. Büro, Telefonnummer und E"~Mail-Adresse gemacht 
% werden. 
%    \begin{macrocode}
\newcommand*\tud@footcontent@@right[2]{%
  \def\tud@newline@poster{%
    \ifx\@authormore\@empty\else\newline\@authormore\fi%
    \ifx\@course\@empty%
      \ifx\@discipline\@empty\else\newline\@discipline\fi%
    \else%
      \newline\@course%
      \ifx\@discipline\@empty\else%
        \nobreakspace(\@discipline)%
      \fi%
    \fi%
    \ifx\@emailaddress\@empty\else\newline\@emailaddress\fi%
    \ifx\@office\@empty\else\newline\@office\fi%
    \ifx\@telephone\@empty\else\newline\@telephone\fi%
    \ifx\@telefax\@empty\else\newline\@telefax\fi%
  }%
%    \end{macrocode}
% Wurde kein Autor angegeben, wird in diesem Fall die normalerweise erzeugte 
% Warnung bei der Verwendung des Feldes \cs{@author} unterdrückt.
%    \begin{macrocode}
  \tud@if@field@unset{\@author}{%
    \let\@tempa\@empty%
  }{%
    \let\@tempa\@author%
  }%
  \ifx\@tempa\@empty\else%
    \tud@if@strblank{#1}{}{{\tud@head@font@@bold#1\newline}}%
%    \end{macrocode}
% Das Makro zum Aufteilen der Autorenangaben wird für die hier benötigte Form 
% definiert. Die Ausgabe aller nicht \emph{lokal} angegebenen Felder wird
% unterdrückt, indem das Makro \cs{tud@multiple@fields@preset} im zweiten 
% Argument mit einem \val{*} aufgerufen wird.
%    \begin{macrocode}
    \renewcommand*\tud@split@author@do[2]{%
      \tud@multiple@fields@store{@author}{##1}%
      \tud@multiple@fields@preset{@author}{*}{##1}%
      \ignorespaces##1\tud@newline@poster%
      \tud@multiple@fields@restore{@author}%
      \tud@multiple@@@split{##2}{\newline}%
    }%
    \noindent\tud@multiple@split{@author}%
    \tud@multiple@fields@restore{@author}%
%    \end{macrocode}
% Wurde gültige Felder außerhalb von \cs{@author} global angegeben, so werden 
% diese \emph{nach} allen Autoren ausgegeben.
%    \begin{macrocode}
    \tud@newline@poster%
%    \end{macrocode}
% Werden Autor und Kontaktperson ausgegeben, ist eine Leerzeile einzufügen.
%    \begin{macrocode}
    \ifx\@contactperson\@empty\else\newline\fi%
  \fi%
%    \end{macrocode}
% Die Ausgabe der Kontaktperson(en) erfolgt analog zu der Autorenausgabe.
%    \begin{macrocode}
  \def\tud@newline@poster{%
    \ifx\@emailaddress\@empty\else\newline\@emailaddress\fi%
    \ifx\@office\@empty\else\newline\@office\fi%
    \ifx\@telephone\@empty\else\newline\@telephone\fi%
    \ifx\@telefax\@empty\else\newline\@telefax\fi%
  }%
  \ifx\@contactperson\@empty\else%
    \tud@if@strblank{#2}{}{{\tud@head@font@@bold#2\newline}}%
    \renewcommand*\tud@split@contactperson@do[2]{%
      \tud@multiple@fields@store{@contactperson}{##1}%
      \tud@multiple@fields@preset{@contactperson}{*}{##1}%
      \ignorespaces##1\tud@newline@poster%
      \tud@multiple@fields@restore{@contactperson}%
      \tud@multiple@@@split{##2}{\newline}%
    }%
    \noindent\tud@multiple@split{@contactperson}%
    \tud@multiple@fields@restore{@contactperson}%
    \tud@newline@poster%
  \fi%
%    \end{macrocode}
% Zu guter letzt noch eine mögliche Homepage.
%    \begin{macrocode}
  \ifx\@webpage\@empty\else\newline\@webpage\fi%
}
\footcontent{%
  \tud@footcontent@@left{\contactname}%
}[%
  \tud@footcontent@@right{\authorname}{\contactpersonname}%
]
%    \end{macrocode}
% \end{macro}^^A \tud@newline@poster
% \end{macro}^^A \tud@footcontent@@right
% \end{macro}^^A \tud@footcontent@@left
%
% \iffalse
%</class&poster>
% \fi
%
% \begin{macro}{\tud@footcontent@use}
% \changes{v2.04}{2015/06/01}{neu}^^A
% \begin{macro}{\tud@footcontent@@use}
% \begin{macro}{\tud@layer@footcontent@wrn}
% Mit \cs{tud@footcontent@use} erfolgt die Ausgabe der mit \cs{footcontent} 
% definierten Inhalte. Dabei wird darauf geachtet, ob ein \DDC-Logo im Fuß
% verwendet wird. Die Ausgabe erfolgt jedoch nur, falls tatsächlich etwas 
% definiert wurde. Andernfalls wird lediglich eine leere Box der geforderten 
% Breite ausgegeben. Dies ist notwendig, da nachgelagerte Funktionen diese Box
% fester Breite erwarten.
%    \begin{macrocode}
\newcommand*\tud@layer@footcontent@wrn{}
\newcommand*\tud@footcontent@use[2]{%
  \@tempswafalse%
  \ifx\tud@footcontent@left\@empty%
    \ifx\tud@footcontent@right\@nnil\else%
      \ifx\tud@footcontent@right\@empty\else%
        \@tempswatrue%
      \fi%
    \fi%
  \else%
    \@tempswatrue%
  \fi%
  \if@tempswa%
    \tud@ddc@check%
    \ifcase\@tempb\relax%
      \tud@setdim\@tempdimc{\z@}%
    \else%
      \settowidth\@tempdimc{\tud@uselayerbox{foot@black}}%
      \tud@addtodim\@tempdimc{\columnsep}%
    \fi%
%    \end{macrocode}
% Äquivalent zu den Logos wird auch der durch den Anwender frei definierbare 
% Inhalt des Fußes in einer vertikalen Box gesetzt. Mit \cs{@tempdimc} wird im 
% Bedarfsfall der Freiraum für das \DDC-Logo bereitgestellt.
%    \begin{macrocode}
    \tud@vlayerbox[footcontent]{#1}{%
      \linespread{1}%
      \vss%
      \hbox to #2{%
        \tud@footcontent@font@use{%
          \tud@setglue\tud@res@glue{#2}%
          \tud@footcontent@@use{\tud@res@glue}%
          \hss%
        }%
      }%
      \vss\vss%
%    \end{macrocode}
% Sollte der Inhalt für den Fußbereich zu groß sein, wird eine Warnung erzeugt.
%    \begin{macrocode}
    }{%
      The content for the footer (`\string\footcontent')\noexpand\MessageBreak%
      is too high. You should either reduce the content\noexpand\MessageBreak%
      or lower the fontsize via the optional argument.%
      \ifnum\tud@cdgeometry@num>\@ne% true/symmetric/twoside
        \noexpand\MessageBreak%
        Alternatively you can enlarge the bottom margin\noexpand\MessageBreak%
        by using option `extrabottommargin'.%
      \fi%
    }%
  \else%
    \hbox to #2{}%
  \fi%
}
%    \end{macrocode}
% Wurde das optionale Argument nach dem obligatorischen nicht genutzt, so wird 
% der Inhalt über die komplette Breite des Textbereiches ausgegeben.
%    \begin{macrocode}
\newcommand*\tud@footcontent@@use[1]{%
  \ifx\tud@footcontent@right\@nnil%
    \vtop{%
      \hsize=\dimexpr\glueexpr#1-\@tempdimc\relax\relax%
      \strut\ignorespaces\tud@footcontent@left\strut%
    }%
%    \end{macrocode}
% Im zweispaltigen modus werden zwei vertikale Boxen erzeugt, zwischen denen
% der Abstand \cs{columnsep} eingefügt wird.
%    \begin{macrocode}
  \else%
    \vtop{%
      \hsize=\dimexpr\glueexpr(#1-\columnsep)/2\relax\relax%
      \strut\ignorespaces\tud@footcontent@left\strut%
    }%
    \hspace{\columnsep}%
    \vtop{%
      \hsize=\dimexpr\glueexpr(#1-\columnsep)/2-\@tempdimc\relax\relax%
      \strut\ignorespaces\tud@footcontent@right\strut%
    }%
  \fi%
}
%    \end{macrocode}
% \end{macro}^^A \tud@layer@footcontent@wrn
% \end{macro}^^A \tud@footcontent@@use
% \end{macro}^^A \tud@footcontent@use
%
% \subsection{Umgebungsparameter für die neuen Seitenstile}
%
% \begin{macro}{\if@tud@parameter@ps@font@set}
% \changes{v2.05m}{2017/05/30}{neu}^^A
% Der Schalter wird verwendet, um das explizite Setzen der Schrifteinstellungen
% über die Seitenstilparameter zu detektieren.
%    \begin{macrocode}
\tud@newif\if@tud@parameter@ps@font@set
%    \end{macrocode}
% \end{macro}^^A \if@tud@parameter@ps@font@set
% \begin{macro}{\TUD@parameter@ps@def}
% Im Folgenden werden die einzelnen Parameter für die \env{tudpage}-Umgebung
% definiert. Die Parameter für Kopf- und Fußzeile werden nicht nur für die 
% \env{tudpage}-Umgebung sondern auch noch für Titel und Umschlagseite
% verwendet, weshalb deren Definitionen zur einfacheren Wiederverwendung in das
% Makro \cs{TUD@parameter@ps@def} ausgelagert werden.
%    \begin{macrocode}
\newcommand*\TUD@parameter@ps@def[1]{%
%    \end{macrocode}
% \begin{parameter}{cdfont}
% Die Option \opt{cdfont} bestimmt, ob die Schriften des \CDs oder aber die
% standardmäßigen Serifenlosen für die Auszeichnugen in der Kopfzeile und
% Serifen im Inhalt verwendet werden.
%    \begin{macrocode}
  \TUD@parameter@def{cdfont}[true]{%
    \TUDoption{cdfont}{#1}%
    \@tud@parameter@ps@font@settrue%
  }%
%    \end{macrocode}
% \end{parameter}^^A cdfont
% \begin{parameter}{cdhead}
% \changes{v2.03}{2015/01/28}{\val{barfont} und \val{widehead} überlagert}^^A
% Mit dem Parameter \val{cdhead} kann die Verwendung der Schriften des \CDs
% aktiviert werden, wenn diese im Fließtext nicht zum Einsatz kommen. Die
% Breite des Querbalkens kann über diesen Parameter ebenfalls geändert werden.
%    \begin{macrocode}
  \TUD@parameter@def{cdhead}[true]{\TUDoption{cdhead}{#1}}%
%    \end{macrocode}
% \end{parameter}^^A cdhead
% \begin{parameter}{cdfoot}
% \changes{v2.03}{2015/01/30}{neu}^^A
% Über \val{cdfoot} kann gg. die Hintergrundfarbe sowie die Standardfußzeile 
% des \CDs aktiviert werden.
%    \begin{macrocode}
  \TUD@parameter@def{cdfoot}[true]{\TUDoption{cdfoot}{#1}}%
%    \end{macrocode}
% \end{parameter}^^A cdfoot
% \begin{parameter}{headlogo}
% \changes{v2.03}{2015/01/28}{neu}^^A
% \begin{parameter}{footlogo}
% \changes{v2.03}{2015/01/28}{neu}^^A
% Das Zweit- und die Drittlogos können ebenfalls lokal geändert werden.
%    \begin{macrocode}
  \TUD@parameter@def{headlogo}{\headlogo{#1}}%
  \TUD@parameter@def{footlogo}{\footlogo{#1}}%
%    \end{macrocode}
% \end{parameter}^^A footlogo
% \end{parameter}^^A headlogo
% \begin{parameter}{ddc}
% \changes{v2.02}{2014/08/16}{neu}^^A
% \begin{parameter}{ddchead}
% \begin{parameter}{ddcfoot}
% Mit diesen Parametern kann das \DDC-Logo im Kopf bzw. Fuß eingeblendet werden.
%    \begin{macrocode}
  \TUD@parameter@def{ddc}[true]{\TUDoption{ddc}{#1}}%
  \TUD@parameter@def{ddchead}[true]{\TUDoption{ddchead}{#1}}%
  \TUD@parameter@def{ddcfoot}[true]{\TUDoption{ddcfoot}{#1}}%
%    \end{macrocode}
% \end{parameter}^^A ddcfoot
% \end{parameter}^^A ddchead
% \end{parameter}^^A ddc
% \begin{parameter}{cdfonts}
% \begin{parameter}{tudfonts}
% \begin{parameter}{barfont}
% \begin{parameter}{widehead}
% \begin{parameter}{tudfoot}
% \begin{parameter}{logo}
% Für die Kompatibilität werden auch veraltete Parameter bereitgestellt.
%    \begin{macrocode}
  \TUD@parameter@def{cdfonts}[true]{%
    \TUDoption{cdfonts}{#1}%
    \@tud@parameter@ps@font@settrue%
  }%
  \TUD@parameter@def{tudfonts}[true]{%
    \TUDoption{tudfonts}{#1}%
    \@tud@parameter@ps@font@settrue%
  }%
  \TUD@parameter@def{barfont}[true]{\TUDoption{barfont}{#1}}%
  \TUD@parameter@def{widehead}[true]{\TUDoption{widehead}{#1}}%
  \TUD@parameter@def{tudfoot}[true]{\TUDoption{tudfoot}{#1}}%
  \TUD@parameter@let{logo}{headlogo}%
%    \end{macrocode}
% \end{parameter}^^A logo
% \end{parameter}^^A tudfoot
% \end{parameter}^^A widehead
% \end{parameter}^^A barfont
% \end{parameter}^^A tudfonts
% \end{parameter}^^A cdfonts
% Damit sind alle notwendigen Parameter für die Kopf- und Fußzeile der Seiten
% im Stil \pgs{tudheadings} definiert.
%    \begin{macrocode}
}
%    \end{macrocode}
% \end{macro}^^A \TUD@parameter@ps@def
%
% \iffalse
%<*book|report|article>
% \fi
%
% \begin{environment}{tudpage}
% \changes{v2.02}{2014/06/23}{an Paket \pkg{scrlayer-scrpage} angepasst}^^A
% \begin{parameter}{language}
% \begin{parameter}{columns}
% \begin{parameter}{pagestyle}
% \changes{v2.02}{2014/06/23}{neu}^^A
% \changes{v2.03}{2015/01/28}{\cs{tud@if@tudheadings} verwendet}^^A
% \begin{macro}{\tud@envir@ps}
% \begin{macro}{\tud@envir@selectps}
% \changes{v2.02}{2014/07/19}{neu}^^A
% \begin{macro}{\tud@currentpagestyle@set}
% \changes{v2.02}{2014/07/18}{neu}^^A
% \begin{macro}{\tud@currentpagestyle@reset}
% \changes{v2.02}{2014/07/18}{neu}^^A
% \changes{v2.03}{2015/01/09}{Bugfix}^^A
% \begin{macro}{\tud@currentpagestyle@value}
% Durch den hohen TUD-Kopf muss bei der Verwendung dessens das Seitenlayout
% temporär umgeschaltet werden, um die Höhe des Satzspiegels zu verringern.
% Dies geschieht innerhalb dieser Umgebung reversibel mit \cs{pagestyle}.
% Dabei wird mit \cs{loadgeometry} ein Seitenumbruch erzwungen und der 
% benötigte Satzspiegel geladen.
%
% Die Befehle \cs{tud@currentpagestyle@set} und \cs{tud@currentpagestyle@reset}
% sind für die Sicherung und Wiederherstellung des vor der Umgebung geladenen
% Seitenstils verantwortlich.
%
% Zu Beginn der Umgebung werden die weiter unten beschriebenen Optionen für
% diese Umgebung mit \cs{TUD@parameter@set} ausgeführt. Nach dem Beenden der
% Umgebung wird nache einem weiteren Seitenumbruch das Standardseitenlayout
% wiederhergestellt. Die gewünschte Sprache der Umgebung kann als einzelner
% Wert ohne Schlüssel angegben werden.
% \ToDo{Umgebung raus? Auf alle Fälle cdgeometry=... etc. unterstützen}[v2.07]
%    \begin{macrocode}
\newcommand*\tud@envir@ps{tudheadings}
\newcommand*\tud@envir@selectps{%
  \expandafter\pagestyle\expandafter{\tud@envir@ps}%
  \tud@if@strequal{\GetRealPageStyle{\tud@envir@ps}}{empty}{%
    \renewcommand*\titlepagestyle{empty}%
%<*book|report>
    \renewcommand*\partpagestyle{empty}%
    \renewcommand*\chapterpagestyle{empty}%
%</book|report>
    \renewcommand*\indexpagestyle{empty}%
  }{}%
  \tud@if@strequal{\GetRealPageStyle{\tud@envir@ps}}{empty.tudheadings}{%
    \renewcommand*\titlepagestyle{empty.tudheadings}%
%<*book|report>
    \renewcommand*\partpagestyle{empty.tudheadings}%
    \renewcommand*\chapterpagestyle{empty.tudheadings}%
%</book|report>
    \renewcommand*\indexpagestyle{empty.tudheadings}%
  }{}%
}
\newcommand*\tud@currentpagestyle@value{}
\newcommand*\tud@currentpagestyle@set{%
  \ifdefvoid{\tud@currentpagestyle@value}{%
    \xdef\tud@currentpagestyle@value{\currentpagestyle}%
  }{}%
}
\newcommand*\tud@currentpagestyle@reset{%
  \ifdefvoid{\tud@currentpagestyle@value}{}{%
    \expandafter\pagestyle\expandafter{\tud@currentpagestyle@value}%
    \let\tud@currentpagestyle@value\relax%
  }%
}
\NewEnviron{tudpage}[1][]{%
%    \end{macrocode}
% Um beim Umschalten des Seitenstils den aktuellen selbst zu behalten, wird
% dieser im Hilfsmakro \cs{tud@currentpagestyle@value} gespeichert.
% \ToDo{eher NewDocumentEnvironment nutzen?}[v2.07]
%    \begin{macrocode}
  \tud@currentpagestyle@set%
  \clearpage%
  \def\tud@envir@ps{tudheadings}%
  \TUD@parameter@set{tudpage}{#1}%
  \tud@envir@selectps%
%    \end{macrocode}
% Falls das \pkg{multicol}-Paket geladen ist und eine Spaltenanzahl angegeben
% ist, wird die entsprechende Umgebung gesartet, mit \cs{BODY} der Inhalt der
% \env{tudpage}-Umgebung ausgegeben und anschließend gegebenenfalls die
% \env{multicols}-Umgebung beendet.
%    \begin{macrocode}
  \tud@x@multicol@check%
  \ifnum\tud@x@multicol@num>\@ne\relax%
    \begin{multicols}{\tud@x@multicol@num}%
  \fi%
  \BODY%
  \ifnum\tud@x@multicol@num>\@ne\relax%
    \end{multicols}%
  \fi%
%    \end{macrocode}
% Am Ende der Umgebung wird der vorhergehende Seitenstil zurückgesetzt und der 
% dazugehörige Satzspiegel geladen. Dazu wird die Ausführung das Hilfsmakro
% \cs{@tempa} auf das Beenden der Umgebung mit \cs{aftergroup} verzögert.
%    \begin{macrocode}
}[%
  \aftergroup\tud@currentpagestyle@reset%
  \clearpage%
]
%    \end{macrocode}
% Mit \cs{TUD@parameter@family}\marg{Family}\marg{\dots} wird die Familie der
% Parameter festgelegt und anschließend die Definitionen getätigt.
%    \begin{macrocode}
\TUD@parameter@family{tudpage}{%
%    \end{macrocode}
% Mit dem Parameter \prm{language} kann die in der Umgebung verwendete Sprache 
% umgeschaltet werden. Die Sprache kann auch ohne den entsprechenden Schlüssel
% direkt als Parameter angegeben werden.
%    \begin{macrocode}
  \TUD@parameter@def{language}{\selectlanguage{#1}}%
%    \end{macrocode}
% Mit \prm{columns} kann die Anzahl der Spalten für die Umgebung angegeben
% werden. Für mehr als zwei Spalten muss das Paket \pkg{multicol} geladen
% werden. Die Spaltenanzahl kann auch ohne den entsprechenden Schlüssel direkt
% Parameter angegeben werden.
%    \begin{macrocode}
  \TUD@parameter@def{columns}{\renewcommand*\tud@x@multicol@num{#1}}%
%    \end{macrocode}
% Mit dem Parameter \prm{pagestyle} kann der verwendete Seitenstil eingestellt
% werden, wobei einer der \pgs{tudheadings}-Seitenstile verwendet wird.
%    \begin{macrocode}
  \TUD@parameter@def{pagestyle}{%
    \tud@if@tudheadings{#1}{\def\tud@envir@ps{#1}}{%
      \def\tud@envir@ps{tudheadings}%
      \tud@if@strequal{#1}{empty}{\def\tud@envir@ps{empty.tudheadings}}{%
      \tud@if@strequal{#1}{plain}{\def\tud@envir@ps{plain.tudheadings}}{%
      \tud@if@strequal{#1}{headings}{}{%
        \TUD@parameter@err{pagestyle}{%
          headings, plain, empty or any tudheadings page style type%
        }%
      }}}%
    }%
  }%
%    \end{macrocode}
% Hier werden die Parameter für Kopf- und Fußzeile tatsächlich definiert.
%    \begin{macrocode}
  \TUD@parameter@ps@def{#1}%
%    \end{macrocode}
% Für den Fall, dass ein Wert nicht in der Schlüssel"=Wert"=Notation gegeben
% wird, erfolgt eine Sonderbehandlung durch \cs{TUD@parameter@handler@default},
% bei dererst auf eine Zahl geprüft wird und anschießend versucht wird, das
% Argument als Sprache zu setzen. Nach der Definition aller Parameter wird der
% Befehl \cs{TUD@parameter@family} und damit auch die aktuelle Parameterfamilie
% beendet.
%    \begin{macrocode}
  \TUD@parameter@handler@default{}%
}
%    \end{macrocode}
% \end{macro}^^A \tud@currentpagestyle@value
% \end{macro}^^A \tud@currentpagestyle@reset
% \end{macro}^^A \tud@currentpagestyle@set
% \end{macro}^^A \tud@envir@selectps
% \end{macro}^^A \tud@envir@ps
% \end{parameter}^^A pagestyle
% \end{parameter}^^A columns
% \end{parameter}^^A language
% \end{environment}^^A tudpage
%
% \iffalse
%</book|report|article>
% \fi
%
% Mit der Nutzung von \pkg{scrlayer-scrpage} ist die parallele Verwendung des 
% Paketes \pkg{fancyhdr} nicht möglich.
%    \begin{macrocode}
\PreventPackageFromLoading[%
  \ClassWarning{\TUD@Class@Name}{%
    The package `fancyhdr' must not be used with a\MessageBreak%
    TUD-Script class. You should make use of the\MessageBreak%
    capabilities of package `scrlayer-scrpage' instead%
  }%
]{fancyhdr}
%    \end{macrocode}
%
% \iffalse
%</class&body>
% \fi
%
% \PrintBackMatter
%
\endinput