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}
输出是一样的。