diff options
Diffstat (limited to 'macros/latex/contrib/tudscr/source/tudscr-frontmatter.dtx')
-rw-r--r-- | macros/latex/contrib/tudscr/source/tudscr-frontmatter.dtx | 1339 |
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 |