或者,更准确地说:如何避免文本超出 ConTeXt 的右边距?
答案1
LaTeX 的定义\sloppy
是
\def\sloppy{%
\tolerance 9999%
\emergencystretch 3em%
\hfuzz .5\p@
\vfuzz\hfuzz}
这意味着,糟糕程度为 9999 的行是可以容忍的,单词间空格可能会被额外拉伸 3em,而向边距溢出少于 0.5pt 的框甚至不会被视为超满。
容差和紧急拉伸也可以在 ConTeXt 中设置。没有高级命令来设置 hfuzz 和 vfuzz。对于类似于\sloppy
以下的设置,请使用
\setupalign[verytolerant,stretch]
这会将公差设置为 4500,并将 emergencystretch 设置为正文字体大小。
以下是简短的 MWE:
\setuppapersize[A6][A6]
\setupalign[nothyphenated] % to generate overfull boxes
\starttext
\input knuth
\page
\setupalign[verytolerant,stretch]
\input knuth
\stoptext
不过我认为不是增加耐受性和紧急拉伸,而是使用高级功能微印刷术例如边距调整(称为悬挂标点)和字体扩展(称为赫兹)。使用这些功能之前,您必须启用相应的字体功能
\definefontfeature
[default][default]
[protrusion=quality,
expansion=quality]
然后您可以通过以下方式启用
\setupalign[hz,hanging]
如果仍然遇到糟糕的中断,请尝试重新措辞该句子或尝试\looseness=1
在\looseness=-1
出现糟糕中断的段落上进行。