即使指定了 textwidth 的小数宽度,表格仍延伸到边距

即使指定了 textwidth 的小数宽度,表格仍延伸到边距

我遇到了一个奇怪的问题。

我正在尝试创建一个需要多行标题水平和垂直居中的表格。我弄清楚了如何使用

{\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}

Latex 表格边距问题

答案1

您已指定六个可用的列宽,这些加起来为0.855\textwidth。但是,要获得满的列宽,必须将其添加2\tabcolsep到可用宽度中。我熟悉的大多数文档类中\tabcolsep都有该参数的默认值。那么,您“发现”的是——至少对于和的当前值而言。6pt0.855\textwidth+12\tabcolsep>\textwidth\textwidth\tabcolsep

为了使表格内容适合文本块的宽度,可以手动计算 的值\tabcolsep应该是多少才能确保12\tabcolsep=0.145\textwidth。(提示:0.145/12=0.1208333。)但是,也可以更简单地完成这项工作:

  • 使用tabular*环境而不是tabular环境,

  • 将环境所需的宽度设置tabular*\textwidth

  • 设置\tabcolsep0pt,并且

  • 使用环境@{\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}

相关内容