我将其最小化为以下片段:
\documentclass{article}
\usepackage{hyperref}
\begin{document}
\section{\%н}
\end{document}
当我编译它时:
xelatex test.tex
第一次运行编译正常,但第二次运行时出现以下错误:
Runaway argument?
{
! File ended while scanning use of \@@BOOKMARK.
<inserted text>
\par
l.3 \begin{document}
如果我删除hyperref
、 或百分号或西里尔字符,它就可以正常编译。我只在 TeXLive 2012 发行版上观察到这种行为 - 2009 发行版运行正常。
问题是什么?
答案1
通过该设置,文件中写入的注释.out
是
\BOOKMARK [1][-]{section.1}{%н}{}% 1
问题显而易见:“裸体”%
结束了这一切。
您有两种可用的解决方法:
\usepackage[unicode]{hyperref}
这使得以下注释
\BOOKMARK [1][-]{section.1}{\376\377\000\045\004\075}{}% 1
从而避免了这个问题。第二种解决方法是
\usepackage{hyperref}
\usepackage{bookmark}
这看起来更好,因为该bookmark
包可以更好地管理书签。