Hi Bob,
The extra space is coming from the <para> element embedded in the
listitem. The para element generates a block with its own spacing coming
from the "para.properties" attribute-set. I was able to remove the
extra space by customizing para.properties as follows to make it
conditional:
<xsl:attribute-set name="para.properties">
<xsl:attribute name="space-before.maximum">
<xsl:choose>
<xsl:when test="ancestor::varlistentry">0pt</xsl:when>
<xsl:otherwise>1.2em</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:attribute name="space-before.optimum">
<xsl:choose>
<xsl:when test="ancestor::varlistentry">0pt</xsl:when>
<xsl:otherwise>1.0em</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:attribute name="space-before.minimum">
<xsl:choose>
<xsl:when test="ancestor::varlistentry">0pt</xsl:when>
<xsl:otherwise>.8em</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:attribute-set>
Note that this applies to all paras in varlistentry, so if you have two
paras in a listitem, there will be no space between them as well.
Bob Stayton
Sagehill Enterprises
[email protected]
On 8/17/2016 10:49 AM, Bob McIlvride wrote:
Dear friends,
I want to remove all line spacing for list items in the PDF output of a
Docbook 4.5 document, using Saxon6.5.5 and Apache FOP. I've been able
to do this successfully, except for one line in variablelists. The
spacing between the term and listitem in a variablelist remains. I have
made a number of attempts in my custom stylesheet, but no luck.
For example, one part of my source document looks like this:
<varlistentry>
<term><parameter moreinfo="none">modbus</parameter></term>
<listitem>
<para>The modbus instance pointer. Always enter <literal
moreinfo="none">modbus</literal> for this
parameter</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter moreinfo="none">slaveid</parameter></term>
<listitem>
<para>The slave ID for this point. An entry of zero (<literal
moreinfo="none">0</literal>) will use the default slave
ID for the Modbus connection.</para>
</listitem>
</varlistentry>
...
My custom stylesheet currently contains this:
<xsl:attribute-set name="list.item.spacing">
<xsl:attribute name="space-before.optimum">0em</xsl:attribute>
<xsl:attribute name="space-before.minimum">0em</xsl:attribute>
<xsl:attribute name="space-before.maximum">0em</xsl:attribute>
<xsl:attribute name="space-after.optimum">0em</xsl:attribute>
<xsl:attribute name="space-after.minimum">0em</xsl:attribute>
<xsl:attribute name="space-after.maximum">0em</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="list.block.spacing">
<xsl:attribute name="padding-top">0em</xsl:attribute>
<xsl:attribute name="padding-bottom">0em</xsl:attribute>
<xsl:attribute name="space-before.optimum">0em</xsl:attribute>
<xsl:attribute name="space-before.minimum">0em</xsl:attribute>
<xsl:attribute name="space-before.maximum">0em</xsl:attribute>
<xsl:attribute name="space-after.optimum">0em</xsl:attribute>
<xsl:attribute name="space-after.minimum">0em</xsl:attribute>
<xsl:attribute name="space-after.maximum">0em</xsl:attribute>
</xsl:attribute-set>
<xsl:template match="d:varlistentry" mode="vl.as.blocks">
<xsl:variable name="id">
<xsl:call-template name="object.id"/>
</xsl:variable>
<fo:block id="{$id}"
xsl:use-attribute-sets="variablelist.term.properties
list.item.spacing"
keep-together.within-column="always"
keep-with-next.within-column="always"
space-after.minimum="0pt"
space-after.maximum="0pt"
space-after.optimum="0pt"
space-after.precedence="3"
padding-top="0pt"
padding-bottom="0pt"
>
<xsl:apply-templates select="d:term"/>
</fo:block>
<fo:block
space-before.minimum="0pt"
space-before.maximum="0pt"
space-before.optimum="0pt"
space-before.precedence="3"
padding-top="0pt"
padding-bottom="0pt"
>
<xsl:attribute
name="margin-{$direction.align.start}">0.25in</xsl:attribute>
<xsl:apply-templates select="d:listitem"/>
</fo:block>
</xsl:template>
My output is in the attached screenshot, VariableListSpacing.jpg. As
you can see, all of the line spacing is removed, except for the area
between the term and the listitem. Can anyone help with this?
Best regards,
Bob
COGENT <http://cogent.ca/>
*Bob McIlvride ** Communications Manager*
Cogent Real-Time Systems Inc., a Skkynet company
T 1 905 702 7851 ext 103
cogent.ca <http://cogent.ca/>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]