I got a test case for tables which raises not a technical but rather a
interesting conceptual question. Please have a look at the attached test
case. It defines a table with two columns and two rows. In the given
setup the second row creates an break decision with the current code that
can be argued as being bad (see the PDF). Here's an excerpt from the
element list:

 8) box w=9600
 9) penalty p=0 w=0
10) box w=28800
11) penalty p=0 w=0
12) box w=0             //<-- this is where the second row starts
13) penalty p=0 w=9600  //this penalty is due to the possible break after "B"
14) box w=28800
15) penalty p=0 w=0     //this is the next break poss after three lines
                        //due to the orphan setting
16) box w=28800

While working on element list generation for tables I came across this
question and decided not to do anything about it, especially since
removing some of these break possibilities might not be desirable in all
cases.

A rule that could be easily implemented would be that we allow the first
break possibility only after every cell in a new row contributed at
least one of its own boxes to the combined element list.

An example: If you look at page 1 of [1], step 1 would over ignored. On
page 3 of [1], the steps 1 and 2 would be ignored.

[1] http://people.apache.org/~jeremias/fop/KnuthBoxesForTablesWithBorders.pdf

With this rule the element list would look like this:

 8) box w=9600
 9) penalty p=0 w=0
10) box w=28800
11) penalty p=0 w=0
12) box w=28800         //<-- this is where the second row starts
13) penalty p=0 w=0
14) box w=28800

I'm unsure ATM what this would mean for cases with row spanning, though.

I can see that this new rule would make this better in most cases. What
worries me is that there might be cases where we wouldn't want that
behaviour, although ATM I can't see them. So I just want to check with
you that I haven't forgotten about anything. Or maybe someone has a
better rule to implement this. Thoughts welcome.


Jeremias Maerki

Attachment: table-body4.xml
Description: Binary data

Attachment: table-body4.xml.head.pdf
Description: Binary data

Reply via email to