我有一个以逗号分隔的列表,想要从中创建一个表格,如下所示:
\documentclass[margin=0.1cm]{standalone}
\usepackage{expl3}
\begin{document}
\begin{tabular}{c | c}
\ExplSyntaxOn
\clist_new:N \test_clist
\clist_set:Nn \test_clist {a, b, c, d}
\clist_item:Nn \test_clist {1} & \clist_item:Nn \test_clist {2} \\
\ExplSyntaxOff
\end{tabular}
\end{document}
但我只得到一个未定义的控制序列错误。然而,如果不使用它&
可以工作:
\documentclass[margin=0.1cm]{standalone}
\usepackage{expl3}
\begin{document}
\begin{tabular}{c | c}
\ExplSyntaxOn
\clist_new:N \test_clist
\clist_set:Nn \test_clist {a, b, c, d}
\clist_item:Nn \test_clist {1} \clist_item:Nn \test_clist {2} \\
\ExplSyntaxOff
\end{tabular}
\end{document}
虽然这不是我想要的,因为a
和b
位于表格的同一个单元格中。
那么,如何通过逗号分隔的列表创建表格的一行?
答案1
解决方案 1:在 之外打开/关闭 expl3 tabular
。请注意, 的第一个单元格中的定义tabular
是此单元格的本地定义,因此列表在第二个单元格中将未定义。这意味着最好将这些定义移到外面。
\ExplSyntaxOn
\clist_new:N \test_clist
\clist_set:Nn \test_clist {a, b, c, d}
\begin{tabular}{c | c}
\clist_item:Nn \test_clist {1} & \clist_item:Nn \test_clist {2} \\
\end{tabular}
\ExplSyntaxOff
解决方案 2:在序言中使用 expl3 来定义命令,并确保稍后使用的宏遵循传统的 TeX 规则。
\documentclass[margin=0.1cm]{standalone}
\ExplSyntaxOn
\clist_new:N \testclist
\clist_set:Nn \testclist {a, b, c, d}
\let\clistitem\clist_item:Nn
\ExplSyntaxOff
\begin{document}
\begin{tabular}{c | c}
\clistitem\testclist{1} & \clistitem\testclist{2} \\
\end{tabular}
\end{document}
答案2
这是另一种解决方案functional
包。您需要使用全局变量(\gTestClist
),因为表中的每个单元格都组成一个组。
\documentclass[margin=0.1cm]{standalone}
\usepackage{functional}
\begin{document}
\begin{tabular}{c|c}
\ClistNew \gTestClist
\ClistSet \gTestClist {a, b, c, d}
\ClistVarItem \gTestClist {1} & \ClistVarItem \gTestClist {2} \\
\end{tabular}
\end{document}