On Monday 19 June 2006 20:25, Jeremias Maerki wrote:
> On 19.06.2006 13:38:56 Manuel Mall wrote:
> > On Monday 19 June 2006 16:45, Jeremias Maerki wrote:
> > > On 18.06.2006 20:57:51 Simon Pepping wrote:
> > > > On Sun, Jun 18, 2006 at 07:36:45PM +0800, Manuel Mall wrote:
> >
> > <snip/>
> >
> > > > > Or should we use a more refined approach were we generate
> > > > > initially an INFINITE penalty but if the page breaking cannot
> > > > > find a solution we reduce the penalty on some/all of those
> > > > > elements given an INFINITE penalty because of keeps and run
> > > > > the page breaker again?
> > > >
> > > > I am in favor of this solution. There are generally two
> > > > solutions: increase the tolerance, or force a solution. I think
> > > > FOP already has a force parameter for this purpose.
> > >
> > > +1. Yes, BreakingAlgorithm has a "force" parameter which is
> > > currently set to true for page breaking. There's also a
> > > "threshold". We can probably play with that first. See
> > > LineLayoutManager.findOptimalBreakPoints().
> >
> > Yes, there is a force parameter and it seems to be always set to
> > true for page breaking (and false for line breaking). But it
> > doesn't seem to guarantee that breaks will be found otherwise we
> > shouldn't get the "giving up after 50 retries" message.
>
> Right, but that's because an INFINITE penalty cannot make a legal
> break. We still need to set the penalties to a different value to get
> legal, but very undesired break points.
>
> > Anyone who understands how this force parameter is suppose to work?
>
> I think it's called "secondpass" in Knuth's article. The "force"
> parameter is used to force acceptance of a line whose adjustment
> ratio exceeds the "threshold" value. Otherwise, there could be a
> situation where no break solution is found (which is used in
> line-breaking). In page breaking, the force parameter essentially
> allows overfull pages although that situation's caught by the
> partOverflowRecovery which inserts empty lines/parts. In the end, we
> always find a solution in line-breaking (by letting the line
> overflow) and in page-breaking (by trying to defer the overflowing
> element to a later part/page and giving up after 60 retries).
>

Thanks for the explanation Jeremias. Makes sense to me now.

What is still unclear to me is if it is worthwhile to implement this two 
pass approach, i.e. use INFINITE penalties first and relax later, or if 
it is good enough for 99.99% of cases just to start with INFINITE-1 
penalties for mandatory keeps?

> Jeremias Maerki

Manuel

Reply via email to