![表格环境中具有水平线的单元格颜色](https://linux22.com/image/329732/%E8%A1%A8%E6%A0%BC%E7%8E%AF%E5%A2%83%E4%B8%AD%E5%85%B7%E6%9C%89%E6%B0%B4%E5%B9%B3%E7%BA%BF%E7%9A%84%E5%8D%95%E5%85%83%E6%A0%BC%E9%A2%9C%E8%89%B2.png)
我正在尝试用乳胶绘制下图:
但是,我的一些水平线似乎被单元格颜色弄模糊了,而一些垂直线根本就不显示。有人知道如何解决这个问题吗?
\documentclass{article}
\usepackage{colortbl}
\usepackage{hhline}
\begin{document}
\begin{tabular}{|llll|}
\hhline{*{4}{>{\arrayrulecolor{black}}-|}}
1 & 2 & 3 & 4 \\\hhline{*{4}{>{\arrayrulecolor{black}}-|}}
\cellcolor{blue} & 2 & 3 & 4 \\\hhline{*{4}{>{\arrayrulecolor{black}}-|}}
\cellcolor{blue} & \cellcolor{blue} & 3 & 4 \\\hhline{*{4}{>{\arrayrulecolor{black}}-|}}
\cellcolor{blue} & \cellcolor{blue} & \cellcolor{blue} & 4 \\\hhline{*{4}{>{\arrayrulecolor{black}}-|}}
\end{tabular}
\end{document}
答案1
不要使用hhline
插入规则。相反,使用array
确实更好地连接角落tabular
:
\documentclass{article}
\usepackage{colortbl,array}
\begin{document}
\begin{tabular}{| *{4}{l|} }
\hline
1 & 2 & 3 & 4 \\
\hline
\cellcolor{blue} & 2 & 3 & 4 \\
\hline
\cellcolor{blue} & \cellcolor{blue} & 3 & 4 \\
\hline
\cellcolor{blue} & \cellcolor{blue} & \cellcolor{blue} & 4 \\
\hline
\end{tabular}
\end{document}
答案2
该软件包nicematrix
有专门针对此类问题而设计的工具。它提供了{NiceTabular}
与经典环境{tabular}
(的array
)类似的环境,但规则和彩色面板由 PGF/Tikz 绘制。输出在所有 PDF 查看器中都是完美的。
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
\begin{NiceTabular}{llll}[hvlines,colortbl-like]
1 & 2 & 3 & 4 \\
\cellcolor{blue} & 2 & 3 & 4 \\
\cellcolor{blue} & \cellcolor{blue} & 3 & 4 \\
\cellcolor{blue} & \cellcolor{blue} & \cellcolor{blue} & 4 \\
\end{NiceTabular}
\end{document}
您需要多次编译(因为nicematrix
在后台使用 PGF/Tikz 节点)。
答案3
为了完整性,还有一个解决方案......
可以tabularray
实现以下结果:
\documentclass{article}
\usepackage{xcolor}
\usepackage{tabularray}
\begin{document}
\begin{tblr}{hlines, vlines,
cells = {c},
cell{2}{1} = {bg=blue6},
cell{3}{1-2} = {bg=blue6},
cell{4}{1-3} = {bg=blue6}
}
1 & 2 & 3 & 4 \\
& 2 & 3 & 4 \\
& & 3 & 4 \\
& & & 4 \\
\end{tblr}
\end{document}
编辑:
可以通过定义新的命令来为单元格着色来实现相同的结果,例如,\NewTableCommand\bc{\SetCell{bg=blue6}}
然后在每个需要着色的表格单元格中使用它:
\documentclass{article}
\usepackage{xcolor}
\usepackage{tabularray}
\NewTableCommand\bc{\SetCell{bg=blue6}}
\begin{document}
\begin{tblr}{hlines, vlines,
cells = {c},
}
1 & 2 & 3 & 4 \\
\bc & 2 & 3 & 4 \\
\bc &\bc & 3 & 4 \\
\bc &\bc &\bc & 4 \\
\end{tblr}
\end{document}
编译结果和以前相同。