ConTeXt 中与 \sloppy 等价的是什么?

ConTeXt 中与 \sloppy 等价的是什么?

或者,更准确地说:如何避免文本超出 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出现糟糕中断的段落上进行。

相关内容