我应该把 \noalign 放在哪里?

我应该把 \noalign 放在哪里?

我正在编写一个命令来生成一个包含 #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}

在此处输入图片描述

相关内容