使用带参数的 \RequirePackage

使用带参数的 \RequirePackage

我想将我的序言外包给另一个文件。到目前为止,我正在使用\RequirePackage。最终看起来像这样:

\RequirePackage{templates}
\begin{document}
...
\end{document}

我的模板文件包含其他所有内容,可以是任意序言。现在我想使用一个\RequirePackage可以在模板文件中使用的参数(字符串)。通常我会这样做:\RequirePackage[Parameter]然后将其与 #1 一起使用。这不起作用,我找不到有答案的网站或帖子。你能帮助我吗?

答案1

你问的是基本的包编写。你不能(至少不能)用和\usepackage引用选项,你必须使用 LaTeX 的选项机制。这里有一个示例供你入门(我将示例包包装在环境中以保持示例的独立性):#1#2filecontents

\begin{filecontents}{templates.sty}
% Declare the conditional and the option
\newif\ifParameter
\DeclareOption{Parameter}{\Parametertrue}

% Process the options
\ProcessOptions

% Do something with the processed conditional
\ifParameter
  \newcommand\somecommand{With option Parameter}
\else
  \newcommand\somecommand{Without option Parameter}
\fi
\end{filecontents}
\documentclass{article}
\usepackage[Parameter]{templates}
\begin{document}
\somecommand
\end{document}

上面的例子打印With option Parameter


前两行创建了一个条件\ifParameter(默认情况下为假),该\DeclareOption行创建了一个名为的选项Parameter,将条件设置\ifParameter为真(通过使用\Parametertrue):

\newif\ifParameter
\DeclareOption{Parameter}{\Parametertrue}

然后,您使用\ProcessOptions它根据包代码中声明的选项来处理给包的选项,最后使用它\ifParameter .. \else .. \fi有条件地执行一些代码。


语法\DeclareOption是:

\DeclareOption{<option>}{<code>}

其中<option>是选项名称,<code>是当该选项提供给包时要执行的任何代码。此外,您还可以使用

\DeclareOption*{<default code>}

那么<default code>将用于任何未明确声明的选项(在中<default code>,使用的选项存储在中\CurrentOption)。

相关内容