makeindex 错误:冲突条目:同一键下同一页面的多个封装

makeindex 错误:冲突条目:同一键下同一页面的多个封装

我有六个相同类型的错误。我该怎么做才能消除它们:

警告(输入 = engverxml.idx,行 = 163;输出 = engverxml.ind,行 = 786):

-- 冲突的条目:同一个键下的同一页面的多个封装。

第 163 行如下所示:

\indexentry{ER|hyperindexformat{\see{{雌激素受体}}}}{xx}

答案1

该警告表示同一页上的同一条目有不同的封装。(封装是封装页码的命令,不带其开头的反斜杠。)以下示例说明了这一点:

\documentclass{article}

\usepackage{makeidx}

\makeindex

\begin{document}

Test.\index{test|textbf}\index{test|textit}

\printindex

\end{document}

.idx文件如下所示:

\indexentry{test|textbf}{1}
\indexentry{test|textit}{1}

这表明makeindex你想要\textbf{1}但你也想要\textit{1}。这会导致索引条目如下所示:

test, \textbf{1}, \textit{1}

这看起来不对,因此makeindex抱怨一下:

## Warning (input = test.idx, line = 2; output = test.ind, line = 3):
   -- Conflicting entries: multiple encaps for the same page under same key.

但是,它仍会继续执行您要求的操作,因此.ind上述示例的文件如下所示:

\begin{theindex}

  \item test, \textbf{1}, \textit{1}

\end{theindex}

如果同一页面上有带封装和不带封装的条目,同样会收到警告:

\documentclass{article}

\usepackage{makeidx}

\makeindex

\begin{document}

Test.\index{test}\index{test|textit}

\printindex

\end{document}

在第一个示例中,最简单的解决方案是将两个\index命令组合成一个带有自定义封装的命令:

\documentclass{article}

\usepackage{makeidx}

\makeindex

\newcommand*{\textbfit}[1]{\textbf{\textit{#1}}}

\begin{document}

Test.\index{test|textbfit}

\printindex

\end{document}

在第二种情况下,只需删除\index没有封装的条目。

如果你执行以下操作,也会发生这种情况:

\index{foo}\index{foo|seealso{bar}}

在这种情况下,只需移动\index{foo|seealso{bar}}到没有索引的其他页面foo

相关内容