Encabezados de tabla multilínea en negrita, alineados horizontal y verticalmente

Encabezados de tabla multilínea en negrita, alineados horizontal y verticalmente

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 longtableel 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:

Encabezados de tabla no alineados

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 tabulary lo eliminé centerporque 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 makecellpaquete, 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 \theady \makecell. También cargué cellspacepara 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} 

ingrese la descripción de la imagen aquí

información relacionada