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