我创建了一个如下所示的表格:
现在,我想为第二行添加背景颜色。但是,当我这样做时,第二条垂直线消失了:
我无法解释这种行为。另外,我想要在第一行的两列(笛卡尔坐标和参考点)之间有一条垂直线。但对我来说,最重要的是,在添加背景颜色时,我已经拥有的垂直线会留在那里。
以下是我添加表格的方式:
\begin{table}[t!]
\centering
\begin{tabular}{c | c | c | c | c | c | c | c}
\hline
\multicolumn{3}{c}{Cartesian Coordinates} & \multicolumn{5}{c}{Reference Points} \\
\hline
\rowcolor[gray]{.70}
x & y & z & $\text{RP}_1$ & $\text{RP}_2$ & $\text{RP}_3$ & \dots & $\text{RP}_{80}$\\
\hline
$\text{x}_1$ & $\text{y}_1$ & $\text{z}_1$ & $-40$ & $-51$ & $-60$& \dots & $-84$ \\
$\text{x}_2$ & $\text{y}_2$ & $\text{z}_2$ & $-35$ & $-91$ & $-30$ & \dots & $-55$\\
\vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots \\
$\text{x}_\text{m}$ & $\text{y}_\text{m}$ & $\text{z}_\text{m}$ & $-20$ & $-320$ & $-41$ & \dots &$-23$
\end{tabular}
\caption{my Table.}
\label{myTable}
\end{table}
有人发现这其中有什么错误吗?
答案1
当你使用colortbl
,会绘制一条垂直线前右侧相邻单元格的彩色面板(这意味着指令在 PDF 内部流中按该顺序排列)。
PDF 查看器在处理此类构造时存在问题:在低分辨率下,它们通常优先考虑之后绘制的面板,而垂直规则有时似乎会消失(光栅化是一个非常复杂的过程,这就是为什么结果可能不统一,具体取决于可用的像素数)。
即使是非常现代的 PDF 渲染器(例如在和中PDFium
使用)似乎也有这种行为(但是在使用中可以获得更好的结果)。Chromium
Chrome
muPDF
SumatraPDF
我已尝试在包中解决该问题nicematrix
。
在这个包的环境中{NiceTabular}
,您可以使用工具来为行、列和单元格着色。彩色面板在所有规则之前绘制,因此在 PDF 查看器中效果更佳。
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
\begin{NiceTabular}{C|C|C|C|C|C|C|C}[code-before = \rowcolor[gray]{.70}{2}]
\hline
\multicolumn{3}{C|}{Cartesian Coordinates} & \multicolumn{5}{C}{Reference Points} \\
\hline
x & y & z & $\text{RP}_1$ & $\text{RP}_2$ & $\text{RP}_3$ & \dots & $\text{RP}_{80}$\\
\hline
$\text{x}_1$ & $\text{y}_1$ & $\text{z}_1$ & $-40$ & $-51$ & $-60$& \dots & $-84$ \\
$\text{x}_2$ & $\text{y}_2$ & $\text{z}_2$ & $-35$ & $-91$ & $-30$ & \dots & $-55$\\
\vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots \\
$\text{x}_\text{m}$ & $\text{y}_\text{m}$ & $\text{z}_\text{m}$ & $-20$ & $-320$ & $-41$ & \dots &$-23$
\end{NiceTabular}
\end{document}
您需要两次编译。