LaTeX 编译 acmart 文档报错:hyperref must be loaded before hyperxmp.

在编译一篇从 arXiv 下载的文档时遇到如下错误:

Package hyperxmp Error: hyperref must be loaded before hyperxmp.

根据 GitHub 上这个问题 Load hyperref before hyperxmp ? 的答案得到错误的原因是 hyperxmp 包的作者进行了一些更新,要求 hyperref 包必须在hyperxmp 包之前引入。而 acmart 文档类还未对此更新进行调整,并且其中的 hyperref 是在 hyperxmp 之后调用的。

解决方法就是我们手动修改 acmart.cls 文件,将其中的:

\RequirePackage{hyperxmp}
\let\@footnotemark@nolink\@footnotemark
\let\@footnotetext@nolink\@footnotetext
\RequirePackage[bookmarksnumbered,unicode]{hyperref}

修改为:

\let\@footnotemark@nolink\@footnotemark
\let\@footnotetext@nolink\@footnotetext
\RequirePackage[bookmarksnumbered,unicode]{hyperref}
\RequirePackage{hyperxmp}

也就是说,只要将 \RequirePackage{hyperxmp} 这行命令移动到 \RequirePackage[bookmarksnumbered,unicode]{hyperref} 的下面就行了。

posted @ 2024-05-10 14:33  Undefined443  阅读(616)  评论(0编辑  收藏  举报