我误解了 \RequirePackage 吗?我不明白选项冲突

我误解了 \RequirePackage 吗?我不明白选项冲突

请看下面的例子。

\documentclass{article}

\usepackage{filecontents}
\begin{filecontents}{my.sty}
   \RequirePackage{xcolor}
\end{filecontents}

\RequirePackage{my}
\usepackage[cmyk]{xcolor}

\begin{document}
   Content
\end{document}

我期望这个可以编译,但它报告了选项冲突。我以为只有当我尝试加载带有不同的选项,并且如果包被多次加载也不会发生冲突,有选择的时间。这有错吗?

my我知道我可以通过改变和的顺序来解决这个问题,xcolor但我可以考虑一些我无法影响顺序的情况(例如my由文档类内部加载)。

我发现由于包加载顺序,不带选项的 \RequirePackage 会发生冲突吗?Herbert 给出了拆分包加载的解决方案,但这对我的情况不起作用。我问catoptions 导致选项与 xcolor 发生冲突,可能是重复的,几分钟前……

答案1

内核LaTeX2e定义与中的usepackage完全相同。RequirePackageltclass.dtx

    \if@compatibility\else\let\usepackage\RequirePackage\fi

因此,使用这个包RequirePackage并没有什么区别,你仍然会得到一个错误。如果同一个包请求多次加载时,什么也不会发生,除非请求的包中包含第一次加载时未提供的选项,在这种情况下会产生错误。

答案2

在上述链接问题 Ahmed Musa 引用了有关选项冲突的 LaTeX 错误帮助:

? h
The package 'xcolor' has already been loaded with options:
  [cmyk].
There has now been an attempt to load it with no options. 
Adding the global options:
  'cmyk'
to your \documentclass declaration may fix this.

xcolor如果我设置via的选项,就可以解决我的问题\documentclass

\documentclass[cmyk]{article}
\usepackage{my}
\begin{document}
  Hello World!
\end{document}

相关内容