diff options
author | Karl Berry <karl@freefriends.org> | 2016-07-30 23:12:46 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2016-07-30 23:12:46 +0000 |
commit | 6b200dd5c2335baa8c78037d8f1c75d1295187f4 (patch) | |
tree | 45201aff662870ef1d337d24f7ce584320a633bf /Master/texmf-dist/source/latex/tudscr/tudscr-doc.dtx | |
parent | 4e2bc5d88938c53a614ca1efafe6680e25d24c76 (diff) |
tudscr (26jul16)
git-svn-id: svn://tug.org/texlive/trunk@41776 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 | 1088 |
1 files changed, 1005 insertions, 83 deletions
diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr-doc.dtx b/Master/texmf-dist/source/latex/tudscr/tudscr-doc.dtx index 0b1fa1d050a..4c3ad53cf14 100644 --- a/Master/texmf-dist/source/latex/tudscr/tudscr-doc.dtx +++ b/Master/texmf-dist/source/latex/tudscr/tudscr-doc.dtx @@ -1,4 +1,4 @@ -% \CheckSum{195} +% \CheckSum{1618} % \iffalse meta-comment % % ============================================================================ @@ -18,13 +18,13 @@ % % ---------------------------------------------------------------------------- % -% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz -% in der Version 1.3c, verteilt und/oder veraendert werden. Die aktuelle -% Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und -% Version 1.3c oder spaeter ist Teil aller Verteilungen von LaTeX 2005/12/01 -% oder spaeter und dieses Werks. Dieses Werk hat den LPPL-Verwaltungs-Status -% "author-maintained", wird somit allein durch den Autor verwaltet. Der -% aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch. +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz +% in der Version 1.3c, verteilt und/oder veraendert werden. Die aktuelle +% Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und +% Version 1.3c oder spaeter ist Teil aller Verteilungen von LaTeX 2005/12/01 +% oder spaeter und dieses Werks. Dieses Werk hat den LPPL-Verwaltungs-Status +% "author-maintained", wird somit allein durch den Autor verwaltet. Der +% aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch. % % ============================================================================ % @@ -51,16 +51,18 @@ %<*driver> \ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi \ProvidesFile{tudscr-doc.dtx}[% - 2015/06/12 v2.04 TUD-KOMA-Script\space% - (source code documentation based on scrdoc)% + 2016/07/26 v2.05 TUD-KOMA-Script\space% + (source code documentation based on scrartcl/scrdoc)% ] \RequirePackage[ngerman=ngerman-x-latest]{hyphsubst} -\documentclass[english,ngerman]{tudscrdoc} +\documentclass[english,ngerman,xindy]{tudscrdoc} \usepackage{selinput}\SelectInputMappings{adieresis={ä},germandbls={ß}} \usepackage[T1]{fontenc} \usepackage{babel} \usepackage{tudscrfonts} % only load this package, if the fonts are installed \KOMAoptions{parskip=half-} +\usepackage{microtype} +\usepackage{bookmark} \CodelineIndex \RecordChanges \GetFileInfo{tudscr-doc.dtx} @@ -74,148 +76,1068 @@ % \selectlanguage{ngerman} % % \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} % % Mit dieser Klasse erfolgt die Quelltextdokumentation des \TUDScript-Bundles. -% \StopEventually{\PrintIndex\PrintChanges} +% \StopEventually{\PrintIndex\PrintChanges\PrintToDos} % % \iffalse %<*class> % \fi % -% Sie basiert auf der Klasse \cls{scrdoc}. +% 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. % \begin{macrocode} -\LoadClassWithOptions{scrdoc} +\RequirePackage{scrbase}[2013/12/19]% +\newcommand*\saved@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]}% +% \end{macrocode} +% Der folgende Quelltext ist 1:1 aus \cls{scrdoc} kopiert. +% \begin{macrocode} +\newcommand*\sd@saved@LoadClass{} +\let\sd@saved@LoadClass=\LoadClass +\renewcommand*\LoadClass[2][]{% + \begingroup + \edef\@tempc{#2}\def\@tempb{article}% + \ifx\@tempc\@tempb + \let\LoadClass\sd@saved@LoadClass + \def\@tempc{scrartcl}% + \fi + \edef\@tempc{% + \noexpand\endgroup\noexpand\sd@saved@LoadClass[{#1}]{\@tempc}}% + \@tempc +} +\newcommand*\sd@saved@PassOptionsToClass{} +\let\sd@saved@PassOptionsToClass=\PassOptionsToClass +\renewcommand*\PassOptionsToClass[2]{% + \begingroup + \edef\@tempc{#2}\def\@tempb{article}% + \ifx\@tempc\@tempb + \def\@tempc{scrartcl}% + \fi + \edef\@tempc{% + \noexpand\endgroup\noexpand\sd@saved@PassOptionsToClass{#1}{% + \@tempc}}% + \@tempc +} +\LoadClassWithOptions{ltxdoc} +\setcounter{IndexColumns}{2} % \end{macrocode} +% Befehle, welche bei der Verwednung von \cs{EnableCrossrefs} dennoch nicht im +% Index erscheinen sollen. +% \begingroup% +% \makeatletter% +% \@bsphack\scan@allowedfalse\@esphack% +% \makeatother% +% \begin{macrocode} +%^^A\DoNotIndex{\ ,\",\.,\@,\\,\{,\}} +%^^A\DoNotIndex{\@abstrtfalse,\@abstrttrue,\@addtoreset} +%^^A\DoNotIndex{\@afterheading,\@afterindentfalse} +%^^A\DoNotIndex{\@Alph,\@alph,\@arabic} +%^^A\DoNotIndex{\@beginparpenalty} +%^^A\DoNotIndex{\@car,\@cdr,\@centercr} +%^^A\DoNotIndex{\@dblfloat,\@dotsep,\@dottedtocline} +%^^A\DoNotIndex{\@empty,\@endparpenalty} +%^^A\DoNotIndex{\@float,\@fontswitch} +%^^A\DoNotIndex{\@gobbletwo} +%^^A\DoNotIndex{\@hangfrom,\@highpenalty} +%^^A\DoNotIndex{\@ifnextchar,\@ifundefined,\@itempenalty} +%^^A\DoNotIndex{\@latex@warning} +%^^A\DoNotIndex{\@M,\@m,\@medpenalty,\@minus,\@mkboth} +%^^A\DoNotIndex{\@mparswitchfalse,\@mparswitchtrue} +%^^A\DoNotIndex{\@ne,\@nil,\@nobreakfalse,\@nobreaktrue,\@nomath} +%^^A\DoNotIndex{\@plus} +%^^A\DoNotIndex{\@Roman,\@roman} +%^^A\DoNotIndex{\@tempa,\@tempb,\@tempc} +%^^A\DoNotIndex{\@tempcnta,\@tempcntb,\@tempcntc} +%^^A\DoNotIndex{\@tempdima,\@tempdimb,\@tempdimc} +%^^A\DoNotIndex{\@tempskipka,\@tempskipkb,\@tempskipkc} +%^^A\DoNotIndex{\@tempswafalse,\@tempswatrue,\@tempswbfalse,\@tempswbtrue} +%^^A\DoNotIndex{\@tocrmarg,\@topnewpage,\@topnum} +%^^A\DoNotIndex{\@twocolumnfalse,\@twocolumntrue,\@twosidefalse,\@twosidetrue} +%^^A\DoNotIndex{\@whiledim,\@whilenum} +%^^A\DoNotIndex{\addcontentsline,\addpenalty,\addtocontents} +%^^A\DoNotIndex{\addtolength,\addvspace,\advance} +%^^A\DoNotIndex{\begin,\begingroup,\bfseries,\box,\bullet} +%^^A\DoNotIndex{\c@figure,\c@page,\c@secnumdepth,\c@table,\c@tocdepth,\cdot} +%^^A\DoNotIndex{\centering,\changes,\cleardoublepage,\clearpage,\cmd} +%^^A\DoNotIndex{\CodelineIndex,\col@number,\cs,\CurrentOption} +%^^A\DoNotIndex{\dblfloatpagefraction,\dbltopfraction,\def,\divide,\DoNotIndex} +%^^A\DoNotIndex{\DeclareOldFontCommand,\DeclareOption,\DisableCrossrefs} +%^^A\DoNotIndex{\else,\em,\empty,\EnableCrossrefs,\end,\end@dblfloat,\end@float} +%^^A\DoNotIndex{\endgroup,\endlist,\endquotation,\endtitlepage,\everypar} +%^^A\DoNotIndex{\ExecuteOptions,\expandafter} +%^^A\DoNotIndex{\fboxrule,\fboxsep,\fi} +%^^A\DoNotIndex{\gdef,\global} +%^^A\DoNotIndex{\hangindent,\hbox,\hfil,\hrule,\hsize,\hskip,\hspace,\hss} +%^^A\DoNotIndex{\if,\if@tempswa,\ifcase,\ifdim,\ifnum,\ifodd,\ifx,\include} +%^^A\DoNotIndex{\input,\InputIfFileExists,\item,\itshape} +%^^A\DoNotIndex{\kern} +%^^A\DoNotIndex{\leavevmode,\leftmark,\leftskip,\let,\lineskip,\list,\long} +%^^A\DoNotIndex{\m@ne,\m@th,\marginpar,\markboth,\markright} +%^^A\DoNotIndex{\mathbf,\mathcal,\mathit,\mathnormal,\mathrm,\mathsf,\mathtt} +%^^A\DoNotIndex{\MessageBreak,\month} +%^^A\DoNotIndex{\newblock,\newcommand,\newcount,\newcounter,\newdimen} +%^^A\DoNotIndex{\newenvironment,\newlength,\newpage,\nobreak,\noindent} +%^^A\DoNotIndex{\normalcolor,\normalfont,\normallineskip,\normalsize} +%^^A\DoNotIndex{\null,\number,\numberline} +%^^A\DoNotIndex{\OldMakeindex,\OnlyDescription,\or,\overfullrule} +%^^A\DoNotIndex{\p@,\PackageError,\PackageInfo,\PackageWarningNoLine} +%^^A\DoNotIndex{\pagenumbering,\pagestyle,\par,\paragraph,\parbox} +%^^A\DoNotIndex{\PassOptionsToPackage,\pcal,\penalty,\protect,\providecommand} +%^^A\DoNotIndex{\PrintIndex,\PrintChanges,\ProcessOptions,\ProvidesClass} +%^^A\DoNotIndex{\raggedbottom,\raggedleft,\raggedright,\refstepcounter,\relax} +%^^A\DoNotIndex{\renewcommand,\RequirePackage,\reset@font,\rightmargin} +%^^A\DoNotIndex{\rightmark,\rightskip,\rmfamily} +%^^A\DoNotIndex{\scshape,\secdef,\setbox,\setcounter,\setlength,\settowidth} +%^^A\DoNotIndex{\sfcode,\sffamily,\skip,\sloppy,\slshape,\space,\string} +%^^A\DoNotIndex{\the,\thispagestyle,\ttfamily,\twocolumn,\typeout} +%^^A\DoNotIndex{\undefined,\usecounter} +%^^A\DoNotIndex{\vfil,\vfill,\vspace} +%^^A\DoNotIndex{\wd} +%^^A\DoNotIndex{\xdef} +%^^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\marginparwidth{140pt} -\setlength\marginparsep{8pt} -\setlength\oddsidemargin{\dimexpr\marginparwidth+\marginparsep-1in\relax} -\setlength\textwidth{% - \dimexpr\paperwidth-1in-\oddsidemargin-2\marginparsep\relax% -} \setlength\topmargin{-1in} \setlength\headheight{0pt} \setlength\headsep{30pt} -\setlength\footskip{1.25\headsep} -\setlength\textheight{\dimexpr\paperheight-2\headsep-\footskip\relax} -\AfterPackage{tudscrfonts}{\AtBeginDocument{\setlength\columnsep{10pt}}} +\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. +% \begin{macrocode} +\RequirePackage{tudscrbase}[\TUD@Version] \RequirePackage{dox}[2010/12/16] -\def\generalname{Allgemeines} +\@ifpackagelater{dox}{2010/12/17}{% + \ClassWarning{\TUD@Class@Name}{% + Package `dox' was updated so some patches\MessageBreak% + are maybe outdated + }% +}{}% +% \end{macrocode} +% \begin{macro}{\m@cro@} +% Nach dem Laden der Pakete werden die Definitionen einiger Makros überprüft. +% \begin{macrocode} +\CheckCommand\m@cro@[2]{% + \endgroup \topsep\MacroTopsep \trivlist + \edef\saved@macroname{\string#2}% + #1 + \let\saved@indexname\saved@macroname + \else + \edef\saved@indexname{\expandafter\@gobble\string#2}% + \fi + \def\makelabel##1{\llap{##1}}% + \if@inlabel + \let\@tempa\@empty \count@\macro@cnt + \loop \ifnum\count@>\z@ + \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m@ne \repeat + \edef\makelabel##1{\llap{\vtop to\baselineskip + {\@tempa\hbox{##1}\vss}}}% + \advance \macro@cnt \@ne + \else \macro@cnt\@ne \fi + \edef\@tempa{\noexpand\item[% + #1% + \noexpand\PrintMacroName + \else + \noexpand\PrintEnvName + \fi + {\string#2}]}% + \@tempa + \global\advance\c@CodelineNo\@ne + #1% + \SpecialMainIndex{#2}\nobreak + \DoNotIndex{#2}% + \else + \SpecialMainEnvIndex{#2}\nobreak + \fi + \global\advance\c@CodelineNo\m@ne + \ignorespaces +} +% \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. +% \begin{macrocode} +\CheckCommand*\@wrglossary[1]{% + \protected@write\@glossaryfile{}% + {\string\glossaryentry{#1}{\thepage}}% + \endgroup + \@esphack% +} +% \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. +% \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% + \else% + \@tempswatrue% + \fi% +% \end{macrocode} +% Für einen allgemeinen Eintrag soll definitiv die Seitenzahl verwendet werden. +% \begin{macrocode} + \ifx\saved@macroname\@empty% + \@tempswafalse% + \fi% + \if@tempswa% + \global\advance\c@CodelineNo\@ne + \protected@write\@glossaryfile{}{% + \string\glossaryentry{#1}{\filesep\number\c@CodelineNo}% + } + \global\advance\c@CodelineNo\m@ne + \else% + \protected@write\@glossaryfile{}{\string\glossaryentry{#1}{\thepage}} + \fi% + \endgroup + \@esphack% +} +% \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. +% \begin{macrocode} +\newcommand*\hypersourcedef[1]{} +\newcommand*\hypersource@def{} +\newcommand*\hypersourceref[1]{#1} +\newcommand*\hypersource@ref[2][]{} +\PassOptionsToPackage{hyperindex=false}{hyperref} +\AfterPackage{hyperref}{% +% \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. +% \begin{macrocode} + \renewcommand*\hypersourcedef[1]{% + \ifstr{#1}{\hypersource@def}{}{% + \Hy@raisedlink{\hyperdef{}{source:#1}{}}% + \xdef\hypersource@def{#1}% + }% + }% +% \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. +% \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% + }% +} +% \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% + \special@index{##1\actualchar{\string\ttfamily\space##1} (#2) + \encapchar main}% + \special@index{#3:\levelchar##1\actualchar{\string\ttfamily\space##1} + \encapchar main}% + \@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]{% + \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% + }% +} +\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% + \index{##1\actualchar{\protect\ttfamily##1} (#2)\encapchar usage}% + \index{#3:\levelchar##1\actualchar{\protect\ttfamily##1} + \encapchar usage}% + \@esphack% + }% +} +\patchcmd{\@doxcreatespecialindex}{\actualchar}{% + \space(#2)\actualchar% +}{}{\tud@patch@wrn{@doxcreatespecialindex}} +\CheckCommand*\@doxcreatespecialmacrolikeindex[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}% + \@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 \@doxcreatespecialmainindex +% \begin{macro}{\doxitem} +% \begin{macro}{\@doxcreateenv} +% \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{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} -% Titelei. +% 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} -\title{% - \texttt{\filename}\thanks{% - Dies ist Version \fileversion\ von Datei \texttt{\filename}.% +\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}% +} +\CheckCommand*\@doxcreateenv[2]{% + \expandafter\def\csname #2\endcsname{% + \@ifnextchar[%] + {\@doxenv{#1}}{\@doxenv{#1}[]}} + \expandafter\let\csname end#2\endcsname\endtrivlist% +} +\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. +% \begin{macrocode} +\newcommand*\saved@idxtype{} +\def\@doxcreatemacrolikeindexname#1#2{% + \expandafter\def\csname Set#1IndexName\endcsname##1{% + \edef\saved@indexname{\expandafter\@gobble##1}% + \edef\saved@idxtype{#2}% + }% +} +\def\@doxcreateindexname#1#2{% + \expandafter\def\csname Set#1IndexName\endcsname##1{% + \let\saved@indexname##1% + \edef\saved@idxtype{#2}% }% } -\author{Falk Hanisch\thanks{\tudscrmail}} -\date{\filedate} % \end{macrocode} -% Befehle, welche nicht im Index auftauchen sollen. +% 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 +% \begin{macrocode} +\CheckCommand\@@doxenv[2]{% + \endgroup% + \topsep\MacroTopsep \trivlist% + \edef\saved@macroname{\string#2}% + \def\makelabel##1{\llap{##1}}% + \if@inlabel% + \let\@tempa\@empty% + \count@\macro@cnt% + \loop\ifnum\count@>\z@% + \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m@ne% + \repeat% + \edef\makelabel##1{\llap{\vtop to\baselineskip{\@tempa\hbox{##1}\vss}}}% + \advance\macro@cnt\@ne% + \else% + \macro@cnt\@ne% + \fi% + \ifdox@noprint% + \item% + \else% + \edef\@tempa{% + \noexpand\item[% + \expandafter\noexpand\csname Print#1Name\endcsname{\saved@macroname}]}% + \@tempa% + \fi% + \ifdox@noindex\else% + \global\advance\c@CodelineNo\@ne% + \@nameuse{SpecialMain#1Index}{#2}\nobreak% + \global\advance\c@CodelineNo\m@ne% + \fi% + \ignorespaces% +} +% \end{macrocode} +% \dots und nun der eigentliche Patch sowie die Basisdefinitionen. % \begin{macrocode} -\DoNotIndex{\",\\,,\if,\@} +\patchcmd{\@@doxenv}{\ignorespaces}{% + \csname Set#1IndexName\endcsname{\saved@macroname}\ignorespaces% +}{}{\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. +% \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}% +} +\CheckCommand*\SpecialMainMacroIndex[1]{% + \SpecialMainIndex{#1}\nobreak% + \DoNotIndex{#1}% +} +\apptocmd{\SpecialMainMacroIndex}{% + \hypersourcedef{\filesep\number\c@CodelineNo}% +}{}{\tud@patch@wrn{SpecialMainMacroIndex}} % \end{macrocode} -% Weitere Eintragstypen mittels Paket~\pkg{dox}. +% \end{macro}^^A \SpecialMainMacroIndex +% \end{macro}^^A \SetEnvIndexName +% \end{macro}^^A \SetMacroIndexName +% Nachdem nun die Anpassungen für die Änderungsliste erfolgt sind, können nun +% die für die Dokumentatiton notwendigen Umgebungen erstellt werden. % \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=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} % \end{macrocode} -% Zusätzliche Auszeichnungsbefehle. +% \begin{macro}{\tud@write@replace} +% \changes{v2.05}{2016/04/21}{neu}^^A +% \begin{macro}{\tud@read@replace} +% \changes{v2.05}{2016/04/21}{neu}^^A +% \begin{macro}{\tud@line@replace} +% \changes{v2.05}{2016/04/21}{neu}^^A +% \begin{macro}{\actualchar} +% \begin{macro}{\quotechar} +% \begin{macro}{\levelchar} +% Damit die erzeugten Dateien für Index und Änderungsliste von \app{texindy} +% verarbeitet werden können, müssen einige Steuerzeichen in der originalen +% \val{.ind}-Datei getauscht werden. Dafür wird diese zeilenweise eingelesen, +% die fraglichen Zeichen ersetzt und in eine weitere Hilfsdatei geschrieben. +% \begin{macrocode} +\ifdefined\tudxdyflag + \newcommand*\tud@write@replace{} + \newwrite\tud@write@replace + \newcommand*\tud@read@replace{} + \newread\tud@read@replace +% \end{macrocode} +% Die Makros für die fraglichen Steuerzeichen werden so angepasst, dass die +% Wahrscheinlichkeit für eine Verwendung dieser Kombination in einem Makro- +% oder Umgebungsnamen sehr gering ist. Anschließend werden die erzeugten +% Hilfsdateien für Index und Änderungsliste für \app{texindy} angepasst. Dabei +% werden diese automatisch erzeugt, falls dies möglich ist. % \begin{macrocode} -\DeclareRobustCommand*{\cls}[1]{\mbox{\textsf{\textbf{#1}}}} -\DeclareRobustCommand*{\pkg}[1]{\mbox{\textsf{\textbf{#1}}}} -\DeclareRobustCommand*{\opt}[1]{\mbox{\texttt{#1}}} -\DeclareRobustCommand*{\val}[1]{\mbox{\texttt{#1}}} -\DeclareRobustCommand*{\pgs}[1]{\mbox{\texttt{#1}}} -\DeclareRobustCommand*{\env}[1]{\mbox{\texttt{#1}}} + \def\actualchar{<&1&>} + \def\quotechar{<&2&>} + \def\levelchar{<&3&>} + \begingroup + \endlinechar=-1\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 + }% % \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% + \fi% + \fi% + }% + \tud@reserved{idx}{ind}% + \tud@reserved{glo}{gls}% + \endgroup +% \end{macrocode} +% Sollte \app{texindy} nicht aktiv sein, werden Index und Änderungsliste mit +% \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}% + \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 +% \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},% + name=ToDo,% + tocentryindent=\z@,% + owner=\@currname,% +]{tdo} +\setuptoc{tdo}{totoc} +\newcommand*\PrintToDos{\ifdefined\tudfinalflag\else\listoftodos\fi} +% \end{macrocode} +% Damit die Liste der ToDo-Notizen bei der Erzeugung der gesamten Dokumentation +% des Quelltextes einamlig sowie vollständig und nicht nach jeder Quelldatei +% einzeln ausgegeben wird, muss der Befehl \cs{@docinclude} angepasst werden. +% \begin{macrocode} +\patchcmd{\@docinclude}{% + \let\@ltxdoc@PrintIndex\PrintIndex + \let\PrintIndex\relax + \let\@ltxdoc@PrintChanges\PrintChanges + \let\PrintChanges\relax +}{% + \let\@ltxdoc@PrintIndex\PrintIndex + \let\PrintIndex\relax + \let\@ltxdoc@PrintChanges\PrintChanges + \let\PrintChanges\relax + \let\@ltxdoc@PrintToDos\PrintToDos + \let\PrintToDos\relax +}{}{\tud@patch@wrn{@docinclude}} +\patchcmd{\@docinclude}{% + \let\PrintIndex\@ltxdoc@PrintIndex + \let\PrintChanges\@ltxdoc@PrintChanges +}{% + \let\PrintIndex\@ltxdoc@PrintIndex + \let\PrintChanges\@ltxdoc@PrintChanges + \let\PrintToDos\@ltxdoc@PrintToDos +}{}{\tud@patch@wrn{@docinclude}} +% \end{macrocode} +% \end{macro}^^A \PrintToDos % \begin{macro}{\ToDo} % \changes{v2.02}{2014/07/25}{neu}^^A % \begin{macro}{\@ToDo} % \changes{v2.02}{2014/07/25}{neu}^^A -% \begin{macro}{\@@ToDo} -% \changes{v2.02}{2014/07/25}{neu}^^A % Die Befehle für die ToDo-Notizen. Um in der gleichen Nomenklatur wie beim % Handbuch bleiben zu können, wird die Randnotizmarke als optionales Argument % hinter dem eigentlichen Text angegeben. % \begin{macrocode} \newcommand*\ToDo[2][]{% - \@ifnextchar[ - {\@ToDo{#2}}{\@ToDo{#2}[]} + \kernel@ifnextchar[{\@ToDo{#2}}{\@ToDo{#2}[]}% } \newcommand*\@ToDo{} -\newcommand*\@@ToDo{}% \def\@ToDo#1[#2]{% \ifdefined\tudfinalflag\else% - \def\@@ToDo{\ifstr{#2}{}{ToDo}{ToDo: #2}}% - \endgraf% - \hfuzz0.8pt% - \leavevmode\marginpar{\raggedleft\fbox{\@@ToDo\strut}}% - \fbox{\parbox{\dimexpr\textwidth-2\fboxsep\relax}{#1\strut}}% - \endgraf% + \begingroup% + \csuse{phantomsection}% + \def\tud@reserved{\ifxblank{#2}{ToDo: ??}{ToDo: #2}}% + \endgraf% + \hfuzz0.8pt% + \leavevmode\marginpar{\raggedleft\fbox{\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 + \endgroup% \fi% -}% +} % \end{macrocode} -% \end{macro}^^A \@@ToDo % \end{macro}^^A \@ToDo % \end{macro}^^A \ToDo -% Optionen bzw. Flag für das automatisierte Erstellen der Quelltextdokumentation -% mit einem Skript ohne ToDo-Befehle. +% Zum Schluss erfolgen einige Anpassungen mit \cs{AtBeginDocument}, um abhängig +% vom Ladezustand einiger Pakete reagieren zu können. % \begin{macrocode} -\DeclareOption{final}{\let\tudfinalflag\relax} -\ProcessOptions\relax +\AtBeginDocument{% % \end{macrocode} -% Und noch etwas Kleinkram für \pkg{hyperref}, \pkg{babel} und \pkg{csquotes}. +% \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. +% \begin{macrocode} + \@ifpackageloaded{etoolbox}{}{% + \providecommand*\newrobustcmd{\DeclareRobustCommand}% + }% +% \end{macrocode} +% \end{macro}^^A \newrobustcmd +% \begin{macro}{\app} +% \begin{macro}{\cls} +% \begin{macro}{\pkg} +% \begin{macro}{\opt} +% \begin{macro}{\val} +% \begin{macro}{\pgs} +% \begin{macro}{\env} +% \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}}} +% \end{macrocode} +% \end{macro}^^A \file +% \end{macro}^^A \env +% \end{macro}^^A \pgs +% \end{macro}^^A \val +% \end{macro}^^A \opt +% \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 +% \begin{macrocode} + \@ifpackageloaded{hyperref}{% + \pdfstringdefDisableCommands{% + \def\TUDScript{TUD-KOMA-Script}% + \let\cls\@firstofone% + \let\pkg\@firstofone% + }% + }{% + \RequirePackage{url}[2013/09/16]% + \providecommand*\hypersetup[1]{}% + \providecommand*\phantomsection{}% + \providecommand*\texorpdfstring[2]{#1}% + }% +% \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 % \begin{macrocode} -\AfterPackage{hyperref}{% - \pdfstringdefDisableCommands{\def\TUDScript{TUD-KOMA-Script}}% -} -\AfterPackage{babel}{% - \AfterPackage*{inputenc}{\RequirePackage{csquotes}[2011/10/22]}% -} -\AtBeginDocument{% - \providecommand*\url[1]{\texttt{#1}}% - \providecommand*\texorpdfstring[2]{#1}% \@ifpackageloaded{babel}{}{% - \ClassWarning{\TUDClassName}{Package `babel' not loaded}% + \ClassWarning{\TUD@Class@Name}{Package `babel' not loaded}% \let\selectlanguage\@gobble% \let\glqq\relax% \let\grqq\relax% }% +% \end{macrocode} +% \end{macro}^^A \grqq +% \end{macro}^^A \glqq +% \end{macro}^^A \selectlanguage +% \begin{macro}{\enquote} +% \dots und \pkg{csquotes}. +% \begin{macrocode} \@ifpackageloaded{csquotes}{}{% - \ClassWarning{\TUDClassName}{Package `csquotes' not loaded}% - \providecommand\enquote[1]{\glqg#1\grqq{}}% + \ClassWarning{\TUD@Class@Name}{Package `csquotes' not loaded}% + \providecommand\enquote[1]{\glqq#1\grqq{}}% }% - \providecommand*\ifdin[2]{#2}% -} % \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. Andernfalls wird das Paket \pkg{lmodern} geladen. +% verbessern. % \begin{macrocode} -\AtBeginDocument{% - \@ifundefined{tud@cdfont}{\def\tud@cdfont{0}}{}% - \ifnum\tud@cdfont>\z@\relax% true/heavy + \@ifpackageloaded{tudscrfonts}{% \RequirePackage{mweights}[2013/07/21]% - \def\mddefault{m}% - \def\mdseries@tt{m}% - \renewcommand*\@pnumwidth{1.7em}% - \else% + \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} + }{% \RequirePackage{lmodern}[2009/10/30]% - \fi% -}% + \providecommand*\ifdin[2]{#2}% + \providecommand*\textuln[1]{\textsf{#1}}% + \providecommand*\texturn[1]{\textuln{#1}}% + \providecommand*\textubn[1]{\textbf{\textuln{#1}}}% + \providecommand*\textuxn[1]{\textubn{#1}}% + \providecommand*\textuls[1]{\textsl{\textuln{#1}}}% + \providecommand*\texturs[1]{\textuls{#1}}% + \providecommand*\textubs[1]{\textbf{\textuls{#1}}}% + \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 |