\pretolerance
无论我如何设置参数、\tolerance
和,都无法解决这个问题\emergencystretch
。
最小工作示例可下载字体使用xelatex
:
\documentclass[10pt,twoside]{book}
\usepackage[paperwidth=5.5in,paperheight=8.75in,left=1in,top=1in,right=0.75in,bottom=1in]{geometry}
\usepackage{fontspec}
\setmainfont{sorts_mill_goudy.otf}
\usepackage{fix-cm}
\usepackage{microtype}
\tolerance=2000
\emergencystretch=1in
\begin{document}
Vivamus est quam, maximus vulputate felis a, fringilla scelerisque sapien.
\vspace{2em}
\clearpage
\end{document}
警告:
Underfull \hbox (badness 3503) in paragraph at lines 12--13
[]\EU1/sorts_mill_goudy.otf(0)/m/n/10 Vivamus est quam, maximus vulputate felis
a, fringilla
我尝试过的所有方法都无法消除此警告,除非用 掩盖它\hbadness
。在我的实际案例中,通过向任一方向更改\pretolerance
或 ,\tolerance
我可以生成更多的警告,但还有几个像这样的持续警告。增加\emergencystretch
没有效果。
我已阅读完以下所有内容,但仍然不知道还能尝试什么:
- 如何抑制“Underfull \vbox (badness 10000) ... while \output is active”?
- 什么是未满的水平盒子和垂直盒子以及如何去除它们?
- http://www.tex.ac.uk/FAQ-overfull.html
这绝对不可能发生......我不得不尝试生成大约 20 段 lorem ipsum,然后才能在不使用确切的真实文本的情况下重现这种情况。
但是,如果只是存在一些罕见的文本组合,而这些组合在排版时不可能没有错误,那么为什么我的项目中 11,000 个单词中出现了 3 个这样的组合,而我上一个项目中 60,000 个单词中却没有出现一个这样的组合呢?
最重要的是,为什么增加还不能\emergencystretch
满足它呢?
我在这里感到沮丧和困惑,并且强烈地与使用“黑色艺术”来描述 LaTeX 的这一部分有关(\tolerance 和 \badness 之间有什么区别?)。
答案1
3503 不是所以坏的。
当然,您使用英语连字规则对模拟拉丁语进行连字,这没有帮助。
\emergencystretch
添加(有效)额外拉伸以帮助断线,但你知道这一点紧急情况采取行动后,TeX 仍会给出原始的不良警告。因此,添加此参数会使输出看起来更好,但不会解决段落的内在不良计算。
无关,但您可能不想fix-cm
使用 xelatex(您根本没有使用 cm,但即使您没有指定字体fontspec
默认为拉丁现代)
我没有你的字体,但这里有一个使用拉丁现代字体和 badness 2080
\documentclass[10pt,twoside]{book}
\usepackage[paperwidth=5.5in,paperheight=8.75in,left=1in,top=1in,right=0.75in,bottom=1in]{geometry}
\usepackage{fontspec}
%\setmainfont{sorts_mill_goudy.otf}
\usepackage{fix-cm}
\usepackage{microtype}
\tolerance=2000
\emergencystretch=1in
\begin{document}
Vius est quam, maximus vulputate felis a, fringilla scelerisque sapien.
\vspace{2em}
\clearpage
\end{document}
这里的问题基本上是 TeX 不能连字符,scelerisque
所以最好修复它而不是扭曲间距
Vius est quam, maximus vulputate felis a, fringilla scel\-er\-is\-que sapien.