避免 moderncv 中的 hyperref 警告

避免 moderncv 中的 hyperref 警告

每当我用 编写简历时moderncv, 都会给我四次警告hyperref。它们似乎没有任何严重问题,但它们却让我烦恼。我希望我的文档在编写时没有警告。我怎样才能避免这些警告?(最好不要自行修补moderncv.cls,我宁愿在我的每份简历中添加几行。)

梅威瑟:

\documentclass{moderncv}

\firstname{John}
\familyname{Doe}

\begin{document} 
\maketitle

\cvline{always}{King of the World}

\end{document}

警告:

软件包 hyperref 警告:选项“pdfpagelabels”已关闭
(hyperref) 因为 \thepage 未定义。

软件包 hyperref 警告:选项 `baseurl' 已被使用,
(hyperref) 设置该选项对输入第 6 行没有影响。

软件包 hyperref 警告:选项“pdfpagemode”已被使用,
(hyperref) 设置该选项对输入第 6 行没有影响。

软件包 hyperref 警告:选项‘pdfstartpage’已被使用,
(hyperref) 设置该选项对输入第 6 行没有影响。

更新:

版本 0.19(2012/02/06)moderncv只会产生这些警告,其中后者似乎是新的:

软件包 hyperref 警告:选项“pdfpagelabels”已关闭
(hyperref) 因为 \thepage 未定义。

软件包 hyperref 警告:选项“pdfpagelabels”已被使用,
(hyperref) 设置该选项对输入第 6 行没有影响。

答案1

您可以通过设置以下选项来避免第一个警告\documentclass

\PassOptionsToPackage{pdfpagelabels=false}{hyperref} 

如果不修补 moderncv,就无法避免其他三个问题。moderncv 在 中错误地设置了一些 hyperref 选项\AtBeginDocument

答案2

您可以在加载类之前停用 hyperref 包的所有警告:

\RequirePackage{etoolbox}
\pretocmd\PackageWarning{%
  \edef\pkgname{#1}\edef\hyperrefname{hyperref}%
  \ifx\pkgname\hyperrefname
    \expandafter\gobblethree
  \fi
}{}{\undefined}
\newcommand*{\gobblethree}[3]{}

\documentclass{moderncv}

\firstname{John}
\familyname{Doe}

\begin{document} 
\maketitle

\cvline{always}{King of the World}

\end{document}

尽管如此,moderncv还是做了一些奇怪的事情(例如强制选择pdftex)。

答案3

随着moderncv所有这些警告都消失了。如果您仍然收到它们,请更新您的moderncv

更新日志:

版本 1.1.3(2012 年 8 月 10 日) - 纠正了导致 hyperref 对其“pdfpagelabels”选项发出两个警告的长期问题,正如 P. Leifeld 指出并解决的那样(启动板错误 #1035466)。

最小代码要求似乎也发生了变化,现在您需要声明一个\moderncvstyle\maketitle现在被称为,但这对于 MWE 来说不是必需的(我不记得它是否更早或者我是否将它放在那里以便于查看)。\makecvtitle

\documentclass{moderncv}

\moderncvstyle{casual}

\firstname{John}
\familyname{Doe}

\begin{document} 

%\makecvtitle

\cvline{always}{King of the World}

\end{document}

答案4

(有点晚了,但对某些人可能仍然有帮助......)

使用最新版本(1.0,2012 年 3 月发布)的moderncv来自CTAN删除了除第一个警告之外的所有警告。

由于某种原因,设置pdfpagelabels选项\PassOptionsToPackage对我来说不起作用。我最终决定使用silence包裹要消除hyperref包中的所有警告,请在之前放置以下代码\documentclass

\RequirePackage[]{silence}

\WarningsOff[hyperref]

它并不完美,但我认为它是可以接受的,直到moderncv能够更好地与他人相处融洽......

相关内容