Threeparttable - 溢出的水平盒子

Threeparttable - 溢出的水平盒子

当使用该threeparttable环境时,我经常会遇到Overfull \hbox警告,即使表的内容没有超出指定的行边界。

下面提供了 MWE。

\documentclass[draft]{article}
\usepackage{threeparttable}
\usepackage{lipsum}
\begin{document}
\begin{table}
  \caption{\lipsum[1][6-8]}
  % \resizebox{.8\textwidth}{!}{%
  \begin{threeparttable}
    \begin{tabular}{cc}
      \textbf{Notation} & \textbf{Description} \\
      $a$     & \lipsum[1][1] Dumy \\
    \end{tabular}
  % }
    \begin{tablenotes}
    \item[A] \lipsum[1][3-5]
    \end{tablenotes}
  \end{threeparttable}
\end{table}
\end{document}

tabular编辑。如果我将环境放在里面,也会出现同样的问题resizebox(您可以通过取消注释注释行来测试行为)。我知道这并不总是最好的方法,但我也想强调与环境相关的问题threeparttable。在这种情况下,确实,即使本身table具有适当的大小,tablenotes仍然会超出边界。

答案1

更改\begin{tabular}{cc}为 会\begin{tabular}{@{} cc @{}}删除 LaTeX 默认在tabular环境的左边缘和右边缘插入的空白填充。对于手头的材料,这恰好“起作用”(但仅此而已!),因为环境的整体宽度tabular不再超过 `\textwidth,从而使超满行的印刷符号消失。然而,这真的只是巧合,而且肯定远非可靠。

您真正需要的是一种设置,其中至少一列表格中的单元格内容可以自动换行。为了消除关于可能的列宽的繁琐猜测,我建议您加载表格型包并使用同名tabularx环境而不是tabular环境。X 型列的宽度由 LaTeX 确定为残差。

顺便说一句,\caption语句是环境的三个正式部分之一threeparttable;另外两个是 a tabular-like 环境和环境。因此,请在环境中tablenotes包含语句。\captionthreeparttable

在此处输入图片描述

\documentclass[draft]{article}
\usepackage[flushleft]{threeparttable}
\usepackage{lipsum,tabularx,booktabs}

\begin{document}

\begin{table}

\begin{threeparttable}

\caption{\lipsum[1][6-8]}

\medskip
\begin{tabularx}{\textwidth}{@{} l X @{}}
\toprule
Notation\tnote{A} & Description\tnote{B} \\
\midrule
$a$ & \lipsum[1][1-4]   \\
\bottomrule
\end{tabularx}

\smallskip\footnotesize
\begin{tablenotes}
\item[A] \lipsum[2][1-4]
\item[B] \lipsum[2][5-9]
\end{tablenotes}
\end{threeparttable}
\end{table}

\end{document}

相关内容