我有一份book
文件\flushbottom
。我使用专家用于语言示例。当示例是页面上的第一项时,前一页会以一些虚假的空白结束,如下面的 MWE 所示。
\ex
(开始示例)插入\exbreak
,其定义为:
\def\exbreak{\endgraf\bgroup\@getoptionalarg\exbreak@a}
\def\exbreak@a{%
\ifx\@optionalarg\empty
\skip255=\lingexbreakfil
\else
\skip255= 0pt plus\@optionalarg
\fi
\vskip\skip255
\penalty\lingexbreakpenalty
\vskip-\skip255
\egroup
}
(默认情况下,\lingexbreakfil=0pt plus 4ex
和\lingexbreakpenalty=-50
文档相反。)
\exbreak
文档中对的行为解释如下:
它不仅会结束当前段落,并且如果在该点进行分页则给予惩罚(如果惩罚为负数则给予奖励),而且通过允许页面以一些垂直填充结束,允许在分页的底部出现一些空白,使得更容易进行令人满意的分页。
\flushbottom
我可以通过删除 来获得所需的效果\vskip\skip255
。我不确定\vskip
惩罚后的负数的目的是什么。这意味着我也可以使用 来获得所需的效果\lingset{exbreakfil=0pt}
。
我不明白为什么会发生这种情况。根据这个答案, "间距插入\vskip
将总是在分页符处消失”。那么为什么第一个插入的空格\vskip
在这里没有消失呢?
\documentclass[a4paper]{book}
\usepackage[showframe,margin=4cm,top=6cm,bottom=6cm]{geometry}
\usepackage{blindtext}
\usepackage{expex}
\begin{document}
\Blindtext[4][1]
\ex
\begingl
\glpreamble A rather long example //
\gla with glosses //
\glb explaining the //
\glc meaning of //
\glft `the text' //
\endgl
\xe
\end{document}