我想创建一个如下所示的表格。booktabs
不幸的是,使用不是一个选项。我需要为表格标题着色,并希望显示在哪些列中\multicolumn
使用了 s。因此,我使用\hhline
with||
在行中引入一个小的中断。但两条线之间的空间是白色的,没有颜色。
\documentclass[]{article}
\usepackage[table]{xcolor}
\usepackage{hhline}
\begin{document}
\begin{tabular}[]{ccccc}
\hline
\rowcolor{gray}\multicolumn{3}{c}{Foo} & \multicolumn{2}{c}{Bar}\\
\hhline{---||--}
\rowcolor{gray}foo & bar & baz & bang & bang\\
\hline
foo & bar & baz & bang & bang\\
foo & bar & baz & bang & bang\\
foo & bar & baz & bang & bang\\
\hline
\end{tabular}
\end{document}
解决方案不必使用hhline
但应该看起来像\cline
。
答案1
您可以使用补充空列并利用 \hhline 具有不同颜色段的可能性来获得所需的内容。以下是一段代码,我擅自将灰色替换为浅灰色,使彩色单元格的内容更具可读性:
\documentclass[]{article}
\usepackage[table, svgnames]{xcolor}
\usepackage{hhline}
\begin{document}
\begin{tabular}[]{ccc!{\hspace*{-2pt}}c!{\hspace*{-2pt}}cc}
\hline
\rowcolor{WhiteSmoke}\multicolumn{3}{c}{Foo}& & \multicolumn{2}{c}{Bar}\\%
\hhline{--->{\arrayrulecolor{WhiteSmoke}}->{\arrayrulecolor{black}}--}
\rowcolor{WhiteSmoke}foo & bar & baz & & bang & bang \\
\hline
foo & bar & baz & & bang & bang\\
foo & bar & baz & & bang & bang\\
foo & bar & baz & & bang & bang\\
\hline
\end{tabular}
\end{document}
答案2
我想到了一个看起来比在 s\hhline
之间的空格中插入正确颜色的方法更好的解决方案(恕我直言) \cline
。 的定义\@mycline
与 的定义相匹配,\@cline
只是添加了额外的
\rule
s。
\documentclass[border=2mm]{article}
\usepackage[table]{xcolor}
\usepackage{array}
\usepackage{hhline}
\definecolor{tablegray}{gray}{0.85}
\makeatletter
\newcommand*\myclineColor[1]{\colorlet{mycline@color}{#1}}
\myclineColor{tablegray}
\newcommand*\mycline[1]{\@mycline#1\@nil}
\def\@mycline#1-#2\@nil
{%
\omit
\@multicnt#1%
\advance\@multispan\m@ne
\ifnum\@multicnt=\@ne
\@firstofone{&\omit}%
\fi
\@multicnt#2%
\advance\@multicnt -#1%
\advance\@multispan\@ne
{\color{mycline@color}\rule{0.5\tabcolsep}\arrayrulewidth}% inserted
{\CT@arc@\leaders\hrule\@height\arrayrulewidth\hfill}%
{\color{mycline@color}\rule{0.5\tabcolsep}\arrayrulewidth}% inserted
\cr\noalign{\vskip-\arrayrulewidth}%
}
\makeatother
\begin{document}
\begin{tabular}[]{ccccc}
\hline
\rowcolor{tablegray}\multicolumn{3}{c}{Foo} & \multicolumn{2}{c}{Bar}\\
\mycline{1-3}\mycline{4-5}\noalign{\vskip\arrayrulewidth}
\rowcolor{tablegray}foo & bar & baz & bang & bang\\
\hline
foo & bar & baz & bang & bang\\
foo & bar & baz & bang & bang\\
foo & bar & baz & bang & bang\\
\hline
\end{tabular}\medskip
\end{document}
答案3
这里有一个解决方案{NiceTabular}
,nicematrix
它提供了以符合规则的方式为表格着色的工具booktabs
。
\documentclass{article}
\usepackage{nicematrix}
\usepackage{booktabs}
\begin{document}
\begin{NiceTabular}{ccccc}
\CodeBefore
\rowcolor{gray!40}{1,2}
\Body
\toprule
\Block{1-3}{Foo} &&& \Block{1-2}{Bar} \\
\cmidrule(lr){1-3} \cmidrule(lr){4-5}
foo & bar & baz & bang & bang \\
\midrule
foo & bar & baz & bang & bang \\
foo & bar & baz & bang & bang \\
foo & bar & baz & bang & bang \\
foo & bar & baz & bang & bang \\
foo & bar & baz & bang & bang \\
\bottomrule
\end{NiceTabular}
\end{document}
您需要多次编译(因为nicematrix
在后台使用 PGF/Tikz 节点)。