Jeremias Maerki wrote: > However, Luca's example > does not fully resolve in my brain. The penalty, for example, must not > be infinite or it will not be eligible for break possibility. A "legal > break" is defined by Knuth as "a number b such that either > (i) xb is a penalty item with pb < infinity, or (ii) xb is a glue item > and xb-1 is a box item." As far as I can see Luca's example doesn't > contain any legal break, but I guess that was simply an oversight.
Ops, you are right, the penalty should have a 0 penalty value (or maybe greater, anyway not infinite), otherwise it is completely useless to set its width, as it will never be used! > The big problem I still have with both your examples is that the table > header is very special in terms of the standard Knuth model. This model > doesn't allow for conditional items at the beginning of a line. What > Luca did in his example looks to me like forcing the model to do > something it wasn't designed for. Yes, line breaking has not something analogous to the repeated header in a table, although the elements representing spaces in centered effect (which have effect only if there is a break between them) are somewhat similar. But I think that the main point is to have a representation whose height is correct: the representation is not the content, its only purpose is to allow the creation of pages satisfying the constraints (orphans, widows, keep, ...): what to put into the pages concerns the LMs. > I'm a bit sceptical that the code will > be able to identify such special conditions reliably. I think it would not be that difficult: for example, the penalty (whose width is header height + footer height) could have a conventional Position. In the addAreas phase, if the last position in the iterator is that particular Position, the LM will know that the table has been split between pages and, according to the value of table-omit-*-at-break, will add header and footer. Regards Luca