Ich versuche, die Tabelle mit automatisch zentrierten, gedrehten mehrzeiligen Zellen zu erstellen. So etwas wie im Bild, aber mit Zellen, die automatisch an ihren Inhalt angepasst werden:
Ich habe versucht, mich zu bewerbenLösungengegeben von @AboAmmar und @Seong, diese gewährleisten jedoch keine vertikale Zentrierung innerhalb der angegebenen Zeilenanzahl.Diese Antwortist unklar, da \multirow
der Befehl unter makecell
dem Paket einen nicht ganzzahligen Wert für die Zeilenanzahl (?) akzeptiert.Hierwird etwas Code gegeben, aber das Problem besteht darin, dass dieser einen festen Wert (im \raisebox
Argument) verwendet, der nur für den Inhalt einer bestimmten Zelle geeignet ist.Die ähnlichste Frageist ohne Antwort.
Tatsächlich brauche ich eine Funktion, die \multirowrothead
als Kombination aus \multirowthead
und \rothead
Funktionen des makecell
Pakets benannt werden soll. Mein Code:
\documentclass[table]{standalone}
\usepackage{siunitx}
\usepackage{makecell}
\usepackage{xcolor}
\usepackage{multirow}
\usepackage{hhline}
\renewcommand{\theadfont}{\normalsize\bfseries}
\renewcommand{\arraystretch}{1.3}
\begin{document}
\begin{tabular}{
|l|
S[table-format=2.1]|
S[table-format=1.2]|
S[table-format=2.1]|
S[table-format=1.2]|
S[table-format=2.1]|
S[table-format=1.2]|
}
\hline
% https://tex.stackexchange.com/questions/246889/how-to-color-column-heads-determined-width-makecell
\rowcolor{gray}
\multicolumn{3}{|c|}{\colorbox{gray}{\thead{First title in heading}}} &
\multicolumn{2}{c|}{\colorbox{gray}{\thead{Second title\\in heading}}} & &\\
\hhline{>{\arrayrulecolor{black}}|-----|>{\arrayrulecolor{gray}}-%
>{\arrayrulecolor{black}}|>{\arrayrulecolor{gray}}->{\arrayrulecolor{black}}|%
}
\rowcolor{gray}
& & & & \colorbox{gray}{\thead{data\\description}} &
{\multirowthead{-2}{Data\\description}} &\\
\hhline{%
>{\arrayrulecolor{black}}|>{\arrayrulecolor{gray}}-%
>{\arrayrulecolor{black}}|>{\arrayrulecolor{gray}}-%
>{\arrayrulecolor{black}}|>{\arrayrulecolor{gray}}-%
>{\arrayrulecolor{black}}|>{\arrayrulecolor{gray}}-%
>{\arrayrulecolor{black}}|-|-|%
>{\arrayrulecolor{gray}}->{\arrayrulecolor{black}}|%
}
\rowcolor{gray}
\colorbox{gray}{\multirowthead{-2}{side-heading\\description}} &
\colorbox{gray}{\multirowthead{-2}{data\\description}} &
\colorbox{gray}{\multirowthead{-2}{data\\description}} &
\colorbox{gray}{\multirowthead{-2}{data\\description}} &
\colorbox{gray}{\thead{A}} & \colorbox{gray}{\thead{B}} &
\colorbox{gray}{\multirowthead{-3}{Data description}}\\
\hline
Description 1 & 63.5 & 4.87 & 63.5 & 4.87 & 63.5 & 4.87\\
\hline
Description 2 & 88.4 & 5.13 & 88.4 & 5.13 & 88.4 & 5.13\\
\hline
\end{tabular}
\end{document}
Antwort1
Sie können die Menge b
in Grün auf Ihrem Bild nicht kleiner machen, da die (Gesamt-)Höhe der Zeilen 2 und 3 durch den Inhalt der Zellen der Spalte 5 beschränkt ist.
Folgendes können Sie mit {NiceTabular}
tun nicematrix
.
\documentclass{article}
\usepackage{siunitx}
\renewcommand{\arraystretch}{1.3}
\usepackage{nicematrix}
\begin{document}
\begin{NiceTabular}[ hvlines , code-before = \rowcolor{gray!30}{1-3} ]
{
c
S[table-format=2.1]
S[table-format=1.2]
S[table-format=2.1]
S[table-format=1.2]
S[table-format=2.1]
S[table-format=1.2]
}%
{\Block{1-3}{First title in heading}} & & &
\Block{1-2}{Second title\\in heading} & &
{\Block{2-1}<\rotate>{Data\\description}} &
{\Block{3-1}<\rotate>{Data description}} \\
{\Block{2-1}<\rotate>{side-heading\\description}}
& {\Block{2-1}<\rotate>{data\\description}}
& {\Block{2-1}<\rotate>{data\\description}}
& {\Block{2-1}<\rotate>{data\\description}}
& \Block{}<\rotate>{data\\description\hspace*{0.5em}} \\
& & & & {A} & {B} \\
Description 1 & 63.5 & 4.87 & 63.5 & 4.87 & 63.5 & 4.87\\
Description 2 & 88.4 & 5.13 & 88.4 & 5.13 & 88.4 & 5.13\\
\end{NiceTabular}
\end{document}
In
{NiceTabular}
können Sie Zellen mit dem integrierten Befehl sowohl vertikal als auch horizontal zusammenführen\Block
.Mit der Taste
hvlines
zeichnen Sie alle in den Blöcken ausgenommenen Regeln (was hier erwartet wird).Der integrierte Befehl
\rotate
dient zum Drehen von Zellen- und Blockinhalten.Sie können Zellen, Zeilen und Spalten mit Befehlen im Schlüssel einfärben
code-before
(es ist jedoch auch möglich, eine Syntax zu verwenden, die der Syntax von ähneltcolortbl
). Normalerweise ist die Ausgabe in allen PDF-Viewern bei allen Zoomstufen gut.Allerdings benötigt man dazu mehrere Zusammenstellungen.