[reportlab-users] Miscalculation when using keepWithNext

Pierre Ossman ossman at cendio.se
Thu Nov 4 10:48:16 EDT 2021


On 04/11/2021 11:47, Robin Becker wrote:
> Hi Pierre,
> 
> I think you are probably right in your analysis.
> 
> 1) It's probably a bug to skip things that are zero width and non-zero 
> height, It would be helpful to know what kind of flowable was involved 
> there.
> 

This is using rst2pdf via Sphinx. The conditions we encountered were a 
bullet list followed by a heading and a paragraph. The sequence of 
flowables rst2pdf generates in that case is:

  * Spacer
  * Table
  * Spacer
  * Heading
  * Paragraph

The spacers have keepWithNext set to make sure that a heading before a 
bullet list/table works properly. As a side effect the trailing spacer 
here will be tied to the following heading. The heading also has 
keepWithNext set.

> 2) As you say it would be better to overestimate the required height, 
> but best would be to compute correctly, but that requires us to check 
> for inclusion in a frame and to work out what the extra height 
> requirement is. Actually we can find out when we have a frame above us 
> and inspect  whether we are at the top of a frame and what if it would 
> do at this point if we get added.
> 
> The overall algorithm is badly designed, but it's probably far too late 
> to adopt a better one.
> 

How so? The handling of keepWithNext is mostly internal to ReportLab, so 
it should be possibly to modify rather heavily without affecting users?

Regards
-- 
Pierre Ossman           Software Development
Cendio AB               https://cendio.com
Teknikringen 8          https://twitter.com/ThinLinc
583 30 Linköping        https://facebook.com/ThinLinc
Phone: +46-13-214600

A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?


More information about the reportlab-users mailing list