Estou tentando fazer a tabela com células de várias linhas giradas e centralizadas automaticamente. Algo como na imagem, mas com células ajustadas automaticamente ao seu conteúdo:
Eu tentei me inscreversoluçõesfornecidos por @AboAmmar e @Seong, mas não garantem a centralização vertical dentro do número especificado de linhas.Esta respostanão está claro, porque \multirow
o comando no makecell
pacote aceita valores não inteiros do número de linhas (?).Aquirecebe algum código, mas o problema é que isso envolve um valor fixo (no \raisebox
argumento) que é adequado apenas para um conteúdo de célula específico.A pergunta mais semelhanteestá sem resposta.
Na verdade, preciso de alguma função que deva ser nomeada \multirowrothead
- como uma combinação \multirowthead
e \rothead
funções do makecell
pacote. Meu código:
\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}
Responder1
Você não pode b
diminuir a quantidade em verde na sua imagem porque a altura (total) das linhas 2 e 3 é limitada pelo conteúdo das células da coluna 5.
Aqui está o que você pode fazer com {NiceTabular}
of 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}
No
{NiceTabular}
, você mescla células vertical e horizontalmente com o comando integrado\Block
.Com a chave
hvlines
você desenha todas as regras exceto nos blocos (que é o esperado aqui).O comando integrado
\rotate
é usado para girar o conteúdo de células e blocos.Você pode colorir células, linhas e colunas com comandos na chave
code-before
(no entanto, também é possível usar uma sintaxe semelhante à sintaxe decolortbl
). Normalmente, a saída é boa em todos os visualizadores de PDF em todos os níveis de zoom.No entanto, você precisa de várias compilações.