在表格外部使用电子表格宏的结果

在表格外部使用电子表格宏的结果

我有一个电子表格,想对其中一列求和。我想在文档中多次使用该结果。我该怎么做?

这段代码应该可以解释我想要完成的任务。

\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{spreadtab}
\usepackage{booktabs}

\begin{document}
\begin{spreadtab}{{tabular}{ll}}
  \toprule @Col1 & @Col2 \\
  \midrule 
  2 & 2 \\
  3 & 3 \\
  \bottomrule   
  \newcommand{\totsum}{:={sum(b2;b3)}}
  & \totsum \\
\end{spreadtab}

Here I am using totsum outside of the table: \totsum \\
\end{document}

答案1

来自手册

3.5 保存单元格的结果

可能需要保存单元格的数值,以便将其显示在公式之外,甚至表格之外。操作方法如下:使用\STsavecell{<control sequence>}{<absolute reference>}\global\def此命令会全局保存单元格中包含的公式结果。

由于此命令必须放在spreadtab 环境的可选参数中,因此只能使用绝对引用。

为了保存多个单元格,\STsavecell可以在可选参数中多次输入该命令。

因此,以你的 MWE 为基础

\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{spreadtab}
\usepackage{booktabs}

\begin{document}
\begin{spreadtab}[\STsavecell\totsum{b4}]{{tabular}{ll}}
  \toprule @Col1 & @Col2 \\
  \midrule 
  2 & 2 \\
  3 & 3 \\
  \bottomrule   
& :={sum(b2;b3)}
\end{spreadtab}

Here I am using totsum outside of the table: \totsum
\end{document}

生产

在此处输入图片描述

答案2

我只是想从不同的角度进行更新。今天我遇到了类似的问题。我们写了一张账单,想在最后一行显示总和,任何地方都可以显示结果。那么显然我们不能再使用绝对路径进行引用了。但手册再次提供了帮助:

从手册(通过 CTAN 进行扩展

4.4 坐标宏功能

[…]

宏函数tag(<name>)为其所在的单元格命名。这实际上并不是一个像其他宏函数一样的宏函数,因为当将其放入公式中时,它不返回任何内容,并且会消失而不会对数学结果造成任何影响。我们可以tag(<nom>)在单元格的数字字段中的任何位置写入。<name> 可以是任何字母数字字符串,但不建议放置字母和数字,因为这可能会被理解为对单元格的引用,因此在使用的复制操作中会被修改\STcopy。此宏函数有一个附加操作,它通过保存\def其所在单元格的数值,以便以后能够通过纯扩展命令在表格外使用\STtag{<name>}

因此,采用 MWE 将是:

\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{spreadtab}
\usepackage{booktabs}

\begin{document}
\begin{spreadtab}[\STsavecell\totsum{b4}]{{tabular}{ll}}
  \toprule @Col1 & @Col2 \\
  \midrule 
  2 & 2 \\
  3 & 3 \\
  \bottomrule   
& :={sum(b2;b3)tag(sumtot)}
\end{spreadtab}

Here I am using totsum outside of the table: \totsum{} or \STtag{sumtot}
\end{document}

我还建议另外两个替代方案

  1. 选项中的引用结果b3为 3,因此进行了此操作b4- 不确定是否有理由命名b3并仍然得到此结果
  2. 不使用括号进行调用\totsum会破坏后面的空格,因此在本例中需要使用括号进行加法

相关内容