当使用该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
包含语句。\caption
threeparttable
\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}