Package: docbook-xsl
Version: 1.75.2+dfsg-5
Severity: normal
Tags: patch
Docbook segmented lists are lists in which each element has one or
more "segments". For instance, a synopsis of commands might look like
this:
Name: ls
Usage: ls [options] PATH ...
Description: List directory contents or file information
The FO output template for docbook appears to generate tabular output
in this case, with one column per segment. However, it is hardcoded to
generate two <fo:table-column> definitions regardless of the number of
segments. This results in errors when the resulting .fo file is
processed with fop.
The attached patch to fo/lists.xsl fixes this for me.
Daniel
-- System Information:
Debian Release: wheezy/sid
APT prefers unstable
APT policy: (500, 'unstable'), (500, 'testing')
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.38-2-amd64 (SMP w/8 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages docbook-xsl depends on:
ii xml-core 0.13 XML infrastructure and XML catalog
Versions of packages docbook-xsl recommends:
ii docbook-xml 4.5-7 standard XML documentation system
ii docbook-xsl-doc-html [docbook 1.75.2-1 stylesheets for processing DocBook
Versions of packages docbook-xsl suggests:
pn dbtoepub <none> (no description available)
pn docbook-xsl-saxon <none> (no description available)
ii fop 1:0.95.dfsg-11 XML to PDF Translator
ii libsaxon-java 1:6.5.5-7 Saxon XSLT Processor
ii libxalan2-java 2.7.1-5 XSL Transformations (XSLT) process
pn xalan <none> (no description available)
-- no debconf information
--- lists.xsl.orig 2011-04-02 10:37:12.497221731 -0700
+++ lists.xsl 2011-04-02 10:46:08.050175221 -0700
@@ -1195,8 +1195,9 @@
<xsl:template match="segmentedlist" mode="seglist-table">
<xsl:apply-templates select="title" mode="list.title.mode" />
<fo:table>
- <fo:table-column column-number="1"
column-width="proportional-column-width(1)"/>
- <fo:table-column column-number="2"
column-width="proportional-column-width(1)"/>
+ <xsl:call-template name="segmentedlist.table.columns">
+ <xsl:with-param name="cols" select="count(segtitle)"/>
+ </xsl:call-template>
<fo:table-header start-indent="0pt" end-indent="0pt">
<fo:table-row>
<xsl:apply-templates select="segtitle" mode="seglist-table"/>
@@ -1208,6 +1209,20 @@
</fo:table>
</xsl:template>
+<xsl:template name="segmentedlist.table.columns">
+ <xsl:param name="cols" select="1"/>
+ <xsl:param name="curcol" select="1"/>
+
+ <fo:table-column column-number="{$curcol}"
+ column-width="proportional-column-width(1)"/>
+ <xsl:if test="$curcol < $cols">
+ <xsl:call-template name="segmentedlist.table.columns">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="curcol" select="$curcol+1"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
<xsl:template match="segtitle" mode="seglist-table">
<fo:table-cell>
<fo:block font-weight="bold">