Hi Luca,

Luca Furini a écrit :
> Hi all!
> At long last, I'm finally allowed some time to look at the float branch
> and ... wow! Really impressive, a great lot of good work!

Well, thanks!

> In order to apologize for my long absence :-) , I'm trying to see what's
> wrong with the failing testcases, in particular the ones with footnotes.
> Looking at the behaviour of the page breaking algorithm during the
> processing of testcase "footnote_footnote-separator", I found out that:
> - the "right" page break (12 lines of content, some space, the separator
> and 2 footnote lines) does not create a new active node, it just updates
> lastTooShort; this is right, as there are no stretchable elements and
> the resulting adjustment ratio would be +inf;
> - but then, instead of having a restart, new active nodes are found that
> fill the page but "push" the footnotes in the following page.
> I'm going to see how best to fix this behaviour ... obviously if nobody
> else is quicker than me! :-)

I don't think there is much you can do in that case. It appears that the
15 lines of text at 12 pt exactly fill the 3 inch-high page. So that
makes a feasible node which is always preferred to too-short nodes.
Change the page-height to 3.1 inch and you no longer have the footnotes
deferred to the next page.

That's exactly why I introduced the MIN_NORMAL_PAGE_FILL_RATIO constant
in PageBreakingAlgorithm: to give a chance to underfull pages with no
deferred floats to be preferred over full pages with deferred ones. Keep
the page-height of 3 inches and change that constant to 0.9 and you have
your footnotes back on the first page.

The actual problem IMO is to define the right demerits for underfull
pages and deferred before-floats and footnotes in order to have a decent
result (i.e., that a human would expect) in every case.


Reply via email to