生成简单表(使用 foreach?)

生成简单表(使用 foreach?)

我正在尝试使用 \foreach 生成一个简单的空表,但是由于以下错误它不起作用:

!缺失 \endgroup 插入。\endgroup l.13 ^^I^^I^^I} 我插入了一些您可能忘记的内容。(参见上文。)

我如何生成表格?

我的代码是:

\documentclass[letterpaper,oneside]{article}

\usepackage{multirow}
\usepackage{tabularx}
\usepackage{tikz}

\begin{document}

    \begin{tabular}{|c|c|c|}\hline
    \textbf{\#}&        \textbf{First name}     &       \textbf{Last name}      \\\hline\hline
    \multirow{2}{*}{1}      &&\\        &&      \\\hline
    \foreach \x in {2,3,...,25}{
        \multirow{2}{*}{\x}     &&\\        &&      \\\hline
        }
    \end{tabular}   
    
\end{document}

答案1

\foreach不能跨越表格单元格。

这是一个可以运行的版本。

\documentclass[letterpaper,oneside]{article}
\usepackage{array}

\ExplSyntaxOn
\NewDocumentCommand{\makerows}{mm}
 {% #1 = number of lines, #2 = template
  \cs_gset_protected:Nn \__lownds_makerow:n { #2 }
  \int_step_function:nN { #1 } \__lownds_makerow:n
 }
\cs_new_protected:Nn \__lownds_makerow:n {} % initialize
\ExplSyntaxOff

\begin{document}

\noindent
\begin{tabular}{|c|w{c}{10em}|w{c}{10em}|}
\hline
\textbf{\#} & \textbf{First name} & \textbf{Last name} \\
\hline
\makerows{10}{#1 & \vphantom{$\bigg|$} & \\ \hline}
\end{tabular}   
    
\end{document}

在此处输入图片描述

无需使用 来使事情复杂化\multirow。您可以决定单元格的不同宽度和行数。其想法是\int_step_function:nN一次性提供其结果,因此&\\是在生成整个表格内容后处理的。辅助函数的设置\__lownds_makerow:n必须是全局的,这样它才能在表格单元格的隐式分组中存活下来。

决定起点的变体。

\documentclass[letterpaper,oneside]{article}
\usepackage{array}

\ExplSyntaxOn
\NewDocumentCommand{\makerows}{O{1}mm}
 {% #1 = optional starting point, #2 = last number, #3 = template
  \cs_gset_protected:Nn \__lownds_makerow:n { #3 }
  \int_step_function:nnnN { #1 } { 1 } { #2 } \__lownds_makerow:n
 }
\cs_new_protected:Nn \__lownds_makerow:n {} % initialize
\ExplSyntaxOff

\begin{document}

\noindent
\begin{tabular}{|c|w{c}{10em}|w{c}{10em}|}
\hline
\textbf{\#} & \textbf{First name} & \textbf{Last name} \\
\hline
\makerows{10}{#1 & \vphantom{$\bigg|$} & \\ \hline }
\end{tabular}
    
\noindent
\begin{tabular}{|c|w{c}{10em}|w{c}{10em}|}
\hline
\textbf{\#} & \textbf{First name} & \textbf{Last name} \\
\hline
\makerows[11]{20}{#1 & \vphantom{$\bigg|$} & \\ \hline }
\end{tabular}
    
\end{document}

在此处输入图片描述

您可能还会考虑longtable

相关内容