Hello,
thank you very much for
kind help and sorry for such a late answer.
The exmaple you posted
exatly solved my problem. At the beginning I was trying to make changes just in
this template, but I did not use the „content“ variable which then of
course did not work and so I tried to create a new template.
Customizing simple template
works fine but the solution you provided solves all issues in one place.
Again, thanks a lot.
Greetings
pavel
-----Original Message-----
From: Bob Stayton
[mailto:bobs@sagehill.net]
Sent: Tuesday, December 05, 2006
7:38 AM
To: Skopik Pavel;
docbook-apps@lists.oasis-open.org
Subject: Re: [docbook-apps] Formal
titles as a float
As you discovered, when you use
xsl:apply-imports, it applies the default template with match="task"
in fo/task.xsl, which calls formal.object.heading, which duplicates your
use of the same template. You could customize the match="task"
template to remove the call to formal.object.heading, or you could customize
formal.object.heading to do something different for task and lists.
Something like this:
<xsl:template
name="formal.object.heading">
<xsl:param name="object" select="."/>
<xsl:param name="placement"
select="'before'"/>
<xsl:variable
name="content">
<fo:block
xsl:use-attribute-sets="formal.title.properties">
<xsl:choose>
<xsl:when test="$placement =
'before'">
<xsl:attribute
name="keep-with-next.within-column">always</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute
name="keep-with-previous.within-column">always</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
<xsl:apply-templates
select="$object" mode="object.title.markup">
<xsl:with-param
name="allow-anchors" select="1"/>
</xsl:apply-templates>
</fo:block>
</xsl:variable>
<xsl:choose>
<xsl:when test="$object/self::task or
$object/self::orderedlist or $object/self::itemizedlist">
<xsl:call-template
name="floater">
<xsl:with-param name="position">left</xsl:with-param>
<xsl:with-param name="width">0.7in</xsl:with-param>
<xsl:with-param name="start.indent">0in</xsl:with-param>
<xsl:with-param name="content">
<fo:block margin-top="1em" text-align="left"
padding="3pt">
<xsl:copy-of select="$content"/>
</fo:block>
</xsl:with-param>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="$content"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
This first formats the title into a
$content variable, and then uses an xsl:choose statement to put that
$content into a float or not, depending on the $object being processed.
----- Original Message -----
Sent: Monday,
December 04, 2006 1:22 AM
Subject:
[docbook-apps] Formal titles as a float
Hello,
I have been trying to format
formal titles (for itemizedlist, orderedlist and task) as a float so that it is
easier for a user to scan the text. I would like the float to be on the left
side.
I used Bob Stayton’s
example for floating admonitions as a starting point and changed the template
to task… The float gets generated, however, the problem is that the title
is generated twice – once as a side float on the left and second as if no
float was used. The only thing I am not able to solve now is to turn off
generating the title above task, itemizedlist etc.
Here is what I have done so far in
my customization layer. I call the template „formal.object.heading“
and I tried to apply templates with „title markup mode“ as well but
I still get the same result.
<xsl:param
name="body.start.indent">2cm</xsl:param>
<xsl:param
name="xep.extensions" select="'1'"></xsl:param>
<xsl:template match="task
| itemizedlist | orderedlist">
<xsl:call-template name="floater">
<xsl:with-param name="position">left</xsl:with-param>
<xsl:with-param name="width">0.7in</xsl:with-param>
<xsl:with-param name="start.indent">0in</xsl:with-param>
<xsl:with-param name="content">
<fo:block margin-top="1em" text-align="left"
padding="3pt">
<xsl:call-template name="formal.object.heading"></xsl:call-template>
</fo:block>
</xsl:with-param>
</xsl:call-template>
<xsl:apply-imports/>
</xsl:template>
Could anyone provide me with a few
tips what I am doing wrong? Thank you very much.
Greetings
pavel