“您请求包‘foo’,但该包提供的是‘foo’。”是什么意思?

“您请求包‘foo’,但该包提供的是‘foo’。”是什么意思?

我知道这个消息的一般含义(“不要在包名称中添加路径名”),我的问题不是重复的您请求了包“include/foo”,但该包提供了“foo”,其中两个名称不同(路径名不同)。 在我的例子中,包名称实际上是相同的(两种情况下都没有路径名)!

我正在使用 MiKTeX 2.9,并进行了最新更新(我刷新了 FNDB)。使用最新moderncv软件包(版本 2.0),MWE,我得到了以下信息:

\documentclass{moderncv}
\moderncvtheme{classic}
\name{Foo}{Bar}
\begin{document}
\end{document}

我在哪里

You have requested package `moderncvheadi', but the package provides `moderncvheadi'.
You have requested package `moderncvbodyi', but the package provides `moderncvbodyi'.

在这种情况下,什么会触发此警告?我该如何解决?这是错误吗moderncv?官方来源https://github.com/xdanaux/moderncv我觉得不错。

答案1

这是类中的一个错误,看起来像是 github 日志中的最近更改,无法在这里测试,没有 tex,但是由构建的包名称

\expandafter moderncv\romannumeral

它没有做正确的事情\expandafter,所以你可以忽略警告,直到它被修复。

第 315 至 333 行moderncv.cls应改为

% loads a header variant
% usage: \moderncvhead[<optional head option>]{<header variant number>}
\newcommand*{\moderncvhead}[2][]{%
  \begingroup\edef\x{\endgroup
    \noexpand\RequirePackage[#1]{moderncvhead\ifcase#2\or i\or ii\or iii\or iv\or v\fi}%
  }\x 
}

% loads a body variant
% usage: \moderncvbody[<optional body option>]{<body variant number>}
\newcommand*{\moderncvbody}[2][]{%
  \begingroup\edef\x{\endgroup
    \noexpand\RequirePackage[#1]{moderncvbody\ifcase#2\or i\or ii\or iii\or iv\or v\fi}%
  }\x 
}

% loads a footer variant
% usage: \moderncvfoot{<footer variant number>}
\newcommand*{\moderncvfoot}[1]{%
  \begingroup\edef\x{\endgroup
    \noexpand\RequirePackage{moderncvfoot\ifcase#1\or i\or ii\or iii\or iv\or v\fi}%
  }\x
}

但是无法在文档中添加此代码,因为宏已被类本身使用。

答案2

该错误已在 GitHub repo 中修复,但尚未在 CTAN 上修复(截至 2019-04-03):https://www.ctan.org/pkg/moderncv版本:2.0.0 日期:2015-07-28

相关内容