我正在尝试制作一个表格,但某些列的内容没有正确居中。
我在序言中使用了以下内容...
\documentclass[11pt,a4paper,twoside, twocolumn]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[UKenglish]{babel}
\usepackage[UKenglish]{isodate}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{lmodern}
\usepackage{bm}
\usepackage{url}
\usepackage{paralist}
\usepackage{lipsum}
\usepackage{siunitx}
\usepackage{lettrine}
\usepackage{graphicx}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{array}
\newcolumntype{L}{>{\centering\arraybackslash}m{2.75cm}}
\usepackage{todonotes}
\usepackage{titling}
\setlength{\droptitle}{-2em}
\title{}
\author{}
\date{}
\usepackage{csquotes}
\usepackage[style=authoryear, backend=biber]{biblatex}
\addbibresource{phage.bib}
\usepackage{cleveref}
\usepackage[font=footnotesize,labelfont={bf,sf},justification=centering]{caption}
\usepackage{fancyhdr}
\usepackage{microtype}
到目前为止,我的表的代码如下:
\begin{table*}[t]
\centering
\begin{tabular}{ccc}
\toprule
Treatment & \multicolumn{2}{c}{No. of survivors/total no. of mice (\% survival)} \\
\midrule
& \multicolumn{2}{c}{Combined experiment} \\
& 48 hpi & 72 hpi \\
\midrule
PAO1 only & Data here & Data here\\
\bottomrule
\end{tabular}
\label{micesurvival}
\caption{Caption here}
\end{table*}
输出如下:
如您所见,48hpi 和 72hpi 列以及下面的数据没有在组合实验多列下方正确居中。
这可能是我忽略的一些显而易见的事情。
答案1
除了使用tabular*
环境之外,您还可以使用tabularx
同名包提供的环境 --。X
包提供的列类型对于您的目的非常有用,如您的 MWE 的以下修改形式所示:
\documentclass{article}
\usepackage{booktabs}
\usepackage{tabularx}
\newcolumntype{C}{>{\centering\arraybackslash}X} % centered "X" column type
\begin{document}
\begin{table}
\centering
\begin{tabularx}{0.82\textwidth}{cCC} % 0.82 obtained empirically
\toprule
Treatment & \multicolumn{2}{c}{No.\ of survivors/total no.\ of mice (\% survival)} \\
\midrule
& \multicolumn{2}{c}{Combined experiment} \\
\cmidrule{2-3} % additional element
& 48 hpi & 72 hpi \\
\midrule
PAO1 only & Data here & Data here\\
\bottomrule
\end{tabularx}
\caption{Caption here}\label{micesurvival}
\end{table}
\end{document}
还要注意的是,放置\label
命令后命令\caption
。顺便说一句,我还将浮动环境从 改为table*
;table
使用“带星号的”表格或图形环境仅在您的文档每页有两列(或更多列)并且您需要一个跨越所有列的浮动元素时才有用。
答案2
底层\halign
基元的一个特性是,如果跨越单元格比它跨越的单元格宽,那么所有多余的宽度都会进入最后一列跨越的列。
避免这种情况的一种方法是确保列的自然宽度非常宽,但可以通过添加可收缩胶水来收缩:
第二种方法是强制每列的宽度为宽标题的一半,如第二张表所示。
\documentclass{article}
\usepackage{booktabs,array}
\begin{document}
\centering
\begin{tabular*}{\linewidth}{
@{\extracolsep{\linewidth minus \linewidth}}
ccc
@{}
}
\toprule
Treatment & \multicolumn{2}{@{}c@{}}{No. of survivors/total no. of mice (\% survival)} \\
\midrule
& \multicolumn{2}{@{}c@{}}{Combined experiment} \\
& 48 hpi & 72 hpi \\
\midrule
PAO1 only & Data here & Data here\\
\bottomrule
\end{tabular*}
\bigskip
\newlength\myl
\settowidth\myl{No. of survivors/total no. of mice (\% survival)}
\begin{tabular}{
c
>{\centering\arraybackslash}p{.5\myl}
>{\centering\arraybackslash}p{.5\myl}
}
\toprule
Treatment & \multicolumn{2}{c}{No. of survivors/total no. of mice (\% survival)} \\
\midrule
& \multicolumn{2}{c}{Combined experiment} \\
& 48 hpi & 72 hpi \\
\midrule
PAO1 only & Data here & Data here\\
\bottomrule
\end{tabular}
\end{document}
请随时发帖完全的显示所有使用的包的文档。