diff options
author | Karl Berry <karl@freefriends.org> | 2017-01-27 23:14:08 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2017-01-27 23:14:08 +0000 |
commit | 953423df3388111af14ec84c79dfa6b10e1e8aac (patch) | |
tree | d91e3ead05751436a0713703f3cae5ffd3174fe9 /Master/texmf-dist/source/latex/tudscr/tudscr-doc.dtx | |
parent | 83082c7f9a495b3086e74c09252c4046fdbc6a72 (diff) |
tudscr (27jan17)
git-svn-id: svn://tug.org/texlive/trunk@43067 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/tudscr/tudscr-doc.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/tudscr/tudscr-doc.dtx | 1613 |
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 |