Жирные, выровненные по горизонтали и вертикали, многострочные заголовки таблиц

Жирные, выровненные по горизонтали и вертикали, многострочные заголовки таблиц

Я пытаюсь напечатать таблицу, где первая строка, содержащая заголовок, должна быть жирной и отцентрированной по горизонтали и вертикали. Кроме того, я используюlongtable среду изэтот пакет, так как у меня очень длинная таблица, которая занимает несколько страниц. Из-за горизонтального напряжения я также хочу уместить некоторые заголовки таблицы в 2 строки (но не все), что я и сделал с помощьюshortstack

Тем не менее, я все еще не могу выровнять содержимое заголовка по вертикали, учитывая, что в некоторых ячейках 2 строки, а в других — только 1. Ниже приведен пример 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}

Этот код создает следующую таблицу:

Невыровненные заголовки таблиц

Я прошу вашей помощи в поиске самого простого, правильного и элегантного способа решения этой проблемы и выравнивания всех ячеек заголовков по вертикали и центру.

решение1

Вертикальное центрирование заголовков проще всего сделать, tabularи я удалил его, centerтак как оно не центрирует длинные таблицы. Я немного уменьшил расстояние между столбцами, так как ваша таблица была немного шире страницы.

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

решение2

Другое решение с makecellпакетом, который разработан именно для выбора как вертикального, так и горизонтального выравнивания и общего форматирования в ячейках с помощью команд \theadи \makecell. Я также загрузил, cellspaceчтобы иметь менее плотный вертикальный интервал в таблицах:

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

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

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