[xsl] even column lengths

Subject: [xsl] even column lengths
From: Luke Jones <ljones@xxxxxxxxxx>
Date: Mon, 26 Mar 2007 15:11:22 -0500
xsl experts,

I'm currently trying produce a section of columns within a page.  Using
the column attributes of the body region, I can easily create the
desired columns.  However, the columns do not always come out with an
even (or close to even) length, which is required for this particular
document.

In my initial efforts to figure this problem out, I saw several
references of putting an empty block at the end of the text in a effort
to force the columns to be even.  This did not work for me, although it
could be that I did not fully understand the method that was being
proposed.

Below is part of my xsl that hopefully will give you a better
understanding of where I'm at within the code...

<fo:simple-page-master
     master-name = "chapter-rest-even"
     page-width = "6.75in"
     page-height = "10in"
     margin-top = "0.5in"
     margin-bottom = "0.5in"
     margin-left = "0.75in"
     margin-right = "0.875in">
     <fo:region-body
            margin-top = "0.5in"
            margin-bottom = "0.5in"
            column-count = "2"
            column-gap = "2mm"/>
</fo:simple-page-master>
<fo:page-sequence master-reference = "all-pages">
      <fo:flow flow-name="xsl-region-body">
            <xsl:for-each select = "//legaldoc">
                  <fo:block span = "all" text-align =
"justify">
<xsl:apply-templates select = "law/section/amendatorysection/bookinfo"/>
<xsl:apply-templates select =
"law/section/amendatorysection/statuteno"/>
<xsl:apply-templates select =
"law/section/amendatorysection/catchline"/>
<xsl:apply-templates select = "law/section/amendatorysection/para"/>
<xsl:apply-templates select = "law/source"/>
<xsl:apply-templates select = "law/crossreference"/>
<xsl:apply-templates select = "law/annotation" mode = "header"/>
                  </fo:block>
                  <fo:block span = "all"/>
                        <fo:block text-align = "justify">
             <xsl:apply-templates select = "law/annotation"/>
                                <fo:block><fo:leader leader-pattern =
"space" leader-length = "1mm"/></fo:block>
                        </fo:block>
                        <fo:block span = "all"/>
            </xsl:for-each>
            <fo:block span = "all"/>
       </fo:flow>
</fo:page-sequence>


To the best of my knowledge this section of code is setting up the
columns within the body region. Then calling all the templates that DO
NOT get broken up into columns inside a span=all block. Finally the
annotation template is called which SHOULD be broken up into columns.

Any idea on how to even out the columns is greatly appreciated!!

Thanks!
Luke

Current Thread