为表格行着色时,行与 \toprule 和 \bottomrule 之间有空白

为表格行着色时,行与 \toprule 和 \bottomrule 之间有空白

正如标题所述,我正在尝试为我的表格添加颜色,但似乎booktab 包在 \toprule 和 \bottomrule 之间保留 \xcolor 未覆盖的多余空白 图片

\documentclass{article}
\usepackage{booktabs}
\usepackage[table]{xcolor}
\begin{document}
\renewcommand{\arraystretch}{1.5}
\rowcolors{1}{green}{blue}
\begin{tabular}{ll}
\toprule
foo&foo\\
bar&bar\\
foo&bar\\
\bottomrule
\end{tabular}
\end{document}

当我使用 \hline 时,问题不再发生。我想知道是否有简单的解决方法,如果不太麻烦,能否解释一下这里发生了什么?提前谢谢。

答案1

该空间由顶部规则和底部规则留下,该空间可以通过命令单独着色\aboverulesepcolor,并\belowrulesepcolor设置为与\rowcolor 在此处输入图片描述

\documentclass[12pt]{article} 

% set line spacing 
\usepackage{setspace} 
\setstretch{1.15} 
\usepackage{relsize} 

% table materials 
\usepackage{tabularx} 
\usepackage{booktabs} 
\usepackage{array} 
\usepackage{multirow} 

% define colours 
\usepackage{xcolor, colortbl} 
\definecolor{my-blue}{RGB}{83,87,118} 

\usepackage{microtype} 

\newcommand*{\belowrulesepcolor}[1]{% 
  \noalign{% 
    \kern-\belowrulesep 
    \begingroup 
      \color{#1}% 
      \hrule height\belowrulesep 
    \endgroup 
  }%
} 
\newcommand*{\aboverulesepcolor}[1]{% 
  \noalign{% 
    \begingroup 
      \color{#1}% 
      \hrule height\aboverulesep 
    \endgroup 
    \kern-\aboverulesep 
  }%
} 

\begin{document} 

\begin{center} 
\begin{tabular}{ccc} 
\toprule 
\belowrulesepcolor{green} 
\rowcolor{green} Variable &  Field One &  Field Two \\ 
\aboverulesepcolor{green} 
\midrule 
\belowrulesepcolor{blue} 
\rowcolor{blue}A & 0.0002 & 0.0005 \\ 
\aboverulesepcolor{blue}
\bottomrule  
\end{tabular} 
\end{center} 

\end{document}

答案2

使用{NiceTabular}nicematrix您可以直接(经过两次编译)得到您想要的结果:

\documentclass{article}
\usepackage{booktabs}
\usepackage{xcolor}    
\usepackage{nicematrix}

\begin{document}
\renewcommand{\arraystretch}{1.5}
\begin{NiceTabular}{ll}
\CodeBefore 
   \rowcolors{1}{green!15}{blue!15}
\Body
\toprule
foo&foo\\
bar&bar\\
foo&bar\\
\bottomrule
\end{NiceTabular}    
\end{document}

上述代码的结果

相关内容