O TeX tem a 'galley' (coluna ininterrupta de parágrafos e espaçamentos) toda preparada antes de decidir como vai cortá-la em páginas. Ele sempre termina um parágrafo antes de testar se tudo na galley soma para formar uma página, e enquanto ele tenta fazer um palpite razoável sobre quando acionar o corte de página, esses palpites não são totalmente precisos: para obter balanceamento de colunas, notas de rodapé, referências cruzadas, figuras e barras laterais e fins de página consistentes, muitas vezes temos que tentar comprimentos de corte mais curtos da galley. Assim, uma nova página pode ter uma pilha considerável de texto, figuras e notas de rodapé esperando em sua galley quando começa.
Quando um parágrafo é iniciado (o ponto em que você teria que adicionar espaço extra), o \pagegoal e o \pagetotal são conhecidos, mas, na verdade, eles são apenas palpites, e o programa não sabe, por exemplo, que imagens podem ser adicionadas no topo da página, ou se haverá alguma chamada para esticar algo que é flexível.
Sim, deveria ser possível fazer com que ele feche a página parcial, mas provavelmente não manualmente. Há também alguns efeitos colaterais que podem ser uma dor de cabeça completa.
Acabei de me ocorrer que outra opção seria usar espaçamento esticável, um pouco assim:
Stretch to page height{
{figures}
Stretch to 35 normal lines{
{Intro paragraph (13.4 normal lines)}
{stretchy bit}
{main text (21 lines)}
}
{stretchy bit}
{footnotes}
}
(A nova parte seria o 'Stretch to 35 lines' para a seção do meio, e, claro, o '35 lines' precisaria ser calculado com base no comprimento não esticado da sequência de texto.)
@Martin_Hosken pode querer comentar sobre por que esta é uma ideia tola, no entanto.
TeX has the ‘galley’ (uninterrupted column of paragraphs and spacing) all prepared before it decides how it will chop it into pages. It always finishes a paragraph before it tests to see if everything in the galley adds up to make a page, and while it tries to make a reasonable guess about when to trigger the page-chopping, those guesses aren’t fully accurate: to get column balancing, footnotes, cross-references, figures and sidebars and consistent end-of pages, we often have to try shorter cut-lengths of galley. Thus a new page might have quite a pile of text, figures and footnotes waiting in it’s galley as it starts.
When a paragraph is started (the point in which you’d have to add extra space) the \pagegoal and \pagetotal are known, but really, they are only guesses, and the program doesn’t know e.g. what pictures might be added on top of the page, or if there will be any call to stretch anything that’s flexible.
Yes, it should be possible to make it close out the partial page, but probably not manually. There are also some side effects that might be a complete pain.
It has just occurred to me that one other option would be to use stretchable spacing, a bit like this:
Stretch to page height{
{figures}
Stretch to 35 normal lines{
{Intro paragraph (13.4 normal lines)}
{stretchy bit}
{main text (21 lines)}
}
{stretchy bit}
{footnotes}
}
(The new bit being the ‘Stretch to 35 lines’ for the middle section, and of course the ‘35 lines’ would need to be calculated based on what the un-stretched length of the text run is.)
@Martin_Hosken might want to comment about why this is a silly idea, though.