最近我切换了我的软件包,使用新\ProcessKeyOptions
方法来处理软件包选项。然而,我刚刚发现
\keys_define:nn { projlib-theorem }
{
...
, unknown .code:n = { \PassOptionsToPackage { \CurrentOption } { create-theorem } }
}
\ProcessKeyOptions [ projlib-theorem ]
未知的包选项未传递给包create-theorem
。我不确定这个问题是什么时候发生的,但一个月前我使用l3keys2e
和方法时它似乎工作正常。\ProcessKeysOptions
由于我不熟悉这里的机制,可能有些东西需要更改而\ProcessKeysOptions
我没有更改(也许是\CurrentOption
? 的用法)。我应该如何修改此代码才能使其正常工作?
下面是一个 MWE。如果选项originalref
成功传递给包create-theorem
,则应该看到输出“Option works”。
\documentclass{article}
\usepackage[originalref]{testpackage}
\usepackage{create-theorem}
\begin{document}
\ExplSyntaxOn
\bool_if:NTF \l__crthm_regionalref_bool
{ Option ~ does ~ not ~ work }
{ Option ~ works }
\ExplSyntaxOff
\end{document}
其中testpackage.sty
:
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage
{testpackage}
{2022/07/02} {}
{A package for testing}
\keys_define:nn { testpackage }
{
, unknown .code:n = { \PassOptionsToPackage { \CurrentOption } { create-theorem } }
}
\ProcessKeyOptions [ testpackage ]
\endinput
添加:如果testpackage.sty
是以下情况:
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\RequirePackage{l3keys2e}
\ProvidesExplPackage
{testpackage}
{2022/07/02} {}
{A package for testing}
\keys_define:nn { testpackage }
{
, unknown .code:n = { \PassOptionsToPackage { \CurrentOption } { create-theorem } }
}
\ProcessKeysOptions { testpackage }
\endinput
然后成功传递了未知选项。此外,使用 时\ProcessKeyOptions [ testpackage ]
, 的代码unknown
确实会执行,例如,如果将代码直接更改为unknown .code:n = { \PassOptionsToPackage { originalref } { create-theorem } }
,则输出将变为“Option works”。因此,问题似乎出在\CurrentOption
这里的使用上——也许它的值不会随着 而更新\ProcessKeyOptions
。