在文档应用程序中,文档的版本历史记录在表格环境中列出,我希望能够默默地提取提供的最后一个版本号的值,以便在其他地方使用。输入元数据的人不能(也不应该)在他们输入的内容中添加标记,所以我想到了这样的东西:
最小非工作示例
\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>}
,它满足我们的需要。