![如何使用 \collectcell 在表格中创建新单元格](https://linux22.com/image/371588/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20%5Ccollectcell%20%E5%9C%A8%E8%A1%A8%E6%A0%BC%E4%B8%AD%E5%88%9B%E5%BB%BA%E6%96%B0%E5%8D%95%E5%85%83%E6%A0%BC.png)
我必须显示一个有 6 列的表格,每行的最后 2 个单元格是根据前 4 个单元格计算得出的。在 MWE 中,此计算是通过仅显示用连字符连接的值来模拟的,但实际上它更为复杂。
我有两个可行的解决方案:
在第一个中,用户(定义表的包的用户)必须输入 2 个空单元格,例如
1 & 2 & 3 & 4 & & \\
在第二个解决方案中,我使用了一个单独的表格,其中包含两列,用于显示计算值。在这里,用户可以指定
1 & 2 & 3 & 4 \\
尽管第二种方式更方便用户使用,但是如果我想“暂时暂停表格”并在其间放置一些文本,就会产生对齐问题。
可以动态创建一行的最后两个单元格,但是当我使用包 collcell 中的 \collectcell 进行计算时,我无法使其工作。
有人知道这个问题的解决办法吗?
MWE 得出:错位的对齐制表符 &。
\documentclass{article}
\usepackage{collcell,xparse}
\newcolumntype{C}{>{\collectcell\testcol}c<{\endcollectcell}}
\newcounter{Cnt}
\setcounter{Cnt}{0}
\ExplSyntaxOn
\newcommand{\testcol}[1]{%
\stepcounter{Cnt}
\str_case_x:nn {\theCnt}
{
{1}{#1 \gdef\One{#1}}
{2}{#1 \gdef\Two{#1}}
{3}{#1 \gdef\Three{#1}}
{4}{
#1 \setcounter{Cnt}{0}
& \One-\Two & \Three-#1
\tabularnewline
}
}
}
\ExplSyntaxOff
\begin{document}
\begin{tabular}{CCCC|cc}
1 & 2 & 3 & 4
5 & 6 & 7 & 8
\end{tabular}
\end{document}