% \CheckSum{875}
% \iffalse meta-comment
%
%  TUD-Script -- Corporate Design of Technische Universität Dresden
% ----------------------------------------------------------------------------
%
%  Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2020
%
% ----------------------------------------------------------------------------
%
%  This work may be distributed and/or modified under the conditions of the
%  LaTeX Project Public License, version 1.3c of the license. The latest
%  version of this license is in http://www.latex-project.org/lppl.txt and
%  version 1.3c or later is part of all distributions of LaTeX 2005/12/01
%  or later and of this work. This work has the LPPL maintenance status
%  "author-maintained". The current maintainer and author of this work
%  is Falk Hanisch.
%
% ----------------------------------------------------------------------------
%
%  Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz
%  in der Version 1.3c, verteilt und/oder verändert werden. Die aktuelle
%  Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und
%  Version 1.3c oder später ist Teil aller Verteilungen von LaTeX 2005/12/01
%  oder später und dieses Werks. Dieses Werk hat den LPPL-Verwaltungs-Status
%  "author-maintained", wird somit allein durch den Autor verwaltet. Der
%  aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch.
%
% ----------------------------------------------------------------------------
%
% \fi
%
% \CharacterTable
%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%   Digits        \0\1\2\3\4\5\6\7\8\9
%   Exclamation   \!     Double quote  \"     Hash (number) \#
%   Dollar        \$     Percent       \%     Ampersand     \&
%   Acute accent  \'     Left paren    \(     Right paren   \)
%   Asterisk      \*     Plus          \+     Comma         \,
%   Minus         \-     Point         \.     Solidus       \/
%   Colon         \:     Semicolon     \;     Less than     \<
%   Equals        \=     Greater than  \>     Question mark \?
%   Commercial at \@     Left bracket  \[     Backslash     \\
%   Right bracket \]     Circumflex    \^     Underscore    \_
%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%   Right brace   \}     Tilde         \~}
%
% \iffalse
%%% From File: tudscr-fields.dtx
%<*dtx>
% \fi
%
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\ProvidesFile{tudscr-fields.dtx}[2019/08/20 v2.06c TUD-Script\space%
  (input fields)%
]
%
% \iffalse
\documentclass[english,ngerman,xindy]{tudscrdoc}
\iftutex
  \usepackage{fontspec}
\else
  \usepackage[T1]{fontenc}
  \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
\fi
\usepackage{babel}
\usepackage{tudscrfonts}
\KOMAoptions{parskip=half-}
\usepackage{bookmark}
\usepackage[babel]{microtype}

\CodelineIndex
\RecordChanges
\GetFileInfo{tudscr-fields.dtx}
\title{\file{\filename}}
\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
\date{\fileversion\nobreakspace(\filedate)}

\begin{document}
  \maketitle
  \tableofcontents
  \DocInput{\filename}
\end{document}
%</dtx>
% \fi
%
% \selectlanguage{ngerman}
%
% \changes{v2.02}{2014/06/23}{Paket \pkg{titlepage} nicht weiter unterstützt}^^A
%
% \section{Anwenderbefehle für Eingabefelder}
%
% Das \TUDScript-Bundle für das \TUDCD definieren mehrere Felder, welche durch
% den Anwender festgelegt werden können und dadurch auf der Titelseite bzw. auf
% der Aufgabenstellung~-- falls das Paket \pkg{tudscrsupervisor} zum Einsatz 
% kommt~-- ausgegeben werden. Ein Großteil der definierten Felder wird unter 
% anderem für den Satz der Titelseite benötigt.
%
% Das Setzen einer speziellen Titelseite mit \LaTeX{} ist eines der häufigsten
% anliegen. Dafür ist von Markus Kohm\footnote{Autor von \KOMAScript} das
% \pkg{titlepage}-Paket entworfen worden. Um gleichzeitig konsistent zu diesem
% Paket zu sein, werden für die entsprechenden Felder Alias-Befehle definiert.
%
% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
%
% \iffalse
%<*class&!manual>
% \fi
%
% \begin{macro}{\getfield}
% \changes{v2.06}{2018/08/20}{neu}^^A
% Hiermit wird der Inhalt des im zweiten (obligatorischen) Argument namentlich 
% genannten Feldes in die im ersten (optionalen) Argument gegebene Anweisung 
% expandiert.
%    \begin{macrocode} 
\newcommand*\getfield[2][\@firstofone]{%
  \begingroup%
    \def\tud@res@b{#1}%
    \ifcsdef{@@#2}{%
      \letcs\tud@res@a{@@#2}%
    }{%
      \ifcsdef{@#2}{%
        \letcs\tud@res@a{@#2}%
      }{%
        \let\tud@res@a\@empty%
        \ClassWarning{\TUD@Class@Name}{%
          The internal field `@#2' does not exist%
        }%
      }%
    }%
    \edef\tud@res@a{%
      \endgroup%
      \expandonce\tud@res@b{\expandonce\tud@res@a}%
    }%
  \tud@res@a%
}
%    \end{macrocode}
% \end{macro}^^A \getfield
%
% \subsection{Textfelder für die \TUDScript-Klassen}
%
% Von den Klassen benötigte Formularfelder werden definiert. Für das Setzen von 
% Feldern werden mit dem Makro \cs{trim@spaces} aus dem Paket \pkg{trimspaces} 
% bei einem übergebenen Argument führende und angehängte Leerzeichen beseitigt.
% \begin{macro}{\faculty}
% \begin{field}{\@faculty}
% \begin{field}{\@facultyfoot}
% \changes{v2.05}{2015/07/06}{neu}^^A
% \begin{macro}{\department}
% \begin{field}{\@department}
% \begin{field}{\@departmentfoot}
% \changes{v2.05}{2015/07/06}{neu}^^A
% \begin{macro}{\institute}
% \begin{field}{\@institute}
% \begin{field}{\@institutefoot}
% \changes{v2.05}{2015/07/06}{neu}^^A
% \begin{macro}{\chair}
% \begin{field}{\@chair}
% \begin{field}{\@chairfoot}
% \changes{v2.05}{2015/07/06}{neu}^^A
% Für die für die TUD-Kopfzeile kann mit \cs{faculty}\marg{Fakultät} die 
% Fakultät angegeben werden, welche im Makro \cs{@faculty} gespeichert wird. 
% Das gilt ebenso für die Angabe von Einrichtung, Institut und Lehrstuhls bzw.
% Professur. Dies erfolgt mit den Makros \cs{department}\marg{Fachrichtung}, 
% \cs{institute}\marg{Institut} sowie \cs{chair}\marg{Lehrstuhl}, welche in 
% \cs{@department}, \cs{@institute} und \cs{@chair} gespeichert werden.
%
% Das optionale Argument wird zur Kompatibilität zur Klasse \cls{tudscrposter}
% vorgehalten. Wird das Paket geladen, kann mit dem optionalen Argument die 
% Angabe der Struktureinheiten im Fußbereich variiert werden. Dafür werden die 
% Felder \cs{@facultyfoot}, \cs{@departmentfoot}, \cs{@institutefoot} sowie 
% \cs{@chairfoot} 
% definiert.
%    \begin{macrocode}
\newcommand*\@faculty{}
\newcommand*\@department{}
\newcommand*\@institute{}
\newcommand*\@chair{}
%<*book|report|article>
\newcommand*\faculty[2][]{\tud@head@text@field{faculty}{#2}}
\newcommand*\department[2][]{\tud@head@text@field{department}{#2}}
\newcommand*\institute[2][]{\tud@head@text@field{institute}{#2}}
\newcommand*\chair[2][]{\tud@head@text@field{chair}{#2}}
%</book|report|article>
%<*poster>
\newcommand*\@facultyfoot{}
\newcommand*\@departmentfoot{}
\newcommand*\@institutefoot{}
\newcommand*\@chairfoot{}
\newcommand*\faculty[2][\@empty]{\tud@foot@line@add{faculty}{#2}{#1}}
\newcommand*\department[2][\@empty]{\tud@foot@line@add{department}{#2}{#1}}
\newcommand*\institute[2][\@empty]{\tud@foot@line@add{institute}{#2}{#1}}
\newcommand*\chair[2][\@empty]{\tud@foot@line@add{chair}{#2}{#1}}
%</poster>
%    \end{macrocode}
% \end{field}^^A \@chairfoot
% \end{field}^^A \@chair
% \end{macro}^^A \chair
% \end{field}^^A \@institutefoot
% \end{field}^^A \@institute
% \end{macro}^^A \institute
% \end{field}^^A \@departmentfoot
% \end{field}^^A \@department
% \end{macro}^^A \department
% \end{field}^^A \@facultyfoot
% \end{field}^^A \@faculty
% \end{macro}^^A \faculty
% \begin{macro}{\extraheadline}
% \begin{field}{\@extraheadline}
% Für die Angabe weiteren, freien Textzeile im Kopf. Dies ist laut \CD nur in
% besonderen Ausnahmefällen gestattet.
%    \begin{macrocode}
\newcommand*\@extraheadline{}
\newcommand*\extraheadline[1]{\tud@head@text@field{extraheadline}{#1}}
%    \end{macrocode}
% \end{field}^^A \@extraheadline
% \end{macro}^^A \extraheadline
% \begin{macro}{\tud@head@text@field}
% \changes{v2.05}{2015/11/26}{neu}^^A
% Wird ein Feld gesetzt, muss im Zweifel die Kopfzeile neu erstellt werden.
%    \begin{macrocode}
\newcommand*\tud@head@text@field[2]{%
  \csgdef{@#1}{\trim@spaces{#2}}%
  \global\@tud@head@text@settrue%
}
%    \end{macrocode}
% \end{macro}^^A \tud@head@text@field
% \begin{macro}{\tud@foot@line@add}
% \changes{v2.05}{2015/07/06}{neu}^^A
% \begin{macro}{\tud@foot@line@write}
% \changes{v2.05}{2015/07/06}{neu}^^A
% Mit \cs{tud@foot@line@add} wird der Inhalt eines Feldes in \cs{@\meta{Feld}} 
% gespeichert. Der Befehl erwartet als erstes obligatorisches Argument den
% Feldnamen und als zweites den Inhalt. Entspricht das dritte obligatorische 
% Argument \cs{@empty}, so wird in \cs{@\meta{Feld}foot} ebenfalls das zweite 
% Argument abgelegt, andernfalls das dritte.
%
% Damit wird es für Poster möglich, die Befehle \cs{faculty}, \cs{department}, 
% \cs{institute}, \cs{chair} und \cs{professor} dahingehend zu erweitern, dass 
% unterschiedliche Angaben für die Kopf- und Fußzeile gemacht werden können.
% Wird eines der zuvor genannten Makros lediglich mit einem obligatorischen
% Argument verwendet, so enthalten Kopf und Fuß den gleichen Eintrag. Wird
% jedoch zusätzlich das optionale Argument genutzt, so wird dessen Inhalt im 
% Fußbereich mit \cs{tud@foot@line@write} ausgegeben.
%    \begin{macrocode}
%<*poster>
\newcommand*\tud@foot@line@add[3]{%
  \tud@head@text@field{#1}{#2}%
  \ifx\@empty#3\relax%
    \global\csletcs{@#1foot}{@#1}%
  \else%
    \csgdef{@#1foot}{\trim@spaces{#3}}%
  \fi%
}
\newcommand*\tud@foot@line@write[1]{%
  \protected@edef\@tempa{\csuse{@#1foot}}%
  \ifx\@tempa\@empty\else\newline\mbox{\csuse{@#1foot}}\fi%
}
%</poster>
%    \end{macrocode}
% \end{macro}^^A \tud@foot@line@write
% \end{macro}^^A \tud@foot@line@add
% \begin{macro}{\title}
% \begin{field}{\@title}
% \begin{field}{\@@title}
% \changes{v2.02}{2014/11/06}{\cs{protected@xdef} genutzt}^^A
% Für die spätere Verwendung im Dokument des Titels~-- beispielsweise für die
% Aufgabenstellung oder die Selbstständigkeitserklärung~-- wird das Feld
% \cs{@@title} definiert. In diesem wird der mit \cs{title} gesicherte Eintrag
% ohne die etwaigen Fußnoten gespeichert. 
%    \begin{macrocode}
\newcommand*\@@title{}
\robustify\@title
\renewcommand*\title[1]{%
  \gdef\@title{#1}%
  \begingroup%
    \let\thanks\@gobble%
    \let\footnote\@gobble%
    \def\newline{\space\ignorespaces}%
    \def\\{\space\ignorespaces}%
    \protected@xdef\@@title{\trim@spaces{#1}}%
  \endgroup%
}
%    \end{macrocode}
% \end{field}^^A \@@title
% \end{field}^^A \@title
% \end{macro}^^A \title
% \begin{macro}{\author}
% \begin{field}{\@author}
% \begin{field}{\@@author}
% \begin{macro}{\authormore}
% \begin{field}{\@authormore}
% Die Ausgabe einer zusätzlichen Zeile mit \cs{authormore}\marg{Textzeile}
% direkt unterhalb der Angabe des Autors auf der Titelseite, wird im Makro
% \cs{@authormore} gespeichert.
%    \begin{macrocode}
\newcommand*\@@author{}
\renewcommand*\author[1]{%
  \gdef\@author{#1}%
%    \end{macrocode}
% Das Feld \cs{@@author} soll lediglich die Autoren ohne weitere Anmerkungen 
% enthalten. Deshalb werden die gewöhnlichen Formatierungsbefehle des Titels
% temporär unschädlich gemacht.
%    \begin{macrocode}
  \begingroup%
    \let\thanks\@gobble%
    \let\footnote\@gobble%
    \def\newline{\space\ignorespaces}%
    \def\\{\space\ignorespaces}%
%    \end{macrocode}
% Die Makros aus \cs{tud@split@author@list} werden zu \cs{@tempc} gesetzt, um 
% diese nach der Expansion weiter zu behandeln.
%    \begin{macrocode}
    \let\@tempc\relax%
    \def\@tempa##1{\csedef{##1}####1{\@tempc}}%
    \let\@tempb\tud@split@author@list%
    \ifx\and\relax\else%
      \robustify\and%
    \fi%
    \expandafter\forcsvlist\expandafter\@tempa\expandafter{\@tempb}%
%    \end{macrocode}
% Da die Befehle für Zusatzinformationen unter Umständen ungewollte Leerzeichen 
% im Feld \cs{@@author} hinterlassen, werden diese entfernt.
%    \begin{macrocode}
    \def\@tempa##1##2{%
      \def\@tempb####1##2####2\@nil{%
        \IfArgIsEmpty{####2}{%
          \def##1{####1}%
        }{%
          \@tempb####1####2\@nil%
        }%
      }%
      \expandafter\@tempb##1##2\@nil%
    }%
    \protected@edef\@@author{#1}%
    \@tempa{\@@author}{ \@tempc }%
    \@tempa{\@@author}{\@tempc }%
    \@tempa{\@@author}{ \@tempc}%
    \@tempa{\@@author}{\@tempc}%
    \xdef\@@author{\expandonce\@@author}%
  \endgroup%
}
\newcommand*\@authormore{}
\newrobustcmd*\authormore[1]{\gdef\@authormore{#1}\ignorespaces}
%    \end{macrocode}
% \end{field}^^A \@authormore
% \end{macro}^^A \authormore
% \end{field}^^A \@@author
% \end{field}^^A \@author
% \end{macro}^^A \author
% \begin{macro}{\emailaddress}
% \changes{v2.02}{2014/05/16}{neu, Umbenennung des Makros \cs{email}}^^A
% \begin{field}{\@emailaddress}
% \changes{v2.02}{2014/05/16}{neu, Umbenennung des Makros \cs{@email}}^^A
% \begin{macro}{\tud@emailaddress@simple}
% \changes{v2.05}{2016/07/09}{neu}^^A
% \begin{macro}{\tud@emailaddress@hyper}
% \changes{v2.05}{2016/07/09}{neu}^^A
%    \begin{macrocode}
\newcommand*\@emailaddress{}
\newrobustcmd*\emailaddress{%
  \kernel@ifstar{\tud@emailaddress@simple}{\tud@emailaddress@hyper}%
}
\newrobustcmd*\tud@emailaddress@simple[1]{\gdef\@emailaddress{#1}}
\newrobustcmd*\tud@emailaddress@hyper[2][]{\gdef\@emailaddress{#2}}
\AfterPackage{hyperref}{%
  \renewrobustcmd*\tud@emailaddress@hyper[2][hidelinks]{%
    \gdef\@emailaddress{%
      \begingroup%
        \urlstyle{same}%
        \hypersetup{#1}%
        \href{mailto:#2}{\nolinkurl{#2}}%
      \endgroup%
    }%
  }%
}
%    \end{macrocode}
% \end{macro}^^A \tud@emailaddress@hyper
% \end{macro}^^A \tud@emailaddress@simple
% \end{field}^^A \@emailaddress
% \end{macro}^^A \emailaddress
% \begin{macro}{\course}
% \begin{field}{\@course}
% Studiengang für den Titel sowie den Kopf der Aufgabenstellung, wird im Makro 
% \cs{@course} gespeichert.
%    \begin{macrocode}
\newcommand*\@course{}
\newrobustcmd*\course[1]{\gdef\@course{#1}\ignorespaces}
%    \end{macrocode}
% \end{field}^^A \@course
% \end{macro}^^A \course
% \begin{macro}{\discipline}
% \changes{v2.02}{2014/05/16}{neu, von \cs{branch} umbenannt}^^A
% \begin{field}{\@discipline}
% \changes{v2.02}{2014/05/16}{neu, von \cs{@branch} umbenannt}^^A
% Studienrichtung bzw. Fachrichtung für Titel und Kopf der Aufgabenstellung,
% wird im Makro \cs{@discipline} gespeichert.
%    \begin{macrocode}
\newcommand*\@discipline{}
\newrobustcmd*\discipline[1]{\gdef\@discipline{#1}\ignorespaces}
%    \end{macrocode}
% \end{field}^^A \@discipline
% \end{macro}^^A \discipline
%
% \iffalse
%<*book|report|article>
% \fi
%
% \begin{macro}{\matriculationnumber}
% \begin{field}{\@matriculationnumber}
% Die Matrikelnummer für Titelseite und Aufgabenstellung, wird in 
% \cs{@matriculationid} gespeichert.
%    \begin{macrocode}
\newcommand*\@matriculationnumber{}
\newrobustcmd*\matriculationnumber[1]{%
  \gdef\@matriculationnumber{#1}\ignorespaces%
}
%    \end{macrocode}
% \end{field}^^A \@matriculationnumber
% \end{macro}^^A \matriculationnumber
% \begin{macro}{\matriculationyear}
% \begin{field}{\@matriculationyear}
% Das Immatrikulationsjahr für den Titel wird in \cs{@matriculationyear}
% gespeichert.
%    \begin{macrocode}
\newcommand*\@matriculationyear{}
\newrobustcmd*\matriculationyear[1]{\gdef\@matriculationyear{#1}\ignorespaces}
%    \end{macrocode}
% \end{field}^^A \@matriculationyear
% \end{macro}^^A \matriculationyear
% \begin{macro}{\placeofbirth}
% \begin{field}{\@placeofbirth}
% Der Geburtsort für den Titel wird in \cs{@placeofbirth} gespeichert.
%    \begin{macrocode}
\newcommand*\@placeofbirth{}
\newrobustcmd*\placeofbirth[1]{\gdef\@placeofbirth{#1}\ignorespaces}
%    \end{macrocode}
% \end{field}^^A \@placeofbirth
% \end{macro}^^A \placeofbirth
% \begin{macro}{\thesis}
% \begin{field}{\@thesis}
% \changes{v2.02}{2014/11/06}{\cs{protected@xdef} genutzt}^^A
% \begin{field}{\@@thesis}
% \changes{v2.02}{2014/11/06}{\cs{protected@xdef} genutzt}^^A
% \begin{macro}{\subject}
% \begin{field}{\@subject}
% \begin{macro}{\tud@thesis@do}
% \begin{macro}{\tud@thesis@@do}
% \begin{macro}{\tud@thanks}
% Art bzw. Typ der Abschlussarbeit kann \cs{thesis}\marg{Abschlussarbeit}
% angegeben werden und wird im Makro \cs{@thesis} gespeichert. Alternativ
% dazu kann auch der Befehl \cs{subject} verwendet werden. Mit dem Befehl
% \cs{tud@thesis@do} wird in den Feldern \cs{@thesis} respektive \cs{@subject} 
% nach bestimmten Schlagwörtern für Abschlussarbeiten o.\,ä. gesucht. Wird 
% eines dieser Wörter gefunden, wird der entsprechende Bezeichner für dieses
% Feld gesetzt. Zusätzlich wird durch \cs{tud@thesis@@do} dafür gesorgt, dass
% gegebenenfalls der Inhalt von \cs{@subject} in \cs{@thesis} verschoben und
% entsprechend die Option \opt{subjectthesis} gesetzt wird. In \cs{@@thesis}
% wird die angegebene Abschlussarbeit ohne etwaige Fußnoten gespeichert.
%    \begin{macrocode}
\newcommand*\@thesis{}
\newcommand*\@@thesis{}
\newcommand*\thesis[1]{\tud@thesis@do{thesis}{#1}}
\renewcommand*\subject[1]{\tud@thesis@do{subject}{#1}}
\newcommand*\tud@thanks{}
\newcommand*\tud@thesis@do[2]{%
  \begingroup%
%    \end{macrocode}
% Hier das gleiche wie an anderer Stelle auch schon. Der Inhalt einer eventuell
% vorhandenen Fußnote wird gesichert
%    \begin{macrocode}
    \global\let\tud@thanks\relax%
    \def\thanks##1{\gdef\tud@thanks{##1}}%
    \let\footnote\thanks%
    \sbox\z@{#2}%
    \let\thanks\@gobble%
    \let\footnote\@gobble%
    \tud@lowerstring{\@tempa}{#2}%
    \ifstr{#1}{thesis}{\protected@xdef\@@thesis{#2}}{}%
    \protected@edef\@tempa{%
      \endgroup%
      \def\noexpand\@tempa{\@tempa}%
    }%
  \@tempa%
  \ifstr{\@tempa}{diss}{\tud@thesis@@do{#1}{\dissertationname}}{%
  \ifstr{\@tempa}{doctoral}{\tud@thesis@@do{#1}{\dissertationname}}{%
  \ifstr{\@tempa}{phd}{\tud@thesis@@do{#1}{\dissertationname}}{%
  \ifstr{\@tempa}{diploma}{\tud@thesis@@do{#1}{\diplomathesisname}}{%
  \ifstr{\@tempa}{master}{\tud@thesis@@do{#1}{\masterthesisname}}{%
  \ifstr{\@tempa}{bachelor}{\tud@thesis@@do{#1}{\bachelorthesisname}}{%
  \ifstr{\@tempa}{student}{\tud@thesis@@do{#1}{\studentthesisname}}{%
  \ifstr{\@tempa}{evidence}{\tud@thesis@@do{#1}{\studentresearchname}}{%
  \ifstr{\@tempa}{project}{\tud@thesis@@do{#1}{\projectpapername}}{%
  \ifstr{\@tempa}{seminar}{\tud@thesis@@do{#1}{\seminarpapername}}{%
  \ifstr{\@tempa}{term}{\tud@thesis@@do{#1}{\termpapername}}{%
  \ifstr{\@tempa}{research}{\tud@thesis@@do{#1}{\researchname}}{%
  \ifstr{\@tempa}{log}{\tud@thesis@@do{#1}{\logname}}{%
  \ifstr{\@tempa}{report}{\tud@thesis@@do{#1}{\reportname}}{%
  \ifstr{\@tempa}{internship}{\tud@thesis@@do{#1}{\internshipname}}{%
    \csdef{@#1}{#2}%
  }}}}}}}}}}}}}}}%
}
\newcommand*\tud@thesis@@do[2]{%
  \ifstr{#1}{subject}{%
    \ifx\@thesis\@empty\else%
      \ClassWarning{\TUD@Class@Name}{%
        Field `thesis' is overwritten by `subject'%
      }%
    \fi%
    \TUD@key@preset{subjectthesis}{true}%
  }{%
    \TUD@key@preset{subjectthesis}{false}%
  }%
  \ifx\tud@thanks\relax%
    \gdef\@thesis{#2}%
  \else%
    \protected@xdef\@thesis{\noexpand#2\noexpand\thanks{\tud@thanks}}%
  \fi%
  \protected@xdef\@@thesis{\trim@spaces{#2}}%
}
%    \end{macrocode}
% \end{macro}^^A \tud@thanks
% \end{macro}^^A \tud@thesis@@do
% \end{macro}^^A \tud@thesis@do
% \end{field}^^A \@subject
% \end{macro}^^A \subject
% \end{field}^^A \@@thesis
% \end{field}^^A \@thesis
% \end{macro}^^A \thesis
% \begin{macro}{\graduation}
% \changes{v2.02}{2014/05/16}{neu, von \cs{degree} umbenannt}^^A
% \begin{field}{\@graduation}
% \changes{v2.02}{2014/05/16}{neu, von \cs{@degree} umbenannt}^^A
% \begin{field}{\@graduationabbreviation}
% \changes{v2.02}{2014/05/16}{neu, \cs{@degreeabbr} umbenannt}^^A
% Der angestrebte Abschluss bzw. der zu erwerbende akademische Grad, welcher
% auf der Titelseite ausgegeben werden soll, wird im Makro \cs{@graduation}
% gespeichert. Zusätzlich kann als optionales Argument die Kurzform des
% akademischen Grades angegeben werden, wird in \cs{@graduationabbr} 
% gespeichert.
%    \begin{macrocode}
\newcommand*\@graduation{}
\newcommand*\@graduationabbreviation{}
\newcommand*\graduation[2][]{%
  \gdef\@graduationabbreviation{}%
  \ifxblank{#1}{}{\gdef\@graduationabbreviation{(#1)}}%
  \gdef\@graduation{#2}%
}
%    \end{macrocode}
% \end{field}^^A \@graduationabbreviation
% \end{field}^^A \@graduation
% \end{macro}^^A \graduation
%
% \iffalse
%</book|report|article>
% \fi
%
% \begin{macro}{\professor}
% \begin{field}{\@professor}
% \begin{field}{\@professorfoot}
% \changes{v2.05}{2015/07/06}{neu}^^A
% Angabe des verantwortlichen Hochschullehrers für Titel und Aufgabenstellung,
% wird im Makro \cs{@professor} gespeichert.
%    \begin{macrocode}
%<*book|report|article>
\newcommand*\@professor{}
\newcommand*\professor[1]{\gdef\@professor{#1}}
%</book|report|article>
%<*poster>
\newcommand*\@professorfoot{}
\newcommand*\professor[1]{\gdef\@professorfoot{#1}}
%</poster>
%    \end{macrocode}
% \end{field}^^A \@professorfoot
% \end{field}^^A \@professor
% \end{macro}^^A \professor
% \begin{macro}{\supervisor}
% \changes{v2.02}{2014/05/16}{erzeugter Eintrag der Betreuer mit
%   \cs{supervisor} für Selbstständigkeitserklärung verworfen}^^A
% \begin{field}{\@supervisor}
% (Erst- und Zweit"~)Betreuer bei Abschlussarbeiten, wird in \cs{@supervisor}
% gespeichert. Mehrere Betreuer werden durch \cs{and} getrennt. Für Poster kann 
% der Befehl als Äquivalent zu \cs{contactperson} genutzt werden.
%    \begin{macrocode}
%<*book|report|article>
\newcommand*\@supervisor{}
\newcommand*\supervisor[1]{\gdef\@supervisor{#1}}
%</book|report|article>
%<*poster>
\newcommand*\supervisor[1]{}
%</poster>
%    \end{macrocode}
% \end{field}^^A \@supervisor
% \end{macro}^^A \supervisor
%
% \iffalse
%<*book|report|article>
% \fi
%
% \begin{macro}{\supporter}
% \changes{v2.02}{2014/05/16}{erzeugter Eintrag der Betreuer mit
%   \cs{supervisor} für Selbstständigkeitserklärung verworfen}^^A
% \begin{field}{\@supporter}
% Diese Feld ist für die Hilfesteller bei der Anfertigung der Abschlussarbeit,
% welche auf der Selbstständigkeitserklärung aufgeführt werden. Mehrere 
% Hilfesteller werden durch \cs{and} voneinander getrennt.
%    \begin{macrocode}
\newcommand*\@supporter{}
\newcommand*\supporter[1]{\gdef\@supporter{#1}}
%    \end{macrocode}
% \end{field}^^A \@supporter
% \end{macro}^^A \supporter
% \begin{macro}{\company}
% \begin{field}{\@company}
% Angabe einer externen Firma, wird im Makro \cs{@company} gespeichert.
%    \begin{macrocode}
\newcommand*\@company{}
\newcommand*\company[1]{\gdef\@company{#1}}
%    \end{macrocode}
% \end{field}^^A \@company
% \end{macro}^^A \company
% \begin{macro}{\referee}
% \begin{field}{\@referee}
% Gutachter bei einer Dissertation, werden im Makro \cs{@referee} gespeichert.
% Mehrere Gutachter werden durch \cs{and} getrennt.
%    \begin{macrocode}
\newcommand*\@referee{}
\newcommand*\referee[1]{\gdef\@referee{#1}}
%    \end{macrocode}
% \end{field}^^A \@referee
% \end{macro}^^A \referee
% \begin{macro}{\advisor}
% \begin{field}{\@advisor}
% Fachreferenten bei einer Dissertation, werden im Makro \cs{@advisor}
% gespeichert. Mehrere Fachreferenten werden durch \cs{and} getrennt.
%    \begin{macrocode}
\newcommand*\@advisor{}
\newcommand*\advisor[1]{\gdef\@advisor{#1}}
%    \end{macrocode}
% \end{field}^^A \@advisor
% \end{macro}^^A \advisor
% \begin{length}{\tud@len@signatureskip}
% \changes{v2.04}{2015/05/06}{neu}^^A
% Für alle Formatvorlagen, welche eine Unterschriftenzeile bereitstellen, wird 
% ein einheitlicher Abstand verwendet.
%    \begin{macrocode}
\newlength\tud@len@signatureskip
\setlength\tud@len@signatureskip{8ex plus 6ex minus 6ex}
%    \end{macrocode}
% \end{length}^^A \tud@len@signatureskip
% \begin{macro}{\confirmationclosing}
% \begin{field}{\@confirmationclosing}
% Als Abschluss der Selbstständigkeitserklärung für Ort und Unterschrift.
%    \begin{macrocode}
\newcommand*\@confirmationclosing{%
  \tud@date@check%
  \ifx\@date\@empty\else%
    \medskip\noindent%
    \ifx\@place\@empty\else\@place,\nobreakspace\fi\@date%
  \fi%
  \vskip\tud@len@signatureskip\noindent%
  \begingroup%
    \let\and\hfil%
    \@@author\hfil%
  \endgroup%
}
\newcommand*\confirmationclosing[1]{\gdef\@confirmationclosing{#1}}
%    \end{macrocode}
% \end{field}^^A \@confirmationclosing
% \end{macro}^^A \confirmationclosing
% \begin{macro}{\place}
% \begin{field}{\@place}
% Die Angabe des Ortes mit \cs{place} für die Selbstständigkeitserklärung und 
% ggf. das Datum wird im Makro \cs{@place} gespeichert und standardmäßig mit
% \enquote{Dresden} gesetzt.
%    \begin{macrocode}
\newcommand*\@place{Dresden}
\newcommand*\place[1]{\gdef\@place{#1}}
%    \end{macrocode}
% \end{field}^^A \@place
% \end{macro}^^A \place
%
% \iffalse
%</book|report|article>
% \fi
%
% \begin{macro}{\publisher}
% Kleine Korrektur für \KOMAScript, der Befehl sollte im Singular stehen.
%    \begin{macrocode}
\providecommand*\publisher[1]{\publishers{#1}}
%    \end{macrocode}
% \end{macro}^^A \publisher
%
% \iffalse
%<*poster>
% \fi
%
% \begin{macro}{\webpage}
% \changes{v2.05}{2015/07/06}{neu}^^A
% \begin{field}{\@webpage}
% \changes{v2.05}{2015/07/06}{neu}^^A
% \begin{macro}{\tud@webpage@simple}
% \changes{v2.05}{2016/07/09}{neu}^^A
% \begin{macro}{\tud@webpage@hyper}
% \changes{v2.05}{2016/07/09}{neu}^^A
% Im Fußbereich eines Posters kann zusätzlich eine Web-Seite angegeben werden.
%    \begin{macrocode}
\newcommand*\@webpage{}
\newrobustcmd*\webpage{%
  \kernel@ifstar{\tud@webpage@simple}{\tud@webpage@hyper}%
}
\newrobustcmd*\tud@webpage@simple[1]{\gdef\@webpage{#1}}
\newrobustcmd*\tud@webpage@hyper[2][]{\gdef\@webpage{#2}}
\AfterPackage{hyperref}{%
  \renewrobustcmd*\tud@webpage@hyper[2][hidelinks]{%
    \gdef\@webpage{%
      \begingroup%
        \urlstyle{same}%
        \hypersetup{#1}%
        \url{#2}%
      \endgroup%
    }%
  }%
}
%    \end{macrocode}
% \end{macro}^^A \tud@webpage@hyper
% \end{macro}^^A \tud@webpage@simple
% \end{field}^^A \@webpage
% \end{macro}^^A \webpage
%
% \iffalse
%</poster>
% \fi
%
% \subsection{Datumsfelder für die \TUDScript-Klassen}
%
% \begin{macro}{\printdate}
% Im Folgenden werden mehrere Datumsfelder definiert. Damit diese optional
% durch eines der Pakete \pkg{isodate} oder \pkg{datetime2} formatiert werden 
% können, wird der zu \pkg{isodate} gehörende Befehl \cs{printdate} in die
% Definition der eigentlichen Datumsfelder integriert. Sollte das Paket nicht
% geladen sein, so verwendet der Befehl die Schnittstelle von \pkg{datetime2},
% welches nur ein spezielles Datenformat als Eingabe akzeptiert. Wird keines 
% der beiden Pakete verwendet, wird das Argument direkt durchgereicht.
%    \begin{macrocode}
\TUD@UnwindPackage{isodate}{%
  \@ifpackageloaded{datetime2}{%
    \providecommand*\printdate[1]{\DTMDate{#1}}%
  }{%
    \providecommand*\printdate[1]{#1}%
  }%
}
%    \end{macrocode}
% \end{macro}^^A \printdate
% \begin{macro}{\tud@printdate}
% Damit die Datumsfelder definiert werden können und eines der Datumspakete
% unterstützen, muss beim Festlegen der Datumsfelder einiges beachtet werden.
% So müssen beispielsweise leere Argumente und Sonderfälle separat betrachtet
% werden. Damit dies einheitlich für alle Felder geschehen kann, wird dieser
% Befehl genutzt. Dabei wird als erstes Argument der Befehlsname für das
% Datumsfeld übergeben, als zweites Argument der gewünschte Inhalt.
%    \begin{macrocode}
\newcommand*\tud@printdate[2]{%
  \ifx\today#2\relax%
    \gdef#1{#2}%
  \else%
    \ifxblank{#2}%
      {\gdef#1{}}%
      {\gdef#1{\printdate{#2}}}%
  \fi%
}
%    \end{macrocode}
% \end{macro}^^A \tud@printdate
% \begin{macro}{\tud@date@check}
% \changes{v2.04}{2015/05/06}{neu}^^A
% Das Makro prüft vor der Nutzung des Datumfeldes \cs{@date}, ob selbiges
% explizit angegeben wurde. Falls dies nicht der Fall ist, wird eine Warnung
% ausgegeben.
%    \begin{macrocode}
\newcommand*\tud@date@check{%
  \ifdefvoid{\@duedate}{%
    \ClassWarning{\TUD@Class@Name}{%
      `\string\date' was not given\MessageBreak%
      Since a thesis is a self-contained work, an end\MessageBreak%
      date should be specified by the author. \MessageBreak%
      Nevertheless, today's date is used%
    }%
  }{%
    \ClassWarning{\TUD@Class@Name}{%
      `\string\date' was not given\MessageBreak%
      It's substituted by the given due date%
    }%
    \global\let\@date\@duedate%
  }%
  \global\let\tud@date@check\relax%
}
%    \end{macrocode}
% \end{macro}^^A \tud@date@check
% \begin{macro}{\date}
% \begin{parameter}{before}
% \changes{v2.05}{2016/05/27}{neu}^^A
% \begin{parameter}{after}
% \changes{v2.05}{2016/05/27}{neu}^^A
% \begin{parameter}{prefix}
% \changes{v2.05}{2016/05/27}{neu}^^A
% \begin{parameter}{suffix}
% \changes{v2.05}{2016/05/27}{neu}^^A
% \begin{parameter}{pre}
% \changes{v2.05}{2016/05/27}{neu}^^A
% \begin{parameter}{app}
% \changes{v2.05}{2016/05/27}{neu}^^A
% \begin{parameter}{place}
% \changes{v2.05}{2016/05/27}{neu}^^A
% \begin{macro}{\tud@date@set}
% \changes{v2.05}{2016/05/27}{neu}^^A
% \changes{v2.06}{2018/08/08}{optionales Argument nutzt \cs{tud@toks@}}^^A
% \begin{field}{\@date}
% \begin{field}{\@beforedate}
% \changes{v2.05}{2016/05/27}{neu}^^A
% \begin{field}{\@afterdate}
% \changes{v2.05}{2016/05/27}{neu}^^A
% Das Abgabedatum der Arbeit für den Titel, wird im originalen Makro \cs{@date}
% gespeichert. Zusätzlich kann über die Parameter im optionalen Argument eine 
% Ergänzung davorgesetzt angehängt werden~-- beispielsweise als Erklärung für
% eine verspätete Abgabe aufgrund einer Verlängerung der Bearbeitungszeit~--
% welche in den Feldern \cs{@beforedate} und \cs{@afterdate} gespeichert
% wird. Hierfür wird der originale Befehl für das Datum \cs{date} erweitert, 
% wobei die Sternversion \cs{date*} den angegebenen Ort als Präfix verwendet.
%    \begin{macrocode}
\renewcommand*\date{%
  \kernel@ifstar{%
    \TUD@parameter@set{date}{pre=\noexpand\@place{,}}%
    \tud@date@set%
  }{\tud@date@set}%
}
\newcommand*\tud@date@set[2][]{%
  \tud@toks@{#1}%
  \TUD@parameter@set{date}{\the\tud@toks@}%
  \tud@printdate{\@date}{#2}%
  \global\let\tud@date@check\relax%
}
\newcommand*\@beforedate{}
\newcommand*\@afterdate{}
\TUD@parameter@family{date}{%
  \TUD@parameter@def{before}{\def\@beforedate{#1}}%
  \TUD@parameter@let{pre}{before}%
  \TUD@parameter@let{prefix}{before}%
  \TUD@parameter@def{after}{\def\@afterdate{#1}}%
  \TUD@parameter@let{app}{after}%
  \TUD@parameter@let{suffix}{after}%
  \TUD@parameter@def{place}{\def\@place{#1}\def\@beforedate{#1,}}%
  \TUD@parameter@handler@value{after}%
}
%    \end{macrocode}
% \end{field}^^A \@afterdate
% \end{field}^^A \@beforedate
% \end{field}^^A \@date
% \end{macro}^^A \tud@date@set
% \end{parameter}^^A place
% \end{parameter}^^A app
% \end{parameter}^^A pre
% \end{parameter}^^A suffix
% \end{parameter}^^A prefix
% \end{parameter}^^A after
% \end{parameter}^^A before
% \end{macro}^^A \date
% \begin{macro}{\tud@date@print}
% \changes{v2.05}{2016/05/27}{neu}^^A
% Mit diesem Makro erfolgt die eigentliche Ausgabe des Datums und ggf. der 
% optionalen Ergänzungen.
%    \begin{macrocode}
\newcommand*\tud@date@print{%
  \ifx\@date\@empty\else%
    \ifx\@beforedate\@empty\else%
      \expandafter\trim@spaces@noexp\expandafter{\@beforedate}\nobreakspace%
    \fi%
    \@date%
    \ifx\@afterdate\@empty\else%
      \nobreakspace\expandafter\trim@spaces@noexp\expandafter{\@afterdate}%
    \fi%
  \fi%
}
%    \end{macrocode}
% \end{macro}^^A \tud@date@print
%
% \iffalse
%<*book|report|article>
% \fi
%
% \begin{macro}{\defensedate}
% \begin{field}{\@defensedate}
% Das Verteidigungsdatum erscheint auf dem Titel und wird in \cs{@defensedate}
% gespeichert.
%    \begin{macrocode}
\newcommand*\@defensedate{}
\newcommand*\defensedate[1]{\tud@printdate{\@defensedate}{#1}}
%    \end{macrocode}
% \end{field}^^A \@defensedate
% \end{macro}^^A \defensedate
% \begin{macro}{\dateofbirth}
% \begin{field}{\@dateofbirth}
% Angabe des Geburtstages für die Titelseite, wird im Makro \cs{@dateofbirth}
% gespeichert.
%    \begin{macrocode}
\newcommand*\@dateofbirth{}
\newrobustcmd*\dateofbirth[1]{%
  \tud@printdate{\@dateofbirth}{#1}\ignorespaces%
}
%    \end{macrocode}
% \end{field}^^A \@dateofbirth
% \end{macro}^^A \dateofbirth
%
% \iffalse
%</book|report|article>
%</class&!manual>
%<*package&supervisor|class&manual>
% \fi
%
% \subsection{%
%   Felder für die Klasse \cls{tudscrposter}%
%   und das Paket \pkg{tudscrsupervisor}%
% }
%
% Die Klasse \cls{tudscrposter} und das Paket \pkg{tudscrsupervisor} stellen 
% einige weitere Felder bereit bzw. erweitern deren Funktionalitäten.
%
% \begin{macro}{\chairman}
% \begin{field}{\@chairman}
% Die Angabe des Prüfungsausschussvorsitzenden für die Aufgabenstellung, wird 
% im Makro \cs{@chairman} gespeichert.
%    \begin{macrocode}
\newcommand*\@chairman{}
\newcommand*\chairman[1]{\gdef\@chairman{#1}}
%    \end{macrocode}
% \end{field}^^A \@chairman
% \end{macro}^^A \chairman
% \begin{macro}{\grade}
% \begin{field}{\@grade}
% \begin{field}{\@headline}
% Die Befehle dienen zum Abspeichern der entsprechenden Parameter innerhalb
% der neu definierten Umgebungen aus dem Paket \pkg{tudscrsupervisor}.
%    \begin{macrocode}
\newcommand*\@grade{}
\newcommand*\grade[1]{\gdef\@grade{#1}}
\newcommand*\@headline{}
%    \end{macrocode}
% \end{field}^^A \@headline
% \end{field}^^A \@grade
% \end{macro}^^A \grade
% \begin{macro}{\issuedate}
% \begin{field}{\@issuedate}
% Angabe des Anfangsdatums für die Aufgabenstellung, wird im Makro
% \cs{@issuedate} gespeichert.
%    \begin{macrocode}
\newcommand*\@issuedate{}
\newcommand*\issuedate[1]{\tud@printdate{\@issuedate}{#1}}
%    \end{macrocode}
% \end{field}^^A \@issuedate
% \end{macro}^^A \issuedate
% \begin{macro}{\duedate}
% \begin{field}{\@duedate}
% Angabe des geplanten Abgabedatums für die Aufgabenstellung, wird im Makro
% \cs{@duedate} gespeichert.
%    \begin{macrocode}
\newcommand*\@duedate{}
\newcommand*\duedate[1]{\tud@printdate{\@duedate}{#1}}
%    \end{macrocode}
% \end{field}^^A \@duedate
% \end{macro}^^A \duedate
%
% \iffalse
%</package&supervisor|class&manual>
%<*class&poster|package&supervisor|class&manual>
% \fi
%
% Einige Befehle werden nur definiert, falls das Paket nicht mit der Klasse
% \cls{tudscrposter} verwendet wird -- was allerdings nicht sinnvoll ist.
%    \begin{macrocode}
%<*supervisor>
\@ifclassloaded{tudscrposter}{\@tempswafalse}{\@tempswatrue}
\if@tempswa
%</supervisor>
%    \end{macrocode}
% \begin{macro}{\contactperson}
% \changes{v2.02}{2014/05/16}{neu, Makro \cs{contact} umbenannt}^^A
% \begin{field}{\@contactperson}
% \changes{v2.02}{2014/05/16}{neu, Makro \cs{@contact} umbenannt}^^A
% \begin{macro}{\office}
% \begin{field}{\@office}
% \begin{macro}{\telephone}
% \changes{v2.02}{2014/05/16}{neu, Umbenennung des Makros \cs{phone}}^^A
% \begin{field}{\@telephone}
% \changes{v2.02}{2014/05/16}{neu, Umbenennung des Makros \cs{@phone}}^^A
% \begin{macro}{\telefax}
% \changes{v2.05}{2016/04/05}{neu}^^A
% \begin{field}{\@telefax}
% \changes{v2.05}{2016/04/05}{neu}^^A
% Für einen Aushang bzw. ein Poster kann eine oder mehrere Kontaktpersonen 
% angegeben werden. Zusätzlich lassen sich für jede einzelne Person ein Raum,
% eine Telefonnummer und die E"~Mail-Adresse hinzugefügen.
%    \begin{macrocode}
\newcommand*\@contactperson{}
\newcommand*\contactperson[1]{\gdef\@contactperson{#1}}
%<*poster>
\let\supervisor\contactperson
%</poster>
\newcommand*\@office{}
\newrobustcmd*\office[1]{\gdef\@office{#1}}
\newcommand*\@telephone{}
\newrobustcmd*\telephone[1]{\gdef\@telephone{#1}}
\newcommand*\@telefax{}
\newrobustcmd*\telefax[1]{\gdef\@telefax{#1}}
%    \end{macrocode}
% \end{field}^^A \@telefax
% \end{macro}^^A \telefax
% \end{field}^^A \@telephone
% \end{macro}^^A \telephone
% \end{field}^^A \@office
% \end{macro}^^A \office
% \end{field}^^A \@contactperson
% \end{macro}^^A \contactperson
%
% \iffalse
%</class&poster|package&supervisor|class&manual>
%<*!manual>
%<*class>
% \fi
%
% \subsection{Verarbeitung bestimmter Feldinhalte für die Ausgabe}
%
% Einige Felder sind darauf ausgelegt, dass deren kommagetrennte Inhalte 
% einzeln abgearbeitet und ausgewertet werden können. Die folgenden Makros 
% übernehmen diese Aufgabe.
% \begin{macro}{\tud@multiple@split}
% \begin{macro}{\tud@multiple@@split}
% \begin{macro}{\tud@multiple@@@split}
% Für Felder, die mehrere Personen~-- getrennt durch \cs{and}~-- beinhalten
% können und für die zusätzliche Angaben durch die Verwendung weiterer Makros 
% innerhalb des Feldbefehlargumentes möglich sind, werden diese Befehle zum 
% Aufteilen der Angaben bereitgestellt. Mit diesen wird es möglich, die durch
% \cs{and} getrennten Teile separat auszuwerten. Für diese Unterfangen wird der
% Befehl \cs{tud@multiple@@split} definiert. Dessen obligatorisches Argument 
% ist dabei das Feld mit dem auszuwertenden Inhalt.
%
% Dafür müssen für jedes so auszuwertende Feld zum einen zum Zeitpunkt der 
% Ausgabe das entsprechende Makro \cs{tud@split\meta{Feld}} und zum anderen 
% eine Liste der auszuwertenden lokalen Angaben \cs{tud@split\meta{Feld}@list} 
% definiert sein. Momentan werden die beiden Felder \cs{@author} und~-- für die 
% Klasse \cls{tudscrposter} sowie das Paket Pakete \pkg{tudscrsupervisor}~--
% \cs{@contactperson} zur Angabe zusätzlicher Informationen unterstützt.
%    \begin{macrocode}
\newcommand*\tud@multiple@@split{}
\newcommand*\tud@multiple@split[1]{%
%    \end{macrocode}
% Sollte ein Feld verwendet werden, welches initial eine Fehlermeldung enthält, 
% so die vorhandene Warnung ausgegeben und danach das Feld als leer definiert.
%    \begin{macrocode}
  \expandafter\ifpatchable\expandafter{\csname#1\endcsname}{%
    \@latex@warning@no@line%
  }{%
    \csuse{#1}\csgdef{#1}{}%
  }{}%
%    \end{macrocode}
% Das Makro \cs{tud@multiple@@split} wird so definiert, dass der Befehl 
% \cs{and} als Separator für die einzelnen Argumente dient. Mit den beiden
% freigestellten Argumenten kann das Makro zur eigentlichen Ausgabe aufgerufen
% werden, welches aus dem obligatorischen Argument |#1| konstruiert wird 
% (\cs{tud@split\meta{Feld}}). An dieses wird der jeweils aktuelle Autor 
% im ersten Argument und die restlichen im zweiten Argument übergeben.
%    \begin{macrocode}
  \def\tud@multiple@@split##1\and##2\relax{%
    \expandafter\csname tud@split#1@do\endcsname{##1}{##2}%
  }%
  \begingroup%
    \let\and\relax%
    \let\newline\@empty%
    \let\\\@empty%
%    \end{macrocode}
% Das Feld wird mit \cs{and} terminiert, um der Definition von
% \cs{tud@multiple@@split} in jedem Fall zu entsprechen.
%    \begin{macrocode}
    \edef\@tempa{\csname#1\endcsname\and}%
  \expandafter\endgroup%
  \expandafter\tud@multiple@@split\@tempa\relax%
}
%    \end{macrocode}
% Der Befehl \cs{tud@multiple@@@split} prüft zum Schluss, ob noch weitere
% Autoren angegeben sind. Sollte dies der Fall sein, so wird der Inhalt des
% zweiten Argumentes ausgeführt und \cs{tud@multiple@@split} ein weiteres Mal
% aufgerufen, um so sequentiell alle Autoren abzuarbeiten. Dafür muss 
% \cs{tud@multiple@@@split} innerhalb des verarbeitenden Makro
% (\cs{tud@split\meta{Feld}}) aufgerufen werden.
%    \begin{macrocode}
\newcommand*\tud@multiple@@@split[2]{%
  \ifx\relax#1\relax%
    \let\@tempb\relax%
  \else%
    \def\@tempb{#2\tud@multiple@@split#1\relax}%
  \fi%
  \@tempb%
}
%    \end{macrocode}
% \end{macro}^^A \tud@multiple@@@split
% \end{macro}^^A \tud@multiple@@split
% \end{macro}^^A \tud@multiple@split
% \begin{macro}{\tud@multiple@fields@store}
% \changes{v2.04}{2015/05/12}{neu}^^A
% \begin{macro}{\tud@multiple@fields@restore}
% \changes{v2.04}{2015/05/12}{neu}^^A
% Mit \cs{tud@multiple@fields@store} und \cs{tud@multiple@fields@restore} 
% werden Hilfsmakros definiert, um einzelne Feldinhalte lokal ändern und nach
% der Verarbeitung auf den ursprünglichen Wert zurücksetzen zu können.
%
% Nach der Sicherung der globalen Feldinhalte wird der übergebene Teilinhalt
% des zweiten Argumentes mit \cs{sbox}\cs{z@}\marg{\#2} in eine Box expandiert.
% Der Teilinhalt entspricht dabei dem aktuellen Teil des Feldes vor dem
% nächsten \cs{and}. Damit werden die ggf. angegebenen lokalen Felder gesetzt,
% welche in \cs{tud@split\meta{Feld}@list} aufgelistet sind ohne eine Ausgabe
% zu erzeugen. 
%    \begin{macrocode}
\newcommand*\tud@multiple@fields@store[2]{%
  \def\@tempa##1{\ifcsdef{@##1}{\tud@cs@store{@##1}}{}}%
  \letcs\@tempb{tud@split#1@list}%
  \let\and\relax%
  \expandafter\forcsvlist\expandafter\@tempa\expandafter{\@tempb}%
  \begingroup%
    \let\thanks\@gobble%
    \let\footnote\@gobble%
    \sbox\z@{#2}%
  \endgroup%
}
%    \end{macrocode}
% Nach dem Verarbeiten und der Ausgabe der lokalen Felder werden die zuvor 
% bestehenden Feldwerte zurückgesetzt.
%    \begin{macrocode}
\newcommand*\tud@multiple@fields@restore[1]{%
  \def\@tempa##1{%
    \ifcsdef{@##1}{%
      \tud@cs@restore{@##1}%
      \global\csletcs{@##1}{@##1}%
    }{}%
  }%
  \letcs\@tempb{tud@split#1@list}%
  \let\and\relax%
  \expandafter\forcsvlist\expandafter\@tempa\expandafter{\@tempb}%
}
%    \end{macrocode}
% \end{macro}^^A \tud@multiple@fields@restore
% \end{macro}^^A \tud@multiple@fields@store
% \begin{macro}{\tud@multiple@fields@preset}
% \changes{v2.04}{2015/05/12}{neu}^^A
% Mit diesem Makro wird es möglich, die Inhalte bestimmter Felder aus einer 
% definierten Liste \cs{tud@split\meta{Feld}@list} auf Standardwerte zu setzen.
%    \begin{macrocode}
\newcommand*\tud@multiple@fields@preset[3]{%
  \def\@tempa##1{%
    \edef\@tempc{\csuse{##1}}%
    \ifstr{#2}{*}{%
      \csdef{@##1}{}%
    }{%
      \begingroup%
        \protected@expandtwoargs\in@{\@tempc}{\csuse{#1}}%
        \ifin@%
          \ifcsvoid{@##1}{\@tempc{#2}}{}%
        \fi%
      \endgroup%
    }%
  }%
  \letcs\@tempb{tud@split#1@list}%
  \let\and\relax%
  \expandafter\forcsvlist\expandafter\@tempa\expandafter{\@tempb}%
  \begingroup%
    \let\thanks\@gobble%
    \let\footnote\@gobble%
    \sbox\z@{#3}%
  \endgroup%
}
%    \end{macrocode}
% \end{macro}^^A \tud@multiple@fields@preset
%
% \iffalse
%</class>
% \fi
%
% Auf der Titelseite sowie für die Aufgabenstellung (\pkg{tudscrsupervisor})
% und  den Seitenfuß von Postern (\cls{tudscrposter}) wird die Angabe einer
% kollaborativen Autorenschaft ermöglicht, wo für jeden einzelnen Autor weitere
% Angaben (Matrikelnummer etc.) gemacht werden können. Hierfür werden die 
% folgenden Makros bereitgestellt.
% \begin{macro}{\tud@split@author@do}
% \changes{v2.02}{2014/07/25}{neu, aus Umbenennung \cs{tud@split@@author}}^^A
% \begin{macro}{\tud@split@author@list}
% \changes{v2.02}{2014/07/25}{neu, Umbenennung \cs{tud@split@@author@list}}^^A
% \begin{macro}{\tud@split@contactperson@do}
% \changes{v2.05}{2015/07/06}{neu}^^A
% \begin{macro}{\tud@split@contactperson@list}
% \changes{v2.05}{2015/07/06}{neu}^^A
% Die beiden Makros \cs{tud@split@author@do} und \cs{tud@split@contactperson@do}
% werden zunächst jeweils als Dummy initialisiert und an den entsprechenden
% Stellen umdefiniert. Dies betrifft den Titel, die Aufgabenstellung und den 
% Aushang in den Umgebungen \env{task} und \env{notice} sowie den Seitenfuß bei
% Postern. Im Makro \cs{tud@split@author@list} werden alle Felder hinterlegt,
% die durch \cs{tud@multiple@fields@\dots} geprüft und ggf. initialisiert
% werden sollen. 
%
% Für die Angabe mehrerer Kontaktpersonen im Posterfuß (\cls{tudscrposter})
% oder auf einem Aushang (\pkg{tudscrsupervisor}) wird äquivalent verfahren.
%    \begin{macrocode}
%<*class>
\newcommand*\tud@split@author@do[2]{}
%<*book|report|article>
\newcommand*\tud@split@author@list{%
  authormore,course,discipline,emailaddress,%
  matriculationyear,enrolmentyear,%
  matriculationnumber,studentid,matriculationid,%
  placeofbirth,birthplace,dateofbirth,birthday,%
}
%</book|report|article>
%    \end{macrocode}
% Der Befehl \cs{tud@split@author@list} für die Klasse \cls{tudscrposter}.
%    \begin{macrocode}
%<*poster>
\newcommand*\tud@split@author@list{%
  authormore,course,discipline,emailaddress,office,telephone,telefax%
}
%</poster>
%</class>
%<*class&poster|package&supervisor>
\newcommand*\tud@split@contactperson@do[2]{}
\newcommand*\tud@split@contactperson@list{emailaddress,office,telephone,telefax}
%</class&poster|package&supervisor>
%    \end{macrocode}
% Damit ist der Teil für das Paket \pkg{tudscrsupervisor} abgeschlossen, wo 
% bei der Verwendung von \cls{tudscrposter} die vorhergenden Befehle nicht 
% definiert werden, beendet.
%    \begin{macrocode}
%<*package&supervisor>
\fi
%</package&supervisor>
%    \end{macrocode}
% \end{macro}^^A \tud@split@contactperson@list
% \end{macro}^^A \tud@split@contactperson@do
% \end{macro}^^A \tud@split@author@list
% \end{macro}^^A \tud@split@author@do
%
% \iffalse
%</!manual>
% \fi
%
% \Finale
%
\endinput
