如何使用 \collectcell 在表格中创建新单元格

如何使用 \collectcell 在表格中创建新单元格

我必须显示一个有 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}

相关内容