\rowcolors 无法与 \multirow 配合使用

\rowcolors 无法与 \multirow 配合使用

注意:我知道还有其他人问过同样的问题这里这里,但没有一个例子是最小,我还是有点困惑。抱歉给您带来不便。


我知道我能做到:

%rowcolor-multirow-test.tex

\documentclass{report}
\usepackage[table]{xcolor}
\usepackage{multirow}

\definecolor{slg}{gray}{0.95}
% ^^ "super-light gray" -- the builtin 'lightgray' isn't light enough.
\begin{document}

Wrong: \\
\rowcolors{1}{white}{slg}
\begin{tabular}{c|c|c|c}
  A & B & C & D \\
  \multirow{2}{*}{Hello!} & foo & bar & 42 \\
  & fooo & baar & 13 \\
\end{tabular}

\bigskip

Right:\\
\begin{tabular}{c|c|c|c}
  A & B & C & D \\
  & foo & bar & 42 \\
  \multirow{-2}{*}{Hello!} & fooo & baar & 13 \\
  % ^^ Put it on the odd rows and give it a negative number to span up.
\end{tabular}

\end{document}

要获得这个:
强制性 xkcd:http://xkcd.com/1341


但是我怎样才能得到这个,最好是保持垂直线完整?
你期待什么?有什么好笑的事吗?
(我作弊了,用 手动给单元格着色\cellcolor[gray]{0.95}

pdfLaTeX 3.14159265-2.6-1.40.17 (MiKTeX 2.9)

答案1

一种可能的解决方案是使用\cellcolor您想要使用不同颜色的单元格内的命令。请注意,这不是包含命令的单元格,\multirow而是您需要在其中放置命令的上方单元格。

\documentclass{report}
\usepackage[table]{xcolor}
\usepackage{multirow}

\definecolor{slg}{gray}{0.95}
\begin{document}

\rowcolors{1}{white}{slg}

Fixed:\\
\begin{tabular}{c|c|c|c}
    A & B & C & D \\
    \cellcolor{white} & foo & bar & 42 \\
    \multirow{-2}{*}{Hello!} & fooo & baar & 13 \\
\end{tabular}
\end{document}

在此处输入图片描述

答案2

最新版本nicematrix(2021-01-01 的 v 5.8)提供了一种简单的方法。

\documentclass{report}
\usepackage{nicematrix}
\usepackage{xcolor}

\begin{document}

\begin{NiceTabular}{c|c|c|c}
\CodeBefore 
  \rowcolors[gray]{1}{}{0.95}[cols=2-*]
\Body
  A & B & C & D \\
  \Block{2-1}{Hello!} & foo & bar & 42 \\
  & fooo & baar & 13 \\
\end{NiceTabular}

\end{document}

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

上述代码的输出

相关内容