我有一份使用 A4 纸的文档,其边距比默认边距(3 厘米)相对较小,因此行宽相当大。有些段落由一行组成,因此我收到了水平盒溢出警告,尽管这些行并未超出右边距。
为什么如果行未超出右边距,就会生成警告?如果我使用这么大的行宽,是否需要调整单行上的最大字符数设置?
有没有办法自动抑制这些情况下的警告(而不是逐案处理),同时保持右边距过满的水平盒子的警告是突出?或者说这是个坏主意?
\documentclass[draft,a4paper]{article}
\usepackage[margin=3cm]{geometry}
\usepackage[parfill]{parskip}
\begin{document}
For each forrrrm, give the conjugation, PGN (as applicable), and translation (see section 1.8).
\end{document}
答案1
parfill 使用包选项 parfill,包还会调整 \parfillskip 以在段落最后一行末尾施加最小间距。如果未指定值,则假定为 30pt,如果给出的值构成最小值。
TeX 对于字间空格的拉伸或收缩程度有所限制,并且行不能断行,末尾必须留出 30pt 的空间。
如果您使用的话,\sloppy
会有更大的灵活性,或者您可以允许更小的段落末尾空间。
\documentclass[draft,a4paper]{article}
\usepackage[margin=3cm]{geometry}
\usepackage[parfill]{parskip}
\begin{document}
For each forrrrm, give the conjugation, PGN (as applicable), and translation (see section 1.8).
\sloppy
For each forrrrm, give the conjugation, PGN (as applicable), and translation (see section 1.8).
\end{document}
\documentclass[draft,a4paper]{article}
\usepackage[margin=3cm]{geometry}
\usepackage[parfill=30pt minus 5pt]{parskip}
\begin{document}
For each forrrrm, give the conjugation, PGN (as applicable), and translation (see section 1.8).
\end{document}
答案2
该选项parfill
定义为
\SetupKeyvalOptions{family=parskip,prefix=parskip@}
...
\DeclareStringOption[0pt]{parfill}[30pt]
这意味着\parskip@parfill
最初定义为0pt
,但如果指定了选项,则定义将更改为(或者,例如,30pt
如果说,则更改为提供的值)。parfill=20pt
后来包确实
\setlength\parfillskip\parskip@parfill
\advance\parfillskip 0pt plus 1fil\relax
因此,使用你的设置,你最终会得到与
\setlength{\parfillskip}{30pt plus 1fil}
这意味着在任何段落中至少有 30pt 的空白空间。当然,如果一行段落的文本从右边距延伸到不到 30pt,则会过满。对于较长的段落(三行或更多行),通常可以缩小或拉伸单词间距以满足要求。
这样做的目的parfill
是不要让段落太靠近右边距。这是否是一个好主意,排版员将根据他们收到的文本来决定。
如果你使用零 \parskip
并且没有段落缩进,但是由于非零,\parskip
它的实用性非常可疑。或许当段落结尾非常接近右边距时,它可能会有所帮助和在页面底部,因为在这种情况下,段落之间的垂直空间在分页符处消失。发生这种情况的可能性有多大?也许 100 页中有一两个分页符。修订阶段将发现它们并通过在有问题的段落末尾添加一些不可移除的空间来修复(例如\hspace*{30pt}
)。
删除该选项。
最后的建议,但这只是个人观点。不要使用 nonzero \parskip
,而是使用已有数百年历史的传统缩进:如果段落较短,parskip
则会产生比段落较长时更糟糕的输出。