diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/tudscr/tudscr-frontmatter.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/tudscr/tudscr-frontmatter.dtx | 861 |
1 files changed, 861 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr-frontmatter.dtx b/Master/texmf-dist/source/latex/tudscr/tudscr-frontmatter.dtx new file mode 100644 index 00000000000..123bc84176f --- /dev/null +++ b/Master/texmf-dist/source/latex/tudscr/tudscr-frontmatter.dtx @@ -0,0 +1,861 @@ +% \CheckSum{459} +% \iffalse meta-comment +% ====================================================================== +% +% Das Corporate Design der TU Dresden auf Basis der KOMA-Script-Klassen +% +% ====================================================================== +% 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 +% version 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, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (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 +%<*driver> +% \fi +\ProvidesFile{tudscr-frontmatter.dtx}% + [2014/04/24 v2.00 TUD-KOMA-Script (frontmatter)] +% \iffalse +\documentclass{tudscrdoc} +\KOMAoptions{parskip=half-} +\CodelineIndex +\RecordChanges +\GetFileInfo{tudscr-frontmatter.dtx} +\begin{document} + \maketitle + \DocInput{\filename} +\end{document} +%</driver> +% \fi +% +% \selectlanguage{ngerman} +% +% \section{Befehle und Umgebungen für den Vorspann} +% +% Im Vorspann des Dokumentes kann der Benutzer eine Zusammenfassung angegeben. +% Außerdem kann eine Selbstständigkeitserklärung sowie ein Sperrvermerk +% hinzugefügt werden. Damit für diese das Layout möglichst individuell gewählt +% werden kann, werden hier entsprechende Optionen und die dafür notwendige +% Ausgabe definiert. Im weiteren Verlauf der Dokumentation wird der Begriff +% \glqq Erklärung\grqq für die unterschiedlichen Elemente verwendet. Die +% verwendeten 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} +% +% \iffalse +%<*class&!option> +% \fi +% +% \begin{macro}{\tud@fm@set} +% Dies ist das zentrale Makro zur Ausgabe der einzelnen Erklärungen, welches +% alle relevanten Optionen\footnote{\opt{titlepage}, \opt{twocolumn}, +% \opt{abstract/declaration=double}, \opt{abstract/declaration=fill} sowie die +% Gliederungsebene der Überschrift} unterscheidet und die Erklärungen diesen +% entsprechend setzt. Verwendet wird der Befehl wie folgt: +% \cs{tud@fm@set}\marg{Erklärungstyp}\marg{Überschrift}\marg{Inhalt} +% \begin{macrocode} +\newcommand*\tud@fm@set[3]{% +% \end{macrocode} +% Ist die Gliederungsebene der Erklärung kein Kapitel\dots +% \begin{macrocode} +%<*book|report> + \ifnumless{\@nameuse{tud@#1@level}}{3}{% +%</book|report> +% \end{macrocode} +% \dots und die Option \opt{titlepage} ist aktiviert\dots +% \begin{macrocode} + \if@titlepage% +% \end{macrocode} +% \dots dann wird im Zweispaltensatz der Schalter \cs{@tud@\meta{Typ}@double} +% ausgewertet und für den Fall von \opt{abstract/declaration=double} kein +% Spaltenumbruch erzeugt. Ansonsten werden nachfolgende Erklärungen in eine +% neue Spalte gesetzt. +% \begin{macrocode} + \if@twocolumn% + \tud@fm@body{#1}{#2}{#3}% + \ifbool{@tud@#1@double}{}{\newpage}% +% \end{macrocode} +% Sollte im normalen Satz \opt{abstract/declaration=double} aktiviert sein, so +% wird versucht, nachfolgende Erklärung auf der gleichen Seite wie die erste +% unterzubringen. Dazu wird die zunächst benötigte Höhe für die Ausgabe des +% Inhaltes mithilfe einer Box berechnet und mit dem noch verfügbaren Platz auf +% der Seite~-- gespeichert in \cs{tud@dim@double}~-- verglichen. +% \begin{macrocode} + \else% + \ifbool{@tud@#1@double}{% + \par% + \ifdim\pagetotal=\z@\relax% + \booltrue{@tud@#1@first}% + \fi% + \ifbool{@tud@#1@first}{% + \global\setlength{\tud@dim@double}{\textheight}% + \clearpage% + }{}% + \setbox0\vtop{\strut\tud@fm@body{#1}{#2}{#3}}% + \global\setlength{\tud@dim@double}% + {\dimexpr\tud@dim@double-\ht0-\dp0}\relax% +% \end{macrocode} +% Ist genügend Platz vorhanden, erfolgt die Ausgabe auf der aktuellen Seite. +% \begin{macrocode} + \ifdim\tud@dim@double>\z@\relax% + \tud@fm@vcenter{#1}{#2}{#3}% + \global\boolfalse{@tud@#1@first}% +% \end{macrocode} +% Sollte nicht genügend Platz vorhanden sein, erfolgt eine Warnung und die +% Zusammenfassung wird auf einer neuen Seite ausgegeben. +% \begin{macrocode} + \else% + \tud@fm@double@wrn{#1}% + \clearpage% + \global\booltrue{@tud@#1@first}% + \tud@fm@vcenter{#1}{#2}{#3}% + \fi% +% \end{macrocode} +% Im normalen Satz wird bei deaktivierter \opt{\meta{Typ}=double}-Option der +% Inhalt der Erklärung zentriert mit +% \cs{tud@fm@vcenter}\marg{Erklärungstyp}\marg{Überschrift}\marg{Inhalt} +% auf der Seite ausgegeben. +% \begin{macrocode} + }{% + \clearpage% + \tud@fm@vcenter{#1}{#2}{#3}% + \clearpage% + }% + \fi% +% \end{macrocode} +% Bei deaktivierter \opt{titlepage}-Option werden die Inhalte jeder erzeugten +% Erklärung direkt nacheinander ausgegeben. Ein gezieltes Erstellen von genau +% zwei Erklärungen auf einer Seite ist nicht vorgesehen und erzeugt bei aktiver +% \opt{abstract/declaration=double}-Option eine Warnung. Beim Satz über zwei +% Spalten erfolgt die Ausgabe ohne sonderliche Auszeichnung. Im normalen Satz +% wird die Erklärung wie ein Zitat ausgegeben, sollte dessen Überschrift nicht +% in Form eines Abschnitts gesetzt werden.\footnote{es wird der Inhalt der +% Erklärung mittels \cs{tud@quoting} und \cs{tud@endquoting} entweder in der +% normalen \env{quotation}-Umgebung oder aber~-- wenn entsprechend das Paket +% \pkg{quoting} geladen wurde~-- in der \env{quoting}-Umgebung gesetzt} +% \begin{macrocode} + \else% + \ifbool{@tud@#1@double}{\tud@fm@option@wrn{#1}}{}% + \if@twocolumn% + \tud@fm@body{#1}{#2}{#3}% + \else% + \ifnum\@nameuse{tud@#1@level}<2\tud@quoting\fi% + \tud@fm@body{#1}{#2}{#3}% + \ifnum\@nameuse{tud@#1@level}<2\tud@endquoting\fi% + \fi% + \fi% +% \end{macrocode} +% Sollte die Gliederungsebene der Erklärung einem Kapitel entsprechen, wird +% hier jede Erklärung immer auf eine neue Seite gesetzt. Es wird sowohl bei +% deaktivierter \opt{titlepage}-Option\footnote{Warum sollte man einen +% Titelkopf nutzen, wenn die meist direkt nachfolgende Erklärung selbst als +% Kapitel auf eine neue Seite gesetzt wird?} als auch bei aktivierter +% \opt{abstract/declaration=double}-Option eine passende Warnung ausgegeben. +% \begin{macrocode} +%<*book|report> + }{% + \if@titlepage\else\tud@fm@level@wrn{#1}\fi% + \ifbool{@tud@#1@double}{\tud@fm@option@wrn{#1}}{}% + \clearpage% + \tud@fm@body{#1}{#2}{#3}% + \clearpage% + }% +%</book|report> +} +% \end{macrocode} +% \end{macro}^^A \tud@fm@set +% \todo[v3.12]{% +% addchaptertocentry und addsectiontocentry durch addxcontentsline ersetzen +% } +% \begin{macro}{\tud@fm@head} +% Dieses Makro dient zur Festlegung der Gliederungsebene der Überschrift der +% Erklärung. Die gewählte Gliederungsebene ist in \cs{tud@\meta{Typ}@level} +% gespeichert. Verwendet wird das Makro folgendermaßen: +% \cs{tud@fm@set}\marg{Erklärungstyp}\marg{Überschrift}\marg{Inhalt}. +% Damit die ggf. aktive Option \opt{abstract/declaration=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} ein Anker für +% einen möglichen Hyperlink erzeugt.\footnote{ist das Paket nicht geladen, ist +% \cs{phantomsection} als \cs{relax} definiert} Ist \cs{if@tud@\meta{Typ}@toc} +% wahr, so entspricht der erzeugte Eintrag ins Inhaltsverzeichnis für +% \cls{tudscrartcl} immer dem eines Abschnitts, der für \cls{tudscrbook} und +% \cls{tudscrreprt} immer dem eines Kapitels, unabhängig von der tatsächlich +% gewählten Gliederungsebene.\footnote{sonst sieht das Inhaltsverzeichnis recht +% bescheiden aus} +% \begin{macrocode} +\newcommand*\tud@fm@head[2]{% + \ifcase\@nameuse{tud@#1@level}\relax% + \def\@tempa{\phantomsection}% + \or% + \def\@tempa{% + \phantomsection% + \@afterindentfalse% + \begin{center}% + \normalfont\sectfont\nobreak#2% + \@endparpenalty\@M% + \end{center}% + \nopagebreak% + \vskip\dimexpr\bigskipamount-\parskip% + \@afterheading% + }% + \or% + \def\@tempa{\addsec*{#2}}% +%<*book|report> + \or% + \def\@tempa{\addchap*{#2}}% +%</book|report> + \fi% + \ifbool{@tud@#1@toc}{% +%<*book|report> + \apptocmd{\@tempa}{\addchaptertocentry{}{#2}}{}{}% +%</book|report> +%<*article> + \apptocmd{\@tempa}{\addsectiontocentry{}{#2}}{}{}% +%</article> + }{}% + \@tempa% +} +% \end{macrocode} +% \end{macro}^^A \tud@fm@head +% \begin{macro}{\tud@fm@vcenter} +% Mit diesem Befehl wird die Erklärung vertikal zentriert auf einer Seite +% ausgegeben, wenn genügend Platz vorhanden ist. +% \begin{macrocode} +\newcommand*\tud@fm@vcenter[3]{% + \ifdim\@tempdima>\dimexpr\textheight\relax% + \tud@fm@body{#1}{#2}{#3}% +% \end{macrocode} +% Sollte als Überschrift die Gliederungsebene eines Abschnittes gewählt sein, +% so wird standardmäßig durch den \cs{section}-Befehl ein zusätzlicher Abstand +% eingefügt. Damit dieser beim vertikalen Zentrieren keinen Einfluss hat, wird +% dieser bei aktivem Schalter \cs{if@tud@\meta{Typ}@fil} entfernt. +% \begin{macrocode} + \else% + \ifbool{@tud@#1@fil}{% + \ifcase\@nameuse{tud@#1@level}\relax\or\or% + \vspace*{-\parskip}% + {\usekomafont{section}\vspace*{-2\baselineskip}}% + \fi% +% \end{macrocode} +% Dabei wird zur optischen Zentrierung der Platz zum oberen Seitenrand etwas +% kleiner als der zum unteren gewählt. +% \begin{macrocode} + \ifbool{@tud@#1@first}{\vspace*{\z@ \@plus 2fil}}{}% + }{}% +% \end{macrocode} +% Die Ausgabe des formatierten Erklärung und der zweite Teil der optischen +% Zentrierung. +% \begin{macrocode} + \tud@fm@body{#1}{#2}{#3}% + \ifbool{@tud@#1@fil}{\vspace*{\z@ \@plus 3fil}}{}% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@fm@vcenter +% \begin{macro}{\tud@fm@body} +% Dieser Befehl formatiert den im dritten Argument gespeicherten Inhalt der +% Erklärung. Sollte das Paket \pkg{multicol} Verwendung finden, wird hier die +% entsprechende Umgebung gestartet. Für das Setzen der Überschrift wird +% \cs{tud@fm@head} verwendet, welches abhängig von den gewählten Optionen die +% Gliederungsebene der Überschrift setzt. +% \todo[v3.12]{% +% Seitenstile für tudpage, abstract und declaration als Option; dann ist auch +% auch die Verwendung von \cs{@mkboth} möglich +% } +% \begin{macrocode} +\newcommand*\tud@fm@body[3]{% +% ^^A \@mkboth{\MakeMarkcase{#2}}{\MakeMarkcase{#2}}% + \if@titlepage\@mkboth{}{}\fi% + \if@twocolumn% + \ifcase\@nameuse{tud@#1@level}\relax\or% + \ifbool{@tud@#1@first}{% + \global\boolfalse{@tud@#1@first}% + \vspace{\dimexpr\bigskipamount-\parskip}% + }{}% + \fi% + \tud@fm@head{#1}{#2}% + #3\par% + \ifcase\@nameuse{tud@#1@level}\relax\or% + \vspace{\dimexpr\bigskipamount-\parskip}% + \fi% + \else% + \ifnum\tud@multicols>1\relax% + \begin{multicols}{\tud@multicols}[{\tud@fm@head{#1}{#2}}]% + \else% + \tud@fm@head{#1}{#2}% + \fi% + #3\par% + \ifnum\tud@multicols>1\relax% + \end{multicols}\leavevmode% + \else% + \ifcase\@nameuse{tud@#1@level}\relax\or% + \bigskip\vskip-\parskip\null% + \fi% + \fi% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@fm@body +% \begin{macro}{\tud@quoting} +% \begin{macro}{\tud@endquoting} +% Mit diesen Befehlen 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} +\let\tud@quoting\quotation +\let\tud@endquoting\endquotation +\AfterPackage{quoting}{% + \let\tud@quoting\quoting% + \let\tud@endquoting\endquoting% +} +% \end{macrocode} +% \end{macro}^^A \tud@endquoting +% \end{macro}^^A \tud@quoting +% +% \iffalse +%</class&!option> +%<*class&option> +% \fi +% +% \subsection{Erweiterung der Umgebung für eine Zusammenfassung} +% +% Die \env{abstract}-Umgebung wird um mehrere Optionen erweitert. So kann +% in den neuen \cls{tudscr}-Klassen die Sprache der Zusammenfassung leicht +% eingestellt und auch zwei Zusammenfassungen auf eine Seite gesetzt werden. +% \begin{macro}{\tud@abstract@level} +% \begin{macro}{\if@tud@abstract@toc} +% \begin{macro}{\if@tud@abstract@toc@locked} +% Der Befehl \cs{tud@abstract@level} beschreibt die Gliederungsebene der +% Überschrift der Zusammenfassung numerisch und wird über die Schlüssel der +% Option \opt{abstract} gesetzt. Über \opt{abstract=toc/notoc} wird festgelegt, +% ob die Zusammenfassung einen eigenen 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. +% \begin{macrocode} +%<*report|article> +\newcommand*\tud@abstract@level{0} +\newbool@lock{@tud@abstract@toc} +%</report|article> +%<*book> +\newcommand*\tud@abstract@level{3} +\newbool@lock[true]{@tud@abstract@toc} +%</book> +% \end{macrocode} +% \end{macro}^^A \if@tud@abstract@toc@locked +% \end{macro}^^A \if@tud@abstract@toc +% \end{macro}^^A \tud@abstract@level +% \begin{macro}{\if@tud@abstract@double} +% Mit diesem Schalter wird ggf. versucht, eine in einer anderen Sprache +% verfasste Zusammenfassung auf die gleiche Seite wie die erste zu setzen. +% Dazu muss die Option \opt{abstract=single/double} genutzt werden. +% \begin{macrocode} +\newif\if@tud@abstract@double +% \end{macrocode} +% \end{macro}^^A \if@tud@abstract@double +% \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=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@first} +% \begin{length}{\tud@dim@double} +% Um prüfen zu können, ob noch genügend Platz für eine weitere Zusammenfassung +% auf einer Seite vorhanden ist, wird die Länge \cs{tud@dim@double} benötigt. +% Außerdem wird der Schalter \cs{if@tud@abstract@first} definiert, mit welchem +% unterschieden werden kann, ob es sich um die erste von mehreren +% Zusammenfassungen auf einer Seite handelt. +% \begin{macrocode} +\newif\if@tud@abstract@first +\@tud@abstract@firsttrue +\newlength{\tud@dim@double} +% \end{macrocode} +% \end{length}^^A \tud@dim@double +% \end{macro}^^A \if@tud@abstract@first +% \todo[v3.12]{abstract im tudpagestyle als key (scrlayer)} +% \begin{option}{abstract} +% Das aus \KOMAScript{} bekannte Verhalten wird für die beiden Klassen +% \cls{tudscrartcl} und \cls{tudscrreprt} adaptiert. Außerdem werden +% zusätzliche Optionen für den Stil der Überschriften in Form von +% Gliederungsebenen wie Kapitel\footnote{bei \cls{tudscrbook} und +% \cls{tudscrreprt}} oder Unterkapitel bereitgestellt, welche~-- im Gegensatz +% zu \KOMAScript{}~-- auch für die Buchklasse \cls{tudscrbook} zur Verfügung +% stehen. +% \begin{macrocode} +%<*report|article> +\TUD@key{abstract}[true]{% +%</report|article> +%<*book> +\TUD@key{abstract}[chapter]{% +%</book> + \TUD@set@numkey{abstract}{@tempa}{% +%<*report|article> + {false}{0},{off}{0},{no}{0},% + {true}{1},{on}{1},{yes}{1},% +%</report|article> + {section}{2},{sect}{2},{sec}{2},% +%<*article> + {new}{2},{std}{2},{heading}{2},% +%</article> +%<*book|report> + {chapter}{3},{chap}{3},% + {new}{3},{std}{3},{heading}{3},% +%</book|report> +% \end{macrocode} +% Zusätzlich lassen sich die Werte \opt{abstract=double}, \opt{abstract=toc} +% sowie \opt{abstract=fill} setzen. +% \begin{macrocode} + {totoc}{4},{toc}{4},% + {nottotoc}{5},{notoc}{5},% + {one}{6},{simple}{6},{single}{6},% + {two}{7},{both}{7},{double}{7},% + {nofil}{8},{nofill}{8},{novfil}{8},{novfill}{8},% + {fil}{9},{fill}{9},{vfil}{9},{vfill}{9},% + }{#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} + \ifcase \@tempa\relax% +%<*report|article> + \def\tud@abstract@level{0}% + \stdbool@lock{@tud@abstract@toc}{false}% +%</report|article> + \or% +%<*report|article> + \def\tud@abstract@level{1}% + \stdbool@lock{@tud@abstract@toc}{false}% +%</report|article> + \or% + \def\tud@abstract@level{2}% + \stdbool@lock{@tud@abstract@toc}{true}% + \or% +%<*book|report> + \def\tud@abstract@level{3}% + \stdbool@lock{@tud@abstract@toc}{true}% +%</book|report> +% \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=double}) und ob +% die Zusammenfassung einen Eintrag ins Inhaltsverzeichnis bekommen soll. +% \begin{macrocode} + \or% + \setbool@lock{@tud@abstract@toc}{true}% + \or% + \setbool@lock{@tud@abstract@toc}{false}% + \or% + \@tud@abstract@doublefalse% + \or% + \@tud@abstract@doubletrue% + \or% + \@tud@abstract@filfalse% + \or% + \@tud@abstract@filtrue% + \fi% +} +% \end{macrocode} +% \end{option}^^A abstract +% +% \iffalse +%</class&option> +%<*class&!option> +% \fi +% +% \begin{environment}{abstract} +% Die \env{abstract}-Umgebung wird komplett überarbeitet. Um alle gewünschten +% Optionen\footnote{\opt{titlepage}, \opt{twocolumn}, \opt{abstract@double}, +% \opt{abstract@fil} 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> +\csundef{abstract} +\csundef{endabstract} +%</report|article> +\NewEnviron{abstract}[1][]{% +% \end{macrocode} +% Als erstes 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@multicols@check% + \tud@fm@set{abstract}{\abstractname}{\BODY}% +} +% \end{macrocode} +% \end{environment}^^A abstract +% \begin{parameter}{language} +% \begin{parameter}{columns} +% \begin{parameter}{abstract} +% \begin{parameter}{option} +% 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{abstract}{% + \TUD@parameter@define{language}{\selectlanguage{#1}}% + \TUD@parameter@define{columns}{\def\tud@multicols{#1}}% + \TUD@parameter@define{abstract}{\TUDoption{abstract}{#1}}% + \TUD@parameter@define{option}{\TUDoption{abstract}{#1}}% +% \end{macrocode} +% Für die Optionsangabe ohne Schlüssel und Wert kann eine Anzahl an Spalten +% oder eine alternative Sprache angegeben werden. Hierfür ist der Befehl +% \cs{tud@environmenthandler} definiert, welcher auch von \env{tudpage}-Umgebung +% verwendet wird +% \begin{macrocode} + \TUD@parameter@sethandler{\tud@environmenthandler{#1}} +} +% \end{macrocode} +% \end{parameter}^^A option +% \end{parameter}^^A abstract +% \end{parameter}^^A columns +% \end{parameter}^^A language +% \todo[v3.12]{% +% Einführen mit currentpagestyle sinnvoll; wie bei \texttt{abstract=chapter}? +% bestenfalls chapterpagestyle als weitere Option; wenn nicht gegeben, dann mit +% option pagestyle überschreiben bzw. erahnen\dots +% } +% \begin{macro}{\abstractpagestyle} +% Damit der Anwender relativ schnell beeinflussen kann, wie der Seitenstil +% für die Zusammenfassung sein soll, wird dieser Befehl eingeführt. Dabei wird +% im Standardfall für allerlei Unterscheidungen gesorgt. +% \begin{macrocode} +% ^^A\newcommand*\abstractpagestyle{% +% ^^A \if@titlepage% +% ^^A empty% +% ^^A \else% +% ^^A%<*book|report> +% ^^A \ifnum\tud@abstract@level>2% +% ^^A \chapterpagestyle% +% ^^A \else% +% ^^A plain% +% ^^A \fi% +% ^^A%</book|report> +% ^^A%<*article> +% ^^A plain% +% ^^A%</article> +% ^^A \fi% +% ^^A} +% \end{macrocode} +% \end{macro}^^A \abstractpagestyle +% +% \iffalse +%</class&!option> +%<*class&option> +% \fi +% +% \subsection{Befehle für Selbstständigkeitserklärung und Sperrvermerk} +% +% Die Befehle für Selbstständigkeitserklärung und Sperrvermerk werden +% äquivalent zur \env{abstract}-Umgebung mit den gleichen Optionen +% ausgestattet. +% \todo[v3.12]{declaration im tudpagestyle als key (scrlayer)} +% \begin{macro}{\tud@declaration@level} +% \begin{macro}{\if@tud@declaration@toc} +% \begin{macro}{\if@tud@declaration@toc@locked} +% \begin{macro}{\if@tud@declaration@double} +% \begin{macro}{\if@tud@declaration@fil} +% \begin{macro}{\if@tud@declaration@first} +% Siehe die Option \opt{abstract}. +% \begin{macrocode} +%<*report|article> +\newcommand*\tud@declaration@level{1} +\newbool@lock{@tud@declaration@toc} +%</report|article> +%<*book> +\newcommand*\tud@declaration@level{3} +\newbool@lock[true]{@tud@declaration@toc} +%</book> +\newif\if@tud@declaration@double +\@tud@declaration@doubletrue +\newif\if@tud@declaration@fil +\@tud@declaration@filtrue +\newif\if@tud@declaration@first +\@tud@declaration@firsttrue +% \end{macrocode} +% \end{macro}^^A \if@tud@declaration@first +% \end{macro}^^A \if@tud@declaration@fil +% \end{macro}^^A \if@tud@declaration@double +% \end{macro}^^A \if@tud@declaration@toc@locked +% \end{macro}^^A \if@tud@declaration@toc +% \end{macro}^^A \tud@declaration@level +% \begin{option}{declaration} +% Siehe die Option \opt{abstract}. +% \begin{macrocode} +%<*report|article> +\TUD@key{declaration}[true]{% +%</report|article> +%<*book> +\TUD@key{declaration}[chapter]{% +%</book> + \TUD@set@numkey{declaration}{@tempa}{% + {false}{0},{off}{0},{no}{0},% + {true}{1},{on}{1},{yes}{1},% + {section}{2},{sect}{2},{sec}{2},% +%<*article> + {new}{2},{std}{2},{heading}{2},% +%</article> +%<*book|report> + {chapter}{3},{chap}{3},% + {new}{3},{std}{3},{heading}{3},% +%</book|report> + {totoc}{4},{toc}{4},% + {nottotoc}{5},{notoc}{5},% + {one}{6},{simple}{6},{single}{6},% + {two}{7},{both}{7},{double}{7},% + {nofil}{8},{nofill}{8},{novfil}{8},{novfill}{8},% + {fil}{9},{fill}{9},{vfil}{9},{vfill}{9},% + }{#1}% + \ifcase \@tempa\relax% + \def\tud@declaration@level{0}% + \stdbool@lock{@tud@declaration@toc}{false}% + \or% + \def\tud@declaration@level{1}% + \stdbool@lock{@tud@declaration@toc}{false}% + \or% + \def\tud@declaration@level{2}% + \stdbool@lock{@tud@declaration@toc}{true}% + \or% +%<*book|report> + \def\tud@declaration@level{3}% + \stdbool@lock{@tud@declaration@toc}{true}% +%</book|report> + \or% + \stdbool@lock{@tud@declaration@toc}{false}% + \or% + \stdbool@lock{@tud@declaration@toc}{false}% + \or% + \@tud@declaration@doublefalse% + \or% + \@tud@declaration@doubletrue% + \or% + \@tud@declaration@filfalse% + \or% + \@tud@declaration@filtrue% + \fi% +} +% \end{macrocode} +% \end{option}^^A declaration +% +% \iffalse +%</class&option> +%<*class&!option> +% \fi +% +% \begin{macro}{\confirmation} +% Mit diesem Befehl kann die Selbstständigkeitserklärung ausgegeben werden. Das +% optionale Argument bestimmt, wer als Unterstützer angegeben wird. Damit bei +% der Angabe eines leeren optionalen Argumentes dieses Feld geleert wird, muss +% mit \cs{@ifnextchar[} eine Fallunterscheidung gemacht werden, ob ein solches +% angegeben wurde. Außerdem sind Schlüssel-Wert-Paare als Option nutzbar. +% \begin{macrocode} +\newcommand*\confirmation{% +% \end{macrocode} +% Ist ein optionales Argument gegeben, wird ohne Schlüsselangabe dank dem Paket +% \pkg{kvsetkeys} mit dem Befehl \cs{TUD@parameter@sethandler} das Feld für die +% Unterstützer gesetzt bzw. bei leerem Argument geleert. Andernfalls werden +% durch \cs{TUD@parameter@set} die Schlüssel-Wert-Paare ausgewertet. +% \begin{macrocode} + \def\@tempa[##1]{% + \begingroup% + \ifblank{##1}{\supporter{}}{}% + \TUD@parameter{declaration}{% + \TUD@parameter@sethandler{\supporter{##1}} + \TUD@parameter@set{##1} + }% + \@tempb% + \endgroup% + }% +% \end{macrocode} +% Ohne optionales Argument erfolgt die Ausgabe ohne Optionsbehandlung direkt. +% \begin{macrocode} + \def\@tempb{% + \tud@fm@set{declaration}{\confirmationname}% + {\confirmationtext\endgraf\@confirmationclosing}% + }% + \@ifnextchar[%] + {\@tempa}{\begingroup\@tempb\endgroup}% +} +% \end{macrocode} +% \end{macro}^^A \confirmation +% \begin{macro}{\restriction} +% 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*\restriction{% + \def\@tempa[##1]{% + \begingroup% + \ifblank{##1}{\company{}}{}% + \TUD@parameter{declaration}{% + \TUD@parameter@sethandler{\company{##1}} + \TUD@parameter@set{##1} + }% + \@tempb% + \endgroup% + }% + \def\@tempb{% + \tud@fm@set{declaration}{\restrictionname}{\restrictiontext}% + }% + \@ifnextchar[%] + {\@tempa}{\begingroup\@tempb\endgroup}% +} +% \end{macrocode} +% \end{macro}^^A \restriction +% \begin{macro}{\declaration} +% 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. +% \begin{macrocode} +\newcommand*\declaration[1][]{% + \clearpage% + \begingroup% + \TUD@parameter{declaration}{% + \TUD@parameter@sethandler{\selectlanguage{#1}} + \TUD@parameter@set{#1} + }% + \@tud@declaration@firsttrue% + \confirmation\restriction% + \endgroup% + \clearpage% +} +% \end{macrocode} +% \end{macro}^^A \declaration +% \begin{parameter}{language} +% \begin{parameter}{supporter} +% \begin{parameter}{place} +% \begin{parameter}{closing} +% \begin{parameter}{company} +% \begin{parameter}{declaration} +% \begin{parameter}{option} +% Dies sind die möglichen Schlüssel für die Befehle \cs{declaration}, +% \cs{confirmation} und \cs{restriction}. 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{declaration}{% + \TUD@parameter@define{language}{\selectlanguage{#1}}% + \TUD@parameter@define{company}{\company{#1}}% + \TUD@parameter@define{supporter}{\supporter{#1}}% + \TUD@parameter@define{place}{\place{#1}}% + \TUD@parameter@define{closing}{\confirmationclosing{#1}}% + \TUD@parameter@define{declaration}{\TUDoption{declaration}{#1}}% + \TUD@parameter@define{option}{\TUDoption{declaration}{#1}}% +} +% \end{macrocode} +% \end{parameter}^^A option +% \end{parameter}^^A declaration +% \end{parameter}^^A company +% \end{parameter}^^A closing +% \end{parameter}^^A place +% \end{parameter}^^A supporter +% \end{parameter}^^A language +% \todo[v3.12]{Einführen mit currentpagestyle sinnvoll; wie bei chapter?} +% \begin{macro}{\declarationpagestyle} +% Damit der Anwender relativ schnell beeinflussen kann, wie der Seitenstil +% für die Erklärungen sein soll, wird dieser Befehl eingeführt. Dabei wird +% im Standardfall für allerlei Unterscheidungen gesorgt. +% \begin{macrocode} +% ^^A\newcommand*\declarationpagestyle{% +% ^^A \if@titlepage% +% ^^A empty% +% ^^A \else% +% ^^A%<*book|report> +% ^^A \ifnum\tud@declaration@level>2% +% ^^A \chapterpagestyle% +% ^^A \else% +% ^^A plain% +% ^^A \fi% +% ^^A%</book|report> +% ^^A%<*article> +% ^^A plain% +% ^^A%</article> +% ^^A \fi% +% ^^A} +% \end{macrocode} +% \end{macro}^^A \declarationpagestyle +% \begin{macro}{\tud@fm@level@wrn} +% \begin{macro}{\tud@fm@option@wrn} +% \begin{macro}{\tud@fm@double@wrn} +% Die Befehle dienen zur Warnung für nicht sinnvoll gewählte oder aber sich +% gegenseitig ausschließende Optionen. +% \begin{macrocode} +\newcommand*\tud@fm@level@wrn[1]{% + \ClassWarning{\tudcls@name}{% + Headings in chapter style '#1=chapter'\MessageBreak% + are not recommended without the titlepage\MessageBreak% + option% + }% +} +\newcommand*\tud@fm@option@wrn[1]{% + \ClassWarning{\tudcls@name}{% + The option '#1=double' is not supported\MessageBreak% + neither with chapter headings nor without an\MessageBreak% + activated titlepage% + }% +} +\newcommand*\tud@fm@double@wrn[1]{% + \ClassWarning{\tudcls@name}{% + It wasn't possible to use '#1=double'\MessageBreak% + because of too much content within #1% + }% +} +% \end{macrocode} +% \end{macro}^^A \tud@fm@double@wrn +% \end{macro}^^A \tud@fm@option@wrn +% \end{macro}^^A \tud@fm@level@wrn +% +% \iffalse +%</class&!option> +% \fi +% +% \Finale +% +\endinput
\ No newline at end of file |