Frage zur Tabelle: Wie verhindere ich, dass die Farbe in einer Zelle einen Cline blockiert?

Frage zur Tabelle: Wie verhindere ich, dass die Farbe in einer Zelle einen Cline blockiert?

Ich habe eine Tabelle mit vier Spalten, die in zwei größere Spalten gruppiert sind. Ich verwende das Paket tabularx. Wenn ich eingebe \cline{2-5}, dass eine Linie über diesen Spalten platziert werden soll, ist sie sichtbar, wenn die Tabelle keine Farbe hat, aber die Farbe in der Zelle verbirgt sie, sobald sie vorhanden ist. Ich habe viele Beiträge zu diesem Problem gelesen, aber festgestellt, dass sich die meisten Beiträge auf dieses Problem tiefer in einer Tabelle und nicht ganz am Anfang einer Tabelle beziehen, und ich konnte keine Beispiele erstellen, um mein Problem zu beheben. Ich freue mich über Feedback und Profi-Tipps. Unten ist ein funktionierendes Beispiel meines Codes.

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

Hier ist ein Foto. Sie werden sehen, dass die oberste Zeile über den Spalten 2-5 fehlt:Bildbeschreibung hier eingeben

Antwort1

Mit {NiceTabular}von 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}

Man braucht mehrere Zusammenstellungen.

Ausgabe des obigen Codes

Antwort2

Um den Vorschlag von @DavidCarlisle näher zu erläutern: Erwägen Sie, alle vertikalen und horizontalen Linien in dieser kleinen Tabelle zu entfernen. Wenn Sie der Meinung sind, dass es unbedingt erforderlich ist, eine vertikale Linie entlang der rechten Kante und eine horizontale Linie entlang der unteren Kante bereitzustellen, können Sie eine \arrayrulecolorAnweisung verwenden, um diese Linien Grayoptisch weniger auffällig darzustellen.

Da Sie Farben als markantes Hervorhebungsmittel verwenden, könnten Sie die \textbfAnweisungen in der Kopfzeile auch weglassen. Vermeiden Sie auf jeden Fall das Mischen und Nichtzusammenpassen visueller Metaphern.

Bildbeschreibung hier eingeben

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

Antwort3

Verwenden Sie, wie in den Kommentaren vorgeschlagen \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}

Beachten Sie, dass \rowcolorgehen sollteVor \multicolumn.

Wie Sie sehen, schlage ich auch eine weniger ausgefallene Realisierung vor. Der einzige Trick ist die Box mit der Breite Null, um die überschüssige Breite in der letzten Spalte zu vermeiden.

Bildbeschreibung hier eingeben

Ein letzter Kommentar: Der Code

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

ist genau das gleiche wie

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

verwandte Informationen