判断 .meta:n l3key 已设置的最佳方式

判断 .meta:n l3key 已设置的最佳方式

.meta:n判断l3key 设置为何的最佳方法是什么?

例如,在下面的 MWE 中,即使和随后被设置为,我怎样才能知道keyc被设置为?truekeyakeybfalse

我能想到的最好方法是包含一个未记录的私钥来保存 的值keyc,就像我对 所做的那样keyd。这是我最好的选择,还是 l3keys 有一些我还不知道的巧妙功能?

如果它有助于目标/用例,那么keyc设置时间是:

  • 一些键的默认值应该改变,但它们应该能够被覆盖
  • 有些键应该发生冲突,并且不能设置
  • 一些包内部代码的行为应该有所不同,不会受到其他键的影响
\documentclass{article}
\ExplSyntaxOn
\keys_define:nn { dcp }
  {
    , keya  .bool_set:N = \l_dcp_keya_bool
    , keyb  .bool_set:N = \l_dcp_keyb_bool
    , keyc  .meta:n     = { keya = #1, keyb = #1 }
    , _keyd .bool_set:N = \l__dcp_keyd_bool
    , keyd  .meta:n     = { _keyd = #1, keya = #1, keyb = #1 }
  }
\ExplSyntaxOff
\begin{document}
\ExplSyntaxOn
\keys_set:nn { dcp } { keyc = true, keya = false, keyb = false }
keya: ~ \bool_to_str:N \l_dcp_keya_bool \para_end:
keyb: ~ \bool_to_str:N \l_dcp_keyb_bool \para_end:
keyc: ~ ? \para_end:
\keys_set:nn { dcp } { keyd = true, keya = false, keyb = false }
keya: ~ \bool_to_str:N \l_dcp_keya_bool \para_end:
keyb: ~ \bool_to_str:N \l_dcp_keyb_bool \para_end:
keyd: ~ \bool_to_str:N \l__dcp_keyd_bool \para_end:
\ExplSyntaxOff
\end{document}

相关内容