文本\multirow
被背景颜色覆盖。有人知道原因并能修复吗?
\begin{table}[h]
\caption{caption}
\label{tab}
\centering
\begin{tabular}{cccccc}
\toprule
& & A & B & C & D \\
\midrule
\rowcolor{gray!10}
\multirow{2}{*}{Rosso} & Pruning & - & - & 6-C-Pr & - \\
\rowcolor{gray!10}
& Stalks & - & - & 6-C-S & - \\
\multirow{2}{*}{Verde} & Pruning & - & - & 6-M-Pr & - \\
& Stalks & - & - & 6-M-S & - \\
\rowcolor{gray!10}
\multirow{2}{*}{Blu} & Pruning & 4-Pa-Pr & 5-Pa-Pr & 6-Pa-Pr & 7-Pa-Pr \\
\rowcolor{gray!10}
& Stalks & 4-Pa-S & 5-Pa-S & 6-Pa-S & 7-Pa-S \\
\multirow{2}{*}{Bianco} & Pruning & - & - & 6-W-Pr & - \\
& Stalks & - & - & 6-W-Pr & - \\
\bottomrule
\end{tabular}
\end {table}
答案1
如果\multirow
命令放在两行的上方,则其文本将被放置,而下一个表格\rowcolor
行将覆盖下部。因此,\multirow
最好将 移到两行的下方。然后,当 的文本被放置时,两行的背景颜色已经设置\multirow
:
\documentclass{article}
\usepackage{booktabs}
\usepackage{caption}
\usepackage{colortbl}
\usepackage{xcolor}
\usepackage{multirow}
\begin{document}
\begin{table}[h]
\caption{caption}
\label{tab}
\centering
\begin{tabular}{cccccc}
\toprule
& & A & B & C & D \\
\midrule
\rowcolor{gray!10}
& Pruning & -- & -- & 6-C-Pr & -- \\
\rowcolor{gray!10}
\multirow{-2}{*}{Rosso}
& Stalks & -- & -- & 6-C-S & -- \\
& Pruning & -- & -- & 6-M-Pr & -- \\
\multirow{-2}{*}{Verde}
& Stalks & -- & -- & 6-M-S & -- \\
\rowcolor{gray!10}
& Pruning & 4-Pa-Pr & 5-Pa-Pr & 6-Pa-Pr & 7-Pa-Pr \\
\rowcolor{gray!10}
\multirow{-2}{*}{Blu}
& Stalks & 4-Pa-S & 5-Pa-S & 6-Pa-S & 7-Pa-S \\
& Pruning & -- & -- & 6-W-Pr & -- \\
\multirow{-2}{*}{Bianco}
& Stalks & -- & -- & 6-W-Pr & -- \\
\bottomrule
\end{tabular}
\end {table}
\end{document}
答案2
我建议对表格进行以下改进:由于booktabs
在规则周围引入了垂直间距,导致彩色行中出现白条,我将 booktabs 中的规则命令替换为来自小包boldline
、shipunov
捆绑包的可变宽度规则命令,并使用包在行单元格上方和下方添加垂直填充cellspace
,从而确保以字母为前缀的列的每个单元格的顶部和底部具有最小的垂直间距S
。
\documentclass{article}
\usepackage{caption}
\usepackage[table]{xcolor}
\usepackage{multirow}
\usepackage{boldline}
\usepackage{cellspace}
\setlength\cellspacetoplimit{4pt}
\setlength\cellspacebottomlimit{4pt}
\begin{document}
\begin{table}[h]
\caption{caption}
\label{tab}
\centering
\begin{tabular}{*{6}{Sc}}
\hlineB{2}
& & A & B & C & D \\
\hlineB{1.25}
\rowcolor{gray!10}
& Pruning & -- & -- & 6-C-Pr & -- \\
\rowcolor{gray!10}
\multirow{-2}{*}{Rosso}
& Stalks & -- & -- & 6-C-S & -- \\
& Pruning & -- & -- & 6-M-Pr & -- \\
\multirow{-2}{*}{Verde}
& Stalks & -- & -- & 6-M-S & -- \\
\rowcolor{gray!10}
& Pruning & 4-Pa-Pr & 5-Pa-Pr & 6-Pa-Pr & 7-Pa-Pr \\
\rowcolor{gray!10}
\multirow{-2}{*}{Blu}
& Stalks & 4-Pa-S & 5-Pa-S & 6-Pa-S & 7-Pa-S \\
& Pruning & -- & -- & 6-W-Pr & -- \\
\multirow{-2}{*}{Bianco}
& Stalks & -- & -- & 6-W-Pr & -- \\
\hlineB{2}
\end{tabular}
\end {table}
\end{document}
答案3
您可以使用具有以下优点的构造该{NiceTabular}
表nicematrix
:
- 彩色行将自动遵守规则
booktabs
。 - 您不必使用
\multicolumn
消极的论点:您可以用\Block
积极的论点。 \rowcolors
您可以使用 中的命令交替为逻辑行着色\CodeBefore
。- 您将在各个缩放级别的所有 PDF 查看器中获得良好的输出(比使用 更好
colortbl
)。
有一个缺点:你需要多次编译(因为nicematrix
在后台使用了 PGF/Tikz 节点)。
\documentclass{article}
\usepackage{caption}
\usepackage{nicematrix}
\usepackage{booktabs}
\begin{document}
\begin{table}[h]
\caption{caption}
\label{tab}
\centering
\begin{NiceTabular}{*{6}{c}}[cell-space-limits=4pt]
\CodeBefore
\rowcolors{1}{}{gray!10}[respect-blocks]
\Body
\toprule
& & A & B & C & D \\
\midrule
\Block{2-1}{Rosso}
& Pruning & -- & -- & 6-C-Pr & -- \\
& Stalks & -- & -- & 6-C-S & -- \\
\Block{2-1}{Verde}
& Pruning & -- & -- & 6-M-Pr & -- \\
& Stalks & -- & -- & 6-M-S & -- \\
\Block{2-1}{Blu}
& Pruning & 4-Pa-Pr & 5-Pa-Pr & 6-Pa-Pr & 7-Pa-Pr \\
& Stalks & 4-Pa-S & 5-Pa-S & 6-Pa-S & 7-Pa-S \\
\Block{2-1}{Bianco}
& Pruning & -- & -- & 6-W-Pr & -- \\
& Stalks & -- & -- & 6-W-Pr & -- \\
\bottomrule
\end{NiceTabular}
\end {table}
\end{document}