如何声明一个接受输入值的选项?

如何声明一个接受输入值的选项?

我知道我可以使用以下方式为我的包声明并执行一个选项

\DeclareOption{myoption}{\typeout{I did it!}}
\ProcessOptions

但现在我想给这个选项一个值:

\DeclareOption{type}{\typeout{You typed: \CurrentOptionValue}}

其用法如下:

\usepackage[type="hello, world!"]{mypackage}

对值字符串的要求是它至少可以包含一些非字母数字字符,如空格、逗号和点(可能还有一些其他字符......)。

答案1

对于将键值输入作为包选项进行处理,有几种选择:

  1. xkeyval
  2. kvoptions
  3. pgfopts

其中,kvoptions可能是最可靠的方法。声明选项的方式是在处理包选项之前使用\define@key(或\pgfkeys在 的情况下)。使用,您会得到一些更好的包装器,例如。pgfoptskvoptions\DeclareBoolOption

但是,在输入接近键值处理器之前,LaTeX2e 内核会进行各种处理。因此,我强烈建议考虑使用加载后宏来设置键,而不是加载时设置选项。这很容易实现:

\def\mysetupmacro#1{\setkeys{mypackage}{#1}}

然后只需要一个基本的键值包:可能我会选择kvsetkeys,它提供了\kvsetkeys更为强大的版本\setkeys

答案2

键值包裹是你的朋友。

相关内容