实现 xcolor 后,简单表格变得有 bug

实现 xcolor 后,简单表格变得有 bug

当我使用 xcolor 为我的论文制作带有彩色第一行的表格时,第一行中的垂直线在随机情况下表现不同(如“带颜色”图像中所示)。当我避免着色(只需取消注释“\usepackage[table]{xcolor}”和“\rowcolor{gray}”)时,它表现正常,没有任何问题(如“无颜色”图像中所示)。这里的问题是什么?什么是最简单有效的解决方案?为什么有些垂直线(列分隔符)比其他垂直线更暗?

\documentclass[a4paper,11pt]{book}
\usepackage[table]{xcolor}


\begin{document}
\begin{tabular}{ |c|c|c|c|c|c|c|c|c| }
\hline
\rowcolor{gray}
  Hours of incubation  & pH 5.0 & pH 6.0 & pH 7.0 & pH 7.5 & pH 8.0 & pH 8.5 & pH 9.0 & pH 10 \\ \hline 
12 & 0.00 & 0.0238 & 0.4036 & 0.4397 & 0.4493 & 0.4349 & 0.3191 & 0.005 \\\hline
24  &   0.00  &     0.1319 &    1.7929 &    1.8368 &    1.8629 &    1.8032 &    1.4087 &    0.035\\\hline

\end{tabular}
\end{document}

有颜色`无色

答案1

这是一个众所周知的问题,主要与您的 PDF 阅读器有关。如果您将图片放大到足够大,您可能会再次看到这些线条。

此外,LaTeX 注重良好的排版,良好的排版不应该在表格中混合水平线和颜色。也不应该使用垂直线。

阅读软件包的文档书签学习如何创建美观的表格。

如果你坚持同时使用颜色和线条,我建议你仔细看看卡路里,它处理单元格背景颜色和规则。下面是此类表格的源代码。我还包含了另外两个表格,使用tabularbooktabsarray,并且不混合水平规则和颜色,并且没有垂直规则。当您使用时,\rowcolor您不应该删除表格的侧边距(@{},因为这样 `@{} 不会从侧边距中删除颜色:

卡尔斯特布尔

\documentclass[a4paper,11pt]{book}
\usepackage{xcolor}
\usepackage{cals}

\begin{document}

\begin{calstable}[c]

% Defining column relativ to each other and relativ to the margins
\colwidths{{\dimexpr(1.5\columnwidth)/9\relax}
            {\dimexpr(\columnwidth)/9\relax}
            {\dimexpr(\columnwidth)/9\relax}
            {\dimexpr(\columnwidth)/9\relax}
            {\dimexpr(\columnwidth)/9\relax}
            {\dimexpr(\columnwidth)/9\relax}
            {\dimexpr(\columnwidth)/9\relax}
            {\dimexpr(\columnwidth)/9\relax}
            {\dimexpr(\columnwidth)/9\relax}
            }
% The tabular fills the text area

% Set up the tabular
\makeatletter
\def\cals@framers@width{0.8pt}   % Outside frame rules, reduce if the rule is too heavy
\def\cals@framecs@width{0.4pt}
\def\cals@bodyrs@width{0.8pt}
\cals@setpadding{Ag}
\cals@setcellprevdepth{Al}
\def\cals@cs@width{0.4pt}             % Inside rules, reduce if the rule is too heavy
\def\cals@rs@width{0.4pt}
\def\cals@bgcolor{}
\setlength{\cals@paddingR}{3pt}
\setlength{\cals@paddingR}{3pt}

\def\gray{\ifx\cals@bgcolor\empty     % "Switch" to turn on and off colour
    \def\cals@bgcolor{gray!30}
\else \def\cals@bgcolor{} \fi}


% R1
\thead{\bfseries\footnotesize
\brow
    \gray\alignC\cell{\vfil Hours of incubation }
    \cell{\vfil pH 5.0}
    \cell{\vfil pH 6.0}
    \cell{\vfil pH 7.0}
    \cell{\vfil pH 7.5}
    \cell{\vfil pH 8.0}
    \cell{\vfil pH 8.5}
    \cell{\vfil pH 9.0}
    \cell{\vfil pH 10}\gray
\erow
\mdseries
}
\tfoot{%
    \lastrule\nointerlineskip%
    %\textit{\strut Some table caption%
    %}%
    \par%
    }
% R2 Body
\brow
    \alignC\cell{12}
    \cell{0.00}
    \cell{0.0238}
    \cell{0.4036}
    \cell{0.4397}
    \cell{0.4493}
    \cell{0.4349}
    \cell{0.3191}
    \cell{0.005}
\erow
% R3 Body
\brow
    \alignC\cell{24}
    \cell{0.00}
    \cell{0.1319}
    \cell{1.7929}
    \cell{1.8368}
    \cell{1.8629}
    \cell{1.8032}
    \cell{1.4087}
    \cell{0.035}
\erow
\makeatletter

\end{calstable}\par % \par to align the tabular

\end{document}

在此处输入图片描述

备择方案

下面也是一个使用\rowcolor但没有规则的表格和一个booktabs-tabular。请注意,这两个表格都比 更宽\linewidth,但我假设您在文档中使用了不同的边距。如果不是,请尝试使用 来\footnotesize减小宽度:

\documentclass[a4paper,11pt]{book}
\usepackage[table]{xcolor}
\usepackage{array, booktabs}


\begin{document}
{\setlength{\extrarowheight}{2pt}\centering
\begin{tabular}{>{\centering}p{2cm}cccccccr}
\rowcolor{gray!30}
Hours of incubation  & pH 5.0 & pH 6.0 & pH 7.0 & pH 7.5 & pH 8.0 & pH 8.5 & pH 9.0 & pH 10 \\
12 & 0.00 & 0.0238 & 0.4036 & 0.4397 & 0.4493 & 0.4349 & 0.3191 & 0.005 \\
24  &   0.00  &     0.1319 &    1.7929 &    1.8368 &    1.8629 &    1.8032 &    1.4087 &    0.035\\\bottomrule
\end{tabular}
}

\vspace{3\baselineskip}

{%\setlength{\extrarowheight}{2pt}
\centering
\begin{tabular}{@{}>{\centering}p{2cm}cccccccr@{}}

\toprule
Hours of incubation  & pH\,5.0 & pH\,6.0 & pH\,7.0 & pH\,7.5 & pH\,8.0 & pH\,8.5 & pH\,9.0 & pH\,10\\\midrule
12 & 0.00 & 0.0238 & 0.4036 & 0.4397 & 0.4493 & 0.4349 & 0.3191 & 0.005 \\
24  &   0.00  &     0.1319 &    1.7929 &    1.8368 &    1.8629 &    1.8032 &    1.4087 &    0.035\\\bottomrule
\end{tabular}
}

\end{document}

在此处输入图片描述

答案2

该软件包nicematrix有专门用于解决此类问题的工具。在其环境中{NiceTabular},无论您使用哪种 PDF 查看器,在各种缩放级别,规则都不会消失。

\documentclass[a4paper,11pt]{book}
\usepackage{xcolor,nicematrix}

\begin{document}

\begin{NiceTabular}{ccccccccc}[colortbl-like,hvlines]
\rowcolor{gray}
Hours of incubation & pH 5.0 & pH 6.0 & pH 7.0 & pH 7.5 & pH 8.0 & pH 8.5 & pH 9.0 & pH 10 \\ 
12 & 0.00 & 0.0238 & 0.4036 & 0.4397 & 0.4493 & 0.4349 & 0.3191 & 0.005 \\
24 & 0.00 & 0.1319 & 1.7929 & 1.8368 & 1.8629 & 1.8032 & 1.4087 & 0.035 \\
\end{NiceTabular}

\end{document}

您需要多次编译(因为nicematrix在后台使用 PGF/Tikz 节点)。

上述代码的输出

相关内容