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
bobs@sagehill.netOn 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:
docbook-apps-unsubscribe@lists.oasis-open.org> For additional commands, e-mail:
docbook-apps-help@lists.oasis-open.org>