我有一个将名称与值关联起来的属性列表
名称 1 -> 值 1
名称 2 -> 值 2
...
我想使用属性列表中的名称来动态创建键。以下代码
\documentclass{article}
\usepackage{expl3}
\begin{document}
\ExplSyntaxOn
\prop_new:N \l_my_prop
\prop_put:Nnn \l_my_prop { name1 } { val1 }
\prop_put:Nnn \l_my_prop { name2 } { val2 }
\prop_map_inline:Nn \l_my_prop
{
\keys_define:nn { phylogenetictree }
{
#1 .tl_gset:c = \l_#1_tl
}
}
\ExplSyntaxOff
\end{document}
给出错误
! Undefined control sequence.
<argument> \l_
name1_tl
l.15 }
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.
为什么此代码不起作用? 有没有更好的方法来实现这一点?
答案1
您没有c
以正确的形式给出 -type 参数:它(通常)不应该以 a 开头,\
而应该用括号括起来:
\prop_map_inline:Nn \l_my_prop
{
\keys_define:nn { phylogenetictree }
{
#1 .tl_set:c = { l_ #1 _tl }
}
}
我也已将其更改.tl_gset:c
为.tl_set:c
这里,因为您的变量名(\l_...
)表示它是本地的而不是全局的。