标题中的 % 和非 ASCII 字符

标题中的 % 和非 ASCII 字符

标题上的 % 和一些非 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}

相关内容