我有一份乳胶文件。我正在为我的文档使用hyperref,makeidx和glossary包。
每件事都创造得很好;内容表(所有参考文献都很好),词汇表和索引除了在词汇表和索引中打印的页码是正确的,但它们指向从文档开头开始的页码,其中最初的10页是阿拉伯数字,然后是罗马数字从1开始。
e.g。我有10页的初始事项(摘要,声明,目录等)。之后,mainmatter开始,罗马的页码从1开始。所以在这个页面1上,我有一个索引条目“hello”
现在在索引中,它打印“hello 1”,这是正确的,除非当单击1时,它会在文档的开头向右移动,而不是编号为第1页。
非常感谢您的帮助。
谢谢, 奥马尔
答案 0 :(得分:4)
好的,googlefu(*)提供http://www.tex.ac.uk/cgi-bin/texfaq2html?label=pdfpagelabels
在哪里说这是一个已知问题,并建议hyperref
包的两个选项:
plainpages=false
pdfpagelabels
虽然它警告说这些不会在每个情况下起作用(但我相信它会在你的情况下)。该应用程序看起来像:
\usepackage[plainpages=false,pdfpagelabels,pagebackref]{hyperref}
在你的序言中。
失败,http://en.wikibooks.org/wiki/LaTeX/Hyperlinks提供了一些狡猾的技巧,可以在上述失败的地方使用。 (向下滚动到“链接问题”部分。)
希望有所帮助。
(*)结果我发现这个东西是由于拼写错误,并且谷歌要求"hyperef frontmatter
"而不是"hyperref frontmatter
"。有些日子你很幸运。
答案 1 :(得分:2)
我刚才写了一篇blog post,解释了如何简单地为你的页面编号1 ... n ,摆脱罗马数字。这解决了您的问题,并在PDF阅读器中进行合理的页面编号。如果这是你想要的,请将以下代码放在序言中:
\let\oldsetcounter=\setcounter
\renewcommand\setcounter[2]{%
\ifx\not{#1}{page}\oldsetcounter{#1}{#2}\fi}
答案 2 :(得分:1)
好的,这个问题很老,但我遇到了同样的问题,不得不找到解决方案。该解决方案涉及一些tex黑客攻击,并不是通用的,但您应该能够根据您的具体情况进行调整。
问题
索引包使用\hyperpage
宏生成链接,该宏只接受一个参数:它将打印此数字并链接到具有此绝对数字的页面。
临时解决方案
在宏中保存前面的页面数,然后将所有页面锚点移动相同的数字。
在实践中
此解决方案很脆弱,因为如果您的图书样式或hyperref
包的代码发生更改,它将不再起作用。对我来说这仍然是一个有效的解决方案。
我在书籍样式中修改了\frontmatter
宏:
(新增的行是第2行和第3行,请注意我们需要减1,因为计算发生在编号为'1'的新页面上)
\newcommand\mainmatter{\clearemptydoublepage
\count0=\value{page}\advance\count0 by -1
\xdef\pagesfrontmatter{\the\count0}
\@mainmattertrue\pagenumbering{arabic}}
然后是一个棘手的部分。 \hyperpage
嵌入了很多代码,并且可以处理例如'2,4'或'3-5'之类的参数,因此我们需要修改实际输出文本和超链接的结束宏。如果您查看hyperref.sty
,就会发现它名为\HyInd@removespaces
。我们需要重新定义仅针对索引,以便每个链接具有相同的文本但锚点移动了正确的数量(修改后的行包括对\count0
的引用):
{ % open local group
% locally change how hyperpage creates hyperlinks to take
% frontmatter pages into account
\makeatletter
\def\HyInd@removespaces#1 #2\@nil{%
\toks@=\expandafter{\the\toks@#1}%
\ifx\\#2\\%
\edef\x{\the\toks@}%
\ifx\x\@empty
\else
\count0=\the\toks@\advance\count0 by \pagesfrontmatter%
\hyperlink{page.\the\count0}{\the\toks@}%
\fi
\else
\ltx@ReturnAfterFi{%
\HyInd@removespaces#2\@nil
}%
\fi
}
\makeatother
\printindex
} % close local group
答案 3 :(得分:0)
我不确定这是否会起作用,但您是否尝试过添加
\ frontmatter
\ mainmatter
\ backmatter
在适当的地方?
请注意,这仅适用于本书和书本类,而不是文章,信件等。
答案 4 :(得分:0)
这是一个肮脏的伎俩,但它有效
\newcounter{glshyperpage}%
\def\glshyper#1#2{%
\setcounter{glshyperpage}{#2}%
\addtocounter{glshyperpage}{6}%number of front-matter pages
(\hyperlink{#1.\theglshyperpage}{#2})}
答案 5 :(得分:0)
只需将hypertextnames=true
选项放入\usepackage{hyperref}
即可,例如
\usepackage[hypertexnames=true]{hyperref}
进入你的序言。