使用表格时出现 \hbox 过满警告

使用表格时出现 \hbox 过满警告

我一直收到这个警告

 Overfull \hbox (0.63303pt too wide) in paragraph at lines xxx--xxx`

代码中无论哪里有这一行

 \begin{tabular}{p{2cm}|p{4cm}|p{3cm}|p{3cm}}

它并没有阻止我处理和创建文档,但我只是想知道为什么我总是得到这样的结果。

答案1

我认为您收到此警告是因为您的表格比您的(稍微)宽一些\textwidth。解决方案包括:

  • 稍微放大\textwidth一点
  • 稍微缩小tabular一点
  • \hfuzz=0.64pt在序言中添加

\hfuzz设置指定了 box-overflow 的最大数量将会发出警告信息。

答案2

使用以下表格定义:

\begin{tabular}{@{} p{2cm}|p{4cm}|p{3cm}|p{3cm} @{}}

行的定义是

|\tabcolsep|2cm|\tabcolsep|\tabcolsep|4cm|\tabcolsep|...|\tabcolsep|

删除表格@{}\tabcolsep开始和结束处的。

答案3

使用新的调整框Martin Scharrer 的包,您可以将您的表格放在tabular里面adjustbox。此包将缩小您的表格以适合\textwidth\textheight如果需要,也适合),而不会扭曲文本(或框中的任何其他内容;keepaspectratio这是关键)。

\begin{adjustbox}{width={\textwidth},totalheight={\textheight},keepaspectratio}%
\begin{tabular}{p{2cm}|p{4cm}|p{3cm}|p{3cm}}
    ...
\end{tabular}%
\end{adjustbox}

但因为它调整大小表格更适合以下情况

 \begin{tabular}{c|c|c|c}

对于固定宽度的列,Herbert 的解决方案更为合适,该解决方案删除了​​行首和行末的水平空间。

答案4

有一件事可能会很有用,那就是使用\resizebox命令将环境缩放到页面的可用宽度。这样就无需手动调整尺寸以使其完美,但在太小/太大的环境中使用时可能会导致文本失真。

在表格环境中,您可以这样使用它:

\resizebox{\textwidth}{!} {%
\begin{tabular}{p{2cm}|p{4cm}|p{3cm}|p{3cm}}
%Fill table with data
\end{tabular}%
}

这会将表格环境缩放到页面的精确宽度,并且(在这种情况下)文本失真可以忽略不计。

相关内容