在包含彩色单元格的表格中,我希望\hline
只划分一些单元格,类似于\cline
但与使用着色单个单元格兼容\cellcolor
,这可以通过使用\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
- 如果黑色单元格的外观应该是
\multirow
-esque,那么将线条涂成黑色就可以了。为此,我使用 a-
而不是~
来绘制第二列的水平规则; - 使用
|
表示“垂直线‘切过’双(或单)水平线”(根据hhline
文档)。\hhline
最后从您的规范中删除它将会删除“hline 片段”。 由于您将
\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
指定的规则未在块 (由 命令 构建) 中绘制。\Hline
nicematrix
\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 节点)。