diff options
author | Karl Berry <karl@freefriends.org> | 2015-07-02 22:12:17 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2015-07-02 22:12:17 +0000 |
commit | 586aedcf63ecf6ea7da1c1529e5ea5ba8f5cb426 (patch) | |
tree | b679941add6df7f6b1ee8c135b24181f992dcb65 /Master/texmf-dist/source/latex/tudscr/tudscr-frontmatter.dtx | |
parent | fecdcd43eaa7f73e830159293fe22a202803086b (diff) |
tudscr (2jul15)
git-svn-id: svn://tug.org/texlive/trunk@37736 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/tudscr/tudscr-frontmatter.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/tudscr/tudscr-frontmatter.dtx | 865 |
1 files changed, 513 insertions, 352 deletions
diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr-frontmatter.dtx b/Master/texmf-dist/source/latex/tudscr/tudscr-frontmatter.dtx index efff55db60a..0d756b036de 100644 --- a/Master/texmf-dist/source/latex/tudscr/tudscr-frontmatter.dtx +++ b/Master/texmf-dist/source/latex/tudscr/tudscr-frontmatter.dtx @@ -1,4 +1,4 @@ -% \CheckSum{637} +% \CheckSum{758} % \iffalse meta-comment % % ============================================================================ @@ -51,7 +51,7 @@ %<*driver> \ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi \ProvidesFile{tudscr-frontmatter.dtx}[% - 2015/02/15 v2.03 TUD-KOMA-Script (frontmatter)% + 2015/06/12 v2.04 TUD-KOMA-Script (frontmatter)% ] \RequirePackage[ngerman=ngerman-x-latest]{hyphsubst} \documentclass[english,ngerman]{tudscrdoc} @@ -72,12 +72,7 @@ % % \selectlanguage{ngerman} % -% \changes{v2.02}{2014/07/08}{Optionen nutzen \cs{FamilyKeyState}}%^^A -% -% \ToDo{% -% Gesammelten Eintrag ins Inhaltsverzeichnis für alle Abschnitte\\ -% \url{http://latex.wcms-file3.tu-dresden.de/phpBB3/viewtopic.php?f=11\&t=385} -% }[v2.04] +% \changes{v2.02}{2014/07/08}{Optionen nutzen \cs{FamilyKeyState}}^^A % % \section{Befehle und Umgebungen für den Vorspann} % @@ -97,148 +92,293 @@ % \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 +% \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]{% - \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}{% +% \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} + \global\let\tud@fm@set\tud@fm@first% +% \end{macrocode} +% Danach erfolgt ggf. die Prüfung der resultierenden Seitenhöhe. +% \begin{macrocode} + \ifnumless{\@nameuse{tud@#1@level}}{3}{% false/true/section + \ifboolexpr{% + bool {@titlepage} and bool {@tud@#1@fil} and bool {@tud@#1@multi}% + }{% + \sbox\z@{\vbox{#2}}% + \ifdim\textheight<\dimexpr\ht\z@+\dp\z@\relax% + \ClassWarning{\TUDClassName}{% 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% + \boolfalse{@tud@#1@fil}% \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} + }{% chapter %<*book|report> - \ifnumless{\@nameuse{tud@#1@level}}{3}{}{% \boolfalse{@tud@#1@multi}% \boolfalse{@tud@#1@fil}% +%</book|report> }% +% \end{macrocode} +% Zum Schluss wird ggf. der gesammelte Eintrag im Inhaltsverzeichnis erstellt. +% Danach wird das übergebene Argument ausgeführt. +% \begin{macrocode} + \ifnum\@nameuse{tud@#1@toc}>\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 +% \begin{macro}{\tud@fm@toc} +% \changes{v2.04}{2015/03/20}{neu}^^A +% \begin{macro}{\tud@fm@@toc} +% \changes{v2.04}{2015/03/20}{neu}^^A +% \begin{macro}{\tud@fm@@@toc} +% \changes{v2.04}{2015/03/20}{neu}^^A +% Ist die Einstellung \val{tocaggregate} aktiv, wird der gesammelte Eintrag ins +% Inhaltsverzeichnis generiert. +% \begin{macrocode} +\newcommand*\tud@fm@@toc{} +\newcommand*\tud@fm@@@toc{} +\newcommand*\tud@fm@toc[2]{% +% \end{macrocode} +% Der gesammelte Eintrag aller Überschriften ins Inhaltsverzeichnis. +% \begin{macrocode} + \ifbool{@tud@#1@multi}{% + \begingroup% + \let\tud@fm@@@toc\@empty% + \renewcommand*\tud@fm@head[2]{% + \protected@edef\@tempa{##2}% + \protected@xdef\tud@fm@@toc{\tud@fm@@@toc\@tempa}% + \protected@xdef\tud@fm@@@toc{\tud@fm@@toc/}% + }% + \let\clearpage\relax% + \sbox\z@{\vbox{#2}}% + \protected@edef\@tempa{% + \noexpand\endgroup% + \noexpand\ifnumodd{\csname tud@#1@toc\endcsname}{% +%<*book|report> + \noexpand\addchaptertocentry{}{\tud@fm@@toc}% %</book|report> +%<*article> + \noexpand\addsectiontocentry{}{\tud@fm@@toc}% +%</article> + }{% +%<*book|report> + \noexpand\addsectiontocentry{}{\tud@fm@@toc}% +%</book|report> +%<*article> + \noexpand\addsubsectiontocentry{}{\tud@fm@@toc}% +%</article> + }% + }% + \@tempa% + }{% + \ClassWarning{\TUDClassName}{% + It isn't possible to use `#1=single'\MessageBreak% +%<*book|report> + or `#1=chapter' +%</book|report> + with `#1=tocmultiple'% + }% + \edef\@tempa{% + \noexpand\cs@set@lock{tud@#1@toc}{% + \the\numexpr\@nameuse{tud@#1@toc}-2\relax% + }% + }% + \@tempa% + }% +} % \end{macrocode} -% Im Zweispaltensatz wird der Inhalt der Umgebung einfach ausgegeben, eine -% vertikale Zentrierung findet nicht statt. +% \end{macro}^^A \tud@fm@@@toc +% \end{macro}^^A \tud@fm@@toc +% \end{macro}^^A \tud@fm@toc +% \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 +% Mit diesen Makros werden bei der Ausgabe der einzelnen Erklärungen alle +% relevanten Optionen% +% \footnote{% +% \opt{titlepage}, \opt{twocolumn}, \opt{abstract/declaration=multiple}, +% \opt{abstract/declaration=fill}% +% } +% ausgewertet und die notwendigen vertikalen Abstände diesen 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. +% Das Makro \cs{tud@fm@check} setzt die Definition von \cs{tud@fm@set} auf +% \cs{let}\cs{tud@fm@set}\cs{tud@fm@first}. Bei der erstmaligen Verwendung von +% \cs{tud@fm@first} wird diese auf \cs{let}\cs{tud@fm@set}\cs{tud@fm@next} +% geändert. % \begin{macrocode} - \if@twocolumn% - \tud@fm@body{#1}{#2}{#3}% +\newcommand\tud@fm@set[1]{} +\newcommand\tud@fm@first[1]{% + \global\let\tud@fm@set\tud@fm@next% % \end{macrocode} -% Beim einspaltigen Satz wird die \opt{titlepage}-Option beachtet. +% 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} - \else% + \if@twocolumn\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. +% diese ggf. 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}}% + \null\vfil% + \ifnum\@nameuse{tud@#1@level}=\tw@\relax% section + \vspace{\dimexpr-\parskip-\baselineskip\relax}% + {\usekomafont{section}{\vspace{-\baselineskip}}}% \fi% - \if@tempswa\vspace*{\z@ \@plus 1fil}\fi% }{}% - \tud@fm@body{#1}{#2}{#3}% - \ifbool{@tud@#1@fil}{\vspace*{\z@ \@plus 2fil}}{}% + \fi% + \fi% +} % \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. +% 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}% + \else% +% \end{macrocode} +% Wird eine Titelseite verwendet, 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. vertikal auf der Seite ausgerichtet. +% \begin{macrocode} + \if@titlepage% + \ifbool{@tud@#1@multi}{% + \ifbool{@tud@#1@fil}{\vfil}{}% + }{% + \ifbool{@tud@#1@fil}{\null\clearpage\null\vfil}{\clearpage}% + }% +% \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} \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% + \ifnum\@nameuse{tud@#1@level}=\z@% + \ifdef{\main@language}{\vspace*{-\baselineskip}}{}% + \fi% \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 % \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. +% \changes{v2.04}{2015/03/20}{entfernt}^^A +% \begin{length}{\multicolsep} +% 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[3]{% - \ifnum\tud@multicols>1\relax% - \begin{multicols}{\tud@multicols}[{\tud@fm@head{#1}{#2}}]% - \else% +\newcommand*\tud@fm@body@start[3]{% + \begingroup% + \TUD@parameter@set{#1}{#2}% + \tud@fm@set{#1}% % \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. +% 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} - \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% + \if@twocolumn\else\if@titlepage\else\relax% + \ifnum\@nameuse{tud@#1@level}<\tw@\begin{\tud@quoting}\fi% false/true + \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@multicols>\@ne\relax% + \setlength\multicolsep{\z@}% + \begin{multicols}{\tud@multicols}[{\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@multicols>\@ne\relax% + \end{multicols}% + \else% + \par% + \fi% + \if@twocolumn\else\if@titlepage\else\relax% + \ifnum\@nameuse{tud@#1@level}<\tw@\end{\tud@quoting}\par\fi% false/true + \fi\fi% + \endgroup% } % \end{macrocode} -% \end{macro}^^A \tud@fm@vcenter +% \end{length}^^A \multicolsep % \end{macro}^^A \tud@fm@body +% \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 -% Dieses Makro dient zur Festlegung der Gliederungsebene der Überschrift der -% Erklärung. Die gewählte Gliederungsebene ist in \cs{tud@\meta{Typ}@level} +% \changes{v2.02}{2014/07/18}{an \pkg{scrlayer-scrpage} angepasst}^^A +% \changes{v2.02}{2014/10/09}{Bugfix für Kolumnentitel}^^A +% \changes{v2.02}{2014/11/05}{Bugfix Kolumnentitel und Inhaltsverzeichnis}^^A +% \changes{v2.04}{2015/04/21}{Abstände nur, wenn keine Zitatumgebung aktiv}^^A +% Dieses Makro dient zur Ausgabe der Erklärungsüberschrift auf der gewünschten +% Gliederungsebene. Die gewählte Ebene ist in \cs{tud@\meta{Typ}@level} % gespeichert. Verwendet wird das Makro folgendermaßen: -% \cs{tud@fm@head}\marg{Erklärungstyp}\marg{Überschrift}\marg{Inhalt}. Damit +% \cs{tud@fm@head}\marg{Erklärungstyp}\marg{Überschrift}. 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 @@ -248,29 +388,40 @@ % 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\@nameuse{tud@#1@level}\relax% + \ifcase\@nameuse{tud@#1@level}\relax% false \if@titlepage\endgraf\fi% \csname phantomsection\endcsname% - \or% + \ifstr{\@currenvir}{\tud@quoting}{}{% + \if@twocolumn% + \vskip\dimexpr\smallskipamount-\parskip\relax% + \else% + \vskip\dimexpr\bigskipamount-\parskip\relax% + \fi% + }% + \or% true \if@titlepage\endgraf\fi% \csname phantomsection\endcsname% \@afterindentfalse% + \ifstr{\@currenvir}{\tud@quoting}{}{% + \vskip\dimexpr\bigskipamount-\parskip\relax% + }% \begingroup% - \centering% + \noindent\centering% \normalfont\sectfont\nobreak#2% \@endparpenalty\@M% \endgraf% \endgroup% \nopagebreak% - \vskip\dimexpr\bigskipamount-\parskip\relax% + \vskip\dimexpr\medskipamount-\parskip\relax% \@afterheading% - \or% + \or% section \section*{#2}% \ifx\@mkboth\@gobbletwo\else\markright{\MakeMarkcase{#2}}\fi% %<*book|report> - \or% + \or% chapter \chapter*{#2}% \@mkdouble{\MakeMarkcase{#2}}% %</book|report> @@ -278,75 +429,43 @@ \ifbool{@tud@#1@markboth}{% \markboth{\MakeMarkcase{#2}}{\MakeMarkcase{#2}}% }{}% - \ifbool{@tud@#1@toc}{% - \ifbool{@tud@#1@toc@leveldown}{% + \ifnum\@nameuse{tud@#1@toc}>\z@\relax% + \ifnum\@nameuse{tud@#1@toc}<\thr@@\relax% + \ifnumodd{\csname tud@#1@toc\endcsname}{% %<*book|report> - \addsectiontocentry{}{#2}% + \addchaptertocentry{}{#2}% %</book|report> %<*article> - \addsubsectiontocentry{}{#2}% + \addsectiontocentry{}{#2}% %</article> - }{% + }{% %<*book|report> - \addchaptertocentry{}{#2}% + \addsectiontocentry{}{#2}% %</book|report> %<*article> - \addsectiontocentry{}{#2}% + \addsubsectiontocentry{}{#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 +% \end{macro}^^A \tud@fm@head % \begin{macro}{\tud@fm@pagestyle} -% \changes{v2.02}{2014/07/19}{neu}%^^A +% \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}{\def\tud@ps{#2}}{% - \ClassError{\tudcls@name}{`#2' is no valid pagestyle}{% + \ClassError{\TUDClassName}{`#2' is no valid pagestyle}{% You tried to use `#2' as a pagestyle for the\MessageBreak% - `#1' environment, but it was never defined% + `#1' environment, but it was never defined.% }% }% \else% - \ClassWarning{\tudcls@name}{% + \ClassWarning{\TUDClassName}{% %<*article> The key `pagestyle' can only be used with\MessageBreak% activated option `titlepage'% @@ -362,11 +481,11 @@ % \end{macrocode} % \end{macro}^^A \tud@fm@pagestyle % \begin{macro}{\tud@fm@level@wrn} -% \changes{v2.02}{2014/07/19}{entfernt}%^^A +% \changes{v2.02}{2014/07/19}{entfernt}^^A % \begin{macro}{\tud@fm@option@wrn} -% \changes{v2.02}{2014/07/19}{entfernt}%^^A +% \changes{v2.02}{2014/07/19}{entfernt}^^A % \begin{macro}{\tud@fm@multi@wrn} -% \changes{v2.02}{2014/07/19}{entfernt}%^^A +% \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. @@ -375,7 +494,7 @@ % \end{macro}^^A \tud@fm@level@wrn % \begin{macro}{\tud@quoting} % \begin{macro}{\tud@endquoting} -% \changes{v2.02}{2014/07/19}{entfernt}%^^A +% \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. @@ -392,7 +511,7 @@ % \fi % % \begin{macro}{\tud@fm@switch} -% \changes{v2.02}{2014/11/05}{neu}%^^A +% \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 @@ -416,15 +535,18 @@ {chapter}{3},{chap}{3},{addchap}{3},% {new}{3},{standard}{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}% + {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 @@ -435,49 +557,45 @@ % 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} +% \begin{macro}{\tud@abstract@toc} +% \changes{v2.04}{2015/04/24}{neu}^^A +% \begin{macro}{\tud@abstract@toc@locked} +% \changes{v2.04}{2015/04/24}{neu}^^A % 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 +% 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} 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] Ein gesammelter Eintrag auf der obersten Gliederungsebene +% \item[3] Individuelle Einträge auf der zweithöchsten Gliederungsebene +% \item[4] Ein gesammelter Eintrag auf der zweithöchsten Gliederungsebene +% \end{description} +% Die oberste Gliederungsebene ist \cs{chapter} für \cls{tudscrbook} und +% \cls{tudscrreprt} sowie \cs{section} für \cls{tudscrartcl}. % \begin{macrocode} %<*report|article> \newcommand*\tud@abstract@level{0} -\bool@lock{@tud@abstract@toc} +\cs@lock{tud@abstract@toc}{0} %</report|article> %<*book> \newcommand*\tud@abstract@level{3} -\bool@lock[true]{@tud@abstract@toc} +\cs@lock{tud@abstract@toc}{1} %</book> % \end{macrocode} -% \end{macro}^^A \if@tud@abstract@toc@locked -% \end{macro}^^A \if@tud@abstract@toc +% \end{macro}^^A \tud@abstract@toc@locked +% \end{macro}^^A \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 @@ -485,6 +603,7 @@ % die Option \opt{abstract=single/multi}. % \begin{macrocode} \newif\if@tud@abstract@multi +\@tud@abstract@multitrue % \end{macrocode} % \end{macro}^^A \if@tud@abstract@multi % \begin{macro}{\if@tud@abstract@fil} @@ -496,6 +615,14 @@ \@tud@abstract@filtrue % \end{macrocode} % \end{macro}^^A \if@tud@abstract@fil +% \begin{macro}{\if@tud@abstract@markboth} +% \changes{v2.02}{2014/11/05}{neu}^^A +% Dieser Schalter setzt rechten und linken Kolumnentitel automatisch auf die +% verwendete Überschrift. +% \begin{macrocode} +\newif\if@tud@abstract@markboth +% \end{macrocode} +% \end{macro}^^A \if@tud@abstract@markboth % \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 @@ -517,51 +644,71 @@ % allerdings vom Anwender jederzeit überschrieben werden kann. % \begin{macrocode} \ifx\FamilyKeyState\FamilyKeyStateProcessed% - \ifcase\@tempa\relax% + \ifcase\@tempa\relax% false %<*report|article> \def\tud@abstract@level{0}% - \bool@std@lock{@tud@abstract@toc}{false}% + \cs@std@lock{tud@abstract@toc}{0}% %</report|article> - \or% + \or% true %<*report|article> \def\tud@abstract@level{1}% - \bool@std@lock{@tud@abstract@toc}{false}% + \cs@std@lock{tud@abstract@toc}{0}% %</report|article> - \or% + \or% section \def\tud@abstract@level{2}% - \bool@std@lock{@tud@abstract@toc}{true}% - \or% + \cs@std@lock{tud@abstract@toc}{1}% + \or% chapter %<*book|report> \def\tud@abstract@level{3}% - \bool@std@lock{@tud@abstract@toc}{true}% + \cs@std@lock{tud@abstract@toc}{1}% %</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. +% auf die gleiche Seite wie die erste zu setzen (\opt{abstract=multi}). % \begin{macrocode} - \or% - \bool@set@lock{@tud@abstract@toc}{true}% - \@tud@abstract@toc@leveldownfalse% - \or% - \bool@set@lock{@tud@abstract@toc}{true}% - \@tud@abstract@toc@leveldowntrue% - \or% - \bool@set@lock{@tud@abstract@toc}{false}% - \or% - \@tud@abstract@markbothtrue% - \or% - \@tud@abstract@markbothfalse% - \or% + \or% single \@tud@abstract@multifalse% - \or% + \or% multiple \@tud@abstract@multitrue% - \or% + \or% nofil \@tud@abstract@filfalse% - \or% + \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} zusammengefasst. +% \begin{macrocode} + \or% nottotoc + \cs@set@lock{tud@abstract@toc}{0}% + \or% totoc + \ifnum\tud@abstract@toc<\thr@@\relax% + \cs@set@lock{tud@abstract@toc}{1}% + \else% + \cs@set@lock{tud@abstract@toc}{3}% + \fi% + \or% totocleveldown + \ifnum\tud@abstract@toc<\thr@@\relax% + \cs@set@lock{tud@abstract@toc}{2}% + \else% + \cs@set@lock{tud@abstract@toc}{4}% + \fi% + \or% totocmutliple + \ifnum\tud@abstract@toc=\z@\relax% + \cs@set@lock{tud@abstract@toc}{1}% + \fi% + \ifnum\tud@abstract@toc<\thr@@\relax% + \edef\@tempa{% + \noexpand\cs@set@lock{tud@abstract@toc}{% + \the\numexpr\tud@abstract@toc+2\relax% + }% + }\@tempa% + \fi% \fi% \fi% } @@ -574,7 +721,10 @@ % \fi % % \begin{environment}{abstract} -% \changes{v2.03}{2015/01/09}{Bugfix für Seitenstilauswahl}%^^A +% \changes{v2.03}{2015/01/09}{Bugfix für Seitenstilauswahl}^^A +% \changes{v2.04}{2015/03/20}{Reimplementierung}^^A +% \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@multi}, % \opt{abstract@fil} sowie Gliederungsebene der Überschrift} beachten zu @@ -595,7 +745,7 @@ % der Verwendung einer Titelseite der Seitenstil definiert werden. Dafür wird % das dafür verantwortliche Makro \cs{tud@ps} auf \cs{relax} gesetzt. % \begin{macrocode} - \ifnumless{\@nameuse{tud@abstract@level}}{3}{}{\@titlepagetrue}% + \ifnum\@nameuse{tud@abstract@level}>\tw@\relax\@titlepagetrue\fi% chapter \let\tud@ps\relax% % \end{macrocode} % Als nächstes werden die Optionen verarbeitet. Sollte nach Abarbeitung der @@ -618,25 +768,38 @@ \clearpage% \tud@ps@select% \fi% - \tud@fm@check{abstract}{\tud@fm@set{abstract}{\abstractname}{\BODY}}% +% \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. +% Seitenstil zurückgesetzt. Zuvor wird ggf. der notwendige vertikale Leerraum +% eingefügt. % \begin{macrocode} }[% \if@titlepage% + \if@tud@abstract@fil\vfil\null\fi% \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 +% \changes{v2.02}{2014/07/19}{neu}^^A % \begin{parameter}{markboth} -% \changes{v2.02}{2014/11/05}{neu}%^^A +% \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 @@ -644,7 +807,7 @@ % \begin{macrocode} \TUD@parameter{abstract}{% \TUD@parameter@define{language}{\selectlanguage{#1}}% - \TUD@parameter@define{columns}{\def\tud@multicols{#1}}% + \TUD@parameter@define{columns}{\cs@std@lock{tud@multicols}{#1}}% \TUD@parameter@define{pagestyle}{\tud@fm@pagestyle{abstract}{#1}}% % \end{macrocode} % Für das Setzen von Kolumnentiteln wird der Seitenstil auf \val{headings} @@ -666,9 +829,9 @@ \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. Hierfür ist der Befehl -% \cs{TUD@parameter@defaulthandler} definiert, welcher auch von der Umgebung -% \env{tudpage} verwendet wird. +% oder eine alternative Sprache angegeben werden. Für die Auswertung des +% Argumentes verantwortlich ist der Befehl \cs{TUD@parameter@defaulthandler}, +% welcher auch von der Umgebung \env{tudpage} verwendet wird. % \begin{macrocode} \TUD@parameter@sethandler{\TUD@parameter@defaulthandler{abstract}{#1}}% } @@ -679,30 +842,18 @@ % \end{parameter}^^A pagestyle % \end{parameter}^^A columns % \end{parameter}^^A language -% \begin{macro}{\nextabstract} -% \changes{v2.02}{2014/11/05}{neu}%^^A -% Um einzelne Abschnitte innerhalb einer Zusammenfassung trennen zu können, ist -% dieser Befehl notwendig. +% Der Befehl \cs{nextabstract} lässt sich nur in der Umgebung \env{abstract} +% verwenden. % \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% + \ClassError{\TUDClassName}{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{environment}^^A abstract % % \iffalse %</class&body> @@ -715,37 +866,35 @@ % ä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}{\tud@declaration@toc} +% \changes{v2.04}{2015/04/24}{neu}^^A +% \begin{macro}{\tud@declaration@toc@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{1} -\bool@lock{@tud@declaration@toc} +\cs@lock{tud@declaration@toc}{0} %</report|article> %<*book> \newcommand*\tud@declaration@level{3} -\bool@lock[true]{@tud@declaration@toc} +\cs@lock{tud@declaration@toc}{1} %</book> -\newif\if@tud@declaration@toc@leveldown -\newif\if@tud@declaration@markboth \newif\if@tud@declaration@multi -\newif\if@tud@declaration@fil \@tud@declaration@multitrue +\newif\if@tud@declaration@fil \@tud@declaration@filtrue +\newif\if@tud@declaration@markboth % \end{macrocode} +% \end{macro}^^A \if@tud@declaration@markboth % \end{macro}^^A \if@tud@declaration@fil % \end{macro}^^A \if@tud@declaration@multi -% \end{macro}^^A \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@toc@locked +% \end{macro}^^A \tud@declaration@toc % \end{macro}^^A \tud@declaration@level % \begin{option}{declaration} % Siehe die Option \opt{abstract}. @@ -759,40 +908,57 @@ \edef\@tempb{\TUD@numkey@bool,\tud@fm@switch}% \TUD@set@numkey{declaration}{@tempa}{\@tempb}{#1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed% - \ifcase\@tempa\relax% + \ifcase\@tempa\relax% false \def\tud@declaration@level{0}% - \bool@std@lock{@tud@declaration@toc}{false}% - \or% + \cs@std@lock{tud@declaration@toc}{0}% + \or% true \def\tud@declaration@level{1}% - \bool@std@lock{@tud@declaration@toc}{false}% - \or% + \cs@std@lock{tud@declaration@toc}{0}% + \or% section \def\tud@declaration@level{2}% - \bool@std@lock{@tud@declaration@toc}{true}% - \or% + \cs@std@lock{tud@declaration@toc}{1}% + \or% chapter %<*book|report> \def\tud@declaration@level{3}% - \bool@std@lock{@tud@declaration@toc}{true}% + \cs@std@lock{tud@declaration@toc}{1}% %</book|report> - \or% - \bool@set@lock{@tud@declaration@toc}{true}% - \@tud@declaration@toc@leveldownfalse% - \or% - \bool@set@lock{@tud@declaration@toc}{true}% - \@tud@declaration@toc@leveldowntrue% - \or% - \bool@set@lock{@tud@declaration@toc}{false}% - \or% - \@tud@declaration@markbothtrue% - \or% - \@tud@declaration@markbothfalse% - \or% + \or% single \@tud@declaration@multifalse% - \or% + \or% multiple \@tud@declaration@multitrue% - \or% + \or% nofil \@tud@declaration@filfalse% - \or% + \or% fil \@tud@declaration@filtrue% + \or% markboth + \@tud@declaration@markbothtrue% + \or% nomarkboth + \@tud@declaration@markbothfalse% + \or% nottotoc + \cs@set@lock{tud@declaration@toc}{0}% + \or% totoc + \ifnum\tud@declaration@toc<\thr@@\relax% + \cs@set@lock{tud@declaration@toc}{1}% + \else% + \cs@set@lock{tud@declaration@toc}{3}% + \fi% + \or% totocleveldown + \ifnum\tud@declaration@toc<\thr@@\relax% + \cs@set@lock{tud@declaration@toc}{2}% + \else% + \cs@set@lock{tud@declaration@toc}{4}% + \fi% + \or% totocmutliple + \ifnum\tud@declaration@toc=\z@\relax% + \cs@set@lock{tud@declaration@toc}{1}% + \fi% + \ifnum\tud@declaration@toc<\thr@@\relax% + \edef\@tempa{% + \noexpand\cs@set@lock{tud@declaration@toc}{% + \the\numexpr\tud@declaration@toc+2\relax% + }% + }\@tempa% + \fi% \fi% \fi% } @@ -805,9 +971,10 @@ % \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.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{macro}{\if@tud@declarations} % Die \env{declarations}-Umgebung wird ähnlich zur \env{abstract}-Umgebung % definiert. Prinzipiell funktioniert diese genauso, inklusive der Parameter. @@ -818,7 +985,7 @@ \newif\if@tud@declarations \NewEnviron{declarations}[1][]{% \@tud@declarationstrue% - \ifnumless{\@nameuse{tud@declaration@level}}{3}{}{\@titlepagetrue}% + \ifnum\@nameuse{tud@declaration@level}>\tw@\relax\@titlepagetrue\fi% chapter \let\tud@ps\relax% \TUD@parameter@set{declaration}{#1}% \tud@multicols@check% @@ -828,17 +995,18 @@ \clearpage% \tud@ps@select% \fi% - \tud@fm@check{declaration}{% - \ifnum\tud@multicols>1\relax% - \begin{multicols}{\tud@multicols}% - \fi% - \BODY% - \ifnum\tud@multicols>1\relax% - \end{multicols}% - \fi% - }% +% \end{macrocode} +% Im Gegensatz zu \env{abstract} werden in der \env{declarations}-Umgebung alle +% Erklärungen in einer \emph{geschlossenen} Variante verwendet, um diese mit +% einzelnen nacheinander angeben zu gönnen. Jedes der möglichen Makros +% (\cs{declaration}, \cs{nextdeclaration}, \cs{blocking} und \cs{confirmation}) +% führt intern die beiden notwendigen Makros \cs{tud@fm@body@start} sowie +% \cs{tud@fm@body@end} selbstständig aus. +% \begin{macrocode} + \tud@fm@check{declaration}{\BODY}% }[% \if@titlepage% + \if@tud@declaration@fil\vfil\null\fi% \aftergroup\tud@currentpagestyle@reset% \clearpage% \fi% @@ -848,11 +1016,11 @@ % \end{environment}^^A declarations % \begin{parameter}{language} % \begin{parameter}{columns} -% \changes{v2.02}{2014/07/19}{neu}%^^A +% \changes{v2.02}{2014/07/19}{neu}^^A % \begin{parameter}{pagestyle} -% \changes{v2.02}{2014/07/19}{neu}%^^A +% \changes{v2.02}{2014/07/19}{neu}^^A % \begin{parameter}{markboth} -% \changes{v2.02}{2014/11/05}{neu}%^^A +% \changes{v2.02}{2014/11/05}{neu}^^A % \begin{parameter}{supporter} % \begin{parameter}{place} % \begin{parameter}{closing} @@ -866,7 +1034,7 @@ % \begin{macrocode} \TUD@parameter{declaration}{% \TUD@parameter@define{language}{\selectlanguage{#1}}% - \TUD@parameter@define{columns}{\def\tud@multicols{#1}}% + \TUD@parameter@define{columns}{\cs@std@lock{tud@multicols}{#1}}% \TUD@parameter@define{pagestyle}{\tud@fm@pagestyle{declaration}{#1}}% \TUD@parameter@define{markboth}[true]{% \ifstrbool{#1}{% @@ -887,12 +1055,6 @@ \TUD@parameter@let{confirmationclosing}{closing}% \TUD@parameter@define{declaration}{\TUDoption{declaration}{#1}}% \TUD@parameter@let{option}{declaration}% -% \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@parameter@defaulthandler} definiert, welcher auch von der Umgebung -% \env{tudpage} verwendet wird. -% \begin{macrocode} \TUD@parameter@sethandler{\TUD@parameter@defaulthandler{declaration}{#1}}% } % \end{macrocode} @@ -907,22 +1069,20 @@ % \end{parameter}^^A columns % \end{parameter}^^A language % \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.02}{2014/07/18}{Neuimplementierung für \pkg{scrlayer-scrpage}}^^A +% \changes{v2.03}{2015/01/30}{Bugfix für Spaltenanzahl}^^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. % \begin{macrocode} \newcommand*\declaration[1][]{% - \ifnum\tud@multicols>1\relax% - \end{multicols}% - \fi% \ifbool{@tud@declarations}{% \begingroup% - \TUD@parameter@set{declaration}{#1}% - \tud@fm@confirmation% - \tud@fm@blocking% + \tud@fm@confirmation[#1]% + \tud@fm@blocking[#1]% \endgroup% }{% \begin{declarations}[#1]% @@ -930,25 +1090,39 @@ \tud@fm@blocking% \end{declarations}% }% - \ifnum\tud@multicols>1\relax% - \begin{multicols}{\tud@multicols}% - \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][]{% + \ifbool{@tud@declarations}{% + \tud@fm@body@start{declaration}{#1}{#2} + #3% + \tud@fm@body@end{declaration}% + }{% + \ClassError{\TUDClassName}{Incorrect usage of `\string\nextdeclaration'}{% + The command `\string\nextdeclaration' can only be used\MessageBreak% + within the environment `declarations'.% + }% + }% +} +% \end{macrocode} +% \end{macro}^^A \nextdeclaration % \end{macro}^^A \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.02}{2014/07/18}{Neuimplementierung für \pkg{scrlayer-scrpage}}^^A +% \changes{v2.03}{2015/01/30}{Bugfix für Spaltenanzahl}^^A % \begin{macro}{\tud@fm@confirmation} -% \changes{v2.02}{2014/07/18}{neu}%^^A +% \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][]{% - \ifnum\tud@multicols>1\relax% - \end{multicols}% - \fi% % \end{macrocode} % Damit das optionale Argument ohne Schlüssel für die Unterstützer verwendet % werden kann, wird der Handler umdefiniert. @@ -958,8 +1132,7 @@ }% \ifbool{@tud@declarations}{% \begingroup% - \TUD@parameter@set{declaration}{#1}% - \tud@fm@confirmation% + \tud@fm@confirmation[#1]% \endgroup% }{% \begin{declarations}[#1]% @@ -972,43 +1145,34 @@ \TUD@parameter@sethandler[declaration]{% \TUD@parameter@defaulthandler{declaration}{##1}% }% - \ifnum\tud@multicols>1\relax% - \begin{multicols}{\tud@multicols}% - \fi% } % \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\vskip\z@\@confirmationclosing% - }% - }% +\newcommand*\tud@fm@confirmation[1][]{% + \tud@fm@body@start{declaration}{#1}{\confirmationname}% + \confirmationtext\vskip\z@\@confirmationclosing% + \tud@fm@body@end{declaration}% } % \end{macrocode} % \end{macro}^^A \tud@fm@confirmation % \end{macro}^^A \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 +% \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 +% \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][]{% - \ifnum\tud@multicols>1\relax% - \end{multicols}% - \fi% \TUD@parameter@sethandler[declaration]{% \TUD@parameter@set{declaration}{company=##1}% }% \ifbool{@tud@declarations}{% \begingroup% - \TUD@parameter@set{declaration}{#1}% - \tud@fm@blocking% + \tud@fm@blocking[#1]% \endgroup% }{% \begin{declarations}[#1]% @@ -1018,17 +1182,14 @@ \TUD@parameter@sethandler[declaration]{% \TUD@parameter@defaulthandler{declaration}{##1}% }% - \ifnum\tud@multicols>1\relax% - \begin{multicols}{\tud@multicols}% - \fi% } % \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}% - }% +\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 |