Re: [xsl] Footnote within a list item

Subject: Re: [xsl] Footnote within a list item
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
Date: Thu, 28 May 2009 13:49:25 -0400
At 2009-05-28 19:33 +0200, Konstanty Pilecki wrote:
My footnote is constructed like this:

<footnote>
    <inline baseline-shift="super">99</inline>
    <footnote-body>
        <list-block>
            <list-item>
                <list-item-label>
                    <block baseline-shift="super">99</block>
                </list-item-label>
                <list-item-body start-indent="body-start()">
                    <block>xxxxxxxxx</block>
                </list-item-body>
            </list-item>
        </list-block>
    </footnote-body>
</footnote>

A <list-block> element has been used inside a <footnote-body> element
to obtain a good layout of footnotes sequence at the page's bottom. It
works well except a case, when the footnote is nested inside an actual
list. Then the footnote is, unfortunately, shifted to the right. How
can I force an XSL-FO processor not to treat an inner list as a nested
one?

Long ago I put this explicitly in one of our XSL-FO class exercises in order to force students to look at tree refinement in the XSL-FO processing model. It always catches them by surprise when they think they've completed the exercise.


Before your footnote is laid out on the page, the refinement of the FO tree runs all the necessary inheritance processing and FO clean-up. This means that while your footnote is inside your body's block in the tree, it is inheriting your body's indentation. When it is laid out at the bottom of the page it has already inherited the indentation and so it gets used.

I tell my students that to isolate the indentation of the footnote from the indentation of the body, wrap the footnote-body content with an unindented block:

   <footnote-body>
     <block start-indent="0pt">
       ....
     </block>
   </footnote-body>

The behaviour you are seeing is not a bug ... it is a direct result of the kinds of actions that are going on in the XSL-FO processing model, and what you end up getting in the refined FO object tree.

I hope this helps.

. . . . . . . . . . . . Ken

--
XSLT/XSL-FO/XQuery hands-on training - Los Angeles, USA 2009-06-08
Crane Softwrights Ltd.          http://www.CraneSoftwrights.com/s/
Training tools: Comprehensive interactive XSLT/XPath 1.0/2.0 video
Video lesson:    http://www.youtube.com/watch?v=PrNjJCh7Ppg&fmt=18
Video overview:  http://www.youtube.com/watch?v=VTiodiij6gE&fmt=18
G. Ken Holman                 mailto:gkholman@xxxxxxxxxxxxxxxxxxxx
Male Cancer Awareness Nov'07  http://www.CraneSoftwrights.com/s/bc
Legal business disclaimers:  http://www.CraneSoftwrights.com/legal

Current Thread