表中 \omit 位置错误,命令末尾 {} 位置错误

表中 \omit 位置错误,命令末尾 {} 位置错误

以下 LaTeX 文档无法编译。

\documentclass{article}

\usepackage{booktabs}
\usepackage{ltablex}
\usepackage[]{multirow}
\usepackage{lipsum}

\begin{document}

\noindent{}
\begin{tabularx}{\linewidth}{Xl}
  \bottomrule{}%
  \multicolumn{2}{c}{TESTING}\\*\midrule{}%
  \textbf{Left} & \textbf{Right}\\*\toprule{}%
  \endfirsthead{}%
  %
  \toprule{}%
  \multicolumn{2}{c}{\emph{continuing}}\\*\midrule{}%
  \textbf{Left} & \textbf{Right}\\*\bottomrule{}%
  \endhead{}%
  %
  \lipsum[1][1-2] & first  \\\midrule{}%
  \lipsum[2][1-2] & second \\\midrule{}%
  \lipsum[3][1-2] & third  \\\midrule{}%
  \lipsum[4][1-2] & third  \\\bottomrule{}%
\end{tabularx}

\end{document}

pdflatex 给出错误消息:

! Misplaced \omit.
\multispan ->\omit 
                   \@multispan 
l.26 \end{tabularx}

我观察到,如果{}%从源中删除,它就会编译。

这种行为该如何解释?

我正在处理的实际文档是由 Haskell 程序使用哈特克斯库,用于附加{}到没有参数的命令。

答案1

之后不会{}产生\noindentTeX 错误,但是之后的换行符会强制产生错误的输出,因为段落过早开始了,换行符会在段落开头产生一个不可丢弃的空格,这看起来有点像缩进,但不是固定的缩进,而是\parindent一个单词空格。

比较以下两段:

在此处输入图片描述

\documentclass{article}

\begin{document}


\noindent
AAA

\noindent{}
AAA
\end{document}

\multicolumn必须是其单元格中的第一个命令(扩展后),任何不可扩展的标记都会导致\multicolumn生成错误,因为更改单元格模板为时已晚。

因此该示例可以简化为

\documentclass{article}

\begin{document}


\begin{tabular}{c}
a\\
{}\multicolumn{1}{l}{x}  
\end{tabular}

\end{document}

从而产生

! Misplaced \omit.
\multispan ->\omit 
                   \@multispan 
l.8 {}\multicolumn{1}{l}{x}

相关内容