我遇到了一个奇怪的问题。
我正在尝试创建一个需要多行标题水平和垂直居中的表格。我弄清楚了如何使用
{\centering\arraybackslash}m{<fraction>\textwidth}
为每个列标题添加一个数字,并完全符合我的要求。但是,即使我指定分数,使它们加起来都为 0.85 左右,表格也会超出正文,延伸到正文和边注之间的空白处。我附上了一些示例
\documentclass[12pt,a4paper,twoside]{report}
\usepackage[latin1]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\author{Matthew Mouawad}
\usepackage[showframe]{geometry}
\usepackage{array}
\begin{document}
\begingroup
\renewcommand{\arraystretch}{1.5}
\begin{table}[ht]
\caption[Brachytherapy studies]{A list of studies reporting cosmetic outcome as well as with a focus on studies from the last 10 years}
\label{tab-brachy-review}
\footnotesize
\centering
\begin{tabular}{>{\centering\arraybackslash}m{0.28\textwidth}>{\centering\arraybackslash}m{0.07\textwidth}>{\centering\arraybackslash}m{0.15\textwidth}>{\centering\arraybackslash}m{0.13\textwidth}>{\centering\arraybackslash}m{0.14\textwidth}>{\centering\arraybackslash}m{0.085\textwidth}} %{cccccc}
\hline
test & test & test & test & test & test \\
1 & 2 & 3 & 4 & 5 & 6 \\
1 & 2 & 3 & 4 & 5 & 6 \\
1 & 2 & 3 & 4 & 5 & 6\\ \hline
\end{tabular}
\normalsize
\end{table}
\endgroup
\end{document}
答案1
您已指定六个可用的列宽,这些加起来为0.855\textwidth
。但是,要获得满的列宽,必须将其添加2\tabcolsep
到可用宽度中。我熟悉的大多数文档类中\tabcolsep
都有该参数的默认值。那么,您“发现”的是——至少对于和的当前值而言。6pt
0.855\textwidth+12\tabcolsep>\textwidth
\textwidth
\tabcolsep
为了使表格内容适合文本块的宽度,可以手动计算 的值\tabcolsep
应该是多少才能确保12\tabcolsep=0.145\textwidth
。(提示:0.145/12=0.1208333。)但是,也可以更简单地完成这项工作:
使用
tabular*
环境而不是tabular
环境,将环境所需的宽度设置
tabular*
为\textwidth
,设置
\tabcolsep
为0pt
,并且使用环境
@{\extracolsep{\fill}}
第二个参数内的指令tabular*
让 LaTeX 找出允许的列间空格量。
补充:上图的垂直线表示文本块的边缘。之所以插入这些线,是因为该geometry
包正在使用选项加载showframe
。
\documentclass[12pt,a4paper,twoside]{report}
%\usepackage[latin1]{inputenc} % shouldn't you be using 'utf8'?
\usepackage{amsmath}
%%%\usepackage{amsfonts} % is loaded automatically by 'amssymb'
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage[showframe]{geometry}
\usepackage{array}
\newcolumntype{M}[1]{>{\centering\arraybackslash}m{#1\textwidth}}
\begin{document}
\begin{table}[ht]
\renewcommand{\arraystretch}{1.5}
\setlength\tabcolsep{0pt}
\caption[Brachytherapy studies]{A list of studies reporting cosmetic
outcome as well as with a focus on studies from the last 10 years}
\label{tab-brachy-review}
\footnotesize
%%%\centering %% not needed
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}%
M{0.28}M{0.07}M{0.15}M{0.13}M{0.14}M{0.085}} %{cccccc}
\hline
test & test & test & test & test & test \\
1 & 2 & 3 & 4 & 5 & 6 \\
1 & 2 & 3 & 4 & 5 & 6 \\
1 & 2 & 3 & 4 & 5 & 6 \\
\hline
\end{tabular*}
\end{table}
\end{document}