OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

docbook message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Getting PassiveTeX to work with DocBook


Due to recurring requests, here's how I get PassiveTeX to work with
recent DocBook XSL-FO style sheets. Note that this is not a general
solution; I took some radical measures that work for me but may be too
restrictive for other users; you may have to tweak some of my
hard-wired parameters or generalize some templates. It may also be
incomplete in that constructs that I have not yet used cause
PassiveTeX problems unknown to me.  But it's a starting point that
should get most real-world DocBook files to convert to PDF.

Justus


<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                xmlns:fo="http://www.w3.org/1999/XSL/Format";
                version='1.0'>
  <!-- Import docbook stylesheet. Or import slides/fo/plain.xsl, or ... -->
  <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/fo/docbook.xsl"/>

  <!-- Essential templates to prevent PassiveTeX from choking: -->

  <!-- Header causes problems, just get rid of it: -->
  <xsl:template name="header.content"/>

  <!-- Precompute attribute values; PassiveTex is too stupid: -->
  <xsl:attribute-set name="component.title.properties">
    <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
    <xsl:attribute name="space-before.optimum">
      <xsl:value-of select="concat($body.font.master, 'pt')"/>
    </xsl:attribute>
    <xsl:attribute name="space-before.minimum">
      <xsl:value-of select="$body.font.master * 0.8"/>
      <xsl:text>pt</xsl:text>
    </xsl:attribute>
    <xsl:attribute name="space-before.maximum">
      <xsl:value-of select="$body.font.master * 1.2"/>
      <xsl:text>pt</xsl:text>
    </xsl:attribute>
    <xsl:attribute name="hyphenate">false</xsl:attribute>
  </xsl:attribute-set>


  <!-- Don't put in extra fo:block; PassiveTeX gets confused by nested
       fo:blocks: -->
  <xsl:template match="listitem/*[1][local-name()='para' or 
		local-name()='simpara']
		|glossdef/*[1][local-name()='para' or 
		local-name()='simpara' or 
		local-name()='formalpara']
		|step/*[1][local-name()='para' or 
		local-name()='simpara' or 
		local-name()='formalpara']
		|callout/*[1][local-name()='para' or 
		local-name()='simpara' or 
		local-name()='formalpara']"
		priority="2">
    <xsl:call-template name="anchor"/>
    <xsl:apply-templates/>
  </xsl:template>


  <!-- Here are some adjustments that I find useful; your mileage may vary: -->

  <!-- Adjust to work around PassiveTeX spacing bug: -->
  <xsl:attribute-set name="list.block.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">1em</xsl:attribute>
    <xsl:attribute name="space-after.minimum">0.8em</xsl:attribute>
    <xsl:attribute name="space-after.maximum">1.2em</xsl:attribute>
  </xsl:attribute-set>

  <!-- Remove spurious space preceding equations -->
  <!-- informalequation.properties maps directly to
       informalobject.properties -->
  <xsl:attribute-set name="informal.object.properties">
    <xsl:attribute name="space-before.minimum">0em</xsl:attribute>
    <xsl:attribute name="space-before.optimum">0em</xsl:attribute>
    <xsl:attribute name="space-before.maximum">0em</xsl:attribute>
    <xsl:attribute name="space-after.minimum">0em</xsl:attribute>
    <xsl:attribute name="space-after.optimum">0em</xsl:attribute>
    <xsl:attribute name="space-after.maximum">0em</xsl:attribute>
  </xsl:attribute-set>

</xsl:stylesheet>


-- 
Justus H. Piater, Ph.D.         http://www.montefiore.ulg.ac.be/~piater/
Institut Montefiore, B28        Phone: +32-4-366-2279
Université de Liège, Belgium    Fax:   +32-4-366-2620


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]