下面的 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)使用 加载hyperref
。AtEndPreamble
这意味着 是hyperref
在完整前言之后调用的。这意味着您的调用太早了,此时hyperref
尚未加载,因此\hypersetup
是未知命令,从而导致您收到错误消息。
随着包\hypersetup
之后的移动命令已经被调用并且是一个有效的命令...\begin{document}
hyperref
\hypersetup