Цвет фона для ячеек с отступами

Цвет фона для ячеек с отступами

У меня довольно сложная таблица, в которую мне пришлось добавить некоторые границы и некоторые отступы. Теперь я хочу раскрасить эти "специальные" ячейки фоном. Но цвет не распространяется на отступы. Есть ли способ расширить его? Вот мой код 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}

и вот как это выглядит:

введите описание изображения здесь

желтые выделенные части на следующем изображении тоже должны быть окрашены. Далее я обнаружил, что граница сверху отсутствует. Почему? Как мне вернуть ее?

введите описание изображения здесь

решение1

Вот два способа получить его. Примечание hhlineтребуется для цветных ячеек.

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

введите описание изображения здесь

решение2

В общем, я делаю такие вещи с помощью tikz и \tikzmark. Горизонтальные координаты обычно довольно легко получить. Вертикальные иногда требуют некоторых вычислений или большего количества \tikzmarks. Приятная вещь в том, что вы можете нарисовать фон перед табличным, и поэтому он действительно всегда будет на заднем плане.

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

введите описание изображения здесь

решение3

Используя окружение {NiceTabular}вместо окружения {tabular}и ключа colortbl-like(синтаксис colortblбудет использоваться, даже если colortblсам он не будет использоваться), мы сразу получим ожидаемый результат.

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

Вам нужно несколько компиляций (т.к. nicematrixвнутри используются узлы PGF/Tikz).

Вывод вышеуказанного кода

Связанный контент