我有以下代码用于在多列环境中创建表格。我想将列标题居中,并使表格自动从一端到另一端占据整个列。这在表格中可以实现吗?
\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
\columnwidth
p
色谱柱规格
{ 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>
允许对尺寸(或长度)进行计算。