我有六个相同类型的错误。我该怎么做才能消除它们:
警告(输入 = 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
。