我给表格添加颜色后,显示出现一些问题,以下是示例代码:
\documentclass{article}
\usepackage{xcolor,colortbl}
\definecolor{Gray}{gray}{0.85}
\begin{document}
test a color table:
\begin{table}[h]
\begin{center}
\begin{tabular}{|c|c|c|c|}
\hline
\rowcolor{Gray}
Version & Date & Author & Reason of Change \\
\hline
0.1 & \today & Chen How & create initial documentation template, all content are dummy \\
\hline
& & & \\
\hline
& & & \\
\hline
\end{tabular}
\end{center}
\caption{Document history}
\end{table}
\end{document}
当我通过 pdf 阅读时,问题就出现了: 当我放大和缩小时,线条也会发生变化,但如果没有颜色,它总是可以的:
这是正常行为还是我的问题?
答案1
您可以在表格后重新绘制线条,例如使用 tikz(示例中为红色)。另一种方法是在表格前绘制灰色背景(也使用 tikz)。参见例如 带填充的单元格的背景颜色
\documentclass{article}
\usepackage[table]{xcolor}
\definecolor{Gray}{gray}{0.85}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\begin{document}
test a color table:
\begin{table}[h]
\begin{center}
\begin{tabular}{|c|c|c|c|}
\hline
\rowcolor{Gray}
Version & \multicolumn{1}{c!{\tikzmark{x}\vrule}}{Date} & Author& Reason of Change \\
\hline
0.1 & \today & Chen How & create initial documentation template, all content are dummy \\
\hline
& & & \\
\hline
& & & \\
\hline
\end{tabular}%
\tikz[overlay,remember picture]\draw[line width=\arrayrulewidth,red]([xshift=0.5\arrayrulewidth,yshift=-\dp\strutbox]pic cs:x)--++(0,\baselineskip);
\end{center}
\caption{Document history}
\end{table}
\end{document}
但是根据表格的结构,这可能需要相当多的调整。
答案2
该软件包nicematrix
提供了专为解决此类问题的工具。
环境{NiceTabular}
类似于{tabular}
(的array
),但提供(当使用键color-inside
, 别名colortbl-like
时)工具来使用类似于的语法为单元格、行和列着色colortbl
。它确实不是使用colortbl
。
您在所有 PDF 查看器中都获得了良好的结果(您没有发现在某些缩放级别下似乎消失的规则;当表格由 colortbl 构造时,您没有看到使用 MuPDF(例如 SumatraPDF)的查看器中看到的细白线)。
然而,您需要多次编译。
\documentclass{article}
\usepackage{xcolor}
\usepackage{nicematrix}
\definecolor{Gray}{gray}{0.85}
\begin{document}
test a color table:
\begin{table}[h]
\begin{center}
\begin{NiceTabular}{|c|c|c|c|}[color-inside]
\hline
\rowcolor{Gray}Version & Date & Author & Reason of Change \\
\hline
0.1 & \today & Chen How & dummy content \\
\hline
& & & \\
\hline
& & & \\
\hline
\end{NiceTabular}
\end{center}
\caption{Document history}
\end{table}
\end{document}
事实上,使用{NiceTabular}
,只需一个键 就可以绘制所有规则hvlines
。也可以在“ \CodeBefore
”中的数组主体之前给出颜色的说明。
\documentclass{article}
\usepackage{xcolor}
\usepackage{nicematrix}
\definecolor{Gray}{gray}{0.85}
\begin{document}
test a color table:
\begin{table}[h]
\begin{center}
\begin{NiceTabular}{cccc}[hvlines]
\CodeBefore
\rowcolor{Gray}{1}
\Body
Version & Date & Author & Reason of Change \\
0.1 & \today & Chen How & dummy content \\
& & & \\
& & & \\
\end{NiceTabular}
\end{center}
\caption{Document history}
\end{table}
\end{document}