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"
4
version='1.0'>
5
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
12
13
Modified by Timothy Vismor for vismor.com -->
14
<!-- ====================================================================== -->
15
16
<!-- 3.3.2 mfrac -->
17
<xsl:template match="m:mfrac">
18
<xsl:choose>
19
<xsl:when test="@linethickness">
20
<xsl:text>\genfrac{}{}{</xsl:text>
21
<xsl:choose>
22
<xsl:when test="number(@linethickness)">
23
<xsl:value-of select="@linethickness div 10"/>
24
<xsl:text>ex</xsl:text>
25
</xsl:when>
26
<xsl:when test="@linethickness='0'">
27
<xsl:text>0ex</xsl:text>
28
</xsl:when>
29
<xsl:when test="@linethickness='thin'">
30
<xsl:text>.05ex</xsl:text>
31
</xsl:when>
32
<xsl:when test="@linethickness='medium'"/>
33
<xsl:when test="@linethickness='thick'">
34
<xsl:text>.2ex</xsl:text>
35
</xsl:when>
36
<xsl:otherwise>
37
<xsl:value-of select="@linethickness"/>
38
</xsl:otherwise>
39
</xsl:choose>
40
<xsl:text>}{}{</xsl:text>
41
</xsl:when>
42
<xsl:otherwise>
43
<xsl:text>\frac{</xsl:text>
44
</xsl:otherwise>
45
</xsl:choose>
46
<xsl:if test="@numalign='right'">
47
<xsl:text>\hfill </xsl:text>
48
</xsl:if>
49
<xsl:apply-templates select="./*[1]"/>
50
<xsl:if test="@numalign='left'">
51
<xsl:text>\hfill </xsl:text>
52
</xsl:if>
53
<xsl:text>}{</xsl:text>
54
<xsl:if test="@denomalign='right'">
55
<xsl:text>\hfill </xsl:text>
56
</xsl:if>
57
<xsl:apply-templates select="./*[2]"/>
58
<xsl:if test="@denomalign='left'">
59
<xsl:text>\hfill </xsl:text>
60
</xsl:if>
61
<xsl:text>}</xsl:text>
62
</xsl:template>
63
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>
70
</xsl:template>
71
72
73
<xsl:template match="m:mroot">
74
<xsl:choose>
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>
81
</xsl:when>
82
<xsl:otherwise>
83
<!-- number of argumnets is not 2 - code 25 -->
84
<xsl:message>exception 25:</xsl:message>
85
<xsl:text>\text{exception 25:}</xsl:text>
86
</xsl:otherwise>
87
</xsl:choose>
88
</xsl:template>
89
90
<xsl:template match="m:msqrt">
91
<xsl:text>\sqrt{</xsl:text>
92
<xsl:apply-templates/>
93
<xsl:text>}</xsl:text>
94
</xsl:template>
95
96
<xsl:template match="m:mfenced">
97
<xsl:choose>
98
<xsl:when test="@open">
99
<xsl:if test="translate(@open,'{}[]()|','{{{{{{{')='{'">
100
<xsl:text>\left</xsl:text>
101
</xsl:if>
102
<xsl:if test="@open='{' or @open='}'">
103
<xsl:text>\</xsl:text>
104
</xsl:if>
105
<xsl:if test="translate(@open,'{}[]()|','{{{{{{{')!='{' and (translate(@close,'{}[]()|','{{{{{{{')='{' or not(@close))">
106
<xsl:text>\left.</xsl:text>
107
</xsl:if>
108
<xsl:value-of select="@open"/>
109
</xsl:when>
110
<xsl:otherwise><xsl:text>\left(</xsl:text></xsl:otherwise>
111
</xsl:choose>
112
<xsl:variable name="sep">
113
<xsl:choose>
114
<xsl:when test="@separators">
115
<xsl:value-of select="translate(@separators,' ','')"/>
116
</xsl:when>
117
<xsl:otherwise>,</xsl:otherwise>
118
</xsl:choose>
119
</xsl:variable>
120
<xsl:for-each select="./*">
121
<xsl:apply-templates select="."/>
122
<xsl:if test="not(position()=last())">
123
<xsl:choose>
124
<xsl:when test="position()>string-length($sep)">
125
<xsl:value-of select="substring($sep,string-length($sep))"/>
126
</xsl:when>
127
<xsl:otherwise>
128
<xsl:value-of select="substring($sep,position(),1)"/>
129
</xsl:otherwise>
130
</xsl:choose>
131
</xsl:if>
132
</xsl:for-each>
133
<xsl:choose>
134
<xsl:when test="@close">
135
<xsl:if test="translate(@close,'{}[]()|','{{{{{{{')='{'">
136
<xsl:text>\right</xsl:text>
137
</xsl:if>
138
<xsl:if test="@close='{' or @close='}'">
139
<xsl:text>\</xsl:text>
140
</xsl:if>
141
<xsl:if test="translate(@close,'{}[]()|','{{{{{{{')!='{' and (translate(@open,'{}[]()|','{{{{{{{')='{' or not(@open))">
142
<xsl:text>\right.</xsl:text>
143
</xsl:if>
144
<xsl:value-of select="@close"/>
145
</xsl:when>
146
<xsl:otherwise><xsl:text>\right)</xsl:text></xsl:otherwise>
147
</xsl:choose>
148
</xsl:template>
149
150
<xsl:template match="m:mphantom">
151
<xsl:text>\phantom{</xsl:text>
152
<xsl:apply-templates/>
153
<xsl:text>}</xsl:text>
154
</xsl:template>
155
156
<xsl:template match="m:menclose">
157
<xsl:choose>
158
<xsl:when test="@notation = 'actuarial'">
159
<xsl:text>\overline{</xsl:text>
160
<xsl:apply-templates/>
161
<xsl:text>\hspace{.2em}|}</xsl:text>
162
</xsl:when>
163
<xsl:when test="@notation = 'radical'">
164
<xsl:text>\sqrt{</xsl:text>
165
<xsl:apply-templates/>
166
<xsl:text>}</xsl:text>
167
</xsl:when>
168
<xsl:otherwise>
169
<xsl:text>\overline{)</xsl:text>
170
<xsl:apply-templates/>
171
<xsl:text>}</xsl:text>
172
</xsl:otherwise>
173
</xsl:choose>
174
</xsl:template>
175
176
<xsl:template match="m:mrow">
177
<xsl:apply-templates/>
178
</xsl:template>
179
180
<xsl:template match="m:mstyle">
181
<!--
182
===========================
183
vismor
184
===========================
185
-->
186
<xsl:if test="@mathvariant='bold'">
187
<xsl:text>\mathbf{</xsl:text>
188
</xsl:if>
189
<!--
190
===========================
191
-->
192
<xsl:if test="@displaystyle='true'">
193
<xsl:text>{\displaystyle </xsl:text>
194
</xsl:if>
195
<xsl:if test="@scriptlevel and not(@displaystyle='true')">
196
<xsl:text>{</xsl:text>
197
<xsl:choose>
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>
201
</xsl:choose>
202
</xsl:if>
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"/>
207
</xsl:call-template>
208
<xsl:text>}{$</xsl:text>
209
</xsl:if>
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"/>
214
</xsl:call-template>
215
<xsl:text>}{</xsl:text>
216
</xsl:if>
217
<xsl:apply-templates/>
218
<!--
219
===========================
220
vismor
221
===========================
222
-->
223
<xsl:if test="@mathvariant='bold'">
224
<xsl:text>}</xsl:text>
225
</xsl:if>
226
<!--
227
===========================
228
-->
229
<xsl:if test="@color[not(@mathcolor)] or @mathcolor">
230
<xsl:text>}</xsl:text>
231
</xsl:if>
232
<xsl:if test="@background">
233
<xsl:text>$}</xsl:text>
234
</xsl:if>
235
<xsl:if test="@scriptlevel and not(@displaystyle='true')">
236
<xsl:text>}</xsl:text>
237
</xsl:if>
238
<xsl:if test="@displaystyle='true'">
239
<xsl:text>}</xsl:text>
240
</xsl:if>
241
</xsl:template>
242
243
<xsl:template match="m:merror">
244
<xsl:apply-templates/>
245
</xsl:template>
246
247
</xsl:stylesheet>