索引条目因标题而重复

索引条目因标题而重复

在文档类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 的解决方法。

相关内容