Hintergrundfarbe für Zellen mit Polsterung

Hintergrundfarbe für Zellen mit Polsterung

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:

Bildbeschreibung hier eingeben

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?

Bildbeschreibung hier eingeben

Antwort1

Hier sind zwei Möglichkeiten, es zu erhalten. hhlineBei 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} 

Bildbeschreibung hier eingeben

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}

Bildbeschreibung hier eingeben

Antwort3

Indem wir die Umgebung {NiceTabular}anstelle der Umgebung {tabular}und des Schlüssels verwenden colortbl-like(die Syntax von colortblwird verwendet, obwohl colortblsie 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 nicematrixim Hintergrund PGF/Tikz-Knoten verwendet werden).

Ausgabe des obigen Codes

verwandte Informationen