Tom
Here is an adjusted version that triggers only when "align" is used on the 
table. This has some peculiarities when processed with FOP 1.0. 

I would suggest that you use fixed column widths and not proportional in the 
XML tables because proportional is not quite right in FOP when used in a table 
in a table. But if you use fixed widths it should be fine (or at least in my 
setup it was).

Cheers,
Dean Nelson


<!-- center tables in print, from p. 474 in Stayton: --> 
<xsl:template name="table.layout"> 
 <xsl:param name="table.content"/> 
    <xsl:choose>
     <xsl:when test="self::tab...@align]">
    <fo:table width="100%" table-layout="fixed">
      <fo:table-column column-width="proportional-column-width(1)"/>  
      <fo:table-column/> 
      <fo:table-column column-width="proportional-column-width(1)"/> 
      <fo:table-body  start-indent="0pt"> 
         <fo:table-row> 
           <fo:table-cell><fo:block></fo:block></fo:table-cell> 
           <fo:table-cell> 
             <fo:table> 
               <fo:table-body start-indent="0pt"> 
                 <fo:table-row><fo:table-cell><fo:block> 
                   <xsl:copy-of select="$table.content"/> 
                 </fo:block></fo:table-cell></fo:table-row> 
               </fo:table-body> 
             </fo:table> 
           </fo:table-cell> 
           <fo:table-cell><fo:block></fo:block></fo:table-cell> 
            </fo:table-row> 
     </fo:table-body> 
    </fo:table> 
        </xsl:when>
  <xsl:otherwise> 
   <xsl:copy-of select="$table.content"/> 
  </xsl:otherwise>
    </xsl:choose>
</xsl:template> 





In a message dated 11/11/10 06:40:35 Pacific Standard Time, 
[email protected] writes:
I have no problems now for tables spanning the print width, nor with 
tables of any width in html.  But I need to center 
less-than-page-width tables in print. 

I have used Bob Stayton's xsl fo chunk on p. 474 as a start to try to 
get my narrow tables centered in print.  Here is my current version: 

<!-- center tables in print, from p. 474 in Stayton: --> 
<xsl:template name="table.layout"> 
 <xsl:param name="table.content"/> 
 <fo:table width="100%" table-layout="fixed"><!-- I dded table-layout 
attribute --> 

   <fo:table-column column-width="proportional-column-width(1)"/> 
   <!-  [1] hack next line: added actual table width here --> 
   <fo:table-column column-width="3in"/> 
   <fo:table-column column-width="proportional-column-width(1)"/> 
   <fo:table-body start-indent="0pt"> 
     <fo:table-row> 

       <!-- <fo:table-cell/> --> 
       <!-- [2] fo complains about missing table-cell children, I 
added Bob's zero space char from p. 261 --> 
       <fo:table-cell><fo:block>&#xFEFF;</fo:block></fo:table-cell> 

       <fo:table-cell> 

         <fo:table> 
           <fo:table-body start-indent="0pt"> 
             <fo:table-row><fo:table-cell><fo:block> 
               <xsl:copy-of select="$table.content"/> 
              </fo:block></fo:table-cell></fo:table-row> 
           </fo:table-body> 
         </fo:table> 

       </fo:table-cell> 

       <!-- ditto from [2] --> 
       <fo:table-cell><fo:block>&#xFEFF;</fo:block></fo:table-cell> 

     </fo:table-row> 
   </fo:table-body> 
 </fo:table> 
</xsl:template> 

That works for the one specific table when I hardwire the actual table 
width.  Is there any xsl:fo magic that can get the total original 
table width at [1]?  If not I suppose I can post process the fo to fix 
it, but there  must be a more elegant way. 

Thanks, 

-Tom 

Thomas M. Browder, Jr. 
Niceville, Florida 
USA 

--------------------------------------------------------------------- 
To unsubscribe, e-mail: [email protected] 
For additional commands, e-mail: [email protected] 

Reply via email to