我有一个三部分表格,其中的单元格需要居中。我测试了所有\centering
和\begin{center}…\end{center}
命令。但这些命令不起作用!虽然没有错误,但单元格中的文本仍然左对齐。这是我的表格:
\documentclass{elsart5p}
\usepackage{subcaption}
\usepackage{booktabs}
\usepackage{threeparttable}
\begin{document}
\begin{threeparttable}
%\centering
\begin{center}
\caption{myTable}\label{tab:table1}
\setlength{\tabcolsep}{6pt}
\begin{tabular}[width=\linewidth]{p{0.6\linewidth}p{0.4\linewidth}}
\toprule
Header Header Header Header Header Header Header Header Header Header1&Header Header Header Header Header2\\
\midrule
col1 col1 col1 col1 col1 col1 col1 col1 col1 col1 col1 col1 col1 col1 col1 col1 col1 col1 col1 col1* & col2 col2 col2 \\
cell3 cell3& cell4 cell4 cell4 cell4 cell4\\
\bottomrule
\end{tabular}
\begin{tablenotes}
\item *Star: important
\end{tablenotes}
\end{center}
\end{threeparttable}
\end{document}
有些单元格中要写入的文本太长,所以我不得不使用 \begin{tabular}[width=\linewidth]{p{0.6\linewidth}p{0.4\linewidth}}
命令将每个单元格的文本分成两行或三行。
我怎样才能使这张表居中?
答案1
一些评论和意见:
这
tabular
确实不是采用预期宽度参数。 识别的唯一参数tabular
会影响相对于相邻元素的垂直定位:t
,c
(默认),而b
.width=\linewidth
则被忽略。你可能正在考虑
tabularx
环境。默认情况下,其X
列类型将材料排版为完全对齐。要获取X
列类型的居中版本,请通过以下方式定义它\newcolumntype{C}{>{\centering\arraybackslash}X}
如果你想让第一列比第二列宽 50%,你应该这样写
\begin{tabularx}{\linewidth}{@{} >{\hsize=1.2\hsize}C >{\hsize=0.8\hsize}C @{}}
观察
1.2=1.5*0.8
并且1.2+0.8=2
——类型的列数X
。环境
threeparttable
应嵌入在table
环境中。使用\tnote
指令放置自由格式的脚注标记,并使用环境\item
中的语句tablenotes
开始相关的脚注文本。
\documentclass{elsart5p}
\usepackage{caption,tabularx,booktabs}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\usepackage[flushleft]{threeparttable}
\begin{document}
\begin{table}
%% \setlength\tabcolsep{6pt} % that's the default!
\begin{threeparttable}
\caption{myTable}
\label{tab:table1}
\begin{tabularx}{\linewidth}{@{} >{\hsize=1.2\hsize}C >{\hsize=0.8\hsize}C @{}}
\toprule
Header Header Header Header Header Header Header Header Header Header1&
Header Header Header Header Header2\\
\midrule
col1 col1 col1 col1 col1 col1 col1 col1 col1 col1 col1 col1 col1 col1 col1 col1 col1 col1 col1 col1\tnote{*} &
col2 col2 col2 \\
cell3 cell3&
cell4 cell4 cell4 cell4 cell4\\
\bottomrule
\end{tabularx}
\medskip
\begin{tablenotes}
\item[*]Star: important
\end{tablenotes}
\end{threeparttable}
\end{table}
\end{document}