清理我的项目并连续 10 次编译 tex 文件后:
rm temp.toc temp.pdf temp.out temp.html temp.aux
xelatex temp.tex # executed 10 times!
我仍然会使用 hyperref 获得错误的引用。在目录中,我看到了超链接。目录中的页码是正确的。但引用指向不同的页面。
我无法提供最小的工作示例,因为该问题只发生在长文档中。(为两页的文章制作目录根本没有意义。)根据要求,我可以上传整个文档,但这可能没有必要。
更新:问题仍然存在。我已在此处上传了完整的示例:https://rapidshare.com/files/1197222879/output.zip- 包含所有 tex 文件、aux 文件和生成的最终 pdf 文件。引擎是 xelatex。我已经执行了 10 次编译,但超链接仍然错误。在目录中,当您单击显示“第 25 页”的链接时,您将被定向到第 23 页。换句话说,目录中的页码是正确的,但超链接引用不正确。
更新:这是一个错误。如果我同时使用\usepackage[hungarian]{babel}
和\usepackage{hyperref}
,它们的引用就会出错。如果我删除 hungarian babel,那么引用就会变好(但连字符就会出错,段落看起来很糟糕)
答案1
你的情况的主要问题是,当前版本magyar.ldf
加载了
\usepackage[hungarian]{babel}
与 的交互被破坏了hyperref
。
TeX Live 系统上有一个不同的版本,位于
/usr/local/texlive/2012/texmf-dist/doc/latex/magyar/magyar.ldf
您可以将其复制到工作目录或文件夹中
~/texmf/tex/latex/magyar
(~/Library/texmf/tex/latex/magyar/
使用 Mac OS X 上的 MacTeX)您需要创建。
然后babel
调用
\def\magyarOptions{suggestions=no}
\usepackage[magyar]{babel}
第一行只是为了避免虚假和几乎毫无意义的信息。
这不是官方的版本magyar.ldf
,但它似乎有效。
另一方面,匈牙利语的 Polyglossia 模块似乎可以工作,因此你可以考虑在使用 XeLaTeX 时调用
\usepackage{polyglossia}
\setmainlanguage{magyar}
答案2
百分之九十(或多或少)都属于这种情况(这已经是解决办法):
\cleardoublepage % new page to move the anchor to the right page
\phantomsection % anchor setting
\addcontensline{toc}{section}{\indexname}% bookmark with latest anchor
\printindex
当然,你得根据自己的需要采用它,chapter
而不是section
,用书目代替索引,……
采用目录:
\cleardoublepage
\phantomsection
\addcontentsline{toc}{section}{\contentsname}%
\tableofcontents
或者不将目录添加到目录中,而只添加到书签中:
\cleardoublepage
\pdfbookmark[1]{\contentsname}{toc}% for section level
% \pdfbookmark[0]{\contentsname}{toc}% for chapter level
\tableofcontents
答案3
有一个使用官方的解决方法magyar.ldf
,只需在你的序言中包含以下宏(我从旧的 Debian teTex 邮件列表中获得)。
\makeatletter
\let\Hy@magyar@saved@refstepcounter\refstepcounter
\addto\extrasmagyar{%
\let\H@refstepcounter\refstepcounter
\let\refstepcounter\Hy@magyar@saved@refstepcounter
\expandafter\renewcommand\expandafter*\expandafter\@ssect
\expandafter[\expandafter 5\expandafter]\expandafter{%
\expandafter\def\expandafter\@currentlabelname\expandafter{%
\expandafter #\expandafter 5\expandafter
}%
\@ssect{#1}{#2}{#3}{#4}{#5}%
\phantomsection
}%
\expandafter\Hy@magyar@patch@sect\expandafter{%
\@sect{#1}{#2}{#3}{#4}{#5}{#6}[{#7}]{#8}%
}{#1#2#3#4#5#6[#7]#8}{#2}{#7}%
}
\def\Hy@magyar@patch@sect#1#2#3#4{%
\def\@sect#2{%
\setcounter{section@level}{#3}%
\def\@currentlabelname{#4}%
\ifnum #3>\c@secnumdepth
\Hy@GlobalStepCount\Hy@linkcounter
\xdef\@currentHref{section*.\the\Hy@linkcounter}%
\fi
#1%
\ifnum #3>\c@secnumdepth
\Hy@raisedlink{\hyper@anchorstart{\@currentHref}\hyper@anchorend}%
\fi
}%
}
\makeatother