我必须使用长图从表格数组包并想计算每行的简单产品。
问题是,最终结果中显示的乘积对于每一行都是相同的:来自最后一行的乘积。如下所示,第一行应该以 4.4 结尾,而不是 8。
\documentclass{article}
\usepackage{tabularray}
\UseTblrLibrary{functional}
\IgnoreSpacesOn
\FpNew \Total
\PrgNewFunction \Product {mmm} {
\FpSet \SubTotal {#2 * #3}
\TlSet \Row {#1 & #2 & #3 & {\FpUse \SubTotal}\\}
\FpAdd \Total {\FpUse \SubTotal}
\Return {\TlUse \Row}
}
\IgnoreSpacesOff
\begin{document}
\begin{longtblr}[evaluate=\Product]{cccc}
\Product{Text}{1.1}{4}
\Product{Text}{4}{2}
Total &&& \FpUse \Total
\end{longtblr}
\end{document}
我正在使用最新的表格数组和功能来自 github 的这些功能的软件包。
我也正在计算最后一列的总和,并且运行正常。
在此先谢谢大家的帮助!非常感谢@LJR创建了这个很棒的TeX包(据我所知,这是功能最丰富的表格环境)!
答案1
为了避免与 LaTeX 内核和其他软件包中的命令发生潜在的命名冲突,functional
自 2022G 版(2022-05-22)以来,该软件包的功能命名方案已从 更改为\UpperCamelCase
。\lowerCamelCase
另外,还有一些单词函数的重命名(参见变更日志)。例如,\Return
已重命名为\prgReturn
。
为了向后兼容,那些旧的 UpperCamelCase 函数名只要不被内核或其他软件包使用,仍然可以使用一段时间,但它们将来会被删除。
内部函数仅当它出现在参数开头时才会被求值。因此,以下行
\tlSet \Row {#1 & #2 & #3 & {\fpUse \SubTotal}\\}
需要改为
\tlSet \Row {#1 & #2 & #3 & }
\tlPutRight \Row {\fpUse \SubTotal}
\tlPutRight \Row {\\}
现在你得到了预期的结果:
\documentclass{article}
\usepackage{tabularray}
\UseTblrLibrary{functional}
\IgnoreSpacesOn
\fpNew \Total
\prgNewFunction \Product {mmm} {
\fpSet \SubTotal {#2 * #3}
\tlSet \Row {#1 & #2 & #3 & }
\tlPutRight \Row {\fpUse \SubTotal}
\tlPutRight \Row {\\}
\fpAdd \Total {\fpUse \SubTotal}
\prgReturn {\tlUse \Row}
}
\IgnoreSpacesOff
\begin{document}
\begin{longtblr}[evaluate=\Product]{cccc}
\Product{Text}{1.1}{4}
\Product{Text}{4}{2}
Total &&& \fpUse \Total
\end{longtblr}
\end{document}