粗体、水平和垂直对齐、多行表格标题

粗体、水平和垂直对齐、多行表格标题

我正在尝试打印一个表格,其中包含标题的第一行应为粗体,并且水平和垂直居中。此外,我使用的longtable环境来自这个包,因为我有一个很长的表格,跨越了好几页。由于水平压力,我还想将一些表格标题放在两行中(但不是全部),我使用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\makecellcellspace

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

在此处输入图片描述

相关内容