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 | 977 |
1 files changed, 977 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..5e305fb91e5 --- /dev/null +++ b/Master/texmf-dist/source/latex/tudscr/tudscr-frontmatter.dtx @@ -0,0 +1,977 @@ +% \CheckSum{587} +% \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> +\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi +\ProvidesFile{tudscr-frontmatter.dtx}[% + 2014/12/04 v2.02 TUD-KOMA-Script (frontmatter)% +] +\RequirePackage[ngerman=ngerman-x-latest]{hyphsubst} +\documentclass[english,ngerman]{tudscrdoc} +\usepackage{selinput}\SelectInputMappings{adieresis={ä},germandbls={ß}} +\usepackage[T1]{fontenc} +\usepackage{babel} +\usepackage{tudscrfonts} % only load this package, if the fonts are installed +\KOMAoptions{parskip=half-} +\CodelineIndex +\RecordChanges +\GetFileInfo{tudscr-frontmatter.dtx} +\begin{document} + \maketitle + \DocInput{\filename} +\end{document} +%</driver> +% \fi +% +% \selectlanguage{ngerman} +% +% \changes{v2.02}{2014/07/08}{Verwendung \cs{FamilyKeyState}}%^^A +% \changes{v2.02}{2014/11/05}{Verbesserungen für Kolumnentitel und +% Inhaltsverzeichnis}%^^A +% +% \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 +% \enquote{Erklärung} 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&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 Erklräungen 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]{% + \ifnumless{\@nameuse{tud@#1@level}}{3}{% + \@tempswatrue% + \ifboolexpr{bool {@tud@#1@fil} and bool {@tud@#1@multi}}{% + \setbox0\vbox{% + \ifcase\@nameuse{tud@#1@level}\relax\or\or% + \vspace*{-\parskip}% + {\usekomafont{section}\vspace*{-\baselineskip}}% + \fi% + #2% + }% + \ifdim\textheight<\dimexpr\ht0+\dp0\relax% + \ClassWarning{\tudcls@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% + }% + \@tempswafalse% + \fi% + }{}% + }{}% + #2% +} +% \end{macrocode} +% \end{macro}^^A \tud@fm@check +% \begin{macro}{\tud@fm@set} +% \changes{v2.02}{2014/07/18}{Neuimplementierung für \pkg{scrlayer-scrpage}}%^^A +% Dies ist das zentrale Makro zur Ausgabe der einzelnen Erklärungen, welches +% alle relevanten Optionen\footnote{\opt{titlepage}, \opt{twocolumn}, +% \opt{abstract/declaration=multi}, \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} +% 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} +%<*book|report> + \ifnumless{\@nameuse{tud@#1@level}}{3}{}{% + \boolfalse{@tud@#1@multi}% + \boolfalse{@tud@#1@fil}% + }% +%</book|report> +% Im Zweispaltensatz wird der Inhalt der Umgebung einfach ausgegeben, eine +% vertikale Zentrierung findet nicht statt. +% \begin{macrocode} + \if@twocolumn% + \tud@fm@body{#1}{#2}{#3}% +% \end{macrocode} +% Beim einspaltigen Satz wird die \opt{titlepage}-Option beachtet. +% \begin{macrocode} + \else% +% \end{macrocode} +% Sollte diese aktiv sein, wird jede Erklärung oder Zusammenfassung abhängig +% von der Einstellung von \opt{abstract/declaration=multi} entweder auf eine +% neue Seite gesetzt, oder aber auf der aktuellen ausgegeben. Dabei werden +% diese ggf. noch vertikal auf der Seite ausgerichtet. +% \begin{macrocode} + \if@titlepage% + \ifbool{@tud@#1@multi}{}{\clearpage}% + \ifbool{@tud@#1@fil}{% + \ifcase\@nameuse{tud@#1@level}\relax\or\or% + \vspace*{-\parskip}% + {\usekomafont{section}\vspace*{-2\baselineskip}}% + \fi% + \if@tempswa\vspace*{\z@ \@plus 1fil}\fi% + }{}% + \tud@fm@body{#1}{#2}{#3}% + \ifbool{@tud@#1@fil}{\vspace*{\z@ \@plus 2fil}}{}% +% \end{macrocode} +% Bei deaktivierter \opt{titlepage}-Option werden die Inhalte jeder erzeugten +% Erklärung direkt nacheinander ausgegeben. Die Erklärung oder Zusammenfassung +% wird dabei wie ein Zitat ausgegeben, sollte dessen Überschrift nicht +% in Form eines Abschnitts gesetzt werden. Der Inhalt wird entweder in der +% normalen \env{quotation}-Umgebung oder aber~-- 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} + \else% + \ifnum\@nameuse{tud@#1@level}<2\begin{\tud@quoting}\fi% + \tud@fm@body{#1}{#2}{#3}% + \ifnum\@nameuse{tud@#1@level}<2\end{\tud@quoting}\fi% + \fi% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@fm@set +% \begin{macro}{\tud@fm@body} +% \changes{v2.02}{2014/07/18}{Neuimplementierung für \pkg{scrlayer-scrpage}}%^^A +% \begin{macro}{\tud@fm@vcenter} +% \changes{v2.02}{2014/07/18}{Mit \pkg{scrlayer-scrpage} entfernt}%^^A +% 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 und der +% Kolumnentitel wird \cs{tud@fm@head} verwendet, welches abhängig von den +% gewählten Optionen die Gliederungsebene der Überschrift setzt. Die optional +% gewählte vertikale Ausrichtung des Inhaltes wird seit Version~v2.02 nicht +% mehr von \cs{tud@fm@vcenter} sondern hier direkt ausgeführt. +% \begin{macrocode} +\newcommand*\tud@fm@body[3]{% + \ifnum\tud@multicols>1\relax% + \begin{multicols}{\tud@multicols}[{\tud@fm@head{#1}{#2}}]% + \else% +% \end{macrocode} +% Für die Verwendung einer kleinen, zentrierten Überschrift wird vorher ein +% Abstand eingefügt. Dies ist jedoch nur notwendig, wenn \env{multicols} nicht +% verwendet wird. +% \begin{macrocode} + \ifbool{@tud@#1@multi}{% + \ifcase\@nameuse{tud@#1@level}\relax\or% + \vspace{\dimexpr\bigskipamount-\parskip\relax}% + \fi% + }{}% + \tud@fm@head{#1}{#2}% + \fi% + #3\par% + \ifnum\tud@multicols>1\relax% + \end{multicols}% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@fm@vcenter +% \end{macro}^^A \tud@fm@body +% \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 +% 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@head}\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}~-- wenn es +% tatsächlich geladen wurde~-- ein Anker für einen Hyperlink erzeugt. Ist +% \cs{if@tud@\meta{Typ}@toc} wahr, so entspricht der erzeugte Eintrag 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 +% \begin{macrocode} +\newcommand*\tud@fm@head[2]{% + \ifcase\@nameuse{tud@#1@level}\relax% + \if@titlepage\endgraf\fi% + \csname phantomsection\endcsname% + \or% + \if@titlepage\endgraf\fi% + \csname phantomsection\endcsname% + \@afterindentfalse% + \begingroup% + \centering% + \normalfont\sectfont\nobreak#2% + \@endparpenalty\@M% + \endgraf% + \endgroup% + \nopagebreak% + \vskip\dimexpr\bigskipamount-\parskip\relax% + \@afterheading% + \or% + \section*{#2}% + \ifx\@mkboth\@gobbletwo\else\markright{\MakeMarkcase{#2}}\fi% +%<*book|report> + \or% + \chapter*{#2}% + \@mkdouble{\MakeMarkcase{#2}}% +%</book|report> + \fi% + \ifbool{@tud@#1@markboth}{% + \markboth{\MakeMarkcase{#2}}{\MakeMarkcase{#2}}% + }{}% + \ifbool{@tud@#1@toc}{% + \ifbool{@tud@#1@toc@leveldown}{% +%<*book|report> + \addsectiontocentry{}{#2}% +%</book|report> +%<*article> + \addsubsectiontocentry{}{#2}% +%</article> + }{% +%<*book|report> + \addchaptertocentry{}{#2}% +%</book|report> +%<*article> + \addsectiontocentry{}{#2}% +%</article> + } + }{}% +} +% \end{macrocode} +% \end{macro}^^A \tud@fm@head +% \begin{macro}{\tud@fm@next} +% \changes{v2.02}{2014/07/19}{mit \pkg{scrlayer-scrpage} eingeführt}%^^A +% Dieser Befehl sorgt für die Trennung einzelner Abschnitte innerhalb der +% Umgebungen \env{abstract} und \env{declarations}. Dabei werden bei aktiver +% vertikaler Ausrichtung die entsprchenden Abstände dazwischen eingefügt. +% \begin{macrocode} +\newcommand*\tud@fm@next[2]{% + \TUD@parameter@set[#1]{#2}% + \if@twocolumn% + \ifbool{@tud@#1@multi}{\par}{\newpage} + \else% + \if@titlepage% + \ifbool{@tud@#1@fil}{% + \vspace*{\z@ \@plus 1fil}% + \ifbool{@tud@#1@multi}{}{% + \vspace*{\z@ \@plus 1fil}% + \clearpage% + \ifcase\@nameuse{tud@#1@level}\relax\or\or% + \vspace*{-\parskip}% + {\usekomafont{section}\vspace*{-2\baselineskip}}% + \fi% + \vspace*{\z@ \@plus 1fil}% + }% + }{\ifbool{@tud@#1@multi}{}{\clearpage}}% + \else% + \ifnum\@nameuse{tud@#1@level}<2 + \end{\tud@quoting} + \begin{\tud@quoting} + \fi% + \fi% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@fm@next +% \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% + \ifcsdef{ps@#2}{\renewcommand*\tud@ps{#2}}{% + \ClassError{\tudcls@name}{`#2' is no valid pagestyle}{}% + }% + \else% + \ClassWarning{\tudcls@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 +% \begin{macro}{\tud@fm@level@wrn} +% \changes{v2.02}{2014/07/19}{entfernt}%^^A +% \begin{macro}{\tud@fm@option@wrn} +% \changes{v2.02}{2014/07/19}{entfernt}%^^A +% \begin{macro}{\tud@fm@multi@wrn} +% \changes{v2.02}{2014/07/19}{entfernt}%^^A +% Die Befehle für die Warnungen an den Benutzer bei nicht beachteten oder nicht +% umsetzbaren Einstellungen wurden mit der Version~v2.02 entfernt, da Sie als +% wenig sinnvoll erachtet wurden. +% \end{macro}^^A \tud@fm@multi@wrn +% \end{macro}^^A \tud@fm@option@wrn +% \end{macro}^^A \tud@fm@level@wrn +% \begin{macro}{\tud@quoting} +% \begin{macro}{\tud@endquoting} +% \changes{v2.02}{2014/07/19}{entfernt}%^^A +% 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@endquoting +% \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/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> + {new}{2},{std}{2},{heading}{2},% +%</article> +%<*book|report> + {chapter}{3},{chap}{3},{addchap}{3},% + {new}{3},{std}{3},{heading}{3},% +%</book|report> + {totoc}{4},{toc}{4},{totoclevelup}{4},{toclevelup}{4},{levelup}{4},% + {totocleveldown}{5},{tocleveldown}{5},{leveldown}{5},% + {nottotoc}{6},{notoc}{6},% + {markboth}{7},{mark}{7},% + {nomarkboth}{8},{nomark}{8},% + {one}{9},{simple}{9},{single}{9},% + {multi}{10},{multiple}{10},{all}{10},{two}{10},{both}{10},{double}{10},% + {nofil}{11},{nofill}{11},{novfil}{11},{novfill}{11},% + {fil}{12},{fill}{12},{vfil}{12},{vfill}{12}% +} +% \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 \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@toc@leveldown} +% \changes{v2.02}{2014/11/05}{neu}%^^A +% Dieser Schalter bestimmt, ob der Eintrag in das Inhaltsverzeichnis in der +% obersten Gliederungsebene~-- \cs{chapter} für die Klassen \cls{tudscrbook} +% und \cls{tudscrreprt} sowie \cs{section} für \cls{tudscrartcl}~-- oder in der +% darunterliegenden erfolgt. +% \begin{macrocode} +\newif\if@tud@abstract@toc@leveldown +% \end{macrocode} +% \end{macro}^^A \if@tud@abstract@toc@leveldown +% \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 +% \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=single/multi}. +% \begin{macrocode} +\newif\if@tud@abstract@multi +% \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=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{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@numkey@bool}. +% \begin{macrocode} +%<*report|article> +\TUD@key{abstract}[true]{% + \edef\@tempb{\TUD@numkey@bool,\tud@fm@switch}% +%</report|article> +%<*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% +%<*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=multi}) und ob +% die Zusammenfassung einen Eintrag ins Inhaltsverzeichnis bekommen soll. +% \begin{macrocode} + \or% + \setbool@lock{@tud@abstract@toc}{true}% + \@tud@abstract@toc@leveldownfalse% + \or% + \setbool@lock{@tud@abstract@toc}{true}% + \@tud@abstract@toc@leveldowntrue% + \or% + \setbool@lock{@tud@abstract@toc}{false}% + \or% + \@tud@abstract@markbothtrue% + \or% + \@tud@abstract@markbothfalse% + \or% + \@tud@abstract@multifalse% + \or% + \@tud@abstract@multitrue% + \or% + \@tud@abstract@filfalse% + \or% + \@tud@abstract@filtrue% + \fi% + \fi% +} +% \end{macrocode} +% \end{option}^^A abstract +% +% \iffalse +%</class&option> +%<*class&body> +% \fi +% +% \begin{environment}{abstract} +% Die \env{abstract}-Umgebung wird komplett überarbeitet. Um alle gewünschten +% Optionen\footnote{\opt{titlepage}, \opt{twocolumn}, \opt{abstract@multi}, +% \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} +% 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. Bei aktiver \opt{titlepage}-Option wird +% anschließend der aktuelle Seitenstil gesichert, um diesen nach der Umgebung +% wiederherstellen zu können. +% \begin{macrocode} + \ifnumless{\@nameuse{tud@abstract@level}}{3}{}{\@titlepagetrue}% + \if@titlepage% + \tud@currentpagestyle@set% + \clearpage\def\tud@ps{empty}% + \fi% +% \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. Bei aktiver Option +% \opt{titlepage} kann über den Parameter \opt{pagestyle} der Seitenstil +% innerhalb der Umgebung geändert werden. Dieser wird automatisch auf +% \val{headings} gesetzt, wenn beidseitige Kolumnentitel verwendet werden. +% \begin{macrocode} + \TUD@parameter@set[abstract]{#1}% + \if@tud@abstract@markboth\def\tud@ps{headings}\fi% + \tud@multicols@check% + \if@titlepage\tud@ps@select\fi% + \tud@fm@check{abstract}{\tud@fm@set{abstract}{\abstractname}{\BODY}}% +% \end{macrocode} +% Nach der Umgebung wird bei aktiver \opt{titlepage}-Option der ursprüngliche +% Seitenstil zurückgesetzt. +% \begin{macrocode} +}[% + \if@titlepage% + \aftergroup\tud@currentpagestyle@reset% + \clearpage% + \fi% +] +% \end{macrocode} +% \end{environment}^^A abstract +% \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} +% 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{pagestyle}{\tud@fm@pagestyle{abstract}{#1}}% + \TUD@parameter@define{markboth}[true]{% + \ifstr{#1}{true}{\@tud@abstract@markbothtrue}{% + \ifstr{#1}{on}{\@tud@abstract@markbothtrue}{% + \ifstr{#1}{yes}{\@tud@abstract@markbothtrue}{% + \ifstr{#1}{false}{\@tud@abstract@markbothfalse}{% + \ifstr{#1}{no}{\@tud@abstract@markbothfalse}{% + \ifstr{#1}{off}{\@tud@abstract@markbothfalse}{% + \@tud@abstract@markbothfalse% + \manualmark\markboth{#1}{#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 markboth +% \end{parameter}^^A pagestyle +% \end{parameter}^^A columns +% \end{parameter}^^A language +% \begin{macro}{\nextabstract} +% Um einzelne Abschnitte innerhalb einer Zusammenfassung trennen zu können, ist +% dieser Befehl notwendig. +% \begin{macrocode} +\newcommand*\nextabstract[1][]{% + \ifnum\tud@multicols>1\relax% + \end{multicols}% + \else% + \ifbool{@tud@abstract@multi}{% + \ifcase\@nameuse{tud@abstract@level}\relax\or% + \vspace{\dimexpr\bigskipamount-\parskip\relax}% + \fi% + }{}% + \fi% + \tud@fm@next{abstract}{#1}% + \ifnum\tud@multicols>1\relax% + \begin{multicols}{\tud@multicols}[{\tud@fm@head{abstract}{\abstractname}}]% + \else% + \tud@fm@head{abstract}{\abstractname}% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \nextabstract +% +% \iffalse +%</class&body> +%<*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. +% \begin{macro}{\tud@declaration@level} +% \begin{macro}{\if@tud@declaration@toc} +% \begin{macro}{\if@tud@declaration@toc@locked} +% \begin{macro}{\if@tud@declaration@toc@leveldown} +% \changes{v2.02}{2014/11/05}{}%^^A +% \begin{macro}{\if@tud@declaration@markboth} +% \changes{v2.02}{2014/11/05}{neu}%^^A +% \begin{macro}{\if@tud@declaration@multi} +% \begin{macro}{\if@tud@declaration@fil} +% 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@toc@leveldown +\newif\if@tud@declaration@markboth +\newif\if@tud@declaration@multi +\@tud@declaration@multitrue +\newif\if@tud@declaration@fil +\@tud@declaration@filtrue +% \end{macrocode} +% \end{macro}^^A \if@tud@declaration@fil +% \end{macro}^^A \if@tud@declaration@multi +% \end{macro}^^A \if@tud@declaration@markboth +% \end{macro}^^A \if@tud@declaration@toc@leveldown +% \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> + \edef\@tempb{\TUD@numkey@bool,\tud@fm@switch}% + \TUD@set@numkey{declaration}{@tempa}{\@tempb}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \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}{true}% + \@tud@declaration@toc@leveldownfalse% + \or% + \stdbool@lock{@tud@declaration@toc}{true}% + \@tud@declaration@toc@leveldowntrue% + \or% + \stdbool@lock{@tud@declaration@toc}{false}% + \or% + \@tud@declaration@markbothtrue% + \or% + \@tud@declaration@markbothfalse% + \or% + \@tud@declaration@multifalse% + \or% + \@tud@declaration@multitrue% + \or% + \@tud@declaration@filfalse% + \or% + \@tud@declaration@filtrue% + \fi% + \fi% +} +% \end{macrocode} +% \end{option}^^A declaration +% +% \iffalse +%</class&option> +%<*class&body> +% \fi +% +% \begin{environment}{declarations} +% \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][]{% + \ifnumless{\@nameuse{tud@declaration@level}}{3}{}{\@titlepagetrue}% + \if@titlepage% + \tud@currentpagestyle@set% + \clearpage\def\tud@ps{empty}% + \fi% + \@tud@declarationstrue% + \TUD@parameter@set[declaration]{#1}% + \if@tud@declaration@markboth\def\tud@ps{headings}\fi% + \tud@multicols@check% + \if@titlepage\tud@ps@select\fi% + \tud@fm@check{declaration}{\BODY}% +}[% + \if@titlepage% + \aftergroup\tud@currentpagestyle@reset% + \clearpage% + \fi% +] +% \end{macrocode} +% \end{macro}^^A \if@tud@declarations +% \end{environment}^^A declarations +% \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}{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{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{declaration}{% + \TUD@parameter@define{language}{\selectlanguage{#1}}% + \TUD@parameter@define{columns}{\def\tud@multicols{#1}}% + \TUD@parameter@define{pagestyle}{\tud@fm@pagestyle{declaration}{#1}}% + \TUD@parameter@define{markboth}[true]{% + \ifstr{#1}{true}{\@tud@declaration@markbothtrue}{% + \ifstr{#1}{on}{\@tud@declaration@markbothtrue}{% + \ifstr{#1}{yes}{\@tud@declaration@markbothtrue}{% + \ifstr{#1}{false}{\@tud@declaration@markbothfalse}{% + \ifstr{#1}{no}{\@tud@declaration@markbothfalse}{% + \ifstr{#1}{off}{\@tud@declaration@markbothfalse}{% + \@tud@declaration@markbothfalse% + \manualmark\markboth{#1}{#1}% + }}}}}}% + }% + \TUD@parameter@define{company}{\def\@company{#1}}% + \TUD@parameter@define{supporter}{\def\@supporter{#1}}% + \TUD@parameter@define{place}{\def\@place{#1}}% + \TUD@parameter@define{closing}{\def\@confirmationclosing{#1}}% + \TUD@parameter@define{declaration}{\TUDoption{declaration}{#1}}% + \TUD@parameter@define{option}{\TUDoption{declaration}{#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 declaration +% \end{parameter}^^A company +% \end{parameter}^^A closing +% \end{parameter}^^A place +% \end{parameter}^^A supporter +% \end{parameter}^^A markboth +% \end{parameter}^^A pagestyle +% \end{parameter}^^A columns +% \end{parameter}^^A language +% \begin{macro}{\declaration} +% \changes{v2.02}{2014/07/18}{Neuimplementierung für \pkg{scrlayer-scrpage}}%^^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. +% \begin{macrocode} +\newcommand*\declaration[1][]{% + \ifbool{@tud@declarations}{% + \begingroup% + \TUD@parameter@set[declaration]{#1}% + \tud@fm@confirmation% + \tud@fm@blocking + \endgroup% + }{% + \begin{declarations}[#1]% + \tud@fm@confirmation% + \tud@fm@blocking% + \end{declarations}% + }% +} +% \end{macrocode} +% \end{macro}^^A \declaration +% \begin{macro}{\confirmation} +% \changes{v2.02}{2014/07/18}{Neuimplementierung für \pkg{scrlayer-scrpage}}%^^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. +% \begin{macrocode} +\newcommand*\confirmation[1][]{% +% \end{macrocode} +% Damit das optionale Argument ohne Schlüssel für die Unterstützer verwendet +% werden kann, wird der Handler umdefiniert. +% \begin{macrocode} + \TUD@parameter@sethandler[declaration]{\def\@supporter{##1}}% + \ifbool{@tud@declarations}{% + \begingroup% + \TUD@parameter@set[declaration]{#1}% + \tud@fm@confirmation% + \endgroup% + }{% + \begin{declarations}[#1]% + \tud@fm@confirmation% + \end{declarations}% + }% +% \end{macrocode} +% Der Handler wird auf das ursprüngliche Verhalten zurückgesetzt. +% \begin{macrocode} + \TUD@parameter@sethandler[declaration]{\tud@environmenthandler{##1}}% +} +% \end{macrocode} +% Dies ist der eigentliche Inhalt des Befehls \cs{confirmation}. +% \begin{macrocode} +\newcommand*\tud@fm@confirmation{% + \tud@fm@check{declaration}{% + \tud@fm@set{declaration}{\confirmationname}{% + \confirmationtext\vskip0pt\@confirmationclosing% + }% + }% +} +% \end{macrocode} +% \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 +% \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][]{% + \TUD@parameter@sethandler[declaration]{\def\@company{##1}}% + \ifbool{@tud@declarations}{% + \begingroup% + \TUD@parameter@set[declaration]{#1}% + \tud@fm@blocking% + \endgroup% + }{% + \begin{declarations}[#1]% + \tud@fm@blocking% + \end{declarations}% + }% + \TUD@parameter@sethandler[declaration]{\tud@environmenthandler{##1}}% +} +% \end{macrocode} +% Dies ist der eigentliche Inhalt des Befehls \cs{blocking}. +% \begin{macrocode} +\newcommand*\tud@fm@blocking{% + \tud@fm@check{declaration}{% + \tud@fm@set{declaration}{\blockingname}{\blockingtext}% + }% +} +% \end{macrocode} +% \end{macro}^^A \tud@fm@blocking +% \end{macro}^^A \blocking +% +% \iffalse +%</class&body> +% \fi +% +% \Finale +% +\endinput |