如何正确解析 [...]{...} 和 expl3?

如何正确解析 [...]{...} 和 expl3?

[...]{...}解析的更有效方法是什么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 .. }。我真的不知道。

相关内容