Wie erstelle ich eine Tabelle mit mehrzeiligen gedrehten Zellen?

Wie erstelle ich eine Tabelle mit mehrzeiligen gedrehten Zellen?

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:

Bildbeschreibung hier eingeben

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 \multirowder Befehl unter makecelldem 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 \raiseboxArgument) verwendet, der nur für den Inhalt einer bestimmten Zelle geeignet ist.Die ähnlichste Frageist ohne Antwort.

Tatsächlich brauche ich eine Funktion, die \multirowrotheadals Kombination aus \multirowtheadund \rotheadFunktionen des makecellPakets 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 bin 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 hvlineszeichnen Sie alle in den Blöcken ausgenommenen Regeln (was hier erwartet wird).

  • Der integrierte Befehl \rotatedient 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 ähnelt colortbl). Normalerweise ist die Ausgabe in allen PDF-Viewern bei allen Zoomstufen gut.

  • Allerdings benötigt man dazu mehrere Zusammenstellungen.

Ausgabe des obigen Codes

verwandte Informationen