summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/tudscr/tudscr-doc.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/tudscr/tudscr-doc.dtx')
-rw-r--r--Master/texmf-dist/source/latex/tudscr/tudscr-doc.dtx1613
1 files changed, 991 insertions, 622 deletions
diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr-doc.dtx b/Master/texmf-dist/source/latex/tudscr/tudscr-doc.dtx
index ef144bb8248..30e8645a68b 100644
--- a/Master/texmf-dist/source/latex/tudscr/tudscr-doc.dtx
+++ b/Master/texmf-dist/source/latex/tudscr/tudscr-doc.dtx
@@ -1,32 +1,32 @@
-% \CheckSum{1618}
+% \CheckSum{2037}
% \iffalse meta-comment
-%
-% ============================================================================
-%
-% TUD-Script
-% Copyright (c) Falk Hanisch <tudscr@gmail.com>, 2012-2016
-%
-% ============================================================================
-%
+%
+% TUD-Script -- Corporate Design of Technische Universität Dresden
+% ----------------------------------------------------------------------------
+%
+% Copyright (C) Falk Hanisch <tudscr@gmail.com>, 2012-2017
+%
+% ----------------------------------------------------------------------------
+%
% 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 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
+% 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
+% in der Version 1.3c, verteilt und/oder verändert werden. Die aktuelle
+% Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und
+% Version 1.3c oder später ist Teil aller Verteilungen von LaTeX 2005/12/01
+% oder später 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
%
@@ -49,9 +49,9 @@
% \iffalse
%%% From File: tudscr-doc.dtx
%<*driver>
-\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\ifx\ProvidesFile\@undefined\def\ProvidesFile#1[#2]{}\fi
\ProvidesFile{tudscr-doc.dtx}[%
- 2016/09/22 v2.05d TUD-Script\space%
+ 2017/01/26 v2.05g TUD-Script\space%
(source code documentation based on scrartcl/scrdoc)%
]
\RequirePackage[ngerman=ngerman-x-latest]{hyphsubst}
@@ -61,13 +61,19 @@
\usepackage{babel}
\usepackage{tudscrfonts} % only load this package, if the fonts are installed
\KOMAoptions{parskip=half-}
-\usepackage{microtype}
\usepackage{bookmark}
+\usepackage[babel]{microtype}
+
\CodelineIndex
\RecordChanges
\GetFileInfo{tudscr-doc.dtx}
+\title{\file{\filename}}
+\author{Falk Hanisch\qquad\expandafter\mailto\expandafter{\tudscrmail}}
+\date{\fileversion\nobreakspace(\filedate)}
+
\begin{document}
\maketitle
+ \tableofcontents
\DocInput{\filename}
\end{document}
%</driver>
@@ -78,29 +84,23 @@
% \changes{v2.03}{2015/01/09}{\cls{tudscrdoc}: Indextyp Seitenstilebene}^^A
% \changes{v2.05}{2016/04/21}{Verwendung von \app{texindy} möglich}^^A
%
-% \section{Quelltextdokumentation für das \TUDScript-Bundle}
+% \section{Die Klasse \cls{tudscrdoc} -- Erweiterte Quelltextdokumentation}
%
% Mit dieser Klasse erfolgt die Quelltextdokumentation des \TUDScript-Bundles.
+% Sie lädt standarmäßig die Klasse \cls{ltxdoc}, ersetzt allerdings im Stile
+% von \cls{scrdoc} im Hintergrund \cls{article} durch \cls{scrartcl}.
% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
%
% \iffalse
-%<*class>
+%<*class&option>
% \fi
%
-% Sie lädt standarmäßig die Klasse \cls{ltxdoc}, ersetzt allerdings im Stile
-% von \cls{scrdoc} im Hintergrund \cls{article} durch \cls{scrartcl}. Damit der
-% zu \cls{scrartcl} gehörige Titel genutzt werden kann, wird dieser temporär
-% gesichert.
+% Damit der zu \cls{scrartcl} gehörige Titel genutzt werden kann, wird dieser
+% temporär gesichert.
% \begin{macrocode}
-\RequirePackage{scrbase}[2013/12/19]%
-\newcommand*\saved@maketitle{}%
+\newcommand*\scr@maketitle{}%
\PassOptionsToClass{toc=left}{scrartcl}%
-\AfterClass{scrartcl}{\let\saved@maketitle\@maketitle}%
-\AfterClass{ltxdoc}{%
- \let\@maketitle\saved@maketitle%
- \codeline@indexfalse%
-}%
-\AfterPackage{inputenc}{\RequirePackage{csquotes}[2011/10/22]}%
+\AfterClass{scrartcl}{\let\scr@maketitle\@maketitle}%
% \end{macrocode}
% Der folgende Quelltext ist 1:1 aus \cls{scrdoc} kopiert.
% \begin{macrocode}
@@ -132,13 +132,49 @@
}
\LoadClassWithOptions{ltxdoc}
\setcounter{IndexColumns}{2}
+\setcounter{StandardModuleDepth}{2}
+% \end{macrocode}
+%
+% \subsection{Klassenoptionen}
+%
+% \begin{option}{final}
+% \begin{macro}{\tudfinalflag}
+% Option bzw. Flag für das automatisierte Erzeugen der Quelltextdokumentation
+% mit einem Skript ohne ToDo-Befehle.
+% \begin{macrocode}
+\DeclareOption{final}{\let\tudfinalflag\relax}
+% \end{macrocode}
+% \end{macro}^^A \tudfinalflag
+% \end{option}^^A final
+% \begin{option}{texindy}
+% \changes{v2.05}{2016/04/21}{neu}^^A
+% \begin{option}{xindy}
+% \changes{v2.05}{2016/04/21}{neu}^^A
+% \begin{option}{xdy}
+% \changes{v2.05}{2016/04/21}{neu}^^A
+% \begin{macro}{\tudxdyflag}
+% \changes{v2.05}{2016/04/21}{neu}^^A
+% Option(en) für das Erstellen der Indexdateien im Stil von \app{texindy}.
+% \begin{macrocode}
+\DeclareOption{texindy}{\let\tudxdyflag\relax}
+\DeclareOption{xindy}{\let\tudxdyflag\relax}
+\DeclareOption{xdy}{\let\tudxdyflag\relax}
% \end{macrocode}
-% Befehle, welche bei der Verwednung von \cs{EnableCrossrefs} dennoch nicht im
+% \end{macro}^^A \tudxdyflag
+% \end{option}^^A xdy
+% \end{option}^^A xindy
+% \end{option}^^A texindy
+% Die beiden Optionen werden abgearbeitet
+% \begin{macrocode}
+\ProcessOptions\relax
+% \end{macrocode}
+%
+% \subsection{Ignorierte Makros bei der Nutzung von zusätzlichen Indexeinträgen}
+%
+% Befehle, welche bei der Verwendung von \cs{EnableCrossrefs} dennoch nicht im
% Index erscheinen sollen.
% \begingroup%
-% \makeatletter%
-% \@bsphack\scan@allowedfalse\@esphack%
-% \makeatother%
+% \DisableCrossrefs%
% \begin{macrocode}
%^^A\DoNotIndex{\ ,\",\.,\@,\\,\{,\}}
%^^A\DoNotIndex{\@abstrtfalse,\@abstrttrue,\@addtoreset}
@@ -165,7 +201,7 @@
%^^A\DoNotIndex{\@tempswafalse,\@tempswatrue,\@tempswbfalse,\@tempswbtrue}
%^^A\DoNotIndex{\@tocrmarg,\@topnewpage,\@topnum}
%^^A\DoNotIndex{\@twocolumnfalse,\@twocolumntrue,\@twosidefalse,\@twosidetrue}
-%^^A\DoNotIndex{\@whiledim,\@whilenum}
+%^^A\DoNotIndex{\@undefined,\@whiledim,\@whilenum}
%^^A\DoNotIndex{\addcontentsline,\addpenalty,\addtocontents}
%^^A\DoNotIndex{\addtolength,\addvspace,\advance}
%^^A\DoNotIndex{\begin,\begingroup,\bfseries,\box,\bullet}
@@ -209,90 +245,32 @@
%^^A\DoNotIndex{\year}
%^^A\DoNotIndex{\z@}
% \end{macrocode}
-% Damit sind alle Einträge, welche nicht im Index auftauchen sollen, definiert.
% \endgroup%
-% \begin{option}{final}
-% \begin{macro}{\tudfinalflag}
-% Option bzw. Flag für das automatisierte Erzeugen der Quelltextdokumentation
-% mit einem Skript ohne ToDo-Befehle.
-% \begin{macrocode}
-\DeclareOption{final}{\let\tudfinalflag\relax}
-% \end{macrocode}
-% \end{macro}^^A \tudfinalflag
-% \end{option}^^A final
-% \begin{option}{texindy}
-% \changes{v2.05}{2016/04/21}{neu}^^A
-% \begin{option}{xindy}
-% \changes{v2.05}{2016/04/21}{neu}^^A
-% \begin{option}{xdy}
-% \changes{v2.05}{2016/04/21}{neu}^^A
-% \begin{macro}{\tudxdyflag}
-% \changes{v2.05}{2016/04/21}{neu}^^A
-% Option(en) für das Erstellen der Indexdateien im Stil von \app{texindy}.
-% \begin{macrocode}
-\DeclareOption{texindy}{\let\tudxdyflag\relax}
-\DeclareOption{xindy}{\let\tudxdyflag\relax}
-\DeclareOption{xdy}{\let\tudxdyflag\relax}
-% \end{macrocode}
-% \end{macro}^^A \tudxdyflag
-% \end{option}^^A xdy
-% \end{option}^^A xindy
-% \end{option}^^A texindy
-% Die beiden Optionen werden abgearbeitet
-% \begin{macrocode}
-\ProcessOptions\relax
-% \end{macrocode}
-% \begin{length}{\topmargin}
-% \begin{length}{\headheight}
-% \begin{length}{\headsep}
-% \begin{length}{\footskip}
-% \begin{length}{\marginparwidth}
-% \begin{length}{\marginparsep}
-% \begin{length}{\oddsidemargin}
-% \begin{length}{\textheight}
-% \begin{length}{\textwidth}
-% Die Seitenränder werden so eingestellt, dass für die Darstellung des
-% Quelltextes genau 80~Zeichen zur Verfügung stehen.
-% \begin{macrocode}
-\setlength\topmargin{-1in}
-\setlength\headheight{0pt}
-\setlength\headsep{30pt}
-\setlength\footskip{1.5\headsep}
-\setlength\textheight{\dimexpr\paperheight-2.5\headsep-\footskip\relax}
-\setlength\marginparwidth{150pt}
-\setlength\marginparsep{0pt}
-\setlength\oddsidemargin{\dimexpr\marginparwidth+\marginparsep-1in\relax}
-\setlength\textwidth{%
- \dimexpr\paperwidth-1in-\oddsidemargin-.5\headsep\relax%
-}
-% \end{macrocode}
-% \end{length}^^A \textwidth
-% \end{length}^^A \textheight
-% \end{length}^^A \oddsidemargin
-% \end{length}^^A \marginparsep
-% \end{length}^^A \marginparwidth
-% \end{length}^^A \footskip
-% \end{length}^^A \headsep
-% \end{length}^^A \headheight
-% \end{length}^^A \topmargin
-% Mit dem Paket~\pkg{dox} können weitere Eintragstypen erstellt werden. Dieses
-% lädt außerdem das Paket~\pkg{doc}, welches die Grundfunktionalitäten für die
-% Erstellung von \file{dtx}-Dateien bereitstellt. In der momentanen Version
-% unterstützt das Paket~\pkg{dox} die aktuellen Anpassungen an die Erstellung
-% von Änderungsnotizen durch \pkg{doc} nicht, weshalb im Folgenden einige
-% Patches notwendig sind. Hierfür wird das Paket \pkg{tudscrbase} geladen.
+%
+% \iffalse
+%</class&option>
+%<*class&body>
+% \fi
+%
+% \subsection{Definition und Erscheinungsbild von Deklarationselementen}
+%
+% Mit dem Paket~\pkg{dox} können weitere Deklarationselemente erstellt werden.
+% Dieses lädt außerdem das Paket~\pkg{doc}, welches die Grundfunktionalitäten
+% für die Erstellung von \file{dtx}-Dateien bereitstellt. In der momentanen
+% Version unterstützt das Paket~\pkg{dox} die aktuellen Anpassungen an die
+% Erstellung von Änderungsnotizen durch \pkg{doc} nicht, weshalb im Folgenden
+% einige Patches notwendig sind.
% \begin{macrocode}
-\RequirePackage{tudscrbase}[\TUD@Version]
\RequirePackage{dox}[2010/12/16]
\@ifpackagelater{dox}{2010/12/17}{%
\ClassWarning{\TUD@Class@Name}{%
Package `dox' was updated so some patches\MessageBreak%
- are maybe outdated
+ are maybe outdated%
}%
}{}%
% \end{macrocode}
% \begin{macro}{\m@cro@}
-% Nach dem Laden der Pakete werden die Definitionen einiger Makros überprüft.
+% Nach dem Laden des Paketes werden die Definitionen einiger Makros überprüft.
% \begin{macrocode}
\CheckCommand\m@cro@[2]{%
\endgroup \topsep\MacroTopsep \trivlist
@@ -331,236 +309,155 @@
}
% \end{macrocode}
% \end{macro}^^A \m@cro@
-% \begin{macro}{\changes@}
-% Bei der Erstellung der Änderungsliste fehlt bei Makros in der aktuellen
-% Version von \pkg{doc} ein Leerzeichen. Das Problem ist bereits gemeldet.
-% \begin{macrocode}
-\CheckCommand*\changes@[3]{%
- \protected@edef\@tempa{%
- \noexpand\glossary{%
- #1\levelchar
- \ifx\saved@macroname\@empty
- \space
- \actualchar
- \generalname
- \else
- \saved@indexname
- \actualchar
- \string\verb\quotechar*%
- \verbatimchar\saved@macroname
- \verbatimchar
- \fi
- :\levelchar #3%
- }%
- }%
- \@tempa\endgroup\@esphack%
-}
-% \end{macrocode}
-% Bei der Erzeugung der Änderungseinträge wird zwischen der Verwendung von
-% \app{makeindex} und \app{xindy} unterschieden. Für die Reihenfolge des
-% Erscheinens der einzelnen Einträge wird das angegebene Datum zur Sortierung
-% genutzt.
-% \begin{macrocode}
-\ifdefined\tudxdyflag%
- \renewcommand*\changes@[3]{%
-% \end{macrocode}
-% Einträge sollen nur erzeugt werden, wenn diese vollständig sind.
-% \begin{macrocode}
- \@tempswatrue%
- \ifblank{#1}{\@tempswafalse}{}%
- \ifblank{#3}{\@tempswafalse}{}%
- \if@tempswa%
- \protected@edef\@tempa{%
- \noexpand\glossary{%
- #1\levelchar%
- \ifx\saved@macroname\@empty%
- \generalname%
- \else%
- \implementationname%
- \fi%
- \levelchar
- \ifx\saved@macroname\@empty\else%
- \saved@indexname
- \ifx\saved@idxtype\@empty\else%
- \space\saved@idxtype
- \fi%
- \actualchar
- \string\verb\quotechar*%
- \verbatimchar\saved@macroname
- \verbatimchar%
- \ifx\saved@idxtype\@empty\else%
- \space(\saved@idxtype)%
- \fi%
- :\levelchar
- \fi
- #2 #3%
- \actualchar%
- #3% (#2)%
- }%
- }%
- \else%
- \let\@tempa\relax%
- \fi%
- \@tempa\endgroup\@esphack%
- }%
-\else%
- \renewcommand*\changes@[3]{%
- \protected@edef\@tempa{%
- \noexpand\glossary{%
- #1\levelchar
- \ifx\saved@macroname\@empty
- \quotechar!
- \actualchar
- \generalname
- \else
- \saved@indexname
- \actualchar
- \string\verb\quotechar*%
- \verbatimchar\saved@macroname
- \verbatimchar
- \fi
- :\levelchar #3%
- }%
- }%
- \@tempa\endgroup\@esphack%
- }%
-\fi%
-% \end{macrocode}
-% \end{macro}^^A \changes@
-% \begin{macro}{\@wrglossary}
-% \begin{macro}{\filesep}
-% Für die Ausgabe der Änderungsliste soll nicht einfach nur die Seitenzahl
-% sondern tatsächlich die Codezeile ausgegeben werden.
+%
+% \subsubsection{Erweiterte Einträge für Index und Änderungsliste}
+%
+% \begin{macro}{\doxitem}
+% Mit dem Befehl \cs{doxitem} werden beliebige Deklarationselemente erstellt.
+% das Makro wird für das Hinzufügen des Eintragstyps für Index, Änderungsliste
+% und Randnotiz angepasst.
% \begin{macrocode}
-\CheckCommand*\@wrglossary[1]{%
- \protected@write\@glossaryfile{}%
- {\string\glossaryentry{#1}{\thepage}}%
- \endgroup
- \@esphack%
+\CheckCommand\doxitem[4][]{%
+ \@nameuse{dox@macrolike\dox@macrolikedefault}%
+ \def\dox@idxtype{#3}%
+ \setkeys{dox}{#1}
+ \@ifundefined{Print#2Name}{%
+ \ifdox@macrolike
+ \expandafter\def\csname Print#2Name\endcsname##1{%
+ \strut\MacroFont\string ##1\ }
+ \else
+ \expandafter\def\csname Print#2Name\endcsname##1{%
+ \strut\MacroFont ##1\ }
+ \fi}{}
+ \ifdox@macrolike
+ \def\@doxexpr{\@doxcreatespecialmainmacrolikeindex{#2}}%
+ \else
+ \def\@doxexpr{\@doxcreatespecialmainindex{#2}}%
+ \fi
+ \expandafter\@doxexpr\expandafter{\dox@idxtype}{#4}%
+ \@ifundefined{PrintDescribe#2}{%
+ \ifdox@macrolike
+ \expandafter\def\csname PrintDescribe#2\endcsname##1{%
+ \strut\MacroFont\string ##1\ }
+ \else
+ \expandafter\def\csname PrintDescribe#2\endcsname##1{%
+ \strut\MacroFont ##1\ }
+ \fi}{}
+ \ifdox@macrolike
+ \def\@doxexpr{\@doxcreatespecialmacrolikeindex{#2}}%
+ \else
+ \def\@doxexpr{\@doxcreatespecialindex{#2}}%
+ \fi
+ \expandafter\@doxexpr\expandafter{\dox@idxtype}{#4}%
+ \@doxcreatedescribe{#2}
+ \@doxcreateenv{#2}{#3}%
}
% \end{macrocode}
-% Da \cs{filesep} leer ist, falls nicht \cs{DocInclude} verwendet wird, lassen
-% sich im Index Seitenzahlen und Codezeilen nicht sofort unterscheiden, weshalb
-% das Makro hier standardmäßig mit \val{?-} als Präfix für letztere definiert
-% wird.
+% Das Makro wird dahingehend angepasst, dass alle für die Ausgabe erzeugten
+% Befehle der Form \cs{Print\meta{Typ}Name} und \cs{PrintDescribe\meta{Typ}}
+% um den Eintragstyp ergänzt werden, erstellt durch \cs{doxcreateprintname}
+% bzw. \cs{doxcreatemacrolikeprintname}. Zusätzlich werden für die Klasse
+% \cls{tudscrdoc} neue Befehle in der Form \cs{Set\meta{Typ}IndexName} mit
+% \cs{doxcreateindexname} bzw. \cs{doxcreatemacrolikeindexname} erstellt. Mit
+% diesen wird beim Aufruf einer Deklarationsumgebung der aktuelle Name und
+% Eintragstyp des jeweiligen Deklarationselementes gesichert, um diese
+% Informationen in der Änderungsliste nutzen zu können.
% \begin{macrocode}
-\def\filesep{?-}
-\def\@wrglossary#1{%
-% \end{macrocode}
-% Der erste Zweig ist aktiv, wenn der Index mit Seitenzahlen erzeugt wird.
-% Werden Codezeilen als Basis verwendet, entsprechend der zweite.
-% \begin{macrocode}
- \ifx\special@index\index%
- \@tempswafalse%
+\renewcommand*\doxitem[4][]{%
+ \@nameuse{dox@macrolike\dox@macrolikedefault}%
+ \def\dox@idxtype{#3}%
+ \setkeys{dox}{#1}%
+ \ifdox@macrolike%
+ \def\@doxexpr{\@doxcreatespecialmainmacrolikeindex{#2}}%
\else%
- \@tempswatrue%
+ \def\@doxexpr{\@doxcreatespecialmainindex{#2}}%
\fi%
-% \end{macrocode}
-% Für einen allgemeinen Eintrag soll definitiv die Seitenzahl verwendet werden.
-% \begin{macrocode}
- \ifx\saved@macroname\@empty%
- \@tempswafalse%
+ \expandafter\@doxexpr\expandafter{\dox@idxtype}{#4}%
+ \ifdox@macrolike%
+ \def\@doxexpr{\@doxcreatespecialmacrolikeindex{#2}}%
+ \else%
+ \def\@doxexpr{\@doxcreatespecialindex{#2}}%
\fi%
- \if@tempswa%
- \global\advance\c@CodelineNo\@ne
- \protected@write\@glossaryfile{}{%
- \string\glossaryentry{#1}{\filesep\number\c@CodelineNo}%
- }
- \global\advance\c@CodelineNo\m@ne
+ \expandafter\@doxexpr\expandafter{\dox@idxtype}{#4}%
+ \ifdox@macrolike%
+ \def\@doxexpr{\@doxcreatemacrolikeprintname{#2}}%
\else%
- \protected@write\@glossaryfile{}{\string\glossaryentry{#1}{\thepage}}
+ \def\@doxexpr{\@doxcreateprintname{#2}}%
\fi%
- \endgroup
- \@esphack%
+ \expandafter\@doxexpr\expandafter{\dox@idxtype}%
+ \ifdox@macrolike%
+ \def\@doxexpr{\@doxcreatemacrolikeindexname{#2}}%
+ \else%
+ \def\@doxexpr{\@doxcreateindexname{#2}}%
+ \fi%
+ \expandafter\@doxexpr\expandafter{\dox@idxtype}%
+ \@doxcreatedescribe{#2}%
+ \@doxcreateenv{#2}{#3}%
}
% \end{macrocode}
-% \end{macro}^^A \filesep
-% \end{macro}^^A \@wrglossary
-% \begin{macro}{\generalname}
-% \begin{macro}{\implementationname}
-% Die Bezeichnungen für den allgemeinen und den Implementierungsteil.
-% \ToDo{\cs{filesep} fehlt in der allgemeinen Liste}[v2.06]
-% \begin{macrocode}
-\renewcommand*\generalname{Allgemein}
-\newcommand*\implementationname{Implementierung}
-% \end{macrocode}
-% \end{macro}^^A \implementationname
-% \end{macro}^^A \generalname
-% \begin{macro}{\hypersourcedef}
-% \changes{v2.05}{2016/04/26}{neu}^^A
-% \begin{macro}{\hypersource@def}
-% \changes{v2.05}{2016/04/26}{neu}^^A
-% \begin{macro}{\hypersourceref}
-% \changes{v2.05}{2016/04/26}{neu}^^A
-% \begin{macro}{\hypersource@ref}
-% \changes{v2.05}{2016/04/26}{neu}^^A
-% Diese Makros werden verwendet, um im Index respektive in der Änderungsliste
-% mithilfe von \pkg{hyperref} Hyperlinks auf die entsprechenden Codezeilen im
-% Dokument zu setzen.
+% \end{macro}^^A \doxitem
+% \begin{macro}{\index@type}
+% \changes{v2.05g}{2016/11/10}{neu}^^A
+% Dieses Makro dient zur Formatierung des Typen der Deklarationselemente in
+% Index und Änderungsliste.
% \begin{macrocode}
-\newcommand*\hypersourcedef[1]{}
-\newcommand*\hypersource@def{}
-\newcommand*\hypersourceref[1]{#1}
-\newcommand*\hypersource@ref[2][]{}
-\PassOptionsToPackage{hyperindex=false}{hyperref}
-\AfterPackage{hyperref}{%
+\newrobustcmd*\index@type[1]{%
+ \begingroup%
+ \normalfont\scriptsize\space(#1)%
+ \endgroup%
+}
% \end{macrocode}
-% Mit \cs{hypersourcedef} wird ein Textanker gesetzt, falls dieser noch nicht
-% definiert wurde, was durch \cs{hypersource@def} abgesichert wird. Als
-% Argument wird hierfür die aktuelle Codezeile verwendet.
+% \end{macro}^^A \index@type
+% \begin{macro}{\@doxcreatespecialmainmacrolikeindex}
+% \begin{macro}{\@doxcreatespecialmainindex}
+% \begin{macro}{\@doxcreatespecialmacrolikeindex}
+% \begin{macro}{\@doxcreatespecialindex}
+% Für den Index muss bei diesen Makros eine Anpassung erfolgen, damit die
+% Sortierung auch bei der Verwendung von \app{texindy} richtig erfolgt und
+% keine Einträge, welche es trotz gleicher Bezeichnung für unterschiedliche
+% Deklarationselemente (beispielsweise Umgebung \env{abstract} und Option
+% \opt{abstract}) gibt, unterschlagen werden. Außerdem wird hier die Definition
+% der Quelltextanker eingehangen und die Elterneinträge für Parameteränderungen
+% zurückgesetzt.
% \begin{macrocode}
- \renewcommand*\hypersourcedef[1]{%
- \ifstr{#1}{\hypersource@def}{}{%
- \Hy@raisedlink{\hyperdef{}{source:#1}{}}%
- \xdef\hypersource@def{#1}%
- }%
+\CheckCommand*\@doxcreatespecialmainmacrolikeindex[3]{%
+ \expandafter\def\csname SpecialMain#1Index\endcsname##1{%
+ \@SpecialIndexHelper@##1\@nil
+ \@bsphack%
+ \special@index{\@gtempa\actualchar
+ \string\verb\quotechar*\verbatimchar\bslash\@gtempa\verbatimchar
+ \space(#2)\encapchar main}%
+ \special@index{#3:\levelchar\@gtempa\actualchar%
+ \string\verb\quotechar*\verbatimchar\bslash\@gtempa\verbatimchar
+ \encapchar main}%
+ \@esphack%
}%
+}
% \end{macrocode}
-% Mit \cs{hypersource@ref} wird auf den Textanker verlinkt. Dies kann entweder
-% direkt mit \cs{hypersourceref} erfolgen oder indirekt über das Attribut
-% \val{main}, welches bei der Definitionen von Befehlen etc. im Index genutzt
-% wird. Hierfür wird das Makro \cs{main} umdefiniert.
-% \begin{macrocode}
- \renewcommand*\hypersourceref[1]{\hypersource@ref{#1}}%
- \renewcommand*\main[1]{\hypersource@ref[\underline]{#1}}%
-% \end{macrocode}
-% Die Referenz im Argument kann entweder in der Form \val{<Letter>-<Codezeile>}
-% oder direkt als Seitenzahl oder angegeben werden. Deshalb wird dafür gesorgt,
-% dass das angegebene Argument dementsprechend ausgewertet wird.
+% Um den Typ der Deklarationselemente in den Index einzutragen, wird der Typ
+% geschützt expandiert, um beispielsweise Umlaute problemlos nutzen zu können.
% \begin{macrocode}
- \renewcommand*\hypersource@ref[2][\@firstofone]{%
- \begingroup%
- \def\@tempa##1-##2\relax{%
- \IfArgIsEmpty{##2}{%
- \hyperlink{page.\@tempc}{#1{\@tempc}}%
- }{%
- \hyperref{}{}{source:\@tempc}{#1{\@tempc}}%
- }%
- }%
- \def\@tempb##1{%
- \def\@tempc{##1}%
- \expandafter\@tempa##1-\relax%
- }%
- \forcsvlist\@tempb{#2}%
- \endgroup%
+\renewcommand*\@doxcreatespecialmainmacrolikeindex[3]{%
+ \expandafter\def\csname SpecialMain#1Index\endcsname##1{%
+ \@SpecialIndexHelper@##1\@nil%
+ \@bsphack%
+ \protected@edef\tud@reserved{#2}%
+ \special@index{%
+ \@gtempa\space\expandonce\tud@reserved\actualchar%
+ \string\verb\quotechar*\verbatimchar\bslash\@gtempa\verbatimchar%
+ \index@type{\expandonce\tud@reserved}\encapchar main%
+ }%
+ \protected@edef\tud@reserved{#3}%
+ \special@index{%
+ \expandonce\tud@reserved:\levelchar\@gtempa\actualchar%
+ \string\verb\quotechar*\verbatimchar\bslash\@gtempa\verbatimchar%
+ \encapchar main%
+ }%
+ \@esphack%
+ \let\parameter@parent@changes\relax%
+ \hypersourcedef{\filesep\number\c@CodelineNo}%
}%
}
-% \end{macrocode}
-% \end{macro}^^A \hypersource@ref
-% \end{macro}^^A \hypersourceref
-% \end{macro}^^A \hypersource@def
-% \end{macro}^^A \hypersourcedef
-% \begin{macro}{\@doxcreatespecialmainindex}
-% \begin{macro}{\@doxcreatespecialmainmacrolikeindex}
-% \begin{macro}{\@doxcreatespecialindex}
-% \begin{macro}{\@doxcreatespecialindex}
-% Für den Index muss bei diesen Makros eine kleine Anpassung erfolgen, damit
-% die Sortierung auch bei der Verwendung von \app{texindy} richtig erfolgt und
-% keine Einträge, welche es trotz gleicher Bezeichnung für unterschiedliche
-% Eintragstypen (bspw. Umgebung \env{abstract} und Option \opt{abstract}) gibt,
-% unterschlagen werden. Außerdem wird hier die Definition der Quelltextanker
-% eingehangen.
-% \begin{macrocode}
\CheckCommand*\@doxcreatespecialmainindex[3]{%
\expandafter\def\csname SpecialMain#1Index\endcsname##1{%
\@bsphack%
@@ -571,31 +468,57 @@
\@esphack%
}%
}
-\patchcmd{\@doxcreatespecialmainindex}{\actualchar}{%
- \space(#2)\actualchar%
-}{}{\tud@patch@wrn{@doxcreatespecialmainindex}}
-\patchcmd{\@doxcreatespecialmainindex}{\@esphack}{%
- \@esphack\hypersourcedef{\filesep\number\c@CodelineNo}%
-}{}{\tud@patch@wrn{@doxcreatespecialmainindex}}
-\CheckCommand*\@doxcreatespecialmainmacrolikeindex[3]{%
+\renewcommand*\@doxcreatespecialmainindex[3]{%
\expandafter\def\csname SpecialMain#1Index\endcsname##1{%
+ \@bsphack%
+ \protected@edef\tud@reserved{#2}%
+ \special@index{%
+ ##1\space\expandonce\tud@reserved\actualchar%
+ {\string\ttfamily\space##1}\index@type{\expandonce\tud@reserved}%
+ \encapchar main%
+ }%
+ \protected@edef\tud@reserved{#3}%
+ \special@index{%
+ \expandonce\tud@reserved:\levelchar##1\actualchar%
+ {\string\ttfamily\space##1}\encapchar main%
+ }%
+ \@esphack%
+ \let\parameter@parent@changes\relax%
+ \hypersourcedef{\filesep\number\c@CodelineNo}%
+ }%
+}
+\CheckCommand*\@doxcreatespecialmacrolikeindex[3]{%
+ \expandafter\def\csname Special#1Index\endcsname##1{%
\@SpecialIndexHelper@##1\@nil
\@bsphack%
- \special@index{\@gtempa\actualchar
+ \index{\@gtempa\actualchar
\string\verb\quotechar*\verbatimchar\bslash\@gtempa\verbatimchar
- \space(#2)\encapchar main}%
- \special@index{#3:\levelchar\@gtempa\actualchar%
+ \space(#2)\encapchar usage}%
+ \index{#3:\levelchar\@gtempa\actualchar
\string\verb\quotechar*\verbatimchar\bslash\@gtempa\verbatimchar
- \encapchar main}%
+ \encapchar usage}%
+ \@esphack%
+ }%
+}
+\renewcommand*\@doxcreatespecialmacrolikeindex[3]{%
+ \expandafter\def\csname Special#1Index\endcsname##1{%
+ \@SpecialIndexHelper@##1\@nil%
+ \@bsphack%
+ \protected@edef\tud@reserved{#2}%
+ \index{%
+ \@gtempa\space\expandonce\tud@reserved\actualchar%
+ \string\verb\quotechar*\verbatimchar\bslash\@gtempa\verbatimchar%
+ \index@type{\expandonce\tud@reserved}\encapchar usage%
+ }%
+ \protected@edef\tud@reserved{#3}%
+ \index{%
+ \expandonce\tud@reserved:\levelchar\@gtempa\actualchar%
+ \string\verb\quotechar*\verbatimchar\bslash\@gtempa\verbatimchar%
+ \encapchar usage%
+ }%
\@esphack%
}%
}
-\patchcmd{\@doxcreatespecialmainmacrolikeindex}{\actualchar}{%
- \space(#2)\actualchar%
-}{}{\tud@patch@wrn{@doxcreatespecialmainmacrolikeindex}}
-\patchcmd{\@doxcreatespecialmainmacrolikeindex}{\@esphack}{%
- \@esphack\hypersourcedef{\filesep\number\c@CodelineNo}%
-}{}{\tud@patch@wrn{@doxcreatespecialmainmacrolikeindex}}
\CheckCommand*\@doxcreatespecialindex[3]{%
\expandafter\def\csname Special#1Index\endcsname##1{%
\@bsphack%
@@ -605,147 +528,92 @@
\@esphack%
}%
}
-\patchcmd{\@doxcreatespecialindex}{\actualchar}{%
- \space(#2)\actualchar%
-}{}{\tud@patch@wrn{@doxcreatespecialindex}}
-\CheckCommand*\@doxcreatespecialmacrolikeindex[3]{%
+\renewcommand*\@doxcreatespecialindex[3]{%
\expandafter\def\csname Special#1Index\endcsname##1{%
- \@SpecialIndexHelper@##1\@nil
\@bsphack%
- \index{\@gtempa\actualchar
- \string\verb\quotechar*\verbatimchar\bslash\@gtempa\verbatimchar
- \space(#2)\encapchar usage}%
- \index{#3:\levelchar\@gtempa\actualchar
- \string\verb\quotechar*\verbatimchar\bslash\@gtempa\verbatimchar
- \encapchar usage}%
+ \protected@edef\tud@reserved{#2}%
+ \index{%
+ ##1\space\expandonce\tud@reserved\actualchar%
+ {\protect\ttfamily##1}\index@type{\expandonce\tud@reserved}%
+ \encapchar usage%
+ }%
+ \protected@edef\tud@reserved{#3}%
+ \index{%
+ \expandonce\tud@reserved:\levelchar##1\actualchar%
+ {\protect\ttfamily##1}\encapchar usage%
+ }%
\@esphack%
}%
}
-\patchcmd{\@doxcreatespecialmacrolikeindex}{\actualchar}{%
- \space(#2)\actualchar%
-}{}{\tud@patch@wrn{@doxcreatespecialmacrolikeindex}}
% \end{macrocode}
% \end{macro}^^A \@doxcreatespecialindex
-% \end{macro}^^A \@doxcreatespecialindex
-% \end{macro}^^A \@doxcreatespecialmainmacrolikeindex
+% \end{macro}^^A \@doxcreatespecialmacrolikeindex
% \end{macro}^^A \@doxcreatespecialmainindex
-% \begin{macro}{\doxitem}
-% \begin{macro}{\@doxcreateenv}
+% \end{macro}^^A \@doxcreatespecialmainmacrolikeindex
+% \begin{macro}{\@doxcreatemacrolikeprintname}
+% \begin{macro}{\@doxcreateprintname}
% \begin{macro}{\@doxcreatemacrolikeindexname}
% \begin{macro}{\@doxcreateindexname}
-% \begin{macro}{\saved@idxtype}
-% \begin{macro}{\@@doxenv}
-% Jetzt die Anpassungen der Änderungsliste für das Paket \pkg{dox}.
+% \begin{macro}{\saved@indextype}
+% Hiermit werden die Makros zur Ausgabe als Randnotiz definiert. Mit diesen
+% wird dem eigentlichen Eintrag der Eintragstyp angehängt. Zu beachten ist, das
+% entgegen der ursprünglichen Definition \cs{strut} erst zum Schluss ausgeführt
+% wird. Somit lassen sich potenzielle Probleme mit dem Paket \pkg{microtype}
+% vermeiden.
% \begin{macrocode}
-\CheckCommand\doxitem[4][]{%
- \@nameuse{dox@macrolike\dox@macrolikedefault}%
- \def\dox@idxtype{#3}%
- \setkeys{dox}{#1}
- \@ifundefined{Print#2Name}{%
- \ifdox@macrolike
- \expandafter\def\csname Print#2Name\endcsname##1{%
- \strut\MacroFont\string ##1\ }
- \else
- \expandafter\def\csname Print#2Name\endcsname##1{%
- \strut\MacroFont ##1\ }
- \fi}{}
- \ifdox@macrolike
- \def\@doxexpr{\@doxcreatespecialmainmacrolikeindex{#2}}%
- \else
- \def\@doxexpr{\@doxcreatespecialmainindex{#2}}%
- \fi
- \expandafter\@doxexpr\expandafter{\dox@idxtype}{#4}%
- \@ifundefined{PrintDescribe#2}{%
- \ifdox@macrolike
- \expandafter\def\csname PrintDescribe#2\endcsname##1{%
- \strut\MacroFont\string ##1\ }
- \else
- \expandafter\def\csname PrintDescribe#2\endcsname##1{%
- \strut\MacroFont ##1\ }
- \fi}{}
- \ifdox@macrolike
- \def\@doxexpr{\@doxcreatespecialmacrolikeindex{#2}}%
- \else
- \def\@doxexpr{\@doxcreatespecialindex{#2}}%
- \fi
- \expandafter\@doxexpr\expandafter{\dox@idxtype}{#4}%
- \@doxcreatedescribe{#2}
- \@doxcreateenv{#2}{#3}%
-}
-% \end{macrocode}
-% Da das direkte Patchen von \cs{doxitem} mit den Mitteln von \pkg{etoolbox}
-% aufgrund des optionalen Argumentes nicht möglich ist, wird der notwendige
-% Patch einfach zu Beginn von \cs{@doxcreateenv} eingehängt.
-% \begin{macrocode}
-\CheckCommand\doxitem[4][]{%
- \@nameuse{dox@macrolike\dox@macrolikedefault}%
- \def\dox@idxtype{#3}%
- \setkeys{dox}{#1}
- \@ifundefined{Print#2Name}{%
- \ifdox@macrolike
- \expandafter\def\csname Print#2Name\endcsname##1{%
- \strut\MacroFont\string ##1\ }
- \else
- \expandafter\def\csname Print#2Name\endcsname##1{%
- \strut\MacroFont ##1\ }
- \fi}{}
- \ifdox@macrolike
- \def\@doxexpr{\@doxcreatespecialmainmacrolikeindex{#2}}%
- \else
- \def\@doxexpr{\@doxcreatespecialmainindex{#2}}%
- \fi
- \expandafter\@doxexpr\expandafter{\dox@idxtype}{#4}%
- \@ifundefined{PrintDescribe#2}{%
- \ifdox@macrolike
- \expandafter\def\csname PrintDescribe#2\endcsname##1{%
- \strut\MacroFont\string ##1\ }
- \else
- \expandafter\def\csname PrintDescribe#2\endcsname##1{%
- \strut\MacroFont ##1\ }
- \fi}{}
- \ifdox@macrolike
- \def\@doxexpr{\@doxcreatespecialmacrolikeindex{#2}}%
- \else
- \def\@doxexpr{\@doxcreatespecialindex{#2}}%
- \fi
- \expandafter\@doxexpr\expandafter{\dox@idxtype}{#4}%
- \@doxcreatedescribe{#2}
- \@doxcreateenv{#2}{#3}%
+\def\@doxcreatemacrolikeprintname#1#2{%
+ \@ifundefined{Print#1Name}{%
+ \expandafter\def\csname Print#1Name\endcsname##1{%
+ \MacroFont\string##1\index@type{#2}\strut\ %
+ }%
+ }{}%
+ \@ifundefined{PrintDescribe#1}{%
+ \expandafter\def\csname PrintDescribe#1\endcsname##1{%
+ \MacroFont\string##1\index@type{#2}\strut\ %
+ }%
+ }{}%
}
-\CheckCommand*\@doxcreateenv[2]{%
- \expandafter\def\csname #2\endcsname{%
- \@ifnextchar[%]
- {\@doxenv{#1}}{\@doxenv{#1}[]}}
- \expandafter\let\csname end#2\endcsname\endtrivlist%
+\def\@doxcreateprintname#1#2{%
+ \@ifundefined{Print#1Name}{%
+ \expandafter\def\csname Print#1Name\endcsname##1{%
+ \MacroFont##1\index@type{#2}\strut\ %
+ }%
+ }{}%
+ \@ifundefined{PrintDescribe#1}{%
+ \expandafter\def\csname PrintDescribe#1\endcsname##1{%
+ \MacroFont##1\index@type{#2}\strut\ %
+ }%
+ }{}%
}
-\pretocmd{\@doxcreateenv}{%
- \ifdox@macrolike%
- \def\@doxexpr{\@doxcreatemacrolikeindexname{#1}}%
- \else%
- \def\@doxexpr{\@doxcreateindexname{#1}}%
- \fi%
- \expandafter\@doxexpr\expandafter{\dox@idxtype}%
-}{}{\tud@patch@wrn{@doxcreateenv}}
% \end{macrocode}
-% Nun noch die beiden Befehle, welche durch den Patch ausgeführt werden.
+% Ziel ist es, in den
+% Makros \cs{saved@indexname} und \cs{saved@indextype} den Namen und den Typ
+% des aktuellen Deklarationselementes zu speichern.
% \begin{macrocode}
-\newcommand*\saved@idxtype{}
+\newcommand*\saved@indextype{}
\def\@doxcreatemacrolikeindexname#1#2{%
\expandafter\def\csname Set#1IndexName\endcsname##1{%
\edef\saved@indexname{\expandafter\@gobble##1}%
- \edef\saved@idxtype{#2}%
+ \protected@edef\saved@indextype{#2}%
}%
}
\def\@doxcreateindexname#1#2{%
\expandafter\def\csname Set#1IndexName\endcsname##1{%
\let\saved@indexname##1%
- \edef\saved@idxtype{#2}%
+ \protected@edef\saved@indextype{#2}%
}%
}
% \end{macrocode}
-% In \cs{@@doxenv} sollen die bei der Verwendung von \cs{doxitem} respektive
-% \cs{@doxcreateenv} definierten Makros \cs{Set\dots{}IndexName} ausgeführt
-% werden. Zuerst das Prüfen des Befehls\dots
+% \end{macro}^^A \saved@indextype
+% \end{macro}^^A \@doxcreateindexname
+% \end{macro}^^A \@doxcreatemacrolikeindexname
+% \end{macro}^^A \@doxcreateprintname
+% \end{macro}^^A \@doxcreatemacrolikeprintname
+% \begin{macro}{\@@doxenv}
+% Es folgen kleine Anpassungen für die Änderungsliste. Beim Aufruf von
+% \cs{@@doxenv} sollen die bei der Verwendung von \cs{doxitem} definierten
+% Makros \cs{Set\meta{Typ}IndexName} ausgeführt werden. Zuerst das Prüfen des
+% Befehls\dots
% \begin{macrocode}
\CheckCommand\@@doxenv[2]{%
\endgroup%
@@ -786,52 +654,440 @@
}{}{\tud@patch@wrn{@@doxenv}}
% \end{macrocode}
% \end{macro}^^A \@@doxenv
-% \end{macro}^^A \saved@idxtype
-% \end{macro}^^A \@doxcreateindexname
-% \end{macro}^^A \@doxcreatemacrolikeindexname
-% \end{macro}^^A \@doxcreateenv
-% \end{macro}^^A \doxitem
% \begin{macro}{\SetMacroIndexName}
-% \begin{macro}{\SetEnvIndexName}
% \begin{macro}{\SpecialMainMacroIndex}
-% Da für Makros und Umgebungen die notwendigen Makros nicht über \cs{doxitem}
-% kreiert werden können, erfolgt dies hier direkt.
+% Da für Makros die notwendigen Befehle nicht über \cs{doxitem} kreiert werden,
+% erfolgt dies hier direkt.
% \begin{macrocode}
-\def\SetMacroIndexName#1{%
- \edef\saved@indexname{\expandafter\@gobble#1}
- \let\saved@idxtype\@empty%
-}
-\def\SetEnvIndexName#1{%
- \let\saved@indexname#1%
- \edef\saved@idxtype{environment}%
+\newcommand*\SetMacroIndexName[1]{%
+ \edef\saved@indexname{\expandafter\@gobble#1}%
+ \let\saved@indextype\@empty%
}
\CheckCommand*\SpecialMainMacroIndex[1]{%
\SpecialMainIndex{#1}\nobreak%
\DoNotIndex{#1}%
}
\apptocmd{\SpecialMainMacroIndex}{%
+ \let\parameter@parent@changes\relax%
\hypersourcedef{\filesep\number\c@CodelineNo}%
}{}{\tud@patch@wrn{SpecialMainMacroIndex}}
% \end{macrocode}
% \end{macro}^^A \SpecialMainMacroIndex
-% \end{macro}^^A \SetEnvIndexName
% \end{macro}^^A \SetMacroIndexName
+%
+% \subsubsection{Erstellen aller Deklarationselemente}
+%
% Nachdem nun die Anpassungen für die Änderungsliste erfolgt sind, können nun
-% die für die Dokumentatiton notwendigen Umgebungen erstellt werden.
-% \ToDo{Parameter besser im Index darstellen}[v2.06]
+% die für die Dokumentatiton notwendigen Umgebungen mit \cs{docitem} erstellt
+% werden. Dabei kommen die Lokalisierungsvariablen \cs{tud@\dots{}@name} zum
+% Tragen.
+% \begin{macrocode}
+\renewcommand*\tud@reserved[3][]{%
+ \doxitem[#1,idxtype=\csname tud@#3@name\endcsname]{#2}{#3}{%
+ \csname tud@#3s@name\endcsname%
+ }%
+}
+\undef\PrintEnvName
+\undef\PrintDescribeEnv
+\tud@reserved{Env}{environment}
+\tud@reserved{Option}{option}
+\tud@reserved{PageStyle}{pagestyle}
+\tud@reserved{Layer}{layer}
+\tud@reserved[macrolike]{Length}{length}
+\tud@reserved{Counter}{counter}
+\tud@reserved{Color}{TUDcolor}
+\tud@reserved[macrolike]{Locale}{locale}
+\tud@reserved[macrolike]{Field}{field}
+\tud@reserved{Font}{KOMAfont}
+\tud@reserved{Parameter}{parameter}
+% \end{macrocode}
+%
+% \subsubsection{Besonderheiten des Deklarationselementes \emph{Parameter}}
+%
+% \begin{macro}{\parameter@parent@changes}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{macro}{\parameter@parent@indexname}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{macro}{\parameter@parent@indexformat}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% Um für Parameter sowohl im Index als auch in der Änderungsliste eine weitere
+% Ebene zu definieren, werden diese Befehle eigens definiert.
+% \begin{macrocode}
+\newcommand*\parameter@parent@changes{}
+\let\parameter@parent@changes\relax
+\newcommand*\parameter@parent@indexname{}
+\let\parameter@parent@indexname\relax
+\newcommand*\parameter@parent@indexformat{}
+\let\parameter@parent@indexformat\relax
+% \end{macrocode}
+% \end{macro}^^A \parameter@parent@indexformat
+% \end{macro}^^A \parameter@parent@indexname
+% \end{macro}^^A \parameter@parent@changes
+% \begin{macro}{\SetMacroIndexName}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{macro}{\SetEnvIndexName}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% Bei der Ausführung einer dieser beiden Befehle bei der Definition von einem
+% Makro oder einer Umgebung werden diese für evtl. nachfolgende Parameter als
+% Elterneinträge definiert. Hierfür werden für sowohl den Index als auch die
+% Änderungsliste der
+% Eintrag für die Sortierung in \cs{parameter@parent@indexname} und für die
+% Formatierung in \cs{parameter@parent@indexformat} gespeichert.
+% \begin{macrocode}
+\apptocmd\SetMacroIndexName{%
+ \edef\parameter@parent@indexname{\expandafter\@gobble#1}%
+ \edef\parameter@parent@indexformat{%
+ \string\verb\quotechar*\verbatimchar#1\verbatimchar%
+ }%
+}{}{\tud@patch@wrn{SetMacroIndexName}}
+\apptocmd\SetEnvIndexName{%
+ \protected@edef\parameter@parent@indexname{#1\space\saved@indextype}%
+ \protected@edef\parameter@parent@indexformat{%
+ \string\verb\quotechar*\verbatimchar#1\verbatimchar%
+ \index@type{\saved@indextype}%
+ }%
+}{}{\tud@patch@wrn{SetEnvIndexName}}
+% \end{macrocode}
+% \end{macro}^^A \SetEnvIndexName
+% \end{macro}^^A \SetMacroIndexName
+% \begin{macro}{\SpecialMainParameterIndex}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% Hier wird nun die Gestalt der Einträge für Parameter festgelegt.
% \begin{macrocode}
-\doxitem[idxtype=Umgebung]{Env}{environment}{Umgebungen}
-\doxitem[idxtype=Option]{Option}{option}{Optionen}
-\doxitem[idxtype=Parameter]{Parameter}{parameter}{Parameter}
-\doxitem[idxtype=Seitenstil]{PageStyle}{pagestyle}{Seitenstile}
-\doxitem[idxtype=Layer]{Layer}{layer}{Layer (Seitenstilebenen)}
-\doxitem[macrolike,idxtype=L\noexpand\"ange]{Length}{length}{L\noexpand\"angen}
-\doxitem[idxtype=Z\noexpand\"ahler]{Counter}{counter}{Z\noexpand\"ahler}
-\doxitem[idxtype=Farbe]{Color}{color}{Farben}
-\doxitem[macrolike,idxtype=Lok.]{Locale}{locale}{Lokalisierungsvariablen}
-\doxitem[macrolike,idxtype=Feld]{Field}{field}{Eingabefelder}
-\doxitem[idxtype=Schriftelement]{Font}{KOMAfont}{Schriftelemente}
+\renewcommand*\SpecialMainParameterIndex[1]{%
+ \ifx\parameter@parent@indexname\relax%
+ \ClassError{\TUD@Class@Name}{No previous macro or environment}{%
+ Since parameters can only be used for macros or\MessageBreak%
+ environments, you have to use `parameter' within\MessageBreak%
+ `macro' or `environment'.%
+ }%
+ \fi%
+ \protected@edef\parameter@parent@changes{%
+ \parameter@parent@indexname\actualchar%
+ \parameter@parent@indexformat:\levelchar%
+ }%
+ \@bsphack%
+ \special@index{%
+ \parameter@parent@indexname\actualchar%
+ \parameter@parent@indexformat\levelchar%
+ #1\space\tud@parameter@name\actualchar%
+ {\string\ttfamily\space#1}\index@type{\tud@parameter@name}%
+ \encapchar main%
+ }%
+ \special@index{%
+ \tud@parameters@name:\levelchar%
+ #1\space\parameter@parent@indexname%
+ \actualchar{\string\ttfamily\space#1}%
+ \noexpand\,--\noexpand\,\parameter@parent@indexformat%
+ \encapchar main%
+ }%
+ \@esphack%
+ \hypersourcedef{\filesep\number\c@CodelineNo}%
+}
% \end{macrocode}
+% \end{macro}^^A \SpecialMainParameterIndex
+%
+% \subsubsection{Erzeugen von Änderungseinträgen}
+%
+% \begin{macro}{\changes@}
+% Bei der Erstellung der Änderungsliste fehlt bei Makros in der aktuellen
+% Version von \pkg{doc} ein Leerzeichen. Das Problem ist bereits gemeldet.
+% \begin{macrocode}
+\CheckCommand*\changes@[3]{%
+ \protected@edef\@tempa{%
+ \noexpand\glossary{%
+ #1\levelchar
+ \ifx\saved@macroname\@empty
+ \space
+ \actualchar
+ \generalname
+ \else
+ \saved@indexname
+ \actualchar
+ \string\verb\quotechar*%
+ \verbatimchar\saved@macroname
+ \verbatimchar
+ \fi
+ :\levelchar #3%
+ }%
+ }%
+ \@tempa\endgroup\@esphack%
+}
+% \end{macrocode}
+% Bei der Erzeugung der Änderungseinträge wird zwischen der Verwendung von
+% \app{makeindex} und \app{texindy} unterschieden. Für die Reihenfolge des
+% Erscheinens der einzelnen Einträge wird das angegebene Datum zur Sortierung
+% genutzt.
+% \begin{macrocode}
+\ifdefined\tudxdyflag%
+ \renewcommand*\changes@[3]{%
+% \end{macrocode}
+% Einträge sollen nur erzeugt werden, wenn diese vollständig sind.
+% \begin{macrocode}
+ \@tempswatrue%
+ \ifblank{#1}{\@tempswafalse}{}%
+ \ifblank{#3}{\@tempswafalse}{}%
+ \if@tempswa%
+% \end{macrocode}
+% Es wird dabei unterschieden, ob der Änderungseintrag einem Parameter gilt.
+% Ist dies nicht der Fall, so wird der Eintrag mehr oder weniger standardmäßig
+% erzeugt.
+% \begin{macrocode}
+ \ifx\parameter@parent@changes\relax%
+ \protected@edef\@tempb{%
+ \saved@indexname%
+ \ifx\saved@indextype\@empty\else%
+ \space\saved@indextype%
+ \fi%
+ \actualchar%
+ \string\verb\quotechar*%
+ \verbatimchar\saved@macroname%
+ \verbatimchar%
+ \ifx\saved@indextype\@empty\else%
+ \index@type{\saved@indextype}%
+ \fi%
+ :\levelchar%
+ }%
+% \end{macrocode}
+% Andernfalls wird eine zusätzliche Ebene vor dem eigentlichen Eintrag des
+% Parameters erzeugt und der zuvor in \cs{parameter@parent@changes} gesicherte
+% Elterneintrag~-- Befehl oder Umgebung~-- dafür eingefügt.
+% \begin{macrocode}
+ \else%
+ \protected@edef\@tempb{%
+ \parameter@parent@changes%
+ \saved@indexname%
+ \ifx\saved@indextype\@empty\else%
+ \space\saved@indextype%
+ \fi%
+ \actualchar%
+% \end{macrocode}
+% Der so erzeugte Änderungseintrag soll durch \app{texindy} bei der Erzeugung
+% der Änderungsliste noch speziell sortiert werden. Daher wird nicht \cs{verb}
+% sondern lediglich \cs{ttfamily} verwendet.
+% \begin{macrocode}
+ {\noexpand\ttfamily\saved@macroname}%
+ \ifx\saved@indextype\@empty\else%
+ \index@type{\saved@indextype}%
+ \fi%
+ :\levelchar%
+ }%
+ \fi%
+ \protected@edef\@tempa{%
+ \noexpand\glossary{%
+ #1\levelchar%
+ \ifx\saved@macroname\@empty%
+ \tud@general@name%
+ \else%
+ \tud@implementation@name%
+ \fi%
+ \levelchar%
+ \ifx\saved@macroname\@empty\else%
+ \@tempb%
+ \fi%
+ #2 #3%
+ \actualchar%
+ #3% (#2)%
+ }%
+ }%
+ \else%
+ \let\@tempa\relax%
+ \fi%
+ \@tempa\endgroup\@esphack%
+ }%
+\else%
+% \end{macrocode}
+% Für \app{makeindex} wird der Befehl insebsondere für das Listen der Parameter
+% angepasst.
+% \begin{macrocode}
+ \renewcommand*\changes@[3]{%
+ \protected@edef\@tempa{%
+ \noexpand\glossary{%
+ #1\levelchar%
+ \ifx\saved@macroname\@empty%
+ \quotechar!%
+ \actualchar%
+ \tud@general@name%
+ :\levelchar%
+ \else%
+ \ifx\parameter@parent@changes\relax\else%
+ \parameter@parent@changes zzz\space%
+ \fi%
+ \saved@indexname%
+ \ifx\saved@indextype\@empty\else%
+ \space\saved@indextype%
+ \fi%
+ \actualchar%
+ \string\verb\quotechar*%
+ \verbatimchar\saved@macroname%
+ \verbatimchar%
+ \ifx\saved@indextype\@empty\else%
+ \index@type{\saved@indextype}%
+ \fi%
+ \ifx\parameter@parent@changes\relax%
+ :\levelchar%
+ \else%
+ :\space%
+ \fi%
+ \fi%
+ #3%
+ }%
+ }%
+ \@tempa\endgroup\@esphack%
+ }%
+\fi%
+% \end{macrocode}
+% \end{macro}^^A \changes@
+% \begin{macro}{\@wrglossary}
+% Für die Ausgabe der Änderungsliste soll nicht einfach nur die Seitenzahl
+% sondern zumindest für die Implementierungen die Codezeile ausgegeben werden.
+% \begin{macrocode}
+\CheckCommand*\@wrglossary[1]{%
+ \protected@write\@glossaryfile{}%
+ {\string\glossaryentry{#1}{\thepage}}%
+ \endgroup
+ \@esphack%
+}
+% \end{macrocode}
+% Allgemeine Einträge werden mit Seitenzahlenerzeugt. Für Einträge bzgl. einer
+% Implementierungen werden Codezeilen als Basis verwendet, falls aktiv.
+% \begin{macrocode}
+\def\@wrglossary#1{%
+ \ifx\saved@macroname\@empty%
+ \protected@write\@glossaryfile{}{%
+ \string\glossaryentry{#1|usage}{\thepage}%
+ }%
+ \else%
+ \ifcodeline@index%
+ \global\advance\c@CodelineNo\@ne%
+ \protected@write\@glossaryfile{}{%
+ \string\glossaryentry{#1|main}{\filesep\number\c@CodelineNo}%
+ }%
+ \global\advance\c@CodelineNo\m@ne%
+ \else%
+ \protected@write\@glossaryfile{}{%
+ \string\glossaryentry{#1|main}{\thepage}%
+ }%
+ \fi%
+ \fi%
+ \endgroup%
+ \@esphack%
+}
+% \end{macrocode}
+% \end{macro}^^A \@wrglossary
+%
+% \subsubsection{Erscheinung von Einträgen in der Änderungsliste}
+%
+% \begin{macro}{\tud@lst@def}
+% \changes{v2.05}{2016/04/25}{neu}^^A
+% \begin{macro}{\tud@lst@values}
+% \changes{v2.05}{2016/04/25}{neu}^^A
+% \begin{macro}{\if@tud@lst@multi}
+% \changes{v2.05}{2016/04/25}{neu}^^A
+% \begin{macro}{\tud@lst@init}
+% \changes{v2.05}{2016/04/25}{neu}^^A
+% \begin{macro}{\tud@lst@add}
+% \changes{v2.05}{2016/04/25}{neu}^^A
+% \begin{macro}{\tud@lst@process}
+% \changes{v2.05}{2016/04/25}{neu}^^A
+% \begin{macro}{\tud@lst@@values}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{macro}{\if@tud@lst@@multi}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{macro}{\tud@lst@@init}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{macro}{\tud@lst@@add}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{macro}{\tud@lst@@process}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{macro}{\tud@lst@subsub}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{macro}{\tud@lst@subsubsub}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{macro}{\subsubsubitem}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% \begin{macro}{\efil}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
+% Falls für die Sortierung der Änderungsliste in \cls{tudscrdoc} \app{texindy}
+% zum Einsatz kommt, wird bei der Beschreibung von Einträgen oder Parametern
+% nur dann eine Unterebene verwendet, wenn zu einem Eintrag mehrere Angaben
+% existieren. Sollte nur eine Anmerkung vorhanden sein, wird diese direkt in
+% der dazugehörigen Ebene nach dem Eintrag selbst ausgegeben.
+% \begin{macrocode}
+\newcommand*\tud@lst@subsub{}
+\newcommand*\tud@lst@subsubsub{}
+\newcommand*\subsubsubitem{\@idxitem\hspace*{35\p@}}
+\newcommand*\efil{\hfil\nopagebreak}%
+\newcommand*\tud@lst@def{%
+ \newcommand*\tud@lst@values{}%
+ \newif\if@tud@lst@multi%
+ \newcommand*\tud@lst@init{%
+ \let\tud@lst@values\relax%
+ \let\tud@lst@subsub\relax%
+ \@tud@lst@multifalse%
+ }%
+ \newcommand*\tud@lst@add[1]{%
+ \ifx\tud@lst@values\relax\else%
+ \@tud@lst@multitrue%
+ \def\tud@lst@subsub{\subsubitem}%
+ \fi%
+ \listadd\tud@lst@values{\tud@lst@subsub ##1}%
+ }%
+ \newcommand*\tud@lst@process{%
+ \if@tud@lst@multi%
+ \preto\tud@lst@values{\efill}%
+ \fi%
+ \forlistloop{}{\tud@lst@values}%
+ \tud@lst@init%
+ }%
+ \newcommand*\tud@lst@@values{}%
+ \newif\if@tud@lst@@multi%
+ \newcommand*\tud@lst@@init{%
+ \let\tud@lst@@values\relax%
+ \def\tud@lst@subsub{\subsubitem}%
+ \def\tud@lst@subsubsub{\space}%
+ \@tud@lst@@multifalse%
+ }%
+ \newcommand*\tud@lst@@add[1]{%
+ \@tud@lst@multitrue%
+ \ifx\tud@lst@@values\relax\else%
+ \@tud@lst@@multitrue%
+ \def\tud@lst@subsubsub{\subsubsubitem}%
+ \fi%
+ \listadd\tud@lst@@values{##1}%
+ }%
+ \newcommand*\tud@lst@@process{%
+ \if@tud@lst@@multi%
+ \appto\tud@lst@values{\efill}%
+ \fi%
+ \edef\tud@reserved####1{%
+ \noexpand\listadd\noexpand\tud@lst@values{%
+ \expandonce\tud@lst@subsubsub####1%
+ }%
+ }%
+ \forlistloop{\tud@reserved}{\tud@lst@@values}%
+ \tud@lst@@init%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \efil
+% \end{macro}^^A \subsubsubitem
+% \end{macro}^^A \tud@lst@subsubsub
+% \end{macro}^^A \tud@lst@subsub
+% \end{macro}^^A \tud@lst@@process
+% \end{macro}^^A \tud@lst@@add
+% \end{macro}^^A \tud@lst@@init
+% \end{macro}^^A \if@tud@lst@@multi
+% \end{macro}^^A \tud@lst@@values
+% \end{macro}^^A \tud@lst@process
+% \end{macro}^^A \tud@lst@add
+% \end{macro}^^A \tud@lst@init
+% \end{macro}^^A \if@tud@lst@multi
+% \end{macro}^^A \tud@lst@values
+% \end{macro}^^A \tud@lst@def
+%
+% \subsubsection{Erzeugen von Index und Änderungsliste}
+%
% \begin{macro}{\tud@write@replace}
% \changes{v2.05}{2016/04/21}{neu}^^A
% \begin{macro}{\tud@read@replace}
@@ -858,56 +1114,57 @@
% Hilfsdateien für Index und Änderungsliste für \app{texindy} angepasst. Dabei
% werden diese automatisch erzeugt, falls dies möglich ist.
% \begin{macrocode}
- \def\actualchar{<&1&>}
- \def\quotechar{<&2&>}
- \def\levelchar{<&3&>}
+ \def\actualchar{<|1|>}
+ \def\quotechar{<|2|>}
+ \def\levelchar{<|3|>}
\begingroup
- \endlinechar=-1\relax%
+ \endlinechar=\m@ne\relax%
\def\tud@reserved#1#2{%
- \immediate\openin\tud@read@replace=\jobname.#1\relax%
- \immediate\openout\tud@write@replace=\jobname-xdy.#1\relax%
- \@tempswafalse%
- \loop\unless\ifeof\tud@read@replace%
- \readline\tud@read@replace to\tud@line@replace%
- \tud@replace\tud@line@replace{"}{""}%
- \tud@replace\tud@line@replace{!}{"!}%
- \tud@replace\tud@line@replace{:}{":}%
- \tud@replace\tud@line@replace{@}{"@}%
- \tud@replace\tud@line@replace{\"@}{"\@backslashchar"@}%
- \expandafter\tud@replace\expandafter\tud@line@replace%
- \expandafter{\actualchar}{@}%
- \expandafter\tud@replace\expandafter\tud@line@replace%
- \expandafter{\quotechar}{"}%
- \expandafter\tud@replace\expandafter\tud@line@replace%
- \expandafter{\levelchar}{!}%
- \tud@replace\tud@line@replace{" @}{}%
- \ifeof\tud@read@replace\else%
- \immediate\write\tud@write@replace{%
- \unexpanded\expandafter{\tud@line@replace}%
- }%
- \@tempswatrue%
- \fi%
- \repeat%
- \immediate\closein\tud@read@replace%
- \immediate\closeout\tud@write@replace%
- \ifnum\pdfshellescape=\@ne\relax%
- \if@tempswa%
- \immediate\write18{%
- texindy\space%
- -o \jobname.#2\space%
- -M \@currname-#2.xdy\space%
- -L german-din\space%
- -t \jobname-#2.xlg\space%
- \jobname-xdy.#1
- }%
+ \IfFileExists{\jobname.#1}{%
+ \immediate\openin\tud@read@replace=\jobname.#1\relax%
+ \immediate\openout\tud@write@replace=\jobname-xdy.#1\relax%
+ \@tempswafalse%
+ \loop\unless\ifeof\tud@read@replace%
+ \readline\tud@read@replace to\tud@line@replace%
+ \tud@replace\tud@line@replace{"}{""}%
+ \tud@replace\tud@line@replace{!}{"!}%
+ \tud@replace\tud@line@replace{:}{":}%
+ \tud@replace\tud@line@replace{@}{"@}%
+ \tud@replace\tud@line@replace{\"@}{"\@backslashchar"@}%
+ \expandafter\tud@replace\expandafter\tud@line@replace%
+ \expandafter{\actualchar}{@}%
+ \expandafter\tud@replace\expandafter\tud@line@replace%
+ \expandafter{\quotechar}{"}%
+ \expandafter\tud@replace\expandafter\tud@line@replace%
+ \expandafter{\levelchar}{!}%
+ \tud@replace\tud@line@replace{" @}{}%
+ \ifeof\tud@read@replace\else%
+ \immediate\write\tud@write@replace{%
+ \unexpanded\expandafter{\tud@line@replace}%
+ }%
+ \@tempswatrue%
+ \fi%
+ \repeat%
+ \immediate\closein\tud@read@replace%
+ \immediate\closeout\tud@write@replace%
+ \ifnum\pdf@shellescape=\@ne\relax%
+ \if@tempswa%
+ \immediate\write18{%
+ texindy\space%
+ -o \jobname.#2\space%
+ -M \@currname-#2.xdy\space%
+ -t \jobname-#2.xlg\space%
+ \jobname-xdy.#1%
+ }%
% \end{macrocode}
% Falls nichts geschrieben wurde, wird eine leere Ausgabedatei erzeugt.
% \begin{macrocode}
- \else%
- \immediate\openout\tud@write@replace=\jobname.#2\relax%
- \immediate\closeout\tud@write@replace%
+ \else%
+ \immediate\openout\tud@write@replace=\jobname.#2\relax%
+ \immediate\closeout\tud@write@replace%
+ \fi%
\fi%
- \fi%
+ }{}%
}%
\tud@reserved{idx}{ind}%
\tud@reserved{glo}{gls}%
@@ -917,36 +1174,37 @@
% \app{makeindex} automatisch erzeugt.
% \begin{macrocode}
\else
- \ifnum\pdfshellescape=\@ne\relax%
- \immediate\write18{makeindex -s gglo.ist -o \jobname.gls \jobname.glo}%
- \immediate\write18{makeindex -s gind.ist -o \jobname.ind \jobname.idx}%
+ \ifnum\pdf@shellescape=\@ne\relax%
+ \immediate\write18{%
+ makeindex -s gglo.ist -t \jobname.glg -o \jobname.gls \jobname.glo%
+ }%
+ \immediate\write18{%
+ makeindex -s gind.ist -t \jobname.ilg -o \jobname.ind \jobname.idx%
+ }%
\fi%
\fi
% \end{macrocode}
-% Jetzt werden noch die Einleitungen für Index und Änderungsliste angepasst.
-% \begin{macrocode}
-\IndexPrologue{%
- \addsec{Index}%
- Unterstrichene Zahlen, die gegebenenfalls mit einem Hyperlink versehen sind,
- verweisen auf die \ifcodeline@index Codezeile der \fi Definition, alle
- weiteren sind \ifcodeline@index Zeilennummern\else Seitenzahlen\fi, wo der
- jeweilige Eintrag verwendet wird.
-}
-\GlossaryPrologue{\addsec{\"Anderungsliste}}
-% \end{macrocode}
% \end{macro}^^A \levelchar
% \end{macro}^^A \quotechar
% \end{macro}^^A \actualchar
% \end{macro}^^A \tud@line@replace
% \end{macro}^^A \tud@read@replace
% \end{macro}^^A \tud@write@replace
+% Jetzt werden noch die Einleitungen für Index und Änderungsliste angepasst.
+% \begin{macrocode}
+\IndexPrologue{\addsec{\indexname}\tud@index@text}
+\GlossaryPrologue{\addsec{\tud@changes@name}}
+% \end{macrocode}
+%
+% \subsection{ToDo-Liste}
+%
% \begin{macro}{\PrintToDos}
% \changes{v2.05}{2016/05/19}{neu}^^A
% Für ToDo-Notizen wird am Ende eine Liste aller offenen Punkte ausgegeben.
% \begin{macrocode}
\DeclareNewTOC[%
type=todo,%
- listname={Liste der noch zu erledigenden Punkte},%
+ listname={\tud@todo@name},%
name=ToDo,%
tocentryindent=\z@,%
owner=\@currname,%
@@ -997,35 +1255,165 @@
\ifdefined\tudfinalflag\else%
\begingroup%
\csuse{phantomsection}%
- \def\tud@reserved{\ifxblank{#2}{ToDo: ??}{ToDo: #2}}%
+ \IfArgIsEmpty{#2}{%
+ \def\tud@reserved{??}%
+ }{%
+ \def\tud@reserved{#2}%
+ }%
\endgraf%
\hfuzz0.8pt%
- \leavevmode\marginpar{\raggedleft\fbox{\tud@reserved\strut}}%
+ \leavevmode\marginpar{\raggedleft\fbox{ToDo:\space\tud@reserved\strut}}%
\fbox{\parbox{\dimexpr\textwidth-2\fboxsep\relax}{#1\strut}}%
\endgraf%
- \global\advance\c@CodelineNo\@ne
- \addxcontentsline{tdo}{todo}{#2:~#1~(\filesep\number\c@CodelineNo)}%
- \global\advance\c@CodelineNo\m@ne
+% \end{macrocode}
+% Werden mit \cs{DocInclude} mehrere Dateien in das Dokument eingefügt, so
+% erhält die ToDo-Notiz einen entsprechenden Hinweis.
+% \begin{macrocode}
+ \let\@tempa\@empty%
+ \ifdefined\currentfile%
+ \def\@tempa{\,--\,\texttt{\currentfile}}%
+ \fi%
+ \addxcontentsline{tdo}{todo}{\tud@reserved\@tempa:\space#1}%
\endgroup%
\fi%
}
% \end{macrocode}
% \end{macro}^^A \@ToDo
% \end{macro}^^A \ToDo
-% Zum Schluss erfolgen einige Anpassungen mit \cs{AtBeginDocument}, um abhängig
-% vom Ladezustand einiger Pakete reagieren zu können.
+%
+% \subsection{Satzspiegel}
+%
+% Um den zur Verfügung stehenden Platz möglichst effektiv zu nutzen, soll der
+% Satzspiegel dahingehend aufgeteilt werden, dass für die Darstellung jeder
+% Quelltextzeile genau 80~Zeichen zur Verfügung stehen. Dies ist allerdings
+% abhängig von der geladenen Typewriter-Schrift. Deshalb wird die Berechnung
+% des Satzspiegels erst zum Ende der Präambel ausgeführt, um auf etwaige Pakete
+% zur Schriftauswahl reagieren zu können.
+%
+% \begin{macro}{\calculatearea}
+% \changes{v2.05g}{2016/11/10}{neu}^^A
+% \begin{length}{\topmargin}
+% \begin{length}{\headheight}
+% \begin{length}{\headsep}
+% \begin{length}{\footskip}
+% \begin{length}{\textheight}
+% \begin{length}{\textwidth}
+% \begin{length}{\columnsep}
+% \begin{length}{\marginparsep}
+% \begin{length}{\marginparwidth}
+% \begin{length}{\oddsidemargin}
+% Hiermit wird die Berechnung des Satzspiegels ausgeführt.
% \begin{macrocode}
-\AtBeginDocument{%
+\newcommand*\calculatearea{%
+ \setlength\topmargin{-1in}%
+ \setlength\headheight{0pt}%
+ \setlength\headsep{3em}%
+ \setlength\footskip{1.5\headsep}%
+ \setlength\textheight{\dimexpr\paperheight-2.5\headsep-\footskip\relax}%
+ \settowidth\MacroIndent{\rmfamily\scriptsize 0000\ }%
+ \begingroup%
+ \MacroFont\selectfont%
+ \settowidth\@tempdima{\space}%
+ \setlength\@tempdima{80\@tempdima}%
+%^^A \addtolength\@tempdima{\dimexpr\MacroIndent+.1\p@\relax}%
+ \addtolength\@tempdima{\MacroIndent}%
+ \edef\@tempa{%
+ \endgroup%
+ \noexpand\setlength\noexpand\textwidth{\the\@tempdima}%
+ }%
+ \@tempa%
+ \setlength\columnsep{1em}%
+ \setlength\marginparsep{1em}%
+ \setlength\marginparwidth{%
+ \dimexpr\paperwidth-\textwidth-2\marginparsep\relax%
+ }%
+ \setlength\oddsidemargin{\dimexpr\marginparwidth+\marginparsep-1in\relax}%
+}
+\AtEndPreamble{\calculatearea}
% \end{macrocode}
-% \begin{macro}{\newrobustcmd}
-% Sollte \pkg{etoolbox} nicht geladen sein, wird der Befehl \cs{newrobustcmd}
-% definiert, welcher anschließend für die Markup-Befehle genutzt wird.
+% \end{length}^^A \oddsidemargin
+% \end{length}^^A \marginparwidth
+% \end{length}^^A \marginparsep
+% \end{length}^^A \columnsep
+% \end{length}^^A \textwidth
+% \end{length}^^A \textheight
+% \end{length}^^A \footskip
+% \end{length}^^A \headsep
+% \end{length}^^A \headheight
+% \end{length}^^A \topmargin
+% \end{macro}^^A \calculatearea
+% \begin{macro}{\saved@calculatearea}
+% \changes{v2.05g}{2016/11/10}{neu}^^A
+% \begin{macro}{\tud@font@set}
+% \begin{macro}{\@pnumwidth}
+% \begin{macro}{\@tocrmarg}
+% \begin{macro}{\MacroFont}
+% \begin{macro}{\AltMacroFont}
+% Etwas komplizierter wird es, wenn das paket \pkg{tudscrfonts} geladen wird.
+% Die darin ausgewählten Typewriter-Schriften sind zur Quelltextdokumentation
+% zu schlank. Deshalb wird das Paket \pkg{mweights} genutzt, um die Stärke
+% etwas zu erhöhen. Damit dies mit dem Paket \pkg{doc} funktioniert, muss der
+% Befehl \cs{MacroFont} leicht angepasst werden.
+%
+% Da das Paket \pkg{tudscrfonts} das Festlegen der Schriften selbst auf das
+% Ende der Präambel verzögert, muss sichergestellt werden, dass die Berechnung
+% des Satzspiegels erst nach der Schriftauswahl erfolgt. Deshalb wird der
+% Inhalt von \cs{calculatearea} in \cs{saved@calculatearea} gescihert und
+% anschließend unschädlich gemacht. Danach wird die Satzspiegelberechnung an
+% das Makro \cs{tud@font@set} angehangen.
% \begin{macrocode}
- \@ifpackageloaded{etoolbox}{}{%
- \providecommand*\newrobustcmd{\DeclareRobustCommand}%
+\AfterPackage{tudscrfonts}{%
+ \RequirePackage{mweights}[2013/07/21]%
+ \CheckCommand*\MacroFont{%
+ \fontencoding\encodingdefault%
+ \fontfamily\ttdefault%
+ \fontseries\mddefault%
+ \fontshape\updefault%
+ \small%
+ }%
+ \renewcommand*\MacroFont{%
+ \fontencoding\encodingdefault%
+ \fontfamily\ttdefault%
+ \fontseries\mdseries@tt%
+ \fontshape\updefault%
+ \small%
+ }%
+ \CheckCommand*\AltMacroFont{%
+ \fontencoding\encodingdefault%
+ \fontfamily\ttdefault%
+ \fontseries\mddefault%
+ \fontshape\sldefault%
+ \small%
+ }%
+ \renewcommand*\AltMacroFont{%
+ \fontencoding\encodingdefault%
+ \fontfamily\ttdefault%
+ \fontseries\mdseries@tt%
+ \fontshape\sldefault%
+ \small%
+ }%
+ \newcommand*\saved@calculatearea{}%
+ \let\saved@calculatearea\calculatearea%
+ \let\calculatearea\relax%
+ \appto\tud@font@set{%
+ \ifcase\tud@cdfont@num\relax\else% true/heavy
+ \def\mdseries@tt{m}%
+ \renewcommand*\@pnumwidth{1.7em}%
+ \renewcommand*\@tocrmarg{2.7em}%
+ \fi%
+ \saved@calculatearea%
}%
+}
% \end{macrocode}
-% \end{macro}^^A \newrobustcmd
+% \end{macro}^^A \AltMacroFont
+% \end{macro}^^A \MacroFont
+% \end{macro}^^A \@tocrmarg
+% \end{macro}^^A \@pnumwidth
+% \end{macro}^^A \tud@font@set
+% \end{macro}^^A \saved@calculatearea
+%
+% \subsection{Zusätzliche Markup-Befehle}
+%
% \begin{macro}{\app}
% \begin{macro}{\cls}
% \begin{macro}{\pkg}
@@ -1033,19 +1421,36 @@
% \begin{macro}{\val}
% \begin{macro}{\pgs}
% \begin{macro}{\env}
+% \begin{macro}{\prm}
+% \changes{v2.05g}{2016/11/02}{neu}^^A
% \begin{macro}{\file}
% Zusätzliche Auszeichnungsbefehle.
% \begin{macrocode}
- \newrobustcmd*\app[1]{\mbox{\textsl{\textbf{#1}}}}
- \newrobustcmd*\cls[1]{\mbox{\textsf{\textbf{#1}}}}
- \newrobustcmd*\pkg[1]{\mbox{\textsf{\textbf{#1}}}}
- \newrobustcmd*\opt[1]{\mbox{\texttt{#1}}}
- \newrobustcmd*\val[1]{\mbox{\texttt{#1}}}
- \newrobustcmd*\pgs[1]{\mbox{\texttt{#1}}}
- \newrobustcmd*\env[1]{\mbox{\texttt{#1}}}
- \newrobustcmd*\file[1]{\mbox{\texttt{#1}}}
+\newrobustcmd*\app[1]{\mbox{\textsl{\textbf{#1}}}}
+\newrobustcmd*\cls[1]{\mbox{\textsf{\textbf{#1}}}}
+\newrobustcmd*\pkg[1]{\mbox{\textsf{\textbf{#1}}}}
+\newrobustcmd*\opt[1]{\mbox{\texttt{#1}}}
+\newrobustcmd*\val[1]{\mbox{\texttt{#1}}}
+\newrobustcmd*\pgs[1]{\mbox{\texttt{#1}}}
+\newrobustcmd*\env[1]{\mbox{\texttt{#1}}}
+\newrobustcmd*\prm[1]{\mbox{\texttt{#1}}}
+\newrobustcmd*\file[1]{\mbox{\texttt{#1}}}
+\AfterPackage{hyperref}{%
+ \pdfstringdefDisableCommands{%
+ \let\app\@firstofone%
+ \let\cls\@firstofone%
+ \let\pkg\@firstofone%
+ \let\opt\@firstofone%
+ \let\val\@firstofone%
+ \let\pgs\@firstofone%
+ \let\env\@firstofone%
+ \let\prm\@firstofone%
+ \let\file\@firstofone%
+ }%
+}
% \end{macrocode}
% \end{macro}^^A \file
+% \end{macro}^^A \prm
% \end{macro}^^A \env
% \end{macro}^^A \pgs
% \end{macro}^^A \val
@@ -1053,37 +1458,24 @@
% \end{macro}^^A \pkg
% \end{macro}^^A \cls
% \end{macro}^^A \app
-% \begin{macro}{\hypersetup}
-% \begin{macro}{\phantomsection}
-% \begin{macro}{\texorpdfstring}
-% Etwas Kleinkram für \pkg{hyperref}\dots
+%
+% \subsection{Rückfalloptionen bei fehlenden Paketen}
+%
+% Zum Schluss erfolgen einige Anpassungen mit \cs{AtEndPreamble}, um abhängig
+% vom Ladezustand einiger Pakete reagieren zu können.
% \begin{macrocode}
- \@ifpackageloaded{hyperref}{%
- \pdfstringdefDisableCommands{%
- \def\TUDScript{TUD-Script}%
- \let\cls\@firstofone%
- \let\pkg\@firstofone%
- }%
- }{%
- \RequirePackage{url}[2013/09/16]%
- \providecommand*\hypersetup[1]{}%
- \providecommand*\phantomsection{}%
- \providecommand*\texorpdfstring[2]{#1}%
- }%
+\AtEndPreamble{%
% \end{macrocode}
-% \end{macro}^^A \texorpdfstring
-% \end{macro}^^A \phantomsection
-% \end{macro}^^A \hypersetup
% \begin{macro}{\selectlanguage}
% \begin{macro}{\glqq}
% \begin{macro}{\grqq}
-% \dots sowie \pkg{babel}\dots
+% Etwas kleinkram für \pkg{babel}\dots
% \begin{macrocode}
\@ifpackageloaded{babel}{}{%
\ClassWarning{\TUD@Class@Name}{Package `babel' not loaded}%
- \let\selectlanguage\@gobble%
- \let\glqq\relax%
- \let\grqq\relax%
+ \providecommand*\selectlanguage[1]{}%
+ \providecommand*\glqq{\relax}%
+ \providecommand*\grqq{\relax}%
}%
% \end{macrocode}
% \end{macro}^^A \grqq
@@ -1094,28 +1486,15 @@
% \begin{macrocode}
\@ifpackageloaded{csquotes}{}{%
\ClassWarning{\TUD@Class@Name}{Package `csquotes' not loaded}%
- \providecommand\enquote[1]{\glqq#1\grqq{}}%
+ \providecommand\enquote[1]{\emph{#1}}%
}%
% \end{macrocode}
% \end{macro}^^A \enquote
-% Sollte das Paket \pkg{tudscrfonts} geladen worden sein, so wird die Stärke
-% der Schriften für die Quelltextausgabe etwas erhöht, um die Lesbarkeit zu
-% verbessern.
+% Sollte das Paket \pkg{tudscrfonts} nicht geladen worden sein, so wird das
+% Paket \pkg{lmodern} geladen und die fehlenden Befehle zur Schriftauswahl
+% rudimentär definiert.
% \begin{macrocode}
- \@ifpackageloaded{tudscrfonts}{%
- \RequirePackage{mweights}[2013/07/21]%
- \ifnum\tud@cdfont@num>\z@\relax% true/heavy
- \def\mddefault{m}%
- \def\mdseries@tt{m}%
- \renewcommand*\@pnumwidth{1.7em}%
- \renewcommand*\@tocrmarg{2.7em}%
- \fi%
- \setlength\columnsep{10pt}%
-% \end{macrocode}
-% Andernfalls wird das Paket \pkg{lmodern} geladen und die fehlenden Befehle
-% zur Schriftauswahl rudimentär definiert.
-% \begin{macrocode}
- }{%
+ \@ifpackageloaded{tudscrfonts}{}{%
\RequirePackage{lmodern}[2009/10/30]%
\providecommand*\ifdin[2]{#2}%
\providecommand*\textuln[1]{\textsf{#1}}%
@@ -1128,21 +1507,11 @@
\providecommand*\textuxs[1]{\textubs{#1}}%
\providecommand*\textdbn[1]{\textubn{#1}}%
}%
-% \end{macrocode}
-% Und ganz zum Schluss noch die Titelei.
-% \begin{macrocode}
- \title{%
- \file{\filename}\thanks{%
- Dies ist Version \fileversion\nobreakspace{}von Datei \file{\filename}.%
- }%
- }%
- \author{Falk Hanisch\thanks{\tudscrmail}}%
- \date{\filedate}%
}
% \end{macrocode}
%
% \iffalse
-%</class>
+%</class&body>
% \fi
%
% \Finale