我正在使用 Latex3 制作表格模板,想要计算某一列的总和。我的问题是我不能传递超过 9 个参数,但这是必要的,因为我不知道表格会有多大。
Spreadtab 包不起作用。
下面是一个例子:
\documentclass[a4paper,12pt]{article}
\usepackage{xparse}
\usepackage{fp}
\def\one{1}
\def\two{2}
\def\three{3}
\def\four{4}
\def\five{5}
\def\six{6}
\def\seven{}
\def\eight{8}
\def\nine{9}
\def\ten{1}
\ExplSyntaxOn
\NewDocumentCommand{\calcsum}{O{0}O{0}O{0}O{0}O{0}O{0}O{0}O{0}O{0}} %Here i need more than 9 arguments
{ \fp_to_decimal:n {#1 + #2 + #3 + #4 + #5 + #6 + #7 + #8 + #9}}
\ExplSyntaxOff
\begin{document}
Result: \calcsum[\one][\two][\three][\four][\five][\six][\seven][\eight][\nine]
\end{document}
答案1
使用逗号列表分隔的值列表:
\documentclass[a4paper,12pt]{article}
\usepackage{xparse}
\usepackage{fp}
\def\one{1}
\def\two{2}
\def\three{3}
\def\four{4}
\def\five{5}
\def\six{6}
\def\seven{}
\def\eight{8}
\def\nine{9}
\def\ten{1}
\ExplSyntaxOn
\NewDocumentCommand{\calcsum}{m}
{
\clist_set:Nx \l_tmpa_clist { #1 }
\fp_to_decimal:n { \clist_use:Nn \l_tmpa_clist { + } }
}
\ExplSyntaxOff
\begin{document}
Result: \calcsum{\one,\two,\three,\four,\five,\six,\seven,\eight,\nine,\ten}
\end{document}
我们利用了空项会被忽略的事实\clist_set:Nn
。