
Quiero convertir una lista de elementos separados por espacios, dada como argumento de una función, en una variable clist para poder iterar sobre ellos. Sin embargo, no puedo crear una variable clist utilizable como lo demuestra el siguiente ejemplo de código. \clist_map_inline:Nn
siempre toma la lista completa en lugar de separar los elementos. ¿Qué estoy haciendo mal?
\documentclass{minimal}
\usepackage{expl3}
\ExplSyntaxOn
\cs_new:Nn\parselist:n{
\tl_set:Nx\l_csv_tl{#1}
\tl_replace_all:Nnn\l_csv_tl{~}{,}
\clist_set:Nx\l_csv_clist\l_csv_tl
\clist_map_inline:Nn\l_csv_clist{
\noindent Name:~#1\par
}
}
\ExplSyntaxOff
\begin{document}
\def\csv{fred jane albert}
\ExplSyntaxOn
\parselist:n\csv
\parselist:n{john~peter~linda}
\ExplSyntaxOff
\end{document}
Respuesta1
Yo mismo descubrí el error. Usar ##1
en el cuerpo de la función \clist_map_inline:Nn
funciona. De lo contrario, \parselist:n
se utiliza el argumento original tal como se proporciona .