我知道我可以使用以下方式为我的包声明并执行一个选项
\DeclareOption{myoption}{\typeout{I did it!}}
\ProcessOptions
但现在我想给这个选项一个值:
\DeclareOption{type}{\typeout{You typed: \CurrentOptionValue}}
其用法如下:
\usepackage[type="hello, world!"]{mypackage}
对值字符串的要求是它至少可以包含一些非字母数字字符,如空格、逗号和点(可能还有一些其他字符......)。
答案1
对于将键值输入作为包选项进行处理,有几种选择:
其中,kvoptions
可能是最可靠的方法。声明选项的方式是在处理包选项之前使用\define@key
(或\pgfkeys
在 的情况下)。使用,您会得到一些更好的包装器,例如。pgfopts
kvoptions
\DeclareBoolOption
但是,在输入接近键值处理器之前,LaTeX2e 内核会进行各种处理。因此,我强烈建议考虑使用加载后宏来设置键,而不是加载时设置选项。这很容易实现:
\def\mysetupmacro#1{\setkeys{mypackage}{#1}}
然后只需要一个基本的键值包:可能我会选择kvsetkeys
,它提供了\kvsetkeys
更为强大的版本\setkeys
。
答案2
这键值包裹是你的朋友。