表格内的重复

表格内的重复

有没有简单的方法可以在表格环境中执行重复?

这就是我打算做的:

\documentclass[a4paper,10pt]{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{ifthen}


\newcommand\encircle[1]{%
  \tikz[baseline=(X.base)] 
    \node (X) [draw, shape=circle, inner sep=0] {\strut #1};}

\begin{document}

\renewcommand{\arraystretch}{1.25}

\pagestyle{empty}

\begin{tabular}{|c|c|c|c|c|c|}
  \hline
  \newcounter{qno}
  \setcounter{qno}{1}
  \whiledo{\value{qno} < 41}{
  \theqno.
  & \encircle{a}
  & \encircle{b}
  & \encircle{c}
  & \encircle{d}
  & \encircle{e}
  \\
  \hline
  \stepcounter{qno}  
  }
\end{tabular}


\end{document}

但它会产生一个编译错误、一个空白页和一个末尾有三行额外行的表格。

我知道可能的解决方案,但我想知道是否有任何不需要重新定义事物的解决方案。

答案1

使用 很容易expl3,因为它\int_step_function:nnnN在 TeX 重新启动以检查输出之前提供其结果。

\documentclass[a4paper,10pt]{scrartcl}

\usepackage{tikz}
\usepackage{xparse}

\newcommand\encircle[1]{%
  \begin{tikzpicture}[baseline=(X.base)]
  \node (X) [draw, shape=circle, inner sep=0] {\strut #1};
  \end{tikzpicture}%
}

\ExplSyntaxOn
\NewDocumentCommand{\maketabularlines}{mm}
 {
  \int_step_function:nnnN { 1 } { 1 } { #1 } #2
 }
\ExplSyntaxOff
\NewDocumentCommand{\abcdeline}{m}{%
  #1. 
  & \encircle{a}
  & \encircle{b}
  & \encircle{c}
  & \encircle{d}
  & \encircle{e}
  \\
  \hline
 }

\begin{document}

\renewcommand{\arraystretch}{1.25}

\begin{tabular}{|c|c|c|c|c|c|}
\hline
\maketabularlines{10}{\abcdeline}
\end{tabular}

\end{document}

您可以使用不同的宏来代替,\abcdeline只要宏的参数是循环中的当前索引即可。

在此处输入图片描述

相关内容