
Hier ist ein einfaches Beispiel.
\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}
Wenn der Text in der mehrzeiligen Zelle kürzer ist als der Text in der darüber liegenden Zelle, wird die Zelle nicht gut eingefärbt. multirow
ist ok, aber ich möchte die Zeile innerhalb der Zelle umbrechen und die Ausrichtung festlegen.
Da der Code von Python generiert wird und die Spaltenbreite im Programm nicht zugänglich ist und auch nicht auf einen passenden Wert eingestellt werden kann, werden Optionen wie p
, w
in array
oder X
in tabularx
nicht berücksichtigt.
Antwort1
Bei Verwendung w{c}{...}
ist der Spaltentyp einfach:
\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}
Nachtrag:
Auch mit dem neuen tabularray
Paket ist es einfach:
\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}
oder
\documentclass{article}
\usepackage{tabularray}
\usepackage{xcolor}
\begin{document}
\begin{tblr}{row{2}={cyan!30,c}, c}
longer text \\
{short\\short}
\end{tblr}
\end{document}
In beiden Fällen ist das Ergebnis das gleiche:
Antwort2
Das Paket nicematrix
(≥ 4.0) bietet Tools zum Einfärben von Zellen, Zeilen und Spalten auf eine Weise, die kompatibel ist mit multirow
und 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}
Sie werden nicht die dünnen weißen Linien sehen, die Sie in einigen PDF-Viewern bei bestimmten Zoomstufen sehen (siehe beispielsweise Bernards Antwort).
Antwort3
Makecell hat möglicherweise Probleme mit farbigen Zellen in Tabellen. Als Workaround schlage ich vor, \Centerstack
from stackengine
in einem einfachen zu verwenden \multirow
. Unabhängig davon: Laden xcolor
mit Option [table]
, Sie müssen nicht laden, colortbl
da ersteres dies für Sie erledigt.
\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}
Antwort4
Lösung von David
Verwenden Sie eine verschachtelte Tabelle
\newcommand{\minitab}[2][l]{\begin{tabular}{@{}#1@{}}#2\end{tabular}}
\cellcolor{teal}\multirow{-2}*{\minitab[r]{short\\short}