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-misc.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-misc.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/tudscr/tudscr-misc.dtx | 1137 |
1 files changed, 1027 insertions, 110 deletions
diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr-misc.dtx b/Master/texmf-dist/source/latex/tudscr/tudscr-misc.dtx index 711cb08cda5..eac483dd61f 100644 --- a/Master/texmf-dist/source/latex/tudscr/tudscr-misc.dtx +++ b/Master/texmf-dist/source/latex/tudscr/tudscr-misc.dtx @@ -1,4 +1,4 @@ -% \CheckSum{106} +% \CheckSum{907} % \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,15 +51,17 @@ %<*driver> \ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi \ProvidesFile{tudscr-misc.dtx}[% - 2015/06/12 v2.04 TUD-KOMA-Script (miscellaneous)% + 2016/07/20 v2.05 TUD-KOMA-Script (miscellaneous)% ] \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-misc.dtx} @@ -72,65 +74,292 @@ % % \selectlanguage{ngerman} % -% \changes{v2.02}{2014/06/23}{Unterstützung für \pkg{titlepage} entfernt}^^A -% \changes{v2.02}{2014/07/08}{Optionen nutzen \cs{FamilyKeyState}}^^A +% \changes{v2.02}{2014/06/23}{Paket \pkg{titlepage} nicht weiter unterstützt}^^A +% \changes{v2.02}{2014/07/08}{\cs{FamilyKeyState} wird von Optionen genutzt}^^A +% \changes{v2.05}{2015/07/06}{Bugfix für \pkg{multicol}}^^A % -% \section{Verschiedenes für die Hauptklassen} +% \section{Verschiedenes für das \TUDScript-Bundle} % % Alles, wofür sich eine separate Datei nicht lohnt, landet hier. % -% \StopEventually{\PrintIndex\PrintChanges} +% \StopEventually{\PrintIndex\PrintChanges\PrintToDos} % % \iffalse +%<*!xindy> +% \fi +% +% \subsection{Sukkzessives Abarbeiten von Layoutoptionen im Dokument} +% +% Werden mit \cs{TUDoptions} nach \cs{begin\{document\}} mehrere Layoutoptionen +% gleichzeitig angegeben, muss dafür Sorge getragen werden, dass diese in der +% korrekten Reihenfolge abgearbeitet werden. +% +% Das Makro \cs{TUD@SpecialOptionAtDocument} kann innerhalb von \cs{TUD@key} +% verwendet werden, um einen im obligatorischen Argument angegebenen Schalter +% zu aktivieren. Dabei wird über \cs{tud@atdocument@hook} garantiert, dass der +% Befehl \cs{tud@atdocument@process}, welcher für die Abarbeitung der einzelnen +% Makros in der richtigen Reihenfolge verantwortlich ist, lediglich einmal über +% \cs{AtEndOfFamilyOptions} ausgeführt wird. +% \ToDo{% +% Problem bei \cs{TUDoptions} mit \cs{AtEndOfFamilyOptions} beheben +% }[v2.06] +% \ToDo{Überarbeiten: \cs{AtEndOfOuterFamilyOptions}}[v3.22] +% +% \begin{macro}{\TUD@SpecialOptionAtDocument} +% \changes{v2.05}{2016/06/14}{neu}^^A +% \begin{macro}{\tud@atdocument@hook} +% \changes{v2.05}{2016/06/14}{neu}^^A +% \begin{macrocode} +%<*execute&(class&!inherit|package&fonts)> +\newcommand*\TUD@SpecialOptionAtDocument[1]{} +%</execute&(class&!inherit|package&fonts)> +%<*body> +\newcommand*\tud@atdocument@hook{} +\let\tud@atdocument@hook\relax +\AtBeginDocument{% + \renewcommand*\TUD@SpecialOptionAtDocument[1]{% + \ifx\tud@atdocument@hook\relax% + \gdef\tud@atdocument@hook{\global\let\tud@atdocument@hook\relax}% + \AtEndOfFamilyOptions{% + \tud@atdocument@hook% + \tud@atdocument@process% + }% + \fi% + \gappto\tud@atdocument@hook{\global\booltrue{@#1}}% + }% +} +%</body> +% \end{macrocode} +% \end{macro}^^A \tud@atdocument@hook +% \end{macro}^^A \TUD@SpecialOptionAtDocument +% +% \iffalse +%<*body> +% \fi +% +% \begin{macro}{\tud@atdocument@process} +% \changes{v2.05}{2016/06/14}{neu}^^A +% \begin{macro}{\if@tud@font@set} +% \changes{v2.05}{2016/06/14}{neu}^^A +% \begin{macro}{\if@tud@font@math@set} +% \changes{v2.05}{2016/06/14}{neu}^^A +% \begin{macro}{\if@tud@font@skip@set} +% \changes{v2.05}{2016/06/14}{neu}^^A +% \begin{macro}{\if@tud@x@scr@headings@reset} +% \changes{v2.05}{2016/06/14}{neu}^^A +% \begin{macro}{\if@tud@layout@process} +% \changes{v2.05}{2016/06/14}{neu}^^A +% \begin{macro}{\if@tud@cdgeometry@process} +% \changes{v2.05}{2016/06/14}{neu}^^A +% \begin{macro}{\if@tud@cdgeometry@@process} +% \changes{v2.05}{2016/06/14}{neu}^^A +% Das Makro \cs{tud@atdocument@process} wird im Dokument ausgeführt, wenn +% mindestens eine Option gesetzt wurde, welche \cs{TUD@SpecialOptionAtDocument} +% verwendet. Je nachdem, welche Schalter insgesamt aktiviert wurden, werden die +% dazugehörigen Befehle für die Einstellungen von Schriften, Layout und/oder +% Satzspiegel in der richtigen Reihenfolge ausgeführt. +% \begin{macrocode} +\newif\if@tud@font@set +\newif\if@tud@font@math@set +\newif\if@tud@font@skip@set +\newif\if@tud@x@scr@headings@reset +\newif\if@tud@layout@process +\newif\if@tud@cdgeometry@process +\newif\if@tud@cdgeometry@@process +\newcommand*\tud@atdocument@process{% + \if@tud@font@set% + \tud@font@set% + \global\@tud@font@setfalse% + \global\@tud@font@math@setfalse% + \global\@tud@font@skip@setfalse% + \global\@tud@layout@processfalse% + \fi% + \if@tud@font@math@set% + \tud@font@math@set% + \global\@tud@font@math@setfalse% + \fi% + \if@tud@font@skip@set% + \tud@font@skip@set% + \global\@tud@font@skip@setfalse% + \fi% +%<*class> + \if@tud@x@scr@headings@reset% + \tud@x@scr@headings@reset% + \global\@tud@x@scr@headings@resetfalse% + \global\@tud@layout@processfalse% + \fi% + \if@tud@layout@process% + \tud@layout@process% + \global\@tud@layout@processfalse% + \fi% + \if@tud@cdgeometry@process% + \tud@cdgeometry@process% + \global\@tud@cdgeometry@processfalse% + \global\@tud@cdgeometry@@processfalse% + \fi% + \if@tud@cdgeometry@@process% + \tud@cdgeometry@@process% + \global\@tud@cdgeometry@@processfalse% + \fi% +%</class> +} +% \end{macrocode} +% \end{macro}^^A \if@tud@cdgeometry@@process +% \end{macro}^^A \if@tud@cdgeometry@process +% \end{macro}^^A \if@tud@layout@process +% \end{macro}^^A \if@tud@x@scr@headings@reset +% \end{macro}^^A \if@tud@font@skip@set +% \end{macro}^^A \if@tud@font@math@set +% \end{macro}^^A \if@tud@font@set +% \end{macro}^^A \tud@atdocument@process +% +% \iffalse +%</body> %<*class&option> % \fi % -% \subsection{Fußnoten in Überschriften} +% \subsection{Papierformat und Schriftgröße} % -% \begin{option}{footnotes} -% \changes{v2.02}{2014/06/27}{neu}^^A -% \begin{macro}{\if@tud@symbolheadings} -% \changes{v2.02}{2014/06/27}{neu}^^A -% Die \KOMAScript-Option \opt{footnotes} wird um den Schlüssel -% \val{symbolheadings} erweitert, mit welchem eingestellt werden kann, ob in den -% Überschriften Symbole für die Fußnoten anstelle von Zahlen verwendet werden -% sollen. +% Insbesondere für Poster aber auch für alle anderen \TUDScript-Klassen wird +% überprüft, ob nach einer Änderung des Standardpapierformates auch die +% Schriftgröße durch den Anwender angepasst wurde. Diese wird jedoch nicht auf +% Plausibilität geprüft, da der Aufwand hierfür relativ hoch wäre. Vielmehr +% wird davon ausgegangen, dass die explizite Angabe der Schriftgröße bewusst +% und dem Papierformat sowie den verwendeten Textspalten entsprechend erfolgt. +% +% Die nachfolgend definierten Optionen und Befehle orientieren sich dabei stark +% an internen \KOMAScript-Makros. +% \ToDo{% +% Wie mit \opt{layout} von \pkg{geometry} umgehen? Wann Papierformat prüfen? +% Vielleicht mit \cs{KOMAoptionOf\{paper\}} prüfen? Oder ganz raus? +% }[v2.06] +% +% \begin{option}{paper} +% \changes{v2.05}{2015/07/24}{neu}^^A +% \begin{macro}{\if@tud@x@scr@paper@set} +% \changes{v2.05}{2015/07/24}{neu}^^A +% Da die \KOMAScript-Option \opt{paper} eine Menge an Einstellmöglichkeiten +% bietet, müssen die relevanten hier abgefangen werden. % \begin{macrocode} -\newif\if@tud@symbolheadings -\TUD@key{footnotes}{% - \TUD@set@numkey{footnotes}{@tempa}{% - {nosymbolheadings}{0},{numberheadings}{0},% - {symbolheadings}{1}% - }{#1}% - \ifx\FamilyKeyState\FamilyKeyStateProcessed% - \ifcase\@tempa\relax% nosymbolheadings - \@tud@symbolheadingsfalse% - \or% symbolheadings - \@tud@symbolheadingstrue% +\newif\if@tud@x@scr@paper@set +\TUD@key{paper}{% + \tud@lowerstring{\@tempa}{#1}% +% \end{macrocode} +% Sowohl ISO/DIN-Formate\dots +% \begin{macrocode} + \def\@tempb##1##2\@nil{% + \@tempswafalse% + \if ##1a\@tempswatrue% + \else\if ##1b\@tempswatrue% + \else\if ##1c\@tempswatrue% + \else\if ##1d\@tempswatrue% + \fi\fi\fi\fi% + \if@tempswa% + \ifnumber{##2}{}{\@tempswafalse}% \fi% + }% + \expandafter\@tempb\@tempa\@nil% +% \end{macrocode} +% \dots als auch frei gewählte Papierformate werden erkannt. +% \begin{macrocode} + \if@tempswa\else% + \def\@tempb##1:##2:##3\@nil{% + \edef\@tempc{##1}% + \ifx\@tempc\@empty\@tempswafalse\else% + \edef\@tempc{##2}% + \ifx\@tempc\@empty\@tempswafalse\else\@tempswatrue\fi% + \fi% + }% + \expandafter\@tempb\@tempa::\@nil% + \fi% +% \end{macrocode} +% Die Standardpapiergröße spielt allerdings keine Rolle für eine Warnung. +% \begin{macrocode} + \@tud@x@scr@paper@setfalse% + \if@tempswa% + \ifstr{\@tempa}{a4}{}{\@tud@x@scr@paper@settrue}% + \FamilyKeyStateProcessed% + \else% + \FamilyKeyStateUnknownValue% \fi% } % \end{macrocode} -% \end{macro}^^A \if@tud@bookmarks -% \end{option}^^A symbolheadings +% \end{macro}^^A \if@tud@x@scr@paper@set +% \end{option}^^A paper +% \begin{option}{fontsize} +% \changes{v2.05}{2015/07/24}{neu}^^A +% \begin{macro}{\if@tud@fontsize@set} +% \changes{v2.05}{2015/07/24}{neu}^^A +% Bei der Schriftgröße ist das bloße Erkennen und Weiterreichen der Option an +% die Klasse ausreichend. +% \begin{macrocode} +\newif\if@tud@fontsize@set +\TUD@key{fontsize}{% + \@tud@fontsize@settrue% + \PassOptionsToClass{fontsize=#1}{\TUD@Class@KOMA}% + \FamilyKeyStateProcessed% +} +% \end{macrocode} +% \end{macro}^^A \if@tud@fontsize@set +% \end{option}^^A fontsize +% Die Schlüssel sollen lediglich beim Laden der Dokumentklasse die angegebenen +% Optionen abfangen. Wurde das Papierformat jedoch nicht die Schriftgröße +% geändert, wird nun eine Warnung erzeugt. +% \ToDo{% +% Warnung überarbeiten erst zu Dokumentbeginn prüfen, \opt{layout} beachten!% +% }[v2.06] +% \begin{macrocode} +\AtEndOfClass{% + \RelaxFamilyKey{TUD}{paper}% + \RelaxFamilyKey{TUD}{fontsize}% + \ifboolexpr{bool {@tud@x@scr@paper@set} or bool {@landscape}}{% + \if@tud@fontsize@set\else% + \ClassWarningNoLine{\TUD@Class@Name}{% + You've set a paper size, which is different from\MessageBreak% + default (paper=a4, paper=portrait). Therefore you\MessageBreak% + should additionally specify an explicit font size.\MessageBreak% + See the manual for further information.% + }% + \fi% + }{}% +} +% \end{macrocode} % % \iffalse %</class&option> -%<*class&body> +%<*class&execute&!inherit> % \fi % -% \begin{counter}{symbolheadings} -% \changes{v2.02}{2014/06/27}{neu}^^A -% Dieser Zähler wird bei aktivierter Option \opt{footnotes=symbolheadings} für -% die Symboleauswahl von Fußnoten in Überschirften inkrementiert. +% \begin{macro}{\tud@x@scr@paper} +% \changes{v2.05}{2015/07/24}{neu}^^A +% \begin{macro}{\tud@x@scr@@paper} +% \changes{v2.05}{2015/07/24}{neu}^^A +% Um die Änderung des Papierformats auch über die \LaTeX-Standardoptionen wie +% beispielsweise \opt{a5paper} abfangen zu können, müssen auch die äquivalent +% zu \KOMAScript{} ausgewertet werden. % \begin{macrocode} -%<book|report>\newcounter{symbolheadings}[chapter]% -%<article>\newcounter{symbolheadings}% +\newcommand*\tud@x@scr@paper{% + \expandafter\tud@x@scr@@paper\CurrentOption paper\tud@x@scr@@paper% +} +\newcommand*\tud@x@scr@@paper{} +\def\tud@x@scr@@paper #1#2paper#3\tud@x@scr@@paper{% + \@tempswafalse% + \ifstr{#3}{paper}{\ifnumber{#2}{% + \ifstr{#1}{a}{\@tempswatrue}{% + \ifstr{#1}{b}{\@tempswatrue}{% + \ifstr{#1}{c}{\@tempswatrue}{% + \ifstr{#1}{d}{\@tempswatrue}{% + }}}}% + }{}}{}% + \if@tempswa\TUDExecuteOptions{#3=#1#2}\fi% + \PassOptionsToClass{\CurrentOption}{\TUD@Class@KOMA}% +} % \end{macrocode} -% \end{counter}^^A symbolheadings +% \end{macro}^^A \tud@x@scr@@paper +% \end{macro}^^A \tud@x@scr@paper % % \iffalse -%</class&body> +%</class&execute&!inherit> %<*class&option> % \fi % @@ -154,19 +383,17 @@ % \fi % % \begin{macro}{\tudbookmark} -% \begin{macro}{\tud@footnote@unhyper} -% \begin{macro}{\tud@footnote@rehyper} -% \changes{v2.02}{2014/11/13}{entfernt}^^A +% \begin{macro}{\tud@x@hyperref@realfootnotes} % Die Befehle zum Eintragen der Sprungmarken. Im Dokument kann auch der Befehl % \cs{tudbookmark} vom Anwender genutzt werden, um manuell weitere Lesezeichen % zu erzeugen. % % Für die Titelseite werden~-- wie auch durch das Paket \pkg{hyperref}~-- die -% Fußnoten mit dem Befehl \cs{tud@footnote@unhyper} auf den Originalzustand -% zurückgesetzt. +% Fußnoten mit dem Befehl \cs{tud@x@hyperref@realfootnotes} auf den originalen +% Zustand zurückgesetzt. % \begin{macrocode} \newcommand*\tudbookmark[1][]{\@gobbletwo} -\newcommand*\tud@footnote@unhyper{} +\newcommand*\tud@x@hyperref@realfootnotes{} \AfterPackage{hyperref}{% \renewcommand*\tudbookmark[3][]{% \relax% @@ -175,7 +402,7 @@ \ifblank{#1}{\pdfbookmark{#2}{#3}}{\pdfbookmark[#1]{#2}{#3}}% \fi% }% - \renewcommand*\tud@footnote@unhyper{% + \renewcommand*\tud@x@hyperref@realfootnotes{% \let\Hy@saved@footnotemark\@footnotemark% \let\Hy@saved@footnotetext\@footnotetext% \let\@footnotemark\H@@footnotemark% @@ -184,105 +411,795 @@ \pdfstringdefDisableCommands{\let\NoCaseChange\@firstofone}% } % \end{macrocode} -% \end{macro}^^A \tud@footnote@rehyper -% \end{macro}^^A \tud@footnote@unhyper +% \end{macro}^^A \tud@x@hyperref@realfootnotes % \end{macro}^^A \tudbookmark -% \begin{macro}{\maketitle} -% \begin{macro}{\tableofcontents} -% Für den Titel und das Inhaltsverzeichnis werden Outline-Einträge erzeugt. +% \begin{macro}{\tud@x@bookmark@startatroot} +% \changes{v2.05}{2015/08/05}{neu}^^A +% Wird das Paket \pkg{bookmark} geladen, können die erzeugten Outlines gezielt +% auf der obersten Ebene erzeugt werden. % \begin{macrocode} -\pretocmd{\maketitle}{% - \if@tud@bookmarks% - \ifdef{\bookmarksetup}{\bookmarksetup{startatroot}}{}% - \fi% -%<*book|report> - \tudbookmark[0]{\titlepagename}{title}% -%</book|report> -%<*article> - \tudbookmark[1]{\titlepagename}{title}% -%</article> -}{}{\tud@patch@wrn{maketitle}} -\pretocmd{\tableofcontents}{% - \if@tud@bookmarks% - \ifdef{\bookmarksetup}{\bookmarksetup{startatroot}}{}% +\newcommand*\tud@x@bookmark@startatroot{\relax} +\AfterPackage{bookmark}{% + \renewcommand*\tud@x@bookmark@startatroot{% + \if@tud@bookmarks\bookmarksetup{startatroot}\fi% + }% +} +% \end{macrocode} +% \end{macro}^^A \tud@x@bookmark@startatroot +% \begin{environment}{titlepage} +% \changes{v2.05}{2015/08/05}{neu}^^A +% \begin{macro}{\@maketitle} +% \changes{v2.05}{2015/08/05}{neu}^^A +% \begin{macro}{\tud@make@titlehead} +% \changes{v2.05}{2015/08/05}{neu}^^A +% Ist die Option \opt{tudbookmarks} aktiviert, werden für Umschlag- und +% Titelseite PDF"=Lesezeichen bzw. Outline-Einträge erzeugt. +% \begin{macrocode} +%<*book|report|article> +\apptocmd{\titlepage}{% + \tud@x@bookmark@startatroot% + \if@tud@cover% + \tudbookmark[% +%<book|report> 0% +%<article> 1% + ]{\coverpagename}{cover}% + \else% + \tudbookmark[% +%<book|report> 0% +%<article> 1% + ]{\titlepagename}{title}% \fi% -%<*book|report> - \tudbookmark[0]{\contentsname}{toc}% -%</book|report> -%<*article> - \tudbookmark[1]{\contentsname}{toc}% -%</article> -}{}{\tud@patch@wrn{tableofcontents}} +}{}{\tud@patch@wrn{titlepage}} +%</book|report|article> +% \end{macrocode} +% Dies geschieht außerdem auch für die Titelköpfe. +% \begin{macrocode} +\pretocmd{\tud@make@titlehead}{% + \tud@x@bookmark@startatroot% + \tudbookmark[% +%<book|report> 0% +%<article|poster> 1% + ]{\titlename}{title}% +}{}{\tud@patch@wrn{tud@make@titlehead}} +\pretocmd{\@maketitle}{% + \tud@x@bookmark@startatroot% + \tudbookmark[% +%<book|report> 0% +%<article|poster> 1% + ]{\titlename}{title}% +}{}{\tud@patch@wrn{@maketitle}} % \end{macrocode} +% \end{macro}^^A \tud@make@titlehead +% \end{macro}^^A \@maketitle +% \end{environment}^^A titlepage +% \begin{macro}{\tableofcontents} +% \begin{macro}{\listoffigures} +% \begin{macro}{\listoftables} +% Für die Verzeichnisse geschieht dies auch. Für das Inhaltsverzeichnis ist +% hierfür etwas mehr Aufwand notwendig. Für dieses wird im Normalfall keine +% PDF-Outline erzeugt. Deshalb ist hier ein wenig Trickserei notwendig, um zwar +% einen Outline-Eintrag für das Inhaltsverzeichnis zu erzeugen, dieses dabei +% aber nicht in sich selbst einzutragen. +% \begin{macrocode} +\BeforeTOCHead[toc]{% + \tud@x@bookmark@startatroot% + \let\@tempc\relax% + \iftocfeature{toc}{totoc}{}{% + \if@tud@bookmarks% + \setuptoc{toc}{totoc}% + \tud@cmd@store{addtocontents}% + \def\@tempc{% + \unsettoc{toc}{totoc}% + \tud@cmd@restore{addtocontents}% + }% + \let\addtocontents\@gobbletwo% + \fi% + }% +} +\AfterTOCHead[toc]{\@tempc} +\BeforeTOCHead[lof]{\tud@x@bookmark@startatroot} +\BeforeTOCHead[lot]{\tud@x@bookmark@startatroot} +% \end{macrocode} +% \end{macro}^^A \listoftables +% \end{macro}^^A \listoffigures % \end{macro}^^A \tableofcontents -% \end{macro}^^A \maketitle +% +% \subsection{Bugfixing für das Paket \pkg{tocloft}} +% % Das Paket \pkg{tocloft} verursacht allerlei Probleme. Wird es geladen, so % erscheint eine entsprechende Warnung. % \begin{macrocode} \BeforePackage{tocloft}{% - \ClassWarning{\TUDClassName}{% - It is not recommended to use package `tocloft'.\MessageBreak% - Loading the package will certainly lead to problems\MessageBreak% - with table of contents and any list of floats. You\MessageBreak% - should use the appropriate options of KOMA-Script% + \ClassWarningNoLine{\TUD@Class@Name}{% + It is absolutely not recommended to use package\MessageBreak% + `tocloft'. Loading the package will certainly lead\MessageBreak% + to problems with table of contents and any list of\MessageBreak% + floats. You should use the appropriate options of\MessageBreak% + the KOMA-Script classes% }% } % \end{macrocode} % % \iffalse %</class&body> +%<*class&option> +% \fi +% +% \subsection{Fußnoten in Überschriften} +% +% \begin{option}{footnotes} +% \changes{v2.02}{2014/06/27}{neu}^^A +% \begin{macro}{\if@tud@symbolheadings} +% \changes{v2.02}{2014/06/27}{neu}^^A +% Die \KOMAScript-Option \opt{footnotes} wird um den Schlüssel +% \val{symbolheadings} erweitert, mit welchem eingestellt werden kann, ob in den +% Überschriften Symbole für die Fußnoten anstelle von Zahlen verwendet werden +% sollen. +% \ToDo{\opt{footnotes=symbolheadings} komplett überarbeiten}[v2.06] +% \begin{macrocode} +\newif\if@tud@symbolheadings +\TUD@key{footnotes}{% + \TUD@set@numkey{footnotes}{@tempa}{% + {nosymbolheadings}{0},{numberheadings}{0},% + {symbolheadings}{1}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \ifcase\@tempa\relax% nosymbolheadings + \@tud@symbolheadingsfalse% + \or% symbolheadings + \@tud@symbolheadingstrue% + \fi% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \if@tud@symbolheadings +% \end{option}^^A footnotes +% \begin{counter}{symbolheadings} +% \changes{v2.02}{2014/06/27}{neu}^^A +% Dieser Zähler wird bei aktivierter Option \opt{footnotes=symbolheadings} für +% die Symboleauswahl von Fußnoten in Überschirften inkrementiert. +% \begin{macrocode} +\AtEndOfClass{% +%<book|report> \newcounter{symbolheadings}[chapter] +%<article|poster> \newcounter{symbolheadings} +} +% \end{macrocode} +% \end{counter}^^A symbolheadings +% +% \iffalse +%</class&option> +%<*body> +% \fi +% +% \begin{macro}{\tud@x@textcase@uclcnotmath} +% \changes{v2.02}{2014/06/27}{\pkg{textcase}: Ignorieren von Fußnoten im +% Argument des Befehls \cs{MakeTextUppercase}}^^A +% \changes{v2.03}{2015/01/21}{\pkg{textcase}: Ignorieren des Befehls +% \cs{@mkboth} im Argument des Befehls \cs{MakeTextUppercase}}^^A +% \begin{macro}{\@uclcnotmath} +% Damit Fußnoten nicht automatisch in Majuskeln gesetzt werden, wird der +% interne Befehl \cs{@uclcnotmath} aus dem Paket \pkg{textcase} angepasst. +% \begin{macrocode} +\CheckCommand*\@uclcnotmath[4]{% + \begingroup + #1% + \def\({$}\let\)\(% + \def\NoCaseChange##1{\noexpand\NoCaseChange{\noexpand##1}}% + \@nonchangecase\label + \@nonchangecase\ref + \@nonchangecase\ensuremath + \def\cite##1##{\toks@{\noexpand\cite##1}\@citex}% + \def\@citex##1{\NoCaseChange{\the\toks@{##1}}}% + \def\reserved@a##1##2{\let#2\reserved@a}% + \expandafter\reserved@a\@uclclist\reserved@b{\reserved@b\@gobble}% + \protected@edef\reserved@a{% + \endgroup + \noexpand\@skipmath#3#4$\valign$% + }% + \reserved@a% +} +\newcommand*\tud@x@textcase@uclcnotmath{% + \def\footnote##1##{\toks@{\noexpand\footnote##1}\@footnote}% + \def\@footnote##1{\NoCaseChange{\the\toks@{##1}}}% + \def\@mkboth##1##2{\NoCaseChange{\@mkboth{##1}{##2}}}% +} +\patchcmd{\@uclcnotmath}{\@nonchangecase\ensuremath}{% + \@nonchangecase\ensuremath\tud@x@textcase@uclcnotmath% +}{}{\tud@patch@wrn{@uclcnotmath}} +% \end{macrocode} +% \end{macro}^^A \@uclcnotmath +% \end{macro}^^A \tud@x@textcase@uclcnotmath +% +% \iffalse +%</body> %<*execute> % \fi % % \subsection{Durchreichen von Optionen und Standardoptionen} % % Durchreichen aller Klassenoptionen an die \KOMAScript-Klasse bzw. an die -% genutzte \TUDScript-Elternklasse. +% genutzte \TUDScript-Elternklasse. Für Klassen wird vor dem Durchreichen noch +% geprüft, ob ein spezielles Papierformat angegeben wurde. % \begin{macrocode} -%<*class&!inherit> -\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\TUDClassName@KOMA}} -%</class&!inherit> +%<class&!inherit>\DeclareOption*{\tud@x@scr@paper} %<*class&inherit> -\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\TUDClassName@Parent}} +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\TUD@Class@Parent}} %</class&inherit> -%<*package&fonts> -\DeclareOption*{\KOMAoptions{\CurrentOption}} -%</package&fonts> -%<*package&poster> -\DeclareOption*{\TUDoptions{\CurrentOption}} -%</package&poster> +%<package&fonts>\DeclareOption*{\KOMAoptions{\CurrentOption}} +%<package&comp>\DeclareOption*{\TUDoptions{\CurrentOption}} % \end{macrocode} -% Es werden die Standardoptionen ausgeführt. Die Ausführung selbst wird durch -% den Befehl \cs{TUD@noworlater} innerhalb von \cs{TUD@key} auf das Ende der -% \KOMAScript-Klasse verzögert. +% Es werden die Standardoptionen ausgeführt. Für die Klasse \cls{tudscrposter} +% werden die Farben aktiviert. % \begin{macrocode} %<*class&!inherit> -\TUDExecuteOptions{cd=true,cdfont=true,tudbookmarks=true} +\TUDExecuteOptions{% +%<book|report|article> cd=true,relspacing=true,tudbookmarks=true% +%<poster> cd=bicolor,relspacing=true,tudbookmarks=false,cdfont=ultrabold% +} %</class&!inherit> -% \end{macrocode} -% Für das Paket \pkg{tudscrfonts} werden die Schriften aktiviert. -% \begin{macrocode} -%<*package&fonts> -\TUDExecuteOptions{cdfont=true} -%</package&fonts> -%<*package&poster> -\TUDExecuteOptions{cdstyle=bicolor} -%</package&poster> +%<*package&tutorial> +\KOMAoptions{headings=small} +\TUDoptions{cdfoot=true} +\TUDExecuteOptions{ToDo=true} +%</package&tutorial> \TUDProcessOptions\relax % \end{macrocode} % Die korrespindierende \KOMAScript-Klasse bzw. \TUDScript-Elternklasse wird % geladen. % \begin{macrocode} %<*class&!inherit> -\LoadClass{\TUDClassName@KOMA}[2015/04/23] +\LoadClass{\TUD@Class@KOMA}[2015/04/23] %</class&!inherit> %<*class&inherit> -\LoadClass{\TUDClassName@Parent} +\LoadClass{\TUD@Class@Parent} %</class&inherit> % \end{macrocode} % % \iffalse %</execute> +%</!xindy> +%<*xindy> +% \fi +% +% \subsection{Stildateien für \texorpdfstring{\app{texindy}}{texindy}} +% +% Für die Dokumentationsklassen und -pakete wird zur Sortierung \app{texindy} +% verwendet. Da das Programm die die Dateien nicht in einem \val{TEXPATH} nach +% den Stildateien sucht, werden diese zur Laufzeit im Arbeitsverzeichnis +% erstellt. Nachfolgend wird die zu erstellenden \app{texindy}-Stildatei kurz +% beschrieben. +% \begin{macro}{\@hashchar} +% \changes{v2.05}{2016/04/25}{neu}^^A +% Das Hash-Zeichen. +% \begin{macrocode} +%<*doc> +\catcode`\#=12 +\newcommand*\@hashchar{#} +\catcode`\#=6 +%</doc> +% \end{macrocode} +% \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 +% Für die Änderungsliste in \cls{tudscrdoc} wird bei der Beschreibung von +% Einträgen nur dann eine dritte Ebene verwendet, wenn es einem Eintrag mehrere +% Angaben existieren. Sollte nur eine Anmerkung vorhanden sein, wird diese +% direkt in der zweiten Ebene nach dem Eintrag selbst ausgegeben. +% \begin{macrocode} +%<*doc> +\newcommand*\tud@lst@def{% + \newcommand*\tud@lst@values{}% + \newif\if@tud@lst@multi% + \newcommand*\tud@lst@init{% + \let\tud@lst@values\relax% + \@tud@lst@multifalse% + }% + \newcommand*\tud@lst@add[1]{% + \ifx\tud@lst@values\relax\else% + \@tud@lst@multitrue% + \fi% + \listadd\tud@lst@values{##1}% + }% + \newcommand*\tud@lst@process{% + \def\tud@reserved{}% + \if@tud@lst@multi% + \def\tud@reserved{\subsubitem}% + \efill% + \fi% + \forlistloop\tud@reserved{\tud@lst@values}% + }% +} +%</doc> +% \end{macrocode} +% \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 +% \end{macro}^^A \@hashchar +% \begin{macro}{\tud@xdy@create} +% \changes{v2.05}{2016/04/24}{neu}^^A +% \begin{macro}{\tud@write@xdy} +% \changes{v2.05}{2016/04/24}{neu}^^A +% \begin{macro}{\if@tud@xdy@glo} +% \changes{v2.05}{2016/04/25}{neu}^^A +% Dies sind die Hilfsmakros für die Erzeugung der notwendigen Dateien. +% \begin{macrocode} +\begingroup +%<doc>\ifdef{\tudxdyflag}{% +\newcommand*\tud@write@xdy{} +\newwrite\tud@write@xdy +\newif\if@tud@xdy@glo +\newcommand*\tud@xdy@create[2][theindex]{% + \IfFileExists{\@currname-#2.xdy}{}{% + \ifstr{#1}{theglossary}{\@tud@xdy@glotrue}{\@tud@xdy@glofalse}% + \openout\tud@write@xdy=\@currname-#2.xdy\relax% +% \end{macrocode} +% Als erstes wird Standard-\LaTeX-Modul geladen. +% \begin{macrocode} + \write\tud@write@xdy{(require "texindy.xdy")}% +% \end{macrocode} +% +% \subsubsection{Defintion der verwendeten Umgebung} +% +% Für die Klasse \cls{tudscrdoc} sind zwei sehr ähnliche Stildateien notwendig. +% Die beiden unterschieden sich lediglich in der verwendeten Umgebung. +% \begingroup% +% \makeatletter% +% \@bsphack\scan@allowedfalse\@esphack% +% \makeatother% +% \begin{macrocode} +%<*doc> + \write\tud@write@xdy{% + (markup-index^^J% + \space\space:open^^J% + "\string\begin{#1}^^J% + \space\space% + \string\providecommand*\string\lettergroupDefault[1]{\@percentchar^^J% + \@spaces\string\par% + \string\centerline{\string\textbf{\string\textsf{Symbole}}}% + \string\par\@percentchar^^J% + \@spaces\string\nopagebreak\@percentchar^^J% + \space\space}\@percentchar^^J% + \space\space% + \string\providecommand*\string\lettergroup[1]{\@percentchar^^J% + \@spaces\string\par% + \string\centerline{\string\textbf{\string\textsf{\@hashchar1}}}% + \string\par\@percentchar^^J% + \@spaces\string\nopagebreak\@percentchar^^J% + \space\space}\@percentchar^^J% + \space\space\string\makeatletter\@percentchar^^J% + \space\space\string\scan@allowedfalse\@percentchar% + }% +% \end{macrocode} +% Für die Änderungsliste erfolgt die GRuppierung anhand der Versionsnummer. Da +% diese auf der ersten Ebene angegeben ist (\cs{item}) muss das Ganze mit einem +% terminierten Befehl erfolgen. Hierfür wird \cs{@lettergroup} definiert. +% Außerdem werden mit \cs{tud@lst@def} die benötigten Befehle zur selektiven +% Anzeige der Änderungseinträge definiert. +% \begin{macrocode} + \if@tud@xdy@glo% + \write\tud@write@xdy{% + \space\space\string\newcommand*\string\@lettergroup{}\@percentchar^^J% + \space\space% + \string\def\string\@lettergroup\@hashchar1\string\relax% + {\string\lettergroup{\@hashchar1}}\@percentchar^^J% + \space\space\string\tud@lst@def\@percentchar% + }% + \fi% +% \end{macrocode} +% Der Abschluss der Umgebungsdefinition. +% \begin{macrocode} + \write\tud@write@xdy{% + "^^J% + \space\space:close "\string~n\string~n\string\end{#1}\string~n"^^J% + \space\space:hierdepth 3^^J% + )% + }% +%</doc> +% \end{macrocode} +% +% \subsubsection{Defintion und Markup der Seitenzahlen} +% +% Leider lässt sich für Seitenzahlbereiche via \val{:attr} (noch) kein Markup +% für angehängte \enquote{f.} sowie \enquote{ff.} einstellen. Diese würden +% deshalb bei kursiven oder fetten Seitenzahlen trotzdem in normaler Schrift +% erscheinen, weshalb auf die Auszeichnung folgender Seiten verzichtet wird. +% \begin{macrocode} +%^^A \write\tud@write@xdy{(require "ff-ranges.xdy")}% +% \end{macrocode} +% Seitenbereiche werden sofort zusammengefasst, wobei als Trennzeichen ein +% Halbgeviertstrich verwendet wird. Für \cls{tudscrdoc} werden die Seitenzahlen +% beim Einbinden der einzelnen \file{dtx}-Dateien mit einem alphanumerischen +% Präfix versehen, wofür eine eigene \val{location-class} erstellt wird. +% \begin{macrocode} + \write\tud@write@xdy{% + (define-location-class^^J% + \space\space"arabic-page-numbers" ("arabic-numbers")% + \space:min-range-length 1^^J% + )^^J% +%<*doc> + (define-alphabet "AlphaExtended"^^J% + \space(^^J% + \space\space"A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M"^^J% + \space\space"N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z"^^J% + \space\space"a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m"^^J% + \space\space"n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"^^J% + \space\space"?"^^J% + \space)^^J% + )^^J% + (define-location-class^^J% + \space\space"part" ("AlphaExtended" :sep "-" "arabic-numbers")% + \space:min-range-length 1^^J% + )^^J% +%</doc> + (markup-range :sep "--")% + }% +% \end{macrocode} +% +% \subsubsection{Markup des Füllbereichs zwischen Eintrag und Seitenzahlen} +% +% Punkte zwischen Eintrag und Seitenzahl. Das schließende \cs{relax} wird für +% die smarte Definition des Befehls \cs{cleversee} benötigt, welcher nach den +% beiden obligatorischen Argument die nachfolgenden Seitenzahlen sucht und +% dabei durch \cs{relax} begrenzt wird. Für die Klasse \cls{tudscrdoc} wird in +% der Änderungsliste der Hyperlink für die Seitenzahl respektive die Codezeile +% direkt erzeugt. +% \begin{macrocode} +%<*doc> + \if@tud@xdy@glo% + \write\tud@write@xdy{% + (markup-locclass-list% + \space:open "\string\pfill\string\hypersourceref{" :close "}\string\relax"% + )% + }% + \else% +%</doc> + \write\tud@write@xdy{% + (markup-locclass-list% +%<!doc> \space:open "\string\,\string\dotfill\string\,"% +%<doc> \space:open "\string\pfill\space"% + \space:close "\string\relax"% + )% + }% +%<doc> \fi% +% \end{macrocode} +% +% \subsubsection{Ignorieren von bestimmten Anteilen bei der Sortierung} +% +% Alle Argumente in eckigen Klammern werden ignoriert. Dies wird bei einigen +% Indexbefehlen genutzt, um die nicht beachteten RegExp-Regeln auszugleichen, +% siehe den nächsten Absatz. In der Klasse \cls{tudscrdoc} werden außerdem ein +% oder mehrere vorangestellte \val{@}-Zeichen ignoriert. +% \begin{macrocode} + \write\tud@write@xdy{% + (merge-rule "\@backslashchar[(.*)\@backslashchar]" "" :eregexp)% +%<*doc> + ^^J% + (merge-rule% + \space"\string^(@+)([\string^@~n]*)"% + \space"\string\2\string~e\string\1"% + \space:eregexp :again% + )^^J% + (merge-rule% + \space"(.*)(@@@@)([\string^@~n]*)"% + \space"\string\1@@@\string\3\string~e"% + \space:again :eregexp% + )^^J% + (merge-rule% + \space"(.*)(@@@)([\string^@~n]*)"% + \space"\string\1@@\string\3\string~e"% + \space:again :eregexp% + )^^J% + (merge-rule% + \space"(.*)(@@)([\string^@~n]*)"% + \space"\string\1@\string\3\string~e"% + \space:eregexp :again% + )^^J% + (merge-rule% + \space"(.*?)(@)([\string^@~n]*)"% + \space"\string\1\string~b\string\3"% + \space:eregexp :again% + ) +%</doc> + }% +% \end{macrocode} +% Innerhalb ausgewählter Auszeichnungs- und Textbefehle sollten die Befehle +% selbst, nicht jedoch die Argumente verworfen werden. Leider werden die +% manuell erstellten RegExp-Regeln durch \app{texindy} zu spät genutzt +% (\url{http://sourceforge.net/p/xindy/bugs/22/}). +% \begin{macrocode} +%<*!doc> +%^^A \write\tud@write@xdy{% +%^^A (merge-rule "\\hologo\{(.*)\}" "/1" :eregexp)^^J% +%^^A (merge-rule "\\texttt\{(.*)\}" "/1" :eregexp)^^J% +%^^A (merge-rule "\\textsbn\{(.*)\}" "/1" :eregexp)^^J% +%^^A (merge-rule "\\textsbs\{(.*)\}" "/1" :eregexp)^^J% +%^^A }% +%</!doc> +% \end{macrocode} +% +% \subsubsection{Markup der einzelnen Einträge} +% +% Für die Änderungsliste werden Untereinträge bis zur fünften Ebene unterstützt. +% \begin{macrocode} +%<*!doc&class> + \write\tud@write@xdy{% + (markup-indexentry :open "~n \string\subsubsubitem " :depth 3)% + }% +%</!doc&class> +% \end{macrocode} +% Für die Änderungsliste erfolgt die Gruppierung anhand der Versionsnummer. Das +% bedeutet, das das Markup für die eigentliche \val{letter-group} unterdrückt +% und die erste Ebene dafür verwendet wird. +% \begin{macrocode} +%<*doc> + \if@tud@xdy@glo% + \write\tud@write@xdy{% + (markup-letter-group% + \space:open-head "\string~n\space\space\string\@gobble{"% + \space:close-head "}"% + )^^J% +% \end{macrocode} +% Leider gibt es für die Eintragsebenen keine Schlüssel \val{open-head} und +% \val{close-head}, weshalb für die Änderungsliste etwas getrickst werden muss. +% Zwischen Einträgen der ersten Ebene soll äquivalent zu \val{letter-group} +% etwas Abstand eingefügt werden. +% \begin{macrocode} + (markup-indexentry-list% + \space:sep "\string~n\string~n\space\space\string\indexspace\string~n"% + \space:depth 0% + )^^J% +% \end{macrocode} +% Da jeder Eintrag in der Änderungsliste aus mindestens drei Ebenen besteht, +% wird vor der ersten Ebene der Beginn des Markupbefehls gesetzt\dots +% \begin{macrocode} + (markup-indexentry\@spaces\space\space% + :open "\string~n\space\space\string\@lettergroup\space"\space:depth 0% + )^^J% +% \end{macrocode} +% \dots und vor Beginn der zweiten Ebene mit \cs{relax} terminiert. +% \begin{macrocode} + (markup-indexentry-list :open "\string\relax" :depth 1)^^J% +% \end{macrocode} +% Anschließend werden die zweite sowie die dritte Ebene mit \cs{item} und +% \cs{subitem} ausgezeichnet. +% \begin{macrocode} + (markup-indexentry\@spaces\space\space% + :open "\string~n\space\space\string\item\space" :depth 1% + )^^J% + (markup-indexentry-list :open "\string\efill" :depth 2)^^J% + (markup-indexentry\@spaces\space\space% + :open "\string~n\@spaces\string\subitem\space" :depth 2% + )^^J% +% \end{macrocode} +% Im Implemetierungsteil soll eine einzelne Änderungsnotiz für einen Eintrag +% direkt danach ausgegeben werden. Exisitieren für diesen jedoch mehrere +% Anmerkungen, so sollen diese in der nächsten Ebene ausgegeben werden. Da die +% Anzahl aller Anmerkungen zu einem einzelnen Eintrag zu Beginn noch unbekannt +% ist, werden alle dazugehörigen Änderungsnotizen zunächst mit \cs{tud@lst@add} +% in der~-- zuvor mit dem Makro \cs{tud@lst@init} initialisierten~-- Liste +% \cs{tud@lst@values} gesammelt und diese am Ende des jeweiligen Eintrags durch +% \cs{tud@lst@process} ausgewertet. +% \begin{macrocode} + (markup-indexentry-list^^J% + \space\space:open \space"\string\tud@lst@init"^^J% + \space\space:close "\string~n \@spaces\space\string\tud@lst@process"^^J% + \space\space:depth 3^^J% + )^^J% + (markup-indexentry^^J% + \space\space:open \space"\string~n\@spaces\space\string\tud@lst@add{"^^J% + \space\space:close "}"^^J% + \space\space:depth 3^^J% + )% + }% +% \end{macrocode} +% Für den Index aller Eintragstypen ist nur auf zu leere \cs{hbox} zu achten. +% \begin{macrocode} + \else% + \write\tud@write@xdy{% + (markup-indexentry-list :open "\string\efill" :depth 1)% + }% + \fi% +%</doc> +% \end{macrocode} +% +% \subsubsection{Attribute für Einträge} +% +% Es werden die Attribute \emph{declare} mit der Abkürzung \emph{!} sowie +% \emph{important} mit der Abkürzung \emph{?} und \emph{default} definiert, +% welche hierarchisch gleichgestellt sind. +% +% \iffalse +%<*!doc> +% \fi +% +% \begin{macrocode} + \write\tud@write@xdy{% + (define-attributes (("declare" "!" "important" "?" "default")))^^J% +% \end{macrocode} +% Eine Alternative wäre, diese in der Hierarchie zu unterscheiden, allerdings +% war eine Bildung von zufriedenstellenden Seitenbereichen dabei nicht möglich +% und wurde deshalb verworfen. +% \begin{macrocode} +%^^A (markup-attribute-group-list :sep ", ")^^J% +%^^A (define-attributes (("declare" "!") ("important" "?")("default")))^^J% +% \end{macrocode} +% Einträge, die als wichtig oder als Deklaration festgelegt wurden, könnten +% auch für normale Indexeinträge zur Bereichsbildung verwendet werden. +% Allerdings führt dies auch zur Erzeugung redundanter Einträge, falls es sich +% bei den Sondereinträgen bereits um einen Seitenbereich handelt. +% \begin{macrocode} +%^^A (merge-to "declare" "default")^^J% +%^^A (merge-to "!" "default")^^J% +%^^A (merge-to "important" "default")^^J% +%^^A (merge-to "?" "default")^^J% +% \end{macrocode} +% Hier erfolgt die Definition der Auszeichnugen der Attribute. Deklarationen +% werden fett gedruckt, wichtige Einträge erscheinen kursiv. Außerdem wird ein +% entsprechnder Link auf die Seite eingefügt. +% \begin{macrocode} + (markup-locref% + \space:attr "declare"\space\space% + \space:open "\string\textbf{\string\hyperpage{"% + \space:close "}}"% + )^^J% + (markup-locref% + \space:attr "!"\@spaces\@spaces% + \space:open "\string\textbf{\string\hyperpage{"% + \space:close "}}"% + )^^J% + (markup-locref% + \space:attr "important"% + \space:open "\string\textsl{\string\hyperpage{"% + \space:close "}}"% + )^^J% + (markup-locref% + \space:attr "?"\@spaces\@spaces% + \space:open "\string\textsl{\string\hyperpage{"% + \space:close "}}"% + )^^J% + (markup-locref% + \space:attr "default"\space\space% + \space:open "\string\hyperpage{"\@spaces\@spaces% + \space:close "}"% + )% + }% +% \end{macrocode} +% +% \iffalse +%</!doc> +%<*doc> +% \fi +% +% Für \cls{tudscrdoc} erfolgen die Auszeichnungen für den Index im Stile von +% \pkg{doc} mit den Attribute \emph{main} und \emph{usage}. +% \begin{macrocode} + \if@tud@xdy@glo\else% + \write\tud@write@xdy{% + (define-attributes (("main" "usage" "default")))^^J% + (markup-locref :attr "main"% + \space\space:open "\string\main{"\space\space:close "}"% + )^^J% + (markup-locref :attr "usage"% + \space:open "\string\usage{"\space:close "}"% + )% + }% + \fi% +% \end{macrocode} +% +% \iffalse +%</doc> +%<*!doc> +% \fi +% +% \subsubsection{Querverweise im Index} +% +% Mit \val{see}\marg{Eintrag} erzeugte Querverweise im Index prüfen, ob +% außerdem noch Seitenzahlangaben existent sind. +% \begin{macrocode} + \write\tud@write@xdy{% + (markup-crossref-list :class "see"^^J% + \space\space:open "\string\cleversee{" \@spaces:sep "; " :close "}"^^J% + )^^J% + (markup-crossref-list :class "seealso"^^J% + \space\space:open "\string\cleverseealso{" :sep "; " :close "}"^^J% + )% + }% +% \end{macrocode} +% +% \iffalse +%<*class> +% \fi +% +% Um Querverweise ohne Prüfung des Zieleintrags erzeugen zu können, wird der +% Typ \val{seeunverified} definiert. +% \begin{macrocode} + \write\tud@write@xdy{% + (define-crossref-class "seeunverified" :unverified)^^J% + (markup-crossref-list :class "seeunverified"^^J% + \space\space:open "\string\cleversee{" \@spaces:sep "; " :close "}"^^J% + )% + }% +% \end{macrocode} +% Dieser Querverweistyp wird speziell im allgemeinen Index verwendet, um auf +% einen Spezialindex zu verweisen. Dabei dient \val{:unverified} zum +% Unterdrücken von Warnungen durch \app{texindy} aufgrund eines fehlenden +% Ziels für den Querverweis. +% \begin{macrocode} + \write\tud@write@xdy{% + (define-crossref-class "seeidx" :unverified)^^J% + (markup-crossref-list :class "seeidx"^^J% + \space\space:open "\string\seeidx{"\@spaces\@spaces:sep "; "% + \space:close "}{}"^^J% + )% + }% +% \end{macrocode} +% Damit die Makros \cs{cleversee} und \cs{cleverseealso} sowie \cs{seeidx} auf +% nachfolgende Seitenzahlen suchen können, müssen diese vor selbigen im Index +% aufgerufen werden. +% \begin{macrocode} + \write\tud@write@xdy{% + (define-location-class-order^^J% + \space\space(^^J% + \@spaces"see" "seealso" "seeidx" "seeunverified"^^J% + \@spaces"roman-page-numbers" "arabic-page-numbers" "alpha-page-numbers"^^J% + \@spaces"Roman-page-numbers" "Alpha-page-numbers"^^J% + \space\space)^^J% + )% + }% +% \end{macrocode} +% +% \iffalse +%</class> +% \fi +% +% Werden mit \val{see}\marg{Eintrag!Untereintrag} gezielte Querverweise auf +% Untereinträge im Index erstellt, so werden diese nicht standardmäßig mit +% einem Komma sondern mit \enquote{\,\textbar\,} getrennt. +% \begin{macrocode} + \write\tud@write@xdy{% + (markup-crossref-layer-list :class "see"% + \@spaces\space:sep "\string\,\string\textbar\string\,"% + )^^J% + (markup-crossref-layer-list :class "seealso"% + \space:sep "\string\,\string\textbar\string\,"% + )% + }% +% \end{macrocode} +% +% \iffalse +%</!doc> +% \fi +% +% Damit ist die \app{texindy}-Stildatei fertig und kann mit \cs{tud@xdy@create} +% erstellt werden. +% \endgroup +% \begin{macrocode} + \closeout\tud@write@xdy% + }% +} +\tud@xdy@create{ind} +%<doc>\tud@xdy@create[theglossary]{gls} +%<doc>}{} +\endgroup +% \end{macrocode} +% \end{macro}^^A \if@tud@xdy@glo +% \end{macro}^^A \tud@write@xdy +% \end{macro}^^A \tud@xdy@create +% +% \iffalse +%</xindy> % \fi % % \Finale |