表格中的循环

表格中的循环

我很好奇为什么下面的操作失败了。类似的帖子在压缩文本.tex未回答。当然,其他操作也可以\whileexpr,但是为什么这个会失败呢?

\documentclass{article}
\makeatletter
\def\whileexpr#1\do#2{%
  #1#2\expandafter\@iden\else\expandafter\@gobble\fi
  {\whileexpr#1\do{#2}}%
}
\newcount\colnum
\newcommand\generaterow[2]{%
  \colnum\z@
  \whileexpr\ifnum\colnum<#2\relax\do{%
    #1\advance\colnum\@ne\the\colnum\relax
  }%
}
\makeatother

\begin{document}
% Test (worked):
\generaterow{x}{3}% -> x1x2x3

% Failed:
\begin{tabular}{|*{4}{c|}}
  \hline
  x\generaterow{&}{3}\\\hline
\end{tabular}

\end{document}

答案1

我看到了这个问题:在 \halign 中不能拆分条件&。每个单元格都在一个对齐组中执行。以下方法有效。它允许条件在&放置/执行材料(包括对齐字符)之前完成执行。

\def\whileexpr#1\do#2{%
  #1\expandafter\@iden\else\expandafter\@gobble\fi
  {#2\whileexpr#1\do{#2}}%
}

相关内容