未知选项无法通过新的 expl3 方法传递

未知选项无法通过新的 expl3 方法传递

最近我切换了我的软件包,使用新\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

相关内容