使用 \RequirePackage 两次加载包会导致“选项冲突”

使用 \RequirePackage 两次加载包会导致“选项冲突”

我认为使用相同选项加载两次包不会导致选项冲突,但在以下简单示例中仍然出现冲突:

\documentclass{article}
\RequirePackage[patch]{kvoptions}
\RequirePackage[patch]{kvoptions}
\begin{document}
Hello World!
\end{document}

这是一个 MnWE,我真正想要实现的是创建两个像这样的依赖类:

我的类名.cls

\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{myclass}[2012/05/24 v1.0 My Class]

\RequirePackage[patch]{kvoptions}

\endinput

另一个类.cls

\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{anotherclass}[2012/05/24 v1.0 Another Class]

\RequirePackage[patch]{kvoptions}

% I need to use some features of `kvoptions` here

\LoadClass{myclass}

\endinput

测试.tex

\documentclass{anotherclass}
\begin{document}
Hello World!
\end{document}

版本信息

  • 它适用于LaTeX2e <2005/12/01>(TeXLive 安装于 2009 年)
  • 它不适用于LaTeX2e <2011/06/27>(TeXLive 安装于 2012 年)

答案1

使用

\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{myclass}[2012/05/24 v1.0 My Class]

\PassOptionsToPackage{patch}{kvoptions}
\RequirePackage{kvoptions}

\endinput

和你的例子一样:

\PassOptionsToPackage{patch}{kvoptions}
\documentclass{article}
\RequirePackage{kvoptions}
\RequirePackage{kvoptions}
\begin{document}
Hello World!
\end{document}

答案2

文档kvoptions说,在第 12 页

• 自 2008/10/18 起,v3.0 软件包 kvoptions-patch 可用。必须使用软件包 kvoptions 之前的选项补丁。我认为,作为独立软件包 kvoptions-patch 的解决方案更简洁,并避免了选项冲突。

因此使用

\RequirePackage{kvoptions-patch}
\RequirePackage{kvoptions}

相关内容