![生成简单表(使用 foreach?)](https://linux22.com/image/460842/%E7%94%9F%E6%88%90%E7%AE%80%E5%8D%95%E8%A1%A8%EF%BC%88%E4%BD%BF%E7%94%A8%20foreach%EF%BC%9F%EF%BC%89.png)
我正在尝试使用 \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
。