summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/tudscr/tudscr-texindy.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/tudscr/tudscr-texindy.dtx')
-rw-r--r--Master/texmf-dist/source/latex/tudscr/tudscr-texindy.dtx599
1 files changed, 599 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr-texindy.dtx b/Master/texmf-dist/source/latex/tudscr/tudscr-texindy.dtx
new file mode 100644
index 00000000000..07ce4c3ea58
--- /dev/null
+++ b/Master/texmf-dist/source/latex/tudscr/tudscr-texindy.dtx
@@ -0,0 +1,599 @@
+% \CheckSum{491}
+% \iffalse meta-comment
+%
+% 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 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
+% "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 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
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: tudscr-texindy.dtx
+%<*driver>
+\ifx\ProvidesFile\@undefined\def\ProvidesFile#1[#2]{}\fi
+\ProvidesFile{tudscr-texindy.dtx}[%
+ 2017/01/03 v2.05g TUD-Script (texindy style files)%
+]
+\RequirePackage[ngerman=ngerman-x-latest]{hyphsubst}
+\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{bookmark}
+\usepackage[babel]{microtype}
+
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{tudscr-texindy.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>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \section{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 werden die zu erstellenden \app{texindy}-Stildateien
+% kurz beschrieben.
+%
+% \StopEventually{\PrintIndex\PrintChanges\PrintToDos}
+%
+% \begin{macro}{\@hashchar}
+% \changes{v2.05}{2016/04/25}{neu}^^A
+% Das Hash-Zeichen wird bei \cls{tudscrdoc} für die Befehlsdeklarationen in der
+% Stildatei benötigt. Damit dieses beim Erzeugen der Datei nicht als solches
+% interpretiert wird, ist dafür ein separates Makro notwendig.
+% \begin{macrocode}
+%<*doc>
+\catcode`\#=12
+\newcommand*\@hashchar{#}
+\catcode`\#=6
+%</doc>
+% \end{macrocode}
+% \end{macro}^^A \@hashchar
+%
+% \subsection{Defintion der verwendeten Umgebung}
+%
+% \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. Mit
+% \cs{tud@xdy@create} wird angegeben, ob die Stildatei für einen Index oder ein
+% Glossar erzeugt wird, was prinzipiell nur für die Klasse \cls{tudscrdoc}
+% notwendig ist.
+% \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-\LaTeXe-Modul geladen.
+% \begin{macrocode}
+ \write\tud@write@xdy{(require "texindy.xdy")}%
+% \end{macrocode}
+%
+% \subsection{Befehle zur Gruppierung der Indexeinträge}
+%
+% \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 erstellt.
+% \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}
+ \if@tud@xdy@glo%
+ \write\tud@write@xdy{%
+ "^^J%
+ \space\space:close "\string~n\string~n\string\end{#1}\string~n"^^J%
+ \space\space:hierdepth 4^^J%
+ )%
+ }%
+ \else%
+ \write\tud@write@xdy{%
+ "^^J%
+ \space\space:close "\string~n\string~n\string\end{#1}\string~n"^^J%
+ \space\space:hierdepth 3^^J%
+ )%
+ }%
+ \fi%
+%</doc>
+% \end{macrocode}
+%
+% \subsection{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}
+% Bereiche mit mehr als zwei Seitenzahlen werden 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 2^^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"codeline" ("AlphaExtended" :sep "-" "arabic-numbers")%
+ \space:min-range-length 2^^J%
+ )^^J%
+ (define-location-class-order ("arabic-page-numbers" "codeline"))^^J%
+%</doc>
+ (markup-range :sep "--")%
+ }%
+% \end{macrocode}
+%
+% \subsection{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 lässt sich dies
+% momentan nicht umsetzen, da die manuell erstellten RegExp-Regeln durch
+% \hrfn{http://sourceforge.net/p/xindy/bugs/22/}{\app{texindy} nicht korrekt}
+% genutzt werden.
+% \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}
+%
+% \subsection{Markup der einzelnen Einträge}
+%
+% Für die Änderungsliste im Handbuch werden Untereinträge bis zur vierten 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 von \cls{tudscrdoc} erfolgt die Gruppierung anhand der
+% angegebenen 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. Sollte eine weitere Unterebene exisitieren,
+% werden entsprechend die Makros \cs{tud@lst@@init}, \cs{tud@lst@@values} und
+% \cs{tud@lst@@add} sowie \cs{tud@lst@@process} verwendet.
+% \begin{macrocode}
+ (markup-indexentry-list^^J%
+ \space\space:open\space\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\space"\string~n\@spaces\space\space\string\tud@lst@add{"^^J%
+ \space\space:close "}"^^J%
+ \space\space:depth 3^^J%
+ )^^J%
+ (markup-indexentry-list^^J%
+ \space\space:close "\string~n\@spaces\@spaces\string\tud@lst@@process{"^^J%
+ \space\space:open\space\space"}\string\tud@lst@@init"^^J%
+ \space\space:depth 4^^J%
+ )^^J%
+ (markup-indexentry^^J%
+ \space\space:open%
+ \space\space"\string~n\@spaces\@spaces\string\tud@lst@@add{"^^J%
+ \space\space:close "}"^^J%
+ \space\space:depth 4^^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\efil" :depth 1)%
+ }%
+ \fi%
+%</doc>
+% \end{macrocode}
+%
+% \subsection{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}
+ \write\tud@write@xdy{%
+ (markup-locclass-list%
+%<!doc> \space:open "\string\,\string\dotfill\string\,"%
+%<doc> \space:open "\string\pfill\space"%
+ \space:close "\string\relax"%
+ \space:sep ",\space"%
+ )%
+ }%
+% \end{macrocode}
+%
+% \subsection{Attribute für Einträge}
+%
+% Es werden für Handbuch und Tutorials 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}, wobei hier eine
+% Hierarchie verwendet wird. Es werden Einträge mit dem Attribut \emph{usage}
+% vor \emph{main} und \emph{default} aufgeführt.
+% \begin{macrocode}
+ \write\tud@write@xdy{%
+ (markup-attribute-group-list :sep ", ")^^J%
+ (define-attributes (("usage") ("main") ("default")))^^J%
+ (markup-locref :attr "usage"%
+ \space:open "\string\usage{"\space:close "}"%
+ )^^J%
+ (markup-locref :attr "main"%
+ \space\space:open "\string\main{"\space\space:close "}"%
+ )%
+ }%
+% \end{macrocode}
+%
+% \iffalse
+%</doc>
+%<*!doc>
+% \fi
+%
+% \subsection{Querverweise im Index}
+%
+% Im Handbuch prüfen mit \val{see}\marg{Eintrag} erzeugte Querverweise im
+% Index, 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
+% passende 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
+%
+% \subsection{Erzeugen der Stildateien}
+%
+% Damit ist die \app{texindy}-Stildatei fertig und kann mit \cs{tud@xdy@create}
+% erstellt werden.
+% \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
+%
+% \Finale
+%
+\endinput