我正在编写一个命令来生成一个包含 #1 行和 #2 列的表格。它生成了表格,但是无论我在哪里放置它,\noalign
我都会收到一条消息,说它放错了地方。
代码如下:
\renewcommand{\table}[2]{ \newcounter{loop1} \newcounter{loop2}
\setlength\tabcolsep{6pt}
%Title:
\noalign \\
\begin{tabularx}{\textwidth}{|*{#1}{X|}} \hline
\forloop{loop1}{1}{\value{loop1}<#1}{ hi & sa } %first box \\ \hline
\forloop{loop2}{2}{\value{loop2}<#2}{
\forloop{loop1}{1}{\value{loop1}<#1}{ hi & sa } \\ \hline}
\forloop{loop1}{1}{\value{loop1}<#1}{ hi & sa } %Last box \\ \hline
\end{tabularx} }
并且\noalign
是位于“标题”一词下方的那个。我该如何放置它,以便我的表格(最好是“标题”一词)不缩进?我做错了什么?
答案1
这是单元格组结束后仍能继续expl3
使用的解决方案\prg_replicate:nn
。其复制功能是生成空单元格等的合适工具,用于手动填写表格,例如会议中的班级列表或成员列表等。
\prg_replicate:nn
比一堆\forloop
语句简单多了。
\documentclass{article}
\usepackage{xparse}
\usepackage{tabularx}
\ExplSyntaxOn
\NewDocumentCommand{\colrowtable}{mm}{%
\prg_replicate:nn {#1}{%
#2%
}
}
\ExplSyntaxOff
\NewDocumentCommand{\mytable}{mmm}{%
\begin{tabularx}{\textwidth}{|*{#2}{X|}}
\hline
\colrowtable{#1}{#3\tabularnewline\hline}
\end{tabularx}
}
\begin{document}
\begin{table}
\centering
Table
\bigskip
\mytable{10}{4}{hi & sa & do & now}
\end{table}
\end{document}