PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Indexeinträge mit zusätzlichen Querverweisen



marius79
09-09-2010, 13:13
Hallo,

für einige Indexeinträge möchte ich gerne zusätzlich zu den Seitenangaben einen Querverweis hinzufügen. Mit \index{Schlüssel|see{Verweis}} werden die Seitenangaben zu Schlüssel unterdrückt. Auf CTAN habe ich das Paket robustindex (http://www.ctan.org/tex-archive/macros/latex/contrib/robustindex/) gefunden. Das scheint irgendetwas mit hyperref-Verweisen zu tun, und das ist mir nicht ganz geheuer. Daher habe ich versucht, mir einen entsprechenden xindy-Style zu basteln, der nachfolgend mit einem Minimalbeispiel angehängt ist:

% foo.tex
\documentclass{scrbook}
\usepackage{index}
\makeindex
\begin{document}
A\index{A|see also{B}}
B\index{B}
\printindex
\end{document}

;;; fooIndex.xdy
;; vordefinierte Sprachen von texindy
(require "tex/inputenc/latin.xdy")

;; Module
(require "word-order.xdy")
(require "numeric-sort.xdy")
(require "tex.xdy")
(require "latex-loc-fmts.xdy")
(require "latex.xdy")
(require "makeindex.xdy")
(require "german-sty.xdy")

;; Querverweise zusätzlich zu Seitenangaben
(define-crossref-class "see also")
(markup-crossref-list :class "see also"
:open "\emph{siehe auch} "
:sep "; ")
Das Ergebnis sieht nicht schlecht aus, aber die Seitenzahlen des Haupteintrags werden unterdrückt -- wenig verwunderlich, da sich die Definition von "see also" bisher kaum von "see" unterscheidet. Ich würde mir den folgenden Eintrag für "A" wünschen:

A, 1
siehe auch B
Der Querverweis soll also wie ein Untereintrag eingerückt sein.

Kann mir da jemand weiterhelfen?

Vielen Dank
Marius

marius79
10-09-2010, 16:17
Entschuldigt bitte, dass ich das Thema nochmal nach oben schiebe. Nachdem ich mich nun längere Zeit auf xindy.org (http://xindy.org/) rumgetrieben habe, ist mir aufgefallen, dass der Ansatz mit einer crossref-class wohl nicht funktionieren kann. Die scheinen nämlich grundsätzlich nicht mit Seitenangaben kompatibel zu sein, wenn ich die Anmerkung in der Dokumentation (http://xindy.org/doc/manual-3.html) ganz unten richtig verstehe.

Nun habe ich die Idee, ein attribute "seealso" zu definieren. Idealerweise kann ich dann am Anfang des Dokuments, wo ich auch die ganzen Querverweise mit see definiere, etwas der folgenden Form schreiben:

\index{Eintrag!Querverweis|seealso}
Damit, so hoffe ich zumindest, würde dann zu Eintrag ein Untereintrag Querverweis erzeugt, der irgendwie auch noch nach allen anderen Untereinträgen gelistet werden soll.

Hier ein Minimalbeispiel, wieder mit dem xindy-Style:

% foo.tex
\documentclass{scrbook}
\usepackage{index}
\makeindex
\begin{document}
\index{A!B|seealso}
A\index{A}
Ac\index{A!c}
B\index{B}
\printindex
\end{document}

;; vordefinierte Sprachen von texindy
(require "tex/inputenc/latin.xdy")

;; Module
(require "word-order.xdy")
(require "numeric-sort.xdy")
(require "tex.xdy")
(require "latex-loc-fmts.xdy")
(require "latex.xdy")
(require "makeindex.xdy")
(require "german-sty.xdy")

(define-attributes ("seealso"))
(markup-locref :attr "seealso"
:open "\emph{siehe auch} ")
Der relevante Teil des Ergebnisses sieht bei mir folgendermaßen aus:

A, 1
B, siehe auch 1
c, 1
Gibt es hier die Möglichkeit, das "siehe auch" mit dem "B" zu vertauschen und die Seitenangabe zu entfernen? Meine Befürchtung ist, dass es nicht geht, da, wenn ich das richtig verstehe, Attribute nur zu locref-Einträgen vergeben werden und nicht zu crossref. Und außerdem scheint es nur mit einem crossref-Eintrag möglich zu sein, "siehe auch" vor "B" zu setzen und die Seitenangabe zu unterdrücken. Außerdem wäre es schick, wenn der Querverweis in spe am Ende der Untereinträge einsortiert würde. Ich dachte, das ginge mit \index{Eintrag!ZZZZ@Querverweis|seealso}, aber da scheine ich mich geirrt zu haben.

Ich bin in diesen Dingen ziemlich unbewandert. Wenn Ihr seht, dass ich da aus oben genannten Gründen in eine Sackgasse renne, reicht mir ein einfaches "Sackgasse" als Antwort schon aus. :)

Entschuldigt bitte meine Aufdringlichkeit.
Vielen Dank
Marius