summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/tudscr/tudscr-frontmatter.dtx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2015-07-02 22:12:17 +0000
committerKarl Berry <karl@freefriends.org>2015-07-02 22:12:17 +0000
commit586aedcf63ecf6ea7da1c1529e5ea5ba8f5cb426 (patch)
treeb679941add6df7f6b1ee8c135b24181f992dcb65 /Master/texmf-dist/source/latex/tudscr/tudscr-frontmatter.dtx
parentfecdcd43eaa7f73e830159293fe22a202803086b (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.dtx865
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