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.dtx1276
1 files changed, 1276 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr-manual.dtx b/Master/texmf-dist/source/latex/tudscr/tudscr-manual.dtx
new file mode 100644
index 00000000000..95eb44e5a27
--- /dev/null
+++ b/Master/texmf-dist/source/latex/tudscr/tudscr-manual.dtx
@@ -0,0 +1,1276 @@
+% \CheckSum{1206}
+% \iffalse meta-comment
+% ======================================================================
+%
+% Das Corporate Design der TU Dresden auf Basis der KOMA-Script-Klassen
+%
+% ======================================================================
+% This work may be distributed and/or modified under the conditions of
+% the LaTeX Project Public License, version 1.3c of the license.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2005/12/01 or later and of this work.
+% This work has the LPPL maintenance status "author-maintained".
+% The current maintainer and author of this work is Falk Hanisch.
+% ----------------------------------------------------------------------
+% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz,
+% Version 1.3c, verteilt und/oder veraendert werden.
+% Die neuste Version dieser Lizenz ist
+% http://www.latex-project.org/lppl.txt
+% und Version 1.3c ist Teil aller Verteilungen von LaTeX
+% Version 2005/12/01 oder spaeter und dieses Werks.
+% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained"
+% (allein durch den Autor verwaltet).
+% Der aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: tudscr-manual.dtx
+%<*driver>
+% \fi
+\ProvidesFile{tudscr-manual.dtx}%
+ [2014/04/24 v1.00 TUD-KOMA-Script (manual)]
+% \iffalse
+\documentclass{tudscrdoc}
+\KOMAoptions{parskip=half-}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{tudscr-manual.dtx}
+\begin{document}
+ \maketitle
+ \DocInput{\filename}
+\end{document}
+%</driver>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \section{Klasse für das \TUDScript-Handbuch}
+%
+% Diese Klasse wird für das Benutzerhanduch des \TUDScript-Bundles verwendet.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \subsection{Identifizierung der Klasse \cls{tudscrman}}
+%
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{tudscrman}[\TUDVersion\space{}internal manual class]%
+% \end{macrocode}
+%
+% \subsection{Die Klasse \pkg{tudscrman}}
+%
+% Basis für das Handbuch ist die Klasse \cls{tudscrreprt}. An diese werden alle
+% Klassenoptionen weitergereicht.
+%
+% \begin{macrocode}
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{tudscrreprt}}
+\ProcessOptions\relax
+\LoadClass{tudscrreprt}
+% \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
+\setlength\baselineskipglue{%
+ .5\baselineskip plus .5\baselineskip minus .25\baselineskip%
+}
+% \end{macrocode}
+% \end{length}^^A \baselineskipglue
+% Des Weiteren werden einige Pakete geladen. Dabei wird \pkg{microtype} für den
+% optischen Randausgleich verwendet, \pkg{textcomp} stellt Pfeile u.\,ä. im
+% Fließtext zur Verfügung, mit \pkg{tabularx} können Tabellen bestimmter Breite
+% und automatisch berechneten Spaltenbreiten gesetzt werden. Mit \pkg{ragged2e}
+% wird~-- falls benötigt~-- im Flattersatz die Silbentrennung aktiviert. Das
+% Paket \pkg{marginnote} wird für die Auszeichnung von Änderungen und
+% ToDo-Notizen am Seitenrand verwendet. Außerdem wird das Paket \pkg{xparse}
+% geladen. Dieses erlaubt eine sehr freie Deklaration von Makros mit (fast)
+% beliebig arangierbaren optionalen Argumenten.
+% \begin{macrocode}
+\RequirePackage{microtype}
+\RequirePackage{textcomp}
+\RequirePackage{tabularx}
+\RequirePackage{ragged2e}
+\RequirePackage{marginnote}
+\RequirePackage{xparse}
+% \end{macrocode}
+% Die Fußnoten werden nicht mit jedem Kapitel zurückgesetzt.
+% \begin{macrocode}
+\RequirePackage{chngcntr}
+\counterwithout{footnote}{chapter}
+% \end{macrocode}
+% Das Paket erlaubt das Beeinflussen der Standardlisten und die Ableitung neuer
+% Listen aus diesen. Hier werden die Zwischenräume innerhalb der Listen entfernt.
+% \begin{macrocode}
+\RequirePackage{enumitem}
+\setlist{noitemsep}
+% \end{macrocode}
+% \begin{environment}{values}
+% \begin{macro}{\before@values}
+% \begin{macro}{\item@values}
+% \begin{macro}{\itemtrue}
+% \begin{macro}{\itemfalse}
+% \begin{macro}{\tud@item@val}
+% \begin{macro}{\tud@item@add}
+% \begin{macro}{\tud@item@format}
+% \begin{macro}{\tud@item}
+% \begin{macro}{\tud@@item}
+% \begin{macro}{\tud@@@item}
+% Die Liste \env{values} dient zum Benennen der möglichen Werte für einen
+% bestimmten Schlüssel. Im Handbuch kommt diese Liste vorallem bei Optionen aber
+% auch bei bestimmten Befehls- und Optionsparametern zum Einsatz.
+% \begin{macrocode}
+\newlist{values}{description}{1}
+\setlist[values]{%
+ topsep=.5\baselineskipglue,labelwidth=\columnwidth,labelsep=0pt,
+ font=\normalfont\ttfamily,before*=\before@values%
+}
+% \end{macrocode}
+% Zu Beginn der Umgebung wird die Definition des \cs{item}-Befehls gesichert und
+% anschließend geändert.
+% \begin{macrocode}
+\newcommand*\before@values{%
+ \let\item@values\item%
+ \let\item\tud@item%
+%% \par\RaggedRight%
+}
+% \end{macrocode}
+% Die folgenden beiden Befehle enthalten die Standardwerte für boolsche Schalter.
+% \begin{macrocode}
+\newcommand*\itemfalse{\def\tud@item@val{false/off/no}\item}
+\newcommand*\itemtrue{\def\tud@item@val{true/on/yes}\item}
+% \end{macrocode}
+% Mit der neuen Definition kann der Säumniswert mit \cs{item*} explizit in der
+% Liste hervorgehoben werden.
+% \begin{macrocode}
+\newcommand*\item@values{}
+\newcommand*\tud@item@val{}
+\newcommand*\tud@item@add{}
+\newcommand*\tud@item@format{}
+\newcommand*\tud@item{%
+ \@ifstar{%
+ \def\tud@item@add{(Säumniswert)}%
+ \let\tud@item@format\emph%
+ \tud@@item%
+ }{%
+ \let\tud@item@add\relax%
+ \let\tud@item@format\relax%
+ \tud@@item%
+ }%
+}
+% \end{macrocode}
+% In der zweiten Instanz wird das optionale Argument von \cs{item} ausgewertet.
+% Dabei wird das Hilfsmakro \cs{tud@item@val} beachtet, welches evtl. mit den
+% Befehlen \cs{itemtrue} oder \cs{itemfalse} gesetzt wurde und vor dem
+% optionalen Argument aufgeführt wird.
+% \begin{macrocode}
+\newcommand*\tud@@item[1][]{%
+ \ifstrempty{#1}%
+ {\edef\@tempa{\tud@item@val}}%
+ {\ifstr{\tud@item@val}{}%
+ {\edef\@tempa{#1}}%
+ {\edef\@tempa{\tud@item@val/#1}}%
+ }%
+ \def\tud@item@val{}%
+% \end{macrocode}
+% Wurde weder \cs{tud@item@val} gesetzt noch ein Wert im optionalen Argument von
+% \cs{item} angegeben, so wird der gesicherte Befehl ausgeführt. Ansonsten folgt
+% die dritte Instanz.
+% \begin{macrocode}
+ \ifstr{\@tempa}{}{\item@values}{\tud@@@item}%
+}
+% \end{macrocode}
+% Der gesicherte Befehl wird mit den aufbereiteten Formatierungen genutzt.
+% \begin{macrocode}
+\newcommand*\tud@@@item[1][]{%
+ \ifstrempty{#1}{}{%
+ \ifx\tud@item@add\relax%
+ \def\tud@item@add{#1}%
+ \else%
+ \apptocmd{\tud@item@add}{~#1}{}{}
+ \fi%
+ }%
+ \item@values[%
+ \tud@item@format{\@tempa:}%
+ \ifx\tud@item@add\relax\else\textuln{\space\footnotesize\tud@item@add}\fi%
+ ]
+}
+% \end{macrocode}
+% \end{macro}^^A \tud@@@item
+% \end{macro}^^A \tud@@item
+% \end{macro}^^A \tud@item
+% \end{macro}^^A \tud@item@format
+% \end{macro}^^A \tud@item@add
+% \end{macro}^^A \tud@item@val
+% \end{macro}^^A \itemfalse
+% \end{macro}^^A \itemtrue
+% \end{macro}^^A \item@values
+% \end{macro}^^A \before@values
+% \end{environment}^^A values
+% \begin{environment}{packages}
+% \begin{macro}{\item@packages}
+% \begin{macro}{\tud@item@pkg}
+% \begin{macro}{\before@packages}
+% Ähnlich wie für die Auflistung von Werten eines Schlüssels wird auch mit der
+% Charakterisierung von Paketen verfahren. Diese werden in der Auflistung
+% speziell gekennzeichnet und mit \cs{DeclarePackage} im Index eingetragen.
+% \begin{macrocode}
+\newlist{packages}{description}{2}
+\setlist[packages]{%
+ topsep=\medskipamount,labelwidth=\linewidth,labelsep=0pt,font=\normalfont,%
+ parsep=\parskip,listparindent=\parindent,before=\before@packages%
+}
+\newcommand*\item@packages{}
+\newcommand*\before@packages{%
+ \ifdefvoid{\item@packages}{%
+ \let\item@packages\item%
+ \let\item\tud@item@pkg%
+ }{}%
+%% \par\RaggedRight%
+}
+\newcommand*\tud@item@pkg[1][]{%
+ \item@packages[{\DeclarePackage{#1}\texturn{#1}}]%
+}
+% \end{macrocode}
+% \end{macro}^^A \before@packages
+% \end{macro}^^A \tud@item@pkg
+% \end{macro}^^A \item@packages
+% \end{environment}^^A packages
+% \begin{macro}{\includeexample}
+% Mit diesem Befehl wird eine \hologo{TeX}-Datei ggf. übersetzt und anschließend
+% als PDF"~Datei wieder eingebunden.
+% \begin{macrocode}
+\RequirePackage{filemod}
+\RequirePackage{pdfpages}
+\newcommand*{\includeexample}[1]{%
+ \lstinputlisting[style=tudscr]{examples/#1.tex}
+ \filemodCmp{./examples/#1.pdf}{./examples/#1.tex}{}{%
+ \immediate\write18{%
+ pdflatex -output-director examples examples/#1.tex
+ pdflatex -output-director examples examples/#1.tex
+ }%
+ }%
+ \IfFileExists{examples/#1.pdf}{\includepdf[pages=-]{examples/#1.pdf}}{}%
+}
+% \end{macrocode}
+% \end{macro}^^A \includeexample
+% \begin{macro}{\Email}
+% \begin{macro}{\printflag}
+% Für die Erstellung des Indexes wird das Paket \pkg{imakeidx} zusammen mit
+% \textbf{xindy} verwendet. Zusätzlich werden \pkg{varioref} und \pkg{hyperref}
+% geladen. Damit wird der Befehl \cs{Email} als Link definiert. Außerdem wird
+% geprüft, ob durch einen externen \hologo{pdfLaTeX}-Aufruf das Flag
+% \cs{printflag} definiert wurde. In diesem Fall werden Optionen für den
+% unbunten Druck aktiviert.
+% \begin{macrocode}
+\AtEndPreamble{%
+ \RequirePackage[xindy,splitindex]{imakeidx}%
+ \indexsetup{%
+ level=\addsec,toclevel=section,noclearpage,%
+ firstpagestyle=myheadings,%headers={\indexname}{\indexname}%
+ }%
+ \newcommand*\xdyopt{-M tudscrman.xdy -L german-din}%
+ \RequirePackage{varioref}%
+ \RequirePackage[hyperindex=false,colorlinks,linkcolor=blue]{hyperref}%
+ \newcommand*\Email[1]{\href{mailto:#1}{\nolinkurl{#1}}}
+ \pdfstringdefDisableCommands{%
+ \let\Application\@Application%
+ \let\Class\@Class%
+ \let\Package\@Package%
+ }%
+ \ifdef{\printflag}{\hypersetup{hidelinks}}{\TUDoptions{color}}%
+ \makeindex[title={Allgemeiner Index},options=\xdyopt]%
+ \makeindex[title={Klassen- und Paketoptionen},name=options,options=\xdyopt]%
+ \makeindex[title={Umgebungen und Befehle},name=macros,options=\xdyopt]%
+ \makeindex[title={Umgebungs- und Befehlsparameter},name=keys,options=\xdyopt]%
+ \makeindex[title={Sprachabh\"angige Bezeichner},name=terms,options=\xdyopt]%
+%% \makeindex[title={Schriftelemente},name=fonts,options=\xdyopt]%
+ \makeindex[title={Farben},name=colors,options=\xdyopt]%
+ \makeindex[title={Klassen, Pakete und Dateien},name=files,options=\xdyopt]%
+%% \makeindex[title={\"Anderungsliste},name=changelog,options=\xdyopt]%
+}
+% \end{macrocode}
+% \end{macro}^^A \printflag
+% \end{macro}^^A \Email
+% \begin{macro}{\PrintIndex}
+% \begin{macro}{\Index}
+% \begin{macro}{\@printindex}
+% Der Befehl \cs{PrintIndex} ist die Zusammenfassung für die Ausgabe aller
+% Indexe. Mit \cs{Index} werden im Allgemeinen Index Querverweise auf die
+% Spezialindexe gesetzt. Der Befehl \cs{@printindex} setzt vor jedem Unterindex
+% ein referenzierbares Label und gibt diesen danach aus.
+% \begin{macrocode}
+\newcommand*\PrintIndex{%
+ \@printindex%
+ \@printindex[options]%
+ \@printindex[macros]%
+ \@printindex[keys]%
+ \@printindex[terms]%
+%% \@printindex[fonts]%
+ \begingroup%
+ \let\lettergroup\@gobble%
+ \@printindex[colors]%
+ \endgroup%
+ \@printindex[files]%
+}
+\newcommand*\Index[3][]{%
+ \ifcsdef{r@idx:#3}{%
+ \index{\ifblank{#1}{#2}{#1}|see{\hyperref[idx:#3]{Index der #2}}}%
+ }{%
+ \index{\ifblank{#1}{#2}{#1}|see{Index der #2}}%
+ }%
+}
+\newcommand*\@printindex[1][]{%
+ \pagebreak[3]%
+ \ifblank{#1}{%
+ \indexprologue[\vspace*{0pt}]{\label{idx:main}}%
+ \printindex%
+ }{%
+ \indexprologue[\vspace*{0pt}]{\label{idx:#1}}
+ \printindex[#1]
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \@printindex
+% \end{macro}^^A \Index
+% \end{macro}^^A \PrintIndex
+% \begin{macro}{\PrintChangelog}
+% \begin{macro}{\ChangedAt}
+% \begin{macro}{\if@changelog}
+% Ähnlich wie für den index wird auch für die Änderungsliste verfahren.
+% \begin{macrocode}
+\newif\if@changelog
+\newcommand*\PrintChangelog{%
+ \begingroup%
+ \let\lettergroup\@gobble%
+ \@changelogtrue%
+ \@printindex[changelog]%
+ \endgroup%
+}
+% \end{macrocode}
+% Hier wird zum ersten Mal von den Möglichkeiten des Paketes \pkg{xparse}
+% Gebrauch gemacht.
+% \begin{macrocode}
+\NewDocumentCommand\ChangedAt{mo}{%
+ \begingroup%
+ \setlength{\fboxsep}{0pt}%
+ \marginnote{\footnotesize\fbox{\texturn{\ \strut#1\ }}}%
+ \IfValueTF{#2}{%
+ \let\PName\@gobble%
+ \let\PBoolean\relax%
+ \let\PSet\relax%
+ \let\PValue\@gobble%
+ \let\Parameter\@gobble%
+ \let\OParameter\@gobble%
+ \let\LParameter\relax%
+ \let\OLParameter\@gobble%
+ \let\PParameter\@gobble%
+ \let\POParameter\@gobble%
+ \index[changelog]{#1!#2}%
+ }{}%
+ \endgroup%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@changelog
+% \end{macro}^^A \ChangedAt
+% \end{macro}^^A \PrintChangelog
+% \begin{macro}{\if@declare}
+% \begin{macro}{\if@openindex}
+% \begin{macro}{\bsc}
+% \begin{macro}{\idxfont}
+% \begin{macro}{\if@noindex}
+% Alle möglichen Befehle und Helferlein zum Steuern der Ausgabe.
+% \begin{macrocode}
+\newif\if@declare
+\newif\if@openindex
+\newcommand*\bsc{}
+\DeclareRobustCommand*\bsc{\@backslashchar}
+\newcommand*\idxfont{}
+\let\idxfont\footnotesize
+\newif\if@noindex
+% \end{macrocode}
+% \end{macro}^^A \if@noindex
+% \end{macro}^^A \idxfont
+% \end{macro}^^A \bsc
+% \end{macro}^^A \if@openindex
+% \end{macro}^^A \if@declare
+% Im Folgenden werden allerhand Befehle mit Hilfe des Paketes \pkg{xparse}
+% definiert, um bestimmte Begriffe, Klassen, Pakete, Optionen, Umgebungen,
+% Befehle, Parameter, Bezeichner, Längen, Schriftelemente und Farben speziell
+% auszuzeichnen und im Index einzutragen. Allen diesen Befehlen ist gemein, dass
+% diese in der Sternversion nicht in den Index eingetragen werden.
+%
+% Für (fast) alle der folgenden Befehle gilt, dass die Verwendung in der Form
+% \cs{\meta{Befehl}'} fügt eine zusätzliche Referenz auf den Abschnitt ihrer
+% Deklaration ein. Das erste optionale Argument dient für eine spezielle
+% Auszeichnung im Index. Die eigentliche Behandlung der Eingabe und die
+% Eintragungen in den Index erfolgen dabei mit dem Befehl \cs{@ProcessOutput}.
+% \begin{macro}{\Application}
+% \begin{macro}{\@Application}
+% Die Auszeichnung und der Indexeintrag einer Anwendungssoftware.
+% \begin{macrocode}
+\NewDocumentCommand\Application{som}{%
+ \ifdin{#3}{%
+ \mbox{\textubn{#3}}
+ \IfBooleanTF{#1}{}{%
+ \index{#3~{\protect\idxfont(Anwendungssoftware)}\IfValueTF{#2}{|#2}{}}%
+ }%
+ }%
+}
+\DeclareExpandableDocumentCommand\@Application{som}{#3}
+% \end{macrocode}
+% \end{macro}^^A \@Application
+% \end{macro}^^A \Application
+% \begin{macro}{\Distribution}
+% Die Auszeichnung und der Indexeintrag einer \hologo{LaTeX}-Distribution.
+% \begin{macrocode}
+\NewDocumentCommand\Distribution{som}{%
+ \mbox{\texturn{#3}}
+ \IfBooleanTF{#1}{}{%
+ \index{#3~{\protect\idxfont(Distribution)}\IfValueTF{#2}{|#2}{}}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \Distribution
+% \begin{macro}{\Path}
+% Die Auszeichnung eines Dateipfades.
+% \begin{macrocode}
+\newcommand*\Path{}
+\DeclareRobustCommand*\Path[1]{\mbox{\texttt{#1}}}
+% \end{macrocode}
+% \end{macro}^^A \Path
+% \begin{macro}{\File}
+% Die Auszeichnung und der Indexeintrag einer Datei.
+% \begin{macrocode}
+\NewDocumentCommand\File{som}{%
+ \mbox{\texturn{#3}}%
+ \IfBooleanTF{#1}{}{%
+ \index[files]{#3~{\protect\idxfont(Datei)}\IfValueTF{#2}{|#2}{}}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \File
+% \begin{macro}{\Class}
+% \begin{macro}{\@Class}
+% \begin{macro}{\DeclareClass}
+% \begin{macro}{\@TempClass}
+% Die Auszeichnung und der Indexeintrag einer Klasse. Sollte gerade DIN~Bold
+% verwendet werden~-- der Befehl wird innerhalb einer Überschrift verwendet~--
+% wird lediglich das Hauptargument ausgegeben. Außerdem wird für Einträge mit
+% dem \pkg{hyperref}-Paket mit \cs{@Class} eine expandierbare Version des
+% Befehls definiert. Mit \cs{DeclareClass} wird eine Klasse deklariert.
+% \begin{macrocode}
+\newcommand*\@TempClass{}
+\NewDocumentCommand\Class{st'om}{%
+ \ifdin{#4}{%
+ \gdef\@TempClass{~{\protect\idxfont(Klasse)}}%
+ \IfBooleanTF{#2}{%
+ \@ProcessOutput[#1]{\texturn{#4}}{files}{#4}[\@TempClass]{autoref}%
+ }{%
+ \@ProcessOutput[#1]{\texturn{#4}}{files}{#4}[\@TempClass]{#3}%
+ }%
+ }%
+}
+\DeclareExpandableDocumentCommand\@Class{st'om}{#4}
+\newcommand*\DeclareClass[1]{%
+ \phantomsection\label{files:#1}%
+ \index[files]{\hyperref[files:#1]{#1~{\protect\idxfont(Klasse)}}|declare}%
+}
+% \end{macrocode}
+% \end{macro}^^A \@TempClass
+% \end{macro}^^A \DeclareClass
+% \end{macro}^^A \@Class
+% \end{macro}^^A \Class
+% \begin{macro}{\Package}
+% \begin{macro}{\@Package}
+% \begin{macro}{\DeclarePackage}
+% \begin{macro}{\@TempPackage}
+% Für die Auszeichnungen von Paketen gelten vorhergehende Aussagen äquivalent.
+% \begin{macrocode}
+\newcommand*\@TempPackage{}
+\NewDocumentCommand\Package{st'om}{%
+ \ifdin{#4}{%
+ \gdef\@TempPackage{~{\protect\idxfont(Paket)}}%
+ \IfBooleanTF{#2}{%
+ \@ProcessOutput[#1]{\texturn{#4}}{files}{#4}[\@TempPackage]{autoref}%
+ }{%
+ \@ProcessOutput[#1]{\texturn{#4}}{files}{#4}[\@TempPackage]{#3}%
+ }%
+ }%
+}
+\DeclareExpandableDocumentCommand\@Package{st'om}{#4}
+\newcommand*\DeclarePackage[1]{%
+ \phantomsection\label{files:#1}%
+ \index[files]{\hyperref[files:#1]{#1~{\protect\idxfont(Paket)}}|declare}%
+}
+% \end{macrocode}
+% \end{macro}^^A \@TempPackage
+% \end{macro}^^A \DeclarePackage
+% \end{macro}^^A \@Package
+% \end{macro}^^A \Package
+% \begin{macro}{\Option}
+% \begin{macro}{\@TempOption}
+% Für die Auszeichnung von Optionen wird zusätzlich unterschieden, ob der Befehl
+% gerade innerhalb der Änderungsliste verwendet wird. Ist dies der Fall, wird
+% der verarbeitende Befehl \cs{@ProcessChangedAt} aufgerufen. Mit dem optionalen
+% Argument \emph{nach} dem Hauptargument kann der Option im Handbuch ein Wert
+% zugewiesen werden.
+% \begin{macrocode}
+\newcommand*\@TempOption{}
+\NewDocumentCommand\Option{st'omo}{%
+ \if@changelog%
+ \@ProcessChangedAt{options}{#4}%
+ \else%
+ \IfValueTF{#5}{\gdef\@TempOption{\texttt{=#5}}}{\gdef\@TempOption{}}%
+ \IfBooleanTF{#2}{%
+ \@ProcessOutput[#1]{\texttt{#4}}[\@TempOption]{options}{#4}{pageref}%
+ }{%
+ \@ProcessOutput[#1]{\texttt{#4}}[\@TempOption]{options}{#4}{#3}%
+ }%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \@TempOption
+% \end{macro}^^A \Option
+% \begin{macro}{\Environment}
+% \begin{macro}{\@TempEnvironment}
+% Auch hier wird für die Änderungsliste unterschieden.
+% \begin{macrocode}
+\newcommand*\@TempEnvironment{}
+\NewDocumentCommand\Environment{st'omo}{%
+ \if@changelog%
+ \@ProcessChangedAt{macros}{#4}%
+ \else%
+% \end{macrocode}
+% Außerdem wird für den Fall, dass der \cs{Environment}-Befehl innerhalb der
+% \env{Declaration}-Umgebung verwendet wird, eine spezielle Ausgabe erzeugt. Nur
+% hier kommt das optionale Argument nach dem Hauptargument zum Tragen. Damit
+% können etwaige obligatorische und optionale Argumente angegeben werden.
+% \begin{macrocode}
+ \if@declare%
+ \gdef\@TempEnvironment{%
+ \texttt{\bsc{}begin\{#4\}\IfValueTF{#5}{#5}{}}\tabularnewline%
+ \texttt{\dots}\tabularnewline%
+ \texttt{\bsc{}end\{#4\}}%
+ }%
+ \else%
+ \gdef\@TempEnvironment{\texttt{#4}}%
+ \fi%
+ \IfBooleanTF{#2}{%
+ \@ProcessOutput[#1]{\@TempEnvironment}{macros}{#4}{pageref}%
+ }{%
+ \@ProcessOutput[#1]{\@TempEnvironment}{macros}{#4}{#3}%
+ }%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \@TempEnvironment
+% \end{macro}^^A \Environment
+% \begin{macro}{\Macro}
+% Die Auszeichnung und der Indexeintrag eines Befehls.
+% \begin{macrocode}
+\NewDocumentCommand\Macro{st'om}{%
+ \if@changelog%
+ \@ProcessChangedAt[\bsc]{macros}{#4}%
+ \else%
+ \IfBooleanTF{#2}{%
+ \@ProcessOutput[#1]{\texttt{\bsc#4}}{macros}[\bsc]{#4}{pageref}%
+ }{%
+ \@ProcessOutput[#1]{\texttt{\bsc#4}}{macros}[\bsc]{#4}{#3}%
+ }%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \Macro
+% \begin{macro}{\Key}
+% \begin{macro}{\@TempKey}
+% Die Auszeichnung und der Indexeintrag eines Parameters für Umgebungen und
+% Befehle. Das erste Argument ist die Umgebung oder der Befehl, wofür der
+% Parameter gültig ist. Das zweite Argument ist der Parameter selbst. Dafür
+% werden die Befehle \cs{Environment} und \cs{Macro} lokale umdefiniert.
+% \begin{macrocode}
+\newcommand*\@TempKey{}
+\NewDocumentCommand\Key{sommo}{%
+ \begingroup%
+ \let\Environment\@firstofone%
+ \let\Macro\@firstofone%
+ \if@changelog%
+ \@ProcessChangedAt{keys}{#4}%
+ \else%
+ \gdef\@TempKey{\if@declare~{\protect\idxfont(Parameter)}\fi}%
+ \IfValueTF{#5}{%
+ \@ProcessOutput[#1]{\texttt{#4}}[\texttt{=#5}\@TempKey]%
+ {macros}(#3){#4}{#2}%
+ }{%
+ \@ProcessOutput[#1]{\texttt{#4}}[\@TempKey]{macros}(#3){#4}{#2}%
+ }%
+ \fi%
+ \endgroup%
+}
+% \end{macrocode}
+% \end{macro}^^A \@TempKey
+% \end{macro}^^A \Key
+% \begin{macro}{\Length}
+% \begin{macro}{\@TempLength}
+% Die Auszeichnung und der Indexeintrag einer \hologo{LaTeX}-Länge.
+% \begin{macrocode}
+\newcommand*\@TempLength{}
+\NewDocumentCommand\Length{som}{%
+ \if@changelog%
+ \@ProcessChangedAt[\bsc]{macros}{#3}%
+ \else%
+ \gdef\@TempLength{\if@declare~{\protect\idxfont(L\"ange)}\fi}%
+ \@ProcessOutput[#1]{\texttt{\bsc#3}}[\@TempLength]%
+ {macros}[\bsc]{#3}[~{\protect\idxfont(L\"ange)}]{#2}%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \@TempLength
+% \end{macro}^^A \Length
+% \begin{macro}{\Counter}
+% \begin{macro}{\@TempCounter}
+% Die Auszeichnung und der Indexeintrag einer \hologo{LaTeX}-Zählers.
+% \begin{macrocode}
+\newcommand*\@TempCounter{}
+\NewDocumentCommand\Counter{som}{%
+ \if@changelog%
+ \@ProcessChangedAt{macros}{#3}%
+ \else%
+ \gdef\@TempCounter{\if@declare~{\protect\idxfont(Z\"ahler)}\fi}%
+ \@ProcessOutput[#1]{\texttt{#3}}[\@TempCounter]%
+ {macros}{#3}[~{\protect\idxfont(Z\"ahler)}]{#2}%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \@TempCounter
+% \end{macro}^^A \Counter
+% \begin{macro}{\Term}
+% \begin{macro}{\@TempTerm}
+% Die Auszeichnung und der Indexeintrag eines sprachabhängigen Bezeichners.
+% \begin{macrocode}
+\newcommand*\@TempTerm{}
+\NewDocumentCommand\Term{som}{%
+ \if@changelog%
+ \@ProcessChangedAt[\bsc]{terms}{#3}%
+ \else%
+ \gdef\@TempTerm{\if@declare~{\protect\idxfont(Bezeichner)}\fi}%
+ \@ProcessOutput[#1]{\texttt{\bsc#3}}[\@TempTerm]{terms}[\bsc]{#3}{#2}%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \@TempTerm
+% \end{macro}^^A \Term
+% \begin{macro}{\TermTable}
+% \begin{macro}{\@TermTable}
+% \begin{macro}{\@@TermTable}
+% \begin{macro}{\@termlist}
+% Für sprachabhängige Bezeichner wird zusätzlich der Befehl \cs{TermTable}
+% definiert, dem eine kommaseparierte Liste übergeben werden kann. Anhand dieser
+% Liste werden die enthalten Begriffe für die Sprachen Deutsch und English in
+% einer Tabelle ausgegeben. Die Sternversion dieses Befehls nutzt dafür die
+%\env{tabularx}-Umgebung. Für diese kann ein zweites Argument angegeben werden,
+% welches die gewünschte Breite der Tabelle angibt.
+% \begin{macrocode}
+\newcommand\@termlist{}
+\let\@termlist\relax
+\NewDocumentCommand\TermTable{smg}{%
+ \forcsvlist{\listadd\@termlist}{#2}%
+ \vskip\baselineskipglue\noindent%
+ \IfBooleanTF{#1}{%
+ \IfValueTF{#3}{\setlength\@tempdima{#3}}{\setlength\@tempdima{\linewidth}}%
+ \setlength{\@tempdimb}{-.7\baselineskip}%
+ \begin{tabularx}{\@tempdima}{lXX}\@TermTable\end{tabularx}
+ }{%
+ \setlength{\@tempdimb}{\z@}%
+ \begin{tabular}{lll}\@TermTable\end{tabular}
+ }%
+ \let\@termlist\relax%
+ \par\noindent%
+}
+\newcommand*\@TermTable{%
+ \toprule
+ \textbf{Bezeichner} & \textbf{Deutsch} & \textbf{Englisch} \tabularnewline
+ \midrule
+ \forlistloop\@@TermTable{\@termlist}
+ \bottomrule
+}
+\newcommand*\@@TermTable[1]{%
+ \Term{#1} &
+ \ifstr{\@nameuse{#1}}{}{\PName{leer}}{\@nameuse{#1}} &
+ \selectlanguage{english}\vspace*{\@tempdimb}%
+ \ifstr{\@nameuse{#1}}{}{\PName{empty}}{\@nameuse{#1}}\tabularnewline
+}
+% \end{macrocode}
+% \end{macro}^^A \@termlist
+% \end{macro}^^A \@@TermTable
+% \end{macro}^^A \@TermTable
+% \end{macro}^^A \TermTable
+% \begin{macro}{\Font}
+% \begin{macro}{\@TempFont}
+% Die Auszeichnung und der Indexeintrag eines Schriftelementes.
+% \begin{macrocode}
+\newcommand*\@TempFont{}
+\NewDocumentCommand\Font{som}{%
+ \if@changelog%
+ \@ProcessChangedAt{fonts}{#3}%
+ \else%
+ \gdef\@TempFont{%
+ \texttt{#3}\if@declare~{\protect\idxfont(Schriftelement)}\fi%
+ }%
+ \@ProcessOutput[#1]{\@TempFont}{fonts}{#3}{#2}%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \@TempFont
+% \end{macro}^^A \Font
+% \begin{macro}{\Color}
+% \begin{macro}{\@TempColor}
+% Die Auszeichnung und der Indexeintrag einer Farbe des \CDs.
+% \begin{macrocode}
+\newcommand*\@TempColor{}
+\NewDocumentCommand\Color{somo}{%
+ \if@changelog%
+ \@ProcessChangedAt{colors}{#3}%
+ \else%
+ \gdef\@TempColor{%
+ \IfValueTF{#4}{~\texttt{(#4)}}{}%
+ \if@declare~{\protect\idxfont(Farbe)}\fi%
+ }%
+ \@ProcessOutput[#1]{\texttt{#3}}[\@TempColor]{colors}{#3}{#2}%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \@TempColor
+% \end{macro}^^A \Color
+% \begin{macro}{\@ProcessOutput}
+% Der Befehl \cs{@ProcessOutput} ist das Herzstück der Auszeichnungen aller
+% Elemente. Das erste optionale Argument ist der eventuell übergebene Stern für
+% die eines beliebigen Auszeichnungsbefehl. Darauf folgen die gewünschte
+% \marg{Ausgabe} und ein möglicher \oarg{Anhang}. Danach wird der Zielindex
+% \marg{Index} und~-- für Parameter~-- der \parg{Haupteintrag} übergeben. Es
+% folgt der zu machende Indexeintrag selbst mit \oarg{Vorsatz}, \marg{Eintrag},
+% \oarg{Anhang} und zum Abschluss \marg{Formatierung}. Der vollständige
+% Funktionsaufruf lautet:
+% \newline\begingroup\tiny
+% \cs{@ProcessOutput}*
+% \marg{Ausgabe}\oarg{Anhang}\marg{Index}\parg{Haupteintrag}\ignorespaces%
+% \oarg{Vorsatz}\marg{Eintrag}\oarg{Anhang}\marg{Formatierung}
+% \endgroup
+% \begin{macrocode}
+\NewDocumentCommand\@ProcessOutput{omomd()omom}{%
+% \end{macrocode}
+% Dabei wird unterschieden, ob ein beliebiger Auszeichnungsbefehl innerhalb der
+% \env{Declaration}-Umgebung verwendet wird (\cs{if@declare}). Ist dies der Fall
+% wird ein Label und mit \cs{@HyperIndex} ein spezieller Indexeintrag für die
+% Deklaration erstellt. Eine Ausgabe der Auszeichnung erfolgt in diesem Fall
+% nicht, dafür zeichnet der Befehl \cs{printdeclarationlist} verantwortlich.
+% Außerdem wird mit Hilfe der \env{Declaration}-Umgebung der Anfang und
+% das Ende der Deklaration für den Indexeintrag mit \cs{@HyperIndex} exakt
+% festgelegt. Der Schalter \cs{if@openindex} wird zu Beginn der Umgebung auf
+% \cs{@openindextrue} gesetzt, am Ende der Umgebung auf \cs{@openindexfalse}.
+% \begin{macrocode}
+ \if@declare%
+ \if@openindex%
+ \if@noindex\else%
+ \IfValueTF{#5}%
+ {\edef\@tempa{#4:#5:#7}}%
+ {\edef\@tempa{#4:#7}}%
+ \label{\@tempa}%
+ \@HyperIndex{#4}{#5}{#6}{#7}{#8}[(declare]%
+ \fi%
+ #2\IfValueTF{#3}{#3}{}%
+ \else%
+ \if@noindex\else%
+ \@HyperIndex{#4}{#5}{#6}{#7}{#8}[declare)]%
+ \fi%
+ \fi%
+ \else%
+% \end{macrocode}
+% Findet der Auszeichnungsbefehl außerhalb der \env{Declaration}-Umgebung
+% Verwendung, wird für den Fall, dass keine Sternversion genutzt wurde, mit
+% \cs{@HyperIndex} ein Eintrag im dazugehörigen Index erzeugt.
+% \begin{macrocode}
+ \IfBooleanTF{#1}{}{%
+ \@tempswafalse%
+ \ifstr{#9}{autoref}{\@tempswatrue}{}%
+ \ifstr{#9}{pageref}{\@tempswatrue}{}%
+ \if@tempswa%
+ \@HyperIndex{#4}{#5}{#6}{#7}{#8}%
+ \else%
+ \@HyperIndex{#4}{#5}{#6}{#7}{#8}[#9]%
+ \fi%
+ }%
+% \end{macrocode}
+% Danach erfolgt die Ausgabe der Auszeichnung. Sollte für diesen ein Label
+% durch eine Deklaration innerhalb der \env{Declaration}-Umgebung definiert
+% worden sein, so wird auf dieses ein Hyperlink gesetzt. Ansonsten erfolgt die
+% normale textuelle Ausgabe. Für Parameter muss der Hyperlink dabei aufgrund des
+% definierten Haupteintrag etwas anders ausgeführt werden.
+% \begin{macrocode}
+ \IfValueTF{#5}{\edef\@tempa{#4:#5:#7}}{\edef\@tempa{#4:#7}}%
+ \ifcsdef{r@\@tempa}{%
+ \let\@tempb\relax%
+ \ifstr{#9}{autoref}{\def\@tempb{~unter \autoref{\@tempa}}}{}%
+ \ifstr{#9}{pageref}{\def\@tempb{~\vpageref{\@tempa}}}{}%
+ \mbox{\hyperref[\@tempa]{#2}\IfValueTF{#3}{#3}{}}\@tempb%
+ }{\mbox{#2\IfValueTF{#3}{#3}{}}}%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \@ProcessOutput
+% \begin{macro}{\@HyperIndex}
+% Dieser Befehl sorgt für die eigentlichen Indexeinträge. Dabei werden für
+% Einträge, welche innerhalb der \env{Declaration}-Umgebung deklariert wurden,
+% ein Hyperlink im Index erstellt. Das erste Argument \marg{Index} enthält den
+% gewünschten Zielindex. Danach folgt~-- für Parameter~-- der Haupteintrag. Es
+% folgt der zu machende Indexeintrag selbst mit \marg{Vorsatz}, \marg{Eintrag},
+% \marg{Anhang} und zum Abschluss \oarg{Formatierung}. Der vollständige
+% Funktionsaufruf lautet:
+% \newline\begingroup\tiny
+% \cs{@HyperIndex}\marg{Index}\marg{Haupteintrag}\ignorespaces%
+% \marg{Vorsatz}\marg{Eintrag}\marg{Anhang}\oarg{Formatierung}
+% \endgroup
+% \begin{macrocode}
+\NewDocumentCommand\@HyperIndex{mmmmmo}{%
+ \IfValueTF{#3}{\def\@tempa{#3}}{\def\@tempa{}}%
+ \IfValueTF{#5}{\def\@tempb{#5}}{\def\@tempb{}}%
+ \IfValueTF{#6}{\def\@tempc{|#6}}{\def\@tempc{}}%
+% \end{macrocode}
+% Auch hier wird unterschieden, ob es sich um einen Parameter (keys) handelt.
+% Wurde für einen Parameter eine Umgebung oder ein Befehl bereits definiert,
+% werden zwei Indexeinträge generiert. Einer beim Befehl selber als Untereintrag
+% für den jeweiligen Parameter und einer im Index für Parameter selbst mit der
+% dazugehörigen Umgebung bzw. dem dazugehörigen Befehl. Beide erhalten einen
+% entsprechenden Hyperlink zur Deklaration.
+% \begin{macrocode}
+ \IfValueTF{#2}{%
+ \ifcsdef{r@#1:#2:#4}{%
+ \edef\@tempb{#1:#2:#4}%
+ \index[#1]{%
+ #2!\hyperref[\@tempb]{\expandonce\@tempa#4}%
+ ~{\protect\idxfont(Parameter)}%
+ \expandonce\@tempc%
+ }%
+ \begingroup%
+ \let\Environment\@firstofone%
+ \def\Macro##1{\bsc##1}%
+ \index[keys]{%
+ \hyperref[\@tempb]{\expandonce\@tempa#4~{\protect\idxfont(#2)}}%
+ \expandonce\@tempc%
+ }%
+ \endgroup%
+ }{%
+ \index[#1]{#2!\expandonce\@tempa#4\expandonce\@tempb}%
+ }%
+% \end{macrocode}
+% Falls es sich nicht um einen Parameter handelt, wird lediglich der Eintrag im
+% speziellen Index vorgenommen und ggf. ein Hyperlink erzeugt.
+% \begin{macrocode}
+ }{%
+ \ifcsdef{r@#1:#4}{%
+ \index[#1]{%
+ \hyperref[#1:#4]{\expandonce\@tempa#4\expandonce\@tempb}%
+ \expandonce\@tempc%
+ }%
+ }{%
+ \index[#1]{\expandonce\@tempa#4\expandonce\@tempb\expandonce\@tempc}%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \@HyperIndex
+% \begin{macro}{\@ProcessChangedAt}
+% Auch die Änderungsliste erhält einen Hyperlink zur Deklaration, falls eine
+% existiert.
+% \begin{macrocode}
+\newcommand*\@ProcessChangedAt[3][]{%
+ \ifcsdef{r@#2:#3}{\hyperref[#2:#3]{\mbox{#1#3}}}{\mbox{#1#3}}%
+}
+% \end{macrocode}
+% \end{macro}^^A \@ProcessChangedAt
+% \begin{environment}{Declaration}
+% \begin{macro}{\printdeclarationlist}
+% \changes{v1.01}{2014/04/24}{%
+% bessere Positionierung von \cs{phantomsection}%
+% }
+% \begin{macro}{\@declarationlist}
+% \begin{macro}{\@presetlist}
+% \begin{macro}{\if@presetlist}
+% \begin{macro}{\@additionallist}
+% \begin{macro}{\if@additionallist}
+% Es werden die Hilfsmakros für die Ausgabe einer Deklaration initialisiert.
+% \begin{macrocode}
+\newcommand\@declarationlist{}
+\newcommand\@presetlist{}
+\newif\if@presetlist
+\newcommand\@additionallist{}
+\newif\if@additionallist
+\let\@declarationlist\relax
+\let\@presetlist\relax
+\let\@additionallist\relax
+% \end{macrocode}
+% Die \env{Declaration}-Umgebung dient zur Deklaration von Optionen, Umgebungen,
+% Befehlen, Parametern, Bezeichnern, Längen, Schriftelementen und Farben. Diese
+% werden mit den entsprechenden Auszeichnungsbefehlen übergeben. Im zweiten
+% Argument~-- das erste optionale~-- kann die Voreinstellung für eine Option
+% oder dergleichen angegeben werden. Das nächste Argument erlaubt die Angabe
+% einer bedingten Voreinstellung, also einer anderen Voreinstellung als der
+% zuerst angegeben unter bestimmten Voraussetzungen. Diese muss in der Form
+% \oarg{Bedingung:Voreinstellung} angegeben werden. Das letzte Argument ist
+% ebenfalls optional, wird aber in der Form \marg{Zusatz} angegeben und enthält
+% ggf. zusätzliche Informationen.
+%
+% Die Umgebung selbst gibt zu Beginn nichts weiter aus sondern sammelt lediglich
+% alle übergebenen Argumente in jeweiligen Listen. Die eigentliche Ausgabe
+% erfolgt mit dem Befehl \cs{printdeclarationlist}.
+% \begin{macrocode}
+\NewDocumentEnvironment{Declaration}{moog}{%
+ \listadd\@declarationlist{#1}%
+ \IfNoValueTF{#2}{%
+ \listadd\@presetlist{\relax}%
+ }{%
+ \@presetlisttrue%
+ \IfNoValueTF{#3}{%
+ \listadd\@presetlist{preset:\,#2}%
+ }{%
+ \def\@tempa[##1:##2]{##1:\,##2}%
+ \listeadd\@presetlist{preset:\,#2\,|\,\expandonce{\@tempa[#3]}}%
+ }%
+ }%
+ \IfNoValueTF{#4}{%
+ \listadd\@additionallist{\relax}%
+ }{%
+ \@additionallisttrue%
+ \listadd\@additionallist{\hspace*{\tabcolsep}\small(#4)}%
+ \in@{\Environment}{#1}%
+ \ifin@ \listadd\@additionallist{\tabularnewline}\fi%
+ }%
+}{%
+% \end{macrocode}
+% Am Ende der Umgebung wird das übergebenen Hauptargument abermals ausgeführt,
+% was zum Setzen des Indexeintragsendes für die jeweilige Deklaration führt
+% (\cs{@openindexfalse}, siehe \cs{@ProcessOutput}). Dafür werden die Makros für
+% die Angabe obligatorischer und optionaler Parameter lokal umdefiniert.
+% \begin{macrocode}
+ \ifx\@declarationlist\relax\else%
+ \ClassError{\tudclsname}{\string\printdeclarationlist\space is missing}{%
+ \string\@declarationlist\space is not empty. Did you forget\MessageBreak%
+ to print this list with \string\printdeclarationlist?%
+ }%
+ \fi%
+ \let\PName\@gobble%
+ \let\PBoolean\relax%
+ \let\PSet\relax%
+ \let\PValue\@gobble%
+ \let\Parameter\@gobble%
+ \let\OParameter\@gobble%
+ \let\LParameter\relax%
+ \let\OLParameter\@gobble%
+ \let\PParameter\@gobble%
+ \let\POParameter\@gobble%
+ \vskip-\lastskip%
+ \@declaretrue\@openindexfalse#1\@declarefalse%
+ \pagebreak[0]%
+}
+% \end{macrocode}
+% Mit dem Befehl \cs{printdeclarationlist} erfolgt die eingentliche Ausgabe
+% aller Deklarationen. Zweck ist es, mehrere \env{Declaration}-Umgebungen
+% ineinander verschachteln zu können und eine Ausgabe aller auf einmal zu
+% erzeugen. Die durch die ggf. nacheinander folgenden Deklarationen wurden in
+% entsprechenden Listen gesammelt und werden hier jetzt formatiert ausgegben.
+% \begin{macrocode}
+\NewDocumentCommand\printdeclarationlist{sod()}{%
+ \ifx\@declarationlist\relax\else%
+% \end{macrocode}
+% Die Sternversion des Befehls erzeugt die Ausgabe ohne Deklarationsindexbefehle.
+% \begin{macrocode}
+ \IfBooleanTF{#1}{\global\@noindextrue}{\global\@noindexfalse}
+ \ifvmode\else\par\fi%
+ \allowbreak%
+ \addpenalty{\@beginparpenalty}%
+ \addvspace{\baselineskipglue}%
+ \@declaretrue\@openindextrue%
+ \phantomsection\noindent%
+% \end{macrocode}
+% Die deklarierten Optionen, Umgebungen, Befehle etc. werden in einer umrahmten
+% Box ausgegeben.
+% \begin{macrocode}
+ \def\@tempa##1{\ignorespaces##1\tabularnewline}%
+ \begin{tabular}{|l|}%
+ \hline%
+ \forlistloop\@tempa{\@declarationlist}%
+ \hline%
+ \end{tabular}%
+ \@declarefalse%
+% \end{macrocode}
+% Danach werden ggf. die Voreinstellungen und Zusatzinformationen gesetzt.
+% \begin{macrocode}
+ \ifboolexpr{bool {@presetlist} or bool {@additionallist}}{%
+ \if@presetlist%
+ \qquad%
+ \texttt{%
+ \begin{tabular}{l}%
+ \forlistloop\@tempa{\@presetlist}%
+ \end{tabular}%
+ }%
+ \fi%
+ \if@additionallist%
+ \begin{tabular}{@{}l@{}}%
+ \forlistloop\@tempa{\@additionallist}%
+ \end{tabular}%
+ \fi%
+ }{}%
+% \end{macrocode}
+% Das optionale Argument kann für eine Versionsnummer für eine gemachte Änderung
+% genutzt werden.
+% \begin{macrocode}
+ \IfValueTF{#2}{%
+ \ChangedAt{#2}%
+ \begingroup%
+ \let\marginnote\@gobble%
+ \def\@tempa##1{\ChangedAt{#2}[##1]}%
+ \forlistloop\@tempa{\@declarationlist}%
+ \endgroup%
+ }{}%
+ \global\let\@declarationlist\relax%
+ \global\let\@presetlist\relax%
+ \global\@presetlistfalse%
+ \global\let\@additionallist\relax%
+ \global\@additionallistfalse%
+% \end{macrocode}
+% Zum Schluss wird das zweite optionale Argument (in runden Klammern) neben der
+% Deklaratiionsbox ausgegeben.
+% \begin{macrocode}
+ \IfValueTF{#3}{#3}{}%
+ \vskip\baselineskipglue\nobreak%
+ \@afterindentfalse\@afterheading%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \if@additionallist
+% \end{macro}^^A \@additionallist
+% \end{macro}^^A \if@presetlist
+% \end{macro}^^A \@presetlist
+% \end{macro}^^A \@declarationlist
+% \end{macro}^^A \printdeclarationlist
+% \end{environment}^^A Declaration
+% \begin{environment}{tabularm}
+% \begin{macro}{\allcolumnpar}
+% \begin{macro}{\@allcolumnpar}
+% \begin{macro}{\tabularm@box}
+% \begin{macro}{\tabularm@num}
+% \begin{length}{\tabularm@wd}
+% Die Umgebung \env{tabularm} ist eine Erweiterung der \env{tabularm}-Umgebung.
+% In dieser wird die Breite der zu setzenden Tabelle mit Hilfe der Box
+% \cs{tabularm@box} in \cs{tabularm@wd} gespeichert. Anschließend kann mit dem
+% Befehl \cs{allcolumnpar} eine Zeile über alle Spalten der Tabelle
+% ausgegeben werden. Dabei ist das zu übergebende Argument die Anzahl der zu
+% erzeugenden, linksbündigen Spalten.
+% \begin{macrocode}
+\newsavebox\tabularm@box
+\newlength\tabularm@wd
+\newcommand*\tabularm@num{1}
+\NewEnviron{tabularm}[1]{%
+ \begin{lrbox}{\tabularm@box}%
+ \let\allcolumnpar\@gobble%
+ \begin{tabular}{*{#1}l}\BODY\end{tabular}%
+ \end{lrbox}%
+ \setlength{\tabularm@wd}{\wd\tabularm@box}%
+%% \addtolength{\tabularm@wd}{-2\tabcolsep}%
+ \def\tabularm@num{#1}%
+ \let\allcolumnpar\@allcolumnpar%
+ \begin{tabular}{*{#1}l}\BODY\end{tabular}%
+}
+\newcommand*\@allcolumnpar[1]{%
+ \multicolumn{\tabularm@num}{@{}p{\tabularm@wd}@{}}{#1}%
+}
+% \end{macrocode}
+% \end{length}^^A \tabularm@wd
+% \end{macro}^^A \tabularm@box
+% \end{macro}^^A \tabularm@num
+% \end{macro}^^A \@allcolumnpar
+% \end{macro}^^A \allcolumnpar
+% \end{environment}^^A tabularm
+% \begin{macro}{\PName}
+% \begin{macro}{\PBoolean}
+% \begin{macro}{\PSet}
+% \begin{macro}{\Parameter}
+% \begin{macro}{\OParameter}
+% \begin{macro}{\LParameter}
+% \begin{macro}{\OLParameter}
+% \begin{macro}{\PValue}
+% \begin{macro}{\PParameter}
+% \begin{macro}{\POParameter}
+% Diese Befehle dienen zum Auszeichnen von obligatorischen und optionalen
+% Parametern und Befehlen oder bestimmten Wertzuweisungen.
+% \begin{macrocode}
+\DeclareRobustCommand*\PName[1]{\texttt{\textit{<#1>}}}
+\DeclareRobustCommand*\PBoolean{\PName{Ein-Aus-Wert}}%
+\DeclareRobustCommand*\PSet{\PName{Einstellung}}%
+\DeclareRobustCommand*\Parameter[1]{\texttt{\{}\PName{#1}\texttt{\}}}
+\DeclareRobustCommand*\OParameter[1]{\texttt{[}\PName{#1}\texttt{]}}
+\DeclareRobustCommand*\LParameter{\texttt{[}\PName{Parameterliste}\texttt{]}}
+\DeclareRobustCommand*\OLParameter[1]{%
+ \texttt{[}\PName{#1}|\PName{Parameterliste}\texttt{]}
+}
+\DeclareRobustCommand*\PValue[1]{\texttt{#1}}
+\DeclareRobustCommand*\PParameter[1]{\texttt{\{#1\}}}
+\DeclareRobustCommand*\POParameter[1]{\texttt{[#1]}}
+% \end{macrocode}
+% \end{macro}^^A \POParameter
+% \end{macro}^^A \PParameter
+% \end{macro}^^A \PValue
+% \end{macro}^^A \OLParameter
+% \end{macro}^^A \LParameter
+% \end{macro}^^A \OParameter
+% \end{macro}^^A \Parameter
+% \end{macro}^^A \PSet
+% \end{macro}^^A \PBoolean
+% \end{macro}^^A \PName
+% \begin{environment}{code}
+% \begin{environment}{Example}
+% Diese beiden Umgebungen werden für die Erläuterung von bestimmten Aspekten
+% zusammen mit einem Quelltextbeispiel im Handbuch verwendet. Dabei enthält
+% \env{Example} einen kurzen, erklärenden Text. In der \env{code}-Umgebung,
+% welche innerhalb von \env{Example} verwendet wird, folgt der Quelltext.
+% \begin{macrocode}
+\RequirePackage{listings}
+\lstnewenvironment{code}[1][]{\lstset{style=tudscr,#1}}{}
+\lstdefinestyle{tudscr}{%
+ basicstyle=\let\bfseries@tt\mdseries@tt\ttfamily\setstretch{1},%
+ columns=fullflexible,keepspaces,%
+ aboveskip=.5\baselineskipglue,%
+ belowskip=.5\baselineskipglue,%
+ language=[LaTeX]TeX,%
+ texcl,%
+}
+\newenvironment{Example}{%
+ \labeling{{\usekomafont{disposition}Beispiel:\ }}%
+ \item[{\usekomafont{disposition}Beispiel:\ }]%
+}{%
+ \endlabeling%
+}
+% \end{macrocode}
+% \end{environment}^^A Example
+% \end{environment}^^A code
+% \begin{option}{ToDo}
+% \begin{macro}{\ToDo}
+% \begin{macro}{\todo@mark}
+% Die Option kann aktiviert werden, um mit \cs{ToDo} definerte, offene Aufgaben
+% als gerahmte Anmerkung im Text anzuzeigen. Das optionale Argument kann genutzt
+% werden, um die Randnotiz~-- standardmäßig \glqq ToDo\grqq~-- zu ändern.
+% \begin{macrocode}
+\newcommand*\todo@mark{}
+\newcommand\ToDo[2][]{}
+\TUD@key{ToDo}[true]{%
+ \TUD@set@ifkey{ToDo}{@tempswa}{#1}%
+ \if@tempswa%
+ \renewcommand\ToDo[2][]{%
+ \def\todo@mark{\ifstr{##1}{}{ToDo}{##1}}%
+ \endgraf\vskip1ex%
+ \hfuzz0.8pt%
+ \noindent\leavevmode\marginnote{\fbox{\todo@mark\strut}}%
+ [\dimexpr-\fboxsep-\fboxrule]%
+ \fbox{\parbox{\dimexpr\textwidth-2\fboxsep}{##2\strut}}%
+ \vskip1ex%
+ \noindent$\!\!$%
+ }%
+ \else%
+ \renewcommand\ToDo[2][]{}%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \todo@mark
+% \end{macro}^^A \ToDo
+% \end{option}^^A ToDo
+% \begin{macro}{\vTUD}
+% \begin{macro}{\vTUDScript}
+% \begin{macro}{\TUDScript}
+% \begin{macro}{\Attention}
+% \begin{macro}{\forum}
+% \begin{macro}{\notudscrartcl}
+% \begin{macro}{\CD}
+% \begin{macro}{\CDs}
+% \begin{macro}{\TUD}
+% \begin{macro}{\TnUD}
+% \begin{macro}{\DDC}
+% \begin{macro}{\Univers}
+% \begin{macro}{\DIN}
+% Diese Befehle stellen regelmäßig im Handbuch genutzte Textbausteine bereit.
+% Dazu wird der Befehl \cs{xspace} aus dem \pkg{xspace}-Paket genutzt.
+% \begin{macrocode}
+\RequirePackage{xspace}
+\newcommand*\vTUD{Version~\NoCaseChange{v}1.0\xspace}
+% \end{macrocode}
+% Der Befehl \cs{vTUDScript} enthält die aktuelle Versionsnummer des
+% \TUDScript-Bundles.
+% \begin{macrocode}
+\newcommand*\vTUDScript{}
+\AtBeginDocument{%
+ \def\@tempb#1 #2 #3\relax#4\relax{\def\vTUDScript{#2}}%
+ \edef\@tempa{\TUDVersion}%
+ \expandafter\@tempb\@tempa\relax? ? \relax\relax%
+}
+\DeclareRobustCommand\TUDScript{%
+ \ifdin{TUD-KOMA-SCRIPT}{%
+ \texorpdfstring{%
+ \textsf{T\kern.05em U\kern.05em D\kern.1em-\kern.1em}\KOMAScript%
+ }{TUD-KOMA-Script}%
+ }%
+}
+% \end{macrocode}
+% \dots und der Rest.
+% \begin{macrocode}
+\newcommand*\Attention{\marginnote{\tiny\fbox{Achtung!}}}
+\newcommand*\forum{\url{http://latex.wcms-file3.tu-dresden.de/phpBB3/}\xspace}
+\newcommand*\notudscrartcl{%
+ Für die Klasse \Class{tudscrartcl} ist diese Einstellung nicht verfügbar.
+}
+\newcommand*\CD{\foreignlanguage{english}{Corporate Design}\xspace}
+\newcommand*\CDs{\foreignlanguage{english}{Corporate Designs}\xspace}
+\newcommand*\TUD{Technische Universit\"at Dresden\xspace}
+\newcommand*\TnUD{Technischen Universit\"at Dresden\xspace}
+\newcommand*\DDC{\mbox{DRESDEN-concept}\xspace}
+\newcommand*\Univers{\textubn{Univers}\xspace}
+\newcommand*\DIN{\textdbn{DIN~BOLD}\xspace}
+% \end{macrocode}
+% \end{macro}^^A \DIN
+% \end{macro}^^A \Univers
+% \end{macro}^^A \DDC
+% \end{macro}^^A \TnUD
+% \end{macro}^^A \TUD
+% \end{macro}^^A \CDs
+% \end{macro}^^A \CD
+% \end{macro}^^A \notudscrartcl
+% \end{macro}^^A \forum
+% \end{macro}^^A \Attention
+% \end{macro}^^A \TUDScript
+% \end{macro}^^A \vTUDScript
+% \end{macro}^^A \vTUD
+% Ganz zum Schluss wird der Seitenstil für Teileseiten gesetzt.
+% \begin{macrocode}
+\renewcommand*\partpagestyle{empty}
+% \end{macrocode}
+%
+% \Finale
+%
+\endinput \ No newline at end of file