过满 不足 \hbox

过满 不足 \hbox

我是 LaTeX 新手,在处理一份文档时遇到了麻烦。

我正在 ShareLaTeX 上制作简历模板。

我理解水平盒子的过满和欠满是由于文本太长或太短而无法水平分布有关的问题。

正如您在图片 [右上,教育部分] 中看到的,呈现的文档上有空间可以让文本简单地断开并在第二行继续,但它只是超出了屏幕范围。

带有描述的列表的环境 twenty 定义如下:

\newenvironment{twenty}{%
    \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}ll}
}{%
    \end{tabular*}
}

% \newcommand{\twentyitem}[5]{%
%   #1&\parbox[t]{0.83\textwidth}{%
%       \textbf{#2}% 
%       \hfill%
%       {\footnotesize#3}\\%
%         \ifblank{#4}{}{#4 \\}
%       #5\vspace{\parsep}%
%   }\\
% }

\newcommand{\twentyitem}[6]{%
    #1&\parbox[t]{0.83\textwidth}{%
        \textbf{#3}% 
        \hfill%
        {\footnotesize#4}%
        }\\%
    #2&\parbox[t]{0.83\textwidth}{%
        \ifblank{#5}{}{#5 \\}
        #6%
    }\\
}

有人可以帮忙吗?473.5308pt 似乎对于超额来说太多了,但这条线根本就不会断。

答案1

TeX 换行算法非常复杂,有许多参数控制结果。我在这里只对它做粗略的简化,以便您集中精力解决您的问题。TeX 首先尝试达到一些美学规则,例如单词之间的间距不要太大。这些规则由参数的默认值设置,它们有些严格。如果无法达到这些规则,则 TeX 放弃并产生超额\hbox。并且 TeX 不区分超额 2pt 还是超额 400pt。只有绝对不好的结果才会报告。并且它也在排版输出中标记:黑色矩形。通过设置参数,可以抑制 LaTeX 中的这种行为(黑色矩形)\overullrule=0pt

在您的示例中,我们看不到排版区域右边缘造成问题的单词(Economics?)的详细拼写。但这个词可能无法连字(有关它的更多信息写在 TeX 处理日志中),并且如果将其移动到下一行,则第一行的空格将非常大,因此超出了美学规则:TeX 决定创建过满的 \hbox,因此这肯定是一个糟糕的结果。用户必须干预并解决这个问题。如果用户是文本的作者,他可以找到另一个词来表达相同的想法。如果不是,则无法重新措辞,用户可以设置许多提到的参数来重新设置美学规则(在一个段落中本地设置或在整个文档中全局设置)。首先,用户必须检查造成问题的单词是否可以连字,但 TeX 无法识别这一点。如果是,则可以设置连字异常(\-例如通过 本地设置hy\-phen\-a\-tion)或通过\hyphenationTeX 基元全局设置。或者用户可以通过设置其他参数来设置更软的美学规则。 LaTeX 提供了宏\sloppy来进行此类设置,用户只能进行简单的书写\sloppy,而无法详细了解换行算法和参数。

请注意,“欠满\hbox”是完全不同的问题。用户可以通过参数设置“第一个审美水平”,该水平可以超过,并且只报告此警告,结果或多或少是可以接受的。第二个审美水平(更弱)设置为关键:如果超过,则\hbox报告“过满”,结果完全不好。

相关内容