我喜欢spreadtab 背后的想法。作者应该受到祝贺。
但是,它似乎要求我为要添加的行指定具体数字。如果我有一个文档,我时不时地添加更多行,该怎么办?是否可以采用 1:lastrow 形式的语法,其中 lastrow 由包内部计算,而不是我计算?
答案1
请查看以下 MWE。
\documentclass{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\usepackage{spreadtab}
\begin{document}
\begin{spreadtab}{{tabular}{r}}
12 \\
13 \\
14 \\
\hline
sum(a1:[0,-1]) \\
\end{spreadtab}
\end{document}
请参阅带有 的行sum(a1:[0,-1])
。带有a1
是第一个命名的单元格(包含 12)。带有[0,-1]
可以寻址之前的单元格。如果您站在单元格中a4
(即我们要计算总和的单元格),您可以调用带有a3
的单元格[0,-1]
。
顺便说一句: [0,-2]
你可以a2
用值来调用单元格12
。
查看给定的 MWE 的结果(39 由函数计算得出sum
):
a1
Btw2:假设您要计算从单元格到d1
单元格中的总和。 然后您可以在单元格中e1
使用。sum(a1:[-1,0])
e1
希望这可以帮助 ...
答案2
您也可以使用tag
宏,然后cell
在的参数中写入宏sum
:
\begin{spreadtab}{{tabular}{r}}
12 \\
13 \\% you can add rows
14tag(lastrow)\\\hline
sum(a1:cell(lastrow)) \\
\end{spreadtab}
答案3
检查这个例子(使用包longtable
和spreadtab
)清零行在开始和结束处。这两行通过 变为不可见,并在开始时\phantom
通过 向上移动。[-6.9mm]
\begin{spreadtab}{{longtable}{cccc}}%
@\textbf{ONE} & @\textbf{TWO} & @\textbf{THREE} & @\textbf{FOUR} \\
[-6.9mm]\phantom{:={0}} & \phantom{:={0}} & \phantom{:={0}} & \phantom{:={0 tag(start)}} \\
5 & 6 & 7 & 8 \\
5 & 6 & 7 & 8 \\
5 & 6 & 7 & 8 \\
[-6.9mm]\phantom{:={0}} & \phantom{:={0}} & \phantom{:={0}} & \phantom{:={0 tag(stop)}} \\
@\textbf{vsota} & sum(cell(start):cell(stop))
\end{spreadtab}
此示例允许您拆分桌子通过在文档前言中的某处定义两个命令。
第一的:
\newcommand{\tablestart}{
\begin{spreadtab}{{longtable}{cccc}}%
@\textbf{dan} & @\textbf{ure} & @\textbf{vsebine} & @\textbf{status} \\
[-6.9mm]\phantom{:={0}} & \phantom{:={0}} & \phantom{:={0}} & \phantom{:={0 tag(start)}} \\
}
第二:
\newcommand{\tablestop}{
[-6.9mm]\phantom{:={0}} & \phantom{:={0}} & \phantom{:={0}} & \phantom{:={0 tag(stop)}} \\
@\textbf{vsota} & sum(cell(start):cell(stop))
\end{spreadtab}
然后你还定义再来一个命令以便用户能够轻松地将数据输入表格:
\newcommand{\input}[4]{
#1 & #2 & #3 & #4 \\
}
然后您可以在文档中使用这三个命令按此顺序:
\tablestart
\input{5}{6}{7}{8}
\input{5}{6}{7}{8}
\input{5}{6}{7}{8}
\tablestop
表格将会对此进行总结!
错误:
如果您不拆分表,此方法会起作用,但如果您拆分表,则此方法会失败。有人知道原因吗?