\int_step_inline:nnnn 完成后是否会插入某些内容?

\int_step_inline:nnnn 完成后是否会插入某些内容?

以下代码片段

\RequirePackage{xparse}
\documentclass{article}

\usepackage{tabu}

\ExplSyntaxOn
\NewDocumentCommand\trop{}{
    \int_step_inline:nnnn{0}{1}{3}{
        a & b & c & d\\
    }
    \hline
}
\ExplSyntaxOff

\begin{document}
\begin{tabu}{|*{4}{X[c]|}}
    \trop
\end{tabu}
\end{document}

失败

! Misplaced \noalign.
\hline ->\noalign 
                  {\ifnum 0=`}\fi {\CT@arc@ \hrule height\arrayrulewidth }\f...
l.18 \end{tabu}

! Misplaced \noalign.
\hline ->\noalign 
                  {\ifnum 0=`}\fi {\CT@arc@ \hrule height\arrayrulewidth }\f...
l.18 \end{tabu}

! Misplaced \noalign.
\hline ->\noalign 
                  {\ifnum 0=`}\fi {\CT@arc@ \hrule height\arrayrulewidth }\f...
l.18 \end{tabu}

就像在最后一个\\和之间插入了一些东西\hline,但我不知道它是什么。这可能是tabu和 Expl 语法之间的不良交互吗?我尝试将\ExplSyntaxOn/Off直接放入其中tabu,但它们似乎没有任何效果。

答案1

事实并非如此tabu,标准也存在同样的问题tabular

\int_step_inline:nnnn结束其工作时,新的一行已经开始,您可以通过排版表格来看到\hline

\documentclass{article}
\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand\trop{}{
        \int_step_inline:nnnn{0}{1}{3}{
            a & b & c & d\\
        }
%        \hline
}
\ExplSyntaxOff

\begin{document}

\begin{tabular}{|c|c|c|c|}
    \trop
\end{tabular}

\end{document}

在此处输入图片描述

从某种意义上说,你的分析是正确的:就好像最后有一些无法扩展的东西,导致开始新的一行。

如果您的目的是提供多个相同的行,则可以使用\prg_replicate:nn

\documentclass{article}
\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand\trop{}
 {
  \prg_replicate:nn { 4 } { a & b & c & d \\ }
  \hline
 }
\ExplSyntaxOff

\begin{document}

\begin{tabular}{|c|c|c|c|}
    \trop
\end{tabular}

\end{document}

在此处输入图片描述

如果行具有根据当前步骤而变化的数据,则可以构建令牌列表并传递它。

\documentclass{article}
\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand\trop{}
 {
  \tl_clear:N \l_tmpa_tl
  \int_step_inline:nnnn { 0 } { 1 } { 3 }
   { \tl_put_right:Nn \l_tmpa_tl { ##1 & b & c & d \\ } }
  \tl_use:N \l_tmpa_tl
  \hline
 }
\ExplSyntaxOff

\begin{document}

\begin{tabular}{|c|c|c|c|}
    \trop
\end{tabular}

\end{document}

在此处输入图片描述

xparse顺便说一下,之前无需加载\documentclass

相关内容