使用时如何将逗号传递给键值对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},
}
(可以进行逐个标记的解析并"
在键值上下文中选取字符,但这会很慢并且在这里不需要:我们正在处理期望{...}
处理合理的输入。)