使用函数库生成 tabularray 并计算每行的子结果

使用函数库生成 tabularray 并计算每行的子结果

我必须使用长图表格数组包并想计算每行的简单产品。

问题是,最终结果中显示的乘积对于每一行都是相同的:来自最后一行的乘积。如下所示,第一行应该以 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}

在此处输入图片描述

相关内容