Tengo una tabla con cuatro columnas que se agrupan en dos columnas más grandes. Estoy usando el paquete tabularx
. Cuando ingreso \cline{2-5}
para colocar una línea encima de esas columnas, es visible cuando la tabla no tiene color, pero el color en la celda la oculta una vez presente. He visto muchas publicaciones sobre el tema, pero encontré que la mayoría de las publicaciones se refieren a este problema más profundamente dentro de una tabla y no al comienzo de una tabla y no pude manipular ejemplos para solucionar mi problema. Agradezco cualquier comentario y consejo profesional. A continuación se muestra un ejemplo funcional de mi código.
\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}
Aquí hay una foto. Verá que la línea superior encima de las columnas 2 a 5 está ausente:
Respuesta1
Con {NiceTabular}
de 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}
Necesitas varias compilaciones.
Respuesta2
Para profundizar en la sugerencia de @DavidCarlisle: considere deshacerse de todas las reglas verticales y horizontales en esta pequeña tabla. Si cree que es absolutamente esencial proporcionar una regla vertical a lo largo del borde derecho y una regla horizontal a lo largo del borde inferior, puede usar una \arrayrulecolor
directiva para representar estas reglas Gray
y, por lo tanto, mucho menos prominentes, visualmente hablando.
Además, dado que está utilizando colores como dispositivo de resaltado destacado, puede deshacerse de las \textbf
directivas en el encabezado. Por supuesto, evite mezclar y no combinar metáforas visuales.
\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}
Respuesta3
Como se sugiere en los comentarios, utilice \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}
Tenga en cuenta que \rowcolor
debería irantes \multicolumn
.
También propongo, como veis, una realización menos fantasiosa. El único truco es el cuadro de ancho cero para evitar que el exceso de ancho vaya a la última columna.
Un comentario final: el código
\usepackage{tabularx,booktabs}
\usepackage{tabularx,colortbl}
\usepackage{color, colortbl}
\usepackage[table,xcdraw]{xcolor}
es exactamente igual que
\usepackage{tabularx,booktabs}
\usepackage[table,xcdraw]{xcolor}