使用命令\raggedbottom
行对齐页面上的行。我需要它,\flushbottom
生成相当丑陋的书本跨页,但结果有些页面的文本块高度不同。我尝试使用“glue”\spaceskip=\fontdimen2\font plus 5\fontdimen2\font minus 0.3pt
和\emergencystretch = 2em
,但它对所有书页都没有影响。有什么好的解决方案吗,或者我需要检查每一页并直接在那里使用 glue?\defaultfontfeatures{Microtypography,Ligatures={TeX},Renderer=Basic}
也没有效果。MWE 是:
\documentclass{book}
\usepackage{polyglossia}
\usepackage[hyphenation,parindent,lastparline,nosingleletter]{impnattypo}
\usepackage[defaultlines=2,all]{nowidow}
\usepackage{lipsum}
\usepackage[
paperheight=215mm,
paperwidth=145mm,
top=2cm,
bottom=2.5cm,
inner=2cm,
outer=2cm
]{geometry}
\setmainlanguage{english}
\defaultfontfeatures{Microtypography,Ligatures={TeX},Renderer=Basic}
\protrudechars=2 % or \pdfprotrudechars=2 and
\adjustspacing=2 % \pdfadjustspacing=2 with luatex < v0.85
\newfontfeature{Microtypography}{protrusion=default;expansion=default}
\directlua{fonts.protrusions.setups.default.factor=1}
\setmainfont{Arial}
\frenchspacing
\raggedbottom
\begin{document}
\lipsum[1-150]
\end{document}
答案1
页面底部出现标记的空白(或至少是测试文档中的等效空白),因为您通过声明明确允许它\raggedbottom
,然后通过不允许将下一段的一行放置在该页面上来强制在那里中断。
使用\flushbottom
告诉 tex 不要在该位置留出空格
通过强制文本高度为加上的整数倍,指定heightrounded
几何可以确保能够适合连续文本并实现所需的底部基线。\baselineskip
\topskip
no-widow
用替换包widows-and-orphans
可以填满页面但会警告日志中存在寡妇和孤儿:
Package widows-and-orphans Warning: Orphan on page 6
Package widows-and-orphans Warning: Widow on page 13
Package widows-and-orphans Warning: Orphan on page 17
Package widows-and-orphans Warning: Widow on page 23
Package widows-and-orphans Warning: Orphan on page 31
Package widows-and-orphans Warning: Orphan on page 32
然后,您可以依次调整每个段落,重新措辞或使用\enlargethispage
或在这里我刚刚用来\looseness
强制某些段落比平时少一行或多一行,从而产生 36 页全满,没有孤行或孤儿行
\documentclass{book}
\usepackage{polyglossia}
\usepackage[hyphenation,parindent,lastparline,nosingleletter]{impnattypo}
%\usepackage[defaultlines=2,all]{nowidow}
\usepackage{widows-and-orphans}
\usepackage{lipsum}
\usepackage[
paperheight=215mm,
paperwidth=145mm,
top=2cm,
bottom=2.5cm,
inner=2cm,
outer=2cm,
heightrounded
]{geometry}
\setmainlanguage{english}
\defaultfontfeatures{Microtypography,Ligatures={TeX},Renderer=Basic}
\protrudechars=2 % or \pdfprotrudechars=2 and
\adjustspacing=2 % \pdfadjustspacing=2 with luatex < v0.85
\newfontfeature{Microtypography}{protrusion=default;expansion=default}
\directlua{fonts.protrusions.setups.default.factor=1}
\setmainfont{Arial}
\frenchspacing
\flushbottom
\begin{document}
% just so I can see which para is which
\everypar{\stepcounter{enumi}\makebox[0pt][r]{\theenumi\ }}
\lipsum[1-24]
\looseness=1
\lipsum[25]
\lipsum[26-32]
\looseness=1
\lipsum[33]
\lipsum[34-71]
\looseness=1
\lipsum[72]
\lipsum[73-77]
\looseness=1
\lipsum[78]
\lipsum[79-80]
\looseness=1
\lipsum[81]
\lipsum[82]
\lipsum[83]
\looseness=1
\lipsum[84]
\lipsum[85-108]
\looseness=-1
\lipsum[109]
\lipsum[110-128]
\looseness=1
\lipsum[129]
\lipsum[130-150]
\end{document}