我希望代码能给我一个宽度固定、水平居中的表格。我曾经>{\centering}
在表格定义中这样做过,但将其添加到最后一列会完全改变表格并引发一堆错误(包括 \hline 处于错误的位置)。我做错了什么/有更好的方法吗?
\documentclass{article}
\usepackage{array,booktabs}% http://ctan.org/pkg/{array,booktabs}
\begin{document}
\begin{table}[htbp]
\center
\caption{a table}
\centering
%\hskip-2cm \begin{tabular}{p{0.9cm}| cccccc}
\begin{center}
\small
\begin{tabular}
{>{\centering}m{1.3cm}| >{\centering}p{2.14cm}>{\centering}p{2.14cm}>{\centering}p{2.13cm}>{\centering}p{2.13cm}p{2.13cm}}
Angle ($ ^{\circ}$) \newline $\dot{m}$ (g/m/s) & 0 & 15 & 30 & 45 & 60 \\
\hline
\\
70
& 1
& 1
& 1
& 1
& 1 \\
70
& 1
& 1
& 1
& 1
& 1 \\
70
& 1
& 1
& 1
& 1
& 1 \\
\hline
\end{tabular}
\end{center}
\end{table}
\end{document}
答案1
问题是>{\centering}p{2.13cm}
最后一列的含义发生了变化\\
,因此您要么使用\tabularnewline
,要么执行>{\centering\arraybackslash}p{2.13cm}
。
但是,由于除了左上角的单元格之外,其他单元格似乎都不需要换行,因此使用起来更简单
w{c}{2.14cm}
指定具有中心对齐的固定宽度列。
另一方面,您必须猜测宽度才能适合给定的文本宽度。所以我建议用另一种方法来处理表格。
\documentclass{article}
\usepackage{array,booktabs}% http://ctan.org/pkg/{array,booktabs}
\newcommand{\smashedcell}[1]{\smash{\begin{tabular}[t]{@{}c@{}}#1\end{tabular}}}
\begin{document}
\begin{table}[htbp]
\centering\small
\caption{a table}
\begin{tabular*}{\textwidth}{ @{\extracolsep{\fill}} *{6}{c} @{} }
\toprule
\smashedcell{$\dot{m}$ \\ (g/m/s)} & \multicolumn{5}{c}{Angle ($^{\circ}$)} \\
\cmidrule{2-6}
& 0 & 15 & 30 & 45 & 60 \\
\midrule
70 & 1 & 1 & 1 & 1 & 1 \\
70 & 1 & 1 & 1 & 1 & 1 \\
70 & 1 & 1 & 1 & 1 & 1 \\
\bottomrule
\end{tabular*}
\end{table}
请注意,只需一个\centering
声明就足够了。不要使用\center
,也不要使用center
内的环境table
,因为它们会增加垂直空间(前者永远不应使用)。
答案2
最好定义一个newcolumn
,而不是将每一列都指定为>{\centering}m{1.3cm}
,并包含\arraybackslash
命令,修改后的结果MWE
是:
\documentclass{article}
\usepackage{array,booktabs}% http://ctan.org/pkg/{array,booktabs}
\begin{document}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}%
\begin{table}[htbp]
\center
\caption{a table}
\centering
%\hskip-2cm \begin{tabular}{p{0.9cm}| cccccc}
\begin{center}
\small
\begin{tabular}{C{1.3cm}| C{2.14cm}C{2.14cm}C{2.13cm}c C{2.13cm}}
Angle ($ ^{\circ}$) \newline $\dot{m}$ (g/m/s) & 0 & 15 & 30 & 45 & 60 \\
\hline
\\
70
& 1
& 1
& 1
& 1
& 1 \\
70
& 1
& 1
& 1
& 1
& 1 \\
70
& 1
& 1
& 1
& 1
& 1 \\
\hline
\end{tabular}
\end{center}
\end{table}
\end{document}
输出