moderncv 中 hyperset 的控制序列未定义

moderncv 中 hyperset 的控制序列未定义

下面的 MWE 导致错误:

Undefined control sequence. \hypersetup

它是从一个月前编译完全没问题的 CV 最小化而来的(带有在“您请求包‘foo’,但该包提供的是‘foo’。”是什么意思?)。我尝试了 MiKTeX 和 TeX Live 的最新设置。我怀疑在此期间更新的某些软件包导致了不兼容,但很难找出是哪个软件包。我希望有人能识别它,这样我就可以恢复到旧版本,或者提出解决方法。

\documentclass{moderncv}

\moderncvstyle{banking}
\moderncvcolor{black}
\name{John}{Doe}

\hypersetup{}

\begin{document}

\makecvtitle

Lorem ipsum

\end{document}

将 documentclass 更改为 article(并将 moderncv 特定行替换为 \usepackage{hyperref})可使其编译成功。如果我包括

\usepackage{hyperref}

我收到一个Option clash for package hyperref.错误,大概是因为moderncv正在加载hyperref

答案1

有一个简单的解决方法:只需像这样移动命令\hypersetup即可:\begin{document}

\documentclass{moderncv}

\moderncvstyle{banking}
\moderncvcolor{black}
\name{John}{Doe}

%\hypersetup{} % <========================================= move it down

\begin{document}
\hypersetup{} % <=======================================================

\makecvtitle

Lorem ipsum

\end{document}

原因是类moderncv(当前版本 2.0)使用 加载hyperrefAtEndPreamble这意味着 是hyperref在完整前言之后调用的。这意味着您的调用太早了,此时hyperref尚未加载,因此\hypersetup是未知命令,从而导致您收到错误消息。

随着包\hypersetup之后的移动命令已经被调用并且是一个有效的命令...\begin{document}hyperref\hypersetup

相关内容