我有一张表格,其中的一些单元格被填充为灰色。效果很好。但问题是,表格的水平线也变成了灰色。我该如何解决这个问题,让线条保持为黑线,单元格颜色为灰色?
我的问题图片:
完整的代码示例可以在网上找到这里或者在此代码中:
\documentclass{article}
\usepackage{slashbox,pict2e}
\usepackage{color, colortbl}
\usepackage{amssymb}
\definecolor{Gray}{gray}{0.9}
\begin{document}
\begin{table}
\centering
\begin{tabular}{|l|c|c|c|}
\hline\backslashbox{Enhed}{Interface} & ED & DDG & \textit{Server} \\
\hline ED & \checkmark & \checkmark & {\cellcolor{Gray}} \\
\hline DDG & \checkmark & {\cellcolor{Gray}} & \checkmark \\
\hline \textit{Server} & {\cellcolor{Gray}} & \checkmark & {\cellcolor{Gray}}\\\hline
\end{tabular}
\caption{Oversigt over interfaces mellem enhederne.}
\label{tab:interfacesMellemEnheder}
\end{table}
\end{document}
答案1
正如您在评论中看到的,tex 代码从来没有问题。唯一的问题是 pdf 查看器。放大时线条再次可见。打印页面时这不会成为问题。
答案2
(≥ 4.0 2020-05-08)环境{NiceTabular}
为该nicematrix
问题提供了解决方案。
colortbl
,一个\hline
,并且如果下一行有一个彩色单元格,则绘制彩色矩形后水平规则。即使规则和彩色矩形的位置在数学上是精确的,几乎所有 PDF 查看器都会优先考虑彩色矩形(在 PDF 中明确绘制在后面):他们认为,在较低的缩放级别下,之前绘制的规则只是细节上不太重要(这就是为什么很难说这是查看器的“问题”)。
和nicematrix
,这个问题就解决了,因为所有的规则都是后彩色矩形(行、列、单元格等)。
此外,还nicematrix
提供了一个命令\diagbox
和一个键hvlines
来绘制所有规则。
\documentclass{article}
\usepackage{xcolor}
\usepackage{amssymb}
\usepackage{nicematrix}
\begin{document}
\begin{table}
\centering
\begin{NiceTabular}{wl{2.2cm}ccc}[hvlines]
\CodeBefore
\cellcolor{lightgray}{2-4,3-3,4-2,4-4}
\Body
\rule[-3mm]{0pt}{9mm}
\diagbox{Enhed}{Interface} & ED & DDG & \textit{Server} \\
ED & \checkmark & \checkmark & \\
DDG & \checkmark & & \checkmark \\
\textit{Server} & & \checkmark & \\
\end{NiceTabular}
\caption{Oversigt over interfaces mellem enhederne.}
\label{tab:interfacesMellemEnheder}
\end{table}
\end{document}
您需要多次编译(因为nicematrix
在后台使用 PGF/Tikz 节点)。
答案3
抱歉,评论太长了。应 FireFly3000 的要求,下面是一个booktabs
只有几条规则的示例:
在这种类型的表中 diagbox
没有实用程序,因此您可以将“Interface”放在前一行的多列中,并在单元格中只留下“Enhed”,或者如果您希望此标签垂直居中,请使用包multirow
:
\documentclass{article}
\usepackage{colortbl, booktabs}
\usepackage{multirow}
\usepackage{amssymb}
\definecolor{Gray}{gray}{0.9}
\begin{document}
\begin{table}
\centering
\begin{tabular}{lccc}
\toprule
\multirow{2}{*}{Enhed} & \multicolumn{3}{c}{Interface} \\
\cmidrule{2-4}
& ED & DDG & \textit{Server} \\
\midrule
ED & \checkmark & \checkmark & \cellcolor{Gray} \\
DDG & \checkmark & \cellcolor{Gray} & \checkmark \\
\textit{Server} & \cellcolor{Gray} & \checkmark & \cellcolor{Gray} \\
\bottomrule
\end{tabular}
\caption{Oversigt over interfaces mellem enhederne.}
\label{tab:interfacesMellemEnheder}
\end{table}
\end{document}
答案4
一个简单的解决方案就是增加表格线宽。这样 PDF 查看器就不会再出现此问题了。
\setlength\arrayrulewidth{1pt} %Increasing linewidth \begin{table} (...) \end{table} \setlength\arrayrulewidth{0.4pt} %Back to default