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



Reply via email to