环境对 \multicolumn 命令的放置非常敏感。 !Misplaced \omit

环境对 \multicolumn 命令的放置非常敏感。 !Misplaced \omit

在下面的 MWE 中,当我从表格环境中省略以下代码时,输​​出会正确显示:

\multicolumn{6}{|c|}{The sentence below is an example of the polite past tense}\\\hline

此外,“bottom”\multicolumn命令也能正确显示。

奇怪的是(至少对我来说),当我确实包括上面的代码,表格输出变得混乱。请比较下面的两个图以更好地理解我的意思。

到目前为止,一切都很好

放错位置 \omit 错误。

我该如何调整代码以便两个\multicolumn语句都能正确显示,而不会混淆表中的其他内容?

这是 MWE。请注意,我已注释掉导致问题的部分:

\documentclass[10pt, a4paper]{ltjbook}
\usepackage{luatexja}
\usepackage{amsmath}
\usepackage{environ}
\usepackage{tabularx}
\usepackage{hhline}
\usepackage[table]{xcolor}

\newcolumntype{A}{>{\centering\let\newline\\\arraybackslash}X}

\NewEnviron{decomp}[1]
{%
\begin{tabularx}{\columnwidth}{|*{#1}{@{}A}@{}|}%
\hhline{|*{#1}{-}|}\multicolumn{#1}{|c|}{\cellcolor{lightgray}\textbf{$\lbrace\cdot\cdot\cdot\rbrace$ Sample Sentence}}\\%
\hhline{|*{#1}{-}|}\rule{0pt}{\baselineskip}%
\BODY%
\end{tabularx}%
}

\begin{document}

\begin{decomp}{6}
%\multicolumn{6}{|c|}{The sentence below is an example of the polite past tense.}\\\hline
先生&は&一週間&前&に&来ました。\\\hline
センセイ&は&イッシュウカン&まえ&に&きました。\\\hline
teacher&は&1 week&before&に&came\\\hline
\multicolumn{6}{|r|}{\textit{The teacher came a week ago.}}\\\hline
\end{decomp}
\end{document}

答案1

这与tabularx或无关environ

你有

\hhline{|*{#1}{-}|}\rule{0pt}{\baselineskip}%

因此,您已经使用规则启动了单元格,您会得到相同的错误

\documentclass{article}

\begin{document}

\begin{tabular}{cc}
  a&b\\\hline\rule{1pt}{1pt}%
  \multicolumn{2}{c}{bang}
\end{tabular}
\end{document}

答案2

根据大卫卡莱尔的上述回答:

\documentclass[10pt, a4paper]{ltjbook}
\usepackage{luatexja}
\usepackage{amsmath}
\usepackage{environ}
\usepackage{tabularx}
\usepackage{hhline}
\usepackage[table]{xcolor}

\newcolumntype{A}{>{\centering\let\newline\\\arraybackslash}X}

\NewEnviron{decomp}[1]
{%
\begin{tabularx}{\columnwidth}{|*{#1}{@{}A}@{}|}%
\hhline{|*{#1}{-}|}\multicolumn{#1}{|c|}{\cellcolor{lightgray}\textbf{$\lbrace\cdot\cdot\cdot\rbrace$ Sample Sentence}}\\\hline
\BODY%
\end{tabularx}%
}

\begin{document}

\begin{decomp}{6}
\multicolumn{6}{|l|}{The sentence below is an example of the polite past tense.}\\\hline
先生&は&一週間&前&に&来ました。\\\hline
センセイ&は&イッシュウカン&まえ&に&きました。\\\hline
teacher&は&1 week&before&に&came\\\hline
\multicolumn{6}{|r|}{\textit{The teacher came a week ago.}}\\\hline
\end{decomp}
\end{document}

相关内容