我想使用行着色\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
,因为它没有任何用处。