这是一个奇怪的问题。我不得不做一些有趣的变通方法来让它发挥作用,甚至一点点,但我们还有另一个绊脚石。
我一直在努力创建一个单独的文档,该文档使用一个大的 .ind 文件(使用 makeindex 从连接的小型单个 .idx 文件创建的索引),我的想法是我最终将拥有一个指示 SUB 文档和索引数据出现的页码。
为此,我必须定义一个收集所有索引条目的命令:
\newcommand{\myindexer}[3]
{\index{myindex}{#1 : #2.#3!\href{\doctitle.pdf}}}
结果是 myindex.idx 文件中的索引条目为:
\indexentry{IndexedItemA : 55.iii!\href{Volume 1.pdf}{Volume 1.pdf}}{30}}
\indexentry{IndexedItemB : 23.vi!\href{Volume 3.pdf}{Volume 3.pdf}}{114}}
然而,在尝试创建目标 PDF 的超引用时存在问题。为了在特定页面打开 PDF,需要使用以下格式(感谢此板上的其他人指出 hyperref 包中的#page.xx 语法):
\href{FILENAME#page.XX}{Link Text}
这意味着在声明 myindex 时需要在 \newcommand 的输出流中包含一个哈希标记,可能使用转义的哈希标记 # 为:
\newcommand{\myindexer}[3]
{\index{myindex}{#1 : #2.#3!\href{\doctitle.pdf\#page.\thepage}}}
或者根据我在某处使用双哈希标记找到的一些片段:
\newcommand{\myindexer}[3]
{\index{myindex}{#1 : #2.#3!\href{\doctitle.pdf##page.\thepage}}}
前者在为被索引的多个文档编译乳胶源期间导致以下错误:
! Illegal parameter number in definition of \@gtempa.
<to be read again>
\thepage
l.31 \myindex{IndexedItemA}{55}{iii}
而后者会导致生成的 myindex.idx 文件中出现不需要的反斜杠,如下所示:
\indexentry{IndexedItemA : 55.iii!\href {Volume 1.pdf\#page.33}{Volume 1}}{33}
这会导致目标 PDF 无法正确打开。
知道如何强制 newcommand 以这种方式输出哈希标记以支持 PDF 的超链接吗?