summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/tudscr/tudscr-manual.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/tudscr/tudscr-manual.dtx')
-rw-r--r--Master/texmf-dist/source/latex/tudscr/tudscr-manual.dtx567
1 files changed, 381 insertions, 186 deletions
diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr-manual.dtx b/Master/texmf-dist/source/latex/tudscr/tudscr-manual.dtx
index 392573d872d..2a59e7932e8 100644
--- a/Master/texmf-dist/source/latex/tudscr/tudscr-manual.dtx
+++ b/Master/texmf-dist/source/latex/tudscr/tudscr-manual.dtx
@@ -1,29 +1,33 @@
-% \CheckSum{2611}
+% \CheckSum{2750}
% \iffalse meta-comment
-% ======================================================================
-%
-% Das Corporate Design der TU Dresden auf Basis der KOMA-Script-Klassen
-%
-% ======================================================================
-% This work may be distributed and/or modified under the conditions of
-% the LaTeX Project Public License, version 1.3c of the license.
-% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3c or later is part of all distributions of LaTeX
-% version 2005/12/01 or later and of this work.
-% This work has the LPPL maintenance status "author-maintained".
-% The current maintainer and author of this work is Falk Hanisch.
-% ----------------------------------------------------------------------
-% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz,
-% Version 1.3c, verteilt und/oder veraendert werden.
-% Die neuste Version dieser Lizenz ist
-% http://www.latex-project.org/lppl.txt
-% und Version 1.3c ist Teil aller Verteilungen von LaTeX
-% Version 2005/12/01 oder spaeter und dieses Werks.
-% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained"
-% (allein durch den Autor verwaltet).
-% Der aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch.
-% ======================================================================
+%
+% ============================================================================
+%
+% TUD-KOMA-Script
+% Copyright (c) Falk Hanisch <tudscr@gmail.com>, 2012-2015
+%
+% ============================================================================
+%
+% This work may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License, version 1.3c of the license. The latest
+% version of this license is in http://www.latex-project.org/lppl.txt and
+% version 1.3c or later is part of all distributions of LaTeX 2005/12/01
+% or later and of this work. This work has the LPPL maintenance status
+% "author-maintained". The current maintainer and author of this work
+% is Falk Hanisch.
+%
+% ----------------------------------------------------------------------------
+%
+% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz
+% in der Version 1.3c, verteilt und/oder veraendert werden. Die aktuelle
+% Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und
+% Version 1.3c oder spaeter ist Teil aller Verteilungen von LaTeX 2005/12/01
+% oder spaeter und dieses Werks. Dieses Werk hat den LPPL-Verwaltungs-Status
+% "author-maintained", wird somit allein durch den Autor verwaltet. Der
+% aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch.
+%
+% ============================================================================
+%
% \fi
%
% \CharacterTable
@@ -47,7 +51,7 @@
%<*driver>
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\ProvidesFile{tudscr-manual.dtx}[%
- 2014/12/17 v2.02 TUD-KOMA-Script\space%
+ 2015/02/15 v2.03 TUD-KOMA-Script\space%
%</driver>
%<identify>\NeedsTeXFormat{LaTeX2e}[2011/06/27]
%<class&identify>\ProvidesClass{tudscrman}[%
@@ -78,8 +82,9 @@
%
% \selectlanguage{ngerman}
%
-% \changes{v2.02}{2014/11/18}{Index für Tutorials möglich}%^^A
-% \changes{v2.02}{2014/12/17}{xindy-Stildatei wird zur Laufzeit erzeugt}%^^A
+% \changes{v2.02}{2014/11/18}{\cls{tudscrman} Index für Tutorials möglich}%^^A
+% \changes{v2.02}{2014/12/17}{\cls{tudscrman} xindy-Stildatei wird bei der
+% Kompilierung erzeugt}%^^A
%
% \section{Klasse und Paket für die Anwenderdokumentation von \TUDScript}
%
@@ -136,10 +141,23 @@
% \end{macrocode}
% Das Paket \pkg{microtype} wird für den optischen Randausgleich verwendet.
% \begin{macrocode}
-\RequirePackage[babel]{microtype}[2013/05/23]
+\AfterPackage*{hyperref}{\RequirePackage[babel]{microtype}[2013/05/23]}
+% \end{macrocode}
+% \begin{length}{\baselineskipglue}
+% Diese Länge wird in der Dokumentation für alle möglichen stauch- und
+% dehnbaren Einfügen genutzt.
+% \begin{macrocode}
+\newlength\baselineskipglue
+\AtBeginDocument{%
+ \setlength\baselineskipglue{%
+ .4\baselineskip plus .4\baselineskip minus .2\baselineskip%
+ }%
+}
% \end{macrocode}
+% \end{length}^^A \baselineskipglue
% Verbesserte Zitate.
% \begin{macrocode}
+\PassOptionsToPackage{vskip=.5\baselineskipglue}{quoting}
\RequirePackage{quoting}[2014/01/28]
% \end{macrocode}
% Automatisierte Datumsformatierung.
@@ -200,12 +218,13 @@
\RequirePackage{ifplatform}[2010/10/22]
% \end{macrocode}
% Das Paket \pkg{hyperref} wird für alle möglichen Links und Querverweise
-% geladen.
+% geladen, \pkg{bookmark} verbesssert das Erstellen der Outline-Einträge.
% \begin{macrocode}
-\PassOptionsToPackage{hyperindex=false}{hyperref}
-\AtEndPreamble{%
+\PassOptionsToPackage{hyperindex=false,colorlinks,linkcolor=blue}{hyperref}
+\PassOptionsToPackage{open,openlevel=0}{bookmark}
+\AtBeginDocument{%
\RequirePackage{hyperref}[2012/11/06]
- \hypersetup{colorlinks,linkcolor=blue}
+ \RequirePackage{bookmark}[2011/12/02]
% \end{macrocode}
% Es folgen einige Befehle, die an das Paket \pkg{hyperref} gekoppelt sind.
% \begin{macro}{\Email}
@@ -267,7 +286,7 @@
\NewDocumentCommand\manualhyperdef{st'm}{%
\IfBooleanTF{#2}{%
\raisebox{4\baselineskip}[0pt][0pt]{\hyperdef{\jobname}{#3}{}}%
- \par\nobreak\vskip\dimexpr-\parskip-\baselineskip%
+ \par\nobreak\vskip\dimexpr-\parskip-\baselineskip\relax%
\@afterindentfalse\@afterheading%
}{%
\Hy@raisedlink{\hyperdef{\jobname}{#3}{}}%
@@ -304,7 +323,8 @@
%<*package>
level=\subsection*,%
%</package>
- noclearpage,firstpagestyle=headings,headers={\indexname}{\indexname}%
+ noclearpage,firstpagestyle=headings,headers={\indexname}{\indexname},%
+ othercode={\renewcommand*\subitem{\@idxitem\hspace*{15\p@}}}%
}
\newcommand*\xdyopt{-M tudscrman-temp.xdy -L german-din}
% \end{macrocode}
@@ -346,9 +366,8 @@
% für angehängte \enquote{f.} sowie \enquote{ff.} einstellen. Diese würden
% deshalb bei kursiven oder fetten Seitenzahlen trotzdem in normaler Schrift
% erscheinen, weshalb auf die Auszeichnung folgender Seiten verzichtet wird.
-% \begin{macrocode}
-%\write\tud@write@i{(require "ff-ranges.xdy")}
-% \end{macrocode}
+%^^A\write\tud@write@i{(require "ff-ranges.xdy")}
+%
% Seitenbereiche werden sofort zusammengefasst, wobei als Trennzeichen ein
% Halbgeviertstrich verwendet wird.
% \begin{macrocode}
@@ -369,30 +388,28 @@
% selbst, nicht jedoch die Argumente verworfen werden. Leider werden die
% manuell erstellten RegExp-Regeln durch \texttt{texindy} zu spät genutzt
% (\url{http://sourceforge.net/p/xindy/bugs/22/}).
-% \begin{macrocode}
-%\write\tud@write@i{(merge-rule "\\hyperindex\{(.*)\}\{(.*)\}" "/2" :eregexp)}
-%\write\tud@write@i{(merge-rule "\\hologo\{(.*)\}" "/1" :eregexp)}
-%\write\tud@write@i{(merge-rule "\\texttt\{(.*)\}" "/1" :eregexp)}
-%\write\tud@write@i{(merge-rule "\\textsbn\{(.*)\}" "/1" :eregexp)}
-%\write\tud@write@i{(merge-rule "\\textsbs\{(.*)\}" "/1" :eregexp)}
-% \end{macrocode}
+%^^A\write\tud@write@i{(merge-rule "\\hyperidx\{(.*)\}\{(.*)\}" "/2" :eregexp)}
+%^^A\write\tud@write@i{(merge-rule "\\hologo\{(.*)\}" "/1" :eregexp)}
+%^^A\write\tud@write@i{(merge-rule "\\texttt\{(.*)\}" "/1" :eregexp)}
+%^^A\write\tud@write@i{(merge-rule "\\textsbn\{(.*)\}" "/1" :eregexp)}
+%^^A\write\tud@write@i{(merge-rule "\\textsbs\{(.*)\}" "/1" :eregexp)}
+%
% Es werden die Attribute \emph{declare} mit der Abkürzung \emph{!} sowie
% \emph{important} mit der Abkürzung \emph{?} und \emph{default} definiert,
% welche hierarchisch gleichgestellt sind.
% \begin{macrocode}
\write\tud@write@i{%
- (define-attributes (("declare" "!" "important" "?" "default")))%
+ (define-attributes (("declare" "!" "important" "?" "deprecated" "default")))%
}
% \end{macrocode}
% Eine Alternative wäre, diese in der Hierarchie zu unterscheiden, allerdings
% war eine Bildung von zufriedenstellenden Seitenbereichen dabei nicht möglich
% und wurde deshalb verworfen.
-% \begin{macrocode}
-%\write\tud@write@i{(markup-attribute-group-list :sep ", ")}
-%\write\tud@write@i{%
-%\space\space(define-attributes (("declare" "!") ("important" "?")("default")))%
-%}
-% \end{macrocode}
+%^^A\write\tud@write@i{(markup-attribute-group-list :sep ", ")}
+%^^A\write\tud@write@i{%
+%^^A(define-attributes (("declare" "!") ("important" "?")("default")))%
+%^^A}
+%
% Einträge, die als wichtig deklariert wurden, können auch für normale zur
% Bereichsbildung verwendet werden.
% \begin{macrocode}
@@ -439,6 +456,20 @@
)%
}
% \end{macrocode}
+% Für die Änderungsliste wird ein separates Attribut erstellt. Mit diesem wird
+% es möglich, die Seitenangabe für Optionen und Befehle zu unterdrücken, welche
+% aus \TUDScript entfernt oder veraltet wurden, wenn mit \cs{Replace} eine
+% Alternative eingeführt wurde. Dafür wird der Befehl \cs{deprecatedhyperpage}
+% verwendet, welcher im Bedarfsball auf \cs{@gobble} gesetzt wird.
+% \begin{macrocode}
+\write\tud@write@i{%
+(markup-locref^^J%
+\space\space :open "\string\deprecatedhyperpage{"^^J%
+\space\space :close "}"^^J%
+\space\space :attr "deprecated"^^J%
+)%
+}
+% \end{macrocode}
% Punkte zwischen Eintrag und Seitenzahl.
% \begin{macrocode}
\write\tud@write@i{%
@@ -581,13 +612,26 @@
% \changes{v2.02}{2014/07/10}{neu}%^^A
% \begin{macro}{\if@tud@todo}
% \changes{v2.02}{2014/07/10}{neu}%^^A
+% \begin{macro}{\tud@todo@type}
+% \changes{v2.03}{2015/01/25}{neu}%^^A
% Diese Option ist verantwortlich für den Schalter \cs{if@tud@todo}. Über
% diesen wird gesteuert, ob ToDo-Notizen ausgegeben werden sollen.
% \begin{macrocode}
\newif\if@tud@todo
\@tud@todotrue
-\TUD@ifkey{ToDo}{@tud@todo}
+\newcommand*\tud@todo@type{}
+\TUD@key{ToDo}[true]{%
+ \TUD@set@ifkey{ToDo}{@tud@todo}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \let\tud@todo@type\relax%
+ \else%
+ \def\tud@todo@type{#1}%
+ \@tud@todotrue%
+ \FamilyKeyStateProcessed%
+ \fi%
+}
% \end{macrocode}
+% \end{macro}^^A \tud@todo@type
% \end{macro}^^A \if@tud@todo
% \end{option}^^A ToDo
%
@@ -605,7 +649,7 @@
headings=optiontoheadandtoc,%
captions=tableheading,%
numbers=noenddot,%
- color=true,%
+ cd=color,%
}{\tudinh@name}
\PassOptionsToPackage{automark}{scrlayer-scrpage}
% \end{macrocode}
@@ -619,7 +663,10 @@
\DeclareOption{print}{\let\tudprintflag\relax}
\AtBeginDocument{%
\ifdef{\tudfinalflag}{\TUDoptions{ToDo=false}}{}%
- \ifdef{\tudprintflag}{\hypersetup{hidelinks}\TUDoptions{color=no}}{}%
+ \ifdef{\tudprintflag}{%
+ \TUDoptions{color=no}%
+ \PassOptionsToPackage{hidelinks}{hyperref}%
+ }{}%
}
% \end{macrocode}
% \end{macro}^^A \tudprintflag
@@ -677,23 +724,27 @@
% \begin{macro}{\PValue}
% \begin{macro}{\PParameter}
% \begin{macro}{\POParameter}
+% \begin{macro}{\textOR}
+% \changes{v2.02}{2015/01/25}{neu}%^^A
% Diese Befehle dienen zum Auszeichnen von obligatorischen und optionalen
% Parametern und Befehlen oder bestimmten Wertzuweisungen.
% \begin{macrocode}
+\newrobustcmd*\textOR{\,\textbardbl\,}
\newrobustcmd*\PName[1]{\mbox{\texttt{\textsl{<#1>}}}}
\newrobustcmd*\PBoolean{\PName{Ein-Aus-Wert}}
-\newrobustcmd*\PBName[1]{\PBoolean|\PName{#1}}
+\newrobustcmd*\PBName[1]{\PBoolean\textOR\PName{#1}}
\newrobustcmd*\PSet{\PName{Einstellung}}
\newrobustcmd*\Parameter[1]{\mbox{\texttt{\{}\PName{#1}\texttt{\}}}}
\newrobustcmd*\OParameter[1]{\mbox{\texttt{[}\PName{#1}\texttt{]}}}
\newrobustcmd*\LParameter{\mbox{\texttt{[}\PName{Parameterliste}\texttt{]}}}
\newrobustcmd*\OLParameter[1]{%
- \mbox{\texttt{[}\PName{#1}|\PName{Parameterliste}\texttt{]}}%
+ \mbox{\texttt{[}\PName{#1}\textOR\PName{Parameterliste}\texttt{]}}%
}
\newrobustcmd*\PValue[1]{\mbox{\texttt{#1}}}
\newrobustcmd*\PParameter[1]{\mbox{\texttt{\{#1\}}}}
\newrobustcmd*\POParameter[1]{\mbox{\texttt{[#1]}}}
% \end{macrocode}
+% \end{macro}^^A \textOR
% \end{macro}^^A \POParameter
% \end{macro}^^A \PParameter
% \end{macro}^^A \PValue
@@ -721,22 +772,22 @@
\newrobustcmd*\hypertut[2]{%
\hyperref{tutorials/#1.pdf}{\jobname}{tutorials:#1}{\textsbn{#1.pdf}#2}%
}
-\NewDocumentCommand\Tutorial{som}{%
+\NewDocumentCommand\Tutorial{smd||}{%
\ifnum\pdfshellescape=1\relax%
% \end{macrocode}
% Um mit den verschachtelten Aufrufen von pdf\LaTeX{} umgehen zu können, wird
% das ganze Prozedere in ein Skript ausgelagert. Somit können die Aufrufe von
% pdf\LaTeX{} für die Tutorials im entsprechenden Ordner erfolgen.
% \begin{macrocode}
- \filemodCmp{tutorials/#3.pdf}{tutorials/#3.tex}{}{%
+ \filemodCmp{tutorials/#2.pdf}{tutorials/#2.tex}{}{%
\immediate\openout\tud@write@i=tutorials.sh%
\immediate\write\tud@write@i{%
cd tutorials^^J%
- pdflatex -shell-escape #3^^J%
- biber #3^^J%
- makeglossaries #3^^J%
- pdflatex #3^^J%
- pdflatex #3%
+ pdflatex -shell-escape #2^^J%
+ biber #2^^J%
+ makeglossaries #2^^J%
+ pdflatex #2^^J%
+ pdflatex #2%
}%
\immediate\closeout\tud@write@i%
% \end{macrocode}
@@ -755,14 +806,14 @@
% \end{macrocode}
% Hyperlink und Indexeintrag.
% \begin{macrocode}
- \IfFileExists{tutorials/#3.pdf}{%
- \hypertut{#3}{}%
+ \IfFileExists{tutorials/#2.pdf}{%
+ \hypertut{#2}{}%
}{%
- \textsbn{#3.pdf}%
+ \textsbn{#2.pdf}%
\tud@shellescape@wrn%
}%
\IfBooleanF{#1}{%
- \index[files]{\hypertut{#3}{~{\idxfont(Tutorial)}\IfValueT{#2}{|#2}}}%
+ \index[files]{\hypertut{#2}{~{\idxfont(Tutorial)}}\IfValueT{#3}{|#3}}%
}%
}
%</class>
@@ -828,6 +879,7 @@
%
% \begin{macro}{\ToDo}
% \changes{v2.02}{2014/07/10}{Verwendung von \pkg{todonotes}}%^^A
+% \changes{v2.03}{2015/01/25}{Ausgabe auf bestimmten Typ beschränkbar}%^^A
% \begin{macro}{\@ToDo}
% \changes{v2.02}{2014/07/10}{neu}%^^A
% \begin{macro}{\ListOfToDo}
@@ -872,23 +924,34 @@
}%
% \end{macrocode}
% Damit die Randnotiz nicht verrutscht, wird \cs{marginnote} anstelle von
-% \cs{marginpar} verwendet. Außerdem ist eine Verschiebung um den durch
-% \pkg{todonotes} definierten Leerraum notwendig.
+% \cs{marginpar} verwendet.
% \begin{macrocode}
- \renewcommand*\marginpar[2][]{\marginnote[##1]{##2}[\dimexpr-1.6ex+1pt]}%
- \vskip.8ex%
+ \renewcommand*\marginpar[2][]{%
+ \marginnote[##1]{##2}[\dimexpr-1.6ex+1pt\relax]%
+ }%
% \end{macrocode}
-% hier erfolgt die Ausgabe.
+% Die Ausgabe erfolgt entweder für alle ToDo-Notizen oder nur den per Option
+% festgelegten Typ.
% \begin{macrocode}
- \IfValueT{#4}{%
- \settowidth\marginparwidth{#4}%
- \addtolength\marginparwidth{\dimexpr1.6ex+1pt}%
- \let\par\relax\noindent%
- \edef\@tempa{\noexpand\todo[\@ToDo,noline,nolist]}%
- \@tempa{#4}%
- }%
- \edef\@tempa{\noexpand\todo[\@ToDo,inline]}%
- \@tempa{#3}%
+ \@tempswafalse
+ \ifdefvoid{\tud@todo@type}{\@tempswatrue}{}%
+ \IfValueT{#2}{\ifstr{#2}{\tud@todo@type}{\@tempswatrue}{}}%
+% \end{macrocode}
+% Vor der Ausgabe ist eine vertikale Verschiebung um den durch \pkg{todonotes}
+% definierten Leerraum notwendig.
+% \begin{macrocode}
+ \if@tempswa%
+ \vskip.8ex%
+ \IfValueT{#4}{%
+ \settowidth\marginparwidth{#4}%
+ \addtolength\marginparwidth{\dimexpr1.6ex+1pt\relax}%
+ \let\par\relax\noindent%
+ \edef\@tempa{\noexpand\todo[\@ToDo,noline,nolist]}%
+ \@tempa{#4}%
+ }%
+ \edef\@tempa{\noexpand\todo[\@ToDo,inline]}%
+ \@tempa{#3}%
+ \fi%
\endgroup%
\par\noindent%
}{}%
@@ -917,16 +980,6 @@
\newrobustcmd*\bsc{\@backslashchar}
% \end{macrocode}
% \end{macro}^^A \bsc
-% \begin{length}{\baselineskipglue}
-% Diese Länge wird in der Dokumentation für alle möglichen stauch- und
-% dehnbaren Einfügen genutzt.
-% \begin{macrocode}
-\newlength\baselineskipglue
-\setlength\baselineskipglue{%
- .4\baselineskip plus .4\baselineskip minus .2\baselineskip%
-}
-% \end{macrocode}
-% \end{length}^^A \baselineskipglue
% \begin{macro}{\tud@shellescape@wrn}
% \changes{v2.02}{2014/10/14}{neu}%^^A
% Dieses Makro wird verwendet, wenn eine gesuchte Datei nicht gefunden wurde,
@@ -1426,10 +1479,10 @@
\@afterindentfalse\@afterheading%
\IfBooleanTF{#1}{%
\IfValueTF{#3}{\setlength\@tempdima{#3}}{\setlength\@tempdima{\linewidth}}%
- \setlength{\@tempdimc}{-.7\baselineskip}%
+ \setlength\@tempdimc{-.7\baselineskip}%
\begin{tabularx}{\@tempdima}{lXX}\@TermTable\end{tabularx}%
}{%
- \setlength{\@tempdimc}{\z@}%
+ \setlength\@tempdimc{\z@}%
\begin{tabular}{lll}\@TermTable\end{tabular}%
}%
\let\@termlist\relax%
@@ -1549,7 +1602,7 @@
% \begin{macro}{\if@stareddeclare}
% \changes{v2.02}{2014/10/09}{neu}%^^A
% \begin{macro}{\if@openindex}
-% \begin{macro}{\if@noindex}
+% \begin{macro}{\if@deprecated}
% Dies sin ein paar Hilfsmakros zur Steuerung des Markup sowie der Ausgabe von
% Deklarationen, Index und Änderungsliste, welche bei den nächsten Befehlen und
% Umgebungen genutzt werden.
@@ -1557,9 +1610,9 @@
\newif\if@declare
\newif\if@stareddeclare
\newif\if@openindex
-\newif\if@noindex
+\newif\if@deprecated
% \end{macrocode}
-% \end{macro}^^A \if@noindex
+% \end{macro}^^A \if@deprecated
% \end{macro}^^A \if@openindex
% \end{macro}^^A \if@stareddeclare
% \end{macro}^^A \if@declare
@@ -1610,21 +1663,33 @@
the environment `Declaration'%
}%
}%
- \ifx\@IndexFormat\@empty\else%
- \ClassWarning{\tudcls@name}{%
- It is not possible to use any indexing format\MessageBreak%
- like |\@IndexFormat| within the arguments of the\MessageBreak%
- environment `Declaration'%
+% \end{macrocode}
+% Das zu erzeugende Label wird definiert.
+% \begin{macrocode}
+ \IfValueTF{#6}{\edef\@tempa{#5:#6:#8}}{\edef\@tempa{#5:#8}}%
+% \end{macrocode}
+% Für die Deklaration veralteter Optionen, Befehle etc. kann die Sternvariante
+% des Auszeichnungsbefehle verwendet werden, um das Erzeugen eines Labels zu
+% unterbinden.
+% \begin{macrocode}
+ \if@deprecated%
+ \expandafter\IfBooleanF\expandafter{\@IndexFormat}{%
+ \manualhyperdef{\@tempa}%
}%
- \fi%
- \if@noindex\else%
- \IfValueTF{#6}{\edef\@tempa{#5:#6:#8}}{\edef\@tempa{#5:#8}}%
% \end{macrocode}
% Wird zur Deklaration die Umgebung \env{Declaration*} genutzt, so wird der
% Hyperlink ein ganzes Stück nach oben verschoben. Hintergrund ist, dass diese
% Umgebung eigentlich nur zum Deklarieren von Klassen und Paketen gedacht ist
% und direkt nach einer Gliederungsüberschrift folgen sollte.
% \begin{macrocode}
+ \else%
+ \ifx\@IndexFormat\@empty\else%
+ \ClassWarning{\tudcls@name}{%
+ It is not possible to use any indexing format\MessageBreak%
+ like |\@IndexFormat| within the arguments of the\MessageBreak%
+ environment `Declaration'%
+ }%
+ \fi%
\if@stareddeclare%
\manualhyperdef'{\@tempa}%
\else%
@@ -1645,7 +1710,7 @@
#1\IfValueT{#2}{#2}%
\fi%
\else%
- \if@noindex\else%
+ \if@deprecated\else%
\@HyperIndex{#5}{#6}{#7}{#8}{#9}{declare)}%
\fi%
\fi%
@@ -1691,6 +1756,7 @@
}%
\ifstr{#3}{auto}{\def\@tempb{ in \autoref{\@tempa}}}{}%
\ifstr{#3}{page}{\def\@tempb{ \vpageref{\@tempa}}}{}%
+ \ifstr{#3}{ppage}{\def\@tempb{ \reftextfaraway{\@tempa}}}{}%
\ifstr{#3}{full}{\def\@tempb{ in \fullref{\@tempa}}}{}%
\ifstr{#3}{none}{%
\let\@tempb\relax%
@@ -1832,6 +1898,7 @@
% \begin{macro}{\if@additionallist}
% \begin{macro}{\@gobbleparameters}
% \changes{v2.02}{2014/10/09}{neu}%^^A
+% \changes{v2.03}{2015/02/02}{Makro \cs{relax} mit \cs{@empty} ersetzt}%^^A
% Es werden einige Hilfsmakros für die Ausgabe einer Deklaration sowie der
% dazugehörigen Änderungsliste initialisiert.
% \begin{macrocode}
@@ -1845,13 +1912,13 @@
\newif\if@additionallist
\newcommand*\@gobbleparameters{%
\let\PName\@gobble%
- \let\PBoolean\relax%
+ \let\PBoolean\@empty%
\let\PBName\@gobble%
- \let\PSet\relax%
+ \let\PSet\@empty%
\let\PValue\@gobble%
\let\Parameter\@gobble%
\let\OParameter\@gobble%
- \let\LParameter\relax%
+ \let\LParameter\@empty%
\let\OLParameter\@gobble%
\let\PParameter\@gobble%
\let\POParameter\@gobble%
@@ -1903,9 +1970,11 @@
\@additionallisttrue%
\listadd\@additionallist{\hspace*{\tabcolsep}\small(#5)}%
\in@{\Environment}{#2}%
- \ifin@ \listadd\@additionallist{\tabularnewline}\fi%
+ \ifin@\listadd\@additionallist{\tabularnewline}\fi%
}{%
\listadd\@additionallist{\relax}%
+ \in@{\Environment}{#2}%
+ \ifin@\listadd\@additionallist{\relax}\listadd\@additionallist{\relax}\fi%
}%
}{%
% \end{macrocode}
@@ -1942,15 +2011,46 @@
% optionale Argument kann genutzt werden, um das standardmäßige Atrribut für
% die Änderungsliste, welches in \cs{@changedatdeclaredefault} hinterlegt ist,
% zu ändern. Dies ist für die normale Version auf \emph{neu} und für die
-% Sternversion auf \emph{entfällt} voreingestellt.
+% Sternversion auf \emph{entfällt} voreingestellt. Für überholte Einträge in
+% der Änderungsliste wird das Indexattribut \enquote{deprecated} angehängt.
% \begin{macrocode}
\IfBooleanTF{#1}{%
- \global\@noindextrue%
- \renewcommand*\@changedatdeclaredefault{\emph{entf\"allt}}%
+ \global\@deprecatedtrue%
+ \renewcommand*\@changedatdeclaredefault{\emph{entf\"allt}|deprecated}%
}{%
- \global\@noindexfalse%
+ \global\@deprecatedfalse%
+ }%
+% \end{macrocode}
+% Das optionale Argument kann verwendet werden, um allen Deklarationen die
+% gleiche, nebenstehende Zusatzinformation mitzugeben, falls diese bis dahin
+% komplett leer waren.
+% \begin{macrocode}
+ \IfValueT{#2}{%
+ \if@additionallist%
+ \ClassWarning{\tudcls@name}{%
+ It is not possible to use the optional argument\MessageBreak%
+ of \string\printdeclarationlist due to the given\MessageBreak%
+ additional information as argument of the\MessageBreak%
+ environment `Declaration'%
+ }%
+ \else%
+% \end{macrocode}
+% Wurde das optionale Argument angegeben und die Zusatzliste war leer, so wird
+% der Schalter \cs{@additionallisttrue} gesetzt.
+% \begin{macrocode}
+ \@additionallisttrue%
+ \let\@additionallist\relax%
+ \protected@edef\@tempa{#2}%
+% \end{macrocode}
+% Die Standardformatierung der Zusatzinformationen.
+% \begin{macrocode}
+ \protected@edef\@tempb{\hspace*{\tabcolsep}\protect\small}%
+ \def\@tempc##1{%
+ \listeadd\@additionallist{\expandonce\@tempb(\expandonce\@tempa)}%
+ }%
+ \forlistloop\@tempc{\@declarationlist}%
+ \fi%
}%
- \IfValueT{#2}{\renewcommand*\@changedatdeclaredefault{\emph{#2}}}%
\@declaretrue\@openindextrue%
\@afterindentfalse\@afterheading%
% \end{macrocode}
@@ -2038,7 +2138,7 @@
\NewDocumentEnvironment{Declaration*}{om}{%
\@changedatdeclare{#1}{#2}%
\@stareddeclaretrue%
- \global\@noindexfalse%
+ \global\@deprecatedfalse%
\@declaretrue\@openindextrue#2\@declarefalse%
\@stareddeclarefalse%
}{%
@@ -2048,6 +2148,7 @@
forget to print this list with \string\printchangedatlist?%
}%
\fi%
+ \global\@deprecatedfalse%
\@gobbleparameters%
\@declaretrue\@openindexfalse#2\@declarefalse%
}
@@ -2074,7 +2175,7 @@
\let\allcolumnpar\@gobble%
\begin{tabular}{*{#1}l}\BODY\end{tabular}%
\end{lrbox}%
- \setlength{\tabularm@wd}{\wd\tabularm@box}%
+ \setlength\tabularm@wd{\wd\tabularm@box}%
\def\tabularm@num{#1}%
\let\allcolumnpar\@allcolumnpar%
\begin{tabular}{*{#1}l}\BODY\end{tabular}%
@@ -2149,7 +2250,7 @@
% optionalen Argument aufgeführt wird.
% \begin{macrocode}
\newcommand*\tud@@item[1][]{%
- \ifstrempty{#1}%
+ \ifblank{#1}%
{\edef\@tempa{\tud@item@val}}%
{\ifstr{\tud@item@val}{}%
{\edef\@tempa{#1}}%
@@ -2167,11 +2268,11 @@
% Der gesicherte Befehl wird mit den aufbereiteten Formatierungen genutzt.
% \begin{macrocode}
\newcommand*\tud@@@item[1][]{%
- \ifstrempty{#1}{}{%
+ \ifblank{#1}{}{%
\ifx\tud@item@add\relax%
\def\tud@item@add{#1}%
\else%
- \apptocmd{\tud@item@add}{~#1}{}{}%
+ \appto\tud@item@add{~#1}%
\fi%
}%
\item@values[%
@@ -2286,22 +2387,31 @@
% Um dem Anwender einen schnellen Überblick zu Änderungen der aktuellen Verison
% bereitstellen zu können, werden Befehle zur automatisierten Erzeugung einer
% solchen Liste definiert.
+% \ToDo{%
+% Der Quelltext ist ein Grauen, das muss ich irgendwann einmal komplett
+% überarbeiten. Insbesondere sollten die Argumente für die Änderungsliste
+% wesentlich strukturierter eingefügt werden, bestenfalls mit zwei oder mehr
+% unterschiedlichen Trennzeichen.
+% }[?]
%
-% \begin{macro}{\printchangedatlist}
-% \changes{v2.02}{2014/10/09}{neu}%^^A
% \begin{macro}{\@changedatdeclare}
% \changes{v2.02}{2014/10/09}{neu}%^^A
+% \changes{v2.03}{2015/01/31}{Ersetzungen ermöglicht}%^^A
% \begin{macro}{\@changedatdeclaredefault}
% \changes{v2.02}{2014/10/09}{neu}%^^A
% \begin{macro}{\@changedatdeclarelist}
% \changes{v2.02}{2014/07/25}{neu}%^^A
+% \begin{macro}{\ChangedAt@Split}
+% \begin{macro}{\ChangedAt@@Split}
% Um für Änderungsnotizen die dazugehörige Option, Befehl etc. bei einer
% Deklaration kenntlich zu machen, wird das deklarierte Element zusammen mit
% der Notiz in einer Liste gespeichert. Da mehrere kommaseparierte Werte
% angegeben werden können, muss das optionale Argument der Umgebung
% \env{Declaration} dahingehend abgearbeitet werden. Wenn keine weitere
% Erklärung angegeben wurde, wird der entspredchende Eintrag mit dem Attribut
-% versehen, welches in \cs{@changedatdeclaredefault} gespeichert ist.
+% versehen, welches in \cs{@changedatdeclaredefault} gespeichert ist. Dabei
+% kann außerdem angegeben werden, ob es sich bei Änderung um eine Umbenennung
+% von Option, Befehl etc. handelt.
% \begin{macrocode}
\newcommand*\@changedatdeclarelist{}
\let\@changedatdeclarelist\relax
@@ -2309,18 +2419,45 @@
\newcommand*\@changedatdeclare[2]{%
\IfValueT{#1}{%
\@for\@tempa:=#1\do{%
- \protected@expandtwoargs\in@{!}{\@tempa}%
- \ifin@%
- \expandafter\listadd\expandafter\@changedatdeclarelist%
- \expandafter{\@tempa!#2}%
- \else%
- \expandafter\listadd\expandafter\@changedatdeclarelist%
- \expandafter{\@tempa!\@changedatdeclaredefault!#2}%
+ \ifx\@tempa\@empty\else%
+ \preto{\@tempa}{#2!}%
+ \expandafter\ChangedAt@Split\expandafter{\@tempa}%
\fi%
}%
}%
}
% \end{macrocode}
+% Die Änderungsnotiz für die Implementierung wird erst an den Ausrufezeichen
+% in einzelne Argumente getrennt\dots
+% \begin{macrocode}
+\NewDocumentCommand\ChangedAt@Split{>{\SplitArgument{2}{!}}m}{%
+ \ChangedAt@@Split#1%
+}
+% \end{macrocode}
+% \dots und anschließend in die Liste \cs{@changedatdeclarelist}~-- in einer
+% etwas kryptischen Form~-- eingetragen. Dies geschieht jedoch nur, wenn im
+% Argument nicht die Sternversion eines Auszeichnungsbefehls genutzt wurde.
+% Diese sollen keinen Eintrag in der Änderungsliste, wohl aber eine Randnotiz
+% erzeugen.
+% \begin{macrocode}
+\newcommand*\ChangedAt@@Split[3]{%
+ \in@{*}{#1}%
+ \ifin@%
+ \listadd\@changedatdeclarelist{Allgemein!#2}%
+ \else%
+ \listadd\@changedatdeclarelist{%
+ Implementierung!#2!\IfValueTF{#3}{#3}{\@changedatdeclaredefault}!#1%
+ }%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \ChangedAt@@Split
+% \end{macro}^^A \ChangedAt@Split
+% \end{macro}^^A \@changedatdeclarelist
+% \end{macro}^^A \@changedatdeclaredefault
+% \end{macro}^^A \@changedatdeclare
+% \begin{macro}{\printchangedatlist}
+% \changes{v2.02}{2014/10/09}{neu}%^^A
% Die Einträge in der Änderungsliste sowie die dazugehörige Randnotiz werden
% mit dem Makro \cs{ChangedAt@Process} abgearbeitet, sortiert und erstellt. Bei
% \cs{printchangedatlist} wird mit dem optionalen Argument der Versatz für die
@@ -2329,35 +2466,39 @@
% \begin{macrocode}
\NewDocumentCommand\printchangedatlist{sO{\z@}}{%
\ifx\@changedatdeclarelist\relax\else%
- \ChangedAt@Process{#2}{\@changedatdeclarelist}%
+ \if@deprecated%
+ \ChangedAt@Process[#1]{#2}{\@changedatdeclarelist}%
+ \else%
+ \ChangedAt@Process{#2}{\@changedatdeclarelist}%
+ \fi%
\global\let\@changedatdeclarelist\relax%
\IfBooleanF{#1}{%
- \par\nobreak\vskip\dimexpr-\parskip-\baselineskip%
+ \par\nobreak\vskip\dimexpr-\parskip-\baselineskip\relax%
\@afterindentfalse\@afterheading%
}%
\fi%
}
% \end{macrocode}
-% \end{macro}^^A \@changedatdeclarelist
-% \end{macro}^^A \@changedatdeclaredefault
-% \end{macro}^^A \@changedatdeclare
% \end{macro}^^A \printchangedatlist
% \begin{macro}{\ChangedAt}
% \changes{v2.02}{2014/07/25}{erweitert}%^^A
% \changes{v2.02}{2014/10/15}{Sternversion neu (keine Randnotiz)}%^^A
% An den Befehl \cs{ChangedAt} kann eine kommagetrente Liste mit verschiedenen
% Versionsnummern und dazugehörigen Änderungen übergeben werden. Er wird in der
-% Form: \cs{ChangedAt}\marg{Version!Definition,Version!Erweiterung} genutzt.
-% Der Prozess selbst wird mit \cs{ChangedAt@Process} durchgeführt. Es wird
-% zu der angegebenen Versionsnummer ein Eintrag in die Änderungsliste erstellt,
-% wenn mit einem Ausrufezeichen getrennt der gewünschte Inhalt gegeben wurde.
+% Form: \cs{ChangedAt}\verb|{|\meta{Version}\verb|!|\meta{Beschreibung}\verb|}|
+% genutzt. Mit \cs{ChangedAt@Process} wird der Prozess selbst durchgeführt. Es
+% wird zu der angegebenen Versionsnummer ein Eintrag in die Änderungsliste
+% erstellt, wenn mit einem Ausrufezeichen getrennt der gewünschte Inhalt
+% gegeben wurde.
%
% Alle übergegebenen Versionsnummern werden als Liste mit einmaligen Einträgen
% in einer Randnotiz gesetzt. Mit dem optionalen Argument kann ein vertikaler
-% dieser angegeben werden. Die Sternversion von \cs{ChangedAt} unterdrückt die
-% Ausgabe dieser Randnotiz.
+% dieser angegeben werden. Die Sternversion unterdrückt stattdessen die Ausgabe
+% dieser Randnotiz.
% \begin{macrocode}
-\NewDocumentCommand\ChangedAt{sO{\z@}m}{\ChangedAt@Process[#1]{#2}{#3}}
+\NewDocumentCommand\ChangedAt{sO{\z@}mO{Allgemein}}{%
+ \ChangedAt@Process[#1]{#2}[#4]{#3}%
+}
% \end{macrocode}
% \end{macro}^^A \ChangedAt
% \begin{macro}{\ChangedAt@Process}
@@ -2369,7 +2510,7 @@
% \changes{v2.02}{2014/10/16}{Unterteilung Änderungsliste in Bereiche}%^^A
% \begin{macro}{\ChangedAt@Default}
% \changes{v2.02}{2014/09/02}{neu}%^^A
-% \begin{macro}{\ChangedAt@Split}
+% \begin{macro}{\ChangedAt@Process@Split}
% \changes{v2.02}{2014/09/02}{neu}%^^A
% \begin{macro}{\@changedatlist}
% \changes{v2.02}{2014/09/02}{neu}%^^A
@@ -2378,20 +2519,25 @@
% Mit diesen Befehlen wird die Änderungshistorie in Form eines Index erstellt.
% Der Befehl \cs{ChangedAt@Process} setzt eine kommagetrennte Liste in eine
% im Format von \pkg{etoolbox} um. Anschließend wird diese für die Liste der
-% Änderungen mit \cs{ChangedAt@Split} aufgespalten. Die einzelnen Einträge
-% werden mit \cs{ChangedAt@@Process} weiter verarbeitet.
+% Änderungen mit \cs{ChangedAt@Process@Split} aufgespalten. Die einzelnen
+% Einträge werden mit \cs{ChangedAt@@Process} weiter verarbeitet.
% \begin{macrocode}
\newcommand*\@changedatlist{}
\newcommand*\ChangedAt@Default{}
\newcommand*\@changedatversionlist{}
\let\@changedatversionlist\relax
-\newcommand*\ChangedAt@Process[3][]{%
+\NewDocumentCommand\ChangedAt@Process{omom}{%
\let\@changedatlist\relax%
\let\@changedatversionlist\relax%
- \@for\@tempa:=#3\do{\listeadd{\@changedatlist}{\expandonce\@tempa}}%
- \forlistloop\ChangedAt@Split{\@changedatlist}%
+ \@for\@tempa:=#4\do{%
+ \ifx\@tempa\@empty\else%
+ \IfValueT{#3}{\preto\@tempa{#3!}}%
+ \listeadd{\@changedatlist}{\expandonce\@tempa}%
+ \fi%
+ }%
+ \forlistloop\ChangedAt@Process@Split{\@changedatlist}%
% \end{macrocode}
-% Nach der Verarbeitung aller Einräge sind in \cs{@changedatlist} alle
+% Nach der Verarbeitung aller Einräge sind in \cs{@changedatversionlist} alle
% angegebenen Versionsnummern genau einmal enthalten. Mit \cs{sortlist} werden
% diese in die richtige Reihenfolge sortiert und anschließend als Randnotiz in
% einer Tabelle ausgegeben, falls nicht die Sternversion verwendet wurde.
@@ -2413,21 +2559,21 @@
}%
}
% \end{macrocode}
-% Der Befehl \cs{ChangedAt@Split} teilt ein gegebenes Argument am Delimiter
-% Ausrufezeichen (\enquote{!}) in drei Argumente auf und reicht diese an
-% \cs{ChangedAt@@Process} weiter. Sollte kein oder nur Ausrufezeichen gefunden
-% werden, so wird das zweite und/oder dritte Argument mit dem~-- vom Paket
-% \pkg{xparse} definierten~-- leeren Wert \texttt{-NoValue-} an den Befehl
-% \cs{ChangedAt@@Process} übergeben.
+% Der Befehl \cs{ChangedAt@Process@Split} teilt ein gegebenes Argument am
+% Delimiter Ausrufezeichen (\enquote{!}) in drei Argumente auf und reicht diese
+% an \cs{ChangedAt@@Process} weiter. Sollte kein oder nur Ausrufezeichen
+% gefunden werden, so wird das zweite und/oder dritte Argument mit dem~-- vom
+% Paket \pkg{xparse} definierten~-- leeren Wert \texttt{-NoValue-} an den
+% Befehl \cs{ChangedAt@@Process} übergeben.
% \begin{macrocode}
-\NewDocumentCommand\ChangedAt@Split{>{\SplitArgument{2}{!}}m}{%
+\NewDocumentCommand\ChangedAt@Process@Split{>{\SplitArgument{3}{!}}m}{%
\ChangedAt@@Process#1%
}
% \end{macrocode}
% Hiermit wird der Eintrag in die Änderungshistorie erzeugt. Dabei ist zu
% unterscheiden, ob der Befehl \cs{ChangedAt} direkt genutzt wurde oder aber
% der Eintrag innerhalb der \env{Declaration}-Umgebung erfolgte. Dies wird
-% anhand von des dritten Argumentes erkannt. Für den ersten Fall erfolgt ein
+% anhand des dritten Argumentes erkannt. Für den ersten Fall erfolgt ein
% Eintrag lediglich, wenn neben der Versionsnummer selbst auch eine Erklärung
% angegben wurde~-- eine Randnotiz wird aber in jedem Fall gesetzt. Im zweiten
% Fall wird der Erklärung \emph{immer} \cs{ChangedAt@Default} vorangestellt.
@@ -2435,8 +2581,8 @@
% Änderungsliste vermerkt, dass es sich um eine \emph{neue} Option, Befehl etc.
% handelt. Der eigentliche Eintrag selbst erfolgt mit \cs{ChangedAt@@@Process}.
% \begin{macrocode}
-\newcommand*\ChangedAt@@Process[3]{%
- \IfValueTF{#3}{%
+\newcommand*\ChangedAt@@Process[4]{%
+ \IfValueTF{#4}{%
% \end{macrocode}
% Bei der Deklaration von Optionen, Befehlen etc. werden diese automatisch in
% der Liste der Änderungen im Bereich \enquote{Implementierung} vor der
@@ -2447,22 +2593,22 @@
% \begin{macrocode}
\begingroup%
\@gobbleparameters%
- \xdef\ChangedAt@Default{#3}%
+ \xdef\ChangedAt@Default{#4}%
\endgroup%
- \ChangedAt@@@Process{#1}{Implementierung}{\ChangedAt@Default: #2}%
+ \ChangedAt@@@Process{#2}{#1}{\ChangedAt@Default: #3}%
}{%
% \end{macrocode}
% Wurde \cs{ChangedAt} direkt und nicht über das optionale Argument der
% Umgebungen \env{Declaration} genutzt, erscheint der gewünschte Eintrag im
% Bereich \enquote{Allgemein}.
% \begin{macrocode}
- \IfValueT{#2}{\ChangedAt@@@Process{#1}{Allgemein}{#2}}%
+ \IfValueT{#3}{\ChangedAt@@@Process{#2}{#1}{#3}}%
}%
% \end{macrocode}
% Außerdem wird der Liste \cs{changedatversionlist} die aktuelle Version
% einmalig hinzugefügt, um alle in einer Randnotiz ausgeben zu können.
% \begin{macrocode}
- \xifinlist{#1}{\@changedatversionlist}{}{\listeadd\@changedatversionlist{#1}}%
+ \xifinlist{#2}{\@changedatversionlist}{}{\listeadd\@changedatversionlist{#2}}%
}
% \end{macrocode}
% Mit \cs{ChangedAt@@@Process} Erfolgen die Einträge in die Änderungsliste.
@@ -2482,7 +2628,7 @@
% \end{macrocode}
% Danach wird geprüft, ob das Makro \cs{Key} übergeben wurde. Außerdem wird ein
% Anker in der Änderungsliste für die Referenzierung auf die einzelnen Bereiche
-% (\enquote{Allgemein}, \enquote{Implementierung} und \enquote{Umbenennungen})
+% (\enquote{Allgemein}, \enquote{Implementierung} und \enquote{Ersetzungen})
% gesetzt.
% \begin{macrocode}
\expandafter\in@\expandafter\Key\expandafter{\@tempa}%
@@ -2492,11 +2638,11 @@
\setbox0\hbox{#3}%
\endgroup%
\index[changelog]{%
- #1 \manualhyperdef*{#1}!\manualhyperdef*{#1:#2}{#2}!\@TempKey\ #3%
+ #1\manualhyperdef*{#1}!\manualhyperdef*{#1:#2}#2!\@TempKey\ #3%
}%
\else%
\index[changelog]{%
- #1 \manualhyperdef*{#1}!\manualhyperdef*{#1:#2}{#2}!#3%
+ #1\manualhyperdef*{#1}!\manualhyperdef*{#1:#2}#2!#3%
}%
\fi%
\endgroup%
@@ -2504,28 +2650,40 @@
% \end{macrocode}
% \end{macro}^^A \@changedatversionlist
% \end{macro}^^A \@changedatlist
-% \end{macro}^^A \ChangedAt@Split
+% \end{macro}^^A \ChangedAt@Process@Split
% \end{macro}^^A \ChangedAt@Default
% \end{macro}^^A \ChangedAt@@@Process
% \end{macro}^^A \ChangedAt@@Process
% \end{macro}^^A \ChangedAt@Process
-% \begin{macro}{\Rename}
+% \begin{macro}{\Replace}
% \changes{v2.02}{2014/07/25}{neu}%^^A
-% Der Befehl \cs{Rename} erzeugt einen Eintrag in der Änderungshistorie sowie
+% \changes{v2.03}{2015/02/02}{auf mehrere Einträge erweitert}%^^A
+% Der Befehl \cs{Replace} erzeugt einen Eintrag in der Änderungshistorie sowie
% einen Eintrag im gewünschten Index mit einem Verweis auf den neuen Befehl.
% \begin{macrocode}
-\newcommand*\Rename[4][]{%
- \ChangedAt@@@Process{#2}{Umbenennungen}{%
- #3: \emph{umbenannt}~\textrightarrow~siehe #4%
- }%
- \ChangedAt@@@Process{#2}{Implementierung}{%
- #4: \emph{neu}~\textrightarrow~ersetzt #3%
+\NewDocumentCommand\Replace{ommm}{%
+% \end{macrocode}
+% Die alten Befehle in der Liste erhalten einen Eintrag in der Änderungsnotiz.
+% Das Komma vor dem Argument in der Schleife ist notwendig, weil ansonsten das
+% Argument sofort expandiert wird.
+% \begin{macrocode}
+ \@for\@tempa:={,#4}\do{%
+ \ifx\@tempa\@empty\else%
+ \protected@edef\@tempb{%
+ Implementierung!#2!\emph{entf\"allt}|see{#3}!\@tempa%
+ }%
+ \expandafter\listadd\expandafter\@changedatdeclarelist\expandafter{%
+ \@tempb%
+ }%
+% \end{macrocode}
+% Und ggf. der Eintrag im Index.
+% \begin{macrocode}
+ \IfValueT{#1}{\index[#1]{\@tempa|see{#3}}}%
+ \fi%
}%
- \listeadd\@changedatdeclarelist{#2}%
- \index[#1]{#3|see{#4}}%
}
% \end{macrocode}
-% \end{macro}^^A \Rename
+% \end{macro}^^A \Replace
% \begin{macro}{\@ProcessChangedAt}
% \changes{v2.02}{2014/07/25}{erweitert}%^^A
% \changes{v2.02}{2014/10/08}{Sternversion ergänzt}%^^A
@@ -2950,8 +3108,8 @@
% Text vorangestellt werden kann.
% \begin{macrocode}
\@tempa{\@CodePreamble}{}%
- \setlength{\@tempdimc}{\leftskip}%
- \setlength{\leftskip}{\leftmargin}%
+ \setlength\@tempdimc{\leftskip}%
+ \setlength\leftskip{\leftmargin}%
% \end{macrocode}
% Durch die zweimalige Verwendung von \val{\string\jobname-temp.tex}~-- einmal
% dirket und einmal innerhalb einer Box~-- können darin verwendete Befehle wie
@@ -2963,7 +3121,7 @@
\@tempa{\input{\jobname-temp.tex}}{\@CodeHook}%
\DeactivateWarningFilters[Tutorial]%
\global\let\@CodeHook\relax%
- \setlength{\leftskip}{\@tempdimc}%
+ \setlength\leftskip{\@tempdimc}%
\noindent\ignorespaces%
}
% \end{macrocode}
@@ -3051,11 +3209,11 @@
\@tempcnta\z@%
\@for\@tempa:=#3\do{\advance\@tempcnta\@ne}%
\ifnum\@tempcnta>\z@%
- \setlength{\@tempdima}{\textwidth}%
+ \setlength\@tempdima{\textwidth}%
\divide\@tempdima\@tempcnta%
\advance\@tempcnta\m@ne%
\multiply\@tempcnta 2%
- \addtolength{\@tempdima}{-\@tempcnta\tabcolsep}%
+ \addtolength\@tempdima{-\@tempcnta\tabcolsep}%
\@for\@tempa:=#3\do{%
\advance\@tempcnta\m@ne%
\edef\@tempb{%
@@ -3247,10 +3405,10 @@
%<*class>
\@printindex[keys]%
\@printindex[terms]%
+ \@printindex[fonts]%
\begingroup%
\let\lettergroup\@gobble%
\let\indexspace\par%
- \@printindex[fonts]%
\@printindex[colors]%
\endgroup%
%</class>
@@ -3275,7 +3433,6 @@
% \begin{macrocode}
\newcommand*\@printindex[1][]{%
\pagebreak[3]%
- \apptocmd{\prepare@multicols}{\hbadness10000}{}{}%
%<*class>
\ifblank{#1}{%
\ifx\@printindexprologue\@empty%
@@ -3330,13 +3487,22 @@
% \begin{macro}{\if@changelog}
% \begin{macro}{\Changelog}
% \changes{v2.02}{2014/08/20}{neu}%^^A
-% Ähnlich wie für den Index wird auch für die Änderungsliste verfahren.
+% \begin{macro}{\deprecatedhyperpage}
+% \changes{v2.03}{2015/02/05}{neu}%^^A
+% Ähnlich wie für den Index wird auch für die Änderungsliste verfahren. Mit dem
+% Makro \cs{deprecatedhyperpage} wird die Ausgabe der Seitenzahlen unterdrückt,
+% wenn zusätzlich ein mit \cs{see} gesetzter Querverweis existiert.
% \begin{macrocode}
+\newcommand*\deprecatedhyperpage{}
\newif\if@changelog
\newcommand*\PrintChangelog{%
\begingroup%
\let\lettergroup\@gobble%
\@changelogtrue%
+ \let\deprecatedhyperpage\hyperpage%
+ \preto\item{\let\deprecatedhyperpage\hyperpage}%
+ \preto\subitem{\let\deprecatedhyperpage\hyperpage}%
+ \preto\subsubitem{\let\deprecatedhyperpage\hyperpage}%
\@printindex[changelog]%
\endgroup%
}
@@ -3347,12 +3513,41 @@
}%
}
% \end{macrocode}
+% \end{macro}^^A \deprecatedhyperpage
% \end{macro}^^A \Changelog
% \end{macro}^^A \if@changelog
% \end{macro}^^A \PrintChangelog
%
% \iffalse
%</class>
+% \fi
+%
+% \begin{macro}{\see}
+% \changes{v2.03}{2015/02/06}{neu}%^^A
+% \begin{macro}{\seealso}
+% \changes{v2.03}{2015/02/06}{neu}%^^A
+% Diese Befehle werden zum einen so definiert, dass zwischen \cs{seename} und
+% dem Argument ein geschütztes Leerzeichen verwendet wird. Die Sternversion
+% benötigt kein zweites, leeres Argument.
+% \begin{macrocode}
+\renewrobustcmd*\see[2]{%
+ \ifstr{#1}{*}{\emph{\seename}~#2}{\emph{\seename}~#1}%
+% \end{macrocode}
+% Innerhalb der Klasse dient er außerdem zum etwaigen Unterdrücken von
+% Seitenzahlen in der Änderungsliste veralteter Optionen, Befehle etc.
+% \begin{macrocode}
+%<*class>
+ \if@changelog\let\deprecatedhyperpage\@gobble\fi%
+%</class>
+}
+\renewrobustcmd*\seealso[2]{%
+ \ifstr{#1}{*}{\emph{\alsoname}~#2}{\emph{\alsoname}~#1}%
+}
+% \end{macrocode}
+% \end{macro}^^A \seealso
+% \end{macro}^^A \see
+%
+% \iffalse
%</body>
% \fi
%