% \CheckSum{491}
% \iffalse meta-comment
%
%  TUD-Script -- Corporate Design of Technische Universität Dresden
% ----------------------------------------------------------------------------
%
%  Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2019
%
% ----------------------------------------------------------------------------
%
%  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
%<*dtx>
% \fi
%
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\ProvidesFile{tudscr-texindy.dtx}[2019/06/28 v2.06 TUD-Script\space%
  (texindy style files)%
]
%
% \iffalse
\documentclass[english,ngerman,xindy]{tudscrdoc}
\ifpdftex{
  \usepackage[T1]{fontenc}
  \usepackage[ngerman=ngerman-x-latest]{hyphsubst}
}{
  \usepackage{fontspec}
}
\usepackage{babel}
\usepackage{tudscrfonts}
\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}
%</dtx>
% \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 |TEXPATH| nach den
% Stildateien sucht, werden diese zur Laufzeit im Arbeitsverzeichnis erstellt.
% Nachfolgend werden die zu erstellenden \app{texindy}-Stildateien 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 nötigen Dateien. Mit dem
% \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 |: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 |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"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 |@|"~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 
% |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 |open-head| und
% |close-head|, weshalb für die Änderungsliste etwas getrickst werden muss. 
% Zwischen Einträgen der ersten Ebene soll äquivalent zu |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 \verb=|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 |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 |: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 \verb=|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
