
Aqui está um exemplo simples.
\documentclass{article}
\usepackage[table]{xcolor}
\usepackage{colortbl}
\usepackage{multirow, makecell}
\begin{document}
\begin{tabular}{c}
longer text\\
\cellcolor{teal}\\
\cellcolor{teal}\multirowcell{-2}[0ex][r]{short\\short}
% \cellcolor{teal}\multirow{-2}*{short} % is ok but can't break line or set alignment
\end{tabular}
\end{document}
Quando o texto na célula multilinha for menor que o texto da célula acima, a célula não ficará bem colorida. multirow
está ok, mas quero quebrar a linha dentro da célula e definir o alinhamento.
Como o código será gerado por python e a largura da coluna não pode ser acessada no programa nem definida com um valor adequado, opções como p
, w
in array
ou X
in tabularx
não são consideradas.
Responder1
Com o uso, o w{c}{...}
tipo de coluna é simples:
\documentclass{article}
\usepackage[table]{xcolor} % it load colortbl
\usepackage{makecell}
\begin{document}
\begin{tabular}{w{c}{5em}}
longer text \\
\rowcolor{teal}
\makecell{short\\short}
\end{tabular}
\end{document}
Termo aditivo:
Também é simples usar o novo tabularray
pacote:
\documentclass{article}
\usepackage{tabularray}
\usepackage{xcolor} % with tabularray the colortbl is not needed
\begin{document}
\begin{tblr}{c}
longer text \\
\SetRow{cyan!30}
{short\\short}
\end{tblr}
\end{document}
ou
\documentclass{article}
\usepackage{tabularray}
\usepackage{xcolor}
\begin{document}
\begin{tblr}{row{2}={cyan!30,c}, c}
longer text \\
{short\\short}
\end{tblr}
\end{document}
Em ambos os casos o resultado é o mesmo:
Responder2
O pacote nicematrix
(≥ 4.0) fornece ferramentas para colorir células, linhas e colunas de forma compatível com multirow
e makecell
:
\documentclass{article}
\usepackage{xcolor}
\usepackage{multirow, makecell}
\usepackage{nicematrix}
\begin{document}
\begin{NiceTabular}{c}[code-before = \rowcolor{teal!75}{2,3}]
longer text\\
\\
\multirowcell{-2}[0ex][r]{shorter \\ short}
\end{NiceTabular}
\end{document}
Você não terá as finas linhas brancas que vê em alguns visualizadores de PDF em alguns níveis de zoom (veja, por exemplo, a resposta de Bernard).
Responder3
Makecell pode ter problemas com células coloridas em tabelas. Como solução alternativa, sugiro usar \Centerstack
from stackengine
em um arquivo \multirow
. Não relacionado: carregando xcolor
com option [table]
, você não precisa carregar, colortbl
pois o primeiro faz isso por você.
\documentclass{article}
\usepackage[table]{xcolor}
\usepackage{multirow, makecell}
\usepackage[usestackEOL]{stackengine}
\begin{document}
\begin{tabular}{c}
longer text\\
\cellcolor{teal!75}\\
\cellcolor{teal!75}\multirowcell{-2}[0ex][r]{shorter \\ short}
% \cellcolor{teal}\multirow{-2}*{short} % is ok but can't break line or set alignment
\end{tabular}
\qquad
\begin{tabular}{c}
longer text\\
\cellcolor{teal!75}\\
\cellcolor{teal!75}\multirow{-2}{*}{\Centerstack[r]{shorter \\ short}}
\end{tabular}
\end{document}
Responder4
Solução de David
use uma tabela aninhada
\newcommand{\minitab}[2][l]{\begin{tabular}{@{}#1@{}}#2\end{tabular}}
\cellcolor{teal}\multirow{-2}*{\minitab[r]{short\\short}