我创建了一个宏来显示一些乘法表。它是用 latex3 实现的。我简化了我的代码,您可以使用以下内容作为示例:
\documentclass[a4paper,12pt]{article}
\ExplSyntaxOn
\NewDocumentCommand{\Table}{m}{
\clist_set:Nn \l_tmpa_clist {1,2,3,4,5,6,7,8,9,10,12}
\begin{tabular}{|c|c|}
\hline
\clist_map_inline:Nn {\l_tmpa_clist} {
$##1 \cdot #1$ & \fpeval{##1*#1} \\ \hline
}
\end{tabular}
}
\ExplSyntaxOff
\begin{document}
\Table{3}
\end{document}
我得到:
我不明白为什么表格底部会出现两条垂直线。我期望当处理完所有数字后,表格末尾必须有一条水平线。
有人知道这里发生了什么吗?谢谢!
答案1
看起来,使用命名函数而不是内联函数可以解决问题。
\documentclass[a4paper,12pt]{article}
\ExplSyntaxOn
\NewDocumentCommand{\Table}{m}{
\clist_set:Nn \l_tmpa_clist {1,2,3,4,5,6,7,8,9,10,12}
\newcommand{\mycalc}[1]{$##1 \cdot #1$ & \fpeval{##1*#1}\\ \hline }
\begin{tabular}{|c|c|}
\hline
\clist_map_function:NN \l_tmpa_clist \mycalc
\end{tabular}
}
\ExplSyntaxOff
\begin{document}
\Table{3}
\end{document}
顺便说一句,我也尝试过\clist_map_variable:NNn
,但似乎变量没有到达第二行单元格。它似乎被定义在第一行单元格的本地,这对我来说似乎是一个错误。