标题上的 % 和一些非 ASCII 字符似乎会导致 xelatex 中的 hyperref 出现问题。这是一个最小的工作示例:
\documentclass[]{article}
\usepackage{hyperref}
\begin{document}
\section{\%á}
\end{document}
它通过 pdflatex 运行,但在第二次调用 xelatex 时出现问题。错误消息为:
Runaway argument?
{
! File ended while scanning use of \@@BOOKMARK.
<inserted text>
\par
l.3 \begin{document}
当尝试使用 pandoc 将 CJK markdown 文档转换为 LaTeX/PDF 时会注意到这一点。请参阅pandoc 讨论。
如果这是错误?我们将非常感激您提出解决方法的建议。
答案1
我稍微改变了你的例子只是为了做更多的比较:
\documentclass[]{article}
\usepackage{ifxetex}
\ifxetex\else\usepackage[utf8]{inputenc}\fi
\usepackage{hyperref}
%\usepackage{bookmark}
\begin{document}
\section{\%á}
\section{\%a}
\end{document}
当pdflatex
用于处理时,.out
文件读取
\BOOKMARK [1][-]{section.1}{\045\341}{}% 1
\BOOKMARK [1][-]{section.2}{\045a}{}% 2
然而,使用xelatex
产生
\BOOKMARK [1][-]{section.1}{%á}{}% 1
\BOOKMARK [1][-]{section.2}{\045a}{}% 2
很明显,有些地方出错了。请注意,使用lualatex
会生成以下.out
文件:
\BOOKMARK [1][-]{section.1}{\045á}{}% 1
\BOOKMARK [1][-]{section.2}{\045a}{}% 2
解决方案:call\usepackage[unicode]{hyperref}
或 load bookmark
。我建议采用后者。
\documentclass[]{article}
\usepackage{hyperref}
\usepackage{bookmark}
\begin{document}
\section{\%á}
\section{\%a}
\end{document}