![Encabezados de tabla multilínea en negrita, alineados horizontal y verticalmente](https://rvso.com/image/305749/Encabezados%20de%20tabla%20multil%C3%ADnea%20en%20negrita%2C%20alineados%20horizontal%20y%20verticalmente.png)
Estoy intentando imprimir una tabla donde la primera fila, que contiene el encabezado, debe estar en negrita y centrada tanto horizontal como verticalmente. Además, estoy usando longtable
el entorno deeste paquete, ya que tengo una tabla muy larga que abarca varias páginas. Debido a la tensión horizontal, también quiero colocar algunos de los encabezados de las tablas en 2 líneas (pero no todas), lo cual hice usandoshortstack
Dicho esto, todavía no puedo alinear el contenido del encabezado verticalmente, dado que algunas celdas tienen 2 líneas y otras solo 1. Vea a continuación un MWE:
\documentclass{report}
\usepackage{booktabs}
\usepackage{longtable}
\newcommand*{\thead}[1]{\multicolumn{1}{c}{\bfseries #1}}
\begin{document}
\begin{center}
\begin{longtable}{rcrrcc}
\toprule
\thead{ID} & \thead{Database name} & \thead{\shortstack{Size\\(MB)}} & \thead{\shortstack{No. of\\records}} & \thead{\shortstack{Time stamp\\1st record}} & \thead{\shortstack{Time stamp\\last record}} \\
\midrule
%\input{tab-metadata} Really long table
1 & dummie & 2.1 & 33 & dummie & dummie \\
2 & dummie & 4.3 & 67 & dummie & dummie \\
\bottomrule
\end{longtable}
\end{center}
\end{document}
Este código origina la siguiente tabla:
Pido su ayuda para encontrar la forma más simple, correcta y elegante de resolver este problema y centrar verticalmente todas las celdas del encabezado.
Respuesta1
El centrado vertical de los encabezados se realiza más fácilmente tabular
y lo eliminé center
porque no centra las tablas largas. Reduje un poco el espacio entre columnas porque su tabla era demasiado ancha para la página.
\documentclass{report}
\usepackage{booktabs}
\usepackage{longtable}
\newcommand*{\thead}[1]{%
\multicolumn{1}{c}{\bfseries\begin{tabular}{@{}c@{}}#1\end{tabular}}}
\begin{document}
\setlength\tabcolsep{5pt}
\begin{longtable}{@{}rcrrcc@{}}
\toprule
\thead{ID} &
\thead{Database name} &
\thead{Size\\(MB)} &
\thead{No. of\\records} &
\thead{Time stamp\\1st record} &
\thead{Time stamp\\last record} \\
\midrule
%\input{tab-metadata} Really long table
1 & dummie & 2.1 & 33 & dummie & dummie \\
2 & dummie & 4.3 & 67 & dummie & dummie \\
\bottomrule
\end{longtable}
\end{document}
Respuesta2
Otra solución con el makecell
paquete, que está diseñada precisamente para elegir tanto la alineación vertical como la horizontal y un formato común en las celdas con los comandos \thead
y \makecell
. También cargué cellspace
para tener un espacio vertical menos ajustado en las tablas:
\documentclass{report}
\usepackage{booktabs}
\usepackage{longtable}
\usepackage{makecell}
\renewcommand\theadfont{\bfseries}
\usepackage{cellspace}
\setlength\cellspacetoplimit{4pt}
\setlength\cellspacebottomlimit{4pt}
\begin{document}
\begin{center}
\begin{longtable}{Srcrrcc}
\toprule
\thead{ID} & \thead{Database name} & \thead{\shortstack{Size & & & \\(MB)}} & \thead{\shortstack{No. of\\records}} & \thead{\shortstack{Time stamp\\1st record}} & \thead{\shortstack{Time stamp\\last record}} \\
\midrule
%\input{tab-metadata} Really long table
1 & dummie & 2.1 & 33 & dummie & dummie \\
2 & dummie & 4.3 & 67 & dummie & dummie \\
\bottomrule
\end{longtable}
\end{center}
\end{document}