如何在LaTeX中为跨行列(multirow)实现完整背景着色?
LaTeX表格multirow跨行列背景色完全填充解决方案
在使用mcmthesis文档类时,通过multirow实现跨行,搭配colortbl设置背景色会出现跨行列无法完全着色的问题。要实现跨行列区域完整着色,核心是给跨行对应的每一行第一列单元格手动添加背景色,配合multirow完成覆盖。
修改后的代码
\documentclass{mcmthesis} \mcmsetup{CTeX = false, % 使用 CTeX 套装时,设置为 true tcn = {0000000}, problem = \textcolor{red}{A}, sheet = true, titleinsheet = true, keywordsinsheet = true, titlepage = false, abstract = false} \usepackage{newtxtext} % \usepackage{palatino} \usepackage[backend=bibtex]{biblatex} % for RStudio Complie \usepackage{booktabs} % 用于制作三线表 \usepackage{tabularx} % 用于制作自适应表格 \usepackage{tocloft} \usepackage{multirow} \usepackage{colortbl} % 用于调整颜色 \usepackage{float}%提供float浮动环境 \usepackage{booktabs}%提供命令\toprule、\midrule、\bottomrule \setlength{\cftbeforesecskip}{6pt} \renewcommand{\contentsname}{\hspace*{\fill}\Large\bfseries Contents \hspace*{\fill}} \title{Enjoy a Cozy and Green Bath} \date{\today} \begin{document} \begin{table}[htbp] \caption{\textbf{KPIs}} \centering \renewcommand{\arraystretch}{1.5} % 增加行高 \begin{tabularx}{\textwidth}{|p{0.25\textwidth}|X|} \hline % 第一组跨行着色:给两行的第一列都加cellcolor \cellcolor[HTML]{BDD6EE}\multirow{2}{*}{Data1} & \cellcolor[HTML]{BDD6EE} The weight vector calculated by \\ \cellcolor[HTML]{BDD6EE} & \cellcolor[HTML]{BDD6EE} The score of maturity of DAS \\ \hline % 第二组跨行着色 \cellcolor[HTML]{BDD6EE}\multirow{2}{*}{Data1} & \cellcolor[HTML]{BDD6EE} The weight vector calculated by \\ \cellcolor[HTML]{BDD6EE} & \cellcolor[HTML]{BDD6EE} The score of maturity of DAS \\ \hline \multirow{2}{*}{Data1} & The weight vector calculated by \\ & The score of maturity of DAS \\ \hline \end{tabularx} \end{table} \end{document}
原理说明
multirow仅负责跨行文本的排版,不会自动填充跨行区域的背景色。\rowcolor只能给当前行着色,跨行的第二行第一列如果没有单独设置\cellcolor,就会显示空白。通过给跨行的每一行第一列都添加\cellcolor,再用multirow把文本覆盖在两行的背景色之上,就能实现和期望效果一致的完整跨行列着色。
内容的提问来源于stack exchange,提问作者actor 12
相关产品推荐
相关产品推荐

