Color de fondo para celdas con relleno

Color de fondo para celdas con relleno

Tengo una tabla bastante compleja donde tuve que agregar algunos bordes y algo de relleno. Ahora quiero colorear estas celdas "especiales" con un fondo. Pero el color no se expande hasta el acolchado. ¿Hay alguna forma de extenderlo? este es mi código MWE:

\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}

y así es como aparece:

ingrese la descripción de la imagen aquí

Las partes resaltadas en amarillo en la siguiente imagen también deberían colorearse. Además descubrí que falta el borde en la parte superior. ¿Por qué? ¿Cómo puedo recuperarla?

ingrese la descripción de la imagen aquí

Respuesta1

Aquí tienes dos formas de obtenerlo. Se requiere nota hhlinecon celdas coloreadas.

\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} 

ingrese la descripción de la imagen aquí

Respuesta2

En general hago este tipo de cosas con tikz y \tikzmark. Las coordenadas horizontales normalmente son bastante fáciles de obtener. La vertical a veces necesita algún cálculo o más \tikzmarks. Lo bueno es que puedes dibujar el fondo antes de la tabla y, por lo tanto, siempre estará en segundo plano.

\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}

ingrese la descripción de la imagen aquí

Respuesta3

Al usar el entorno {NiceTabular}en lugar del entorno {tabular}y la clave colortbl-like(la sintaxis de colortblwill will use aunque colortblno se use), tenemos directamente el resultado esperado.

\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}

Necesita varias compilaciones (porque nicematrixutiliza nodos PGF/Tikz bajo el capó).

Salida del código anterior

información relacionada