\hhline 以 || 分隔彩色表格

\hhline 以 || 分隔彩色表格

我想创建一个如下所示的表格。booktabs不幸的是,使用不是一个选项。我需要为表格标题着色,并希望显示在哪些列中\multicolumn使用了 s。因此,我使用\hhlinewith||在行中引入一个小的中断。但两条线之间的空间是白色的,没有颜色。

\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只是添加了额外的 \rules。

\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 节点)。

上述代码的输出

相关内容