这是一个奇怪的。我必须做一些有趣的解决方法才能让它运行一点点,但我们还有另一个绊脚石。
我一直在努力创建一个单独的文档,它使用一个大的.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创建hyperref时存在问题。为了在特定页面打开PDF,需要采用以下格式(感谢此板上的其他人指出hyperref包中的#page.xx语法):
\href{FILENAME#page.XX}{Link Text}
wihch意味着当声明myindex时,需要在\ newcommand的输出流中包含哈希标记,可能使用转义的哈希标记#as:
\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无法正确打开。
知道如何强制新命令输出哈希标记以支持这种方式的PDF超链接吗?
答案 0 :(得分:0)
如何将\href
包裹在\protect
?
答案 1 :(得分:0)
您可以交换#{3}}和%:
\catcode`\%=6 \catcode`\#=12
然后使用%来标记参数:
\newcommand{\myindexer}[3] {\index{myindex}{%1 : %2.%3!\href{\doctitle.pdf#page.\thepage}}}
之后,恢复通常的catcodes:
\catcode`\%=12 \catcode`\#=6
这有点笨拙,但即使某些事情干扰了通常的转义机制,它也应该有效,并且允许\href
在\myindexer
使用时被扩展。