![Жирные, выровненные по горизонтали и вертикали, многострочные заголовки таблиц](https://rvso.com/image/305749/%D0%96%D0%B8%D1%80%D0%BD%D1%8B%D0%B5%2C%20%D0%B2%D1%8B%D1%80%D0%BE%D0%B2%D0%BD%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5%20%D0%BF%D0%BE%20%D0%B3%D0%BE%D1%80%D0%B8%D0%B7%D0%BE%D0%BD%D1%82%D0%B0%D0%BB%D0%B8%20%D0%B8%20%D0%B2%D0%B5%D1%80%D1%82%D0%B8%D0%BA%D0%B0%D0%BB%D0%B8%2C%20%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D1%81%D1%82%D1%80%D0%BE%D1%87%D0%BD%D1%8B%D0%B5%20%D0%B7%D0%B0%D0%B3%D0%BE%D0%BB%D0%BE%D0%B2%D0%BA%D0%B8%20%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86.png)
Я пытаюсь напечатать таблицу, где первая строка, содержащая заголовок, должна быть жирной и отцентрированной по горизонтали и вертикали. Кроме того, я использую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}