使用 makecell 时表格颜色无法完全延伸

使用 makecell 时表格颜色无法完全延伸

xcolor在使用交替表格颜色的同时,还使用在表格单元格中放置多行时,会出现此问题makecell。在此特定情况下,较大的单元格位于彩色行中,着色将在表格末尾前停止。

\documentclass{article}
\usepackage[table]{xcolor}
\usepackage{makecell}

\rowcolors{2}{gray!20}{white}

\begin{document}
    \begin{tabular}{ |c|c| } 
    \rowcolor{gray!50}
    \hline
    \textbf{One} & \textbf{Two}\\
    \hline
    Text & More Text\\
    Even More & \makecell{Multiple \\ Lines}\\
    \hline
    \end{tabular}
\end{document}

在此处输入图片描述

答案1

我不会makecell做这样的事。

\documentclass{article}
\usepackage[table]{xcolor}
\usepackage{array}

\rowcolors{2}{gray!20}{white}
\newcolumntype{C}{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{2cm}}
% https://tex.stackexchange.com/a/12712/156344
\begin{document}
\begin{tabular}{|C|C|} 
    \rowcolor{gray!50}
    \hline
    \textbf{One} & \textbf{Two}\\
    \hline
    Text & More Text\\
    Even More & Multiple Lines\\
    \hline
\end{tabular}
\end{document}

在此处输入图片描述

答案2

您可以使用\Gape

\documentclass{article}
\usepackage[table]{xcolor}
\usepackage{makecell}

\rowcolors{2}{gray!20}{white}

\begin{document}
    \begin{tabular}{ |c|c| } 
    \rowcolor{gray!50}
    \hline
    \textbf{One} & \textbf{Two}\\
    \hline
    Text & More Text\\
    Even More & \Gape[0pt][2pt]{\makecell{Multiple \\ Lines}}\\
    \hline
    \end{tabular}
\end{document}

在此处输入图片描述

答案3

为了完整性。(相对较新的)包tabularray有自己的宏,用于将单元格中的文本拆分为多行文本:

{first line\\ second line}

在任何列宽下使用它,行着色都可以正常工作。而且代码更短。因此,OP 表(扩展了两行)可以写成:

\documentclass{article}
\usepackage{xcolor}
\usepackage{tabularray}
\UseTblrLibrary{booktabs}

\begin{document}
    \begin{center}
\begin{tblr}{colspec = {Q[c,m] Q[c,m]},
             row{1} = {font=\bfseries, bg=gray!50},
             row{odd[2]} = {bg=gray!25}
             }
    \toprule
\SetRow{}
One         &   Two                 \\
    \midrule
Text        &   More Text           \\
Even More   & {Multiple\\ Lines}    \\
Text        &   More Text           \\
Even More   & {Multiple\\ Lines}    \\
    \bottomrule
\end{tblr} 
    \end{center}
\end{document}

在此处输入图片描述

答案4

{NiceTabular}的环境nicematrix有一个内置命令\rowcolors(必须在所谓的中使用\CodeBefore)。

使用该命令,您可以直接获得预期的输出。

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

\begin{document}
\begin{NiceTabular}{ |c|c| } 
\CodeBefore
  \rowcolor{gray!50}{1}
  \rowcolors{2}{gray!20}{}
\Body
  \hline
  \textbf{One} & \textbf{Two}\\
  \hline
  Text & More Text\\
  Even More & \makecell{Multiple \\ Lines}\\
  \hline
\end{NiceTabular}
\end{document}

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

上述代码的输出

但是,nicematrix也有一个内置命令\Block,可以在这里代替使用它makecell

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

\begin{document}
\begin{NiceTabular}{ |c|c| } 
\CodeBefore
  \rowcolor{gray!50}{1}
  \rowcolors{2}{gray!20}{}
\Body
  \hline
  \textbf{One} & \textbf{Two}\\
  \hline
  Text & More Text\\
  Even More & \Block{}{Multiple \\ Lines}\\
  \hline
\end{NiceTabular}
\end{document}

输出是一样的。

相关内容