用文本填充页面

用文本填充页面

使用命令\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}

相关内容