diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/tudscr/tudscr-manual.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/tudscr/tudscr-manual.dtx | 1276 |
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 |