[reportlab-users] keeptogether

Ulrich Schreiner reportlab-users@reportlab.com
Thu, 05 Feb 2004 22:18:20 +0100


i use the "KeepTogether" and it does not really work. first i tried to 
have a "KeepTogether" with two flowables inside. the first one was again 
a "KeepTogether" (with two paragraphs inside) and the other one was a 
paragraph. well ... the output was not what i wanted. hard to describe, 
sorry. but the "KeepTogether" flowables did not span the correct area. 
it looks like that after nested "KeepTogether" blocks there is _always_ 
a pagebreak!

so i made no nested "KeepTogethers". but now i have circumstances where 
i get a "LayoutError". the problem here is that i use styles with a 
"spaceAfter" setting.

as you can see in the "_add" method of the "Frame" class the calculation 
of the required space uses the "spaceBefore" setting but not the 

BUT: at the end of the method the current y-position is decreased by the 
value of "spaceAfter" and sometimes it happens that the value of "y" now 
is negative! the "_add" method itself returns 1 so it signals not to 
make a framebreak and now .... the nightmare starts :-). the next 
flowable which should be layouted crashes with a exception.

i changed my styles not to use "spaceAfter" anymore. now i work with 
"spaceBefore" (and a few more styles) and everything works. but it would 
be a good idea to rework the code.

good night!