![Fettgedruckte, horizontal und vertikal ausgerichtete, mehrzeilige Tabellenüberschriften](https://rvso.com/image/305749/Fettgedruckte%2C%20horizontal%20und%20vertikal%20ausgerichtete%2C%20mehrzeilige%20Tabellen%C3%BCberschriften.png)
Ich versuche, eine Tabelle zu drucken, bei der die erste Zeile, die die Kopfzeile enthält, fett und sowohl horizontal als auch vertikal zentriert sein soll. Außerdem verwende ich longtable
die Umgebung vondieses Paket, da ich eine wirklich lange Tabelle habe, die sich über mehrere Seiten erstreckt. Aufgrund der horizontalen Belastung möchte ich auch einige der Tabellenüberschriften in 2 Zeilen unterbringen (aber nicht alle), was ich mitshortstack
Allerdings gelingt es mir immer noch nicht, den Inhalt der Kopfzeile vertikal auszurichten, da einige Zellen zwei Zeilen und andere nur eine haben. Unten sehen Sie ein 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}
Dieser Code erzeugt die folgende Tabelle:
Ich bitte um Ihre Hilfe, den einfachsten, korrektesten und elegantesten Weg zu finden, dieses Problem zu lösen und alle Kopfzellen vertikal zu zentrieren.
Antwort1
Die vertikale Zentrierung von Überschriften ist am einfachsten mit zu bewerkstelligen tabular
und ich habe es entfernt, center
da es lange Tabellen nicht zentriert. Ich habe den Spaltenabstand etwas reduziert, da Ihre Tabelle für die Seite etwas zu breit war.
\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}
Antwort2
Eine weitere Lösung mit dem makecell
Paket, das genau darauf ausgelegt ist, sowohl vertikale als auch horizontale Ausrichtung und eine gemeinsame Formatierung in Zellen mit den Befehlen \thead
und auszuwählen \makecell
. Ich habe auch geladen, cellspace
um einen weniger engen vertikalen Abstand in Tabellen zu haben:
\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}