Hyperref 错误,索引条目包含引用 | 字符

Hyperref 错误,索引条目包含引用 | 字符

对于此 MWE,请在 Windows 10 上的 TexLive 2020 中使用 xelatex 运行:

\documentclass{article}
\usepackage{makeidx}
\usepackage{hyperref}
\makeindex
\begin{document}
\index{foo} % OK, but without this line, the .idx file is empty
\index{Sibelius!Difference between Sibelius "| First and Sibelius "| Ultimate}
\printindex
\end{document}

.idx文件(如下所示)是错误的。显然某些东西错误地将第二个文件解释"|"字符后跟页码格式化|命令。

\indexentry{foo|hyperpage}{1}
\indexentry{Sibelius!Difference between Sibelius "|hyperindexformat{\ First and Sibelius "}}{1}

makeindex然后给出错误信息

!! Input index error (file = test.idx, line = 2):
   -- Incomplete first argument (premature LFD).

(注:在我看来,一家软件公司决定将一个应用程序的三个版本命名为“Sibelius”、“Sibelius | First”和“Sibelius | Ultimate”,并使用如图所示的竖线字符和空格,这是很愚蠢的,但这就是他们所做的!)

答案1

相当不幸,但另一方面|不一定会打印一条条形图。

\documentclass{article}
\usepackage{imakeidx}
\usepackage{hyperref}

\makeindex
\begin{document}

x % something to make the index entry to be processed

\index{foo} % OK, but without this line, the .idx file is empty
\index{a}\index{b}\index{c}\index{d}
\index{Sibelius!Difference between Sibelius~\textbar~First and Sibelius~\textbar~Ultimate}

\printindex

\end{document}

在此处输入图片描述

相关内容