expl3: expande cada elemento una vez al agregarlo a una lista

expl3: expande cada elemento una vez al agregarlo a una lista

Quiero agregar elementos a una lista y expandir cada elemento una vez. Pero (en mi opinión) natural \clist_set:Nono 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 ovariante 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 }
   }
 }

información relacionada