在 LaTeX3 中从逗号分隔列表创建表格

在 LaTeX3 中从逗号分隔列表创建表格

我有一个以逗号分隔的列表,想要从中创建一个表格,如下所示:

\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}

虽然这不是我想要的,因为ab位于表格的同一个单元格中。

那么,如何通过逗号分隔的列表创建表格的一行?

答案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}

在此处输入图片描述

相关内容