
Ich habe eine ziemlich komplexe Tabelle, bei der ich einige Ränder und Polsterungen hinzufügen musste. Jetzt möchte ich diese „speziellen“ Zellen mit einem Hintergrund einfärben. Aber die Farbe wird nicht auf die Polsterung ausgedehnt. Gibt es eine Möglichkeit, sie auszuweiten? Dies ist mein MWE-Code:
\documentclass{report}
\usepackage[table]{xcolor}
\begin{document}
\begin{tabular}{cccc}
a & b & & d \\
& & & \\ \cline{1-2}
\multicolumn{1}{|@{\hspace{3em}}c@{\hspace{1em}}}{\cellcolor{red!50} E }
&
\multicolumn{1}{@{}c@{\hspace{3em}}|}{\cellcolor{red!50} F }
& & h
\\[15pt] \cline{1-2}
\end{tabular}
\end{document}
und so sieht es aus:
die gelb markierten Teile im nächsten Bild sollten auch eingefärbt werden. Weiters habe ich festgestellt, dass der Rand oben fehlt. Warum? Wie bekomme ich ihn zurück?
Antwort1
Hier sind zwei Möglichkeiten, es zu erhalten. hhline
Bei farbigen Zellen ist eine Notiz erforderlich.
\documentclass{report}
\usepackage[table]{xcolor}
\usepackage{booktabs, hhline}
\begin{document}
\begin{tabular}{cccc}
a & b & & d \\
& & & \\ \hhline{--~~}
\multicolumn{1}{| @{\color{red!50}\vrule width 3em}c@{\color{red!50}\vrule width 1em}}{\cellcolor{red!50} E }
&
\multicolumn{1}{@{}c@{\color{red!50}\vrule width 3em}|}{\cellcolor{red!50} F }
& & h
\\[15pt] \cline{1-2}
\end{tabular}
\vspace{1cm}
\begin{tabular}{cccc}
a & b & & d \\
& & & \\ \hhline{--~~}%
\multicolumn{1}{|@{\hspace{3em}}>{\columncolor{red!50}[3em][1em]}c@{\hspace{1em}}}{ E }
&
\multicolumn{1}{@{}>{\columncolor{red!50}[0.4pt][3em]}c@{\hspace{3em}}|}{ F }
& & h
\\[15pt] \cline{1-2}
\end{tabular}
\end{document}
Antwort2
Im Allgemeinen mache ich solche Dinge mit Tikz und \tikzmark. Die horizontalen Koordinaten sind normalerweise recht einfach zu ermitteln. Die vertikalen erfordern manchmal etwas Berechnung oder mehr \tikzmarks. Das Schöne ist, dass Sie den Hintergrund vor der Tabelle zeichnen können und er so wirklich immer im Hintergrund ist.
\documentclass{report}
\usepackage[table]{xcolor}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\begin{document}
\tikz[overlay,remember picture]
\fill[red!50] ([yshift=-\dimexpr\dp\strutbox+15pt]pic cs:A)
rectangle ([yshift=\ht\strutbox]pic cs:B);
\begin{tabular}{cccc}
a & b & & d \\
& & & \\ \cline{1-2}
\multicolumn{1}{|@{\tikzmark{A}\hspace{3em}}c@{\hspace{1em}}}{ E }
&
\multicolumn{1}{@{}c@{\hspace{3em}\tikzmark{B}}|}{ F }
& & h
\\[15pt] \cline{1-2}
\end{tabular}
\end{document}
Antwort3
Indem wir die Umgebung {NiceTabular}
anstelle der Umgebung {tabular}
und des Schlüssels verwenden colortbl-like
(die Syntax von colortbl
wird verwendet, obwohl colortbl
sie selbst nicht verwendet wird), erhalten wir direkt die erwartete Ausgabe.
\documentclass{report}
\usepackage{xcolor}
\usepackage{nicematrix}
\begin{document}
\begin{NiceTabular}{cccc}[colortbl-like]
a & b & & d \\
& & & \\ \cline{1-2}
\multicolumn{1}{|@{\hspace{3em}}c@{\hspace{1em}}}{\cellcolor{red!50} E }
&
\multicolumn{1}{@{}c@{\hspace{3em}}|}{\cellcolor{red!50} F }
& & h
\\[15pt] \cline{1-2}
\end{NiceTabular}
\end{document}
Sie benötigen mehrere Kompilierungen (da nicematrix
im Hintergrund PGF/Tikz-Knoten verwendet werden).