如何结合 \seq_use:Nn 和 \seq_map_inline:Nn?

如何结合 \seq_use:Nn 和 \seq_map_inline:Nn?

以下“简单”的解决方案会引发错误:

ERROR: Misplaced \omit.

--- TeX said ---
\multispan ->\omit 
                   \@multispan 
l.13   }
         \\
--- HELP ---
From the .log file...

I expect to see \omit only after tab marks or the \cr of
an alignment. Proceed, and I'll ignore this case.
\documentclass{article}
\usepackage{expl3}
\ExplSyntaxOn

\begin{document}

\seq_set_split:Nnn \l_tmpa_seq { , } { 1 , 2 , 3 }

\begin{tabular}{*{\seq_count:N \l_tmpa_seq}{c}}
  hellow & world \\
  \seq_map_inline:Nn \l_tmpa_seq {
    \multicolumn{1}{|c|}{#1} &
  } \\
  goodbye & world
\end{tabular}
\end{document}

我想制作一张如下的表格:

  hello    world
|   1    |   2   | 3 |
 goodbye   world

解决这个问题最有效/最清晰的方法是什么?

答案1

您必须使用可扩展函数,因为任何不可扩展的标记\multicolumn在其后都会变得非法。

\documentclass{article}
\usepackage{expl3}
\ExplSyntaxOn

\begin{document}

\seq_set_split:Nnn \l_tmpa_seq { , } { 1 , 2 , 3 }
\seq_pop_left:NN \l_tmpa_seq \l_tmpa_tl
\cs_new:Npn \sean_add_mc:n #1
 {
  & \multicolumn{1}{c|}{#1}
 }

\begin{tabular}{*{\int_eval:n { \seq_count:N \l_tmpa_seq + 1 }}{c}}
  hellow & world & some \\
  \multicolumn{1}{|c|}{\l_tmpa_tl}
  \seq_map_function:NN \l_tmpa_seq \sean_add_mc:n \\
  goodbye & world & again
\end{tabular}
\end{document}

请注意,第一个项目应该被分离,因为它需要不同的处理。

在此处输入图片描述

相关内容