% \CheckSum{1954}
% \iffalse meta-comment
% 
% ============================================================================
% 
%  TUD-KOMA-Script
%  Copyright (c) Falk Hanisch <tudscr@gmail.com>, 2012-2015
% 
% ============================================================================
% 
%  This work may be distributed and/or modified under the conditions of the
%  LaTeX Project Public License, version 1.3c of the license. The latest
%  version of this license is in http://www.latex-project.org/lppl.txt and 
%  version 1.3c or later is part of all distributions of LaTeX 2005/12/01
%  or later and of this work. This work has the LPPL maintenance status 
%  "author-maintained". The current maintainer and author of this work
%  is Falk Hanisch.
% 
% ----------------------------------------------------------------------------
% 
% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz
% in der Version 1.3c, verteilt und/oder veraendert werden. Die aktuelle 
% Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und 
% Version 1.3c oder spaeter ist Teil aller Verteilungen von LaTeX 2005/12/01 
% oder spaeter und dieses Werks. Dieses Werk hat den LPPL-Verwaltungs-Status 
% "author-maintained", wird somit allein durch den Autor verwaltet. Der 
% aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch.
% 
% ============================================================================
%
% \fi
%
% \CharacterTable
%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%   Digits        \0\1\2\3\4\5\6\7\8\9
%   Exclamation   \!     Double quote  \"     Hash (number) \#
%   Dollar        \$     Percent       \%     Ampersand     \&
%   Acute accent  \'     Left paren    \(     Right paren   \)
%   Asterisk      \*     Plus          \+     Comma         \,
%   Minus         \-     Point         \.     Solidus       \/
%   Colon         \:     Semicolon     \;     Less than     \<
%   Equals        \=     Greater than  \>     Question mark \?
%   Commercial at \@     Left bracket  \[     Backslash     \\
%   Right bracket \]     Circumflex    \^     Underscore    \_
%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%   Right brace   \}     Tilde         \~}
%
% \iffalse
%%% From File: tudscr-pagestyle.dtx
%<*driver>
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\ProvidesFile{tudscr-pagestyle.dtx}[%
  2015/02/15 v2.03 TUD-KOMA-Script (pagestyle)%
]
\RequirePackage[ngerman=ngerman-x-latest]{hyphsubst}
\documentclass[english,ngerman]{tudscrdoc}
\usepackage{selinput}\SelectInputMappings{adieresis={ä},germandbls={ß}}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{tudscrfonts} % only load this package, if the fonts are installed
\KOMAoptions{parskip=half-}
\CodelineIndex
\RecordChanges
\GetFileInfo{tudscr-pagestyle.dtx}
\begin{document}
  \maketitle
  \DocInput{\filename}
\end{document}
%</driver>
% \fi
%
% \selectlanguage{ngerman}
%
% \changes{v2.02}{2014/06/23}{Unterstützung für \pkg{titlepage} entfernt}%^^A
% \changes{v2.02}{2014/07/08}{Optionen nutzen \cs{FamilyKeyState}}%^^A
%
% \section{Der Seitenstil des \CDs}
%
% Das \CD verlangt (eigentlich) einen fest vorgegebenen Satzspiegel. Für das
% Setzen längerer wissenschaftlicher Abhandlungen ist dieser jedoch alles
% andere als glücklich gewählt. Insbesondere für den doppelseitigen Satz ist
% das Standardlayout nicht gut nutzbar. Für die \TUDScript"=Klassen wird 
% deshalb die Abweichung vom sonst fest vorgegebenen Satzspiegel ermöglicht.
%
% \StopEventually{\PrintIndex\PrintChanges}
%
% \subsection{Definition der konstanten Größen und Maße}
%
% Die Vorlagen sollen neben den vom \CD vorgegebenen Seitenrändern weitere
% Layouts ermöglichen und u.\,a. auch die Nutzung des Paketes \pkg{typearea}
% erlauben. Damit ein einheitliches Verfahren zur Wahl bzw. Umschaltung des
% Satzspiegels genutzt werden kann, wird das Paket \pkg{geometry} genutzt.
% Dabei werden entweder die gewünschten Maße der Seitenränder direkt gewählt
% oder aber die mit \pkg{typearea} berechneten Maße an \pkg{geometry}
% durchgereicht.
%
% Als erstes werden die Standardmaße für die Seitenränder im \CD definiert,
% danach speziell für die \env{tudpage}"=Umgebung.
%
% \iffalse
%<*class&body>
% \fi
%
% \begin{length}{\tud@dim@widemargin}
% \begin{length}{\tud@dim@slimmargin}
% \begin{length}{\tud@dim@both}
% Die Seitenränder für links und rechts sowie deren Summe, welche später für
% weitere Layouts dazu verwendet wird, diese anteilig zu verteilen.
%    \begin{macrocode}
\newlength\tud@dim@widemargin
\newlength\tud@dim@slimmargin
\newlength\tud@dim@both
%    \end{macrocode}
% \end{length}^^A \tud@dim@both
% \end{length}^^A \tud@dim@slimmargin
% \end{length}^^A \tud@dim@widemargin
% \begin{length}{\tud@dim@top}
% \changes{v2.02}{2015/01/09}{entfernt}%^^A
% \begin{length}{\tud@dim@bottom}
% \changes{v2.02}{2015/01/09}{entfernt}%^^A
% \begin{length}{\tud@dim@footskip}
% \changes{v2.02}{2015/01/09}{entfernt}%^^A
% Die Befehle wurden mit der \TUDScript-Version~v2.03 allesamt entfernt, da 
% diese redundant waren und implizit durch andere, bereits für das \CD 
% definierte Längen dargestellt werden können.
% \end{length}^^A \tud@dim@footskip
% \end{length}^^A \tud@dim@bottom
% \end{length}^^A \tud@dim@top
% \begin{length}{\tud@dim@topmargin}
% \begin{length}{\tud@dim@barheight}
% \begin{length}{\tud@dim@headsep}
% \begin{length}{\tud@dim@footsep}
% Es folgen die speziellen Maße für die Seiten mit dem TUD-Kopf, also die Höhe
% oberhalb des Querbalkens, die Höhe des Querbalkens selbst sowie der vertikale
% (Mindest"~)Abstand zwischen Querbalken und Textkörper sowie der Fußzeile.
%    \begin{macrocode}
\newlength\tud@dim@topmargin
\newlength\tud@dim@barheight
\newlength\tud@dim@headsep
\newlength\tud@dim@footsep
%    \end{macrocode}
% \end{length}^^A \tud@dim@footsep
% \end{length}^^A \tud@dim@headsep
% \end{length}^^A \tud@dim@barheight
% \end{length}^^A \tud@dim@topmargin
% \begin{length}{\tud@dim@logox}
% \begin{length}{\tud@dim@logoy}
% \begin{length}{\tud@dim@logowidth}
% \begin{length}{\tud@dim@logoheight}
% \changes{v2.03}{2015/01/13}{entfernt}%^^A
% Außerdem müssen noch die Abmessungen und die Position des TUD-Logos definiert
% werden, nämlich der horizontale (Soll"~)Abstand zwischen linkem Seitenrand
% und Logo, der vertikale (Soll"~)Abstand zwischen oberem Seitenrand und Logo
% sowie die Breite und Höhe\footnote{Proportionen sind durch die Grafik
% vorgegeben} des Logos.
%    \begin{macrocode}
\newlength\tud@dim@logox
\newlength\tud@dim@logoy
\newlength\tud@dim@logowidth
%    \end{macrocode}
% \end{length}^^A \tud@dim@logoheight
% \end{length}^^A \tud@dim@logowidth
% \end{length}^^A \tud@dim@logoy
% \end{length}^^A \tud@dim@logox
% \begin{length}{\tud@dim@line}
% \changes{v2.02}{2014/06/23}{neu}%^^A
% \begin{length}{\tud@dim@heavyline}
% \begin{length}{\tud@dim@thinline}
% Die Linienstärke der Outline im Kopf ist für ein monochromes Layout schmaler
% als im Layout mit farbigem Hintergrund.\footnote{%
% monochrom \cs{tud@dim@thinline}, koloriert \cs{tud@dim@heavyline}}%
% Da im Dokument beide Varianten vorkommen können, wird die Breite 
% \cs{tud@dim@line} durch den Seitenstil situativ entweder auf den Wert von
% \cs{tud@dim@thinline} oder aber \cs{tud@dim@heavyline} gesetzt.
%    \begin{macrocode}
\newlength\tud@dim@line
\newlength\tud@dim@heavyline
\newlength\tud@dim@thinline
%    \end{macrocode}
% \end{length}^^A \tud@dim@thinline
% \end{length}^^A \tud@dim@heavyline
% \end{length}^^A \tud@dim@line
% \begin{length}{\tud@dim@headdiff}
% \begin{length}{\tud@dim@headingsvskip}
% \changes{v2.02}{2014/06/23}{neu}%^^A
% Die Längen für den vertikalen Standardversatz der Überschriften sowie die 
% Differenz der Kopfhöhen von normalem Satzspiegel und dem mit dem TUD-Kopf.
%    \begin{macrocode}
\newlength\tud@dim@headdiff
\newlength\tud@dim@headingsvskip
%    \end{macrocode}
% \end{length}^^A \tud@dim@headdiff
% \end{length}^^A \tud@dim@headingsvskip
% \begin{length}{\tud@dim@ddcdiff}
% \changes{v2.02}{2014/06/23}{neu}%^^A
% Zu guter Letzt noch die Länge \cs{tud@dim@ddcdiff} für den Höhenausgleich des 
% Seitenfußes, welcher bei der Verwendung des \DDC-Logos in der Fußzeile bei 
% Version~v2.02 für den Satzspiegel notwendig war. Dieser etwas verschrobene
% Satzspiegel wird im Kompatibilitätsmodus weiterhin angeboten.
%    \begin{macrocode}
\iftudscrverlower{2.03}{\newlength\tud@dim@ddcdiff}{}
%    \end{macrocode}
% \end{length}^^A \tud@dim@ddcdiff
% \begin{macro}{\tud@geometry@set}
% \changes{v2.03}{2015/01/23}{Längenberechnung für den Satzspiegel an 
%   Referenzlänge \cs{tud@dim@widemargin} gekoppelt}%^^A
% \begin{macro}{\tud@head@font@size}
% Hiermit werden in Abhängigkeit der gewählten Papiergröße die Maße für die
% Größe der Kopfzeile, die Position des Logos, die Seitenränder sowie die
% Schriftgröße in der Kopfzeile definiert. Aufgerufen wird der Befehl durch
% \cs{tud@geometry@process}. Dabei fungiert \cs{tud@dim@widemargin} als 
% Bezugslänge. Die maßgebliche Papiergröße ist DIN~A4. Die Längen für alle
% anderen Papiermaße unterscheiden sich um den Faktor~$\sqrt{2}$, wobei das 
% Format DIN~A5 nach den Vorgaben des \CDs übersprungen wird.
%    \begin{macrocode}
\newcommand*\tud@head@font@size{}
\newcommand*\tud@geometry@set{%
  \ifdim\paperheight<148.1mm\relax%
    \setlength\tud@dim@widemargin{15mm}%
    \setlength\tud@dim@heavyline{0.5pt}%
    \setlength\tud@dim@thinline{0.25pt}%
    \def\tud@head@font@size{4.5}%
  \else\ifdim\paperheight<297.1mm\relax%
    \setlength\tud@dim@widemargin{30mm}%
    \setlength\tud@dim@heavyline{1pt}%
    \setlength\tud@dim@thinline{0.5pt}%
    \def\tud@head@font@size{9}%
  \else\ifdim\paperheight<420.1mm\relax%
    \setlength\tud@dim@widemargin{42.426407mm}%
    \setlength\tud@dim@heavyline{1.414214pt}%
    \setlength\tud@dim@thinline{0.707107pt}%
    \def\tud@head@font@size{12.727922}%
  \else\ifdim\paperheight<594.1mm\relax%
    \setlength\tud@dim@widemargin{60mm}%
    \setlength\tud@dim@heavyline{2pt}%
    \setlength\tud@dim@thinline{1pt}%
    \def\tud@head@font@size{18}%
  \else\ifdim\paperheight<841.1mm\relax%
    \setlength\tud@dim@widemargin{84.852814mm}%
    \setlength\tud@dim@heavyline{2.828427pt}%
    \setlength\tud@dim@thinline{1.414214pt}%
    \def\tud@head@font@size{25.455844}%
  \else%
    \setlength\tud@dim@widemargin{120mm}%
    \setlength\tud@dim@heavyline{4pt}%
    \setlength\tud@dim@thinline{2pt}%
    \def\tud@head@font@size{36}%
  \fi\fi\fi\fi\fi%
%    \end{macrocode}
% Zum Schluss werden die restlichen Längen aus der Referenzlänge berechnet.
%    \begin{macrocode}
  \setlength\tud@dim@slimmargin{\dimexpr2\tud@dim@widemargin/3\relax}%
  \setlength\tud@dim@both{\dimexpr5\tud@dim@widemargin/3\relax}%
  \setlength\tud@dim@topmargin{\dimexpr7\tud@dim@widemargin/6\relax}%
  \setlength\tud@dim@barheight{\dimexpr\tud@dim@widemargin/6\relax}%
  \setlength\tud@dim@headsep{\dimexpr2\tud@dim@widemargin/5\relax}%
  \setlength\tud@dim@logox{\dimexpr1.1\tud@dim@widemargin/3\relax}%
  \setlength\tud@dim@logoy{\dimexpr0.45\tud@dim@widemargin\relax}%
  \setlength\tud@dim@logowidth{\dimexpr1.9\tud@dim@widemargin\relax}%
  \setlength\tud@dim@footsep{%
    \dimexpr\tud@dim@widemargin-.6\tud@dim@topmargin\relax%
  }%
}
%    \end{macrocode}
% \end{macro}^^A \tud@head@font@size
% \end{macro}^^A \tud@geometry@set
%
% \subsection{Unterstützung der \cls{standalone}-Klasse}
%
% \changes{v2.02}{2014/07/25}{Unterstützung der \cls{standalone}-Klasse}%^^A
%
% Mit der Klasse~\cls{standalone} können insbesondere Grafiken als separate 
% Dateien erzeugt und später im Dokument eingebunden werden. Diese Klasse 
% ändert allerhand an den Einstellungen der Seitenränder. Damit sich diese bei
% der Verwendung mit den \TUDScript-Klassen nicht in die Quere kommen, müssen 
% für einige Einstellungen unterdrückt werden.
%
% \begin{macro}{\ifstandalonecrop}
% \changes{v2.02}{2014/09/08}{neu}%^^A
% Mit diesem Makro kann die Verwendung der Option \opt{crop} mit der Klasse 
% \cls{standalone} geprüft werden. Das erste Argument wird ausgeführt, wenn 
% die Klasse geladen und die Option aktiv ist. Das zweite Argument wird 
% ausgeführt, wenn entweder die Option \opt{crop} deaktiviert ist oder die 
% Klasse \cls{standalone} gar nicht geladen wurde.
%    \begin{macrocode}
\newcommand*\ifstandalonecrop{%
  \ifcsdef{ifsa@crop}{%
    \ifbool{sa@crop}{\@firstoftwo}{\@secondoftwo}%
  }{%
    \@secondoftwo%
  }%
}
%    \end{macrocode}
% \end{macro}^^A \ifstandalonecrop
%
% 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.
%
%    \begin{macrocode}
\AtEndPreamble{%
  \ifstandalonecrop{%
    \PreventPackageFromLoading{scrlayer-scrpage}%
    \pagestyle{empty}%
    \hoffset=-72.27pt%
    \voffset=-72.27pt%
    \topmargin=0pt%
    \headheight=0pt%
    \headsep=0pt%
    \marginparsep=0pt%
    \marginparwidth=0pt%
    \footskip=0pt%
    \marginparpush=0pt%
    \oddsidemargin=0pt%
    \evensidemargin=0pt%
    \topskip=0pt%
    \textheight=\maxdimen%
  }{}%
}
%    \end{macrocode}
%
% \subsection{Definition des Seitenstils mittels \pkg{scrlayer-scrpage}}
%
% Ein zentraler Bestandteil der Vorlagen ist der Seitenkopf des \CDs. Dieser 
% wird ab der Version~v2.02 mit Hilfe des Paketes \pkg{scrlayer-scrpage} 
% erstellt. 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.
%
% \begin{pagestyle}{tudheadings}
% \changes{v2.02}{2014/06/23}{neu}%^^A
% \begin{pagestyle}{plain.tudheadings}
% \changes{v2.02}{2014/06/23}{neu}%^^A
% \begin{pagestyle}{empty.tudheadings}
% \changes{v2.02}{2014/06/23}{neu}%^^A
% Es wird ein neuer Seitenstil kreiert, der das \CD der \TnUD mit der
% prägenden Kopfzeile umsetzt. Dabei soll dieser Kopf auch verwendbar sein,
% wenn nicht die vom \CD vorgeschriebenen Seitenränder sondern das Paket
% \pkg{typearea} genutzt wird. Dafür wird das Logo im Kopf so wie im \CD
% vorgesehen mit dem Logo der \TnUD in den Rand und dem Schriftzug bündig zum
% Textblock gesetzt. 
%
% 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.
%    \begin{macrocode}
\AtEndPreamble{%
%    \end{macrocode}
% Damit der Anwender beliebige Optionen an \pkg{scrlayer-scrpage} übergeben 
% kann, wird das Paket erst zum Ende der Präambel geladen, wenn dies nicht 
% bereits vorher geschehen ist. Anschließend werden verschiedene, sogeannte 
% Layers respektive Ebenen für die einzelnen Elemente auf einer Seite erstellt.
%    \begin{macrocode}
  \RequirePackage{scrlayer-scrpage}[2013/12/14]%
  \AfterPackage*{scrlayer-scrpage}{%
%    \end{macrocode}
% \begin{layer}{tudheadings.head.mainlogo}
% \changes{v2.02}{2014/06/23}{neu}%^^A
% \begin{layer}{tudheadings.head.logo}
% \changes{v2.02}{2014/06/23}{neu}%^^A
% Dies sind das links aus dem Satzspiegel verschobene Logo der \TnUD, \dots
%    \begin{macrocode}
    \DeclareNewLayer[%
      background,headsep,%
      voffset=\tud@dim@logoy,%
      contents={%
        \hspace*{\dimexpr\tud@dim@logox-\tud@dim@widemargin\relax}%
        \tud@mainlogo%
      },%
    ]{tudheadings.head.mainlogo}%
%    \end{macrocode}
% \dots und das Zweitlogo.
%    \begin{macrocode}
    \DeclareNewLayer[%
      background,headsep,%
      voffset=\tud@dim@logoy,%
      contents={\hfill\tud@headlogo},%
    ]{tudheadings.head.logo}%
%    \end{macrocode}
% \end{layer}^^A tudheadings.head.logo
% \end{layer}^^A tudheadings.head.mainlogo
% \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
% Außerdem gibt es eine Variante ohne Querbalken-Outline. Stattdessen werden
% der Querbalken und der darüberliegende Kopf farbig abgesetzt. 
%    \begin{macrocode}
    \DeclareNewLayer[%
      background,%
      contents={%
        \ifnum\tud@head@bar>\@ne\relax%
          \color{HKS41}%
          \rule{\layerwidth}{\tud@dim@topmargin}%
        \fi%
      },%
    ]{tudheadings.head.back}%
    \DeclareNewLayer[%
      background,%
      voffset=\tud@dim@topmargin,%
      contents={%
        \ifnum\tud@head@bar>\@ne\relax%
          \color{HKS41!80}%
          \rule{\layerwidth}{\tud@dim@barheight}%
        \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=\dimexpr\tud@dim@topmargin+\tud@dim@line\relax,%
      contents={\tud@head@text@box},%
    ]{tudheadings.head.text}%
%    \end{macrocode}
% \end{layer}^^A tudheadings.head.text
% \begin{layer}{tudheadings.head.upperline}
% \changes{v2.02}{2014/06/23}{neu}%^^A
% \begin{layer}{tudheadings.head.lowerline}
% \changes{v2.02}{2014/06/23}{neu}%^^A
% \begin{layer}{tudheadings.head.upperwideline}
% \changes{v2.02}{2014/06/23}{neu}%^^A
% \begin{layer}{tudheadings.head.lowerwideline}
% \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. Darauf folgt \dots
%    \begin{macrocode}
    \DeclareNewLayer[%
      background,headsep,%
      voffset=\dimexpr\tud@dim@topmargin-.5\tud@dim@line\relax,%
      contents={%
        \ifnum\tud@head@bar<\tw@\relax\if@tud@head@widebar\else%
          \tud@head@rule{\textwidth}%
        \fi\fi%
      },%
    ]{tudheadings.head.upperline}%
    \DeclareNewLayer[%
      background,headsep,%
      voffset=\dimexpr\tud@dim@topmargin+\tud@dim@barheight%
        -.5\tud@dim@line\relax,%
      contents={%
        \ifnum\tud@head@bar<\tw@\relax\if@tud@head@widebar\else%
          \tud@head@rule{\textwidth}%
        \fi\fi%
      },%
    ]{tudheadings.head.lowerline}%
    \DeclareNewLayer[%
      background,%
      voffset=\dimexpr\tud@dim@topmargin-.5\tud@dim@line\relax,%
      contents={%
        \ifnum\tud@head@bar<\tw@\relax\if@tud@head@widebar%
          \tud@head@rule{\paperwidth}%
        \fi\fi%
      },%
    ]{tudheadings.head.upperwideline}%
    \DeclareNewLayer[%
      background,%
      voffset=\dimexpr\tud@dim@topmargin+\tud@dim@barheight%
        -.5\tud@dim@line\relax,%
      contents={%
        \ifnum\tud@head@bar<\tw@\relax\if@tud@head@widebar%
          \tud@head@rule{\paperwidth}%
        \fi\fi%
      },%
    ]{tudheadings.head.lowerwideline}%
%    \end{macrocode}
% \end{layer}^^A tudheadings.head.lowerwideline
% \end{layer}^^A tudheadings.head.upperwideline
% \end{layer}^^A tudheadings.head.lowerline
% \end{layer}^^A tudheadings.head.upperline
% \begin{layer}{tudheadings.foot.logo}
% \changes{v2.02}{2014/06/23}{neu}%^^A
% \changes{v2.03}{2015/01/13}{Ebenendeklaration ist kompatibilitätsabhängig}%^^A
% \begin{layer}{tudheadings.foot.back}
% \changes{v2.03}{2015/02/15}{neu}%^^A
% Außerdem wird eine weitere Ebene für Drittlogos sowie das \DDC-Logo im
% Seitenfuß erstellt. Dabei wird die Ebene in Abhängigkeit vom gewählten 
% Kompatibilitätsmodus unterschiedlich definiert. 
% 
% Ab Version~v2.03 wird der Satzspiegel so gewählt, dass das \DDC-Logo in den 
% normalen Seitenfuß passt.
%    \begin{macrocode}
    \DeclareNewLayer[%
      background,foot,%
      height=\dimexpr\paperheight-\layeryoffset\relax,%
      contents={%
%    \end{macrocode}
% Falls die Höhe der Logos im Fuß nicht durch den Anwender festgelegt wurden, 
% werden passende Standardwerte gesetzt.
%    \begin{macrocode}
        \ifdim\footlogoheight>\z@\relax\else%
          \settoheight\footlogoheight{\tud@mainlogo}%
          \iftudscrverlower{2.03}{%
            \setlength\footlogoheight{.6\tud@dim@topmargin}%
          }{}%
        \fi%
%    \end{macrocode}
% Die gesetzt Größe der Logos im Fuß wird geprüft. Sollten diese zu groß sein, 
% wird eine Warnug ausgegeben.
%    \begin{macrocode}
        \setlength\@tempdima{%
          \dimexpr\footlogoheight-\layerheight+\dp\strutbox\relax%
        }%
        \ifdim\@tempdima>\vfuzz\relax%
          \ClassWarning{\tudcls@name}{%
            The chosen `\string\footlogoheight' 
            (\the\footlogoheight)\MessageBreak%
            is \the\@tempdima\space higher than recommended. You\MessageBreak%
            should decrease this length
            \ifcase\tud@geometry\relax\else%
              or alternatively\MessageBreak%
              enlarge the bottom margin by using option\MessageBreak%
              `extrabottommargin'%
            \fi%
          }%
        \fi%
%    \end{macrocode}
% Hier erfolgt die eigentliche Ausgabe der Logos. Dabei werden ggf. zuerst die 
% mit \cs{footlogo} angegeben wurden, anschließend wird das \DDC-Logo gesetzt, 
% fall dies gefordert ist.
%    \begin{macrocode}
        \let\@tempa\relax%
        \@for\@tempb:=\tud@@footlogo\do{%
          \@tempa%
          \ifx\@tempb\@empty\else%
            \expandafter\tud@footlogo\expandafter{\@tempb}%
          \fi%
          \let\@tempa\footlogosep%
        }%
        \tud@ddclogo%
      },%
    ]{tudheadings.foot.logo}%
%    \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}
    \iftudscrverlower{2.03}{%
      \ModifyLayer[%
        voffset=\dimexpr\topmargin+1in+\headheight+\headsep+\textheight%
          +\footskip-\footheight-\tud@dim@ddcdiff%
          \ifcase\tud@geometry\relax\else+\ht\strutbox+\dp\strutbox\fi%
          \relax,%
        height=\dimexpr.6\tud@dim@topmargin+\dp\strutbox\relax,%
      ]{tudheadings.foot.logo}%
    }{}%
%    \end{macrocode}
% Diese Ebene wird als Hintergrund für den Fußbereich definiert.
%    \begin{macrocode}
    \DeclareNewLayer[%
      background,%
      hoffset=0pt,%
      width=\paperwidth,%
      voffset=\dimexpr\@nameuse{scr@l@tudheadings.foot.logo@y}%
        -\dp\strutbox\relax,%
      height=\dimexpr\paperheight-\layeryoffset\relax,%
      contents={%
        \if@tud@footcolor%
          \let\@tempc\relax%
          \ifnum\tud@head@bar>\@ne\def\@tempc{\color{HKS41}}\fi%
          \ifstr{\tud@pagecolor}{HKS41}{\def\@tempc{\color{HKS41!80}}}{}%
          \ifx\@tempc\relax\else%
            \iftudscrverlower{2.03}{%
              \tud@ddc@check%
              \ifcase\@tempb\relax%
                \vbox to \layerheight{%
                  \vfil\@tempc%
                  \rule{\layerwidth}{%
                    \dimexpr\layerheight-\tud@dim@ddcdiff+\ht\strutbox\relax%
                  }%
                }%
              \else%
                \@tempc\rule{\layerwidth}{\layerheight}%
              \fi%
            }{\@tempc\rule{\layerwidth}{\layerheight}}%
          \fi%
        \fi%
      },%
    ]{tudheadings.foot.back}%
%    \end{macrocode}
% \end{layer}^^A tudheadings.foot.back
% \end{layer}^^A tudheadings.foot.logo
% 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[%
      onselect=\tud@ps@onselect,onbackground=\tud@ps@onbackground%
    ]{tudheadings}{%
      tudheadings.head.back,%
      tudheadings.head.mainlogo,%
      tudheadings.head.logo,%
      tudheadings.head.bar,%
      tudheadings.head.text,%
      tudheadings.head.upperline,%
      tudheadings.head.lowerline,%
      tudheadings.head.upperwideline,%
      tudheadings.head.lowerwideline,%
      tudheadings.foot.back,%
      tudheadings.foot.logo,%
      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[%
      onselect=\tud@ps@onselect,onbackground=\tud@ps@onbackground%
    ]{plain.tudheadings}{%
      tudheadings.head.back,%
      tudheadings.head.mainlogo,%
      tudheadings.head.logo,%
      tudheadings.head.bar,%
      tudheadings.head.text,%
      tudheadings.head.upperline,%
      tudheadings.head.lowerline,%
      tudheadings.head.upperwideline,%
      tudheadings.head.lowerwideline,%
      tudheadings.foot.back,%
      tudheadings.foot.logo,%
      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[%
      onselect=\tud@ps@onselect,onbackground=\tud@ps@onbackground%
    ]{empty.tudheadings}{%
      tudheadings.head.back,%
      tudheadings.head.mainlogo,%
      tudheadings.head.logo,%
      tudheadings.head.bar,%
      tudheadings.head.text,%
      tudheadings.head.upperline,%
      tudheadings.head.lowerline,%
      tudheadings.head.upperwideline,%
      tudheadings.head.lowerwideline,%
      tudheadings.foot.back,%
      tudheadings.foot.logo,%
    }%
    \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.
%    \begin{macrocode}
    \DeclareNewLayer[
      background,page,%
      contents={%
        \ifdefvoid{\tud@pagecolor}{}{%
          \color{\tud@pagecolor}%
          \rule{\layerwidth}{\layerheight}%
        }%
      },%
    ]{tudheadings.pagecolor}
    \AddLayersToPageStyle{@everystyle@}{tudheadings.pagecolor}%
%    \end{macrocode}
% \end{layer}^^A tudheadings.pagecolor
% Der Kopf im \CD der \TnUD erfordert einen eigenen Satzspiegel, der ggf. durch 
% \cs{tud@beforeselectanypagestyle} aktiviert bzw. deaktiviert wird.
%    \begin{macrocode}
    \BeforeSelectAnyPageStyle{\tud@beforeselectanypagestyle{#1}}%
  }%
}
%    \end{macrocode}
% \end{pagestyle}^^A empty.tudheadings
% \end{pagestyle}^^A plain.tudheadings
% \end{pagestyle}^^A tudheadings
% \begin{macro}{\tud@ps@onselect}
% \changes{v2.03}{2015/01/09}{neu}%^^A
% \begin{macro}{\tud@ps@onbackground}
% \changes{v2.03}{2015/02/14}{neu}%^^A
% \begin{macro}{\tud@head@logocolor}
% \begin{macro}{\tud@foot@logocolor}
% \changes{v2.03}{2015/02/15}{neu}%^^A
% Diese Befehle werden bei der Initialiserung der Seitenstile beziehungsweise
% zu Beginn der Ebenenausgabe aufgerufen.
%    \begin{macrocode}
\newcommand*\tud@ps@onselect{%
%    \end{macrocode}
% Normalerweise werden durch \pkg{scrlayer-scrpage} bei der Umschaltung auf 
% einen mit dem Befehl \cs{newpairofpagestyles}\marg{Seitenstil} definierten 
% Seitenstil, die Seitenstile \pgs{headings} und \pgs{plain} als Aliase für 
% \pgs{\meta{Seitenstil}} und \pgs{plain.\meta{Seitenstil}} festgelegt. 
% Allerdings definiert dieser Befehl zusätzliche Ebenen für Kopf- und Fußzeile, 
% weshalb auf die Verwendung verziichtet wird. Das automatische Umschalten soll 
% dennoch ermöglicht werden.
%    \begin{macrocode}
  \DeclarePageStyleAlias{plain}{plain.tudheadings}%
  \DeclarePageStyleAlias{headings}{tudheadings}%
  \def\sls@currentheadings{tudheadings}%
  \def\sls@currentplain{plain.tudheadings}%
}
% 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} erfolgt 
% dies gleichermaßen für ein etwaiges \DDC-Logo.
%    \begin{macrocode}
\newcommand*\tud@head@logocolor{black}
\newcommand*\tud@foot@logocolor{black}
\newcommand*\tud@ps@onbackground{%
  \ifcase\tud@head@bar\relax%
    \def\tud@head@logocolor{black}%
    \def\tud@foot@logocolor{black}%
  \or%
    \def\tud@head@logocolor{HKS41}%
    \def\tud@foot@logocolor{HKS41}%
  \or%
    \def\tud@head@logocolor{white}%
    \if@tud@footcolor%
      \def\tud@foot@logocolor{white}%
    \else%
      \def\tud@foot@logocolor{HKS41}%
    \fi%
  \fi%
%    \end{macrocode}
% In Abhängigkeit von der eingestzten Hintergrundfarbe der Seite wird die 
% Linienstärke des Querbalkens gesetzt.
%    \begin{macrocode}
  \let\tud@dim@line\tud@dim@thinline%
  \ifstr{\tud@head@logocolor}{white}{\let\tud@dim@line\tud@dim@heavyline}{}%
}
%    \end{macrocode}
% \end{macro}^^A \tud@foot@logocolor
% \end{macro}^^A \tud@head@logocolor
% \end{macro}^^A \tud@ps@onbackground
% \end{macro}^^A \tud@ps@onselect
% \begin{macro}{\ps@tudpage@plain}
% \changes{v2.02}{2014/06/23}{entfernt}%^^A
% \begin{macro}{\ps@tudpage@empty}
% \changes{v2.02}{2014/06/23}{entfernt}%^^A
% Diese Befehle wurden mit der \TUDScript-Version~v2.02 entfernt.
% \end{macro}^^A \ps@tudpage@empty
% \end{macro}^^A \ps@tudpage@plain
% \begin{macro}{\thispagestyle}
% \changes{v2.03}{2015/01/20}{Auswahl eines Aliasseitenstils unterdrückt}%^^A
%    \begin{macrocode}
\patchcmd{\thispagestyle}{\gdef\@specialstyle{#1}}{%
  \xdef\@specialstyle{\GetRealPageStyle{#1}}
}{}{\tud@patch@wrn{thispagestyle}}
%    \end{macrocode}
% \end{macro}^^A \tud@beforeselectanypagestyle
% \begin{macro}{\tud@beforeselectanypagestyle}
% \changes{v2.02}{2014/06/23}{neu}%^^A
% \begin{macro}{\tud@currentgeometry}
% \changes{v2.02}{2014/06/23}{neu}%^^A
% Mit \cs{tud@beforeselectanypagestyle} wird beim Umschalten des Seitenstils
% gegebenfalls der Satzspiegel geändert. Dabei wird der aktivierte Satzspiegel
% in dem Makro \cs{tud@currentgeometry} gesichert, um darauf zu einem späteren
% Zeitpunkt prüfen zu können.
%
% Für den Fall, dass das Dokument nicht ausschließlich mit dem Kopf im \CD
% auf jeder Seite gesetzt wird, muss der komplette vertikale Satzspiegel
% angepasst werden, sonst wäre der obere Rand optisch viel zu groß. Hierfür
% wird das Paket \pkg{geometry} genutzt. Durch \cs{tud@geometry@process} 
% werden zwei~-- für die KOmpatibilitätsvariante drei~-- Layouts erstellt.
% Diese können mit \cs{loadgeometry}\marg{Stil} geladen werden.
%    \begin{macrocode}
\newcommand*\tud@currentgeometry{}
\newcommand*\tud@beforeselectanypagestyle[1]{%
%    \end{macrocode}
% Der \pgs{tudheadings}-Seitenstil wird mit dem Befehl \cs{newpairofpagestyles}
% derart definiert, dass zwischen \pgs{tudheadings} und \pgs{plain.tudheadings}
% auch mit \LaTeX-Standardseitenstilen \pgs{headings} bzw. \pgs{plain} 
% umgeschaltet werden kann. Dies wird hiermit beachtet.
%    \begin{macrocode}
  \ifstr{#1}{\GetRealPageStyle{#1}}{%
    \def\@tempa{#1}%
%    \end{macrocode}
% Vor der \KOMAScript-Version~v3.15 wurden die Seitenstile \pgs{headings} und 
% \pgs{plain} nicht als Alias definiert. Dieses Problem wird hiermit behoben.
%    \begin{macrocode}
    \ifcsdef{scr@v@3.15}{}{%
      \ifstr{\sls@currentheadings}{tudheadings}{%
        \ifstr{#1}{headings}{\def\@tempa{tudheadings}}{}%
        \ifstr{#1}{plain}{\def\@tempa{plain.tudheadings}}{}%
      }{}%
    }%
%    \end{macrocode}
% Für den Fall, das ein \pgs{tudheadings}-Seitenstil geladen werden soll, muss 
% der dazugehörige Satzspiegel ausgewählt werden\dots
%    \begin{macrocode}
    \iftudpagestyle{\@tempa}{%
%    \end{macrocode}
% \dots wobei in der Version~v2.02 zwei unterschiedliche existierten, und 
% abhängig von der Verwendung des \DDC-Logos im Fuß waren.
%    \begin{macrocode}
      \iftudscrverlower{2.03}{%
%    \end{macrocode}
% In diesem Fall werden die Seitenfußeinstellungen mit \cs{tud@ddc@check} in
% \cs{@tempb} geschrieben und abhängig davon der richtige Satzspiegel geladen. 
% Dabei wird zuvor mit dem Wert aus \cs{tud@currentgeometry} geprüft, ob dies 
% überhaupt notwendig ist.
%    \begin{macrocode}
        \tud@ddc@check%
%    \end{macrocode}
% Das \DDC-Logo im Fuß ist nicht aktiviert.
%    \begin{macrocode}
        \ifcase\@tempb\relax%
          \ifstr{\tud@currentgeometry}{tudarea}{}{%
            \loadgeometry{tudarea}%
            \gdef\tud@currentgeometry{tudarea}%
          }%
%    \end{macrocode}
% Das \DDC-Logo im Fuß ist aktiviert.
%    \begin{macrocode}
        \else%
          \ifstr{\tud@currentgeometry}{tudareaddc}{}{%
            \loadgeometry{tudareaddc}%
            \gdef\tud@currentgeometry{tudareaddc}%
          }%
        \fi%
%    \end{macrocode}
% Ab der Version~v2.03 ist nur noch ein Satzspiegel vonnöten.
%    \begin{macrocode}
      }{%
        \ifstr{\tud@currentgeometry}{tudarea}{}{%
          \loadgeometry{tudarea}%
          \gdef\tud@currentgeometry{tudarea}%
        }%
      }%
%    \end{macrocode}
% Die Länge \cs{tud@dim@headdiff} gibt an, wie groß die Differenz zwischen 
% Kopfhöhe zwischen aktuellem und dem speziellen \pgs{tudheadings}-Seitenstil 
% ist. Da diese in diesem Fall identisch sind, wird die Länge zu \cs{z@} 
% gesetzt.
%    \begin{macrocode}
      \setlength\tud@dim@headdiff{\z@}%
%    \end{macrocode}
% Hier ist der Fall, wenn kein \pgs{tudheadings}-Seitenstil geladen werden soll.
% Zusätzlich zum Satzspeigel wird außerdem der Seitenstil \pgs{empty} 
% zurückgesetzt.
%    \begin{macrocode}
    }{%
      \ifstr{\tud@currentgeometry}{typearea}{}{%
        \loadgeometry{typearea}%
        \gdef\tud@currentgeometry{typearea}%
      }%
%    \end{macrocode}
% Die Länge \cs{tud@dim@headdiff} wird auf den berechneten Wert gesetzt. Nur 
% für den Fall, dass die Kopfzeile zum Satzspiegel gerechnet wird und dieser
% nicht durch \pkg{typearea} berechnet wurde, muss diese Länge etwas angepasst 
% werden.
%    \begin{macrocode}
      \setlength\tud@dim@headdiff{\tud@ta@headdiff}%
      \ifcase\tud@geometry\relax\else%
        \if@hincl%
          \addtolength\tud@dim@headdiff{%
            \dimexpr-\tud@ta@headheight-\tud@dim@headsep\relax%
          }%
        \fi%
      \fi%
    }%
%    \end{macrocode}
% Die Länge \cs{tud@dim@headdiff} wird vorsichtshalber global gesetzt.
%    \begin{macrocode}
    \global\tud@dim@headdiff=\tud@dim@headdiff%
  }{}%
}
%    \end{macrocode}
% \end{macro}^^A \tud@currentgeometry
% \end{macro}^^A \tud@beforeselectanypagestyle
% \begin{macro}{\cleardoubleoddpageusingstyle}
% \begin{macro}{\cleardoubleevenpageusingstyle}
% \begin{macro}{\cleardoublepageusingstyle}
% Damit die Satzspiegelumstellungen nicht durchgeführt werden, wenn durch die 
% folgenden \KOMAScript-Befehle Leerseiten erzeugt werden, müssen diese minimal
% angepasst werden.
%    \begin{macrocode}
\patchcmd{\cleardoubleoddpageusingstyle}{\pagestyle}{%
  \let\tud@beforeselectanypagestyle\@gobble\pagestyle%
}{}{\tud@patch@wrn{cleardoubleoddpageusingstyle}}
\patchcmd{\cleardoubleevenpageusingstyle}{\pagestyle}{%
  \let\tud@beforeselectanypagestyle\@gobble\pagestyle%
}{}{\tud@patch@wrn{cleardoubleevenpageusingstyle}}
\patchcmd{\cleardoublepageusingstyle}{\pagestyle}{%
  \let\tud@beforeselectanypagestyle\@gobble\pagestyle%
}{}{\tud@patch@wrn{cleardoublepageusingstyle}}
%    \end{macrocode}
% \end{macro}^^A \cleardoublepageusingstyle
% \end{macro}^^A \cleardoubleevenpageusingstyle
% \end{macro}^^A \cleardoubleoddpageusingstyle
% \begin{macro}{\tud@ddc@enlargepage}
% \changes{v2.02}{2014/06/23}{neu}%^^A
% Der Befehl wird nur für den Kompatibilitätsmodus zur Version~v2.02 benötigt 
% und für die Titelkopf- und Kapitelseiten verwendet. Er verkleinert die
% entsprechenden Seiten, wenn für diese mit dem Befehl \cs{thispagestyle} einer
% der \pgs{tudheadings}"=Seitenstile gewählt wird \emph{und} das \DDC-Logo im
% Fuß gesetzt werden soll. Der entsprechende Seitenstil kann im optionalen
% Argument angegeben werden, wenn der Befehl bedingt ausgeführt werden soll.
%    \begin{macrocode}
\iftudscrverlower{2.03}{%
  \newcommand*\tud@ddc@enlargepage[1][]{%
    \iftudpagestyle{#1}{%
      \ifstr{\tud@currentgeometry}{tudareaddc}{}{%
        \tud@ddc@check%
        \ifcase\@tempb\relax\else%
          \enlargethispage{-\tud@dim@ddcdiff}%
        \fi%
      }%
    }{}%
  }%
}{}
%    \end{macrocode}
% \end{macro}^^A \tud@ddc@enlargepage
% \begin{macro}{\tud@head@text}
% \begin{macro}{\tud@head@text@first}
% \begin{macro}{\tud@head@text@second}
% \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{}
\newcommand*\tud@head@text@first{}
\newcommand*\tud@head@text@second{}
\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@second
% \end{macro}^^A \tud@head@text@first
% \end{macro}^^A \tud@head@text
% \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 gewähltem Parameter \cs{tud@head@bar}
% 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]{%
  \color{\tud@head@logocolor}%
  \rule[\ht\strutbox]{#1}{\tud@dim@line}%
}
%    \end{macrocode}
% \end{macro}^^A \tud@head@rule
% \begin{macro}{\tud@head@text@add}
% Dieser Befehl dient zum Füllen eines Puffer-Strings. Es werden sequentiell
% alle potentiellen Felder hinzugefügt. Sollte das zuletzt hinzugefügte Feld
% dazu führen, dass der Text der Kopfzeile über den Seitenrand hinausragt, so
% wird eine zweite Zeile begonnen. In diesem Fall wird der temporäre Schalter
% \cs{@tempswa} aktiviert. Auch das Trennzeichen zwischen einzelnen Feldern
% muss gepuffert werden, da dieses nur gesetzt wird, wenn ein weiteres Feld
% nachfolgt.
%    \begin{macrocode}
\newcommand*\tud@head@text@add[3][, ]{%
  \edef\tud@head@text{#3}%
  \ifx\tud@head@text\@empty%
    \def\tud@head@text@delimiter{}%
  \else%
    \edef\tud@head@text@delimiter{\tud@head@text@buffer}%
    \def\tud@head@text@buffer{#1}%
  \fi%
  \if@tempswa\else%
    \def\@tempa{%
      \tud@head@text@first%
      \tud@head@text@delimiter%
      #2%
      \tud@head@text%
    }%
    \settowidth\@tempdima{\@tempa}%
    \ifdim\@tempdima>\textwidth\relax%
      \@tempswatrue%
      \def\tud@head@text@delimiter{}%
    \else%
      \edef\tud@head@text@first{\@tempa}%
    \fi%
  \fi%
  \if@tempswa%
    \edef\tud@head@text@second{%
      \tud@head@text@second%
      \tud@head@text@delimiter%
      #2%
      \tud@head@text%
    }%
  \fi%
}
%    \end{macrocode}
% \end{macro}^^A \tud@head@text@add
% \begin{macro}{\tud@head@text@box}
% \changes{v2.02}{2014/06/23}{neu}%^^A
% \changes{v2.03}{2015/01/09}{Bugfix für zweite Zeile. Diese muss in jedem Fall 
%   gesetzt werden, auch wenn sie leer ist.}%^^A
% Dieser Befehl ist der Inhalt der Ebene für den Text der Kopfzeile.
% \ToDo{Zeilenabstand bei unterschiedlichen Papiergrößen prüfen}[v2.04]
%    \begin{macrocode}
\newcommand*\tud@head@text@box{%
%    \end{macrocode}
% Sollte keine Fakultät angegeben sein, wird eine Warnung ausgegeben.
%    \begin{macrocode}
  \ifx\@faculty\@empty%
    \ClassWarningNoLine{\tudcls@name}{No `\string\faculty' given}%
    \faculty{}%
  \fi%
%    \end{macrocode}
% Abhängig vom Wert \cs{tud@cdfont}~-- gesetzt entweder von der globalen
% Klassenoption oder vom lokalen Parameter \opt{cdfont}~-- werden entweder die
% Schriften des \CDs oder aber die serifenlose Standardschrift für die Kopfzeile
% verwendet.
%    \begin{macrocode}
  \tud@head@font@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 zweite
% Zeile begonnen. Ob diese benötigt wird, ist abhängig vom Inhalt und von der
% sich daraus ergebenden Breite der Textzeile. Das Erzeugen der ersten und
% gegebenenfalls der zweiten Textzeile im Kopf erfolgt durch das Makro
% \cs{tud@head@text@add}\oarg{Trennzeichen}\marg{Schrift}\marg{Feld}. Der dafür
% verwendete Schalter \cs{@tempswa} und die benötigten Hilfsmakros werden
% vor der Verwendung initialisiert.
%    \begin{macrocode}
  \@tempswafalse%
  \def\tud@head@text@first{}%
  \def\tud@head@text@second{}%
  \def\tud@head@text@buffer{}%
  \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}
% Sollte die zweite Textzeile zu lang sein, was bei kleinen Papierformaten
% vorkommen kann, dann wird eine Warnung ausgegeben.
%    \begin{macrocode}
  \settowidth\@tempdima{\tud@head@text@second}%
  \ifdim\@tempdima>\textwidth\relax%
    \tud@head@text@wrn{\the\dimexpr\@tempdima-\textwidth\relax}%
    \hfuzz=\@tempdima%
  \fi%
%    \end{macrocode}
% Es erfolgt die Ausgabe der Textzeile(n) mit Fakultät etc. über
% \cs{tud@head@text@write} sowie einer möglichen Extrazeile.
%    \begin{macrocode}
  \vbox{%
    \linespread{0}\selectfont%
%    \end{macrocode}
% Die Farbe des Textes der ersten Zeile entspricht immer der des Kopfes\dots
%    \begin{macrocode}
    \color{\tud@head@logocolor}%
    \tud@head@text@write{\tud@head@text@first}%
%    \end{macrocode}
% Die zweite und dritte Zeile sind bei zweifarbigen Kopf normalerweise blau, 
% nur für einen dunklen Seitenhintergrund weiß.
%    \begin{macrocode}
    \ifnum\tud@head@bar>\@ne%
      \ifdefvoid{\tud@pagecolor}{\color{HKS41}}{%
        \ifstr{\tud@pagecolor}{HKS41}{\color{white}}{\color{HKS41}}%
      }%
    \fi%
    \ifx\tud@head@text@second\@empty%
      \newline\tud@head@font@light\tud@head@text@write{\@extraheadline}%
    \else%
      \newline\tud@head@text@write{\tud@head@text@second}%
      \ifx\@extraheadline\@empty\else%
        \vspace{-\tud@dim@line}\newline\tud@head@font@light\@extraheadline%
      \fi%
    \fi%
  }%
}
%    \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}{optische Zentrierung des Zeilentextes}%^^A
% Befehl zur Ausgabe der ersten und evtl. zweiten Textzeile im TUD-Kopf
%    \begin{macrocode}
\newcommand*\tud@head@text@write[1]{%
  \raisebox{\dimexpr(\tud@dim@barheight+2\tud@dim@line-\totalheight)/2\relax}[%
    \dimexpr\tud@dim@barheight-\depth\relax%
  ][\depth]{#1\vphantom{gjpqy\"A\"O\"U}}%
}
%    \end{macrocode}
% \end{macro}^^A \tud@head@text@write
% \begin{macro}{\tud@head@text@wrn}
% Warnung für den Fall, dass die Kopfinformationen breiter werden, als die
% Textbreite, was bei besonders kleinen Papierformaten geschehen kann.
%    \begin{macrocode}
\newcommand\tud@head@text@wrn[1]{%
  \ClassWarning{\tudcls@name}{%
    The given entries for the headline\MessageBreak%
    (faculty, institute etc.) are #1\MessageBreak%
    too wide for the textwidth%
  }%
  \global\let\tud@head@text@wrn\@gobble%
}
%    \end{macrocode}
% \end{macro}^^A \tud@head@text@wrn
% \begin{macro}{\tud@mainlogo@wrn}
% \changes{v2.02}{2014/06/23}{Umbenennen von \cs{tud@head@logo@wrn}}%^^A
% Warnung für den Fall, dass die Kopfinformationen breiter werden, als die
% Textbreite, was bei besonders kleinen Papierformaten geschehen kann.
%    \begin{macrocode}
\newcommand*\tud@mainlogo@wrn[1]{%
  \ClassWarning{\tudcls@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 #1)\MessageBreak%
    Maybe you should decrease the current value\MessageBreak%
    of DIV (`DIV=\the\ta@div')%
  }%
  \global\let\tud@mainlogo@wrn\@gobble%
}
%    \end{macrocode}
% \end{macro}^^A \tud@mainlogo@wrn
%
% \iffalse
%</class&body>
%<*class&option>
% \fi
%
% \subsection{Befehle, Optionen und Umsetzung der Seitenstilvarianten}
%
% \begin{option}{ddc}
% \changes{v2.02}{2014/06/23}{automatische Logowahl}%^^A
% \begin{option}{ddchead}
% \changes{v2.02}{2014/06/23}{\DDC-Logo entweder in Kopf oder Fuß}%^^A
% \begin{option}{ddcfoot}
% \changes{v2.02}{2014/06/23}{\DDC-Logo 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
% Dieser Befehl enthält die gültigen Werte für die Optionen \opt{ddc}, 
% \opt{ddchead} sowie \opt{ddcfoot}.
%    \begin{macrocode}
\newcommand*\tud@ddc@switch{}
\edef\tud@ddc@switch{%
  \TUD@numkey@bool,%
  {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@save}
% \changes{v2.02}{2014/07/08}{neu}%^^A
% \begin{macro}{\if@tud@ddc@save}
% \changes{v2.02}{2014/07/08}{neu}%^^A
% Diese beiden Befehle werden von den Optionen \opt{ddchead} und \opt{ddcfoot} 
% benötigt, um nach dem Setzen der Option den vorherigen Wert vor dem möglichen 
% Beenden einer Seite mit \cs{clearpage} wiederherstellen zu können.
%    \begin{macrocode}
\newcommand*\tud@ddc@save{}
\newif\if@tud@ddc@save
\@tud@ddc@savetrue
%    \end{macrocode}
% \end{macro}^^A \if@tud@ddc@save
% \end{macro}^^A \tud@ddc@save
% \begin{macro}{\tud@ddc}
% \changes{v2.02}{2014/06/23}{neu}%^^A
% \begin{macro}{\if@tud@ddc@autoset}
% \changes{v2.02}{2014/06/23}{neu}%^^A
% Die Option \opt{ddc}.
%    \begin{macrocode}
\newcommand*\tud@ddc{0}
\newif\if@tud@ddc@autoset
\TUD@key{ddc}[true]{%
%    \end{macrocode}
% Sollte diese innerhalb des Dokumentes aufgerufen werden, so wird für den Fall,
% dass ein \pgs{tudheadings}-Seitenstil gewählt ist, ein \cs{clearpage} 
% ausgeführt, da eventuell eine Änderung des Layers sowie des Satzspeigels 
% notwendig ist. Anschließend wird der Schalter \cs{if@tud@ddc@autoset}
% entsprechend des angegebenen Wertes gesetzt.
%    \begin{macrocode}
  \TUD@set@numkey{ddc}{tud@ddc}{\tud@ddc@switch}{#1}%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
    \if@atdocument\iftudpagestyle{\currentpagestyle}{\clearpage}{}\fi%
    \ifcase\tud@ddc\relax%
      \@tud@ddc@autosetfalse%
    \else%
      \@tud@ddc@autosettrue%
    \fi%
%    \end{macrocode}
% Abschließend wird der aktuelle Seitenstil erneut aufgerufen, um bei einem
% geänderten Fuß den notwendigen Satzspiegel zu laden. Dies ist jedoch nur 
% notwendig, wenn die Option innerhalb des Dokumentes verwendet wurde. Siehe
% \cs{tud@beforeselectanypagestyle}.
%    \begin{macrocode}
    \if@atdocument\expandafter\pagestyle\expandafter{\currentpagestyle}\fi%
  \fi%
}
%    \end{macrocode}
% \end{macro}^^A \if@tud@ddc@autoset
% \end{macro}^^A \tud@ddc
% \begin{macro}{\tud@ddc@head}
% \changes{v2.03}{2015/01/22}{Bugfix Seitenstilauswahl bei Deaktivierung}%^^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{0}
\TUD@key{ddchead}[true]{%
%    \end{macrocode}
% Der aktuelle Zustand des Schlüssels wird gesichert. Anschließend wird der 
% Schlüssel mit dem neuen Wert gesetzt.
%    \begin{macrocode}
  \if@tud@ddc@save\let\tud@ddc@save\tud@ddc@head\fi%
  \TUD@set@numkey{ddchead}{tud@ddc@head}{\tud@ddc@switch}{#1}%
%    \end{macrocode}
% Sollte ein gültiger Wert für den Schlüssel übergeben worden sein, wird dieser
% lokal auf den alten Wert gesetzt, um ggf. eine neue Seite zu erzeugen.
%    \begin{macrocode}
  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
    \if@tud@ddc@save%
      \begingroup%
        \let\tud@ddc@head\tud@ddc@save%
        \if@atdocument\iftudpagestyle{\currentpagestyle}{\clearpage}{}\fi%
      \endgroup%
    \fi%
%    \end{macrocode}
% Danach werden die sich ausschließenden Optionen deaktiviert, ohne eine 
% Sicherung der Werte vorzunehmen.
%    \begin{macrocode}
    \ifcase\tud@ddc@head\relax%
      \if@atdocument\expandafter\pagestyle\expandafter{\currentpagestyle}\fi%
    \else%
      \@tud@ddc@savefalse%
      \TUDoptions{ddc=false}%
      \TUDoptions{ddcfoot=false}%
      \@tud@ddc@savetrue%
    \fi%
  \fi%
}
%    \end{macrocode}
% \end{macro}^^A \tud@ddc@head
% \begin{macro}{\tud@ddc@foot}
% \changes{v2.03}{2015/01/22}{Bugfix Seitenstilauswahl bei Deaktivierung}%^^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{0}
\TUD@key{ddcfoot}[true]{%
  \if@tud@ddc@save\let\tud@ddc@save\tud@ddc@foot\fi%
  \TUD@set@numkey{ddcfoot}{tud@ddc@foot}{\tud@ddc@switch}{#1}%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
    \if@tud@ddc@save%
      \begingroup%
        \let\tud@ddc@foot\tud@ddc@save%
        \if@atdocument\iftudpagestyle{\currentpagestyle}{\clearpage}{}\fi%
      \endgroup%
    \fi%
    \ifcase\tud@ddc@foot\relax%
      \if@atdocument\expandafter\pagestyle\expandafter{\currentpagestyle}\fi%
    \else%
      \@tud@ddc@savefalse%
      \TUDoptions{ddc=false}%
      \TUDoptions{ddchead=false}%
      \@tud@ddc@savetrue%
    \fi%
  \fi%
}
%    \end{macrocode}
% \end{macro}^^A \tud@ddc@foot
% \begin{macro}{\tud@ddc@check}
% \changes{v2.02}{2014/06/23}{neu}%^^A
% Dieses Hilfsmakro wird aufgerufen, wenn geprüft werden soll, welche 
% Einstellungen für Kopf und Fuß des Seitenstiles \pgs{tudheadings} zum Tragen 
% kommen sollen. Dabei wird insbesondere geprüft, ob die automatischen Auswahl 
% des \DDC-Logos aktiviert ist. Die jeweils gültige Auswahl für Kopf bzw. Fuß 
% wird in \cs{@tempa} bzw. \cs{@tempb} geschrieben und kann anschließend 
% ausgewertet werden.
%    \begin{macrocode}
\newcommand*\tud@ddc@check{%
  \let\@tempa\tud@ddc@head%
  \let\@tempb\tud@ddc@foot%
  \if@tud@ddc@autoset%
    \ifx\tud@@headlogo\@empty%
      \let\@tempa\tud@ddc%
      \let\@tempb\z@%
    \else%
      \let\@tempa\z@%
      \let\@tempb\tud@ddc%
    \fi%
  \fi%
  \iftudscrverlower{2.03}{%
    \ifcase\@tempb\relax\ifx\tud@@footlogo\@empty\else\let\@tempb\m@ne\fi\fi%
  }{}%
}
%    \end{macrocode}
% \end{macro}^^A \tud@ddc@check
% \end{option}^^A ddcfoot
% \end{option}^^A ddchead
% \end{option}^^A ddc
% \begin{macro}{\iftudpagestyle}
% \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{iftudpagestyle} wird geprüft, 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.
%    \begin{macrocode}
\newcommand*\iftudpagestyle[3]{%
  \xifinlist{\GetRealPageStyle{#1}}{\tud@ps@list}{#2}{#3}%
}
\newcommand*\tud@ps@list{}
\forcsvlist{\listadd\tud@ps@list}{%
  tudheadings,plain.tudheadings,empty.tudheadings%
}
%    \end{macrocode}
% \end{macro}^^A \tud@ps@list
% \end{macro}^^A \iftudpagestyle
% \begin{option}{extrabottommargin}
% \begin{length}{\tud@dim@extrabottommargin}
% Diese Option dient dazu, die Höhe des Fußes anzupassen. Dies ist jedoch nur 
% möglich, wenn der Satzspiegel des \CDs verwendet wird. Kommt \pkg{typearea} 
% zum Einsatz, ist die Option wirkungslos.
%    \begin{macrocode}
\newlength\tud@dim@extrabottommargin
\TUD@key{extrabottommargin}{%
  \TUD@set@lengthkey{extrabottommargin}{\tud@dim@extrabottommargin}{#1}%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
    \if@atdocument\tud@geometry@process\fi%
  \fi%
}
%    \end{macrocode}
% \end{length}^^A \tud@dim@extrabottommargin
% \end{option}^^A extrabottommargin
%
% \iffalse
%</class&option>
%<*class&body>
% \fi
%
% \begin{macro}{\tud@mainlogo}
% \changes{v2.02}{2014/08/04}{Dateinamen der TUD-Logos geändert}%^^A
% \begin{macro}{\tud@@mainlogo}
% Mit diesem Makro wird das Logo der TU~Dresden eingebunden. Bei der Verwendung
% von pdf\LaTeX{} kann wird Farbe des Logos an die Kopffarbe angepasst. Wird
% der klassische Weg über dvi gewählt, so muss abhängig von der gewählten
% Kopffarbe das entsprechend gefärbte Logo eingebunden werden.
%
%    \begin{macrocode}
\newcommand*\tud@@mainlogo{}
\newcommand*\tud@mainlogo{%
%    \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 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}
  \setlength\@tempdima{%
    \dimexpr\oddsidemargin+1in+\tud@dim@logox-\tud@dim@widemargin\relax%
  }%
  \ifdim\@tempdima<\ta@bcor\relax\tud@mainlogo@wrn{\the\@tempdima}\fi%
%    \end{macrocode}
% Es wird das Standardlogo festgelegt und dieses ggf. für eine andere Kopffarbe 
% geändert.
%    \begin{macrocode}
  \def\tud@@mainlogo{TUD-black}%
  \ifstr{\tud@head@logocolor}{HKS41}{\def\tud@@mainlogo{TUD-blue}}{}%
  \ifstr{\tud@head@logocolor}{cddarkblue}{\def\tud@@mainlogo{TUD-blue}}{}%
  \ifstr{\tud@head@logocolor}{white}{\def\tud@@mainlogo{TUD-white}}{}%
  \includegraphics[keepaspectratio,width=\tud@dim@logowidth]{\tud@@mainlogo}%
}
%    \end{macrocode}
% \end{macro}^^A \tud@@mainlogo
% \end{macro}^^A \tud@mainlogo
% \begin{macro}{\headlogo}
% \changes{v2.02}{2014/06/23}{Anpassung an automatische Wahl des \DDC-Logos}%^^A
% \begin{macro}{\tud@headlogo}
% \changes{v2.02}{2014/06/23}{neu, \cs{tud@head@logo} umbenannt}%^^A
% \changes{v2.02}{2014/06/23}{von \cs{tud@ddc@sethead} wurde die Auswahl des 
%   \DDC-Logos übernommen und erweitert}%^^A
% \begin{macro}{\tud@@headlogo}
% \changes{v2.02}{2014/06/23}{neu, \cs{tud@head@@logo} umbenannt}%^^A
% \begin{macro}{\tud@@@headlogo}
% \changes{v2.02}{2014/06/23}{Umbenennen des Befehls \cs{tud@head@@@logo}}%^^A
% \begin{macro}{\tud@headlogo@wrn}
% \changes{v2.02}{2014/06/23}{neu}%^^A
% Diese Befehle dienen zum Einbinden eines Zweitlogos im Kopf bündig zum
% rechten Seitenrand. Bei der Angabe des Logos mit
% \cs{headlogo}\oarg{Optionsliste}\marg{Dateiname} wird der Dateiname in
% \cs{tud@@headlogo} und das optionale Argument in \cs{tud@@@headlogo}
% gespeichert, damit diese später über \cs{tud@headlogo} an den Befehl
% \cs{includegraphics} weitergereicht werden können.
%    \begin{macrocode}
\newcommand*\headlogo[2][]{%
  \if@atdocument\iftudpagestyle{\currentpagestyle}{\clearpage}{}\fi%
  \def\tud@@headlogo{#2}%
  \def\tud@@@headlogo{#1}%
  \if@atdocument\expandafter\pagestyle\expandafter{\currentpagestyle}\fi%
}
\newcommand*\tud@@headlogo{}
\newcommand*\tud@@@headlogo{}
\newcommand*\tud@headlogo{%
  \tud@ddc@check%
  \ifx\tud@@headlogo\@empty\else%
    \ifnum\@tempa>\z@\relax\tud@headlogo@wrn\fi%
  \fi%
  \ifcase\@tempa\relax\or%
    \def\tud@@headlogo{DDC-24}%
    \ifstr{\tud@head@logocolor}{HKS41}{\def\tud@@headlogo{DDC-27}}{}%
    \ifstr{\tud@head@logocolor}{cddarkblue}{\def\tud@@headlogo{DDC-27}}{}%
    \ifstr{\tud@head@logocolor}{white}{\def\tud@@headlogo{DDC-30}}{}%
  \or%
    \def\tud@@headlogo{DDC-03}%
  \or%
    \def\tud@@headlogo{DDC-09}%
  \or%
    \def\tud@@headlogo{DDC-21}%
  \or%
    \def\tud@@headlogo{DDC-24}%
  \or%
    \def\tud@@headlogo{DDC-27}%
  \or%
    \def\tud@@headlogo{DDC-30}%
  \fi%
  \ifx\tud@@headlogo\@empty\else%
    \settoheight\@tempdima{\tud@mainlogo}%
    \protected@epreto\tud@@@headlogo{%
      keepaspectratio,totalheight=\the\@tempdima,%
    }%
    \expandafter\includegraphics\expandafter[\tud@@@headlogo]{\tud@@headlogo}%
  \fi%
}
\newcommand*\tud@headlogo@wrn{%
  \ClassWarning{\tudcls@name}{%
    The secondary logo given with `\string\headlogo' is\MessageBreak%
    overwritten with DDC logo. Maybe you should use\MessageBreak%
    `ddcfoot' or better `ddc' instead of `ddchead'%
  }%
  \global\let\tud@headlogo@wrn\relax%
}
%    \end{macrocode}
% \end{macro}^^A \tud@headlogo@wrn
% \end{macro}^^A \tud@@@headlogo
% \end{macro}^^A \tud@@headlogo
% \end{macro}^^A \tud@headlogo
% \end{macro}^^A \headlogo
% \begin{macro}{\footlogo}
% \changes{v2.03}{2015/01/27}{neu}%^^A
% \begin{macro}{\footlogosep}
% \changes{v2.03}{2015/01/27}{neu}%^^A
% \begin{length}{\footlogoheight}
% \changes{v2.03}{2015/01/27}{neu}%^^A
% \begin{macro}{\tud@footlogo}
% \changes{v2.03}{2015/01/27}{neu}%^^A
% \changes{v2.03}{2015/02/02}{optionale Parameter datei-individuell nutzbar}%^^A
% \begin{macro}{\tud@footlogo@parser}
% \changes{v2.03}{2015/02/02}{neu}%^^A
% \begin{macro}{\tud@@footlogo}
% \changes{v2.03}{2015/01/27}{neu}%^^A
% \begin{macro}{\tud@@@footlogo}
% \changes{v2.03}{2015/01/27}{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}
\newlength\footlogoheight
\newcommand*\footlogosep{\hfill}
\newcommand*\footlogo[2][]{%
  \if@atdocument\iftudpagestyle{\currentpagestyle}{\clearpage}{}\fi%
  \def\tud@@footlogo{#2}%
  \def\tud@@@footlogo{#1}%
  \if@atdocument\expandafter\pagestyle\expandafter{\currentpagestyle}\fi%
}
\newcommand*\tud@@footlogo{}
\newcommand*\tud@@@footlogo{}
%    \end{macrocode}
% Der Befehl \cs{tud@footlogo} wird genutzt, um die Logos für den Fuß innerhalb 
% der Ebene \val{tudheadings.foot.logo} auszugeben.
%    \begin{macrocode}
\DeclareListParser{\tud@footlogo@parser}{:}%
\newcommand*\tud@footlogo[1]{%
  \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.
%    \begin{macrocode}
    \def\@tempa{}%
    \def\@tempb{}%
    \@tempswatrue%
    \def\do##1{%
      \if@tempswa%
        \def\@tempa{##1}%
        \@tempswafalse%
      \else%
        \expandafter\def\expandafter\@tempb\expandafter{\@tempb,##1}%
      \fi%
    }%
    \tud@footlogo@parser{#1}%
%    \end{macrocode}
% Wurden tatsächlich inidviduelle Parameter übergeben, so werden diese als 
% letztes ausgeführt, um vorige Einstellungen überschreiben zu können.
%    \begin{macrocode}
    \protected@eappto\tud@@@footlogo{\@tempb}%
%    \end{macrocode}
% In jedem Fall werden die Grundeinstellungen als erstes ausgeführt.
%    \begin{macrocode}
    \protected@epreto\tud@@@footlogo{%
      keepaspectratio,totalheight=\the\footlogoheight,%
    }%
    \protected@edef\@tempc{\noexpand\includegraphics[\tud@@@footlogo]{\@tempa}}%
    \vbox to \dimexpr\layerheight-\dp\strutbox\relax{%
      \vfil\hbox{\@tempc}\vfil\vfil%
    }%
  \endgroup%
}
%    \end{macrocode}
% \end{macro}^^A \tud@@@footlogo
% \end{macro}^^A \tud@@footlogo
% \end{macro}^^A \tud@footlogo@parser
% \end{macro}^^A \tud@footlogo
% \end{length}^^A \footlogoheight
% \end{macro}^^A \footlogosep
% \end{macro}^^A \footlogo
% \begin{macro}{\tud@ddclogo}
% \changes{v2.02}{2014/06/23}{neu}%^^A
% \begin{macro}{\tud@@ddclogo}
% \changes{v2.02}{2014/06/23}{neu, \cs{tud@foot@logo} umbenannt}%^^A
% \changes{v2.03}{2015/01/13}{Größe des Logos kompatibilitätsabhängig}%^^A
% Diese Befehle dienen zum Einbinden des \DDC-Logos im Fuß der Seiten im Stil 
% \pgs{tudheadings}.
%    \begin{macrocode}
\newcommand*\tud@@ddclogo{}
\newcommand*\tud@ddclogo{%
  \tud@ddc@check%
  \ifcase\@tempb\relax\or%
    \def\tud@@ddclogo{DDC-22}%
    \ifstr{\tud@foot@logocolor}{HKS41}{\def\tud@@ddclogo{DDC-25}}{}%
    \ifstr{\tud@foot@logocolor}{cddarkblue}{\def\tud@@ddclogo{DDC-25}}{}%
    \ifstr{\tud@foot@logocolor}{white}{\def\tud@@ddclogo{DDC-28}}{}%
  \or%
    \def\tud@@ddclogo{DDC-01}%
  \or%
    \def\tud@@ddclogo{DDC-07}%
  \or%
    \def\tud@@ddclogo{DDC-19}%
  \or%
    \def\tud@@ddclogo{DDC-22}%
  \or%
    \def\tud@@ddclogo{DDC-25}%
  \or%
    \def\tud@@ddclogo{DDC-28}%
  \fi%
  \ifx\tud@@ddclogo\@empty\else%
    \let\tud@@@footlogo\relax%
    \hfill\tud@footlogo{\tud@@ddclogo}%
  \fi%
}
%    \end{macrocode}
% \end{macro}^^A \tud@@ddclogo
% \end{macro}^^A \tud@ddclogo
% \begin{macro}{\tud@ddc@sethead}
% \changes{v2.02}{2014/06/23}{entfernt}%^^A
% \begin{macro}{\tud@ddc@setfoot}
% \changes{v2.02}{2014/06/23}{entfernt}%^^A
% Diese Befehle wurden mit der \TUDScript-Version~v2.02 entfernt.
% \end{macro}^^A \tud@ddc@setfoot
% \end{macro}^^A \tud@ddc@sethead
%
% \iffalse
%</class&body>
%<*class&option>
% \fi
%
% \begin{option}{cdhead}
% \changes{v2.03}{2015/01/29}{neu}%^^A
% \begin{macro}{\tud@head@font}
% \changes{v2.03}{2015/02/04}{neu}%^^A
% \begin{macro}{\if@tud@head@font@locked}
% \changes{v2.03}{2015/02/04}{neu}%^^A
% \begin{macro}{\tud@head@bar}
% \changes{v2.03}{2015/02/04}{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
% 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}
\cs@lock{tud@head@font}{0}
\newcommand*\tud@head@bar{0}
\bool@lock{@tud@head@widebar}
\TUD@key{cdhead}[true]{%
  \TUD@set@numkey{cdhead}{@tempa}{%
    \TUD@numkey@bool,%
    {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},%
    {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},%
    {bicolor}{5},{bicolour}{5},{twocolor}{5},{twocolour}{5},%
    {bichrome}{5},{bichromatic}{5},{dichrome}{5},{dichromatic}{5},%
    {color}{5},{colour}{5},%
    {full}{5},{colorfull}{5},{fullcolor}{5},{colourfull}{5},{fullcolour}{5},%
    {textwidth}{6},{slim}{6},{slimhead}{6},{nowide}{6},{nowidehead}{6},%
    {paperwidth}{7},{wide}{7},{widehead}{7}%
  }{#1}%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
    \ifcase\@tempa\relax%
      \cs@set@lock{tud@head@font}{0}%
    \or%
      \cs@set@lock{tud@head@font}{1}%
    \or%
      \cs@set@lock{tud@head@font}{2}%
    \or%
      \def\tud@head@bar{0}%
    \or%
      \def\tud@head@bar{1}%
    \or%
      \def\tud@head@bar{2}%
    \or%
      \bool@set@lock{@tud@head@widebar}{false}%
    \or%
      \bool@set@lock{@tud@head@widebar}{true}%
    \fi%
  \fi%
}
%    \end{macrocode}
% \end{macro}^^A \if@tud@head@widebar@locked
% \end{macro}^^A \if@tud@head@widebar
% \end{macro}^^A \tud@head@bar
% \end{macro}^^A \if@tud@head@font@locked
% \end{macro}^^A \tud@head@font
% \end{option}^^A cdhead
% \begin{option}{cdfoot}
% \changes{v2.03}{2015/02/02}{Option \opt{extrabottommargin} bei Längenangabe 
%   indirekt nutzbar}%^^A
% \begin{macro}{\if@tud@footcolor}
% \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.
%    \begin{macrocode}
\newif\if@tud@footcolor
\TUD@key{cdfoot}[true]{%
  \TUD@set@numkey{cdfoot}{@tempa}{%
    \TUD@numkey@bool,%
    {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%
%    \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{scrlayer-scrpage}{%
        \tud@ps@restore{scrheadings}%
        \tud@ps@restore{plain.scrheadings}%
        \tud@font@koma@unset{pageheadfoot}%
      }%
%    \end{macrocode}
% Die ursprünglichen Kopf- und Fußzeilen werden mit \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%
      \TUD@AfterPackage{scrlayer-scrpage}{%
        \tud@ps@store{scrheadings}%
        \tud@ps@store{plain.scrheadings}%
        \tud@font@koma@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%
        }%
      }%
%    \end{macrocode}
% Hier kann die Hintergrundfarbe des Fußes aktiviert bzw. deaktiviert werden.
%    \begin{macrocode}
    \or%
      \@tud@footcolorfalse%
    \or%
      \@tud@footcolortrue%
    \fi%
%    \end{macrocode}
% Außerdem kann mit der Option \opt{extrabottommargin} gesetzt werden.
%    \begin{macrocode}
  \else%
    \TUDoptions{extrabottommargin=#1}%
  \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]{%
  \ifcsdef{@@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]{%
  \ifcsdef{@@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@footcolor
% \end{option}^^A cdfoot
% \begin{macro}{\tud@ps@headings}
% \changes{v2.02}{2014/06/23}{entfernt}%^^A
% \begin{macro}{\tud@ps@myheadings}
% \changes{v2.02}{2014/06/23}{entfernt}%^^A
% \begin{macro}{\tud@ps@plain}
% \changes{v2.02}{2014/06/23}{entfernt}%^^A
% Diese Befehle wurden bei der Umstellung auf das Paket~\pkg{scrlayer-scrpage}
% mit der \TUDScript-Version~v2.02 allesamt entfernt. Die Funktionalität wird
% seitdem durch die \pgs{tudheadings}-Seitenstile bereitgestellt.
% \end{macro}^^A \tud@ps@plain
% \end{macro}^^A \tud@ps@myheadings
% \end{macro}^^A \tud@ps@headings
% \begin{option}{cdgeometry}
% \begin{macro}{\tud@geometry}
% \begin{macro}{\if@tud@geometry@locked}
% Für das \CD sind standardmäßig feste Seitenränder vorgegeben. Diese sind
% jedoch leider nur aus gestalterischen Motiven und ohne die Beachtung
% typographischer Belange gewählt und festgelegt worden. Beispielweise ist ein
% doppelseitiger Satz einer Abschlussarbeit im \CD nur mit einem grauenhaften
% Satzspiegel möglich. Um dem Anwender einen gewissen Spielraum zu geben, wird
% alternativ zum asymmetrischen (\opt{geomery=on}) ein symmetrischer
% Satzspiegel bereitgestellt (\opt{geomery=normal}), welcher bei einseitigem
% Satz zentriert ist und bei zweiseitigem Satz den inneren Rand kleiner setzt
% als den äußeren. Des Weiteren kann die Satzspiegelberechnung auch direkt
% durch \pkg{typearea} aus dem \KOMAScript"=Paket erfolgen
% (\opt{geomery=no}). Mit \cs{tud@geometry@process} werden alle getroffenen
% Satzspiegeloptionen umgesetzt und nachfolgend definiert.
%    \begin{macrocode}
\newcommand*\tud@geometry{0}
\TUD@key@lock{cdgeometry}[true]{%
  \TUD@set@numkey@lock{cdgeometry}{tud@geometry}{%
    \TUD@numkey@bool,%
    {typearea}{0},%
    {tud}{1},{asymmetric}{1},{cd}{1},%
    {symmetric}{2},{centred}{2},{centered}{2},%
    {twoside}{3},{balanced}{3}%
  }{#1}%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
    \if@atdocument\recalctypearea\fi%
  \fi%
}
%    \end{macrocode}
% \end{macro}^^A \if@tud@geometry@locked
% \end{macro}^^A \tud@geometry
% \end{option}^^A cdgeometry
%
% \iffalse
%</class&option>
%<*class&body>
% \fi
%
% \begin{length}{\tud@ta@textheight}
% \begin{length}{\tud@ta@topmargin}
% \begin{length}{\tud@ta@headheight}
% \begin{length}{\tud@ta@headsep}
% \begin{length}{\tud@ta@footheight}
% \changes{v2.03}{2015/01/09}{neu, für entsprechende \pkg{typearea}-Option}%^^A
% \begin{length}{\tud@ta@footskip}
% Diese Längen werden benötigt, um einen mit \pkg{typearea} berechneten
% Satzspiegel an \pkg{geometry} weiterzureichen und die unterschiedlichen, vom
% Satzspiegel abhängigen Seitenlayouts zu erstelen.
%    \begin{macrocode}
\newlength\tud@ta@textheight
\newlength\tud@ta@topmargin
\newlength\tud@ta@headheight
\newlength\tud@ta@headsep
\newlength\tud@ta@footheight
\newlength\tud@ta@footskip
%    \end{macrocode}
% \end{length}^^A \tud@ta@footskip
% \end{length}^^A \tud@ta@footheight
% \end{length}^^A \tud@ta@headsep
% \end{length}^^A \tud@ta@headheight
% \end{length}^^A \tud@ta@topmargin
% \end{length}^^A \tud@ta@textheight
% \begin{length}{\tud@ta@headdiff}
% \begin{length}{\tud@ta@footdiff}
% \changes{v2.02}{2014/06/23}{entfernt}%^^A
% Eine Länge für den Ausgleich zwischen normalem und benötigtem Satzspiegel für 
% das spezielle Layout des \CDs. Die Differenz zwischen den unterschiedlichen 
% Kopfhöhen der Satzspiegelvarianten wird bei der Ausführung von
% \cs{tud@geometry@process} berechnet und in \cs{tud@ta@headdiff} gespeichert. 
% Dabei muss unterschieden werden, ober der Satzspiegel genutzt wird, der durch
% das \CD vorgegeben ist oder der durch \pkg{typearea} berechnete. Die Länge
% \cs{tud@ta@footdiff} wurde mit der \TUDScript-Version~v2.02 entfernt.
%    \begin{macrocode}
\newlength\tud@ta@headdiff
%    \end{macrocode}
% \end{length}^^A \tud@ta@footdiff
% \end{length}^^A \tud@ta@headdiff
% \begin{macro}{\tud@geometry@restore}
% \changes{v2.02}{2014/06/27}{neu}%^^A
% Der Befehl \cs{AfterCalculatingTypearea} wird durch das Paket \pkg{typearea}
% bereitgestellt. Die durch \pkg{typearea} berechneten Längenwerte für den
% Satzspiegel werden zur Weiterverarbeitung gesichert. Für die Erstellung des
% Satzspiegels wird das Paket \pkg{geometry} verwendet. Bei der entsprechenden
% Option (\opt{geometry=no}) wird jedoch der von \pkg{typearea} berechnete
% Satzspiegel an \pkg{geometry} weitergereicht. Somit wird es möglich,
% unabhängig vom genutzten Paket\footnote{\pkg{typearea} oder \pkg{geometry}}
% zur Festlegung des Satzspiegels, diesen innerhalb des Dokumentes zu ändern.
% Damit auch Änderungen an der Papiergröße möglich sind, muss ein einzelnes
% Makro (\cs{Gm@restore@org}) aus \pkg{geometry} temporär deaktiviert werden.
%    \begin{macrocode}
\newcommand*\tud@geometry@restore{}
\AfterCalculatingTypearea{%
  \setlength\tud@ta@textheight{\textheight}%
  \setlength\tud@ta@topmargin{\topmargin}%
  \setlength\tud@ta@headheight{\headheight}%
  \setlength\tud@ta@headsep{\headsep}%
  \ifcsvoid{ta@fh}{%
    \setlength\tud@ta@footheight{\footheight}%
  }{%
    \setlength\tud@ta@footheight{\ta@fh}%
  }%
  \setlength\tud@ta@footskip{\footskip}%
  \let\tud@geometry@restore\Gm@restore@org%
  \if@atdocument%
    \let\Gm@restore@org\relax%
    \tud@geometry@process%
%    \end{macrocode}
% Damit Änderungen am Satzspiegel im Dokument sicher übernommen werden, wird 
% das Setzen des Satzspiegels forciert. Dafür wird \cs{tud@currentgeometry} 
% zurückgesetzt und anschließend der aktuelle Seitenstil erneut geladen, um das 
% erneute und korrekte Ausführen von \cs{tud@beforeselectanypagestyle} zu 
% erzwingen.
%    \begin{macrocode}
    \gdef\tud@currentgeometry{}%
    \expandafter\pagestyle\expandafter{\currentpagestyle}%
  \fi%
  \let\Gm@restore@org\tud@geometry@restore%
}
%    \end{macrocode}
% \end{macro}^^A \tud@geometry@restore
% \begin{macro}{\tud@geometry@hmargin}
% \begin{macro}{\tud@geometry@vmargin}
% \begin{macro}{\tud@geometry@tudmargin}
% \begin{macro}{\tud@geometry@ddcmargin}
% Dies sind Hilfsmakros für die Definition der unterschiedichen Seitenlayouts
% (horizontale und vertikale Ränder). Es handelt sich dabei um die Seitenränder 
% für den normalen Textbereich sowie die angepassten vertikalen Einstellungen
% für die Seitenstilvarianten mit TUD-Kopf. Im Kompatibilitätsmodus für die 
% Version~v2.02 gibt es außerdem einen separaten Satzspiegel für den \DDC-Fuß.
% Gesetzt werden diese in Abhängigkeit von der Option \opt{cdgeometry} im
% Makro \cs{tud@geometry@process} bzw. \cs{tud@geometry@@process}.
%    \begin{macrocode}
\newcommand*\tud@geometry@hmargin{}
\newcommand*\tud@geometry@vmargin{}
\newcommand*\tud@geometry@tudmargin{}
\iftudscrverlower{2.03}{\newcommand*\tud@geometry@ddcmargin{}}{}
%    \end{macrocode}
% \end{macro}^^A \tud@geometry@ddcmargin
% \end{macro}^^A \tud@geometry@tudmargin
% \end{macro}^^A \tud@geometry@vmargin
% \end{macro}^^A \tud@geometry@hmargin
% \changes{v2.02}{2014/06/29}{\pkg{geometry} Laden verzögert}%^^A
% Das Paket \pkg{geometry} erlaubt eine genaue Vorgabe des Satzspiegels und
% der Seitenränder, wie es vom \CD der TU~Dresden verlangt wird. Damit dieses
% alle Satzspiegeleinstellungen korrekt vornimmt und auch alle Klassenoptionen 
% korrekt verarbeitet, wird das Laden mit \cs{AtEndPreamble} bis ans Ende der
% Präambel verzögert und vorher der Satzspiegel neu berechnet. Anschließend 
% erstellt \cs{tud@geometry@process} alle benötigten Satzspiegel. Durch das 
% Setzen des Seitenstils wird der richtige Satzspiegel ausgewählt. Dies 
% geschieht \emph{nicht}, wenn die \cls{standalone}-Klasse mit der Option
% \opt{crop} geladen wurde, um die Seitenränder nicht zu ändern.
%    \begin{macrocode}
\AtEndPreamble{%
  \ifstandalonecrop{}{%
    \recalctypearea%
    \RequirePackage{geometry}[2010/09/12]%
    \tud@geometry@process%
    \expandafter\pagestyle\expandafter{\currentpagestyle}%
  }%
}
%    \end{macrocode}
% \begin{macro}{\tud@geometry@process}
% \changes{v2.02}{2014/06/23}{diverse Anpassungen an \pkg{scrlayer-scrpage}}%^^A
% \changes{v2.03}{2015/01/09}{Satzspiegel des \CDs angepasst}%^^A
% \changes{v2.03}{2015/01/09}{intiale Festlegung der Länge \cs{marginpar}}%^^A
% \changes{v2.03}{2015/01/13}{Satzspiegel kompatibilitätsabhängig}%^^A
% \begin{macro}{\tud@geometry@@process}
% Das Makro \cs{tud@geometry@process} setzt die Option für den gewünschten
% Satzspiegel um, sowohl für die Seitenränder als auch zur Einberechnung der
% Kopf- und/oder Fußzeile. Um mehrere Satzspiegel verwenden zu können~-- was
% für die unterschiedlichen Höhen für Kopf- und Fußzeile nötig ist~-- wird das
% Paket \pkg{geometry} verwendet. Soll \pkg{typearea} zur Satzspiegelerstellung
% genutzt werden, so werden die damit berechneten Werte an \pkg{geometry}
% weitergereicht.
% Es werden drei Layouts erstellt: normaler Satzspiegel, nur TUD-Kopf sowie
% TUD-Kopf und "~Fuß und mit \cs{savegeometry}\marg{Stil} gesichert. Damit kann
% innerhalb des Dokumentes mit dem Befehl \cs{loadgeometry}\marg{Stil} oberer
% sowie ggf. untere Seitenrand geändert werden.
%    \begin{macrocode}
\newcommand*\tud@geometry@process{%
%    \end{macrocode}
% Die Maßvorgaben werden entsprechend der Seitengröße gesetzt.
%    \begin{macrocode}
  \tud@geometry@set%
%    \end{macrocode}
% Für den Fall, dass \pkg{typearea} die Satzspiegelberechnung übernimmt, werden
% die Ergebnisse aus der Berechnung direkt an \pkg{geometry} weitergereicht.
% Dazu werden die berechneten Werte in die entsprechenden Hilfsmakros
% für die Erstellung der \pkg{geometry}-Satzspiegel übergeben.
%    \begin{macrocode}
  \ifcase\tud@geometry\relax%
    \def\tud@geometry@hmargin{%
      left=\dimexpr\oddsidemargin+1in\relax,%
      width=\textwidth,%
      marginparwidth=\dimexpr\evensidemargin+1in-\tud@ta@headsep\relax,%
      \if@twoside\if@reversemargin%
        marginparwidth=\dimexpr\oddsidemargin+1in-\tud@ta@headsep\relax,%
      \fi\fi%
      marginparsep=.5\tud@ta@headsep,%
    }%
    \def\tud@geometry@vmargin{%
      top=\dimexpr\tud@ta@topmargin+\tud@ta@headheight+\tud@ta@headsep%
        +1in\relax,%
      headheight=\tud@ta@headheight,%
      headsep=\tud@ta@headsep,%
      textheight=\tud@ta@textheight,%
      footskip=\tud@ta@footskip,%
    }%
    \def\tud@geometry@tudmargin{%
      top=\dimexpr\tud@dim@topmargin+\tud@dim@barheight%
        +\tud@dim@headsep\relax,%
      headheight=\dimexpr\tud@dim@topmargin+\tud@dim@barheight%
        -\tud@dim@logoy\relax,%
      headsep=\tud@dim@headsep,%
      textheight=\dimexpr\tud@ta@textheight-\tud@ta@headdiff\relax,%
      ignorehead,%
    }%
%    \end{macrocode}
% Es wird die Differenz der Höhen zwischen TUD-Kopf und Standardkopfzeile
% für den \pkg{typearea}-Satzspiegel berechnet.
%    \begin{macrocode}
    \setlength\tud@ta@headdiff{%
      \dimexpr\tud@dim@topmargin+\tud@dim@barheight+\tud@dim@headsep%
        -\tud@ta@topmargin-\tud@ta@headheight-\tud@ta@headsep-1in\relax%
    }%
%    \end{macrocode}
% Sollte der \pkg{typearea}-Satzspiegel noch unterhalb des TUD-Kopfes liegen, 
% wird der Abstand zum Kopf vergrößert.
%    \begin{macrocode}
    \ifdim\tud@ta@headdiff<\z@\relax%
      \addtolength\tud@dim@headsep{-\tud@ta@headdiff}%
    \fi%
%    \end{macrocode}
% Für den Kompatibilitätsmodus der Version~v2.02 gibt es für den \DDC-Fuß einen 
% separaten Satzspiegel.
%    \begin{macrocode}
    \iftudscrverlower{2.03}{%
      \setlength\tud@dim@ddcdiff{%
        \dimexpr.6\tud@dim@topmargin-\tud@ta@footskip+\tud@dim@headsep%
          +\tud@ta@footheight-1.25\baselineskip\relax%
      }%
      \def\tud@geometry@ddcmargin{%
        textheight=\dimexpr\tud@ta@textheight-\tud@ta@headdiff%
          -\tud@dim@ddcdiff\relax,%
        footskip=\dimexpr\tud@ta@footskip+\tud@dim@ddcdiff\relax,%
      }%
    }{}%
%    \end{macrocode}
% Sollte die Option \opt{extrabottommargin} verwendet worden sein, wird eine 
% Warnung ausgegeben, dass diese für den \pkg{typearea}-Satzspiegel wirkungslos
% ist.
%    \begin{macrocode}
    \ifdim\tud@dim@extrabottommargin=\z@\relax\else%
      \ClassWarning{\tudcls@name}{%
        Option `extrabottommargin' is ineffective when\MessageBreak%
        package typearea is used (`cdgeometry=no')%
      }%
    \fi%
%    \end{macrocode}
% Hier erfolgt die Definition der Hilfsmakros für das CD-konforme asymmetrische
% bzw. an das \CD angelehnte Layout für einseitigen und zweiseitigen Satz.
% Zuerst werden die verschiedenen unterschiedlichen horizontalen Ränder für die
% unterschiedlichen Optionen definiert. Danach kommt der Gleichanteil.
%    \begin{macrocode}
  \else%
    \ifcase\tud@geometry\or%
      \def\tud@geometry@hmargin{%
        left=\tud@dim@widemargin,%
        textwidth=\dimexpr\paperwidth-\tud@dim@both-\ta@bcor\relax,%
        \if@reversemargin%
          marginparwidth=\dimexpr\tud@dim@widemargin-\tud@ta@headsep\relax,%
        \else%
          marginparwidth=\dimexpr\tud@dim@slimmargin-\tud@ta@headsep\relax,%
        \fi%
        marginparsep=.5\tud@ta@headsep,%
        bindingoffset=\ta@bcor,%
        \if@twoside asymmetric,\fi%
      }%
%    \end{macrocode}
% Die zweite Variante ist eigentlich nicht konform mit dem \CD. Sie ist sowohl
% im einseitigen als auch im zweiseitgigen Satz symmetrisch.
%    \begin{macrocode}
    \or%
      \def\tud@geometry@hmargin{%
        left=.5\tud@dim@both,%
        textwidth=\dimexpr\paperwidth-\tud@dim@both-\ta@bcor\relax,%
        marginparwidth=\dimexpr.5\tud@dim@both-\tud@ta@headsep\relax,%
        marginparsep=.5\tud@ta@headsep,%
        bindingoffset=\ta@bcor,%
      }%
%    \end{macrocode}
% Eigentlich ist auch die dritte Variante nach dem \CD nicht zulässig. Sie ist
% im einseitigen Satz symmetrisch, im zweiseitgigen Satz wird die innere Seite
% schmaler gesetzt als die äußere, wobei hier auf das in den Seitenrand ragende
% TUD-Logo geachtet werden muss.
%    \begin{macrocode}
    \or%
      \def\tud@geometry@hmargin{%
        \if@twoside%
          left=.4\tud@dim@both,%
          twoside,%
        \else%
          left=.5\tud@dim@both,%
        \fi%
        textwidth=\dimexpr\paperwidth-\tud@dim@both-\ta@bcor\relax,%
        \if@twoside%
          \if@reversemargin%
            marginparwidth=\dimexpr.4\tud@dim@both-\tud@ta@headsep\relax,%
          \else%
            marginparwidth=\dimexpr.6\tud@dim@both-\tud@ta@headsep\relax,%
          \fi%
        \else%
          marginparwidth=\dimexpr.5\tud@dim@both-\tud@ta@headsep\relax,%
        \fi%
        marginparsep=.5\tud@ta@headsep,%
        bindingoffset=\ta@bcor,%
      }%
    \fi%
%    \end{macrocode}
% Für alle drei Varianten der vertikale Gleichanteil. Der Satzspiegel der 
% Version~v2.02 wird aus Gründen der Kompatibilität weiterhin vorgehalten.
%    \begin{macrocode}
    \iftudscrverlower{2.03}{%
      \def\tud@geometry@vmargin{%
        top=.5\tud@dim@both,%
        headheight=\tud@ta@headheight,%
        headsep=\tud@dim@headsep,%
        bottom=\dimexpr.5\tud@dim@both+\tud@dim@extrabottommargin\relax,%
        footskip=\dimexpr\tud@dim@headsep+\tud@ta@footheight%
          -1.25\baselineskip\relax,%
        \tud@geometry@hincl,%
        \tud@geometry@fincl,%
      }%
    }{%
      \def\tud@geometry@vmargin{%
        top=\tud@dim@slimmargin,%
        headheight=\tud@ta@headheight,%
        headsep=\tud@ta@headsep,%
        bottom=\dimexpr\tud@dim@widemargin+\tud@dim@extrabottommargin\relax,%
        footskip=\dimexpr\tud@dim@footsep+\tud@ta@footheight\relax,%
        \tud@geometry@hincl,%
        \tud@geometry@fincl,%
      }%
    }%
    \def\tud@geometry@tudmargin{%
      top=\dimexpr\tud@dim@topmargin+\tud@dim@barheight%
        +\tud@dim@headsep\relax,%
      headheight=\dimexpr\tud@dim@topmargin+\tud@dim@barheight%
        -\tud@dim@logoy\relax,%
      headsep=\tud@dim@headsep,%
      ignorehead,%
    }%
%    \end{macrocode}
% Es wird die Differenz der Höhen zwischen TUD-Kopf und Standardkopfzeile
% für den Satzspiegel des \CDs berechnet.
%    \begin{macrocode}
    \setlength\tud@ta@headdiff{%
      \dimexpr\tud@dim@topmargin+\tud@dim@barheight+\tud@dim@headsep%
        -\tud@dim@slimmargin\relax%
    }%
%    \end{macrocode}
% Für die Kompatibilitätsvariante wieder mal die Extrawurst\dots
%    \begin{macrocode}
    \iftudscrverlower{2.03}{%
      \setlength\tud@ta@headdiff{%
        \dimexpr\tud@dim@topmargin+\tud@dim@barheight+\tud@dim@headsep%
          -.5\tud@dim@both\relax%
      }%
%    \end{macrocode}
% Wird die Fußzeile zum Satzspiegel gerechnet, ist für Seiten mit \DDC-Fuß 
% etwas Handarbeit notwendig, damit dieser nicht allzu weit nach oben ragt.
%    \begin{macrocode}
      \setlength\tud@dim@ddcdiff{.6\tud@dim@topmargin}%
      \def\tud@geometry@ddcmargin{%
        \if@fincl%
          bottom=\dimexpr.5\tud@dim@both+\tud@dim@extrabottommargin%
            +\tud@dim@ddcdiff+\tud@dim@headsep+\tud@ta@footheight%
            -1.25\baselineskip\relax,%
        \else%
          bottom=\dimexpr.5\tud@dim@both+\tud@dim@extrabottommargin%
            +\tud@dim@ddcdiff\relax,%
        \fi%
        footskip=\dimexpr\tud@dim@headsep+\tud@ta@footheight%
          -1.25\baselineskip+\tud@dim@ddcdiff\relax,%
      }%
    }{}%
  \fi%
%    \end{macrocode}
% Es wird die Differenz der Höhen zwischen TUD-Kopf und Standardkopfzeile
% für den Satzspiegel des \CDs berechnet. Außerdem wird die standardmäßige
% vertikale Verschiebung der Überschriften festgelegt.
%    \begin{macrocode}
  \ifdim\tud@ta@headdiff<\z@\relax\setlength\tud@ta@headdiff{\z@}\fi%
  \global\tud@ta@headdiff=\tud@ta@headdiff%
  \setlength\tud@dim@headingsvskip{.6\tud@dim@topmargin}%
  \global\tud@dim@headingsvskip=\tud@dim@headingsvskip%
%    \end{macrocode}
% Für den Satzspiegel der Version~v2.02 wird außerdem die Länge für den höheren 
% Seitenfuß gesetzt.
%    \begin{macrocode}
  \iftudscrverlower{2.03}{%
    \ifdim\tud@dim@ddcdiff<\z@\relax\setlength\tud@dim@ddcdiff{\z@}\fi%
    \global\tud@dim@ddcdiff=\tud@dim@ddcdiff%
  }{}%
%    \end{macrocode}
% Es wird \cs{tud@geometry@@process} aufgerufen, was die zuvor definierten
% Hilfsmakros nutzt, um alle benötigten Seitenlayouts optionsabhängig zu
% erstellen.
%    \begin{macrocode}
  \tud@geometry@@process%
}
%    \end{macrocode}
% Der Befehl \cs{tud@geometry@@process} setzt mit den zuvor definierten
% Hilfsmakros die \pkg{geometry}"=Optionen für sowohl die seitlichen als auch
% die oberen sowie unteren Seitenränder und inkludiert ggf. Kopf- und Fußzeile
% in den Satzspiegel. Die unterschiedlichen Layouts sind dabei \opt{tudddc} für
% TUD-Kopf und \DDC-Fuß, \opt{tudpage} für den alleinigen TUD-Kopf sowie
% \opt{tudarea} für den normalen bzw. mit \pkg{typearea} berechneten
% Satzspiegel.
%    \begin{macrocode}
\newcommand*\tud@geometry@@process{%
%    \end{macrocode}
% Für den Satzspiegel der Version~v2.02 wird als erstes der Satzspiegel für den
% TUD-Kopf zusammen mit dem \DDC-Fuß erstellt. Das Einbeziehen der Fußzeile in
% den Satzspiegel erfolgt nicht ggf. über die Option \opt{includefoot} sondern 
% manuell bei der Definition von \cs{tud@geometry@ddcmargin}.
%    \begin{macrocode}
  \iftudscrverlower{2.03}{%
    \edef\@tempa{%
      \tud@geometry@hmargin,%
      \tud@geometry@vmargin,%
      \tud@geometry@tudmargin,%
      \tud@geometry@ddcmargin,%
      ignorehead,ignorefoot,%
    }%
    \expandafter\newgeometry\expandafter{\@tempa}%
    \savegeometry{tudareaddc}%
  }{}%
%    \end{macrocode}
% Danach folgt der Seitenstil, mit dem TUD-Kopf und der Standardfußzeile.
%    \begin{macrocode}
  \edef\@tempa{%
    \tud@geometry@hmargin,%
    \tud@geometry@vmargin,%
    \tud@geometry@tudmargin,%
  }%
  \expandafter\newgeometry\expandafter{\@tempa}%
  \savegeometry{tudarea}%
%    \end{macrocode}
% Als letztes wird der Standardsatzspiegel erstellt.
%    \begin{macrocode}
  \edef\@tempa{%
    \tud@geometry@hmargin,%
    \tud@geometry@vmargin,%
  }%
  \expandafter\newgeometry\expandafter{\@tempa}%
  \savegeometry{typearea}%
}
%    \end{macrocode}
% \end{macro}^^A \tud@geometry@@process
% \end{macro}^^A \tud@geometry@process
% \begin{macro}{\tud@geometry@hincl}
% \changes{v2.02}{2014/06/23}{diverse Anpassungen an \pkg{scrlayer-scrpage}}%^^A
% \begin{macro}{\tud@geometry@fincl}
% Diese beiden Hilfsmakro werten die Optionen für das Einbeziehen von Kopf- und
% Fußzeile aus.
%    \begin{macrocode}
\newcommand*\tud@geometry@hincl{%
  \if@hincl%
    includehead,%
  \else%
    ignorehead,%
  \fi%
}
\newcommand*\tud@geometry@fincl{%
  \if@fincl%
    includefoot,%
  \else%
    ignorefoot,%
  \fi%
}
%    \end{macrocode}
% \end{macro}^^A \tud@geometry@fincl
% \end{macro}^^A \tud@geometry@hincl
% \begin{environment}{tudpage}
% \changes{v2.02}{2014/06/23}{an Paket \pkg{scrlayer-scrpage} angepasst}%^^A
% \begin{macro}{\tud@ps}
% \begin{macro}{\tud@ps@select}
% \changes{v2.02}{2014/07/19}{neu}%^^A
% \begin{macro}{\tud@currentpagestyle}
% \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, wenn \cs{tud@currentpagestyle} void}%^^A
% 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.
%    \begin{macrocode}
\newcommand*\tud@ps{tudheadings}
\newcommand*\tud@ps@select{%
  \expandafter\pagestyle\expandafter{\tud@ps}%
  \ifstr{\GetRealPageStyle{\tud@ps}}{empty}{%
    \renewcommand*\titlepagestyle{empty}%
%<*book|report>
    \renewcommand*\partpagestyle{empty}%
    \renewcommand*\chapterpagestyle{empty}%
%</book|report>
    \renewcommand*\indexpagestyle{empty}%
  }{}%
  \ifstr{\GetRealPageStyle{\tud@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{}
\newcommand*\tud@currentpagestyle@set{%
  \ifdefvoid{\tud@currentpagestyle}{%
    \xdef\tud@currentpagestyle{\currentpagestyle}%
  }{}%
}
\newcommand*\tud@currentpagestyle@reset{%
  \ifdefvoid{\tud@currentpagestyle}{}{%
    \expandafter\pagestyle\expandafter{\tud@currentpagestyle}%
    \let\tud@currentpagestyle\relax%
  }%
}
\NewEnviron{tudpage}[1][]{%
%    \end{macrocode}
% Um beim Umschalten des Seitenstils den aktuellen selbst zu behalten, wird
% dieser im Hilfsmakro \cs{tud@currentpagestyle} gespeichert.
%    \begin{macrocode}
  \tud@currentpagestyle@set%
  \clearpage%
  \def\tud@ps{tudheadings}%
  \TUD@parameter@set{tudpage}{#1}%
  \tud@ps@select%
  \tud@multicols@check%
%    \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}
  \ifnum\tud@multicols>1\relax%
    \begin{multicols}{\tud@multicols}%
  \fi%
  \BODY%
  \ifnum\tud@multicols>1\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}
% \end{macro}^^A \tud@currentpagestyle@reset
% \end{macro}^^A \tud@currentpagestyle@set
% \end{macro}^^A \tud@currentpagestyle
% \end{macro}^^A \tud@ps@select
% \end{macro}^^A \tud@ps
% \end{environment}^^A tudpage
% \begin{macro}{\TUD@parameter@define@ps}
% 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@define@ps} ausgelagert werden.
%    \begin{macrocode}
\newcommand*\TUD@parameter@define@ps[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@define{cdfont}[true]{\TUDoption{cdfont}{#1}}%
%    \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@define{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@define{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@define{headlogo}{\headlogo{#1}}%
  \TUD@parameter@define{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@define{ddc}[true]{\TUDoption{ddc}{#1}}%
  \TUD@parameter@define{ddchead}[true]{\TUDoption{ddchead}{#1}}%
  \TUD@parameter@define{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@define{cdfonts}[true]{\TUDoption{cdfonts}{#1}}%
  \TUD@parameter@define{tudfonts}[true]{\TUDoption{tudfonts}{#1}}%
  \TUD@parameter@define{barfont}[true]{\TUDoption{barfont}{#1}}%
  \TUD@parameter@define{widehead}[true]{\TUDoption{widehead}{#1}}%
  \TUD@parameter@define{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@define@ps
% Mit \cs{TUD@parameter}\marg{Family}\marg{\dots} wird die Parameterfamilie
% festgelegt und anschließend die Definitionen getätigt.
%    \begin{macrocode}
\TUD@parameter{tudpage}{%
%    \end{macrocode}
% \begin{parameter}{language}
% Mit diesem Parameter kann die Sprache in der Umgebung umgeschaltet werden. Die
% Sprache kann auch ohne den entsprechenden Schlüssel direkt als Parameter
% angegeben werden.
%    \begin{macrocode}
  \TUD@parameter@define{language}{\selectlanguage{#1}}%
%    \end{macrocode}
%  \end{parameter} ^^A language
% \begin{parameter}{columns}
% Hiermit kann die Anzahl der Spalten für die Umgebung angegeben werden. Für 
% mehr als zwei Spalten muss das Paket \pkg{multicols} geladen werden. Die
% Spaltenanzahl kann auch ohne den entsprechenden Schlüssel direkt Parameter
% angegeben werden.
%    \begin{macrocode}
  \TUD@parameter@define{columns}{\def\tud@multicols{#1}}%
%    \end{macrocode}
%  \end{parameter} ^^A columns
% \begin{parameter}{color}
% \changes{v2.03}{2015/01/28}{entfernt}%^^A
% \begin{parameter}{colour}
% \changes{v2.03}{2015/01/28}{entfernt}%^^A
% Beide Parameter wurden entfernt, da diese augenscheinlich für das \CD nicht 
% notwendig sind.
% \end{parameter}^^A colour
% \end{parameter}^^A color
% \begin{parameter}{pagestyle}
% \changes{v2.02}{2014/06/23}{neu}%^^A
% \changes{v2.03}{2015/01/28}{\cs{iftudpagestyle} verwendet}%^^A
% Mit diesem Parameter kann der verwendete Seitenstil eingestellt werden, wobei 
% einer der \pgs{tudheadings}-Seitenstile verwendet wird.
%    \begin{macrocode}
  \TUD@parameter@define{pagestyle}{%
    \iftudpagestyle{#1}{\renewcommand*\tud@ps{#1}}{%
      \ifstr{#1}{empty}{\renewcommand*\tud@ps{empty.tudheadings}}{%
      \ifstr{#1}{plain}{\renewcommand*\tud@ps{plain.tudheadings}}{%
      \ifstr{#1}{headings}{\renewcommand*\tud@ps{tudheadings}}{%
        \TUD@parameter@error{pagestyle}{%
          headings, plain, empty or any tudheadings page style type%
        }%
      }}}%
    }%
  }%
%    \end{macrocode}
% \end{parameter}^^A pagestyle
% \begin{parameter}{head}
% \changes{v2.02}{2014/06/30}{entfernt, Funktionalität teilweise durch Option
%   \opt{ddchead} übernommen}%^^A
% \begin{parameter}{foot}
% \changes{v2.02}{2014/06/30}{entfernt, Funktinalität teilweise durch Option
%   \opt{ddcfoot} übernommen}%^^A
% Diese Parameter wurden entfernt. Stattdessen kann innerhalb der Umgebung
% entweder der Befehl \cs{TUDoptions} mit den Schlüsseln \opt{ddchead=\dots}
% und \opt{ddcfoot=\dots} bzw. für den Querbalken \opt{cdhead=\dots} sowie das
% Makro \cs{headlogo} genutzt werden oder aber die gleichnamigen Parameter der
% Umgebung.
% \end{parameter}^^A head
% \end{parameter}^^A foot
% Hier werden die Parameter für Kopf- und Fußzeile tatsächlich defniert.
%    \begin{macrocode}
  \TUD@parameter@define@ps{#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@defaulthandler},
% 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} und damit auch die aktuelle Parameterfamilie
% beendet.
%    \begin{macrocode}
  \TUD@parameter@sethandler{\TUD@parameter@defaulthandler{tudpage}{#1}}%
}
%    \end{macrocode}
%
% \iffalse
%</class&body>
% \fi
%
% \Finale
%
\endinput
