.meta:n
判断l3key 设置为何的最佳方法是什么?
例如,在下面的 MWE 中,即使和随后被设置为,我怎样才能知道keyc
被设置为?true
keya
keyb
false
我能想到的最好方法是包含一个未记录的私钥来保存 的值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}