有选项有条件地需要包

有选项有条件地需要包

我想在我的包中声明一个选项,如果提供该选项,则需要另一个包。但是,只需这样做

\DeclareOption{requiresomething}{
    \RequirePackage{somepackage}
}

不起作用,因为您不能将软件包要求与选项部分混合使用。有什么简单的解决方案吗?我做错了什么吗?

答案1

您可以使用条件:

\ProvidesPackage{aachh}

\newif\ifaachh@array
\DeclareOption{array}{\aachh@arraytrue}

\ProcessOptions\relax

\ifaachh@array
  \RequirePackage{array}
\fi

\endinput

或者定义一个宏

\ProvidesPackage{aachh}

\DeclareOption{array}{\let\aachh@array\@empty}

\ProcessOptions\relax

\@ifundefined{aachh@array}{}{%
  \RequirePackage{array}%
}

\endinput

后一种方法占用的内存较少,但现在它并不那么重要。

相关内容