Doppelter Index, wenn Formatierung verwendet wird

Doppelter Index, wenn Formatierung verwendet wird

Ich habe ein Dokument mit einem Index, in dem einige Einträge (die wichtigsten) fett markiert sind.

Ich verwende Makeindex.

Mein Eintrag, 2, 4-5,10, 15

Wenn ich nun den gleichen Eintrag zweimal auf der Seite habe, auf der derhauptsächlichWenn einer vorhanden ist, wird der Index zweimal gedruckt.

Wenn es beispielsweise My Entryauf derselben Seite zweimal vorkommt, einmal normal und einmal fett formatiert:

Bla bla\index{My Entry} bla bla \index{My Entry|textbf}

Das Ergebnis ist

Mein Eintrag, 10,10

Die Seite wird zweimal ausgedruckt.

Dies geschieht nicht, wenn die Formatierung nicht vorhanden ist

Mein Eintrag, 10

Irgendein Hinweis?

Bearbeiten

Minimalbeispiel:

\documentclass[a4paper]{book}
\usepackage[]{imakeidx}
\makeindex[name=Persone,title=Persone]
\begin{document}
Bla bla\index[Persone]{My Entry} bla bla
Bla bla\index[Persone]{My Entry|textbf} bla bla
\printindex[Persone]
\end{document}

Produziert

Mein Eintrag, 1,1

Während

\documentclass[a4paper]{book}
\usepackage[]{imakeidx}
\makeindex[name=Persone,title=Persone]
\begin{document}
Bla bla\index[Persone]{My Entry} bla bla
Bla bla\index[Persone]{My Entry} bla bla
\printindex[Persone]
\end{document}

Produziert

Mein Eintrag, 1

ohne das Doppelte 1, da beide auf der gleichen Seite sind

Antwort1

Dies ist mit dem von verwendeten MakeIndex-Backend nicht möglich imakeidx. Das makeindexProgramm tut dies tatsächlicherkennenwenn dies geschieht, aber es scheint nichts dagegen zu tun. Wenn Sie sich das Kompilierungsprotokoll pdflatexIhrer Beispieldatei ansehen tex, werden Sie sehen

(/usr/share/texmf-dist/tex/latex/tools/multicol.sty))
Writing index file Persone.idx
(./testindex.aux) [1{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}]
[2]This is makeindex, version 2.15 [TeX Live 2019] (kpathsea + Thai support).
Scanning input file Persone.idx....done (2 entries accepted, 0 rejected).
Sorting entries....done (2 comparisons).
Generating output file Persone.ind....done (5 lines written, 1 warning).
Output written in Persone.ind.
Transcript written in Persone.ilg.
 (./Persone.ind) [3] (./testindex.aux) )</usr/share/texmf-dist/fonts/type1/p
ublic/amsfonts/cm/cmbx10.pfb></usr/share/texmf-dist/fonts/type1/public/amsfonts
/cm/cmbx12.pfb></usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb>

Output written on testindex.pdf (3 pages, 28492 bytes).

Ich sage Ihnen, dass es eine Warnung beim Erstellen des Index gibt. Und wenn Sie das Transkript öffnen, makeindexsehen Sie

[Tue Dec 03 03:35 PM] ArchDesktop ~/tmp/toDelete $ cat Persone.ilg 
This is makeindex, version 2.15 [TeX Live 2019] (kpathsea + Thai support).
Scanning input file Persone.idx....done (2 entries accepted, 0 rejected).
Sorting entries....done (2 comparisons).
Generating output file Persone.ind....
## Warning (input = Persone.idx, line = 2; output = Persone.ind, line = 3):
   -- Conflicting entries: multiple encaps for the same page under same key.
done (5 lines written, 1 warning).
Output written in Persone.ind.
Transcript written in Persone.ilg.

und es sagt Ihnen genau, dass es aufgefordert wurde, zwei Indexeinträge unter derselben Seite mit demselben Schlüssel, aber mit zwei unterschiedlichen Formatierungen zu drucken. Die implizite Erwartung ist, dassDuwie der Autor damit umgehen sollte.

(Übrigens wurde die gleiche Frage gestelltVor 9 Jahrenund das war im Wesentlichen die dort gegebene Antwort.)


Es ist jedoch nicht alle Hoffnung verloren. Das imakeidxPaket unterstützt auch die Verwendung xindyals Backend zum Erstellen des Index, was eine größere Flexibilität bei der Konfiguration bietet (siehe z. B.Der LaTeX-Begleiterfür eine kurze Zusammenfassung, was getan werden kann). Wenn Sie einfach

\usepackage[xindy]{imakeidx}

stattdessen scheinen die Standardeinstellungen texindydie Duplizierung des Eintrags für Seite 1 zu verhindern, zeigen aber standardmäßig auch den nicht fettgedruckten Eintrag anstelle des fettgedruckten an. Dies liegt an der im Modul angegebenen Zusammenführungsregel latex-loc-fmts.xdy, die lautet:

(define-attributes (("default" "textbf" "textit" "hyperpage")))

Wenn Sie die Zeile so umordnen, dass sie lautet

(define-attributes (("textbf" "textit" "default" "hyperpage")))

dann hat Fettdruck beim Drucken des Indexes eine höhere Priorität als Standard. Auf meinem Computer ist der Standardsuchpfad für xindyso konfiguriert, dass Sie einfach

  1. Suchen und kopieren Sie die latex-loc-fmts.xdyDatei in Ihr lokales Verzeichnis
  2. Bearbeiten Sie es, um die Zeile durch (define-attributes...den oben aufgeführten Ersatz zu ersetzen.
  3. Führen Sie es pdflatexauf Ihrer TeX-Datei aus
  4. Laufentexindy Persone.idx
  5. Wiederholungpdflatex

Damit sollten Sie die gewünschte Ausgabe erhalten. Wenn der Suchpfad anders konfiguriert ist, müssen Sie möglicherweise mit der Einstellung der XINDY_SEARCHPATHUmgebungsvariable experimentieren.

verwandte Informationen