有时我希望 LaTeX 自动帮我计算总和(或其他简单算术),例如在表格中。我想确保在更新表格时不会意外忘记更新某些总和。我也不想在另一个程序(例如电子表格)中维护表格,或者使用一些外部脚本来生成 LaTeX 输出。这是否可能,而无需编写大量宏并完全使表格语法变得臃肿?
例如:
\begin{tabular}{l l l l | l}
& Foo & Bar & Baz & \\
Small & 5 & 3 & 11 & \rowsum{} \\
Medium & 9 & 2 & 23 & \rowsum{} \\
Large & 13 & 15 & 44 & \rowsum{} \\
\hline
& \colsum{} & \colsum{} & \colsum{} & \\
\end{tabular}
这里,\rowsum
和\colsum
会以某种方式计算出它们各自的行和列的总和,我不需要担心手动计算它们。
答案1
LaTeX 是一种排版系统,尝试将其用于排版之外的其他用途可能会让您在某些时候感到沮丧。除非您的表格非常简单,否则我认为使用电子表格然后将其导出到 LaTeX 绝对是最好的方法。
现在,话虽如此,对于一个简单的表格,你可以使用托尔斯滕建议,像这样的包电子表格并写下类似的东西:
\begin{spreadtab}{{tabular}{llll|l}}
& @ Foo & @ Bar & @ Baz & \\
@ Small & 5 & 3 & 11 & sum(b2:d2) \\
@ Medium & 9 & 2 & 23 & sum(b3:d3) \\
@ Large & 13 & 15 & 44 & sum(b4:d4) \\ \hline
& sum(b2:b4) & sum(c2:c4) & sum(d2:d4) &
\end{spreadtab}
texdoc spreadtab
在命令行上运行以获取其文档并阅读完整的详细信息。
答案2
答案3
如果你想要符号计算(而不是 Thorsten 提供的非常酷的电子表格选项),那么智者和数学有办法将其与 LaTeX 混合。
以下是 SageTex 教程中的一个示例:
\documentclass{article}
\usepackage{sagetex}
\begin{document}
Using Sage\TeX, one can use Sage to compute things and put them into
your \LaTeX{} document. For example, there are
$\sage{number_of_partitions(1269)}$ integer partitions of $1269$.
You don't need to compute the number yourself, or even cut and paste
it from somewhere.
Here's some Sage code:
\begin{sageblock}
f(x) = exp(x) * sin(2*x)
\end{sageblock}
The second derivative of $f$ is
\[
\frac{\mathrm{d}^{2}}{\mathrm{d}x^{2}} \sage{f(x)} =
\sage{diff(f, x, 2)(x)}.
\]
Here's a plot of $f$ from $-1$ to $1$:
\sageplot{plot(f, -1, 1)}
\end{document}
答案4
Sweave 和 R 是另一个不错的选择。您可以在 Rnw 文件中创建一个代码块,导入表格,计算您想要的任何内容,然后将结果写入 tex 表格。