\hhline 在不需要线条的地方添加白线

\hhline 在不需要线条的地方添加白线

在包含彩色单元格的表格中,我希望\hline只划分一些单元格,类似于\cline但与使用着色单个单元格兼容\cellcolor,这可以通过使用\hhline拟合参数来实现。

现在我来看看附加的代码,其结果是: 表格_hhline

有两点我想解决。

首先,黑色单元格不应被白线划过。由于它们在最终文档中不会是黑色,所以我也希望它们不是黑色。有没有办法完全不画任何线?这些单元格应该看起来像多行单元格,颜色一致。

第二个问题是表格右端的 hline 碎片。我该如何去除它们?

完整代码:

\documentclass[11pt]{article}

\usepackage{color}
\usepackage{colortbl}
\usepackage{multirow}
\usepackage{hhline}

\setlength{\arrayrulewidth}{1pt}


\begin{document}
% Empty table
\begin{tabular}{*{5}{!{\vrule width 1.5pt}p{1.5cm}}!{\vrule width 1.5pt}l}
\centering 4 &
\centering 10 &
\centering 24 &
\centering 48 &
\centering 72 &\\ \hhline{*{5}{|-}|~|}
 &  &  &  &  & Optic tectum \\ \hhline{*{2}{|~}*{3}{|-}|~|}
 &  &  &  &  & Retina \\ \hhline{*{2}{|~}*{3}{|-}|~|}
 &  &  &  &  & Myomeres \\ \hhline{*{5}{|-}|~|}
 &  &  &  &  & Arches \\ \hhline{*{5}{|-}|~|}
\end{tabular} \\

\hspace*{1cm}

% Partically filled table
\begin{tabular}{*{5}{!{\vrule width 1.5pt}p{1.5cm}}!{\vrule width 1.5pt}l}
\centering 4 &
\centering 10 &
\centering 24 &
\centering 48 &
\centering 72 &\\ \hhline{*{5}{|-}|~|}
 & \cellcolor{black} &  & \cellcolor{green} &  & Optic tectum \\ \hhline{*{2}{|~}*{3}{|-}|~|}
 & \cellcolor{black} &  & \cellcolor{red} &  & Retina \\ \hhline{*{2}{|~}*{3}{|-}|~|}
 & \cellcolor{black} &  & \cellcolor{blue} &  & Myomeres \\ \hhline{*{5}{|-}|~|}
 & \cellcolor{blue} &  & \cellcolor{yellow} &  & Arches \\ \hhline{*{5}{|-}|~|}
\end{tabular}

\end{document}

答案1

您正在指定最后一个 hhline 片段

\hhline{*{2}{|~}*{3}{|-}|~|}

你需要

 \hhline{*{2}{|~}*{3}{|-}|~}

“白线”不是在黑色背景上绘制的规则,它只是缺少背景,因此您需要填充它,最简单的方法,如上一个问题所示,不是使用~\hhline它完全按照您的要求操作,并且根本不绘制任何线)而是使用但使用与单元格颜色匹配的-规则。>{...}

答案2

  1. 如果黑色单元格的外观应该是\multirow-esque,那么将线条涂成黑色就可以了。为此,我使用 a-而不是~来绘制第二列的水平规则;
  2. 使用|表示“垂直线‘切过’双(或单)水平线”(根据hhline文档)。\hhline最后从您的规范中删除它将会删除“hline 片段”。
  3. 由于您将\vline 1.5pt其用作列分区,因此您也可以使用

    \setlength{\arrayrulewidth}{1.5pt}
    

    使表格的外观保持一致。否则,您会注意到垂直规则中存在小的缩进。

以下是展示上述内容的 MWE:

在此处输入图片描述

\documentclass[11pt]{article}
%\usepackage{color}% http://ctan.org/pkg/color
%\usepackage{multirow}% http://ctan.org/pkg/multirow
\usepackage{colortbl}% http://ctan.org/pkg/colortbl
\usepackage{hhline}% http://ctan.org/pkg/hhline

\begin{document}
% Empty table
\setlength{\arrayrulewidth}{1pt}%
\begin{tabular}{*{5}{!{\vrule width 1.5pt}p{1.5cm}}!{\vrule width 1.5pt}l}
\centering 4 &
\centering 10 &
\centering 24 &
\centering 48 &
\centering 72 &\\ \hhline{*{5}{|-}|~|}
 &  &  &  &  & Optic tectum \\ \hhline{*{2}{|~}*{3}{|-}|~|}
 &  &  &  &  & Retina \\ \hhline{*{2}{|~}*{3}{|-}|~|}
 &  &  &  &  & Myomeres \\ \hhline{*{5}{|-}|~|}
 &  &  &  &  & Arches \\ \hhline{*{5}{|-}|~|}
\end{tabular}

\bigskip

% Partically filled table
\setlength{\arrayrulewidth}{1.5pt}%
\begin{tabular}{*{5}{|p{1.5cm}}|l}
\centering 4 &
\centering 10 &
\centering 24 &
\centering 48 &
\centering 72 &\\ \hhline{*{5}{|-}|~}
 & \cellcolor{black} &  & \cellcolor{green} &  & Optic tectum \\ \hhline{|~*{4}{|-}|~}
 & \cellcolor{black} &  & \cellcolor{red} &  & Retina \\ \hhline{|~*{4}{|-}|~}
 & \cellcolor{black} &  & \cellcolor{blue} &  & Myomeres \\ \hhline{*{5}{|-}|~}
 & \cellcolor{blue} &  & \cellcolor{yellow} &  & Arches \\ \hhline{*{5}{|-}|~}
\end{tabular}

\end{document}

答案3

您可以使用 轻松构建该表{NiceTabular}。命令(的)nicematrix指定的规则未在块 (由 命令 构建) 中绘制。\Hlinenicematrix\Block

\documentclass[11pt]{article}
\usepackage{nicematrix}
\setlength{\arrayrulewidth}{1pt}

\begin{document}

\begin{NiceTabular}{*{5}{p{1.5cm}}}[colortbl-like,last-col,vlines,rules/width=1.5pt]
\centering 4 &
\centering 10 &
\centering 24 &
\centering 48 &
\centering 72 &\\ 
\Hline
\Block{*-1}{} 
 & \Block[fill=red!15]{3-1}{} 
    &  & \cellcolor{green} &  & Optic tectum \\ 
\Hline
 &  &  & \cellcolor{red} &  & Retina \\ 
\Hline
 &  &  & \cellcolor{blue} &  & Myomeres \\ 
\Hline
 & \cellcolor{blue} 
    &  & \cellcolor{yellow} &  & Arches \\ 
\Hline
\end{NiceTabular}

\end{document}

您需要多次编译(因为nicematrix在后台使用 PGF/Tikz 节点)。

上述代码的输出

相关内容