我尝试制作一个列表到表格函数。它在第一列中工作正常,但第二列消失了。
下面是 MWE(我删除了循环部分):
\documentclass[12pt]{article}
\usepackage{expl3}
\ExplSyntaxOn
\begin{document}
\clist_new:N \l_my_cl
\clist_set:Nn \l_my_cl {A,B,C,D}
\begin{tabular}{|c|c|}
\hline
\clist_gpop:NN \l_my_cl \l_tmpa_tl
\l_tmpa_tl & ``\l_tmpa_tl'' \\ \hline
\end{tabular}
\ExplSyntaxOff
\end{document}
并输出:
为什么??如何解决?谢谢。
更新
谢谢 egreg。这最终是代码:
\documentclass[12pt]{article}
\usepackage{expl3}
\ExplSyntaxOn
\begin{document}
\clist_new:N \g_sppmg_my_cl
\clist_gset:Nn \g_sppmg_my_cl {}
\int_compare:nNnTF {\clist_count:N \g_sppmg_my_cl} > {0}{
\begin{tabular}{|c|c|}
\hline
\clist_gpop:NN \g_sppmg_my_cl \l_tmpa_tl
\tl_gset_eq:NN \g_tmpa_tl \l_tmpa_tl % copy to global var
1st. \g_tmpa_tl & ``\g_tmpa_tl'' \\ \hline
\int_while_do:nNnn {\clist_count:N \g_sppmg_my_cl} > {0} {
\clist_gpop:NN \g_sppmg_my_cl \l_tmpa_tl
\tl_gset_eq:NN \g_tmpa_tl \l_tmpa_tl
other : \g_tmpa_tl & ``\g_tmpa_tl'' \\ \hline
}
\end{tabular}
}{}
\ExplSyntaxOff
\end{document}
对于\g_tmpa_tl
第一列,我认为我可以在 egreg 的示例中使用\g_tmpa_tl
replace \l_tmpa_tl
。(实际上,在我的情况下没有必要。)
答案1
该函数\clist_gpop:NN
仅对clist进行全局作用,但对标记列表变量的赋值是局部的。
不要混淆全局和本地任务。
\documentclass[12pt]{article}
\usepackage{expl3}
\ExplSyntaxOn
\begin{document}
\clist_new:N \g_sppmg_my_cl
\clist_gset:Nn \g_sppmg_my_cl {A,B,C,D}
\begin{tabular}{|c|c|}
\hline
\clist_gpop:NN \g_sppmg_my_cl \l_tmpa_tl
\tl_gset_eq:NN \g_tmpa_tl \l_tmpa_tl
\l_tmpa_tl & ``\g_tmpa_tl'' \\
\hline
\end{tabular}
\ExplSyntaxOff
\end{document}