<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">% \iffalse meta-comment
%/GitFileInfo=tudscr-frontmatter.dtx
%
%  TUD-Script -- Corporate Design of Technische UniversitÃ¤t Dresden
% ----------------------------------------------------------------------------
%
%  Copyright (C) Falk Hanisch &lt;hanisch.latex@outlook.com&gt;, 2012-2022
%
% ----------------------------------------------------------------------------
%
%  This work may be distributed and/or modified under the conditions of the
%  LaTeX Project Public License, either version 1.3c of this license or
%  any later version. The latest version of this license is in
%    http://www.latex-project.org/lppl.txt
%  and version 1.3c or later is part of all distributions of
%  LaTeX version 2008-05-04 or later.
%
%  This work has the LPPL maintenance status "maintained".
%
%  The current maintainer and author of this work is Falk Hanisch.
%
% ----------------------------------------------------------------------------
%
% \fi
%
% \iffalse ins:batch + dtx:driver
%&lt;*ins&gt;
\ifx\documentclass\undefined
  \input docstrip.tex
  \ifToplevel{\batchinput{tudscr.ins}}
\else
  \let\endbatchfile\relax
\fi
\endbatchfile
%&lt;/ins&gt;
%&lt;*dtx&gt;
\ProvidesFile{tudscr-frontmatter.dtx}[2022/08/09]
\RequirePackage{tudscr-gitinfo}
\documentclass[english,ngerman,xindy]{tudscrdoc}
\iftutex
  \usepackage{fontspec}
\else
  \usepackage[T1]{fontenc}
  \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
\fi
\usepackage{babel}
\usepackage{tudscrfonts}
\usepackage[babel]{microtype}

\GitHubBase{\TUDScriptRepository}
\begin{document}
  \author{Falk Hanisch\TUDScriptContactTitle}
  \maketitle
  \tableofcontents
  \DocInput{\filename}
\end{document}
%&lt;/dtx&gt;
% \fi
%
% \selectlanguage{ngerman}
%
% \changes{v2.02}{2014/07/08}{\cs{FamilyKeyState} wird von Optionen genutzt}^^A
% \changes{v2.05}{2015/07/07}{Umgebung \env{abstract} fÃ¼r Poster}^^A
%
%
%
% \section{Befehle und Umgebungen fÃ¼r den Vorspann}
%
% Im Vorspann des Dokumentes kann der Benutzer eine Zusammenfassung oder auch 
% Kurzfassung angegeben. Des Weiteren kann eine SelbststÃ¤ndigkeitserklÃ¤rung
% sowie ein Sperrvermerk hinzugefÃ¼gt werden. Damit sich fÃ¼r diese das Layout
% mÃ¶glichst individuell wÃ¤hlen lÃ¤sst, werden hier entsprechende Optionen und
% die dafÃ¼r notwendige Ausgabe definiert. Im weiteren Verlauf der Dokumentation
% werden die Begriffe \enquote*{Zusammenfassung}, \enquote*{Kurzfassung} sowie
% \enquote*{ErklÃ¤rung} fÃ¼r die unterschiedlichen Elemente als gleichwertige 
% Synonyme verwendet. Die Schalter und Befehle zum Setzen der Optionen heiÃŸen
% entweder |\tud@abstract@...| oder |\tud@declaration@...| je nach Element.
%
% \iffalse
%&lt;*class&amp;body&gt;
% \fi
%
% \begin{macro}{\tud@fm@check}
% \changes{v2.02}{2014/07/18}{neu}^^A
% Mit diesem Befehl wird fÃ¼r den Fall, dass eine oder mehrerer ErklÃ¤rungen auf
% einer einzelnen Seite gesetzt werden sollen geprÃ¼ft, ob dies Ã¼berhaupt 
% mÃ¶glich ist. Sollte dies nicht der Fall sein, wird eine Warnung ausgegeben.
%    \begin{macrocode}
\newcommand*\tud@fm@check[2]{%
%    \end{macrocode}
% Das Makro \cs{tud@fm@set} wird zur erstmaligen Verwendung in jedem Fall auf
% die Definition von \cs{tud@fm@first} gesetzt.
%    \begin{macrocode}
%&lt;*book|report|article&gt;
  \global\let\tud@fm@set\tud@fm@first%
%    \end{macrocode}
% Danach erfolgt ggf. die PrÃ¼fung der resultierenden SeitenhÃ¶he.
%    \begin{macrocode}
  \ifnum\csuse{tud@#1@level@num}&lt;3\relax% false/true/section
    \ifboolexpr{%
      bool {@titlepage} and bool {@tud@#1@fil} and bool {@tud@#1@multi}%
    }{%
%    \end{macrocode}
% Das Erstellen von Outline-EintrÃ¤gen wird innerhalb der Box deaktiviert.
%    \begin{macrocode}
      \sbox\z@{%
        \renewcommand*\addtocentrydefault[3]{}%
        \vbox{#2}%
      }%
      \ifdim\textheight&lt;\dimexpr\ht\z@+\dp\z@\relax%
        \ClassWarning{\TUD@Class@Name}{%
          The given content within the `#1'\MessageBreak%
          environment is too large, so it wasn't possible\MessageBreak%
          to center the body vertically. Setting the option\MessageBreak%
          `#1=nofill' would be a solution. You\MessageBreak%
          could also use multiple `#1' environments%
        }%
        \boolfalse{@tud@#1@fil}%
      \fi%
    }{}%
%    \end{macrocode}
% Sollte die Gliederungsebene der ErklÃ¤rung einem Kapitel entsprechen, wird
% jede ErklÃ¤rung immer auf eine neue Seite gesetzt. Die Optionen zum vertikalen 
% Zentrieren wird ignoriert. Auf eine Warnung fÃ¼r den Anwender wird verzichtet.
%    \begin{macrocode}
  \else% chapter
%&lt;*book|report&gt;
    \boolfalse{@tud@#1@multi}%
    \boolfalse{@tud@#1@fil}%
%&lt;/book|report&gt;
  \fi%
%    \end{macrocode}
% Zum Schluss wird ggf. der gesammelte Eintrag im Inhaltsverzeichnis erstellt.
% Danach wird das Ã¼bergebene Argument ausgefÃ¼hrt.
%    \begin{macrocode}
  \ifnum\csuse{tud@#1@toc@num}&gt;\tw@\relax%
    \tud@fm@toc{#1}{#2}%
  \fi%
%    \end{macrocode}
% Das Makro \cs{tud@fm@set} wird~-- aufgrund der immanenten Zuweisung auf 
% \cs{tud@fm@next} innerhalb von \cs{tud@fm@first}~-- abermals auf die 
% Definition von \cs{tud@fm@first} gesetzt.
%    \begin{macrocode}
%&lt;/book|report|article&gt;
  \global\let\tud@fm@set\tud@fm@first%
  #2%
}
%    \end{macrocode}
% \end{macro}^^A \tud@fm@check
%
% \iffalse
%&lt;*book|report|article&gt;
% \fi
%
% \begin{macro}{\tud@fm@toc}
% \changes{v2.04}{2015/03/20}{neu}^^A
% \changes{v2.06}{2018/02/22}{Bugfix: \cs{phantomsection} fÃ¼r Anker}^^A
% \begin{macro}{\tud@fm@@toc}
% \changes{v2.04}{2015/03/20}{neu}^^A
% Ist die Einstellung \val{tocaggregate} aktiv, wird der gesammelte Eintrag ins 
% Inhaltsverzeichnis generiert.
%    \begin{macrocode}
\newcommand*\tud@fm@@toc{}
\newcommand*\tud@fm@toc[2]{%
%    \end{macrocode}
% Der gesammelte Eintrag aller Ãœberschriften ins Inhaltsverzeichnis. DafÃ¼r 
% wird der komplette Inhalt in einer Box gesetzt und nur die Ãœberschriften
% aggregiert.
%    \begin{macrocode}
  \ifbool{@tud@#1@multi}{%
    \begingroup%
      \let\tud@fm@@toc\@empty%
      \renewcommand*\tud@fm@head[2]{%
        \protected@xdef\tud@fm@@toc{%
          \ifx\tud@fm@@toc\@empty\else\tud@fm@@toc/\fi##2%
        }%
      }%
      \let\clearpage\relax%
      \sbox\z@{\vbox{#2}}%
      \csuse{phantomsection}%
      \protected@edef\@tempa{%
        \endgroup%
        \ifx\tud@fm@@toc\@empty\else%
          \ifodd\csuse{tud@#1@toc@num}\relax
%&lt;*book|report&gt;
            \noexpand\addchaptertocentry{}{\tud@fm@@toc}%
%&lt;/book|report&gt;
%&lt;*article&gt;
            \noexpand\addsectiontocentry{}{\tud@fm@@toc}%
%&lt;/article&gt;
          \else
%&lt;*book|report&gt;
            \noexpand\addsectiontocentry{}{\tud@fm@@toc}%
%&lt;/book|report&gt;
%&lt;*article&gt;
            \noexpand\addsubsectiontocentry{}{\tud@fm@@toc}%
%&lt;/article&gt;
          \fi
        \fi%
      }%
    \@tempa%
  }{%
    \ClassWarning{\TUD@Class@Name}{%
      It isn't possible to use `#1=single'\MessageBreak%
%&lt;*book|report&gt;
      or `#1=chapter'\space%
%&lt;/book|report&gt;
      with `#1=tocmultiple'%
    }%
    \edef\@tempa{%
      \noexpand\tud@locked@num@set{tud@#1@toc@num}{%
        \the\numexpr\csuse{tud@#1@toc@num}-2\relax%
      }%
    }%
    \@tempa%
  }%
}
%    \end{macrocode}
% \end{macro}^^A \tud@fm@@toc
% \end{macro}^^A \tud@fm@toc
%
% \iffalse
%&lt;/book|report|article&gt;
% \fi
%
% \begin{macro}{\tud@fm@set}
% \changes{v2.02}{2014/07/18}{Neuimplementierung fÃ¼r \pkg{scrlayer-scrpage}}^^A
% \changes{v2.04}{2015/03/20}{Reimplementierung}^^A
% \begin{macro}{\tud@fm@first}
% \changes{v2.04}{2015/03/20}{neu}^^A
% \begin{macro}{\tud@fm@next}
% \changes{v2.02}{2014/07/19}{neu}^^A
% \changes{v2.04}{2015/03/20}{Reimplementierung}^^A
% \changes{v2.05}{2015/07/14}{Bugfix bei vertikaler Zentrierung}^^A
% Mit diesen Makros werden bei der Ausgabe der einzelnen ErklÃ¤rungen alle
% relevanten Optionen\footnote{\opt{titlepage}, \opt{twocolumn}, 
%   \opt{abstract/declaration}|=|\val{multi},
%   \opt{abstract/declaration}|=|\val{fill}}
% ausgewertet und die notwendigen vertikalen AbstÃ¤nde entsprechend gesetzt. 
% Dabei wird durch jede Zusammenfassung bzw. ErklÃ¤rung \cs{tud@fm@set} Ã¼ber
% \cs{tud@fm@body@start} verwendet. Der Inhalt der beiden Umgebungen
% \env{abstract} und \env{descriptions} wird mit \cs{tud@fm@check} ausgegeben.
%    \begin{macrocode}
\newcommand\tud@fm@set[1]{}
\newcommand\tud@fm@first[1]{%
%    \end{macrocode}
% Im Zweispaltensatz wird der Inhalt der Umgebung einfach ausgegeben, eine 
% vertikale Zentrierung findet nicht statt. Beim einspaltigen Satz wird die 
% \opt{titlepage}-Option beachtet.
%    \begin{macrocode}
%&lt;*book|report|article&gt;
  \if@twocolumn\else%
%    \end{macrocode}
% Sollte diese aktiv sein, wird jede ErklÃ¤rung oder Zusammenfassung abhÃ¤ngig 
% von der Einstellung von \opt{abstract/declaration}|=|\val{multi} entweder auf 
% eine neue Seite gesetzt, oder aber auf der aktuellen ausgegeben. Dabei werden
% diese ggf. vertikal auf der Seite ausgerichtet.
%    \begin{macrocode}
    \if@titlepage%
      \ifbool{@tud@#1@fil}{\null\vfil}{}%
    \fi%
  \fi%
%&lt;/book|report|article&gt;
%    \end{macrocode}
% Das Makro \cs{tud@fm@check} setzt die Definition von \cs{tud@fm@set} auf
% \cs{tud@fm@first}. Bei der erstmaligen Verwendung von \cs{tud@fm@first} wird
% diese auf \cs{tud@fm@next} geÃ¤ndert.
%    \begin{macrocode}
  \global\let\tud@fm@set\tud@fm@next%
}
%    \end{macrocode}
% Bei der abermaligen Verwendung des Makros \cs{tud@fm@set} in der gleichen
% Umgebung wird \cs{tud@fm@next} ausgefÃ¼hrt, um die vertikalen AbstÃ¤nde
% zwischen den einzelnen Teilen einzufÃ¼gen.
%    \begin{macrocode}
\newcommand\tud@fm@next[1]{%
%    \end{macrocode}
% Im Zweispaltensatz wird entweder ein Absatz eingefÃ¼gt oder eine neue Spalte 
% begonnen.
%    \begin{macrocode}
  \if@twocolumn%
%&lt;book|report|article&gt;    \ifbool{@tud@#1@multi}{\par}{\newpage}%
%&lt;poster&gt;    \par%
  \else%
%    \end{macrocode}
% Wird eine Titelseite verwendet, wird jede ErklÃ¤rung oder Zusammenfassung
% abhÃ¤ngig von der Einstellung von \opt{abstract/declaration}|=|\val{multi}
% entweder auf eine neue Seite gesetzt, oder aber auf der aktuellen ausgegeben.
% Dabei werden diese ggf. vertikal auf der Seite ausgerichtet.
%    \begin{macrocode}
%&lt;*book|report|article&gt;
    \if@titlepage%
      \ifbool{@tud@#1@multi}{%
        \ifbool{@tud@#1@fil}{\vfil}{}%
      }{%
        \ifbool{@tud@#1@fil}{\vfil\null\clearpage\null\vfil}{\clearpage}%
      }%
    \else%
%&lt;/book|report|article&gt;
%    \end{macrocode}
% Werden weder Titelseite noch Ãœberschriften verwendet, so fÃ¼hrt die Auswahl 
% einer Sprache mit \cs{selectlanguage} zu einem zusÃ¤tzlichen vertikalen 
% Abstand. Dieser wird hiermit negiert.
%    \begin{macrocode}
      \ifnum\csuse{tud@#1@level@num}=\z@\relax%
        \ifundef{\main@language}{}{\vspace*{-\baselineskip}}%
      \fi%
%&lt;*book|report|article&gt;
    \fi%
%&lt;/book|report|article&gt;
  \fi%
}
%    \end{macrocode}
% \end{macro}^^A \tud@fm@next
% \end{macro}^^A \tud@fm@first
% \end{macro}^^A \tud@fm@set
% \begin{macro}{\tud@fm@body@start}
% \changes{v2.04}{2015/03/20}{neu}^^A
% \begin{macro}{\tud@fm@body@end}
% \changes{v2.04}{2015/03/20}{neu}^^A
% Das Makro \cs{tud@fm@body@start} setzt erst alle Ã¼bergebenen Parameter fÃ¼r 
% die aktuelle Umgebung. AnschlieÃŸend werden alle notwendigen vertikalen 
% AbstÃ¤nde mit \cs{tud@fm@set} eingefÃ¼gt und ggf. notwendige Umgebungen
% geÃ¶ffnet. Der Gegenpart dazu ist das Makro \cs{tud@fm@body@end}.
%    \begin{macrocode}
\newcommand*\tud@fm@body@start[3]{%
  \begingroup%
    \TUD@parameter@set{#1}{#2}%
    \tud@fm@set{#1}%
%    \end{macrocode}
% Bei deaktivierter \opt{titlepage}-Option werden die Inhalte jeder erzeugten
% ErklÃ¤rung oder Zusammenfassung direkt nacheinander ausgegeben. Sollte die 
% Ãœberschrift \emph{nicht} als Gliederungsebene (\cs{section}, \cs{chapter}) 
% gesetzt werden, wird der Inhalt entweder in der \env{quotation}-Umgebung 
% oder~-- wenn entsprechend das Paket \pkg{quoting} geladen wurde~-- in der
% \env{quoting}-Umgebung gesetzt. Die entsprechende Umgebung wird hierfÃ¼r im
% Makro \cs{tud@quoting} gespeichert.
%    \begin{macrocode}
    \if@twocolumn\else\if@titlepage\else\relax%
      \ifnum\csuse{tud@#1@level@num}&lt;\tw@\relax% false/true
        \begin{\tud@quoting}%
      \fi%
    \fi\fi%
%    \end{macrocode}
% Sollte das Paket \pkg{multicol} Verwendung finden, wird die entsprechende
% Umgebung gestartet. FÃ¼r das Setzen der Ãœberschrift und der Kolumnentitel wird
% \cs{tud@fm@head} verwendet, welches abhÃ¤ngig von den gewÃ¤hlten Optionen die
% Gliederungsebene der Ãœberschrift und die dazugehÃ¶rigen AbstÃ¤nde setzt. Daher 
% wird die LÃ¤nge \cs{multicolsep} auf Null gesetzt.
%    \begin{macrocode}
    \ifnum\tud@x@multicol@num&gt;\@ne\relax%
      \vspace{-\multicolsep}%
      \begin{multicols}{\tud@x@multicol@num}[{\tud@fm@head{#1}{#3}}]%
    \else%
%    \end{macrocode}
% Ansonsten wird lediglich die Ãœberschrift der Zusammenfassung oder ErklÃ¤rung
% im dritten Argument entsprechend der gewÃ¤hlten Option erzeugt.
%    \begin{macrocode}
      \tud@fm@head{#1}{#3}%
    \fi%
}
%    \end{macrocode}
% Nach der Ausgabe des Inhaltes werden mit \cs{tud@fm@body@end} alle ggf. 
% geÃ¶ffneten Umgebungen wieder geschlossen.
%    \begin{macrocode}
\newcommand*\tud@fm@body@end[1]{%
    \ifnum\tud@x@multicol@num&gt;\@ne\relax%
      \end{multicols}%
      \vspace{-\multicolsep}%
    \else%
      \par%
    \fi%
    \if@twocolumn\else\if@titlepage\else\relax%
      \ifnum\csuse{tud@#1@level@num}&lt;\tw@\relax% false/true
        \end{\tud@quoting}\par%
      \fi%
    \fi\fi%
  \endgroup%
}
%    \end{macrocode}
% \end{macro}^^A \tud@fm@body@end
% \end{macro}^^A \tud@fm@body@start
% \begin{macro}{\tud@fm@head}
% \changes{v2.02}{2014/07/18}{an \pkg{scrlayer-scrpage} angepasst}^^A
% \changes{v2.02}{2014/10/09}{Bugfix fÃ¼r Kolumnentitel}^^A
% \changes{v2.02}{2014/11/05}{Bugfix Kolumnentitel und Inhaltsverzeichnis}^^A
% \changes{v2.04}{2015/04/21}{AbstÃ¤nde nur, wenn keine Zitatumgebung aktiv}^^A
% Dieses Makro dient zur Ausgabe der ErklÃ¤rungsÃ¼berschrift auf der gewÃ¼nschten
% Gliederungsebene. Die gewÃ¤hlte Ebene ist in |\tud@|\meta{Typ}|@level@num|
% gespeichert. Verwendet wird das Makro folgendermaÃŸen:
% \cs{tud@fm@head}\marg{ErklÃ¤rungstyp}\marg{Ãœberschrift}. Damit 
% die ggf. aktive Option \opt{abstract/declaration}|=|\val{toc} funktionieren
% kann, wird fÃ¼r die Level, in denen keine StandardÃ¼berschrift verwendet wird,
% mit dem Befehl \cs{phantomsection} aus dem Paket \pkg{hyperref}~-- wenn es 
% tatsÃ¤chlich geladen wurde~-- ein Anker fÃ¼r einen Hyperlink erzeugt.
%
% Ist |\tud@|\meta{Typ}|@toc@num| ungerade, so entspricht die Ebene des
% erzeugten Eintrags ins Inhaltsverzeichnis fÃ¼r \cls{tudscrartcl} normalerweise
% dem eines Abschnitts, der fÃ¼r \cls{tudscrbook} und \cls{tudscrreprt} dem eines
% Kapitels.\footnote{sonst sieht das Inhaltsverzeichnis recht bescheiden aus}
% Mit der Eintellung \val{tocleveldown} kann der Eintrag um eine Ebene 
% reduziert werden.
%    \begin{macrocode}
\newcommand*\tud@fm@head[2]{%
  \ifcase\csuse{tud@#1@level@num}\relax% false
    \if@titlepage\endgraf\fi%
    \csuse{phantomsection}%
    \tud@if@strequal{\@currenvir}{\tud@quoting}{}{%
      \if@twocolumn%
        \vskip\smallskipamount%
      \else%
        \vskip\bigskipamount%
      \fi%
      \vskip-\parskip%
    }%
  \or% true
    \if@titlepage\endgraf\fi%
    \csuse{phantomsection}%
    \@afterindentfalse%
    \tud@if@strequal{\@currenvir}{\tud@quoting}{}{%
      \vskip\bigskipamount\vskip-\parskip%
    }%
    \begingroup%
      \noindent\centering%
      \normalfont\sectfont\nobreak#2%
      \@endparpenalty\@M%
      \endgraf%
    \endgroup%
    \nopagebreak%
    \vskip\medskipamount\vskip-\parskip%
    \@afterheading%
  \or% section
    \section*{#2}%
%&lt;*book|report|article&gt;
    \ifx\@mkboth\@gobbletwo\else\markright{\MakeMarkcase{#2}}\fi%
%&lt;*book|report&gt;
  \or% chapter
    \chapter*{#2}%
    \@mkdouble{\MakeMarkcase{#2}}%
%&lt;/book|report&gt;
%&lt;/book|report|article&gt;
  \fi%
%&lt;*book|report|article&gt;
  \ifbool{@tud@#1@markboth}{%
    \markboth{\MakeMarkcase{#2}}{\MakeMarkcase{#2}}%
  }{}%
  \ifcase\csuse{tud@#1@toc@num}\relax\or% totoc
%&lt;*book|report&gt;
    \addchaptertocentry{}{#2}%
%&lt;/book|report&gt;
%&lt;*article&gt;
    \addsectiontocentry{}{#2}%
%&lt;/article&gt;
  \or% totocleveldown
%&lt;*book|report&gt;
    \addsectiontocentry{}{#2}%
%&lt;/book|report&gt;
%&lt;*article&gt;
    \addsubsectiontocentry{}{#2}%
%&lt;/article&gt;
  \fi%
%&lt;/book|report|article&gt;%
}
%    \end{macrocode}
% \end{macro}^^A \tud@fm@head
%
% \iffalse
%&lt;*book|report|article&gt;
% \fi
%
% \begin{macro}{\tud@fm@pagestyle}
% \changes{v2.02}{2014/07/19}{neu}^^A
% Dieser Befehl sorgt fÃ¼r die Auswahl des Seitenstiles Ã¼ber die Parameter von
% \env{abstract} und \env{declarations}.
%    \begin{macrocode}
\newcommand*\tud@fm@pagestyle[2]{%
  \if@titlepage%
    \ifcsundef{ps@#2}{%
      \ClassError{\TUD@Class@Name}{`#2' is no valid pagestyle}{%
        You tried to use `#2' as a pagestyle for the\MessageBreak%
        `#1' environment, but it was never defined.%
      }%
    }{\def\tud@envir@ps{#2}}%
  \else%
    \ClassWarning{\TUD@Class@Name}{%
%&lt;*article&gt;
      The key `pagestyle' can only be used with\MessageBreak%
      activated option `titlepage'%
%&lt;/article&gt;
%&lt;*book|report&gt;
      The key `pagestyle' can only be used either with\MessageBreak%
      activated option `titlepage' or with chapter\MessageBreak%
      headings (`#1=chapter')%
%&lt;/book|report&gt;
    }%
  \fi%
}
%    \end{macrocode}
% \end{macro}^^A \tud@fm@pagestyle
%
% \iffalse
%&lt;/book|report|article&gt;
% \fi
%
% \begin{macro}{\tud@quoting}
% Mit diesem Befehl kann das empfehlenswerte Paket \pkg{quoting} unterstÃ¼tzt
% werden. Sollte dieses geladen werden, wird fÃ¼r das Setzen der Zusammenfassung
% bei einem Titelkopf die \env{quoting}-Umgebung genutzt.
%    \begin{macrocode}
\newcommand*\tud@quoting{quotation}
\AfterPackage{quoting}{\renewcommand*\tud@quoting{quoting}}
%    \end{macrocode}
% \end{macro}^^A \tud@quoting
%
% \iffalse
%&lt;/class&amp;body&gt;
%&lt;*class&amp;option&gt;
% \fi
%
% \begin{macro}{\tud@fm@switch}
% \changes{v2.02}{2014/11/05}{neu}^^A
% Das aus \KOMAScript{} bekannte Verhalten fÃ¼r die Zusammenfassung wird fÃ¼r die
% beiden Klassen \cls{tudscrartcl} und \cls{tudscrreprt} adaptiert. Dazu werden
% boolesche SchlÃ¼ssel bei der Definition der beiden Optionen \opt{abstract} und 
% \opt{declaration} eingefÃ¼gt. AuÃŸerdem werden zusÃ¤tzliche Werte zur Auswahl 
% einer Gliederungsebene fÃ¼r die gesetzten Ãœberschriften wie \cs{section} oder 
% \cs{chapter}\footnote{nicht fÃ¼r \cls{tudscrartcl}} oder bereitgestellt, 
% welche auch fÃ¼r die Buchklasse \cls{tudscrbook} zur VerfÃ¼gung stehen. Das 
% Setzen von EintrÃ¤gen ins Inhaltsverzeichnis lÃ¤sst sich ebenfalls anpassen.
%
% Des Weiteren werden mehrere SchlÃ¼ssel fÃ¼r die Anordnung und Positionierung
% von Zusammenfassung bzw. ErklÃ¤rungen bereitgestellt. Diese dienen dem Setzen
% der Optionen \opt{abstract} bzw. \opt{declaration} mit den Werten 
% \val{single/multi}, \val{toc/notoc}, \val{fill/nofill} sowie \val{leveldown}.
%    \begin{macrocode}
\newcommand*\tud@fm@switch{%
  {section}{2},{sect}{2},{sec}{2},{addsec}{2},%
%&lt;*article|poster&gt;
  {new}{2},{standard}{2},{heading}{2},%
%&lt;/article|poster&gt;
%&lt;*book|report&gt;
  {chapter}{3},{chap}{3},{addchap}{3},%
  {new}{3},{standard}{3},{heading}{3},%
%&lt;/book|report&gt;
%&lt;*book|report|article&gt;
  {single}{4},{one}{4},{simple}{4},%
  {multiple}{5},{multi}{5},{all}{5},{aggregate}{5},%
  {two}{5},{both}{5},{double}{5},%
  {nofil}{6},{nofill}{6},{novfil}{6},{novfill}{6},%
  {fil}{7},{fill}{7},{vfil}{7},{vfill}{7},%
  {markboth}{8},{mark}{8},%
  {nomarkboth}{9},{nomark}{9},%
  {nottotoc}{10},{notoc}{10},%
  {totoc}{11},{toc}{11},{totoclevelup}{11},{toclevelup}{11},{levelup}{11},%
  {totocleveldown}{12},{tocleveldown}{12},{leveldown}{12},%
  {tocmultiple}{13},{tocmulti}{13},{tocall}{13},{tocaggregate}{13},%
  {totocmultiple}{13},{totocmulti}{13},{totocall}{13},{totocaggregate}{13}%
%&lt;/book|report|article&gt;
}
%    \end{macrocode}
% \end{macro}^^A \tud@fm@switch
%
% \subsection{Erweiterung der Umgebung fÃ¼r eine Zusammenfassung}
%
% Die \env{abstract}-Umgebung wird um mehrere Optionen erweitert. So kann
% in den neuen \TUDScript-Klassen die Sprache der Zusammenfassung leicht
% eingestellt und auch zwei Zusammenfassungen auf eine Seite gesetzt werden.
% \begin{macro}{\tud@abstract@level@num}
% \begin{macro}{\tud@abstract@toc@num}
% \changes{v2.04}{2015/04/24}{neu}^^A
% \begin{macro}{\tud@abstract@toc@num@locked}
% \changes{v2.04}{2015/04/24}{neu}^^A
% Der Befehl \cs{tud@abstract@level@num} beschreibt die Gliederungsebene der
% Ãœberschrift der Zusammenfassung numerisch und wird Ã¼ber die SchlÃ¼ssel der
% Option \opt{abstract} gesetzt. Ãœber \opt{abstract}|=|\val{toc/notoc} wird 
% festgelegt, ob die Zusammenfassung einen Eintrag ins Inhaltsverzeichnis
% bekommt. Da unterschiedliche Gliederungsebenen der Ãœberschriften mÃ¶glich
% sind, wird das Standardverhalten in AbhÃ¤ngigkeit dieser gewÃ¤hlt. Initial
% erscheint fÃ¼r \cls{tudscrreprt} und \cls{tudscrartcl}~-- wie in \KOMAScript{}
% auch~-- keine Ãœberschrift und kein Eintrag im Inhaltsverzeichnis. In
% \cls{tudscrbook} wird standardmÃ¤ÃŸig eine Ãœberschrift in Form eines Kapitels
% mit Eintrag ins Inhaltsverzeichnis gesetzt.
%
% Mit \cs{tud@abstract@toc@num} wird die Gestalt des Inhaltsverzeichniseintrag 
% festgelegt. Folgende Werte sind mÃ¶glich:
% \begin{description}
%   \item[0] kein Eintrag ins Inhaltverzeichnis
%   \item[1] Individuelle EintrÃ¤ge auf der obersten Gliederungsebene
%   \item[2] Individuelle EintrÃ¤ge auf der zweithÃ¶chsten Gliederungsebene
%   \item[3] Ein gesammelter Eintrag auf der obersten Gliederungsebene
%   \item[4] Ein gesammelter Eintrag auf der zweithÃ¶chsten Gliederungsebene
% \end{description}
% Dabei ist die oberste Gliederungsebene \cs{chapter} fÃ¼r \cls{tudscrbook} und 
% \cls{tudscrreprt} sowie \cs{section} fÃ¼r \cls{tudscrartcl}.
%    \begin{macrocode}
%&lt;*report|article|poster&gt;
\newcommand*\tud@abstract@level@num{0}
%&lt;report|article&gt;\tud@locked@newnum{tud@abstract@toc@num}{0}
%&lt;/report|article|poster&gt;
%&lt;*book&gt;
\newcommand*\tud@abstract@level@num{3}
\tud@locked@newnum{tud@abstract@toc@num}{1}
%&lt;/book&gt;
%    \end{macrocode}
% \end{macro}^^A \tud@abstract@toc@num@locked
% \end{macro}^^A \tud@abstract@toc@num
% \end{macro}^^A \tud@abstract@level@num
%
% \iffalse
%&lt;*book|report|article&gt;
% \fi
%
% \begin{macro}{\if@tud@abstract@multi}
% Is dieser Schalter aktiviert, wird eine durch \cs{nextabstract} angegebene 
% zweite~-- wahrscheinlich in einer Fremdsprache verfasste~-- Zusammenfassung
% auf die gleiche Seite wie die erste zu setzen. Gesetzt wird der Schalter Ã¼ber 
% die Option \opt{abstract}|=|\val{single/multi}.
%    \begin{macrocode}
\tud@newif\if@tud@abstract@multi
\@tud@abstract@multitrue
%    \end{macrocode}
% \end{macro}^^A \if@tud@abstract@multi
% \begin{macro}{\if@tud@abstract@fil}
% Mit diesem Schalter wird bestimmt, ob eine Zusammenfassung auf einer Seite
% vertikal zentriert wird. Er wird mit \opt{abstract}|=|\val{fill/nofill} 
% gesetzt und ist normalerweise aktiviert.
%    \begin{macrocode}
\tud@newif\if@tud@abstract@fil
\@tud@abstract@filtrue
%    \end{macrocode}
% \end{macro}^^A \if@tud@abstract@fil
% \begin{macro}{\if@tud@abstract@markboth}
% \changes{v2.02}{2014/11/05}{neu}^^A
% Dieser Schalter setzt rechten und linken Kolumnentitel automatisch auf die
% verwendete Ãœberschrift.
%    \begin{macrocode}
\tud@newif\if@tud@abstract@markboth
%    \end{macrocode}
% \end{macro}^^A \if@tud@abstract@markboth
%
% \iffalse
%&lt;/book|report|article&gt;
% \fi
%
% \begin{option}{abstract}
% Alle Klassen unterstÃ¼tzen die Werte, welche in \cs{tud@fm@switch} definiert 
% wurden. Die beiden Klassen \cls{tudscrartcl} und \cls{tudscrreprt} adaptieren 
% auÃŸerdem das aus \KOMAScript{} bekannte Verhalten Ã¼ber die booleschen Werte
% aus \cs{TUD@bool@numkey}.
%    \begin{macrocode}
%&lt;*report|article|poster&gt;
\TUD@key{abstract}[true]{%
  \edef\@tempb{\TUD@bool@numkey,\tud@fm@switch}%
%&lt;/report|article|poster&gt;
%&lt;*book&gt;
\TUD@key{abstract}[chapter]{%
  \edef\@tempb{\tud@fm@switch}%
%&lt;/book&gt;
  \TUD@set@numkey{abstract}{@tempa}{\@tempb}{#1}%
%    \end{macrocode}
% Bei der Einstellungen der Ãœberschriftgliederungsebene wird auÃŸerdem das
% Standardverhalten fÃ¼r einen Eintrag ins Inhaltsverzeichnis festgelegt, was
% allerdings vom Anwender jederzeit Ã¼berschrieben werden kann.
%    \begin{macrocode}
  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
    \ifcase\@tempa\relax% false
%&lt;*report|article|poster&gt;
      \renewcommand*\tud@abstract@level@num{0}%
%&lt;report|article&gt;      \tud@locked@num@preset{tud@abstract@toc@num}{0}%
%&lt;/report|article|poster&gt;
    \or% true
%&lt;*report|article|poster&gt;
      \renewcommand*\tud@abstract@level@num{1}%
%&lt;report|article&gt;      \tud@locked@num@preset{tud@abstract@toc@num}{0}%
%&lt;/report|article|poster&gt;
    \or% section
      \renewcommand*\tud@abstract@level@num{2}%
%&lt;*book|report|article&gt;
      \tud@locked@num@preset{tud@abstract@toc@num}{1}%
    \or% chapter
%&lt;*book|report&gt;
      \renewcommand*\tud@abstract@level@num{3}%
      \tud@locked@num@preset{tud@abstract@toc@num}{1}%
%&lt;/book|report&gt;
%&lt;/book|report|article&gt;
%    \end{macrocode}
% Neben den Einstellungen fÃ¼r die Art der Gliederungsebene der Ãœberschrift fÃ¼r
% die Zusammenfassung kÃ¶nnen auÃŸerdem noch die Optionen gesetzt werden, ob
% versucht werden soll, eine mÃ¶gliche Zusammenfassung in einer anderen Sprache
% auf die gleiche Seite wie die erste zu setzen (\opt{abstract}|=|\val{multi}).
%    \begin{macrocode}
%&lt;*book|report|article&gt;
    \or% single
      \@tud@abstract@multifalse%
    \or% multiple
      \@tud@abstract@multitrue%
    \or% nofil
      \@tud@abstract@filfalse%
    \or% fil
      \@tud@abstract@filtrue%
    \or% markboth
      \@tud@abstract@markbothtrue%
    \or% nomarkboth
      \@tud@abstract@markbothfalse%
%    \end{macrocode}
% Bei den Einstellungen fÃ¼r das Inhaltsverzeichnis werden die unterschiedlichen 
% MÃ¶glichkeiten im Makro \cs{tud@abstract@toc@num} zusammengefasst.
%    \begin{macrocode}
    \or% nottotoc
      \tud@locked@num@set{tud@abstract@toc@num}{0}%
    \or% totoc
      \ifnum\tud@abstract@toc@num&lt;\thr@@\relax%
        \tud@locked@num@set{tud@abstract@toc@num}{1}%
      \else%
        \tud@locked@num@set{tud@abstract@toc@num}{3}%
      \fi%
    \or% totocleveldown
      \ifnum\tud@abstract@toc@num&lt;\thr@@\relax%
        \tud@locked@num@set{tud@abstract@toc@num}{2}%
      \else%
        \tud@locked@num@set{tud@abstract@toc@num}{4}%
      \fi%
    \or% totocmutliple
      \ifnum\tud@abstract@toc@num=\z@\relax%
        \tud@locked@num@set{tud@abstract@toc@num}{1}%
      \fi%
      \ifnum\tud@abstract@toc@num&lt;\thr@@\relax%
        \edef\@tempa{%
          \noexpand\tud@locked@num@set{tud@abstract@toc@num}{%
            \the\numexpr\tud@abstract@toc@num+2\relax%
          }%
        }\@tempa%
      \fi%
%&lt;/book|report|article&gt;
    \fi%
  \fi%
}
%    \end{macrocode}
% Damit der Anwender die erweiterten Einstellungen fÃ¼r die Zusammenfassung auch
% wie gewohnt Ã¼ber \cs{KOMAoptions} setzen kann, wird die entsprechende Option 
% ebenfalls definiert.
%    \begin{macrocode}
\DefineFamilyMember{KOMA}
\DefineFamilyKey{KOMA}{abstract}[true]{%
  \FamilyKeyStateUnknownValue%
  \AtEndOfFamilyOptions{\TUDoptions{abstract=#1}}%
}
%    \end{macrocode}
% \end{option}^^A abstract
%
% \iffalse
%&lt;/class&amp;option&gt;
%&lt;*class&amp;body&gt;
% \fi
%
% \begin{environment}{abstract}
% \changes{v2.03}{2015/01/09}{Bugfix fÃ¼r Seitenstilauswahl}^^A
% \changes{v2.04}{2015/03/20}{Reimplementierung}^^A
% \begin{parameter}{language}
% \begin{parameter}{columns}
% \begin{parameter}{pagestyle}
% \changes{v2.02}{2014/07/19}{neu}^^A
% \begin{parameter}{markboth}
% \changes{v2.02}{2014/11/05}{neu}^^A
% \begin{parameter}{abstract}
% \begin{parameter}{option}
% \begin{macro}{\nextabstract}
% \changes{v2.02}{2014/11/05}{neu}^^A
% Die \env{abstract}-Umgebung wird komplett Ã¼berarbeitet. Um alle gewÃ¼nschten
% Optionen\footnote{\opt{titlepage}, \opt{twocolumn},
%   \opt{abstract}|=|\val{multi}, \opt{abstract}|=|\val{fill}}
% sowie Gliederungsebene der Ãœberschrift beachten zu kÃ¶nnen, wird auf die
% MÃ¶glichkeiten der Definition mit \cs{NewEnviron} aus dem Paket \pkg{environ}
% zurÃ¼ckgegriffen. Damit ist es mÃ¶glich, gezielt auf den Inhalt der Umgebung
% selbst mit dem Befehl \cs{BODY} zuzugreifen. Dieser Mechanismus wird
% innerhalb von \cs{tud@abstractbody} verwendet.
% \ToDo{parameter title, um \cs{abstractname} lokal zu Ã¤ndern}[v2.07]
% \ToDo{eher NewDocumentEnvironment nutzen?}[v2.07]
%    \begin{macrocode}
%&lt;*report|article|poster&gt;
\undef\abstract
\undef\endabstract
%&lt;/report|article|poster&gt;
\NewEnviron{abstract}[1][]{%
%    \end{macrocode}
% Sollten Ãœberschriften in Form von Kapiteln gewÃ¤hlt worden sein, so wird 
% temporÃ¤r die \opt{titlepage}-Option aktivert, da alle weiteren notwendigen 
% Einstellungen dieser entsprechen. Ãœber den Parameter \opt{pagestyle} kann bei 
% der Verwendung einer Titelseite der Seitenstil definiert werden. DafÃ¼r wird 
% das dafÃ¼r verantwortliche Makro \cs{tud@envir@ps} auf \cs{relax} gesetzt.
%    \begin{macrocode}
%&lt;*book|report&gt;
  \ifnum\tud@abstract@level@num&gt;\tw@\relax\@titlepagetrue\fi% chapter
%&lt;/book|report&gt;
%&lt;*book|report|article&gt;
  \let\tud@envir@ps\relax%
%&lt;/book|report|article&gt;
%    \end{macrocode}
% Als nÃ¤chstes werden die Optionen verarbeitet. Sollte nach Abarbeitung der
% Optionen fÃ¼r \env{abstract} festgestellt werden, dass eine spezielle
% Spaltenanzahl gewÃ¼nscht ist, so wird~-- fÃ¼r den Fall, dass das Paket
% \pkg{multicol} geladen ist~-- diese gesetzt. Sonst wird die angegbene Anzahl
% der Spalten ignoriert und eine Warnung ausgegeben.
%    \begin{macrocode}
  \TUD@parameter@set{abstract}{#1}%
  \tud@x@multicol@check%
%    \end{macrocode}
% Bei aktiver \opt{titlepage}-Option wird anschlieÃŸend der aktuelle Seitenstil 
% gesichert, um diesen nach der Umgebung wiederherstellen zu kÃ¶nnen. Wurde Ã¼ber 
% die mÃ¶glichen Parameter \opt{pagestyle} oder indirekt mit \opt{markboth} kein 
% Seitenstil definiert, so wird dieser auf \val{empty} gesetzt.
%    \begin{macrocode}
%&lt;*book|report|article&gt;
  \if@titlepage%
    \tud@currentpagestyle@set%
    \ifx\tud@envir@ps\relax%
      \tud@if@tudheadings{\currentpagestyle}{%
        \def\tud@envir@ps{empty.tudheadings}%
      }{%
        \def\tud@envir@ps{empty}%
      }%
    \fi%
    \clearpage%
    \tud@envir@selectps%
  \fi%
%&lt;/book|report|article&gt;
%    \end{macrocode}
% Mit dem Befehl \cs{nextabstract} kÃ¶nnen einzelne Abschnitte innerhalb einer 
% Zusammenfassung getrennt werden.
%    \begin{macrocode}
  \renewcommand*\nextabstract[1][]{%
    \tud@fm@body@end{abstract}%
    \tud@fm@body@start{abstract}{##1}{\abstractname}%
  }%
  \tud@fm@check{abstract}{%
    \tud@fm@body@start{abstract}{#1}{\abstractname}%
      \BODY%
    \tud@fm@body@end{abstract}%
  }%
%    \end{macrocode}
% Nach der Umgebung wird bei aktiver \opt{titlepage}-Option der ursprÃ¼ngliche 
% Seitenstil zurÃ¼ckgesetzt. Zuvor wird ggf. der notwendige vertikale Leerraum
% eingefÃ¼gt.
%    \begin{macrocode}
}[%
%&lt;*book|report|article&gt;
  \if@titlepage%
    \if@tud@abstract@fil\vfil\null\fi%
    \aftergroup\tud@currentpagestyle@reset%
    \clearpage%
  \else%
%&lt;/book|report|article&gt;
    \ifnum\tud@abstract@level@num=\tw@\relax%
      \vskip\bigskipamount\vskip-\parskip%
    \fi%
%&lt;*book|report|article&gt;
  \fi%
%&lt;/book|report|article&gt;
]
%    \end{macrocode}
% Als SchlÃ¼ssel fÃ¼r die \env{abstract}-Umgebung kÃ¶nnen Sprache, Anzahl der
% Spalten oder auch die zur Umgebung gehÃ¶rigen Klassenoptionen angegeben werden.
%    \begin{macrocode}
\TUD@parameter@family{abstract}{%
  \TUD@parameter@def{language}{\selectlanguage{#1}}%
  \TUD@parameter@def{columns}{\renewcommand*\tud@x@multicol@num{#1}}%
%&lt;*book|report|article&gt;
  \TUD@parameter@def{pagestyle}{\tud@fm@pagestyle{abstract}{#1}}%
%    \end{macrocode}
% FÃ¼r das Setzen von Kolumnentiteln wird der Seitenstil auf \val{headings} 
% gesetzt, falls kein anderer mit \opt{pagestyle} angegeben wurde.
%    \begin{macrocode}
  \TUD@parameter@def{markboth}[true]{%
    \tud@if@strbool{#1}{%
      \@tud@abstract@markbothtrue%
      \ifx\tud@envir@ps\relax\def\tud@envir@ps{headings}\fi%
    }{%
      \@tud@abstract@markbothfalse%
    }{%
      \@tud@abstract@markbothfalse%
      \ifx\tud@envir@ps\relax\def\tud@envir@ps{headings}\fi%
      \manualmark\markboth{#1}{#1}%
    }%
  }%
%&lt;/book|report|article&gt;
  \TUD@parameter@def{abstract}{\TUDoption{abstract}{#1}}%
  \TUD@parameter@let{option}{abstract}%
%    \end{macrocode}
% FÃ¼r die Optionsangabe ohne SchlÃ¼ssel und Wert kann eine Anzahl an Spalten
% oder eine alternative Sprache angegeben werden. FÃ¼r die Auswertung des 
% Argumentes verantwortlich ist der Befehl \cs{TUD@parameter@handler@default}, 
% welcher auch von der Umgebung \env{tudpage} verwendet wird.
% \ToDo{unbekannte SchlÃ¼ssel als Werte an \prm{abstract}}[v2.07]^^A
%    \begin{macrocode}
  \TUD@parameter@handler@default{}%
}
%    \end{macrocode}
% Der Befehl \cs{nextabstract} lÃ¤sst sich nur in der Umgebung \env{abstract} 
% verwenden.
%    \begin{macrocode}
\newcommand*\nextabstract[1][]{%
  \ClassError{\TUD@Class@Name}{Incorrect usage of `\string\nextabstract'}{%
    The command `\string\nextabstract' can only be used within\MessageBreak%
    the environment `abstract'.%
  }%
}
%    \end{macrocode}
% \end{macro}^^A \nextabstract
% \end{parameter}^^A option
% \end{parameter}^^A abstract
% \end{parameter}^^A markboth
% \end{parameter}^^A pagestyle
% \end{parameter}^^A columns
% \end{parameter}^^A language
% \end{environment}^^A abstract
%
% \iffalse
%&lt;/class&amp;body&gt;
%&lt;*book|report|article&gt;
%&lt;*class&amp;option&gt;
% \fi
%
% \subsection{SelbststÃ¤ndigkeitserklÃ¤rung und Sperrvermerk}
%
% Die Befehle fÃ¼r die SelbststÃ¤ndigkeitserklÃ¤rung und den Sperrvermerk werden
% Ã¤quivalent zur \env{abstract}-Umgebung mit den gleichen Optionen
% ausgestattet.
% \begin{macro}{\tud@declaration@level@num}
% \begin{macro}{\tud@declaration@toc@num}
% \changes{v2.04}{2015/04/24}{neu}^^A
% \begin{macro}{\tud@declaration@toc@num@locked}
% \changes{v2.04}{2015/04/24}{neu}^^A
% \begin{macro}{\if@tud@declaration@multi}
% \begin{macro}{\if@tud@declaration@fil}
% \begin{macro}{\if@tud@declaration@markboth}
% \changes{v2.02}{2014/11/05}{neu}^^A
% Siehe die Option \opt{abstract}.
%    \begin{macrocode}
%&lt;*report|article&gt;
\newcommand*\tud@declaration@level@num{1}
\tud@locked@newnum{tud@declaration@toc@num}{0}
%&lt;/report|article&gt;
%&lt;*book&gt;
\newcommand*\tud@declaration@level@num{3}
\tud@locked@newnum{tud@declaration@toc@num}{1}
%&lt;/book&gt;
\tud@newif\if@tud@declaration@multi
\@tud@declaration@multitrue
\tud@newif\if@tud@declaration@fil
\@tud@declaration@filtrue
\tud@newif\if@tud@declaration@markboth
%    \end{macrocode}
% \end{macro}^^A \if@tud@declaration@markboth
% \end{macro}^^A \if@tud@declaration@fil
% \end{macro}^^A \if@tud@declaration@multi
% \end{macro}^^A \tud@declaration@toc@num@locked
% \end{macro}^^A \tud@declaration@toc@num
% \end{macro}^^A \tud@declaration@level@num
% \begin{option}{declaration}
% Siehe die Option \opt{abstract}.
%    \begin{macrocode}
%&lt;*report|article&gt;
\TUD@key{declaration}[true]{%
%&lt;/report|article&gt;
%&lt;*book&gt;
\TUD@key{declaration}[chapter]{%
%&lt;/book&gt;
  \edef\@tempb{\TUD@bool@numkey,\tud@fm@switch}%
  \TUD@set@numkey{declaration}{@tempa}{\@tempb}{#1}%
  \ifx\FamilyKeyState\FamilyKeyStateProcessed%
    \ifcase\@tempa\relax% false
      \renewcommand*\tud@declaration@level@num{0}%
      \tud@locked@num@preset{tud@declaration@toc@num}{0}%
    \or% true
      \renewcommand*\tud@declaration@level@num{1}%
      \tud@locked@num@preset{tud@declaration@toc@num}{0}%
    \or% section
      \renewcommand*\tud@declaration@level@num{2}%
      \tud@locked@num@preset{tud@declaration@toc@num}{1}%
    \or% chapter
%&lt;*book|report&gt;
      \renewcommand*\tud@declaration@level@num{3}%
      \tud@locked@num@preset{tud@declaration@toc@num}{1}%
%&lt;/book|report&gt;
    \or% single
      \@tud@declaration@multifalse%
    \or% multiple
      \@tud@declaration@multitrue%
    \or% nofil
      \@tud@declaration@filfalse%
    \or% fil
      \@tud@declaration@filtrue%
    \or% markboth
      \@tud@declaration@markbothtrue%
    \or% nomarkboth
      \@tud@declaration@markbothfalse%
    \or% nottotoc
      \tud@locked@num@set{tud@declaration@toc@num}{0}%
    \or% totoc
      \ifnum\tud@declaration@toc@num&lt;\thr@@\relax%
        \tud@locked@num@set{tud@declaration@toc@num}{1}%
      \else%
        \tud@locked@num@set{tud@declaration@toc@num}{3}%
      \fi%
    \or% totocleveldown
      \ifnum\tud@declaration@toc@num&lt;\thr@@\relax%
        \tud@locked@num@set{tud@declaration@toc@num}{2}%
      \else%
        \tud@locked@num@set{tud@declaration@toc@num}{4}%
      \fi%
    \or% totocmutliple
      \ifnum\tud@declaration@toc@num=\z@\relax%
        \tud@locked@num@set{tud@declaration@toc@num}{1}%
      \fi%
      \ifnum\tud@declaration@toc@num&lt;\thr@@\relax%
        \edef\@tempa{%
          \noexpand\tud@locked@num@set{tud@declaration@toc@num}{%
            \the\numexpr\tud@declaration@toc@num+2\relax%
          }%
        }\@tempa%
      \fi%
    \fi%
  \fi%
}
%    \end{macrocode}
% \end{option}^^A declaration
%
% \iffalse
%&lt;/class&amp;option&gt;
%&lt;*class&amp;body&gt;
% \fi
%
% \begin{environment}{declarations}
% \changes{v2.02}{2014/11/05}{neu}^^A
% \changes{v2.03}{2015/01/09}{Bugfix fÃ¼r Seitenstilauswahl}^^A
% \changes{v2.03}{2015/01/30}{Bugfix fÃ¼r Spaltenanzahl}^^A
% \changes{v2.04}{2015/03/20}{Reimplementierung}^^A
% \begin{parameter}{language}
% \begin{parameter}{columns}
% \changes{v2.02}{2014/07/19}{neu}^^A
% \begin{parameter}{pagestyle}
% \changes{v2.02}{2014/07/19}{neu}^^A
% \begin{parameter}{markboth}
% \changes{v2.02}{2014/11/05}{neu}^^A
% \begin{parameter}{company}
% \begin{parameter}{supporter}
% \begin{parameter}{place}
% \begin{parameter}{closing}
% \begin{parameter}{declaration}
% \begin{parameter}{option}
% \begin{macro}{\if@tud@declarations}
% Die \env{declarations}-Umgebung wird Ã¤hnlich zur \env{abstract}-Umgebung 
% definiert. Prinzipiell funktioniert diese genauso, inklusive der Parameter.
% Der Schalter \cs{if@tud@declarations} wird verwendet, um die weiteren Befehle
% \cs{declaration}, \cs{confirmation} und \cs{blocking} innerhalb und auÃŸerhalb
% dieser Umgebung verwenden zu kÃ¶nnen.
%    \begin{macrocode}
\tud@newif\if@tud@declarations
\NewEnviron{declarations}[1][]{%
  \@tud@declarationstrue%
%&lt;*book|report&gt;
  \ifnum\tud@declaration@level@num&gt;\tw@\relax\@titlepagetrue\fi% chapter
%&lt;/book|report&gt;
  \let\tud@envir@ps\relax%
  \TUD@parameter@set{declaration}{#1}%
  \tud@x@multicol@check%
  \if@titlepage%
    \tud@currentpagestyle@set%
    \ifx\tud@envir@ps\relax%
      \tud@if@tudheadings{\currentpagestyle}{%
        \def\tud@envir@ps{empty.tudheadings}%
      }{%
        \def\tud@envir@ps{empty}%
      }%
    \fi%
    \clearpage%
    \tud@envir@selectps%
  \fi%
%    \end{macrocode}
% Falls innerhalb der ErklÃ¤rung durch den Anwender bestimmte Felder verwendet 
% werden, werden vorsichtshalber Befehle fÃ¼r die Titelei \enquote{entschÃ¤rft}.
%    \begin{macrocode}
  \def\and{, }%
  \let\thanks\@gobble%
%    \end{macrocode}
% Im Gegensatz zur \env{abstract}-Umgebung werden in der Umgebung 
% \env{declarations} alle ErklÃ¤rungen als \emph{geschlossene} Variante genutzt,
% um diese einzeln und nacheinander anzugeben. Jedes hierfÃ¼r nutzbare Makro
% (\cs{declaration}, \cs{nextdeclaration}, \cs{blocking} und \cs{confirmation})
% kann so innerhalb der Umgebung verwendet werden und fÃ¼hrt intern die beiden
% Makros \cs{tud@fm@body@start} und \cs{tud@fm@body@end} selbststÃ¤ndig aus.
% Alternativ dazu mÃ¼sste relativ umstÃ¤ndlich geprÃ¼ft werden, ob der Aufruf von
% \cs{tud@fm@body@start} bereits erfolgte \emph{und} danach auch schon Text
% ausgegeben wurde. Einen Mehrwert bei der Nutzung hÃ¤tte dies jedoch nicht
% gehabt auÃŸer der Ã¤quivalenten Verwendung von \cs{nextdeclaration} und 
% \cs{nextabstract}, worauf der Einfachheit halber gerne verzichtet wurde, 
% insbesondere da die erwartete Nutzung des Befehls \cs{nextdeclaration} als 
% sehr gering einzustufen ist.
%    \begin{macrocode}
  \tud@fm@check{declaration}{\BODY}%
}[%
  \if@titlepage%
    \if@tud@declaration@fil\vfil\null\fi%
    \aftergroup\tud@currentpagestyle@reset%
    \clearpage%
  \else%
    \ifnum\tud@declaration@level@num=\tw@\relax%
      \vskip\bigskipamount\vskip-\parskip%
    \fi%
  \fi%
]
%    \end{macrocode}
% Dies sind die mÃ¶glichen SchlÃ¼ssel fÃ¼r die Befehle \cs{declaration},
% \cs{confirmation} und \cs{blocking}. Die SchlÃ¼ssel \opt{declaration} bzw.
% \opt{option} dienen zum Setzen der Werte, welche auch als Klassenoptionen
% gesetzt werden kÃ¶nnen.
% \ToDo{unbekannte SchlÃ¼ssel als Werte an \prm{declaration}}[v2.07]^^A
%    \begin{macrocode}
\TUD@parameter@family{declaration}{%
  \TUD@parameter@def{language}{\selectlanguage{#1}}%
  \TUD@parameter@def{columns}{\renewcommand*\tud@x@multicol@num{#1}}%
  \TUD@parameter@def{pagestyle}{\tud@fm@pagestyle{declaration}{#1}}%
  \TUD@parameter@def{markboth}[true]{%
    \tud@if@strbool{#1}{%
      \@tud@declaration@markbothtrue%
      \ifx\tud@envir@ps\relax\def\tud@envir@ps{headings}\fi%
    }{%
      \@tud@declaration@markbothfalse%
    }{%
      \@tud@declaration@markbothfalse%
      \ifx\tud@envir@ps\relax\def\tud@envir@ps{headings}\fi%
      \manualmark\markboth{#1}{#1}%
    }%
  }%
  \TUD@parameter@def{company}{\def\@company{#1}}%
  \TUD@parameter@def{supporter}{\def\@supporter{#1}}%
  \TUD@parameter@def{place}{\def\@place{#1}}%
  \TUD@parameter@def{closing}{\def\@confirmationclosing{#1}}%
  \TUD@parameter@let{confirmationclosing}{closing}%
  \TUD@parameter@def{declaration}{\TUDoption{declaration}{#1}}%
  \TUD@parameter@let{option}{declaration}%
  \TUD@parameter@handler@default{}%
}
%    \end{macrocode}
% \end{macro}^^A \if@tud@declarations
% \end{parameter}^^A option
% \end{parameter}^^A declaration
% \end{parameter}^^A closing
% \end{parameter}^^A place
% \end{parameter}^^A supporter
% \end{parameter}^^A company
% \end{parameter}^^A markboth
% \end{parameter}^^A pagestyle
% \end{parameter}^^A columns
% \end{parameter}^^A language
% \end{environment}^^A declarations
% \begin{macro}{\tud@fm@supporter}
% \changes{v2.05}{2015/10/27}{neu}^^A
% Dies ist ein Hilfsmakro, um die Sternversionen der beiden Befehle
% \cs{declaration} und \cs{confirmation} zu realisieren.
%    \begin{macrocode}
\newcommand*\tud@fm@supporter{}
%    \end{macrocode}
% \end{macro}^^A \tud@fm@supporter
% \begin{macro}{\declaration}
% \changes{v2.02}{2014/07/18}{Neuimplementierung fÃ¼r \pkg{scrlayer-scrpage}}^^A
% \changes{v2.03}{2015/01/30}{Bugfix fÃ¼r Spaltenanzahl}^^A
% \changes{v2.05}{2015/10/27}{Sternversion fÃ¼r Betreuer als UnterstÃ¼tzer}^^A
% \begin{macro}{\tud@fm@declaration}
% \changes{v2.05}{2015/10/27}{neu}^^A
% \begin{macro}{\nextdeclaration}
% \changes{v2.04}{2015/03/20}{neu}^^A
% Dieser Befehl dient zur Ausgabe von sowohl SelbststÃ¤ndigkeitserklÃ¤rung als
% auch Sperrvermerk. Ãœber das optionale Argument kann ohne SchlÃ¼ssel die
% gewÃ¼nschte Sprache eingestellt werden. ZusÃ¤tzlich kÃ¶nnen Optionen als
% SchlÃ¼ssel-Wert-Paare angegeben werden. Die Sternversion erzwingt die Ausgabe 
% der in \cs{@supporter} gespeicherten Betreuer als UnterstÃ¼tzer.
%    \begin{macrocode}
\newcommand*\declaration{%
  \kernel@ifstar{%
    \def\tud@fm@supporter{supporter=\@supervisor}%
    \tud@fm@declaration%
  }{%
    \def\tud@fm@supporter{supporter=\@supporter}%
    \tud@fm@declaration%
  }%
}
\newcommand*\tud@fm@declaration[1][]{%
  \if@tud@declarations%
    \begingroup%
      \tud@fm@@confirmation[{\tud@fm@supporter,#1}]%
      \tud@fm@blocking[{#1}]%
    \endgroup%
  \else%
    \begin{declarations}[{\tud@fm@supporter,#1}]%
      \tud@fm@@confirmation%
      \tud@fm@blocking%
    \end{declarations}%
  \fi%
}
%    \end{macrocode}
% Mit \cs{nextdeclaration} kann eine freie ErklÃ¤rung abgegeben werden. Dabei 
% sind~-- im Gegensatz zu \cs{nextabstract}~-- sowohl Ãœberschrift als auch der 
% Inhalt als obligatorisches Argument anzugeben, da innerhalb der Umgebung
% \env{declarations} die geschlossene Angabe des Inhalts innerhalb von
% \cs{tud@fm@body@start} und \cs{tud@fm@body@end} notwendig ist.
%    \begin{macrocode}
\newcommand*\nextdeclaration[3][]{%
  \if@tud@declarations%
    \tud@fm@body@start{declaration}{#1}{#2}%
      #3%
    \tud@fm@body@end{declaration}%
  \else%
    \ClassError{\TUD@Class@Name}{Incorrect usage of `\string\nextdeclaration'}{%
      The command `\string\nextdeclaration' can only be used\MessageBreak%
      within the environment `declarations'.%
    }%
  \fi%
}
%    \end{macrocode}
% \end{macro}^^A \nextdeclaration
% \end{macro}^^A \tud@fm@declaration
% \end{macro}^^A \declaration
% \begin{macro}{\confirmation}
% \changes{v2.02}{2014/07/18}{Neuimplementierung fÃ¼r \pkg{scrlayer-scrpage}}^^A
% \changes{v2.03}{2015/01/30}{Bugfix fÃ¼r Spaltenanzahl}^^A
% \changes{v2.05}{2015/10/27}{Sternversion fÃ¼r Betreuer als UnterstÃ¼tzer}^^A
% \begin{macro}{\tud@fm@confirmation}
% \changes{v2.05}{2015/10/27}{neu}^^A
% \begin{macro}{\tud@fm@@confirmation}
% \changes{v2.02}{2014/07/18}{neu}^^A
% Mit diesem Befehl kann die SelbststÃ¤ndigkeitserklÃ¤rung ausgegeben werden. Das
% optionale Argument bestimmt, wer als UnterstÃ¼tzer angegeben wird. AuÃŸerdem
% sind SchlÃ¼ssel-Wert-Paare als Option nutzbar. Mit der Sternversion werden die
% mit \cs{supervisor} angegebenen Betreuer als UnterstÃ¼tzer genannt.
%    \begin{macrocode}
\newcommand*\confirmation{%
  \kernel@ifstar{%
    \def\tud@fm@supporter{supporter=\@supervisor}%
    \tud@fm@confirmation%
  }{%
    \def\tud@fm@supporter{supporter=\@supporter}%
    \tud@fm@confirmation%
  }%
}
\newcommand*\tud@fm@confirmation[1][]{%
%    \end{macrocode}
% Damit das optionale Argument ohne SchlÃ¼ssel fÃ¼r die UnterstÃ¼tzer verwendet 
% werden kann, wird der Handler lokal umdefiniert. AuÃŸerdem werden irrelevante
% Parameter undefiniert gesetzt.
% \ToDo{SchlÃ¼ssel \prm{confirmation} als Alias fÃ¼r \prm{declaration}}[v2.07]^^A
%    \begin{macrocode}
  \begingroup%
    \TUD@parameter@handler@default[declaration]{supporter}%
    \undef\KV@declaration@company%
    \if@tud@declarations%
      \tud@fm@@confirmation[{\tud@fm@supporter,#1}]%
    \else%
      \begin{declarations}[{\tud@fm@supporter,#1}]%
        \tud@fm@@confirmation%
      \end{declarations}%
    \fi%
  \endgroup%
}
%    \end{macrocode}
% Dies ist der eigentliche Inhalt des Befehls \cs{confirmation}.
%    \begin{macrocode}
\newcommand*\tud@fm@@confirmation[1][]{%
  \tud@fm@body@start{declaration}{#1}{\confirmationname}%
    \confirmationtext\vskip\z@skip\@confirmationclosing%
  \tud@fm@body@end{declaration}%
}
%    \end{macrocode}
% \end{macro}^^A \tud@fm@@confirmation
% \end{macro}^^A \tud@fm@confirmation
% \end{macro}^^A \confirmation
% \begin{macro}{\blocking}
% \changes{v2.02}{2014/05/16}{neu, \cs{restriction} umbenannt}^^A
% \changes{v2.02}{2014/07/18}{an \pkg{scrlayer-scrpage} angepasst}^^A
% \changes{v2.03}{2015/01/30}{Bugfix fÃ¼r Spaltenanzahl}^^A
% \begin{macro}{\tud@fm@blocking}
% \changes{v2.02}{2014/07/18}{neu}^^A
% FÃ¼r den Sperrvermerk wird Ã¤quivalent zu \cs{confirmation} verfahren. Das
% optionale Argument ohne SchlÃ¼ssel setzt hier die Firma fÃ¼r den Sperrvermerk.
% \ToDo{SchlÃ¼ssel \prm{blocking} als Alias fÃ¼r \prm{declaration}}[v2.07]^^A
%    \begin{macrocode}
\newcommand*\blocking[1][]{%
  \begingroup%
    \TUD@parameter@handler@default[declaration]{company}%
    \undef\KV@declaration@supporter%
    \undef\KV@declaration@closing%
    \undef\KV@declaration@confirmationclosing%
    \if@tud@declarations%
      \tud@fm@blocking[{#1}]%
    \else%
      \begin{declarations}[{#1}]%
        \tud@fm@blocking%
      \end{declarations}%
    \fi%
  \endgroup%
}
%    \end{macrocode}
% Dies ist der eigentliche Inhalt des Befehls \cs{blocking}.
%    \begin{macrocode}
\newcommand*\tud@fm@blocking[1][]{%
  \tud@fm@body@start{declaration}{#1}{\blockingname}%
    \blockingtext%
  \tud@fm@body@end{declaration}%
}
%    \end{macrocode}
% \end{macro}^^A \tud@fm@blocking
% \end{macro}^^A \blocking
%
% \iffalse
%&lt;/class&amp;body&gt;
%&lt;/book|report|article&gt;
% \fi
%
% \PrintBackMatter
%
\endinput
</pre></body></html>