在我的包中,我打算用 expl3 语法来编写,如何通过来访问在文档级别传递给它的选项列表\usepackage[<option list>]{my-l3-pkg}
?
我或多或少知道如何使用l3keys
包提供的函数来定义和设置键。我还不知道哪个变量保存着<option list>
我可以传递给的内容\keys_set:..
。
有没有可以替代 LaTeX2e 函数\DeclareOption
和的函数\ProcessOptions
?
答案1
首先,请记住,我们讨论的是 LaTeX3 语法,基于 LaTeX2e。这意味着 LaTeX2e 惯例在某种程度上适用。特别是,LaTeX2e 会扩展选项并删除空格。因此,您必须对设置的加载时包选项保持谨慎。
现在,由于 LaTeX2e 仍在进行实际处理,因此主要宏仍然存在:\DeclareOption
和\ProcessOptions
。但是,如果您想创建键值选项,最好不要加载支持包l3keys2e
。这使您能够使用由提供的键值系统处理 LaTeX2e 包或类选项expl3
。接下来您需要执行两个步骤:
- 使用以下方式声明你的包的密钥
\keys_define:nn
- 使用以下方法处理包选项
\ProcessKeysOptions
因此你可能会得到类似
\RequirePackage{l3keys2e}
\ProvidesExplPackage{mypkg}{2011/04/14}{0.0}{A demo}
\keys_define:nn { mypkg }
{
option-1 .code:n = some-code-here ,
option-2 .code:n = some-other-code-here
}
\ProcessKeysOptions { mypkg }
...
任何之前声明的键\ProcessKeysOptions
都被视为潜在的包选项(对于其他包选项的键值方法也是如此)。