% \iffalse meta-comment %/GitFileInfo=tudscr-frontmatter.dtx % % TUD-Script -- Corporate Design of Technische Universität Dresden % ---------------------------------------------------------------------------- % % Copyright (C) Falk Hanisch , 2012-2022 % % ---------------------------------------------------------------------------- % % This work may be distributed and/or modified under the conditions of the % LaTeX Project Public License, either version 1.3c of this license or % any later version. The latest version of this license is in % http://www.latex-project.org/lppl.txt % and version 1.3c or later is part of all distributions of % LaTeX version 2008-05-04 or later. % % This work has the LPPL maintenance status "maintained". % % The current maintainer and author of this work is Falk Hanisch. % % ---------------------------------------------------------------------------- % % \fi % % \iffalse ins:batch + dtx:driver %<*ins> \ifx\documentclass\undefined \input docstrip.tex \ifToplevel{\batchinput{tudscr.ins}} \else \let\endbatchfile\relax \fi \endbatchfile % %<*dtx> \ProvidesFile{tudscr-frontmatter.dtx}[2022/08/09] \RequirePackage{tudscr-gitinfo} \documentclass[english,ngerman,xindy]{tudscrdoc} \iftutex \usepackage{fontspec} \else \usepackage[T1]{fontenc} \usepackage[ngerman=ngerman-x-latest]{hyphsubst} \fi \usepackage{babel} \usepackage{tudscrfonts} \usepackage[babel]{microtype} \GitHubBase{\TUDScriptRepository} \begin{document} \author{Falk Hanisch\TUDScriptContactTitle} \maketitle \tableofcontents \DocInput{\filename} \end{document} % % \fi % % \selectlanguage{ngerman} % % \changes{v2.02}{2014/07/08}{\cs{FamilyKeyState} wird von Optionen genutzt}^^A % \changes{v2.05}{2015/07/07}{Umgebung \env{abstract} für Poster}^^A % % % % \section{Befehle und Umgebungen für den Vorspann} % % Im Vorspann des Dokumentes kann der Benutzer eine Zusammenfassung oder auch % Kurzfassung angegeben. Des Weiteren kann eine Selbstständigkeitserklärung % sowie ein Sperrvermerk hinzugefügt werden. Damit sich für diese das Layout % möglichst individuell wählen lässt, werden hier entsprechende Optionen und % die dafür notwendige Ausgabe definiert. Im weiteren Verlauf der Dokumentation % werden die Begriffe \enquote*{Zusammenfassung}, \enquote*{Kurzfassung} sowie % \enquote*{Erklärung} für die unterschiedlichen Elemente als gleichwertige % Synonyme verwendet. Die Schalter und Befehle zum Setzen der Optionen heißen % entweder |\tud@abstract@...| oder |\tud@declaration@...| je nach Element. % % \iffalse %<*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} \ifnum\csuse{tud@#1@level@num}<3\relax% false/true/section \ifboolexpr{% bool {@titlepage} and bool {@tud@#1@fil} and bool {@tud@#1@multi}% }{% % \end{macrocode} % Das Erstellen von Outline-Einträgen wird innerhalb der Box deaktiviert. % \begin{macrocode} \sbox\z@{% \renewcommand*\addtocentrydefault[3]{}% \vbox{#2}% }% \ifdim\textheight<\dimexpr\ht\z@+\dp\z@\relax% \ClassWarning{\TUD@Class@Name}{% The given content within the `#1'\MessageBreak% environment is too large, so it wasn't possible\MessageBreak% to center the body vertically. Setting the option\MessageBreak% `#1=nofill' would be a solution. You\MessageBreak% could also use multiple `#1' environments% }% \boolfalse{@tud@#1@fil}% \fi% }{}% % \end{macrocode} % Sollte die Gliederungsebene der Erklärung einem Kapitel entsprechen, wird % jede Erklärung immer auf eine neue Seite gesetzt. Die Optionen zum vertikalen % Zentrieren wird ignoriert. Auf eine Warnung für den Anwender wird verzichtet. % \begin{macrocode} \else% chapter %<*book|report> \boolfalse{@tud@#1@multi}% \boolfalse{@tud@#1@fil}% % \fi% % \end{macrocode} % Zum Schluss wird ggf. der gesammelte Eintrag im Inhaltsverzeichnis erstellt. % Danach wird das übergebene Argument ausgeführt. % \begin{macrocode} \ifnum\csuse{tud@#1@toc@num}>\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} % \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{phantomsection} für Anker}^^A % \begin{macro}{\tud@fm@@toc} % \changes{v2.04}{2015/03/20}{neu}^^A % Ist die Einstellung \val{tocaggregate} aktiv, wird der gesammelte Eintrag ins % Inhaltsverzeichnis generiert. % \begin{macrocode} \newcommand*\tud@fm@@toc{} \newcommand*\tud@fm@toc[2]{% % \end{macrocode} % Der gesammelte Eintrag aller Überschriften ins Inhaltsverzeichnis. Dafür % wird der komplette Inhalt in einer Box gesetzt und nur die Überschriften % aggregiert. % \begin{macrocode} \ifbool{@tud@#1@multi}{% \begingroup% \let\tud@fm@@toc\@empty% \renewcommand*\tud@fm@head[2]{% \protected@xdef\tud@fm@@toc{% \ifx\tud@fm@@toc\@empty\else\tud@fm@@toc/\fi##2% }% }% \let\clearpage\relax% \sbox\z@{\vbox{#2}}% \csuse{phantomsection}% \protected@edef\@tempa{% \endgroup% \ifx\tud@fm@@toc\@empty\else% \ifodd\csuse{tud@#1@toc@num}\relax %<*book|report> \noexpand\addchaptertocentry{}{\tud@fm@@toc}% % %<*article> \noexpand\addsectiontocentry{}{\tud@fm@@toc}% % \else %<*book|report> \noexpand\addsectiontocentry{}{\tud@fm@@toc}% % %<*article> \noexpand\addsubsectiontocentry{}{\tud@fm@@toc}% % \fi \fi% }% \@tempa% }{% \ClassWarning{\TUD@Class@Name}{% It isn't possible to use `#1=single'\MessageBreak% %<*book|report> or `#1=chapter'\space% % with `#1=tocmultiple'% }% \edef\@tempa{% \noexpand\tud@locked@num@set{tud@#1@toc@num}{% \the\numexpr\csuse{tud@#1@toc@num}-2\relax% }% }% \@tempa% }% } % \end{macrocode} % \end{macro}^^A \tud@fm@@toc % \end{macro}^^A \tud@fm@toc % % \iffalse % % \fi % % \begin{macro}{\tud@fm@set} % \changes{v2.02}{2014/07/18}{Neuimplementierung für \pkg{scrlayer-scrpage}}^^A % \changes{v2.04}{2015/03/20}{Reimplementierung}^^A % \begin{macro}{\tud@fm@first} % \changes{v2.04}{2015/03/20}{neu}^^A % \begin{macro}{\tud@fm@next} % \changes{v2.02}{2014/07/19}{neu}^^A % \changes{v2.04}{2015/03/20}{Reimplementierung}^^A % \changes{v2.05}{2015/07/14}{Bugfix bei vertikaler Zentrierung}^^A % Mit diesen Makros werden bei der Ausgabe der einzelnen Erklärungen alle % relevanten Optionen\footnote{\opt{titlepage}, \opt{twocolumn}, % \opt{abstract/declaration}|=|\val{multi}, % \opt{abstract/declaration}|=|\val{fill}} % ausgewertet und die notwendigen vertikalen Abstände entsprechend gesetzt. % Dabei wird durch jede Zusammenfassung bzw. Erklärung \cs{tud@fm@set} über % \cs{tud@fm@body@start} verwendet. Der Inhalt der beiden Umgebungen % \env{abstract} und \env{descriptions} wird mit \cs{tud@fm@check} ausgegeben. % \begin{macrocode} \newcommand\tud@fm@set[1]{} \newcommand\tud@fm@first[1]{% % \end{macrocode} % Im Zweispaltensatz wird der Inhalt der Umgebung einfach ausgegeben, eine % vertikale Zentrierung findet nicht statt. Beim einspaltigen Satz wird die % \opt{titlepage}-Option beachtet. % \begin{macrocode} %<*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% % % \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% % \ifbool{@tud@#1@multi}{\par}{\newpage}% % \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% % % \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% % \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 |\tud@|\meta{Typ}|@level@num| % gespeichert. Verwendet wird das Makro folgendermaßen: % \cs{tud@fm@head}\marg{Erklärungstyp}\marg{Überschrift}. Damit % die ggf. aktive Option \opt{abstract/declaration}|=|\val{toc} funktionieren % kann, wird für die Level, in denen keine Standardüberschrift verwendet wird, % mit dem Befehl \cs{phantomsection} aus dem Paket \pkg{hyperref}~-- wenn es % tatsächlich geladen wurde~-- ein Anker für einen Hyperlink erzeugt. % % Ist |\tud@|\meta{Typ}|@toc@num| ungerade, so entspricht die Ebene des % erzeugten Eintrags ins Inhaltsverzeichnis für \cls{tudscrartcl} normalerweise % dem eines Abschnitts, der für \cls{tudscrbook} und \cls{tudscrreprt} dem eines % Kapitels.\footnote{sonst sieht das Inhaltsverzeichnis recht bescheiden aus} % Mit der Eintellung \val{tocleveldown} kann der Eintrag um eine Ebene % reduziert werden. % \begin{macrocode} \newcommand*\tud@fm@head[2]{% \ifcase\csuse{tud@#1@level@num}\relax% false \if@titlepage\endgraf\fi% \csuse{phantomsection}% \tud@if@strequal{\@currenvir}{\tud@quoting}{}{% \if@twocolumn% \vskip\smallskipamount% \else% \vskip\bigskipamount% \fi% \vskip-\parskip% }% \or% true \if@titlepage\endgraf\fi% \csuse{phantomsection}% \@afterindentfalse% \tud@if@strequal{\@currenvir}{\tud@quoting}{}{% \vskip\bigskipamount\vskip-\parskip% }% \begingroup% \noindent\centering% \normalfont\sectfont\nobreak#2% \@endparpenalty\@M% \endgraf% \endgroup% \nopagebreak% \vskip\medskipamount\vskip-\parskip% \@afterheading% \or% section \section*{#2}% %<*book|report|article> \ifx\@mkboth\@gobbletwo\else\markright{\MakeMarkcase{#2}}\fi% %<*book|report> \or% chapter \chapter*{#2}% \@mkdouble{\MakeMarkcase{#2}}% % % \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}% % %<*article> \addsectiontocentry{}{#2}% % \or% totocleveldown %<*book|report> \addsectiontocentry{}{#2}% % %<*article> \addsubsectiontocentry{}{#2}% % \fi% %% } % \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'% % %<*book|report> The key `pagestyle' can only be used either with\MessageBreak% activated option `titlepage' or with chapter\MessageBreak% headings (`#1=chapter')% % }% \fi% } % \end{macrocode} % \end{macro}^^A \tud@fm@pagestyle % % \iffalse % % \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&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 Definition der beiden Optionen \opt{abstract} und % \opt{declaration} eingefügt. Außerdem werden zusätzliche Werte zur Auswahl % einer Gliederungsebene für die gesetzten Überschriften wie \cs{section} oder % \cs{chapter}\footnote{nicht für \cls{tudscrartcl}} oder bereitgestellt, % welche auch für die Buchklasse \cls{tudscrbook} zur Verfügung stehen. Das % Setzen von Einträgen ins Inhaltsverzeichnis lässt sich ebenfalls anpassen. % % Des Weiteren werden mehrere Schlüssel für die Anordnung und Positionierung % von Zusammenfassung bzw. Erklärungen bereitgestellt. Diese dienen dem Setzen % der Optionen \opt{abstract} bzw. \opt{declaration} mit den Werten % \val{single/multi}, \val{toc/notoc}, \val{fill/nofill} sowie \val{leveldown}. % \begin{macrocode} \newcommand*\tud@fm@switch{% {section}{2},{sect}{2},{sec}{2},{addsec}{2},% %<*article|poster> {new}{2},{standard}{2},{heading}{2},% % %<*book|report> {chapter}{3},{chap}{3},{addchap}{3},% {new}{3},{standard}{3},{heading}{3},% % %<*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}% % } % \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} %\tud@locked@newnum{tud@abstract@toc@num}{0} % %<*book> \newcommand*\tud@abstract@level@num{3} \tud@locked@newnum{tud@abstract@toc@num}{1} % % \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} \tud@newif\if@tud@abstract@multi \@tud@abstract@multitrue % \end{macrocode} % \end{macro}^^A \if@tud@abstract@multi % \begin{macro}{\if@tud@abstract@fil} % Mit diesem Schalter wird bestimmt, ob eine Zusammenfassung auf einer Seite % vertikal zentriert wird. Er wird mit \opt{abstract}|=|\val{fill/nofill} % gesetzt und ist normalerweise aktiviert. % \begin{macrocode} \tud@newif\if@tud@abstract@fil \@tud@abstract@filtrue % \end{macrocode} % \end{macro}^^A \if@tud@abstract@fil % \begin{macro}{\if@tud@abstract@markboth} % \changes{v2.02}{2014/11/05}{neu}^^A % Dieser Schalter setzt rechten und linken Kolumnentitel automatisch auf die % verwendete Überschrift. % \begin{macrocode} \tud@newif\if@tud@abstract@markboth % \end{macrocode} % \end{macro}^^A \if@tud@abstract@markboth % % \iffalse % % \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}% % %<*book> \TUD@key{abstract}[chapter]{% \edef\@tempb{\tud@fm@switch}% % \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}% % \tud@locked@num@preset{tud@abstract@toc@num}{0}% % \or% true %<*report|article|poster> \renewcommand*\tud@abstract@level@num{1}% % \tud@locked@num@preset{tud@abstract@toc@num}{0}% % \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}% % % % \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% % \fi% \fi% } % \end{macrocode} % Damit der Anwender die erweiterten Einstellungen für die Zusammenfassung auch % wie gewohnt über \cs{KOMAoptions} setzen kann, wird die entsprechende Option % ebenfalls definiert. % \begin{macrocode} \DefineFamilyMember{KOMA} \DefineFamilyKey{KOMA}{abstract}[true]{% \FamilyKeyStateUnknownValue% \AtEndOfFamilyOptions{\TUDoptions{abstract=#1}}% } % \end{macrocode} % \end{option}^^A abstract % % \iffalse % %<*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{\opt{titlepage}, \opt{twocolumn}, % \opt{abstract}|=|\val{multi}, \opt{abstract}|=|\val{fill}} % sowie Gliederungsebene der Überschrift beachten zu können, wird auf die % Möglichkeiten der Definition mit \cs{NewEnviron} aus dem Paket \pkg{environ} % zurückgegriffen. Damit ist es möglich, gezielt auf den Inhalt der Umgebung % selbst mit dem Befehl \cs{BODY} zuzugreifen. Dieser Mechanismus wird % innerhalb von \cs{tud@abstractbody} verwendet. % \ToDo{parameter title, um \cs{abstractname} lokal zu ändern}[v2.07] % \ToDo{eher NewDocumentEnvironment nutzen?}[v2.07] % \begin{macrocode} %<*report|article|poster> \undef\abstract \undef\endabstract % \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|article> \let\tud@envir@ps\relax% % % \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% % % \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% % \ifnum\tud@abstract@level@num=\tw@\relax% \vskip\bigskipamount\vskip-\parskip% \fi% %<*book|report|article> \fi% % ] % \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]{% \tud@if@strbool{#1}{% \@tud@abstract@markbothtrue% \ifx\tud@envir@ps\relax\def\tud@envir@ps{headings}\fi% }{% \@tud@abstract@markbothfalse% }{% \@tud@abstract@markbothfalse% \ifx\tud@envir@ps\relax\def\tud@envir@ps{headings}\fi% \manualmark\markboth{#1}{#1}% }% }% % \TUD@parameter@def{abstract}{\TUDoption{abstract}{#1}}% \TUD@parameter@let{option}{abstract}% % \end{macrocode} % Für die Optionsangabe ohne Schlüssel und Wert kann eine Anzahl an Spalten % oder eine alternative Sprache angegeben werden. Für die Auswertung des % Argumentes verantwortlich ist der Befehl \cs{TUD@parameter@handler@default}, % welcher auch von der Umgebung \env{tudpage} verwendet wird. % \ToDo{unbekannte Schlüssel als Werte an \prm{abstract}}[v2.07]^^A % \begin{macrocode} \TUD@parameter@handler@default{}% } % \end{macrocode} % Der Befehl \cs{nextabstract} lässt sich nur in der Umgebung \env{abstract} % verwenden. % \begin{macrocode} \newcommand*\nextabstract[1][]{% \ClassError{\TUD@Class@Name}{Incorrect usage of `\string\nextabstract'}{% The command `\string\nextabstract' can only be used within\MessageBreak% the environment `abstract'.% }% } % \end{macrocode} % \end{macro}^^A \nextabstract % \end{parameter}^^A option % \end{parameter}^^A abstract % \end{parameter}^^A markboth % \end{parameter}^^A pagestyle % \end{parameter}^^A columns % \end{parameter}^^A language % \end{environment}^^A abstract % % \iffalse % %<*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} % %<*book> \newcommand*\tud@declaration@level@num{3} \tud@locked@newnum{tud@declaration@toc@num}{1} % \tud@newif\if@tud@declaration@multi \@tud@declaration@multitrue \tud@newif\if@tud@declaration@fil \@tud@declaration@filtrue \tud@newif\if@tud@declaration@markboth % \end{macrocode} % \end{macro}^^A \if@tud@declaration@markboth % \end{macro}^^A \if@tud@declaration@fil % \end{macro}^^A \if@tud@declaration@multi % \end{macro}^^A \tud@declaration@toc@num@locked % \end{macro}^^A \tud@declaration@toc@num % \end{macro}^^A \tud@declaration@level@num % \begin{option}{declaration} % Siehe die Option \opt{abstract}. % \begin{macrocode} %<*report|article> \TUD@key{declaration}[true]{% % %<*book> \TUD@key{declaration}[chapter]{% % \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}% % \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&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} \tud@newif\if@tud@declarations \NewEnviron{declarations}[1][]{% \@tud@declarationstrue% %<*book|report> \ifnum\tud@declaration@level@num>\tw@\relax\@titlepagetrue\fi% chapter % \let\tud@envir@ps\relax% \TUD@parameter@set{declaration}{#1}% \tud@x@multicol@check% \if@titlepage% \tud@currentpagestyle@set% \ifx\tud@envir@ps\relax% \tud@if@tudheadings{\currentpagestyle}{% \def\tud@envir@ps{empty.tudheadings}% }{% \def\tud@envir@ps{empty}% }% \fi% \clearpage% \tud@envir@selectps% \fi% % \end{macrocode} % Falls innerhalb der Erklärung durch den Anwender bestimmte Felder verwendet % werden, werden vorsichtshalber Befehle für die Titelei \enquote{entschärft}. % \begin{macrocode} \def\and{, }% \let\thanks\@gobble% % \end{macrocode} % Im Gegensatz zur \env{abstract}-Umgebung werden in der Umgebung % \env{declarations} alle Erklärungen als \emph{geschlossene} Variante genutzt, % um diese einzeln und nacheinander anzugeben. Jedes hierfür nutzbare Makro % (\cs{declaration}, \cs{nextdeclaration}, \cs{blocking} und \cs{confirmation}) % kann so innerhalb der Umgebung verwendet werden und führt intern die beiden % Makros \cs{tud@fm@body@start} und \cs{tud@fm@body@end} selbstständig aus. % Alternativ dazu müsste relativ umständlich geprüft werden, ob der Aufruf von % \cs{tud@fm@body@start} bereits erfolgte \emph{und} danach auch schon Text % ausgegeben wurde. Einen Mehrwert bei der Nutzung hätte dies jedoch nicht % gehabt außer der äquivalenten Verwendung von \cs{nextdeclaration} und % \cs{nextabstract}, worauf der Einfachheit halber gerne verzichtet wurde, % insbesondere da die erwartete Nutzung des Befehls \cs{nextdeclaration} als % sehr gering einzustufen ist. % \begin{macrocode} \tud@fm@check{declaration}{\BODY}% }[% \if@titlepage% \if@tud@declaration@fil\vfil\null\fi% \aftergroup\tud@currentpagestyle@reset% \clearpage% \else% \ifnum\tud@declaration@level@num=\tw@\relax% \vskip\bigskipamount\vskip-\parskip% \fi% \fi% ] % \end{macrocode} % Dies sind die möglichen Schlüssel für die Befehle \cs{declaration}, % \cs{confirmation} und \cs{blocking}. Die Schlüssel \opt{declaration} bzw. % \opt{option} dienen zum Setzen der Werte, welche auch als Klassenoptionen % gesetzt werden können. % \ToDo{unbekannte Schlüssel als Werte an \prm{declaration}}[v2.07]^^A % \begin{macrocode} \TUD@parameter@family{declaration}{% \TUD@parameter@def{language}{\selectlanguage{#1}}% \TUD@parameter@def{columns}{\renewcommand*\tud@x@multicol@num{#1}}% \TUD@parameter@def{pagestyle}{\tud@fm@pagestyle{declaration}{#1}}% \TUD@parameter@def{markboth}[true]{% \tud@if@strbool{#1}{% \@tud@declaration@markbothtrue% \ifx\tud@envir@ps\relax\def\tud@envir@ps{headings}\fi% }{% \@tud@declaration@markbothfalse% }{% \@tud@declaration@markbothfalse% \ifx\tud@envir@ps\relax\def\tud@envir@ps{headings}\fi% \manualmark\markboth{#1}{#1}% }% }% \TUD@parameter@def{company}{\def\@company{#1}}% \TUD@parameter@def{supporter}{\def\@supporter{#1}}% \TUD@parameter@def{place}{\def\@place{#1}}% \TUD@parameter@def{closing}{\def\@confirmationclosing{#1}}% \TUD@parameter@let{confirmationclosing}{closing}% \TUD@parameter@def{declaration}{\TUDoption{declaration}{#1}}% \TUD@parameter@let{option}{declaration}% \TUD@parameter@handler@default{}% } % \end{macrocode} % \end{macro}^^A \if@tud@declarations % \end{parameter}^^A option % \end{parameter}^^A declaration % \end{parameter}^^A closing % \end{parameter}^^A place % \end{parameter}^^A supporter % \end{parameter}^^A company % \end{parameter}^^A markboth % \end{parameter}^^A pagestyle % \end{parameter}^^A columns % \end{parameter}^^A language % \end{environment}^^A declarations % \begin{macro}{\tud@fm@supporter} % \changes{v2.05}{2015/10/27}{neu}^^A % Dies ist ein Hilfsmakro, um die Sternversionen der beiden Befehle % \cs{declaration} und \cs{confirmation} zu realisieren. % \begin{macrocode} \newcommand*\tud@fm@supporter{} % \end{macrocode} % \end{macro}^^A \tud@fm@supporter % \begin{macro}{\declaration} % \changes{v2.02}{2014/07/18}{Neuimplementierung für \pkg{scrlayer-scrpage}}^^A % \changes{v2.03}{2015/01/30}{Bugfix für Spaltenanzahl}^^A % \changes{v2.05}{2015/10/27}{Sternversion für Betreuer als Unterstützer}^^A % \begin{macro}{\tud@fm@declaration} % \changes{v2.05}{2015/10/27}{neu}^^A % \begin{macro}{\nextdeclaration} % \changes{v2.04}{2015/03/20}{neu}^^A % Dieser Befehl dient zur Ausgabe von sowohl Selbstständigkeitserklärung als % auch Sperrvermerk. Über das optionale Argument kann ohne Schlüssel die % gewünschte Sprache eingestellt werden. Zusätzlich können Optionen als % Schlüssel-Wert-Paare angegeben werden. Die Sternversion erzwingt die Ausgabe % der in \cs{@supporter} gespeicherten Betreuer als Unterstützer. % \begin{macrocode} \newcommand*\declaration{% \kernel@ifstar{% \def\tud@fm@supporter{supporter=\@supervisor}% \tud@fm@declaration% }{% \def\tud@fm@supporter{supporter=\@supporter}% \tud@fm@declaration% }% } \newcommand*\tud@fm@declaration[1][]{% \if@tud@declarations% \begingroup% \tud@fm@@confirmation[{\tud@fm@supporter,#1}]% \tud@fm@blocking[{#1}]% \endgroup% \else% \begin{declarations}[{\tud@fm@supporter,#1}]% \tud@fm@@confirmation% \tud@fm@blocking% \end{declarations}% \fi% } % \end{macrocode} % Mit \cs{nextdeclaration} kann eine freie Erklärung abgegeben werden. Dabei % sind~-- im Gegensatz zu \cs{nextabstract}~-- sowohl Überschrift als auch der % Inhalt als obligatorisches Argument anzugeben, da innerhalb der Umgebung % \env{declarations} die geschlossene Angabe des Inhalts innerhalb von % \cs{tud@fm@body@start} und \cs{tud@fm@body@end} notwendig ist. % \begin{macrocode} \newcommand*\nextdeclaration[3][]{% \if@tud@declarations% \tud@fm@body@start{declaration}{#1}{#2}% #3% \tud@fm@body@end{declaration}% \else% \ClassError{\TUD@Class@Name}{Incorrect usage of `\string\nextdeclaration'}{% The command `\string\nextdeclaration' can only be used\MessageBreak% within the environment `declarations'.% }% \fi% } % \end{macrocode} % \end{macro}^^A \nextdeclaration % \end{macro}^^A \tud@fm@declaration % \end{macro}^^A \declaration % \begin{macro}{\confirmation} % \changes{v2.02}{2014/07/18}{Neuimplementierung für \pkg{scrlayer-scrpage}}^^A % \changes{v2.03}{2015/01/30}{Bugfix für Spaltenanzahl}^^A % \changes{v2.05}{2015/10/27}{Sternversion für Betreuer als Unterstützer}^^A % \begin{macro}{\tud@fm@confirmation} % \changes{v2.05}{2015/10/27}{neu}^^A % \begin{macro}{\tud@fm@@confirmation} % \changes{v2.02}{2014/07/18}{neu}^^A % Mit diesem Befehl kann die Selbstständigkeitserklärung ausgegeben werden. Das % optionale Argument bestimmt, wer als Unterstützer angegeben wird. Außerdem % sind Schlüssel-Wert-Paare als Option nutzbar. Mit der Sternversion werden die % mit \cs{supervisor} angegebenen Betreuer als Unterstützer genannt. % \begin{macrocode} \newcommand*\confirmation{% \kernel@ifstar{% \def\tud@fm@supporter{supporter=\@supervisor}% \tud@fm@confirmation% }{% \def\tud@fm@supporter{supporter=\@supporter}% \tud@fm@confirmation% }% } \newcommand*\tud@fm@confirmation[1][]{% % \end{macrocode} % Damit das optionale Argument ohne Schlüssel für die Unterstützer verwendet % werden kann, wird der Handler lokal umdefiniert. Außerdem werden irrelevante % Parameter undefiniert gesetzt. % \ToDo{Schlüssel \prm{confirmation} als Alias für \prm{declaration}}[v2.07]^^A % \begin{macrocode} \begingroup% \TUD@parameter@handler@default[declaration]{supporter}% \undef\KV@declaration@company% \if@tud@declarations% \tud@fm@@confirmation[{\tud@fm@supporter,#1}]% \else% \begin{declarations}[{\tud@fm@supporter,#1}]% \tud@fm@@confirmation% \end{declarations}% \fi% \endgroup% } % \end{macrocode} % Dies ist der eigentliche Inhalt des Befehls \cs{confirmation}. % \begin{macrocode} \newcommand*\tud@fm@@confirmation[1][]{% \tud@fm@body@start{declaration}{#1}{\confirmationname}% \confirmationtext\vskip\z@skip\@confirmationclosing% \tud@fm@body@end{declaration}% } % \end{macrocode} % \end{macro}^^A \tud@fm@@confirmation % \end{macro}^^A \tud@fm@confirmation % \end{macro}^^A \confirmation % \begin{macro}{\blocking} % \changes{v2.02}{2014/05/16}{neu, \cs{restriction} umbenannt}^^A % \changes{v2.02}{2014/07/18}{an \pkg{scrlayer-scrpage} angepasst}^^A % \changes{v2.03}{2015/01/30}{Bugfix für Spaltenanzahl}^^A % \begin{macro}{\tud@fm@blocking} % \changes{v2.02}{2014/07/18}{neu}^^A % Für den Sperrvermerk wird äquivalent zu \cs{confirmation} verfahren. Das % optionale Argument ohne Schlüssel setzt hier die Firma für den Sperrvermerk. % \ToDo{Schlüssel \prm{blocking} als Alias für \prm{declaration}}[v2.07]^^A % \begin{macrocode} \newcommand*\blocking[1][]{% \begingroup% \TUD@parameter@handler@default[declaration]{company}% \undef\KV@declaration@supporter% \undef\KV@declaration@closing% \undef\KV@declaration@confirmationclosing% \if@tud@declarations% \tud@fm@blocking[{#1}]% \else% \begin{declarations}[{#1}]% \tud@fm@blocking% \end{declarations}% \fi% \endgroup% } % \end{macrocode} % Dies ist der eigentliche Inhalt des Befehls \cs{blocking}. % \begin{macrocode} \newcommand*\tud@fm@blocking[1][]{% \tud@fm@body@start{declaration}{#1}{\blockingname}% \blockingtext% \tud@fm@body@end{declaration}% } % \end{macrocode} % \end{macro}^^A \tud@fm@blocking % \end{macro}^^A \blocking % % \iffalse % % % \fi % % \PrintBackMatter % \endinput