![命令对列表中的值求和](https://linux22.com/image/432034/%E5%91%BD%E4%BB%A4%E5%AF%B9%E5%88%97%E8%A1%A8%E4%B8%AD%E7%9A%84%E5%80%BC%E6%B1%82%E5%92%8C.png)
我是新手expl3
。有什么可以做的吗?
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\sumlist}{m}{
\clist_add:n { #1 }
}
\ExplSyntaxOff
\begin{document}
\sumlist{1,2} % should output 3
\end{document}
答案1
它本质上是一行代码。\clist_use:nn
我们可以将 放在+
任意两个项之间,并\int_eval:n
完全展开其参数以进行计算。请注意 被1+-4
接受并返回-3
。
\documentclass{article}
\ExplSyntaxOn
\NewExpandableDocumentCommand{\listadd}{m}
{
\int_eval:n { \clist_use:nn {#1} { + } }
}
\ExplSyntaxOff
\begin{document}
\listadd{1,2}
\listadd{1,-4,3}
\edef\test{\listadd{-3,2*3,-4}}
\texttt{\meaning\test}
\end{document}
您\fp_eval:n
还可以对浮点数进行求和。
笔记。查看 2021 年之前版本的编辑历史。
答案2
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\sumlist}{m}{
\int_zero:N\l_tmpa_int
\clist_map_inline:nn{#1} { \int_add:Nn\l_tmpa_int{##1} }
\int_use:N\l_tmpa_int
}
\ExplSyntaxOff
\begin{document}
\sumlist{1,2} % should output 3
\end{document}