いくつかのエントリ(主要なエントリ)が太字でマークされている索引付きの文書があります。
私はmakeindexを使用しています。
私のエントリー、2、4-5、10、15
同じエントリが2回あるページの場合、主要1 つ存在する場合、インデックスは 2 回印刷されます。
たとえば、My Entry
同じページに 2 回あり、1 回は通常形式で、もう 1 回は太字でフォーマットされている場合:
Bla bla\index{My Entry} bla bla \index{My Entry|textbf}
結果は
私のエントリー、10、10
ページは2回印刷されます。
書式設定が存在しない場合は発生しません
私のエントリー、10
何かヒントはありますか?
編集
最小限の例:
\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}
生産する
私のエントリー、1、1
その間
\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}
生産する
私のエントリー、1
1
両方とも同じページにあるので二重にならない
答え1
これは、で使用されるデフォルトのMakeIndexバックエンドでは不可能ですimakeidx
。makeindex
プログラムは実際には検出するこの問題が発生した場合、何も対処していないようです。pdflatex
サンプルtex
ファイルのコンパイルトランスクリプトを見ると、
(/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).
インデックスを作成するときに警告があることを伝えます。トランスクリプトを開くとmakeindex
、
[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.
そして、同じページに同じキーで異なる書式の2つの索引項目を印刷するように要求されたことを正確に伝えます。暗黙の期待は、あなた著者が対処すべきだからです。
(ちなみに、同じ質問が9年前そして、それが基本的にそこに与えられた答えでした。
しかし、希望が失われるわけではありません。このパッケージは、より柔軟な設定が可能なインデックス構築のバックエンドとしてimakeidx
も使用できます(例:xindy
LaTeX コンパニオン何ができるかの簡単な概要については、こちらをご覧ください。
\usepackage[xindy]{imakeidx}
代わりに、のデフォルト設定では、ページ 1 のエントリの重複が防止されるようですが、太字のエントリではなく太字でないエントリが表示されるようにデフォルト設定されます。これは、モジュールtexindy
で指定されたマージ ルールによるもので、latex-loc-fmts.xdy
(define-attributes (("default" "textbf" "textit" "hyperpage")))
行を並べ替えて読むと
(define-attributes (("textbf" "textit" "default" "hyperpage")))
太字は、索引を印刷するときにデフォルトよりも優先されます。私のコンピュータでは、デフォルトの検索パスはxindy
次のように設定されているので、
- ファイルを見つけて
latex-loc-fmts.xdy
ローカルディレクトリにコピーします (define-attributes...
上記の置換と一致するように行を置き換えて編集します。pdflatex
TeXファイルで実行する- 走る
texindy Persone.idx
- 再放送
pdflatex
これで、必要な出力が得られるはずです。検索パスが異なって構成されている場合は、XINDY_SEARCHPATH
環境変数の設定を試してみる必要があるかもしれません。