我确信这个问题之前已经回答过很多次了,但我读了这么多才让我更加困惑。无论如何,我正在尝试创建一个小样式文件,其中包含我所有的个人定义和宏,并包括一些选项,决定我是否要加载另一个包。例如,我希望能够编写
\usepackage[tikz]{mystuff}
代替
\usepackage{mystuff}
\usepackage{tikz}
但是,我找不到一种方法来将加载包作为一个选项,而不会导致错误。例如,这个:
\DeclareOption{tikz}{
\RequirePackage{tikz}
}
会产生错误。可选地加载另一个包的正确方法是什么?
答案1
软件包不能加载到另一个软件包的选项部分中。有以下几种选择:
可以将包加载推迟到当前包的末尾:
\DeclareOption{tikz}{% \AtEndOfPackage{% \RequirePackage{tikz}% }% }
可以定义一个开关:
\newif\ifmystuff@tikz \DeclareOption{tikz}{% \mystuff@tikztrue } ... \ProcessOptions... ... \ifmystuff@tikz \RequirePackage{tikz} \fi
或者可以定义一个宏:
\let\mystuff@tikz\@empty \DeclareOption{tikz}{% \renewcommand*{\mystuff@tikz}{% \RequirePackage{tikz}% }% } ... \ProcessOptions... ... \mystuff@tikz