[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [docbook-apps] Re:[docbook-apps] adminitions - notes - line break after "Note"
On 12/18/06, Bob Stayton <bobs@sagehill.net> wrote:
> The object.title.markup mode does not generate an fo:block or a line break.
> I think what you are seeing is the following: the note element opens an
> fo:block, the object.title.markup template generates the title text, and
> then the para template is processed. The para template generates an
> fo:block for its content, and so you have a nested fo:block which breaks
> the line before the para.
That's the key bit (which Bob said much more clearly that I did).
> <xsl:choose>
> <xsl:when test="child::*[1]/self::para">
> <fo:block id="{$id}"
> xsl:use-attribute-sets="nongraphical.admonition.properties">
> ...
> </xsl:when>
> <xsl:otherwise>
> <xsl:apply-imports/>
> </xsl:otherwise>
>
> The xsl:choose statement determines if the first child of the note is a
> para, which is a good candidate for run-in text. If it is not a para
> (xsl:otherwise), it reverts to the original behavior using
> xsl:apply-imports. If it is a para, it generates the title using
> object.title.markup, in the fo:inline to apply the font change from the
> attribute-set, then processes all the *content* of the first para element
> "para[1]/node()", not the para element itself. That prevents the para
> fo:block that was breaking the line. So now the title and the para content
> are in the same fo:block. Then it does apply-templates on everything in
> the note after the first para.
Ah, this is wonderful. I hadn't yet thought of
<xsl:apply-templates select="para[1]/node()"/>
Thanks,
Keith
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]