收集并分析表格中显示的数据

收集并分析表格中显示的数据

我在表格环境中呈现了数据,我想在 LaTeX 中以需要同时分析多个单元格的方式处理这些数据。这还不包括对单元格本身进行排版。

例如,我的源文件包含以下内容

\begin{mytabularpresentation}
  stuff & more stuff & yes \\
  data & more data & no \\
\end{mytabularpresentation}

除了显示“东西”,“是”等之外,我还想处理“东西”和“是”(即我想要运行\somecommand{stuff}{yes}),“数据”和“否”等等。

这是一个带有玩具示例的 M-ish WE。我使用全局变量来存储单元格内容,稍后在同一行上调用它们。

\documentclass{article}
\usepackage{calc}
\usepackage{array}
\usepackage{collcell}
\newcommand{\labelcell}[1]{#1}
\newcolumntype{L}{>{\collectcell\labelcell}l<{\endcollectcell}}
\newcommand{\aye}[1]{\gdef\ayecontents{#1}#1}
\newcolumntype{A}{>{$\collectcell\aye}r<{\endcollectcell$}}
\newcommand{\bee}[1]{\gdef\beecontents{#1}#1}
\newcolumntype{B}{>{$\collectcell\bee}r<{\endcollectcell$}}
\newcolumntype{R}{>{$}r<{$}}
\newcounter{result}
\newcommand{\calcvalue}[1]{\setcounter{result}{#1}\theresult}
\begin{document}
\begin{tabular}{LABR}
  sum & 3 & 2 & \calcvalue{\ayecontents+\beecontents} \\
  product & 3 & 2 & \calcvalue{\ayecontents*\beecontents} \\
  negative & 3 & & \calcvalue{-\ayecontents} \\
  square root & \omit & 4 & \sqrt{\beecontents} \\
  \omit & 76 & 89 & \calcvalue{\ayecontents*(42-\beecontents)} \\
\end{tabular}
\end{document}

这非常脆弱。在我的实际使用案例中,我遇到了一些复杂情况,例如带有单元格\omit(必须检测到,而不是重复使用上一行的内容)和嵌套表格。

我想做的一件事是收集整行的信息,而上面的示例没有做到这一点。我想到了\everycr,但是LaTeX 并不真正支持它,当我尝试强制执行它时,它会导致错误,我想是因为我有一些不可扩展的\everycr内容,这些内容最终出现在下一行的第一个单元格的开头。MNWE:

\documentclass{article}
\usepackage{array}
\makeatletter
\newcommand{\ialignwitheverycr}[1]{%
}
\newenvironment{tabularwitheverycr}[1]{%
  \let\orig@ialign\ialign%
  \def\ialign{\everycr{#1}\tabskip\z@skip\let\ialign\orig@ialign\halign}%
  \tabular%
}{%
  \endtabular%
}
\makeatother
\begin{document}
\begin{tabularwitheverycr}{\def\stuff{}}{rl}
  one & two \\
  \multicolumn{1}{l}{hello} & world \\
\end{tabularwitheverycr}
\end{document}

错误:Misplaced \omit.\multicolumn通话中(以及一系列后果)。

我如何从每行的多个列中收集数据并对其采取行动?有没有现成的包?如果我需要自己动手,有没有比全局变量更好的方法,我如何“完成”一行?

请注意,我想保留源原样。我不会将源更改为\somekindofrow{sum}{3}{2}{\calcvalue{\ayecontents+\beecontents}}

相关内容