2
1

Ursprüngliches Problem

In dem folgendem Minimalbeispiel ist der Eintrag für den Index „Drei Seiten“ falsch. Er liest sich an der Stelle wie „Seite 13“, statt „Seite 1–3“. Ausserdem liest sich der Index „Zwei Seiten“ ebenfalls nicht so wie ich es mir wünsche, das Komma suggeriert zwei unabhängige Erwähnungen statt eines zusammenhängenden Textes.

Hier einmal wie es aussieht:

Index D Drei Seiten, 13 E Eine Seite, 1 Z Zwei Seiten, 1, 2 Zweimalig, 1, 2

Nutze ich dagegen makeindex wird mir der Index (fast) so erzeugt wie ich es mir wünsche:

Index Drei Seiten, 1–3 Eine Seite, 1 Zwei Seiten, 1–2 Zweimalig, 1, 2

Was mir bei makeindex fehlt ist die Überschrift des jeweiligen Buchstabens, ausserdem benötige ich im eigentlichen Projekt Unicode-Unterstützung. Da hilft dann makeindex nicht mehr weiter.

MWE:

Open in writeLaTeX
\documentclass{scrartcl}
\usepackage{blindtext}
\usepackage{makeidx}
\makeindex
\begin{document}
\index{Eine Seite|(}\index{Drei Seiten|(}
\blindtext
\index{Eine Seite|)}
\index{Zwei Seiten|(}\index{Zweimalig}
\Blindtext[4]
\index{Zwei Seiten|)}\index{Zweimalig}
\Blindtext[5]
\index{Drei Seiten|)}
\printindex
\end{document}

Kompiliert wird mit

  • xelatex main.tex && xindy -M texindy -C utf8 -L german-duden main.idx && xelatex main.tex bzw.
  • xelatex main.tex && makeindex main.idx && xelatex main.tex

Gesucht wird nach einer Lösung die mir mit xindy die gleiche Auflistung wie mit makeindex erstellt, dabei aber die „Überschriften“ beibehält.

edit, Zusatz mit Teillösung

Auf TSE bin ich auf folgende, teilweise funktionierende Lösung gestoßen:

Ulrike Fischer auf TSE:

It looks as if you must load an ranges module. E.g.

xindy -M texindy -M page-ranges -C utf8 -L german-din test-utf8.idx or xindy -M texindy -M ff-ranges -C utf8 -L german-din test-utf8.idx

(From the latex companion I would have expected the first to be loaded automatically but it doesn't seem to be the case).

Mit Variante 1 erhalte ich „Drei Seiten, 1–3“ (also OK) und „Zwei Seiten, 1, 2“ (also falsch nach meiner Auffassung), Variante 2 liefert mit „Zwei Seiten, 1f“ hier ein richtiges Ergebnis, aber für getrennte Erwähnungen wird auch „1f“ ausgegeben (was dann ja wieder Falsch ist, weil es zusammenhängenden Text suggeriert) und bei 1ff für mehrseitiges geht mir die Information verloren, wie lang der entsprechende Abschnitt nun wirklich ist.

Variante 1 bringt folgendes:

Index D Drei Seiten, 1–3 E Eine Seite, 1 Z Zwei Seiten, 1, 2 Zweimalig, 1, 2

Variante 2:

Index D Drei Seiten, 1ff E Eine Seite, 1 Z Zwei Seiten, 1f Zweimalig, 1f

In beiden Fällen wieder das Problem, dass zwei unabhängige Nennungen gleichbehandelt werden zu einer großen zusammenhängenden Nennung.

Changelog

  • Hinzufügen der Teillösung
  • Leichte Änderung des MWE

gefragt 29 Jul '14, 17:42

NobbZ's gravatar image

NobbZ
302116
Akzeptiert: 80%

bearbeitet 29 Jul '14, 19:53

Ich habe die Frage jetzt auch leicht abgeändert auf TSE gestellt: http://tex.stackexchange.com/questions/193949/xindy-and-indexentries-spanning-multiple-pages#193949

(30 Jul '14, 09:08) NobbZ

Nachdem ich auf der Mailingliste zu xindy und auf TSE diese Frage auch gestellt habe, erhielt ich am Ende folgende Antwort:

This is not possible with xindy.

At the markup phase, information about cause of range building is not available any more. One cannot distinguish explicit and implicit page ranges.

Zu deutsch in etwa:

Das ist nicht möglich mit xindy.

Wenn das Markup erstellt wird, ist der Grund warum eine „Range“ erstellt wurde, nicht mehr verfügbar. Man kann hier also nicht mehr zwischen impliziten und expliziten „Range“s unterscheiden.

Ich habe mich dazu entschieden einen entsprechenden Feature-Request bei xindy zu erstellen und bis zur entsprechenden Umsetzung mit dem gegenwärtigen Verhalten zu leben.

Permanenter link

beantwortet 04 Aug '14, 07:45

NobbZ's gravatar image

NobbZ
302116

Ich bekomme das von Dir beschriebene erste Ergebnis nur, wenn ich beim Aufruf von texindy Option -r mit angebe. Ohne die Option erhalte ich den Bereich für "Drei Seiten" korrekt als "1–3". In der ind-Datei sieht das so aus:

Open in writeLaTeX
\begin{theindex}
  \providecommand*\lettergroupDefault[1]{}
  \providecommand*\lettergroup[1]{%
      \par\textbf{#1}\par
      \nopagebreak
  }

  \lettergroup{D}
  \item Drei Seiten, 1--3

  \indexspace

  \lettergroup{E}
  \item Eine Seite, 1

  \indexspace

  \lettergroup{Z}
  \item Zwei Seiten, 1, 2
  \item Zweimalig, 1, 2

\end{theindex}

Um auch die Bereiche aus nur zwei Seiten zusammenzufassen, kann man :man-range-length entsprechend heruntersetzen (Voreinstellung ist 2):

Open in writeLaTeX
\begin{filecontents*}{twopage-ranges.xdy}
(define-location-class "arabic-page-numbers"
                       ("arabic-numbers") :min-range-length 1)
\end{filecontents*}
\documentclass{scrartcl}
\usepackage{blindtext}
\usepackage{makeidx}
\makeindex
\begin{document}
\index{Eine Seite|(}\index{Drei Seiten|(}
\blindtext
\index{Eine Seite|)}
\index{Zwei Seiten|(}\index{Zweimalig}
\Blindtext[4]
\index{Zwei Seiten|)}\index{Zweimalig}
\Blindtext[5]
\index{Drei Seiten|)}
\printindex
\end{document}

Nach dem pdflatex-, xelatex- oder lualatex-Lauf und dem Aufruf »texindy -M twopage-ranges test.idx« oder auch »texindy -M twopage-ranges -M ranges test.idx« erhält man dann die ind-Datei:

Open in writeLaTeX
\begin{theindex}
  \providecommand*\lettergroupDefault[1]{}
  \providecommand*\lettergroup[1]{%
      \par\textbf{#1}\par
      \nopagebreak
  }

  \lettergroup{D}
  \item Drei Seiten, 1--3

  \indexspace

  \lettergroup{E}
  \item Eine Seite, 1

  \indexspace

  \lettergroup{Z}
  \item Zwei Seiten, 1--2
  \item Zweimalig, 1--2

\end{theindex}

Wie man allerdings sieht, bleibt es dabei, dass implizite und explizite Bereiche gleich behandelt werden. Wie man das ändern kann, weiß ich im Augenblick auch nicht.

Alle Tests wurden mit

xindy release: 2.5.0
xindy script version: 1.18
xindy kernel version: 3.0
CLISP version 2.49 (2010-07-07) (built on tug [130.225.2.178])
   architecture: I686

von TeX Live 2014 unter Linux durchgeführt. Andere Versionen können eventuell durchaus Bugs haben, die die explizite Angabe von -M ranges immer erforderlich machen.

Permanenter link

beantwortet 30 Jul '14, 02:06

Ijon%20Tichy's gravatar image

Ijon Tichy
4.4k618

bearbeitet 30 Jul '14, 02:22

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×12
×6
×4

Frage gestellt: 29 Jul '14, 17:42

Frage wurde angeschaut: 2,335 Mal

Zuletzt aktualisiert: 04 Aug '14, 07:45