1<?xml version='1.0'?>
2<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3                xmlns:fo="http://www.w3.org/1999/XSL/Format"
4                xmlns:mml="http://www.w3.org/1998/Math/MathML"
5                version='1.0'>
6
7<!-- ********************************************************************
8     $Id: math.xsl,v 1.11 2005/04/04 13:34:23 nwalsh Exp $
9     ********************************************************************
10
11     This file is part of the XSL DocBook Stylesheet distribution.
12     See /README or http://nwalsh.com/docbook/xsl/ for copyright
13     and other information.
14
15     ******************************************************************** -->
16
17<xsl:template match="inlineequation">
18  <xsl:choose>
19    <xsl:when test="$passivetex.extensions != 0 and $tex.math.in.alt != ''">
20      <xsl:apply-templates select="alt[@role='tex'] | inlinemediaobject/textobject[@role='tex']">
21        <xsl:with-param name="output.delims">
22          <xsl:call-template name="tex.math.output.delims"/>
23        </xsl:with-param>
24      </xsl:apply-templates>
25    </xsl:when>
26    <xsl:otherwise>
27      <xsl:apply-templates/>
28    </xsl:otherwise>
29  </xsl:choose>
30</xsl:template>
31
32<xsl:template match="alt">
33</xsl:template>
34
35<xsl:template match="mathphrase">
36  <fo:inline>
37    <xsl:apply-templates/>
38  </fo:inline>
39</xsl:template>
40
41<!-- "Support" for MathML -->
42
43<xsl:template match="mml:*" xmlns:mml="http://www.w3.org/1998/Math/MathML">
44  <xsl:copy>
45    <xsl:copy-of select="@*"/>
46    <xsl:apply-templates/>
47  </xsl:copy>
48</xsl:template>
49
50<xsl:template match="equation/graphic | informalequation/graphic">
51  <xsl:if test="$passivetex.extensions = 0 or $tex.math.in.alt = ''">
52    <fo:block>
53      <xsl:call-template name="process.image"/>
54    </fo:block>
55  </xsl:if>
56</xsl:template>
57
58<xsl:template match="inlineequation/alt[@role='tex'] | 
59                     inlineequation/inlinemediaobject/textobject[@role='tex']" priority="1">
60  <xsl:param name="output.delims" select="1"/>
61  <xsl:if test="$passivetex.extensions != 0 and $tex.math.in.alt != ''">
62    <xsl:processing-instruction name="xmltex">
63      <xsl:if test="$output.delims != 0">
64        <xsl:text>$</xsl:text>
65      </xsl:if>
66      <xsl:value-of select="."/>
67      <xsl:if test="$output.delims != 0">
68        <xsl:text>$</xsl:text>
69      </xsl:if>
70    </xsl:processing-instruction>
71  </xsl:if>
72</xsl:template>
73
74<xsl:template match="equation/alt[@role='tex'] | informalequation/alt[@role='tex'] |
75                     equation/mediaobject/textobject[@role='tex'] |
76                     informalequation/mediaobject/textobject[@role='tex']" priority="1">
77  <xsl:variable name="output.delims">
78    <xsl:call-template name="tex.math.output.delims"/>
79  </xsl:variable>
80  <xsl:if test="$passivetex.extensions != 0 and $tex.math.in.alt != ''">
81    <xsl:processing-instruction name="xmltex">
82      <xsl:if test="$output.delims != 0">
83        <xsl:text>$$</xsl:text>
84      </xsl:if>
85      <xsl:value-of select="."/>
86      <xsl:if test="$output.delims != 0">
87        <xsl:text>$$</xsl:text>
88      </xsl:if>
89    </xsl:processing-instruction>
90  </xsl:if>
91</xsl:template>
92
93<xsl:template match="alt[@role='tex']">
94  <xsl:if test="$passivetex.extensions != 0 and $tex.math.in.alt != ''">
95    <xsl:message>
96      Your equation is misplaced. It should be in inlineequation, equation or informalequation.
97    </xsl:message>
98  </xsl:if>
99</xsl:template>
100
101<xsl:template name="tex.math.output.delims">
102  <xsl:variable name="pi.delims">
103    <xsl:call-template name="pi-attribute">
104      <xsl:with-param name="pis" select=".//processing-instruction('dbtex')"/>
105      <xsl:with-param name="attribute" select="'delims'"/>
106    </xsl:call-template>
107  </xsl:variable>
108  <xsl:variable name="result">
109    <xsl:choose>
110      <xsl:when test="$pi.delims = 'no'">0</xsl:when>
111      <xsl:when test="$pi.delims = '' and $tex.math.delims = 0">0</xsl:when>
112      <xsl:otherwise>1</xsl:otherwise>
113    </xsl:choose>
114  </xsl:variable>
115  <xsl:value-of select="$result"/>
116</xsl:template>
117
118</xsl:stylesheet>
119