电子表格公式中的展开命令

电子表格公式中的展开命令

长话短说:我正在尝试提出一个系统,通过 Pandoc 从 YAML 文件动态生成 LaTeX 表,并使用该spreadtab包进行一些计算。

到目前为止一切顺利,表格获得了应有的输出,并且spreadtab出色地完成了它的工作。

但现在我有一个问题。我需要找到一种方法来告诉spreadtab需要求和的单元格范围。由于表格是动态生成的,因此此参数也需要是动态的。而且由于 决不使用 Pandoc 用计数器跟踪循环中的迭代次数,我需要使用 LaTeX 创建所述计数器。

这是我想到解决方案(剧透:它不起作用):

\newcounter{pos}
\setcounter{pos}{0}

\begin{spreadtab}{{tabular}[t t t]{lp{8.2cm}r}}
   @ Pos. & @ Leistung/Beschreibung & @ Preise in EUR \\ \hline
   @ \refstepcounter{pos} \thepos & @ Die erste Leistung   & 750.0 \\ 
   @ \refstepcounter{pos} \thepos & @ Die zweite Leistung  & 180.0 \\ 
   @ \refstepcounter{pos} \thepos & @ Die dritte Leistung  & 55.0 \\ 
   @ \refstepcounter{pos} \thepos & @ Die vierte Leistung  & 55.0 \\ 
   \hline
  @ & @ \multicolumn{1}{r}{Nettobetrag:} & :={sum(c1:c\thepos)} \\
\end{spreadtab}

棘手的部分在表格的最后一行。在每一行增加计数器后,我的计划是在公式中使用相同的计数器spreadtab来设置需要求和的单元格的范围。不幸的是,spreadtab在读取表格时似乎没有扩展计数器,并且它返回错误:Invalid range in cell C6

我仔细考虑了一下,觉得这个问题的解决方案超出了我的能力范围。所以现在我问你:如何使用一个spreadtab可以识别的动态参数,或者如何告诉spreadtab扩展计数器命令执行公式?

谢谢你的帮助。

答案1

我建议另一种解决方案:使用相对引用(如手册中所述spreadtab),即使用sum(c2:[0,-1])而不是sum(c1:c\thepos)。 (注意我换成了c1c2c1列的头部,而要加起来的第一个数字是c2。)

使用来自你的其它问题

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

\usepackage{spreadtab,array}
\usepackage{arydshln}
\renewcommand{\arraystretch}{1.5}
\usepackage{hhline}
\newcounter{pos}

\begin{document}

\STautoround*{2}
\STsetdecimalsep{,}
\begin{spreadtab}{{tabular}[t t t]{lp{8.2cm}r}}
  \hdashline[1pt/1pt]
  @ \textbf{Pos.} &
  @ \textbf{Leistung/Beschreibung} &
  @ \textbf{Preise in EUR} \\ \hline
  @ \refstepcounter{pos} \thepos & @ Die erste Leistung  & 750.0 \\
  @ \refstepcounter{pos} \thepos & @ Die zweite Leistung & 180.0 \\
  @ \refstepcounter{pos} \thepos & @ Die dritte Leistung & 55.0  \\
  @ \refstepcounter{pos} \thepos & @ Die vierte Leistung & 55.0 \\
  % @ \refstepcounter{pos} \thepos & @ Noch eine Leistung  & 12.0 \\
  @ \refstepcounter{pos} \thepos & @ Noch eine Leistung  & 56.3 \\
  % @ \refstepcounter{pos} \thepos & @ Noch eine Leistung  & 987.0 \\
  % @ \refstepcounter{pos} \thepos & @ Noch eine Leistung  & 45.0 \\
  % @ \refstepcounter{pos} \thepos & @ Noch eine Leistung  & 31.31 \\
  \hline
  @ &
  @ \multicolumn{1}{r}{\textbf{Rechnungsbetrag:}} &
  \textbf{:={sum(c2:[0,-1])}}
  \\ \hhline{~~-}
\end{spreadtab}

\end{document}

相关内容