\multicolumn 或类似名称之前的定义?

\multicolumn 或类似名称之前的定义?

是否可以使定义在表格行的第一个单元格的开头生效(array.sty如果相关,使用),同时仍为 、 等留出空间\multicolumn\hline当然,问题是这些命令以 开头\omit,这会因单元格中已输入的任何内容而受到影响。

我已经能够解决这个问题(通过使用全局变量和模拟范围,或者通过创建我自己的多列命令),但我想知道是否有一些简单、非黑客的方式来做到这一点?直观地看,在我看来,没有必要担心单元格中之前是否有定义,因为它不使用未更改的格式……?

我知道在 之前不能有内容\omit,是的,一般来说你会想放一些东西里面例如\multicoumn,但是我在这里特别想要的是将定义放在 之前\omit。(如果这无论如何都不可能,我还有其他不太令人满意的解决方案 :-)

我的想法是,也许存在类似的东西\use_none:n,可以真正执行定义,但不会在输入流中留下任何标记——也许通过应用\exp_args:No\use_none:n执行定义。

以下是 MWE:

\documentclass{article}
\usepackage{array, expl3}

\begin{document}

\ExplSyntaxOn

% % Problem with \omit
% \begin{tabular}{ll}
%     Goodbye, & cruel \\
%     \tl_set:Nn \l_mlh_place_tl {World}
%         \multicolumn{2}{l}{\l_mlh_place_tl}
% \end{tabular}
%
% % No definition happens
% \begin{tabular}{ll}
%     Goodbye, & cruel \\
%     \use_none:n { \tl_set:Nn \l_mlh_place_tl {world} }
%         \multicolumn{2}{l}{\l_mlh_place_tl}
% \end{tabular}

% Still no definition happens
\begin{tabular}{ll}
    Goodbye, & cruel \\
    \exp_args:No \use_none:n { \tl_set:Nn \l_mlh_place_tl {world} }
        \multicolumn{2}{l}{\l_mlh_place_tl}
\end{tabular}

\ExplSyntaxOff

\end{document}

答案1

如果你不介意全局定义,并且你位于一行的开头,你可以使用

\noalign{\gdef\l_mlh_place_tl {world}}

但要想领先于中间一\multicolumn排,你可能需要更加努力

在此处输入图片描述

\documentclass{article}
\usepackage{array}

\begin{document}



\begin{tabular}{|l|l|l|}
  1&2&3\\
    Goodbye, & cruel &zzz\\
   $\rightarrow$      &
  \omit
   \def\zzz{WORLD}%
    \bgroup\def\omit{\egroup}%
    \multicolumn{2}{l|}{\zzz}
\end{tabular}



\end{document}

相关内容