1
<?xml version='1.0' encoding="UTF-8"?>
2
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3
xmlns:m="http://www.w3.org/1998/Math/MathML"
6
<!-- ====================================================================== -->
7
<!-- $Id: glayout.xsl 149 2006-09-12 21:23:53Z fletcher $
8
This file is part of the XSLT MathML Library distribution.
9
See ./README or http://www.raleigh.ru/MathML/mmltex for
10
copyright and other information
11
Modified by Fletcher T. Penney for MultiMarkdown Version 2.0.a
13
Modified by Timothy Vismor for vismor.com -->
14
<!-- ====================================================================== -->
17
<xsl:template match="m:mfrac">
19
<xsl:when test="@linethickness">
20
<xsl:text>\genfrac{}{}{</xsl:text>
22
<xsl:when test="number(@linethickness)">
23
<xsl:value-of select="@linethickness div 10"/>
24
<xsl:text>ex</xsl:text>
26
<xsl:when test="@linethickness='0'">
27
<xsl:text>0ex</xsl:text>
29
<xsl:when test="@linethickness='thin'">
30
<xsl:text>.05ex</xsl:text>
32
<xsl:when test="@linethickness='medium'"/>
33
<xsl:when test="@linethickness='thick'">
34
<xsl:text>.2ex</xsl:text>
37
<xsl:value-of select="@linethickness"/>
40
<xsl:text>}{}{</xsl:text>
43
<xsl:text>\frac{</xsl:text>
46
<xsl:if test="@numalign='right'">
47
<xsl:text>\hfill </xsl:text>
49
<xsl:apply-templates select="./*[1]"/>
50
<xsl:if test="@numalign='left'">
51
<xsl:text>\hfill </xsl:text>
53
<xsl:text>}{</xsl:text>
54
<xsl:if test="@denomalign='right'">
55
<xsl:text>\hfill </xsl:text>
57
<xsl:apply-templates select="./*[2]"/>
58
<xsl:if test="@denomalign='left'">
59
<xsl:text>\hfill </xsl:text>
61
<xsl:text>}</xsl:text>
64
<xsl:template match="m:mfrac[@bevelled='true']">
65
<xsl:text>\raisebox{1ex}{$</xsl:text>
66
<xsl:apply-templates select="./*[1]"/>
67
<xsl:text>$}\!\left/ \!\raisebox{-1ex}{$</xsl:text>
68
<xsl:apply-templates select="./*[2]"/>
69
<xsl:text>$}\right.</xsl:text>
73
<xsl:template match="m:mroot">
75
<xsl:when test="count(./*)=2">
76
<xsl:text>\sqrt[</xsl:text>
77
<xsl:apply-templates select="./*[2]"/>
78
<xsl:text>]{</xsl:text>
79
<xsl:apply-templates select="./*[1]"/>
80
<xsl:text>}</xsl:text>
83
<!-- number of argumnets is not 2 - code 25 -->
84
<xsl:message>exception 25:</xsl:message>
85
<xsl:text>\text{exception 25:}</xsl:text>
90
<xsl:template match="m:msqrt">
91
<xsl:text>\sqrt{</xsl:text>
92
<xsl:apply-templates/>
93
<xsl:text>}</xsl:text>
96
<xsl:template match="m:mfenced">
98
<xsl:when test="@open">
99
<xsl:if test="translate(@open,'{}[]()|','{{{{{{{')='{'">
100
<xsl:text>\left</xsl:text>
102
<xsl:if test="@open='{' or @open='}'">
103
<xsl:text>\</xsl:text>
105
<xsl:if test="translate(@open,'{}[]()|','{{{{{{{')!='{' and (translate(@close,'{}[]()|','{{{{{{{')='{' or not(@close))">
106
<xsl:text>\left.</xsl:text>
108
<xsl:value-of select="@open"/>
110
<xsl:otherwise><xsl:text>\left(</xsl:text></xsl:otherwise>
112
<xsl:variable name="sep">
114
<xsl:when test="@separators">
115
<xsl:value-of select="translate(@separators,' ','')"/>
117
<xsl:otherwise>,</xsl:otherwise>
120
<xsl:for-each select="./*">
121
<xsl:apply-templates select="."/>
122
<xsl:if test="not(position()=last())">
124
<xsl:when test="position()>string-length($sep)">
125
<xsl:value-of select="substring($sep,string-length($sep))"/>
128
<xsl:value-of select="substring($sep,position(),1)"/>
134
<xsl:when test="@close">
135
<xsl:if test="translate(@close,'{}[]()|','{{{{{{{')='{'">
136
<xsl:text>\right</xsl:text>
138
<xsl:if test="@close='{' or @close='}'">
139
<xsl:text>\</xsl:text>
141
<xsl:if test="translate(@close,'{}[]()|','{{{{{{{')!='{' and (translate(@open,'{}[]()|','{{{{{{{')='{' or not(@open))">
142
<xsl:text>\right.</xsl:text>
144
<xsl:value-of select="@close"/>
146
<xsl:otherwise><xsl:text>\right)</xsl:text></xsl:otherwise>
150
<xsl:template match="m:mphantom">
151
<xsl:text>\phantom{</xsl:text>
152
<xsl:apply-templates/>
153
<xsl:text>}</xsl:text>
156
<xsl:template match="m:menclose">
158
<xsl:when test="@notation = 'actuarial'">
159
<xsl:text>\overline{</xsl:text>
160
<xsl:apply-templates/>
161
<xsl:text>\hspace{.2em}|}</xsl:text>
163
<xsl:when test="@notation = 'radical'">
164
<xsl:text>\sqrt{</xsl:text>
165
<xsl:apply-templates/>
166
<xsl:text>}</xsl:text>
169
<xsl:text>\overline{)</xsl:text>
170
<xsl:apply-templates/>
171
<xsl:text>}</xsl:text>
176
<xsl:template match="m:mrow">
177
<xsl:apply-templates/>
180
<xsl:template match="m:mstyle">
182
===========================
184
===========================
186
<xsl:if test="@mathvariant='bold'">
187
<xsl:text>\mathbf{</xsl:text>
190
===========================
192
<xsl:if test="@displaystyle='true'">
193
<xsl:text>{\displaystyle </xsl:text>
195
<xsl:if test="@scriptlevel and not(@displaystyle='true')">
196
<xsl:text>{</xsl:text>
198
<xsl:when test="@scriptlevel=0"><xsl:text>\textstyle </xsl:text></xsl:when>
199
<xsl:when test="@scriptlevel=1"><xsl:text>\scriptstyle </xsl:text></xsl:when>
200
<xsl:otherwise><xsl:text>\scriptscriptstyle </xsl:text></xsl:otherwise>
203
<xsl:if test="@background">
204
<xsl:text>\colorbox[rgb]{</xsl:text>
205
<xsl:call-template name="color">
206
<xsl:with-param name="color" select="@background"/>
208
<xsl:text>}{$</xsl:text>
210
<xsl:if test="@color[not(@mathcolor)] or @mathcolor">
211
<xsl:text>\textcolor[rgb]{</xsl:text>
212
<xsl:call-template name="color">
213
<xsl:with-param name="color" select="@color|@mathcolor"/>
215
<xsl:text>}{</xsl:text>
217
<xsl:apply-templates/>
219
===========================
221
===========================
223
<xsl:if test="@mathvariant='bold'">
224
<xsl:text>}</xsl:text>
227
===========================
229
<xsl:if test="@color[not(@mathcolor)] or @mathcolor">
230
<xsl:text>}</xsl:text>
232
<xsl:if test="@background">
233
<xsl:text>$}</xsl:text>
235
<xsl:if test="@scriptlevel and not(@displaystyle='true')">
236
<xsl:text>}</xsl:text>
238
<xsl:if test="@displaystyle='true'">
239
<xsl:text>}</xsl:text>
243
<xsl:template match="m:merror">
244
<xsl:apply-templates/>