前进到特定(编号)列的命令?

前进到特定(编号)列的命令?

假设我想要一个\gotocolumn具有以下行为的命令:在具有 n 列或更多列的表格中,\gotocolumn{n}将扩展为最短的组合,\\&需要将我们带到第 n 列。例如...

  • 在表格的第一列中,\gotocolumn{3}将扩展为& &
  • 在表的第二列中,\gotocolumn{3}将扩展为&
  • 在表的第三列中,\gotocolumn{3}将扩展为\relax
  • 在表的第四列或后续列中,\gotocolumn{3}将扩展为\\ & &

已经完成了吗?可以完成吗?您认为该怎么做?

答案1

当开始新的列和行时,您可以进行一些记账。如果您真的想,您可以重新定义&\\我选择引入一些新的宏,这些宏只是“调用”正常的宏并做一些额外的工作。它看起来像这样:

\documentclass{article}
\newcounter{currCol}
\setcounter{currCol}{1}
\def\amp{\stepcounter{currCol}&}
\def\nl{\\\setcounter{currCol}{1}}
\newcounter{numCols}
\setcounter{numCols}{3}
\def\gotocolumn#1{%
  \ifnum\the\value{currCol}=#1%done
  \else%
    \ifnum\the\value{currCol}<#1% before same row
      \amp\gotocolumn{#1}%
    \else% after, next row
      \ifnum\the\value{currCol}<\the\value{numCols}% need additional columns
        \amp\gotocolumn{#1}%
      \else%
        \nl\gotocolumn{#1}%
      \fi%
    \fi%
  \fi%
}
\begin{document}
  \begin{tabular}{lcr}
    test \amp test \amp test\nl
    more \amp test \amp stuff\nl
    \gotocolumn{2}test \amp test\nl
    \gotocolumn{3}last\nl
    first \amp \gotocolumn{1}first
  \end{tabular}
\end{document}

看起来像这样。

转到列结果

它没有经过很好的测试,因此在边界情况下可能会出现一些问题。

相关内容