colortbl 的 \cellcolor 与 \makecell 结合使用时无法填充整个单元格

colortbl 的 \cellcolor 与 \makecell 结合使用时无法填充整个单元格

我想为表格中的一些单元格着色,其中一些单元格使用\makecell。我遇到的问题是,\makecell颜色没有填满单元格的整个宽度。

梅威瑟:

\documentclass{article}

\usepackage{makecell}
\usepackage{colortbl}

\begin{document}
  \begin{tabular}{|l|}
  Cell 1's text is very long \\
  \cellcolor{red} \makecell{Cell\\2}
  \end{tabular}
\end{document}

输出

当然,期望的行为是填满整个单元格,那么我该怎么做呢?

编辑:我在原始问题中使用\makecell来获取由多条线组成的单元格,因此我也更新了 MWE 来执行此操作。如果有任何其他方法可以不使用 来执行此操作,makecell我也愿意这样做。

答案1

已知makecell 彩色表格存在问题。以下是两种解决方法:

  • 一个使用\rowcolor和 其悬垂可选参数,另一个用 替换makecelltabStackengine值得注意的是,由于列具有l说明符,因此命令的内容\makecell可以在单元格中全局居中,使用放置参数,但两行不能彼此居中。
  • 另一个解决方案是使用包tabstackengine,它不会出现与着色单元格相同的问题,并\multicolumn 能获得居中内容。

    \documentclass{article}
    \usepackage{makecell}
    \usepackage{tabstackengine}
    \usepackage[table]{xcolor}
    
    \begin{document}
    
    \begin{tabular}{|l|}
    Cell 1's text is very long \\
    \rowcolor{red}[\tabcolsep][47pt]\makecell[r]{Cell 2\\ Text} \\
    \multicolumn{1}{|>{\columncolor{yellow}}c|}{\tabularCenterstack{c}{Cell 3\\ Text}}
    \end{tabular}
    
    \end{document} 
    

在此处输入图片描述

答案2

环境{NiceTabular}nicematrix一个内置命令\Block,提供(和其他)的功能\makecell。关于颜色,您可以直接获得预期的结果。

\documentclass{article}
\usepackage{nicematrix}

\begin{document}
  \begin{NiceTabular}{|l|}
  Cell 1's text is very long \\
  \Block[fill=red]{}{Cell\\2}
  \end{NiceTabular}
\end{document}

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

上述代码的输出

相关内容