是否可以从表格数组中提取单元格值?

是否可以从表格数组中提取单元格值?

在文档应用程序中,文档的版本历史记录在表格环境中列出,我希望能够默默地提取提供的最后一个版本号的值,以便在其他地方使用。输入元数据的人不能(也不应该)在他们输入的内容中添加标记,所以我想到了这样的东西:

最小非工作示例

\documentclass{article}
\usepackage{array}
\begin{document}
\def\foo{0}
\begin{tabular}{>{\gdef\foo\bgroup}c<{\egroup}cc}
Ver&Stuff&More stuff\\\hline
0.1&this&that\\
0.2&this&that\\
0.3&this&that\\
\end{tabular}
\end{document}

我试图将 \foo 设置为“0.3”。这可能是错误的方法,但有人有解决方案吗?

答案1

你离我并不远:collcell提供了诀窍。

\documentclass{article}
\usepackage{collcell}

\newcommand{\deffoo}[1]{\gdef\foo{#1}#1}
\def\foo{0}

\begin{document}

\begin{tabular}{>{\collectcell\deffoo}c<{\endcollectcell}cc}
Ver&Stuff&More stuff\\\hline
0.1&this&that\\
0.2&this&that\\
0.3&this&that\\
\end{tabular}

\foo

\end{document}

在此处输入图片描述

你的方法行不通,因为 a (或 friends) 的替换文本不能用和\def分隔,只能用显式括号分隔。相反,我们在单元格的开头和结尾处注入。本质上,定义为\bgroup\egroup\collectcell\deffoo\endcollectcell\collectcell

\def\collectcell#1#2\endcollectcell{#1{#2}}

所以执行的是\deffoo{<cell contents>},它满足我们的需要。

相关内容