Hi Thomas,
first I want to welcome you on board of the ODF TC - now you are the
newest member not me any more ;-)
You're right. The main reason for these new attributes are a better
compatibility to the list level attributes of Mircosoft Word in
OpenOffice.org. But, there are some attribute constellation, which
can't be mapped or are hard to map to the existing attributes.
Before I give examples, I want to illustrate the current behaviour of
the OpenOffice.org Writer. The current interpretation of
OpenOffice.org Writer about the existing attributes are:
(a) The area for the minimum label width (text:min-label-width) starts
at the position by adding text:space-before, paragraph indent
(fo:margin-left) and the paragraph first line indent (fo:text-indent).
(b) The text of the first line in general starts directly after the
minimum label width area. But a minimum label distance
(text:minimum-label-distance) has to be hold. Thus, in OOo Writer it's
checked, if the space between the actual list label end and the end of
the minimum label width area fulfills the value of the minimum label
distance.
E.g. minimum label width is 1cm, actual label width is 0,5cm, the list
label is centered inside the minimum label width area (fo:text-align =
"center"). Thus, 0,25cm is the distance between the actual list label
end and the start of the text. If the specified minimum label distance
is greater than 0,25cm - e.g. it's 0,4cm - an adjustment is needed.
The current Writer implementation has the constraint to keep the
absolute position of the text in the first line in order to assure
that the text of the first line of all list items starts at the same
absolute position. Thus, the list label is moved 0,15cm to the left.
Another constraint in OOo Writer is that the list label can't be start
before the start of the minimum label width area - our interpretation
of the ODF specification about attribute text:space-before. Thus, in
the following example the start of the text of the first line has to
be moved: minimum label width = 1cm, actual label width 0,5cm, the
list label is left aligned inside the minimum label width area. Thus,
0,5cm is the distance between the actual list label end and the start
of the text. If the specified minimum label distance is greater than
0,5cm, the start of the text of the first line has to be moved
accordingly.
(c) The text of the text lines following the first line of a list item
starts at the position by adding text:space-before,
text:minimum-label-width and the paragraph indent (fo:margin-left).
(d) The alignment of list label takes place inside the minimum label
width area. If the minimum label width area is smaller than the actual
list label width, the current OOo Writer implementation applies
alignment left regardless of the value of fo:text-align. This is
another consequence of the second constaint given in (b).
Use cases for the new attributes respectively mapping problems from
the new attributes to the existing ones:
Example 1:
I want to center align the list label of the list items at absolute
position 2cm - center of the actual list label is at absolute position
2cm and start of the text of the first line and the following lines at
absolute position 3cm.
Easy with the new attributes:
text:label-followed-by="listtab"
text:list-tab-stop-position="3cm"
text:label-aligned-at="2cm"
text:indent-at="3cm"
fo:text-align="center"
Hard or even impossible with the existing attributes, if the list
labels of the list items doesn't have the same width.
Example 2:
I want to start the list label at absolute position 2cm, the text of
the first line at absolute position 3cm and the text of the following
lines at absolute position 4cm.
Easy with the new attributes:
text:label-followed-by="listtab"
text:list-tab-stop-position="3cm"
text:label-aligned-at="2cm"
text:indent-at="4cm"
fo:text-align="left"
Hard with the existing attributes, because the text of the first line
and the following lines have to start at different positions. Thus,
the first line indent and the paragraph indent of the paragraph has to
be used to achieve this. The user can't specify it with the list level
attributes alone:
text:space-before="2cm"
text:minimum-label-width="1cm"
text:minimum-label-distance="0cm"
fo:text-align="left"
fo:text-indent="-1cm" - paragraph attribute
fo:margin-left="1cm" - paragraph attribute
Example 3:
I want to right align the list label at absolute position 2cm - list
label end at absolute position 2cm -, the text of the first line and
the following lines at absolute position 5cm.
Easy with the new attributes:
text:label-followed-by="listtab"
text:list-tab-stop-position="5cm"
text:label-aligned-at="2cm"
text:indent-at="5cm"
fo:text-align="right"
Impossible in OOo Writer with the existing attributes, because of the
constraints given above. Some one could think of the following
attribute values:
text:space-before="0cm"
text:minimum-label-width="2cm"
text:minimum-label-distance="3cm"
fo:text-align="right"
fo:text-indent="-3cm" - paragraph attribute
fo:margin-left="3cm" - paragraph attribute
But, this doesn't work in OOo Writer, because the Writer first would
move the list label to the left before it moves the text of the first
line to the right.
Another solution could be:
text:space-before="2cm"
text:minimum-label-width="0cm"
text:minimum-label-distance="3cm"
fo:text-align="right"
But, this also doesn't work in OOo Writer, because in this case the
list label would start at 2cm instead of ending.
Here the OOo Writer could be changed, but the above given OOo Writer
constraints are consequences of its interpretation of the ODF
specification, which doesn't state how the minimum label distance
should be hold - moving the list label or moving the text of the first
line.
Thus, the new attributes are motivated by the way how Microsoft Word
specifies its position and space for the list label and the text lines
of the list items. But, the new attributes adds additional
functionality - see my example 1. Another advantage of the new
attributes are, that you've got the possibility to specify the list
item layout without using the paragraph indent and the paragraph first
line indent - see my example 2.
The new attributes provide a new list label alignment. While the
existing attributes provides an alignment inside a specified area, the
new attributes define an alignment at a position. Thus, the new
attributes also makes sense in case that text:label-followed-by equals
"space" or "nothing".
Another important function of the new attributes lays in its details -
see my paragraph about new attribute text:list-tab-stop-position. It's
not clear that the text of the first line starts at the given tab stop
position.
I hope you see the benefit of the new attributes and you will support
my proposal.
Regards, Oliver.
Thomas Zander wrote:
> The reason these features are added seem to be limited to "WW has them".
> A better reason would be that you have usecases (i.e. things users want to
> accomplish) where the proposed solution fits best.
> Because if you can't find a usecase that warrents adding this feature then no
> user will actually miss these anyway.
>
> On Friday 26 January 2007 13:27, Oliver-Rainer Wittmann - Software Engineer -
> Sun Microsystems wrote:
>> The new attributes for the list level style are:
>> - text:label-followed-by
>
> I fail to see how this adds anything.
> We already have text:min-label-width which can be used to achieve the tabs
> based feature.
> Having a trailing space seems to be default already.
> I have yet to find a user that wants his text to start without any spacing
> following his counter.
>
>> - text:list-tab-stop-position
>
> This is just needed for the tabs-based feature. Which we already can do just
> fine with text:min-label-width
>
>> - text:label-aligned-at
>
> This feature doesn't seem to add anything either.
> It just makes things more complex for the user.
> Using the paragraph-inset (first line / text indent) you can accomplish all
> the things this feature adds already.
>
>> - fo:margin-left
>
> If the above are not needed, then this one isn't either.
>
> Can someone provide real life usecases?
> Which, to be clear, does not mean existing documents that use these features,
> it means a *goal* a user wants to accomplish that he can't achieve without
> these features.
>
> Thanks.