如何使表格标题居中并将表格拉伸至整个列宽?

如何使表格标题居中并将表格拉伸至整个列宽?

我有以下代码用于在多列环境中创建表格。我想将列标题居中,并使表格自动从一端到另一端占据整个列。这在表格中可以实现吗?

\documentclass[11pt, a4paper]{article}
\usepackage{multicol}
\usepackage{booktabs}
\usepackage[left=17.5mm,right=17.5mm,top=24.5mm,bottom=33.95mm]{geometry}
\setlength{\columnsep}{20pt}
\begin{document}
\begin{multicols*}{2}
\begin{center}
\begin{tabular}{ l  l  l }
\toprule
Property&Value&Unit\\
\midrule
Item description& 59& mm \\
Item description& 50& mm \\
Item description long& 76&mm\\
Item description&80&mm\\
Item description long& 20& mm \\
Item description long& 70& mm \\
Item description& 40&mm\\
Item description& 873& K \\
Item description long& 300& K \\
Item description&103,405 &Pa\\
\bottomrule
\end{tabular}
\end{center}
Text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text 

\end{multicols*}
\end{document} 

答案1

下面是一次尝试(我还将最后两列居中,因为它看起来“合适”):

在此处输入图片描述

\documentclass[11pt, a4paper]{article}
\usepackage{multicol}% http://ctan.org/pkg/multicol
\usepackage{tabularx}% http://ctan.org/pkg/tabularx
% The following package is loaded by tabularx
%\usepackage{array}% http://ctan.org/pkg/array
\usepackage{booktabs}% http://ctan.org/pkg/booktabx
\usepackage[left=17.5mm,right=17.5mm,top=24.5mm,bottom=33.95mm]{geometry}% http://ctan.org/pkg/geometry
\setlength{\columnsep}{20pt}
\begin{document}
\begin{multicols*}{2}
  \begin{center}
    \begin{tabularx}{\columnwidth}{ X  *{2}{>{\centering\arraybackslash}p{.25\columnwidth}} }
      \toprule
      \centering\arraybackslash Property & Value & Unit\\
      \midrule
      Item description& 59& mm \\
      Item description& 50& mm \\
      Item description long& 76&mm\\
      Item description&80&mm\\
      Item description long& 20& mm \\
      Item description long& 70& mm \\
      Item description& 40&mm\\
      Item description& 873& K \\
      Item description long& 300& K \\
      Item description&103,405 &Pa\\
      \bottomrule
    \end{tabularx}
  \end{center}
Text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text 
\end{multicols*}
\end{document} 

tabularx提供可伸缩的X列类型,同时array允许您<stuff>逐列地在单元格条目前插入(使用前缀)。您还必须指定的>{<stuff>}宽度。aragraph 列类型设置为列宽的四分之一。tabularx\columnwidthp


色谱柱规格

{ X *{2}{>{\centering\arraybackslash}p{.25\columnwidth}} }

标识 3 列。第一列是一X列,它会拉伸以填充任何剩余的水平空间(\columnwidth在示例中)。使用*{<num>}{<col spec>}语法将以下两个指定为相同的。通常,这<col spec><num>列重复。两列都是p宽度为 的 aragraph 样式.25\columnwidth。此外,每个单元格都使用\centering\arraybackslash符号>{<stuff>}(由包提供array,通过 加载tabularx)在前面添加 。由于每个单元格跨越自己的组,因此\centering适用于特定单元格。添加是为了在环境中\arraybackslash恢复 的正确使用。\\tabular

以下是 0.5:0.3:0.2 列分布的示例,采用左:中:右对齐方式:

在此处输入图片描述

\begin{tabular}{
    p{\dimexpr.5\columnwidth-2\tabcolsep}
    >{\centering\arraybackslash}p{\dimexpr.3\columnwidth-2\tabcolsep}
    >{\raggedleft\arraybackslash}p{\dimexpr.2\columnwidth-2\tabcolsep}
    }
  %...
\end{tabular}

每列的规格都给出为,p{<len>}以便精确测量<len>列的宽度。此外,2\tabcolsep从每列中删除以适应列之间的间隙;默认情况下添加。左对齐(对齐)是 -column 中的默认设置p(或者您可以使用它>{\raggedright\arraybackslash}p{<len>}来获得非对齐的左对齐输出),而\centering\raggedleft提供居中和右对齐的列。

X如果你将第一列规范替换为并使用,你将获得相同的输出

\begin{tabularx}{\columnwidth}{
    X
    >{\centering\arraybackslash}p{\dimexpr.3\columnwidth-2\tabcolsep}
    >{\raggedleft\arraybackslash}p{\dimexpr.2\columnwidth-2\tabcolsep}
    }
  %...
\end{tabularx}

因为X是“可拉伸的p-column”(从而删除了代码中的部分计算)。在以上所有内容中,\dimexpr<expression>允许对尺寸(或长度)进行计算。

相关内容