请看下面的例子。
\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
完全相同。RequirePackage
ltclass.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}