我有一份带有索引的文档,其中一些条目(主要条目)以粗体标记。
我正在使用 makeindex。
我的参赛作品,2,4-5,10,15
现在,如果我在页面中两次出现相同的条目,主要的存在一个索引,该索引被打印两次。
例如,如果My Entry
两次出现在同一个页面中,一次为正常状态,一次为粗体格式:
Bla bla\index{My Entry} bla bla \index{My Entry|textbf}
结果是
我的参赛作品,10,10
该页面被打印两次。
如果没有格式,则不会发生这种情况
我的参赛作品,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.
它会准确地告诉你,它被要求打印同一页下的两个索引条目,使用相同的键,但使用两种不同的格式。隐含的期望是你作者应该处理这个问题。
(顺便说一句,这个问题也曾被问过9 年前这基本上就是那里给出的答案。)
不过,一切希望还没有破灭。该imakeidx
包还支持用作xindy
构建索引的后端,具有更大的配置灵活性(例如参见LaTeX 伴侣了解可以做什么的简短摘要)。如果你只是
\usepackage[xindy]{imakeidx}
相反,的默认设置texindy
似乎可以防止第 1 页的条目重复,但也默认显示非粗体条目而不是粗体条目。这是由于模块中指定的合并规则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
环境变量。