
Этот код заставляет исчезать границы в цветных ячейках. Как вернуть границы? Я пробовал, hhline
но это не работает.
\documentclass{article}
\usepackage[table]{xcolor}
\usepackage{graphicx}
\begin{document}
\begin{table}
\resizebox{\textwidth}{!}{%
\begin{tabular}{lll}
\multicolumn{1}{c}{\textbf{Table}} & \multicolumn{1}{c}{\textbf{}} & \\
& a & b \\ \cline{2-3}
\multicolumn{1}{l|}{a} & \multicolumn{1}{l|}{\cellcolor[HTML] {FE0000}\textit{}} & \multicolumn{1}{l|}{} \\ \hline
\multicolumn{1}{|l|}{\textit{b}} & \multicolumn{1}{l|}{\cellcolor[HTML] {CD9934}} & \multicolumn{1}{l|}{} \\ \hline
\end{tabular}%
}
\caption{My caption}
\label{my-label}
\end{table}
\end{document}
решение1
Это известная проблема с \cline{...}
и colortbl
. В таких ситуациях строки из пакета hhline
пригодятся:
\documentclass{article}
\usepackage[table]{xcolor}
\usepackage{graphicx}
\usepackage{hhline}
\newcommand\mc[1]{\multicolumn{1}{c}{#1}}
\begin{document}
\begin{table}
\resizebox{\textwidth}{!}{%
\begin{tabular}{r|c|c|}
\mc{\textbf{Table}} & \mc{} & \mc{} \\
\mc{} & \mc{a} & \mc{b} \\
\hhline{~|-|-|}
\textit{a} & \cellcolor[HTML]{FE0000} & \\
\hhline{~|-|-|}
\textit{b} & \cellcolor[HTML]{CD9934} & \\
\hhline{~|-|-|}
\end{tabular}%
}
or
\resizebox{\textwidth}{!}{%
\begin{tabular}{|r|c|c|}
\mc{\textbf{Table}} & \mc{} & \mc{} \\
\mc{} & \mc{a} & \mc{b} \\
\hhline{-|-|-|}
\textit{a} & \cellcolor[HTML]{FE0000} & \\
\hhline{-|-|-|}
\textit{b} & \cellcolor[HTML]{CD9934} & \\
\hhline{-|-|-|}
\end{tabular}%
}
\caption{My caption}
\label{my-label}
\end{table}
\end{document}
решение2
В пакете nicematrix
имеются инструменты, предназначенные для решения такого рода проблем.
В вашем коде я заменил {tabular}
на {NiceTabular}
ключ color-inside
(этот ключ указывает, что в таблице будут цветовые инструкции).
Конечно, я загрузил nicematrix
(и выгрузил несколько неиспользованных пакетов).
Результат соответствует ожиданиям.
\documentclass{article}
\usepackage{xcolor}
\usepackage{nicematrix}
\begin{document}
\begin{table}
\resizebox{\textwidth}{!}{%
\begin{NiceTabular}{lll}[color-inside]
\multicolumn{1}{c}{\textbf{Table}} & \multicolumn{1}{c}{\textbf{}} & \\
& a & b \\ \cline{2-3}
\multicolumn{1}{l|}{a} & \multicolumn{1}{l|}{\cellcolor[HTML]{FE0000}\textit{}} & \multicolumn{1}{l|}{} \\ \hline
\multicolumn{1}{|l|}{\textit{b}} & \multicolumn{1}{l|}{\cellcolor[HTML]{CD9934}} & \multicolumn{1}{l|}{} \\ \hline
\end{NiceTabular}%
}
\caption{My caption}
\label{my-label}
\end{table}
\end{document}
Однако вывод не идеален (есть небольшая проблема связи между двумя правилами).
nicematrix
имеет инструменты для правил, которые позволят избежать этой проблемы.
\documentclass{article}
\usepackage{xcolor}
\usepackage{nicematrix}
\begin{document}
\begin{table}
\resizebox{\textwidth}{!}{%
\begin{NiceTabular}{lll}[color-inside]
\Block[c]{}{\textbf{Table}} \\
& a & b \\
a & \Block[hvlines]{1-2}{} \cellcolor[HTML]{FE0000} \\
\Block[hvlines]{1-3}{}
\textit{b} & \cellcolor[HTML]{CD9934} \\
\end{NiceTabular}%
}
\caption{My caption}
\label{my-label}
\end{table}
\end{document}