我想将我的序言外包给另一个文件。到目前为止,我正在使用\RequirePackage
。最终看起来像这样:
\RequirePackage{templates}
\begin{document}
...
\end{document}
我的模板文件包含其他所有内容,可以是任意序言。现在我想使用一个\RequirePackage
可以在模板文件中使用的参数(字符串)。通常我会这样做:\RequirePackage[Parameter]
然后将其与 #1 一起使用。这不起作用,我找不到有答案的网站或帖子。你能帮助我吗?
答案1
你问的是基本的包编写。你不能(至少不能)用和\usepackage
引用选项,你必须使用 LaTeX 的选项机制。这里有一个示例供你入门(我将示例包包装在环境中以保持示例的独立性):#1
#2
filecontents
\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
)。