Как создать таблицу с многострочными повернутыми ячейками?

Как создать таблицу с многострочными повернутыми ячейками?

Я пытаюсь сделать таблицу с автоматически центрированными, повернутыми многострочными ячейками. Что-то вроде того, что на картинке, но с ячейками, автоматически подогнанными под их содержимое:

введите описание изображения здесь

Я пытался применитьрешенияпредоставлено @AboAmmar и @Seong, но они не гарантируют вертикальное центрирование в пределах указанного количества строк.Этот ответнеясно, поскольку \multirowкоманда в makecellпакете принимает нецелое значение количества строк (?).Здесьзадан некоторый код, но проблема в том, что он использует фиксированное значение (в \raiseboxаргументе), которое подходит только для одного конкретного содержимого ячейки.Самый похожий вопросостается без ответа.

На самом деле мне нужна некоторая функция, которая должна быть названа \multirowrothead- как комбинация \multirowtheadи \rotheadфункций пакета makecell. Мой код:

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

решение1

Вы не можете bуменьшить количество, выделенное зеленым цветом на вашей картинке, поскольку (общая) высота строк 2 и 3 ограничена содержимым ячеек столбца 5.

Вот что вы можете сделать {NiceTabular}с 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} 
  • В {NiceTabular}, вы можете объединять ячейки как по вертикали, так и по горизонтали с помощью встроенной команды \Block.

  • С помощью ключа hvlinesвы рисуете все правила, исключенные в блоках (что здесь и ожидается).

  • Встроенная команда \rotateиспользуется для поворота содержимого ячеек и блоков.

  • Вы можете раскрашивать ячейки, строки и столбцы с помощью команд в ключе code-before(однако, также возможно использовать синтаксис, похожий на синтаксис colortbl). Обычно вывод хорош во всех просмотрщиках PDF на всех уровнях масштабирования.

  • Однако вам понадобится несколько компиляций.

Вывод кода выше

Связанный контент