[...]{...}
解析的更有效方法是什么expl3
,即在一个变量中获取括号内的内容,在另一个变量中获取括号内的内容?
这个问题实际上与是否可以标记(l3keys)键值的值以便在其他地方轻松地重复使用它?,而我想要的是获取tagB
并传递给( )键值系统value B
的值,例如:l3keys
\people[attribute = [tagB]{value B},
attribute = {value C}]{People 2}
我猜这会涉及l3quark
夸克但我不确定。
答案1
正如 egreg 所说,这可能滥用系统,但绝对有用。我不知道什么是最正确的解决方案(并使用 xparse 来解析要使用的可选参数调用,尽管这有点混淆了)。
\quark_new:N \q_denis
\NewDocumentCommand \denis_people_attribute:ww { o u\q_denis }
{ ⟨Whatever definition you want, using #1 and #2 and \IfValueTF{#1}, etc.⟩ }
\keys_define:nn { denis / people }
{
attribute .code:n = \denis_people_attribute:ww #1 \q_denis ,
}
\keys_set:nn { denis / people }
{
attribute = [tagB]{valueB} ,
attribute = {value C}
}
无论如何,我不知道如何调用命令,\peoplesattribute
这似乎“很奇怪”,但混合使用\denis_people_attribute:w
似乎\NewDocumentCommand
也很奇怪。也许应该给出一个内部 xparse 函数?例如,\xparse_new_command:Nnn \foo:w { o m } { .. #1 #2 .. }
。我真的不知道。