使用 l3keys 将逗号传递给键值对

使用 l3keys 将逗号传递给键值对

使用时如何将逗号传递给键值对l3keys?已插入双引号,但引号也会被打印出来,这是我不希望出现的情况。

\documentclass[a4paper,12pt]{article}

\ExplSyntaxOn

\keys_define:nn { adr_keys }
  {
    name .tl_set:N = \l_name_tl,
    vltw .tl_set:N = \l_vltw_tl,
  }

\cs_new_protected:Nn \print_adr:n
  {
    \keys_set:nn { adr_keys } { #1 }

    \begin {tabular} { @{} l@{} }

      \tl_use:N \l_name_tl \\

      \tl_if_blank:VF \l_vltw_tl
        { \tl_use:N \l_vltw_tl \\ }

    \end {tabular}
  }

\NewDocumentCommand {\adr} { m }
  {
    \begin {flushright}
      \print_adr:n { #1 }
    \end {flushright}
  }

\ExplSyntaxOn

\begin{document}

\adr
  {
    name="Heime Borgia",
    vltw="405 Hilgard Ave, Los Angeles",
  }

\end{document}

答案1

TeX 的解析规则意味着在这种分隔上下文中“隐藏”标记的方法是使用一{...}对(假设是正常的 catcode)。这不受 的影响expl3

\adr
  {
    name= Heime Borgia,
    vltw= {405 Hilgard Ave, Los Angeles},
  }

(可以进行逐个标记的解析并"在键值上下文中选取字符,但这会很慢并且在这里不需要:我们正在处理期望{...}处理合理的输入。)

相关内容