
関数の引数として与えられたスペースで区切られた項目のリストを clist 変数に変換して、反復処理を行いたいのですが、次のコード例に示すように、使用可能な clist 変数を作成できません。\clist_map_inline:Nn
要素を区切るのではなく、常にリスト全体を取得します。何が間違っているのでしょうか?
\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}
答え1
私自身、このエラーを発見しました。##1
関数本体で を使用すると、\clist_map_inline:Nn
問題は解決します。 それ以外の場合は、 に指定された元の引数\parselist:n
が使用されます。