TeX a la « galley » (colonne ininterrompue de paragraphes et d'espacements) entièrement préparée avant de décider comment il va la découper en pages. Il termine toujours un paragraphe avant de tester si tout dans la galley s'additionne pour former une page, et bien qu'il essaie de faire une estimation raisonnable de quand déclencher la découpage de la page, ces estimations ne sont pas entièrement précises : pour obtenir l'équilibrage des colonnes, les notes de bas de page, les renvois, les figures et les encadrés et des fins de pages cohérentes, nous devons souvent essayer des longueurs de coupe plus courtes de la galley. Ainsi, une nouvelle page peut avoir un tas de texte, de figures et de notes de bas de page en attente dans sa galley au moment où elle commence.
Lorsqu'un paragraphe est commencé (le point auquel vous devriez ajouter de l'espace supplémentaire), \pagegoal et \pagetotal sont connus, mais en réalité, ce ne sont que des estimations, et le programme ne sait pas, par exemple, quelles images pourraient être ajoutées en haut de la page, ou s'il y aura un appel à étirer quelque chose de flexible.
Oui, il devrait être possible de le faire fermer la page partielle, mais probablement pas manuellement. Il y a aussi certains effets secondaires qui pourraient être un vrai cauchemar.
Il vient de me venir à l'esprit qu'une autre option serait d'utiliser un espacement extensible, un peu comme ceci :
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}
}
(La nouvelle partie étant « Stretch to 35 lines » pour la section du milieu, et bien sûr, « 35 lines » devrait être calculé en fonction de la longueur non étirée de la séquence de texte.)
@Martin_Hosken pourrait vouloir commenter pourquoi c'est une idée stupide, cependant.
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.