summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/tudscr/source/tudscr-frontmatter.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/tudscr/source/tudscr-frontmatter.dtx')
-rw-r--r--macros/latex/contrib/tudscr/source/tudscr-frontmatter.dtx1339
1 files changed, 1339 insertions, 0 deletions
diff --git a/macros/latex/contrib/tudscr/source/tudscr-frontmatter.dtx b/macros/latex/contrib/tudscr/source/tudscr-frontmatter.dtx
new file mode 100644
index 0000000000..57017e1136
--- /dev/null
+++ b/macros/latex/contrib/tudscr/source/tudscr-frontmatter.dtx
@@ -0,0 +1,1339 @@
+% \CheckSum{815}
+% \iffalse meta-comment
+%
+% TUD-Script -- Corporate Design of Technische Universität Dresden
+% ----------------------------------------------------------------------------
+%
+% Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2019
+%
+% ----------------------------------------------------------------------------
+%
+% 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-frontmatter.dtx
+%<*dtx>
+% \fi
+%
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\ProvidesFile{tudscr-frontmatter.dtx}[2019/06/28 v2.06 TUD-Script\space%
+ (frontmatter)%
+]
+%
+% \iffalse
+\documentclass[english,ngerman,xindy]{tudscrdoc}
+\ifpdftex{
+ \usepackage[T1]{fontenc}
+ \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
+}{
+ \usepackage{fontspec}
+}
+\usepackage{babel}
+\usepackage{tudscrfonts}
+\KOMAoptions{parskip=half-}
+\usepackage{bookmark}
+\usepackage[babel]{microtype}
+
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{tudscr-frontmatter.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/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 \cs{tud@abstract@\dots} oder aber \cs{tud@declaration@\dots} je nach
+% Element.
+%
+% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
+%
+% \iffalse
+%<*class&body>
+% \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}
+%<*book|report|article>
+ \global\let\tud@fm@set\tud@fm@first%
+% \end{macrocode}
+% Danach erfolgt ggf. die Prüfung der resultierenden Seitenhöhe.
+% \begin{macrocode}
+ \ifnumless{\csuse{tud@#1@level@num}}{3}{% false/true/section
+ \ifboolexpr{%
+ bool {@titlepage} and bool {@tud@#1@fil} and bool {@tud@#1@multi}%
+ }{%
+ \sbox\z@{\vbox{#2}}%
+ \ifdim\textheight<\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}
+ }{% chapter
+%<*book|report>
+ \boolfalse{@tud@#1@multi}%
+ \boolfalse{@tud@#1@fil}%
+%</book|report>
+ }%
+% \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}>\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}
+%</book|report|article>
+ \global\let\tud@fm@set\tud@fm@first%
+ #2%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@fm@check
+%
+% \iffalse
+%<*book|report|article>
+% \fi
+%
+% \begin{macro}{\tud@fm@toc}
+% \changes{v2.04}{2015/03/20}{neu}^^A
+% \changes{v2.06}{2018/02/22}{%
+% Bugfix: \cs{csuse\{phantomsection\}} für Anker%
+% }^^A
+% \begin{macro}{\tud@fm@@toc}
+% \changes{v2.04}{2015/03/20}{neu}^^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{}
+\newcommand*\tud@fm@toc[2]{%
+% \end{macrocode}
+% Der gesammelte Eintrag aller Überschriften ins Inhaltsverzeichnis.
+% \begin{macrocode}
+ \ifbool{@tud@#1@multi}{%
+ \begingroup%
+ \let\tud@fm@@@toc\@empty%
+ \renewcommand*\tud@fm@head[2]{%
+ \protected@edef\@tempa{##2}%
+ \protected@xdef\tud@fm@@toc{\tud@fm@@@toc\@tempa}%
+ \protected@xdef\tud@fm@@@toc{\tud@fm@@toc/}%
+ }%
+ \let\clearpage\relax%
+ \sbox\z@{\vbox{#2}}%
+ \csuse{phantomsection}%
+ \protected@edef\@tempa{%
+ \noexpand\endgroup%
+ \noexpand\ifnumodd{\csname tud@#1@toc@num\endcsname}{%
+%<*book|report>
+ \noexpand\addchaptertocentry{}{\tud@fm@@toc}%
+%</book|report>
+%<*article>
+ \noexpand\addsectiontocentry{}{\tud@fm@@toc}%
+%</article>
+ }{%
+%<*book|report>
+ \noexpand\addsectiontocentry{}{\tud@fm@@toc}%
+%</book|report>
+%<*article>
+ \noexpand\addsubsectiontocentry{}{\tud@fm@@toc}%
+%</article>
+ }%
+ }%
+ \@tempa%
+ }{%
+ \ClassWarning{\TUD@Class@Name}{%
+ It isn't possible to use `#1=single'\MessageBreak%
+%<*book|report>
+ or `#1=chapter'\space%
+%</book|report>
+ 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
+% \end{macro}^^A \tud@fm@toc
+%
+% \iffalse
+%</book|report|article>
+% \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{\ignorespaces%
+% \opt{titlepage}, \opt{twocolumn}, \opt{abstract/declaration}|=|\val{multi},
+% \opt{abstract/declaration}|=|\val{fill}\ignorespaces%
+% } 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}
+%<*book|report|article>
+ \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%
+%</book|report|article>
+% \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%
+%<book|report|article> \ifbool{@tud@#1@multi}{\par}{\newpage}%
+%<poster> \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}
+%<*book|report|article>
+ \if@titlepage%
+ \ifbool{@tud@#1@multi}{%
+ \ifbool{@tud@#1@fil}{\vfil}{}%
+ }{%
+ \ifbool{@tud@#1@fil}{\vfil\null\clearpage\null\vfil}{\clearpage}%
+ }%
+ \else%
+%</book|report|article>
+% \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%
+%<*book|report|article>
+ \fi%
+%</book|report|article>
+ \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}<\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>\@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>\@ne\relax%
+ \end{multicols}%
+ \vspace{-\multicolsep}%
+ \else%
+ \par%
+ \fi%
+ \if@twocolumn\else\if@titlepage\else\relax%
+ \ifnum\csuse{tud@#1@level@num}<\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 \cs{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 \cs{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}%
+ \ifstr{\@currenvir}{\tud@quoting}{}{%
+ \if@twocolumn%
+ \vskip\dimexpr\smallskipamount-\parskip\relax%
+ \else%
+ \vskip\dimexpr\bigskipamount-\parskip\relax%
+ \fi%
+ }%
+ \or% true
+ \if@titlepage\endgraf\fi%
+ \csuse{phantomsection}%
+ \@afterindentfalse%
+ \ifstr{\@currenvir}{\tud@quoting}{}{%
+ \vskip\dimexpr\bigskipamount-\parskip\relax%
+ }%
+ \begingroup%
+ \noindent\centering%
+ \normalfont\sectfont\nobreak#2%
+ \@endparpenalty\@M%
+ \endgraf%
+ \endgroup%
+ \nopagebreak%
+ \vskip\dimexpr\medskipamount-\parskip\relax%
+ \@afterheading%
+ \or% section
+ \section*{#2}%
+%<*book|report|article>
+ \ifx\@mkboth\@gobbletwo\else\markright{\MakeMarkcase{#2}}\fi%
+%<*book|report>
+ \or% chapter
+ \chapter*{#2}%
+ \@mkdouble{\MakeMarkcase{#2}}%
+%</book|report>
+%</book|report|article>
+ \fi%
+%<*book|report|article>
+ \ifbool{@tud@#1@markboth}{%
+ \markboth{\MakeMarkcase{#2}}{\MakeMarkcase{#2}}%
+ }{}%
+ \ifcase\csuse{tud@#1@toc@num}\relax\or% totoc
+%<*book|report>
+ \addchaptertocentry{}{#2}%
+%</book|report>
+%<*article>
+ \addsectiontocentry{}{#2}%
+%</article>
+ \or% totocleveldown
+%<*book|report>
+ \addsectiontocentry{}{#2}%
+%</book|report>
+%<*article>
+ \addsubsectiontocentry{}{#2}%
+%</article>
+ \fi%
+%</book|report|article>%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@fm@head
+%
+% \iffalse
+%<*book|report|article>
+% \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}{%
+%<*article>
+ The key `pagestyle' can only be used with\MessageBreak%
+ activated option `titlepage'%
+%</article>
+%<*book|report>
+ The key `pagestyle' can only be used either with\MessageBreak%
+ activated option `titlepage' or with chapter\MessageBreak%
+ headings (`#1=chapter')%
+%</book|report>
+ }%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@fm@pagestyle
+%
+% \iffalse
+%</book|report|article>
+% \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
+%</class&body>
+%<*class&option>
+% \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 Definiton 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},%
+%<*article|poster>
+ {new}{2},{standard}{2},{heading}{2},%
+%</article|poster>
+%<*book|report>
+ {chapter}{3},{chap}{3},{addchap}{3},%
+ {new}{3},{standard}{3},{heading}{3},%
+%</book|report>
+%<*book|report|article>
+ {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}%
+%</book|report|article>
+}
+% \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}
+%<*report|article|poster>
+\newcommand*\tud@abstract@level@num{0}
+%<report|article>\tud@locked@newnum{tud@abstract@toc@num}{0}
+%</report|article|poster>
+%<*book>
+\newcommand*\tud@abstract@level@num{3}
+\tud@locked@newnum{tud@abstract@toc@num}{1}
+%</book>
+% \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
+%<*book|report|article>
+% \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}
+\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}
+\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}
+\newif\if@tud@abstract@markboth
+% \end{macrocode}
+% \end{macro}^^A \if@tud@abstract@markboth
+%
+% \iffalse
+%</book|report|article>
+% \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}
+%<*report|article|poster>
+\TUD@key{abstract}[true]{%
+ \edef\@tempb{\TUD@bool@numkey,\tud@fm@switch}%
+%</report|article|poster>
+%<*book>
+\TUD@key{abstract}[chapter]{%
+ \edef\@tempb{\tud@fm@switch}%
+%</book>
+ \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
+%<*report|article|poster>
+ \renewcommand*\tud@abstract@level@num{0}%
+%<report|article> \tud@locked@num@preset{tud@abstract@toc@num}{0}%
+%</report|article|poster>
+ \or% true
+%<*report|article|poster>
+ \renewcommand*\tud@abstract@level@num{1}%
+%<report|article> \tud@locked@num@preset{tud@abstract@toc@num}{0}%
+%</report|article|poster>
+ \or% section
+ \renewcommand*\tud@abstract@level@num{2}%
+%<*book|report|article>
+ \tud@locked@num@preset{tud@abstract@toc@num}{1}%
+ \or% chapter
+%<*book|report>
+ \renewcommand*\tud@abstract@level@num{3}%
+ \tud@locked@num@preset{tud@abstract@toc@num}{1}%
+%</book|report>
+%</book|report|article>
+% \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}
+%<*book|report|article>
+ \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<\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<\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<\thr@@\relax%
+ \edef\@tempa{%
+ \noexpand\tud@locked@num@set{tud@abstract@toc@num}{%
+ \the\numexpr\tud@abstract@toc@num+2\relax%
+ }%
+ }\@tempa%
+ \fi%
+%</book|report|article>
+ \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]{%
+ \AtEndOfFamilyOptions{\TUDoptions{abstract=#1}}%
+}
+% \end{macrocode}
+% \end{option}^^A abstract
+%
+% \iffalse
+%</class&option>
+%<*class&body>
+% \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{\ignorespaces%
+% \opt{titlepage}, \opt{twocolumn}, \opt{abstract}|=|\val{multi},
+% \opt{abstract}|=|\val{fill}\ignorespaces%
+% } 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.
+% \begin{macrocode}
+%<*report|article|poster>
+\undef\abstract
+\undef\endabstract
+%</report|article|poster>
+\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}
+%<*book|report>
+ \ifnum\tud@abstract@level@num>\tw@\relax\@titlepagetrue\fi% chapter
+%</book|report>
+%<*book|report|article>
+ \let\tud@envir@ps\relax%
+%</book|report|article>
+% \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}
+%<*book|report|article>
+ \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%
+%</book|report|article>
+% \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}
+}[%
+%<*book|report|article>
+ \if@titlepage%
+ \if@tud@abstract@fil\vfil\null\fi%
+ \aftergroup\tud@currentpagestyle@reset%
+ \clearpage%
+ \else%
+%</book|report|article>
+ \ifnum\tud@abstract@level@num=\tw@\relax%
+ \vskip\dimexpr\bigskipamount-\parskip\relax%
+ \fi%
+%<*book|report|article>
+ \fi%
+%</book|report|article>
+]
+% \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}}%
+%<*book|report|article>
+ \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]{%
+ \ifstrbool{#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}%
+ }%
+ }%
+%</book|report|article>
+ \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.
+% \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
+%</class&body>
+%<*book|report|article>
+%<*class&option>
+% \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}
+%<*report|article>
+\newcommand*\tud@declaration@level@num{1}
+\tud@locked@newnum{tud@declaration@toc@num}{0}
+%</report|article>
+%<*book>
+\newcommand*\tud@declaration@level@num{3}
+\tud@locked@newnum{tud@declaration@toc@num}{1}
+%</book>
+\newif\if@tud@declaration@multi
+\@tud@declaration@multitrue
+\newif\if@tud@declaration@fil
+\@tud@declaration@filtrue
+\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}
+%<*report|article>
+\TUD@key{declaration}[true]{%
+%</report|article>
+%<*book>
+\TUD@key{declaration}[chapter]{%
+%</book>
+ \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
+%<*book|report>
+ \renewcommand*\tud@declaration@level@num{3}%
+ \tud@locked@num@preset{tud@declaration@toc@num}{1}%
+%</book|report>
+ \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<\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<\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<\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
+%</class&option>
+%<*class&body>
+% \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}
+\newif\if@tud@declarations
+\NewEnviron{declarations}[1][]{%
+ \@tud@declarationstrue%
+%<*book|report>
+ \ifnum\tud@declaration@level@num>\tw@\relax\@titlepagetrue\fi% chapter
+%</book|report>
+ \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\dimexpr\bigskipamount-\parskip\relax%
+ \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.
+% \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]{%
+ \ifstrbool{#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][]{%
+ \ifbool{@tud@declarations}{%
+ \begingroup%
+ \tud@fm@@confirmation[\tud@fm@supporter,#1]%
+ \tud@fm@blocking[#1]%
+ \endgroup%
+ }{%
+ \begin{declarations}[\tud@fm@supporter,#1]%
+ \tud@fm@@confirmation%
+ \tud@fm@blocking%
+ \end{declarations}%
+ }%
+}
+% \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][]{%
+ \ifbool{@tud@declarations}{%
+ \tud@fm@body@start{declaration}{#1}{#2}%
+ #3%
+ \tud@fm@body@end{declaration}%
+ }{%
+ \ClassError{\TUD@Class@Name}{Incorrect usage of `\string\nextdeclaration'}{%
+ The command `\string\nextdeclaration' can only be used\MessageBreak%
+ within the environment `declarations'.%
+ }%
+ }%
+}
+% \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.
+% \begin{macrocode}
+ \begingroup%
+ \TUD@parameter@handler@default[declaration]{supporter}%
+ \undef\KV@declaration@company%
+ \ifbool{@tud@declarations}{%
+ \tud@fm@@confirmation[\tud@fm@supporter,#1]%
+ }{%
+ \begin{declarations}[\tud@fm@supporter,#1]%
+ \tud@fm@@confirmation%
+ \end{declarations}%
+ }%
+ \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@\@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.
+% \begin{macrocode}
+\newcommand*\blocking[1][]{%
+ \begingroup%
+ \TUD@parameter@handler@default[declaration]{company}%
+ \undef\KV@declaration@supporter%
+ \undef\KV@declaration@closing%
+ \undef\KV@declaration@confirmationclosing%
+ \ifbool{@tud@declarations}{%
+ \tud@fm@blocking[#1]%
+ }{%
+ \begin{declarations}[#1]%
+ \tud@fm@blocking%
+ \end{declarations}%
+ }%
+ \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
+%</class&body>
+%</book|report|article>
+% \fi
+%
+% \Finale
+%
+\endinput