Blame xsl/equation.xsl

Packit 0f19cf
Packit 0f19cf
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version='1.0'>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
    XSLT Stylesheet DocBook -> LaTeX 
Packit 0f19cf
    ############################################################################ -->
Packit 0f19cf
Packit 0f19cf
<xsl:param name="tex.math.in.alt" select="'latex'"/>
Packit 0f19cf
<xsl:param name="alt.use" select="0"/>
Packit 0f19cf
<xsl:param name="equation.default.position">[H]</xsl:param>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template match="inlineequation|informalequation" name="equation">
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
  <xsl:when test="alt and $tex.math.in.alt='latex'">
Packit 0f19cf
    <xsl:apply-templates select="alt" mode="latex"/>
Packit 0f19cf
  </xsl:when>
Packit 0f19cf
  <xsl:when test="alt and (count(child::*)=1 or $alt.use='1')">
Packit 0f19cf
    
Packit 0f19cf
    <xsl:apply-templates select="alt"/>
Packit 0f19cf
  </xsl:when>
Packit 0f19cf
  <xsl:otherwise>
Packit 0f19cf
    <xsl:apply-templates select="*[not(self::alt)]"/>
Packit 0f19cf
  </xsl:otherwise>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<xsl:template match="equation">
Packit 0f19cf
  <xsl:variable name="delim">
Packit 0f19cf
    <xsl:call-template name="pi.texmath_delimiters">
Packit 0f19cf
      <xsl:with-param name="node" select="descendant::alt"/>
Packit 0f19cf
    </xsl:call-template>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
  <xsl:when test="title">
Packit 0f19cf
    <xsl:text>
\begin{dbequation}</xsl:text>
Packit 0f19cf
    
Packit 0f19cf
    <xsl:choose>
Packit 0f19cf
      <xsl:when test="@floatstyle != ''">
Packit 0f19cf
        <xsl:value-of select="@floatstyle"/>
Packit 0f19cf
      </xsl:when>
Packit 0f19cf
      <xsl:otherwise>
Packit 0f19cf
        <xsl:value-of select="$equation.default.position"/>
Packit 0f19cf
      </xsl:otherwise>
Packit 0f19cf
    </xsl:choose>
Packit 0f19cf
    <xsl:text>
</xsl:text>
Packit 0f19cf
    <xsl:call-template name="equation"/>
Packit 0f19cf
    <xsl:text>
\caption{</xsl:text>
Packit 0f19cf
    <xsl:call-template name="normalize-scape">
Packit 0f19cf
       <xsl:with-param name="string" select="title"/>
Packit 0f19cf
    </xsl:call-template>
Packit 0f19cf
    <xsl:text>}
</xsl:text>
Packit 0f19cf
    <xsl:call-template name="label.id"/>
Packit 0f19cf
    <xsl:text>
\end{dbequation}
</xsl:text>
Packit 0f19cf
  </xsl:when>
Packit 0f19cf
  <xsl:when test="$delim='user'">
Packit 0f19cf
    
Packit 0f19cf
    <xsl:call-template name="equation"/>
Packit 0f19cf
  </xsl:when>
Packit 0f19cf
  <xsl:otherwise>
Packit 0f19cf
    
Packit 0f19cf
    <xsl:text>
\begin{equation}
</xsl:text>
Packit 0f19cf
    <xsl:call-template name="label.id"/>
Packit 0f19cf
    <xsl:call-template name="equation"/>
Packit 0f19cf
    <xsl:text>
\end{equation}
</xsl:text>
Packit 0f19cf
  </xsl:otherwise>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template match="alt|mathphrase">
Packit 0f19cf
  <xsl:apply-templates/>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
<xsl:template match="equation/title"/>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template match="alt" mode="latex">
Packit 0f19cf
  <xsl:variable name="delim">
Packit 0f19cf
    <xsl:call-template name="pi.texmath_delimiters"/>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  <xsl:variable name="tex">
Packit 0f19cf
    <xsl:variable name="text" select="normalize-space(.)"/>
Packit 0f19cf
    <xsl:variable name="len" select="string-length($text)"/>
Packit 0f19cf
    <xsl:choose>
Packit 0f19cf
    <xsl:when test="$delim='user'">
Packit 0f19cf
      <xsl:copy-of select="."/>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    <xsl:when test="ancestor::equation[not(child::title)]">
Packit 0f19cf
      
Packit 0f19cf
      <xsl:choose>
Packit 0f19cf
      
Packit 0f19cf
                      substring($text,$len,$len)='$'">
Packit 0f19cf
        <xsl:copy-of select="substring($text, 2, $len - 2)"/>
Packit 0f19cf
      </xsl:when>
Packit 0f19cf
      
Packit 0f19cf
                       substring($text,$len - 1,$len)='\]') or
Packit 0f19cf
                      (starts-with($text,'\(') and
Packit 0f19cf
                       substring($text,$len - 1,$len)='\)')">
Packit 0f19cf
        <xsl:copy-of select="substring($text, 3, $len - 4)"/>
Packit 0f19cf
      </xsl:when>
Packit 0f19cf
      <xsl:otherwise>
Packit 0f19cf
        <xsl:copy-of select="."/>
Packit 0f19cf
      </xsl:otherwise>
Packit 0f19cf
      </xsl:choose>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    
Packit 0f19cf
    
Packit 0f19cf
                    ancestor::informalequation or
Packit 0f19cf
                    ancestor::inlineequation">
Packit 0f19cf
      
Packit 0f19cf
      <xsl:choose>
Packit 0f19cf
      
Packit 0f19cf
                       substring($text,$len - 1,$len)='\]') or
Packit 0f19cf
                      (starts-with($text,'\(') and
Packit 0f19cf
                       substring($text,$len - 1,$len)='\)') or
Packit 0f19cf
                      (starts-with($text,'$') and
Packit 0f19cf
                       substring($text,$len,$len)='$')">
Packit 0f19cf
        <xsl:copy-of select="$text"/>
Packit 0f19cf
      </xsl:when>
Packit 0f19cf
      
Packit 0f19cf
      <xsl:otherwise>
Packit 0f19cf
        <xsl:copy-of select="concat('$', $text, '$')"/>
Packit 0f19cf
      </xsl:otherwise>
Packit 0f19cf
      </xsl:choose>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    <xsl:otherwise/>
Packit 0f19cf
    </xsl:choose>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
  
Packit 0f19cf
  <xsl:call-template name="scape-encode">
Packit 0f19cf
    <xsl:with-param name="string" select="$tex"/>
Packit 0f19cf
  </xsl:call-template>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
</xsl:stylesheet>