Вопрос таблицы: Как сделать так, чтобы цвет в ячейке не блокировал клин?

Вопрос таблицы: Как сделать так, чтобы цвет в ячейке не блокировал клин?

У меня есть таблица с четырьмя столбцами, которые группируются в два больших столбца. Я использую пакет tabularx. Когда я ввожу данные \cline{2-5}, чтобы разместить линию над этими столбцами, она видна, когда таблица не имеет цвета, но цвет в ячейке скрывает ее, когда она есть. Я просмотрел много сообщений по этой проблеме, но обнаружил, что большинство сообщений касаются этой проблемы глубже в таблице, а не в самом начале таблицы, и не смог привести примеры для исправления моей проблемы. Я буду благодарен за любые отзывы и профессиональные советы. Ниже приведен рабочий пример моего кода.

\documentclass{article}
\usepackage{tabularx,booktabs}
\usepackage{tabularx,colortbl}
\usepackage{color, colortbl}
\usepackage[table,xcdraw]{xcolor}
\definecolor{Gray}{gray}{0.9}
\definecolor{yellow}{rgb}{1,0.98,0.46}
\usepackage{multirow, hhline}
\newcolumntype{Y}{>{\centering\arraybackslash}X}

\begin{document}

\begin{tabularx}{\textwidth}{ |l| *{4}{Y|} }
\cline{2-5}

   \multicolumn{1}{c|}{} 
 \rowcolor{Gray}
 & \multicolumn{2}{c|}{\textbf{Number of Dogs}}  
 & \multicolumn{2}{c|}{\textbf{Dogs Per Household}}\\
\hline
\rowcolor{Gray}
 \textbf{Group and Home} & \textbf{2022} & \textbf{2023} & \textbf{2022} & \textbf{2023} \\
\hline
 {\cellcolor{yellow}1}  & 2 &  2 &  1.24 & 1.42 \\ \hline
 {\cellcolor{yellow}2}  &  5 & 45 &  1.15 &  1.13 \\ \hline
 {\cellcolor{yellow}3}  &  3 & 3 & 1.03 &  1.01 \\ \hline

\end{tabularx}
\end{document}

Вот фотография. Вы увидите, что верхняя строка над столбцами 2-5 отсутствует:введите описание изображения здесь

решение1

С {NiceTabular}из nicematrix.

\documentclass{article}
\usepackage{xcolor}
\usepackage{nicematrix}

\begin{document}

\renewcommand{\arraystretch}{1.3}
\begin{NiceTabular}{>{\columncolor{yellow!50}}l*{4}{X[c]}}[hvlines,corners]
\RowStyle[nb-rows=2,rowcolor=gray!15]{\bfseries}
 & \Block{1-2}{Number of Dogs}  
 && \Block{1-2}{Dogs Per Household} \\
 Group and Home & 2022 & 2023 & 2022  &  2023  \\
             1  &  2   &  2   &  1.24  & 1.42  \\ 
             2  &  5   & 45   &   1.15 &  1.13 \\ 
             3  &  3   & 3    &  1.03  &  1.01 \\ 
\end{NiceTabular}

\end{document}

Вам понадобится несколько компиляций.

Вывод кода выше

решение2

Чтобы подробнее рассказать о предложении @DavidCarlisle: рассмотрите возможность избавиться от всех вертикальных и горизонтальных линий в этой небольшой таблице. Если вы считаете, что абсолютно необходимо предоставить вертикальную линию вдоль правого края и горизонтальную линию вдоль нижнего края, вы можете использовать директиву, \arrayrulecolorчтобы сделать эти линии Grayменее заметными, если говорить визуально.

Кроме того, поскольку вы используете цвета как заметный инструмент выделения, вы могли бы избавиться от \textbfдиректив в заголовке. Конечно, пожалуйста, избегайте смешивания и несоответствия визуальных метафор.

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

\documentclass{article}

\usepackage{tabularx,ragged2e}
\newcolumntype{C}{>{\Centering}X}
\setlength\extrarowheight{2pt} % for a less-cramped "look"

\usepackage[table,xcdraw]{xcolor}
\definecolor{Gray}{gray}{0.9}
\definecolor{yellow}{rgb}{1,0.98,0.46}

\begin{document}

\arrayrulecolor{Gray}
\noindent % <-- don't forget this directive
\begin{tabularx}{\textwidth}{ l CCCC |}  
\rowcolor{Gray}
Group and Home & 
\multicolumn{2}{c}{Number of Dogs} & 
\multicolumn{2}{c}{Dogs Per Household}\\

\rowcolor{Gray}
& 2022 & 2023 & 2022 & 2023 \\

\cellcolor{yellow} 1 & 2 &  2 & 1.24 & 1.42 \\
\cellcolor{yellow} 2 & 5 & 45 & 1.15 & 1.13 \\ 
\cellcolor{yellow} 3 & 3 &  3 & 1.03 & 1.01 \\ 
\cline{2-5}
\end{tabularx}

\end{document}

решение3

Как предлагается в комментариях, используйте \hhline.

\documentclass{article}
\usepackage{tabularx,booktabs}
\usepackage[table,xcdraw]{xcolor}
\usepackage{hhline}

\definecolor{Gray}{gray}{0.9}
\definecolor{yellow}{rgb}{1,0.98,0.46}
\newcolumntype{Y}{>{\centering\arraybackslash}X}

\begin{document}

\begin{table}[htp]

\begin{tabularx}{\textwidth}{ |l| *{4}{Y|} }
\hhline{~|-|-|-|-|}
\rowcolor{Gray}
\multicolumn{1}{c|}{\cellcolor{white}} 
 & \multicolumn{2}{c|}{\textbf{Number of Dogs}}  
 & \multicolumn{2}{c|}{\textbf{Dogs Per Household}}\\
\hline
\rowcolor{Gray}
\textbf{Group and Home} & \textbf{2022} & \textbf{2023} & \textbf{2022} & \textbf{2023} \\
\hline
\cellcolor{yellow}1 & 2 &  2 & 1.24 & 1.42 \\ \hline
\cellcolor{yellow}2 & 5 & 45 & 1.15 & 1.13 \\ \hline
\cellcolor{yellow}3 & 3 &  3 & 1.03 & 1.01 \\ \hline
\end{tabularx}

\caption{A colorful table}
\end{table}

\begin{table}[htp]
\centering
\setlength{\tabcolsep}{0pt}

\begin{tabular*}{0.75\textwidth}{@{\extracolsep{\fill}} l c c c c}
\toprule
Groups and Home &
\multicolumn{4}{c}{Number of Dogs} \\
\cmidrule{2-5}
& \multicolumn{2}{c}{Absolute} & \multicolumn{2}{c}{\makebox[0pt]{per Household}} \\
\cmidrule{2-3} \cmidrule{4-5}
& 2022 & 2023 & 2022 & 2023 \\
\midrule
1  & 2 &  2 & 1.24 & 1.42 \\
2  & 5 & 45 & 1.15 & 1.13 \\
3  & 3 &  3 & 1.03 & 1.01 \\
\bottomrule
\end{tabular*}

\caption{A less fanciful table}

\end{table}

\end{document}

Обратите внимание, что \rowcolorдолжно пойтидо \multicolumn.

Я также предлагаю, как вы видите, менее причудливую реализацию. Единственная хитрость — это поле нулевой ширины, чтобы избежать излишней ширины, которая идет в последнем столбце.

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

Последний комментарий: код

\usepackage{tabularx,booktabs}
\usepackage{tabularx,colortbl}
\usepackage{color, colortbl}
\usepackage[table,xcdraw]{xcolor}

точно такой же как

\usepackage{tabularx,booktabs}
\usepackage[table,xcdraw]{xcolor}

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