多列中 rowcolor 后面 noalign 位置错误

多列中 rowcolor 后面 noalign 位置错误

我想使用行着色\multicolumn。下面的 MWE 可以工作,但如果我更改为注释的彩色行,我会收到“放错位置的 \noalign”。我做错了什么?

\documentclass{article}
\usepackage{booktabs,colortbl,xcolor}
\begin{document}

\begin{tabular}{p{1.7cm}p{1.3cm}p{1.3cm}p{1.35cm}p{1.35cm}p{1.35cm}p{1.35cm}p{1.7cm}} %
\toprule
% \multicolumn{1}{>{\rowcolor{lightgray}}c}{}  &\multicolumn{7}{>{\rowcolor{lightgray}}c}{String length}\\
 \multicolumn{1}{c}{}  &\multicolumn{7}{c}{String length}\\
\rowcolor{lightgray} Function & 16,384 & 32,768& 65,536 & 130,072 & 262,144 & 524,288& 1,048,576\\
\midrule
lower1  & 0.19 & 0.77 & 3.08 & 12.24 & 49.39 & 198.42 & 791.22\\
lower2& 0.0000 &  0.0000 & 0.0001 & 0.0002 & 0.0004 & 0.0008 & 0.0015\\
\bottomrule
\end{tabular}

\end{document}

我正在尝试这样的解决方案,因为我收到了奇怪的表格标题,如下所示。您建议的代码在 MWE 中运行良好,但在我的真实文本中,从答案中复制粘贴后,它会产生奇怪的标题。有什么想法,什么可以改变这种行为? 在此处输入图片描述

答案1

\rowcolor用于行,并用于在新行的开头。使用 时\multicolumn,您实际上是在引用单元格。因此,请使用\cellcolor。此外,我将创建一个新的\toprule和 ,\midrule以将标题颜色与规则结合起来。

在此处输入图片描述

\documentclass{article}
\usepackage{booktabs,colortbl,xcolor}

\newcommand{\toprulec}{\arrayrulecolor{black}\specialrule{0.1em}{\abovetopsep}{0pt}%
            \arrayrulecolor{lightgray}\specialrule{\belowrulesep}{0pt}{0pt}%
            \arrayrulecolor{black}}
\newcommand{\midrulec}{\arrayrulecolor{lightgray}\specialrule{\aboverulesep}{0pt}{0pt}%
            \arrayrulecolor{black}\specialrule{\lightrulewidth}{0pt}{0pt}%
            \arrayrulecolor{white}\specialrule{\belowrulesep}{0pt}{0pt}%
            \arrayrulecolor{black}}

\begin{document}

\begin{tabular}{ p{1.7cm} *{2}{p{1.3cm}} *{4}{p{1.35cm}} p{1.7cm} } %
  \toprulec
  \multicolumn{1}{c}{\cellcolor{lightgray}} &\multicolumn{7}{c}{\cellcolor{lightgray}String length} \\
  \rowcolor{lightgray} Function & 16,384 & 32,768& 65,536 & 130,072 & 262,144 & 524,288& 1,048,576 \\
  \midrulec
  lower1  & 0.19 & 0.77 & 3.08 & 12.24 & 49.39 & 198.42 & 791.22\\
  lower2& 0.0000 &  0.0000 & 0.0001 & 0.0002 & 0.0004 & 0.0008 & 0.0015\\
  \bottomrule
\end{tabular}

\end{document}

答案2

\rowcolor应该在一行的开头给出,而不是以您尝试使用它的方式给出。

\documentclass{article}
\usepackage{booktabs}
\usepackage[table]{xcolor}

\begin{document}

\begin{tabular}{p{1.7cm}p{1.3cm}p{1.3cm}p{1.35cm}p{1.35cm}p{1.35cm}p{1.35cm}p{1.7cm}}
\toprule
\rowcolor{lightgray}& \multicolumn{7}{c}{String length}\\
\rowcolor{lightgray}%
Function & 16,384 & 32,768& 65,536 & 130,072 & 262,144 & 524,288& 1,048,576\\
\midrule
lower1 & 0.19 & 0.77 & 3.08 & 12.24 & 49.39 & 198.42 & 791.22\\
lower2 & 0.0000 &  0.0000 & 0.0001 & 0.0002 & 0.0004 & 0.0008 & 0.0015\\
\bottomrule
\end{tabular}

\end{document}

在此处输入图片描述

我会避免使用\midrule,因为它没有任何用处。

相关内容