表格对齐错误

表格对齐错误

下面的代码

\documentclass{article} 
\usepackage[dvipsnames]{xcolor}
\usepackage{colortbl}

\definecolor{myGray}{HTML}{F2F2F2}
\newcolumntype{G}{>{\columncolor{myGray}\centering$}m{6mm}<{$}}
\newcolumntype{M}{>{\centering$}m{6mm}<{$}}
\newcolumntype{C}{>{$}c<{$}}

\begin{document}
\begin{tabular}{|G|M|M|M|M|}
    \hline
    \rowcolor{myGray} \times & 1 & i & j & k \\\hline
    1 & 1 & i & j & k \\\hline
    i & i & -1 & k & -j \\\hline
    j & j & -k & -1 & i \\\hline
    k & k & j & -i & -1 \\\hline
\end{tabular}
\end{document}

创建此错误消息:

! LaTeX Error: There's no line here to end.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              
                                                  
l.13 ...rowcolor{myGray} \times & 1 & i & j & k \\
                                                  \hline

当我将表格的对齐方式从 修改为 时{|G|M|M|M|M|}{|G|M|M|M|m|}它确实起作用了。但我认为 的定义M没有错。

答案1

问题是 LaTeX 宏\centerig重新定义\\

\DeclareRobustCommand\centering{%
  \let\\\@centercr  %% <<< this is re-definition of \\
  \rightskip\@flushglue\leftskip\@flushglue
  \finalhyphendemerits=\z@
  \parindent\z@\parfillskip\z@skip}
\protected\def\@centercr{\ifhmode \unskip\else \@nolnerr\fi
       \par\@ifstar{\nobreak\@xcentercr}\@xcentercr}
\gdef\@nolnerr{%
  \@latex@error{There's no line here to end}\@eha}

测试\ifhmode失败,因为发生这种情况时您处于数学模式\\

一个解决方案是不使用\centering宏而是使用 TeX 原语,\hfil因为您只想将单行段落居中:

\newcolumntype{M}{>{\hfil $}m{6mm}<{$}}

答案2

对于您的问题(定义列类型),您可以通过更多方式避免:

  • 考虑@Mico 评论,
  • 考虑@wipet 的回答,
  • 而不是\\使用\tabularnewline
  • 也可以通过使用tabularray包:
\documentclass{article}
\usepackage[dvipsnames]{xcolor}
\definecolor{myGray}{HTML}{F2F2F2}
\usepackage{tabularray}

\begin{document}
\begin{tblr}{hlines, vlines,
             colspec = {Q[c,bg=myGray, mode=math] *{4}{Q[c, mode=math]}},
             row{1} = {bg=myGray}
             }
\times  & 1 &  i &  j &  k  \\ 
    1   & 1 &  i &  j &  k  \\ 
    i   & i & -1 &  k & -j  \\ 
    j   & j & -k & -1 &  i  \\ 
    k   & k &  j & -i & -1  \\ 
\end{tblr}
\end{document}

在此处输入图片描述

相关内容