I made some tests and still think my/FOP's interpretation is correct. I
wonder why the start-indent and end-indent properties on list-item
should be ignored/overhopped by label-end/body-start if they are
explicitely listed as properties applicable to list-item. I've attached
a test file which renders (what a surprise) differently in FOP Trunk,
AltSoft 2.2.1 and XEP 4.4. Someone please tell me which is right. Grmbl.
I hate the FO spec!


On 14.02.2006 22:13:42 Simon Pepping wrote:
> I read the two definitions in 7.28,3 and 7.28.4 as follows:
> 
> label-end() =
>   width of the content-rectangle of the reference-area into
>     which the list-block is placed
>    - (the value of the provisional-distance-between-starts
>       + the value of the start-indent
>       + start-intrusion-adjustment
>       - the value of the provisional-label-separation)
>      of the closest ancestor fo:list-block
> 
> (that is, as printed in the spec) and
> 
> body-start() =
>   (the value of the start-indent
>    + start-intrusion-adjustment
>    + the value of the provisional-distance-between-starts)
>   of the closest ancestor fo:list-block
> 
> (that is, I added parentheses around the expression so that all are
> evaluated on fo:list-block).
> 
> Then you can do some math:
> 
> label-end() =
>   width of the content-rectangle of the reference-area into
>     which the list-block is placed
>    - (body-start()
>       - the value of the provisional-label-separation)
>      of the closest ancestor fo:list-block
> 
> which gives:
> 
> width of the content-rectangle - label-end()
>   + provisional-label-separation = body-start()
> 
> label-end() is counted from the end of the content-rectangle, and
> therefore width of the content-rectangle - label-end() is the distance
> of the label end to the start of the content-rectangle. Then
> 
> from start of content-rectangle to end of label
>   + provisional-label-separation = body-start()
> 
>   +-----------------------------------------------------+
>   |                                                     |
>   |   +-------+   +-------------------------------+     |
>   |   |       |   |                               |     |
>   |   +-------+   |                               |     |
>   |           .   |                               |     |
>   |           .   |                               |     |
>   |           .   |                                     |
>   |           .<--------------------------------------->|
>               .   |       label-end()                   |
>    <------------->|
>      body-start() |
>    <--------->.<->|
>         (1)   .(2)|
> 
>  (1) = width of the content-rectangle - label-end()
>  (2) = provisional-label-separation
>  (1) + (2) = body-start()
> 
> This is the relation you would expect, which supports my
> interpretation.
> 
> Sorry for still being at the level of ascii art. Read it in Courier.
> 
> Simon
> 
> On Tue, Feb 14, 2006 at 09:36:06AM +0100, Jeremias Maerki wrote:
> >
> > On 14.02.2006 07:24:03 Manuel Mall wrote:
> > > Jeremias,
> > >
> > > I did read those sections of the spec at the time and that's how the
> > > question arose. I didn't check the code though. Any way the spec says in
> > > 7.28.4:
> > >
> > > body-start() = the value of the start-indent + start-intrusion-adjustment
> > > + the value of the provisional-distance-between-starts of the closest
> > > ancestor fo:list-block.
> > >
> > > The questions arises what is meant by 'the value of the start-indent',
> > > i.e. the start-indent of which fo is suppose to be used? Does the suffix
> > > 'of the closest ancestor fo:list-block' apply to all three terms
> > > 'start-indent', 'start-intrusion-adjustment' and
> > > 'provisional-distance-between-starts' or only to
> > > 'provisional-distance-between-starts'?.
> >
> > "start-indent" can't be the start-indent of the list-item-body, that
> > much is clear. I always assumed it was inherited(start-indent). Anything
> > else would make no sense (recursion). I guess the spec could be clearer.
> > "of the closest anscestor fo:list-block" (at least for me) applies
> > directly and only to "provisional-distance-between-starts". That
> > property is inherited but only applies to fo:list-block. Furthermore,
> > start-intrusion-adjustment is something that can't come from the
> > list-block.
> >
> > > I assume now it means the further that is start-indent is to be taken from
> > > the closest ancestor fo:list-block. Therefore my initial concern that we
> > > have a recursive case here is probably not an issue.
> >
> > As I wrote above, I believe it's inherited(start-indent), i.e. comes
> > from the parent fo:list-item, not the list-block. This is important
> > because it allows you to indent individual list-items differently in the
> > same list-block.
> 
> --
> Simon Pepping
> home page: http://www.leverkruid.nl



Jeremias Maerki

Attachment: list-sandbox.fo
Description: Binary data

Reply via email to