
Ich bin neu bei LaTex und habe ein kleines Problem mit dieser Tabelle ... Ich muss viele Tabellen dieser Art erstellen und würde gerne einen Weg finden, dieses Problem automatisch zu beheben. Kann mir bitte jemand helfen? Unten finden Sie meinen Code und die Tabelle.
Vielen Dank!
\documentclass{article}
\usepackage{multirow}
\usepackage{xcolor}
\usepackage{colortbl}
\usepackage{rotating}
\begin{document}
\begin{table}[!ht]
\begin{center}
\caption{Matrice de confusion pour les classes texturales concernant notre campagne d’échantillonnage.}
\begin{tabular}{|
>{\columncolor[HTML]{C0C0C0}}c |
>{\columncolor[HTML]{EFEFEF}}c |c|c|c|c|}
\hline
\multicolumn{1}{|l|}{\cellcolor[HTML]{C0C0C0}} & \multicolumn{5}{c|}{\cellcolor[HTML]{C0C0C0}\textbf{\begin{tabular}[c]{@{}c@{}}Texture\\ observée sur le terrain\end{tabular}}} \\ \hline
\cellcolor[HTML]{C0C0C0} & & \cellcolor[HTML]{EFEFEF}A & \cellcolor[HTML]{EFEFEF}L & \cellcolor[HTML]{EFEFEF}Z & \cellcolor[HTML]{EFEFEF}\textbf{Total} \\ \cline{2-6}
\cellcolor[HTML]{C0C0C0} & A & 3 & 2 & 0 & 5 \\ \cline{2-6}
\cellcolor[HTML]{C0C0C0} & L & 4 & 7 & 0 & 11 \\ \cline{2-6}
\cellcolor[HTML]{C0C0C0} & Z & 0 & 1 & 3 & 4 \\ \cline{2-6}
\multirow{-5}{*}{\cellcolor[HTML]{C0C0C0}\textbf{\rotatebox{90}{Référence CNSW}}} & \textbf{Total} & 7 & 10 & 3 & \textbf{20} \\ \hline
\end{tabular}
\end{center}
\end{table}
\end{document}
Antwort1
Ich würde immer versuchen, diese übermäßige Farbgebung von Tabellen zu vermeiden. Halten Sie es sauber und ordentlich, das ist am Ende besser lesbar!
Hier ist eine mögliche Lösung. Beachten Sie jedoch, dass Sie die Position manuell feinabstimmen müssen \parbox
.
\documentclass{article}
\usepackage{multirow}
\usepackage{makecell}
\usepackage{booktabs}
\usepackage{rotating}
\renewcommand\theadalign{bc}
\renewcommand\theadfont{\bfseries}
\begin{document}
\begin{table}[!ht]
\caption{Matrice de confusion pour les classes texturales concernant notre campagne d’échantillonnage.}
\begin{center}
\begin{tabular}{*{6}{c}}
\toprule
& \multicolumn{5}{c}{\thead{Texture\\ observée sur le terrain}}\\
\midrule
\multirow{5}{*}{\rotatebox{90}{\parbox[c]{2.2cm}{\centering\textbf{Référence CNSW}}}}
&
& A
& L
& Z
& \textbf{Total}\\
& A
& 3
& 2
& 0
& 5\\
& L
& 4
& 7
& 0
& 11\\
& Z
& 0
& 1
& 3
& 4\\\addlinespace
& \textbf{Total}
& 7
& 10
& 3
& \textbf{20} \\
\bottomrule
\end{tabular}
\end{center}
\end{table}
\end{document}
Antwort2
Mit nicematrix
erhalten Sie in allen PDF-Viewern und auf allen Zoomstufen eine perfekte Ausgabe (Sie erhalten keine dünnen weißen Linien in den grauen Bereichen und die Regeln scheinen bei einigen Zoomstufen nicht zu verschwinden).
\documentclass{article}
\usepackage[svgnames]{xcolor}
\usepackage{caption}
\usepackage{nicematrix}
\NiceMatrixOptions{cell-space-top-limit=2pt}
\begin{document}
\begin{table}[!ht]
\centering
\captionsetup{width=9cm, format=hang}
\setlength{\extrarowheight}{2pt}
\caption{Matrice de confusion pour les classes texturales concernant notre campagne d’échantillonnage.}
\begin{NiceTabular}{cccccc}[hvlines,corners=NW]
\CodeBefore
\rectanglecolor{LightGrey!50}{2-2}{2-6}
\Body
& \Block[fill=LightGrey]{1-5}<\bfseries>{Texture\\ observée sur le terrain} \\
\Block[fill=LightGrey]{5-1}<\bfseries\rotate>{Référence\\CNSW} &
\Block[fill=LightGrey!50]{5-1}{}
& A & L & Z & \textbf{Total} \\
& A & 3 & 2 & 0 & 5 \\
& L & 4 & 7 & 0 & 11 \\
& Z & 0 & 1 & 3 & 4 \\
& \textbf{Total} & 7 & 10 & 3 & \textbf{20} \\
\end{NiceTabular}
\end{table}
\end{document}
Sie benötigen mehrere Kompilierungen, da nicematrix
PGF/Tikz-Knoten verwendet werden.
Antwort3
Hier ist eine Lösung mit verschiedenen Verbesserungen und Codevereinfachungen. Für Ihr spezielles Problem ist das Paket das Haupttool makecell
, das Zeilenumbrüche in Standardzellen ermöglicht, allerdings funktioniert es nicht gut mit Farben in Tabellen, da sich im Hintergrund Tabellen befinden. Der \Centerstack
Befehl von stackengine
hat dieses Problem nicht. Außerdem müssen Sie nicht xcolor
und laden colortbl
: Die table
Option von xcolor erledigt dies für Sie und fügt einige weitere Farbbefehle für Tabellen hinzu. Zuletzt \cline
bleiben in einer farbigen Tabelle einige dünne weiße Linien übrig, also habe ich sie durch \hhline
s ersetzt, bei denen ein Teil der Linien die Farbe des Hintergrunds hat, um sie unsichtbar zu machen.
\documentclass{article}
\usepackage{multirow}
\usepackage[table, svgnames]{xcolor}
\colorlet{grey2}{LightGrey!25}
\usepackage{rotating}
\usepackage{caption, makecell, hhline}
\newcommand{\myhhline}{\hhline{|>{\arrayrulecolor{LightGrey}}- > {\arrayrulecolor{black}}|>{\arrayrulecolor{grey2}}->{\arrayrulecolor{black}}|----|}}
\usepackage[usestackEOL]{stackengine}
\begin{document}
\begin{table}[!ht]
\centering
\captionsetup{width=9cm, format=hang}
\setlength{\extrarowheight}{2pt}
\caption{Matrice de confusion pour les classes texturales concernant notre campagne d’échantillonnage.}
\begin{tabular}{|
>{\columncolor{LightGrey}}c |
>{\columncolor{grey2}}c|c|c|c|c|}
\hline
\rowcolor{LightGrey} & \multicolumn{5}{c|}{\bfseries\Centerstack{Texture\\ observée sur le terrain}} \\ \hline
\rowcolor{grey2}\cellcolor{LightGrey} & & A & L & Z & \textbf{Total} \\[-0.2pt]
\myhhline
& A & 3 & 2 & 0 & 5 \\[-0.1pt]
\myhhline%
& L & 4 & 7 & 0 & 11 \\[-0.1pt]
\myhhline
& Z & 0 & 1 & 3 & 4 \\[-0.1pt]
\myhhline
\multirow{-5}{*}{\textbf{\rotatebox{90}{\Centerstack{Référence\\ CNSW}}}} & \textbf{Total} & 7 & 10 & 3 & \textbf{20} \\ \hline
\end{tabular}
\end{table}
\end{document}