Re: [docbook-apps] Table Line Thickness

From
DeanNelson <>
Date
2009-09-08T02:53:08+00:00
ID
Thread
Re: [docbook-apps] Table Line Thickness
Great - Thanks Bob.

 

This all came about when I needed to render a table in PDF that had no borders, but had one cell on the bottom of the table that needed a bottom line, but I could not render it because the "rowsep" does not work on the bottom cell because the outer table line would overwrite it.

 

Sooo... I decided to try to render that particular table a bit different, hence the question. But since I got you on the line, wouldn't it make sense to allow a "rowsep" on a cell when the table has a frame="none" ?

 

Thanks,

Dean Nelson

 

 

 

In a message dated 09/05/09 16:26:20 Pacific Daylight Time,  writes:

Hi Dean,

You could do it with a processing instruction, a tabstyle attribute is more appropriate. A tabstyle can be put on a table or informaltable element to indicate to the stylesheet that different styling is required.  

 

If you go with tabstyle, you can call a utility template named 'tabstyle' that  returns the value of the attribute for the current table.  The tabstyle template is described here:

 

http://www.sagehill.net/docbookxsl/PrintTableStyles.html#TabstyleTemplate

 

To customize the frame borders, you would copy and edit the template named table.frame in fo/table.xsl to use an xsl:choose statement to select the frame thickness.  An example of using xsl:choose with tabstyle for table cell properties is shown here:

 

http://www.sagehill.net/docbookxsl/PrintTableStyles.html#CustomCellProperties

 

In the table.frame template, you could do that once at the top of the template to fill a variable, and then use that variable in place of $table.frame.border.thickness in the long set of frame choices that follow:

 

  <xsl:variable name="tabstyle">
    <xsl:call-template name="tabstyle"/>
  </xsl:variable>

 

  <xsl:variable name="frame.thickness">
    <xsl:choose>
      <xsl:when test="$tabstyle='thickborder'">2pt</xsl:when>
      <xsl:when test="$tabstyle='verythickborder'">4pt</xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="$table.frame.border.thickness"/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:variable>

 

And then replace all other instances in the template of $table.frame.border.thickness with $frame.thickness.

 

If you need to also change the rowsep and colsep (cell borders), then customize the template named 'border' in fo/table.xsl with the same technique.

 

Bob Stayton
Sagehill Enterprises


 

 

----- Original Message ----- 

From:  

To:  

Sent: Thursday, September 03, 2009 5:34 PM

Subject: [docbook-apps] Table Line Thickness

Hello everyone,

 

Is there a way to control the thickness of the border of each table separately? The common parameter only applies to ALL tables.

 

Maybe an additional PI?

 

Thanks

Dean Nelson