
Quiero agregar elementos a una lista y expandir cada elemento una vez. Pero (en mi opinión) natural \clist_set:No
no funcionó como se esperaba, ya que solo amplió el primer elemento.
\documentclass{article}
\usepackage{expl3}
\begin{document}
\ExplSyntaxOn
\def\testa{blub}
\def\testb{blabla}
\clist_set:No\mylist{\testa,\testb}
\clist_show:N\mylist
\ExplSyntaxOff
\end{document}
The comma list \mylist contains the items (without outer braces):
> {blub}
> {\testb }.
Entonces, ¿cuál es la forma correcta de hacer esto? ¿Realmente es necesario utilizar algún bucle?
Respuesta1
La o
variante simplemente expande el primer token después de la llave.
Tienes que agregar los elementos uno por uno:
\clist_new:N \l_ulrike_mylist_clist
\clist_map_inline:nn { \testa , \testb }
{
\clist_put_right:No \l_ulrike_mylist_clist { #1 }
}
Por supuesto, puedes desarrollar tu azúcar sintáctico para esto.
\cs_new_protected:Nn \ulrike_clist_set_exp:Nn
{
\clist_clear:N #1
\clist_map_inline:nn { #2 }
{
\clist_put_right:No #1 { ##1 }
}
}