![改变列中的空间时如何避免 \cellcolor 溢出?](https://linux22.com/image/245200/%E6%94%B9%E5%8F%98%E5%88%97%E4%B8%AD%E7%9A%84%E7%A9%BA%E9%97%B4%E6%97%B6%E5%A6%82%E4%BD%95%E9%81%BF%E5%85%8D%20%5Ccellcolor%20%E6%BA%A2%E5%87%BA%EF%BC%9F.png)
@{}
我通过使用列类型减少了列中的空间:
\newcolumntype{M}{@{}c@{}}
问题是,当我将其与\cellcolor
命令结合使用时,它会溢出到其他列。如果我删除@{}
空间修改,那么它会将其设置正确。
\cellcolor
那么,既然我减少了该列的空间,我该如何让命令执行呢?
\documentclass{article}
\usepackage[table]{xcolor}
\usepackage{array}
\newcolumntype{M}{@{}c@{}}
\begin{document}
\pagestyle{empty}
\begin{table}
\begin{tabular}{l|M|c|M|M}
& a & b & c & d\\
a & \cellcolor{black!50} 90.6 & 10 & 0 & 0\\
b & 0 & \cellcolor{black!50} 90.0 & 10 & 10\\
c & 0 & 0 & 95 & \cellcolor{black!50} 5\\
d & 0 & 10 & 5.5 & 8\\
\end{tabular}
\end{table}
\end{document}
答案1
伪造列颜色:
\documentclass{standalone}
\usepackage[table]{xcolor}
\usepackage{array}
\newcolumntype{M}{@{}>{\columncolor{white}[0pt][0pt]}c@{}}
\begin{document}
\pagestyle{empty}
\begin{table}
\begin{tabular}{l|M|c|M|M}
& a & b & c & d\\
a & \cellcolor{black!50} 90.6 & 10 & 0 & 0\\
b & 0 & \cellcolor{black!50} 90.0 & 10 & 10\\
c & 0 & 0 & 95 & \cellcolor{black!50} 5\\
d & 0 & 10 & 5.5 & 8\\
\end{tabular}
\end{table}
\end{document}
但是,您在查看垂直线时会遇到问题。在某些缩放值下,它们将不可见。打印没有问题。
答案2
该软件包中nicematrix
有专门用于解决此类问题的工具。
在您的 MWE 代码中,我已加载nicematrix
,替换{tabular}
为{NiceTabular}
并使用键color-inside
(别名:)colortbl-like
。该键指定主表格内有颜色说明。
输出直接符合预期(因为,使用nicematrix
,彩色面板是用 PGF/Tikz 绘制的,而不是用 的机制绘制的colortbl
)。
\documentclass{article}
\usepackage{xcolor}
\usepackage{array}
\newcolumntype{M}{@{}c@{}}
\usepackage{nicematrix}
\begin{document}
\pagestyle{empty}
\begin{table}
\begin{NiceTabular}{l|M|c|M|M}[color-inside]
& a & b & c & d\\
a & \cellcolor{black!50} 90.6 & 10 & 0 & 0\\
b & 0 & \cellcolor{black!50} 90.0 & 10 & 10\\
c & 0 & 0 & 95 & \cellcolor{black!50} 5\\
d & 0 & 10 & 5.5 & 8\\
\end{NiceTabular}
\end{table}
\end{document}
无论您使用什么 PDF 查看器,无论缩放级别如何,垂直规则似乎都不会消失。