改变列中的空间时如何避免 \cellcolor 溢出?

改变列中的空间时如何避免 \cellcolor 溢出?

@{}我通过使用列类型减少了列中的空间:

\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 查看器,无论缩放级别如何,垂直规则似乎都不会消失。

上述代码的输出

相关内容