在文档类book
和包中caption
,使用创建索引makeidx
。正文和脚注的索引条目正确排序;但标题的索引条目会创建自己的条目。
例如:对于标签\index{New York!Custom House!\textit{Cartouche}}
,文本和脚注正确排序;但在标题中使用时,会在第三级创建新条目,并且也是不按字母顺序排列的。注意:顶层和第一个子项是正确的;只有第二个子项是重复的。
如何获取同一条目下的标题索引条目?
答案1
问题在于,
\index{New York!Custom House!\textit{Cartouche}}
在文件中写入.idx
如下行
\indexentry{New York!Custom House!\textit{Cartouche}}{1}
\caption
而在意志论证中同样如此
\indexentry{New York!Custom House!\textit {Cartouche}}{3}
(您的文档的数字会有所不同)。这是由于 LaTeX 处理标题文本的方式所致。您会看到两行不同,它们实际上是非常与 MakeIndex 不同。
编写索引注释的方式也存在问题:格式化指令必然会混淆 MakeIndex 的整理过程。因此使用
\index{New York!Custom House!Cartouche@\textit{Cartouche}}
在普通文本中,对于标题,写类似
\begin{figure}
...
\caption{A caption telling about \textit{Cartouche}%
\index{New York!Custom House!Cartouche@\string\textit{Cartouche}}}
\end{figure}
答案2
作为替代机制
我原本要发布的 egreg 解决方案的替代方案
\newcommand\hmm[1]{#1}
然后你可以使用
8\hmm{\index{....}}
您可以重新定义\index
为始终执行此操作,但这始终会阻止\index
激活逐字性质,因此您必须更加小心在参数中放入的内容,但它确实在所有情况下都一致起作用。
答案3
使用xindy
而不是makeindex
作为索引处理器也可以解决问题,而无需使用@David Carlisle 和@egreg 的解决方法。