Estoy intentando hacer una mesa de látex que se parece a la imagen. Básicamente debería haber 4 columnas de texto rotado debajo del Encabezado 1, una celda gris que contiene información adicional. Soy nuevo en el mundo del látex y no tengo idea de cómo hacer esta mesa al estilo librero.
\documentclass{article}
\newcommand*\turn{\rotatebox[origin=b]{90}}
\usepackage{array}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{array, caption}
\usepackage{graphicx}
\usepackage{makecell}
\usepackage[table,xcdraw]{xcolor}
\begin{document}
\begin{table}[]
\centering
\begin{tabular}{@{}llllll@{}}
\toprule
& \multicolumn{4}{c}{Header 1} & \\
\cmidrule(lr){2-5}
&\turn{Text1} &\turn{Text2} &\turn{Text3} & \turn{Text4} & \cellcolor{gray!25} \makecell[l]{Some line 1\\ Some line 1\\ Some line 1\\ Some line 1\\ Some line 1} \\
Header 3 & & & & &Header 3\\
\midrule
& & & & & \\
& & & & & \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
Respuesta1
MWE, que reproduce esta tabla (inusual) (como se muestra en la pregunta) es:
\documentclass{article}
\usepackage[table,xcdraw]{xcolor}
\usepackage{rotating}
\usepackage{makecell, multirow, tabularx}
\newcolumntype{L}{>{\raggedright\arraybackslash}X}
\usepackage[skip=1ex]{caption}
\begin{document}
\begin{table}[htb]
\centering
\setlength\extrarowheight{2pt}
\settowidth\rotheadsize{Text 4}
\renewcommand\rotheadgape{}
\begin{tabularx}{0.6\linewidth}{ l llll c@{\,}X }
\Xhline{1pt}
& \multicolumn{4}{c}{Header 1}
&& \cellcolor{gray!25} \\
\Xcline{2-5}{0.6pt}
& \rothead{Text 1}
& \rothead{Text 2}
& \rothead{Text 3}
& \rothead{Text 4}
&& \cellcolor{gray!25}%
\multirow{-2.2}{=}{\noindent
Some line 1 Some line 2
Some line 3} \\
Header 3 & & & & && Header 3 \\
\Xhline{0.6pt}
A & & & & && 1 \\
B & & & & && 2 \\
\Xhline{1pt}
\end{tabularx}
\end{table}
\end{document}
Apéndice:
\documentclass{article}
\usepackage[table,xcdraw]{xcolor}
\usepackage{rotating}
\usepackage{makecell, multirow, tabularx}
\newcolumntype{L}{>{\raggedright\arraybackslash}X}
\newcommand\mrrc[1]{\multirow{-2.4}{*}{\rothead{#1}}} % <---
\usepackage[skip=1ex]{caption}
\begin{document}
\begin{table}[htb]
\centering
\setlength\extrarowheight{2pt}
\settowidth\rotheadsize{Text 4}
\renewcommand\rotheadgape{}
\begin{tabularx}{0.6\linewidth}{ l llll c@{\,}L }
\Xhline{1pt}
& \multicolumn{4}{c}{Header 1}
&& \cellcolor{gray!25} \\
\Xcline{2-5}{0.6pt}
& & & & && \cellcolor{gray!25} % <---
\small\linespread{0.84}\selectfont % <---
\multirow{-1.8}{=}{\noindent
Some line 1
Some line 2
Some line 3} \\[1ex]
Header 3 & \mrrc{Text 1} % <--- rotated headers moved down
& \mrrc{Text 2}
& \mrrc{Text 3}
& \mrrc{Text 4}
&& Header 3 \\
\Xhline{0.6pt}
A & & & & && 1 \\
B & & & & && 2 \\
\Xhline{1pt}
\end{tabularx}
\end{table}
\end{document}
con suerte producir lo que te gusta tener:
Respuesta2
¿Es lo que quieres tener?
\documentclass{article}
\newcommand*\turn{\rotatebox[origin=b]{90}}
\usepackage{array}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{array, caption}
\usepackage{graphicx}
\usepackage{makecell}
\usepackage[table,xcdraw]{xcolor}
\begin{document}
\begin{table}[]
\centering
\begin{tabular}{@{}llllll@{}}
\toprule
& \multicolumn{4}{c}{Header 1} & \\
\cmidrule(lr){2-5}
&\multirowcell{3.5}{\turn{Text1}} &\multirowcell{3.5}{\turn{Text2}} &\multirowcell{3.5}{\turn{Text3}} & \multirowcell{3.5}{\turn{Text4}} & \cellcolor{gray!25} \makecell{Some line 1\\ Some line 1\\ Some line 1\\ Some line 1\\ Some line 1} \\
\addlinespace
Header 3 & & & & &Header 3\\
\midrule
& & & & & \\
& & & & & \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
Respuesta3
Aquí hay una solución con {NiceTabular}
of nicematrix
.
\documentclass{article}
\usepackage{xcolor}
\usepackage{nicematrix}
\usepackage{booktabs}
\begin{document}
\begin{table}[htb]
\centering
\setlength\extrarowheight{2pt}
\begin{NiceTabular}{llllll}
\CodeBefore
\rectanglecolor{gray!20}{1-6}{2-6}
\Body
\toprule
& \Block{1-4}{Header 1} &&&
& \Block{2-1}{Some line 1\\ Some line 2 \\ Some line 3} \\
\cmidrule(lr){2-5}
\RowStyle{\rotate}
& Text 1
& Text 2
& Text 3
& Text 4 \\
Header 3 & & & & & Header 3 \\
\midrule
A & & & & & 1 \\
B & & & & & 2 \\
\bottomrule
\end{NiceTabular}
\end{table}
\end{document}
Esta solución utiliza
\booktabs
(nicematrix
es compatible conbooktabs
). Por lo tanto, es fácil de usar para acortar\cmidrule
(\cmidrule(rl)
no hay necesidad de una columna ficticia).El comando
\Block
denicematrix
colocar su contenido en el centro matemático de las celdas de combinación. No es necesario realizar ajustes manualmente como en\multirow
.El comando
\rowstyle
aplica comandos de formato a todas las celdas de la fila.En
nicematrix
, los paneles coloreados se dibujan antes de todas las reglas (el resultado es mejor en los visores de PDF: las reglas no parecerán desaparecer en algunos niveles de zoom en algunos visores de PDF como Adobe Reader).