Oui, je savais qu'on pouvait ajouter une boite vide avant le
\vskip
, mais je ne connaissais pas la macro
\vglue
, qui est du coup plus pratique.
Sinon, je confirme ne pas posséder le TeXbook en français, mais j'ai une version numérique en anglais.
When a page is completed, it is removed from the main vertical list and passed to an “output routine,” as we will see later; so its boxes and glue eventually disappear from TEX’s memory. The remainder of the main vertical list exists in two parts: First comes the “current page,” which contains all the material that TEX has considered so far as a candidate for the next page to be broken off; then there are “recent contributions,” i.e., items that will be moved to the current page as soon as TEX finds it convenient to do so. If you say \showlists, TEX will display the contents of the current page and the recent contributions, if any, on your log file. (The example in Chapter 13 doesn’t show any such lists because they were both empty in that case. Chapter 24 explains more about TEX’s timing.)
Whenever TEX is moving an item from the top of the “recent contributions” to the bottom of the “current page”, it discards a discardable item (glue, kern, or
penalty) if the current page does not contain any boxes. This is how glue disappears at a page break. Otherwise if a discardable item is a legitimate breakpoint, TEX calculates the cost c of breaking at this point, using the formula that we have just discussed. If the resulting c is less than or equal to the smallest cost seen so far on the current page, TEX remembers the current breakpoint as the best so far. And if $c = \infty$ or if $p \leqslant −10000$, TEX seizes the initiative and breaks the page at the best remembered breakpoint. Any material on the current page following that best breakpoint is moved back onto the list of recent contributions, where it will be considered again; thus the “current page” typically gets more than one page’s worth of material before the breakpoint is chosen.