在个人风格文件中将包作为选项加载吗?

在个人风格文件中将包作为选项加载吗?

我确信这个问题之前已经回答过很多次了,但我读了这么多才让我更加困惑。无论如何,我正在尝试创建一个小样式文件,其中包含我所有的个人定义和宏,并包括一些选项,决定我是否要加载另一个包。例如,我希望能够编写

\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
    

相关内容