mathtype_to_mathml 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -0
  3. data/lib/mathtype_to_mathml.rb +1 -1
  4. data/lib/mathtype_to_mathml/char_replacer.rb +60 -5
  5. data/lib/mathtype_to_mathml/version.rb +1 -1
  6. data/lib/transform.xsl +20 -41
  7. data/lib/xsl/box.xsl +42 -0
  8. data/lib/xsl/char.xsl +1820 -1
  9. data/lib/xsl/fence.xsl +228 -0
  10. data/lib/xsl/frac.xsl +46 -0
  11. data/lib/xsl/int.xsl +622 -0
  12. data/lib/xsl/lim.xsl +32 -0
  13. data/lib/xsl/product_coproduct.xsl +107 -0
  14. data/lib/xsl/sum.xsl +24 -0
  15. data/mathtype_to_mathml.gemspec +1 -1
  16. data/spec/fixtures/expected/280.xml +122 -0
  17. data/spec/fixtures/expected/281.xml +61 -0
  18. data/spec/fixtures/expected/299.xml +70 -0
  19. data/spec/fixtures/expected/326.xml +173 -0
  20. data/spec/fixtures/expected/424.xml +425 -0
  21. data/spec/fixtures/expected/450.xml +174 -0
  22. data/spec/fixtures/expected/452.xml +166 -0
  23. data/spec/fixtures/expected/478.xml +303 -0
  24. data/spec/fixtures/expected/boxes.xml +22 -0
  25. data/spec/fixtures/expected/equation14.xml +54 -0
  26. data/spec/fixtures/expected/fences.xml +64 -0
  27. data/spec/fixtures/expected/integrals.xml +264 -0
  28. data/spec/fixtures/expected/sums.xml +36 -0
  29. data/spec/fixtures/expected/unions_and_intersections.xml +140 -0
  30. data/spec/fixtures/input/280.bin +0 -0
  31. data/spec/fixtures/input/281.bin +0 -0
  32. data/spec/fixtures/input/299.bin +0 -0
  33. data/spec/fixtures/input/326.bin +0 -0
  34. data/spec/fixtures/input/424.bin +0 -0
  35. data/spec/fixtures/input/450.bin +0 -0
  36. data/spec/fixtures/input/452.bin +0 -0
  37. data/spec/fixtures/input/478.bin +0 -0
  38. data/spec/fixtures/input/boxes.bin +0 -0
  39. data/spec/fixtures/input/equation14.bin +0 -0
  40. data/spec/fixtures/input/fences.bin +0 -0
  41. data/spec/fixtures/input/integrals.bin +0 -0
  42. data/spec/fixtures/input/sums.bin +0 -0
  43. data/spec/fixtures/input/unions_and_intersections.bin +0 -0
  44. metadata +66 -5
  45. data/lib/xsl/brace.xsl +0 -55
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c01e41b7c35f3c71aa5cc88424320297a1d5366d
4
- data.tar.gz: bd36ef37f1900eca7617503bcd6c84ab79ad7755
3
+ metadata.gz: 17cab52ea3c308d35a1e56d0e58b715f8aa4c4be
4
+ data.tar.gz: db696399f4eab83c8c150871b3ef197c6de71815
5
5
  SHA512:
6
- metadata.gz: 4d116d2674ee17634a20e1dbc02f9a92e188ab30940d6f5ffa8cf8f99863d0d857351d57474020f4b7c41bd1d422785683ec2f0a66fe683585a9145581933567
7
- data.tar.gz: d9668ff0ccc786b75833175b953d086d881d0ab9230ba683d29fcac1dcc18b19c0419aa001fbb468d4f5e26acaee9d29330a1a81776b24747bc90c8af88fc18f
6
+ metadata.gz: afdcbf5a2544b53472abf222084128d93a11f90e66a46efe2d557eb218daa28e7ae3f341a404d7ff6acdfc1d8a21fbe7bd9864eb74455d0eef29a0b3f304d615
7
+ data.tar.gz: 4add42ec2b72a89b36e099e58b98a6954acd22503c5510d5416b0989afaa93d5ab14e1b48b12d5f01c2d7f35087f61f69167c42be4d487212e26b51e4df39eaf
data/Gemfile CHANGED
@@ -4,3 +4,4 @@ source 'https://rubygems.org'
4
4
  # Specify your gem's dependencies in mathtype_to_mathml.gemspec
5
5
 
6
6
  gemspec
7
+
@@ -8,7 +8,7 @@ require "pry"
8
8
  module MathTypeToMathML
9
9
  class Converter
10
10
  def initialize(mathtype)
11
- @xslt = Nokogiri::XSLT(File.read("lib/transform.xsl"))
11
+ @xslt = Nokogiri::XSLT(File.open("lib/transform.xsl"))
12
12
 
13
13
  @mathtype = Mathtype::Converter.new(mathtype).xml.doc
14
14
 
@@ -2,12 +2,63 @@ require "nokogiri"
2
2
 
3
3
  # XSLT 1.0 has virtually non-existent capabilities for character ranges,
4
4
  # codepoints, hex to decimal, etc., so we replace characters within character
5
- # ranges with Ruby. Single character translations are still done with XSLT.
5
+ # ranges with Ruby. Additonally, it's not possible to get the actual character
6
+ # represented by a hexadecimal number in XSLT, so we deal with those here too.
7
+ # Regular single character translations are still done with XSLT (char.xsl).
8
+
9
+
10
+
6
11
 
7
12
  module MathTypeToMathML
8
13
  class CharReplacer
9
14
  UNSUPPORTED = "Unsupported (Char)"
15
+
16
+ DEFAULT_TEXTMODE = "(Char)"
17
+ DEFAULT_MATHMODE = "<mi>(Char)<mi>"
18
+
10
19
  REPLACEMENTS = {
20
+ 0x0021 => { # Exclamation mark
21
+ mathmode: "<mo>(Char)</mo>"
22
+ },
23
+ 0x0028 => { # Left parenthesis
24
+ mathmode: "<mo stretchy='false'>(Char)</mo>"
25
+ },
26
+ 0x0029 => { # Right parenthesis
27
+ mathmode: "<mo stretchy='false'>(Char)</mo>"
28
+ },
29
+ 0x002A => { # Asterisk
30
+ mathmode: "<mo>(Char)</mo>"
31
+ },
32
+ 0x002B => { # Plus sign
33
+ mathmode: "<mo>(Char)</mo>"
34
+ },
35
+ 0x002C => { # Plus sign
36
+ mathmode: "<mo>(Char)</mo>"
37
+ },
38
+ 0x002D => { # Hyphen-minus
39
+ mathmode: "<mo>(Char)</mo>"
40
+ },
41
+ 0x002E => { # Full stop
42
+ mathmode: "<mo>(Char)</mo>"
43
+ },
44
+ 0x002F => { # Solidus
45
+ mathmode: "<mo>(Char)</mo>"
46
+ },
47
+ 0x003D => { # Equals sign
48
+ mathmode: "<mo>(Char)</mo>"
49
+ },
50
+ 0x003F => { # Question mark
51
+ mathmode: "<mo>(Char)</mo>"
52
+ },
53
+ 0x005B => { # Left square bracket
54
+ mathmode: "<mo stretchy='false'>(Char)</mo>"
55
+ },
56
+ 0x005D => { # Right square bracket
57
+ mathmode: "<mo stretchy='false'>(Char)</mo>"
58
+ },
59
+ 0x007E => { # Tilda
60
+ mathmode: "<mo>(Char)</mo>"
61
+ },
11
62
  0x0000..0x0008 => {
12
63
  mathmode: UNSUPPORTED,
13
64
  textmode: UNSUPPORTED
@@ -274,7 +325,6 @@ module MathTypeToMathML
274
325
 
275
326
  def initialize(mathtype)
276
327
  @mathtype = mathtype
277
-
278
328
  end
279
329
 
280
330
  def replace
@@ -284,13 +334,18 @@ module MathTypeToMathML
284
334
  end
285
335
  replace_character(replacement, char) if replacement
286
336
  end
337
+
338
+ # Reparse XML to merge adjacent text nodes
339
+ @mathtype = Nokogiri::XML(@mathtype.to_xml)
287
340
  end
288
341
 
289
342
  def replace_character(replacement, char)
290
343
  if char.xpath("variation = 'textmode'")
291
- xml = replacement_xml(replacement[1][:textmode], char)
344
+ replacement = replacement[1][:textmode] || DEFAULT_TEXTMODE
345
+ xml = replacement_xml(replacement, char)
292
346
  else
293
- xml = replacement_xml(replacement[1][:mathmode], char)
347
+ replacement = replacement[1][:mathmode] || DEFAULT_MATHMODE
348
+ xml = replacement_xml(replacement, char)
294
349
  end
295
350
 
296
351
  char.replace Nokogiri::HTML::DocumentFragment.parse(xml)
@@ -298,7 +353,7 @@ module MathTypeToMathML
298
353
 
299
354
  def replacement_xml(string, char)
300
355
  string.gsub("(Char)") do
301
- char.xpath("mt_code_value").text.hex.chr # e.g. π
356
+ char.xpath("mt_code_value").text.hex.chr("UTF-8") # e.g. π
302
357
  end.gsub("(CharHex)") do
303
358
  "&#x#{char.xpath('mt_code_value').text[2..-1]};" # e.g. &#x2229;
304
359
  end
@@ -1,3 +1,3 @@
1
1
  module MathTypeToMathML
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/lib/transform.xsl CHANGED
@@ -26,44 +26,17 @@
26
26
  </mrow>
27
27
  </xsl:template>
28
28
 
29
+ <!-- Non-empty text nodes -->
30
+ <xsl:template match="text()[normalize-space()]">
31
+ <xsl:value-of select="."/>
32
+ </xsl:template>
33
+
29
34
  <xsl:template match="tmpl[selector = 'tmROOT']">
30
35
  <msqrt>
31
36
  <xsl:apply-templates/>
32
37
  </msqrt>
33
38
  </xsl:template>
34
39
 
35
- <xsl:template match="char[typeface = '2']">
36
- <mn>
37
- <xsl:text disable-output-escaping="yes">&amp;#</xsl:text>
38
- <xsl:value-of select="substring(mt_code_value/text(), 2)"/>
39
- <xsl:text>;</xsl:text>
40
- </mn>
41
- </xsl:template>
42
-
43
- <xsl:template match="char[typeface = '8']">
44
- <mn>
45
- <xsl:text disable-output-escaping="yes">&amp;#</xsl:text>
46
- <xsl:value-of select="substring(mt_code_value/text(), 2)"/>
47
- <xsl:text>;</xsl:text>
48
- </mn>
49
- </xsl:template>
50
-
51
- <xsl:template match="char[typeface = '3']">
52
- <mi>
53
- <xsl:text disable-output-escaping="yes">&amp;#</xsl:text>
54
- <xsl:value-of select="substring(mt_code_value/text(), 2)"/>
55
- <xsl:text>;</xsl:text>
56
- </mi>
57
- </xsl:template>
58
-
59
- <xsl:template match="char[typeface = '6']">
60
- <mo>
61
- <xsl:text disable-output-escaping="yes">&amp;#</xsl:text>
62
- <xsl:value-of select="substring(mt_code_value/text(), 2)"/>
63
- <xsl:text>;</xsl:text>
64
- </mo>
65
- </xsl:template>
66
-
67
40
  <xsl:template match="*" />
68
41
 
69
42
  <xsl:template match="tmpl[selector='tmROOT' and variation='tvROOT_NTH']">
@@ -90,15 +63,21 @@
90
63
  <mo>)</mo></mrow>
91
64
  </xsl:template>
92
65
 
93
- <xsl:include href="lib/xsl/pile.xsl" />
94
- <xsl:include href="lib/xsl/char.xsl" />
95
- <xsl:include href="lib/xsl/embellishment.xsl" />
96
- <xsl:include href="lib/xsl/subsup.xsl"/>
97
- <xsl:include href="lib/xsl/sum.xsl"/>
98
- <xsl:include href="lib/xsl/union_intersection.xsl"/>
99
- <xsl:include href="lib/xsl/arrow.xsl"/>
100
- <xsl:include href="lib/xsl/matrix.xsl"/>
101
- <xsl:include href="lib/xsl/brace.xsl"/>
66
+
67
+ <xsl:include href="xsl/int.xsl" />
68
+ <xsl:include href="xsl/lim.xsl" />
69
+ <xsl:include href="xsl/frac.xsl" />
70
+ <xsl:include href="xsl/pile.xsl" />
71
+ <xsl:include href="xsl/char.xsl" />
72
+ <xsl:include href="xsl/embellishment.xsl" />
73
+ <xsl:include href="xsl/subsup.xsl"/>
74
+ <xsl:include href="xsl/sum.xsl"/>
75
+ <xsl:include href="xsl/product_coproduct.xsl"/>
76
+ <xsl:include href="xsl/union_intersection.xsl"/>
77
+ <xsl:include href="xsl/box.xsl" />
78
+ <xsl:include href="xsl/fence.xsl" />
79
+ <xsl:include href="xsl/arrow.xsl"/>
80
+ <xsl:include href="xsl/matrix.xsl"/>
102
81
 
103
82
 
104
83
  </xsl:stylesheet>
data/lib/xsl/box.xsl ADDED
@@ -0,0 +1,42 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
4
+ exclude-result-prefixes="xs"
5
+ version="1.0">
6
+
7
+ <!-- Boxes -->
8
+
9
+ <xsl:template match="tmpl[selector='tmBOX' and (variation='tvBX_TOP' and variation='tvBX_LEFT')]">
10
+ <menclose notation="top left">
11
+ <xsl:apply-templates select="slot[1]"/>
12
+ </menclose>
13
+ </xsl:template>
14
+
15
+
16
+ <xsl:template match="tmpl[selector='tmBOX' and (variation='tvBX_TOP' and variation='tvBX_RIGHT')]">
17
+ <menclose notation="actuarial">
18
+ <xsl:apply-templates select="slot[1]"/>
19
+ </menclose>
20
+ </xsl:template>
21
+
22
+
23
+ <xsl:template match="tmpl[selector='tmBOX' and (variation='tvBX_BOTTOM' and variation='tvBX_LEFT')]">
24
+ <menclose notation="bottom left">
25
+ <xsl:apply-templates select="slot[1]"/>
26
+ </menclose>
27
+ </xsl:template>
28
+
29
+
30
+ <xsl:template match="tmpl[selector='tmBOX' and (variation='tvBX_BOTTOM' and variation='tvBX_RIGHT')]">
31
+ <menclose notation="bottom right">
32
+ <xsl:apply-templates select="slot[1]"/>
33
+ </menclose>
34
+ </xsl:template>
35
+
36
+ <xsl:template match="tmpl[selector='tmBOX' and variation='tvBX_TOP' and variation='tvBX_BOTTOM' and variation='tvBX_LEFT' and variation='tvBX_RIGHT']">
37
+ <menclose notation="box">
38
+ <xsl:apply-templates select="slot[1]"/>
39
+ </menclose>
40
+ </xsl:template>
41
+
42
+ </xsl:stylesheet>
data/lib/xsl/char.xsl CHANGED
@@ -8,7 +8,61 @@
8
8
  <xsl:copy-of select="."/>
9
9
  </xsl:template>
10
10
 
11
- <xsl:template match="char[mt_code_value='0x2026']">
11
+ <xsl:template name="charhex">
12
+ <xsl:param name="mt_code_value"/>
13
+ <xsl:text disable-output-escaping="yes">&amp;#</xsl:text>
14
+ <xsl:value-of select="substring($mt_code_value, 2)"/>
15
+ <xsl:text>;</xsl:text>
16
+ </xsl:template>
17
+
18
+ <!-- Default char translation for mathmode -->
19
+ <xsl:template match="char[not(variation) or variation != 'textmode']">
20
+ <mi>
21
+ <xsl:call-template name="charhex">
22
+ <xsl:with-param name="mt_code_value" select="mt_code_value/text()" />
23
+ </xsl:call-template>
24
+ </mi>
25
+ </xsl:template>
26
+
27
+ <xsl:template match="char[variation = 'textmode']">
28
+ <xsl:call-template name="charhex">
29
+ <xsl:with-param name="mt_code_value" select="mt_code_value/text()" />
30
+ </xsl:call-template>
31
+ </xsl:template>
32
+
33
+ <xsl:template match="char[typeface = '2']">
34
+ <mn>
35
+ <xsl:call-template name="charhex">
36
+ <xsl:with-param name="mt_code_value" select="mt_code_value/text()" />
37
+ </xsl:call-template>
38
+ </mn>
39
+ </xsl:template>
40
+
41
+ <xsl:template match="char[typeface = '8']">
42
+ <mn>
43
+ <xsl:call-template name="charhex">
44
+ <xsl:with-param name="mt_code_value" select="mt_code_value/text()" />
45
+ </xsl:call-template>
46
+ </mn>
47
+ </xsl:template>
48
+
49
+ <xsl:template match="char[typeface = '3']">
50
+ <mi>
51
+ <xsl:call-template name="charhex">
52
+ <xsl:with-param name="mt_code_value" select="mt_code_value/text()" />
53
+ </xsl:call-template>
54
+ </mi>
55
+ </xsl:template>
56
+
57
+ <xsl:template match="char[typeface = '6']">
58
+ <mo>
59
+ <xsl:call-template name="charhex">
60
+ <xsl:with-param name="mt_code_value" select="mt_code_value/text()" />
61
+ </xsl:call-template>
62
+ </mo>
63
+ </xsl:template>
64
+
65
+ <!-- <xsl:template match="char[mt_code_value='0x2026']">
12
66
  <mo>&#x2026;</mo>
13
67
  </xsl:template>
14
68
 
@@ -30,6 +84,1771 @@
30
84
 
31
85
  <xsl:template match="char[mt_code_value='0x03B8' ]">
32
86
  <mi>θ</mi>
87
+ </xsl:template> -->
88
+
89
+ <!-- All Char rules -->
90
+
91
+ <!-- HORIZONTAL TABULATION -->
92
+ <xsl:template match="char[mt_code_value='0x0009' and variation='mathmode']">
93
+ <mtext>
94
+ <xsl:call-template name="charhex">
95
+ <xsl:with-param name="mt_code_value" select="mt_code_value/text()"/>
96
+ </xsl:call-template>
97
+ </mtext>
98
+ </xsl:template>
99
+
100
+ <!-- LINE FEED -->
101
+ <xsl:template match="char[mt_code_value='0x000A' and variation='mathmode']">
102
+ <mtext>
103
+ <xsl:call-template name="charhex">
104
+ <xsl:with-param name="mt_code_value" select="mt_code_value/text()"/>
105
+ </xsl:call-template>
106
+ </mtext>
107
+ </xsl:template>
108
+
109
+ <!-- SPACE -->
110
+ <xsl:template match="char[mt_code_value='0x0020' and variation='textmode']">
111
+ <xsl:text disable-output-escaping="yes">&amp;#x00A0;</xsl:text>
112
+ </xsl:template>
113
+
114
+ <!-- QUOTATION MARK -->
115
+ <xsl:template match="char[mt_code_value='0x0022' and variation='mathmode']">
116
+ <mo>
117
+ <xsl:call-template name="charhex">
118
+ <xsl:with-param name="mt_code_value" select="mt_code_value/text()"/>
119
+ </xsl:call-template>
120
+ </mo>
121
+ </xsl:template>
122
+
123
+ <!-- NUMBER SIGN -->
124
+ <xsl:template match="char[mt_code_value='0x0023' and variation='mathmode']">
125
+ <mo>
126
+ <xsl:call-template name="charhex">
127
+ <xsl:with-param name="mt_code_value" select="mt_code_value/text()"/>
128
+ </xsl:call-template>
129
+ </mo>
130
+ </xsl:template>
131
+
132
+ <!-- AMPERSAND -->
133
+ <xsl:template match="char[mt_code_value='0x0026' and variation='mathmode']">
134
+ <mo>
135
+ <xsl:call-template name="charhex">
136
+ <xsl:with-param name="mt_code_value" select="mt_code_value/text()"/>
137
+ </xsl:call-template>
138
+ </mo>
139
+ </xsl:template>
140
+
141
+ <!-- APOSTROPHE -->
142
+ <xsl:template match="char[mt_code_value='0x0027' and variation='mathmode']">
143
+ <mo>
144
+ <xsl:call-template name="charhex">
145
+ <xsl:with-param name="mt_code_value" select="mt_code_value/text()"/>
146
+ </xsl:call-template>
147
+ </mo>
148
+ </xsl:template>
149
+
150
+ <!-- LESS-THAN SIGN -->
151
+ <xsl:template match="char[mt_code_value='0x003C' and variation='mathmode']">
152
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x003C;</xsl:text></mo>
153
+ </xsl:template>
154
+
155
+ <!-- GREATER-THAN SIGN -->
156
+ <xsl:template match="char[mt_code_value='0x003E' and variation='mathmode']">
157
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x003E;</xsl:text></mo>
158
+ </xsl:template>
159
+
160
+ <!-- COMMERCIAL AT -->
161
+ <xsl:template match="char[mt_code_value='0x0040' and variation='mathmode']">
162
+ <mo>
163
+ <xsl:call-template name="charhex">
164
+ <xsl:with-param name="mt_code_value" select="mt_code_value/text()"/>
165
+ </xsl:call-template>
166
+ </mo>
167
+ </xsl:template>
168
+
169
+ <!-- REVERSE SOLIDUS -->
170
+ <xsl:template match="char[mt_code_value='0x005C' and variation='mathmode']">
171
+ <mo>
172
+ <xsl:call-template name="charhex">
173
+ <xsl:with-param name="mt_code_value" select="mt_code_value/text()"/>
174
+ </xsl:call-template>
175
+ </mo>
176
+ </xsl:template>
177
+
178
+ <!-- CIRCUMFLEX ACCENT -->
179
+ <xsl:template match="char[mt_code_value='0x005E' and variation='mathmode']">
180
+ <mo>
181
+ <xsl:call-template name="charhex">
182
+ <xsl:with-param name="mt_code_value" select="mt_code_value/text()"/>
183
+ </xsl:call-template>
184
+ </mo>
185
+ </xsl:template>
186
+
187
+ <!-- LOW LINE -->
188
+ <xsl:template match="char[mt_code_value='0x005F' and variation='mathmode']">
189
+ <mo>
190
+ <xsl:call-template name="charhex">
191
+ <xsl:with-param name="mt_code_value" select="mt_code_value/text()"/>
192
+ </xsl:call-template>
193
+ </mo>
194
+ </xsl:template>
195
+
196
+ <!-- GRAVE ACCENT -->
197
+ <xsl:template match="char[mt_code_value='0x0060' and variation='mathmode']">
198
+ <mo>
199
+ <xsl:call-template name="charhex">
200
+ <xsl:with-param name="mt_code_value" select="mt_code_value/text()"/>
201
+ </xsl:call-template>
202
+ </mo>
203
+ </xsl:template>
204
+
205
+ <!-- LEFT CURLY BRACKET -->
206
+ <xsl:template match="char[mt_code_value='0x007B' and variation='mathmode']">
207
+ <mo>
208
+ <xsl:call-template name="charhex">
209
+ <xsl:with-param name="mt_code_value" select="mt_code_value/text()"/>
210
+ </xsl:call-template>
211
+ </mo>
212
+ </xsl:template>
213
+
214
+ <!-- VERTICAL LINE -->
215
+ <xsl:template match="char[mt_code_value='0x007C' and variation='mathmode']">
216
+ <mo>
217
+ <xsl:call-template name="charhex">
218
+ <xsl:with-param name="mt_code_value" select="mt_code_value/text()"/>
219
+ </xsl:call-template>
220
+ </mo>
221
+ </xsl:template>
222
+
223
+ <!-- RIGHT CURLY BRACKET -->
224
+ <xsl:template match="char[mt_code_value='0x007D' and variation='mathmode']">
225
+ <mo>
226
+ <xsl:call-template name="charhex">
227
+ <xsl:with-param name="mt_code_value" select="mt_code_value/text()"/>
228
+ </xsl:call-template>
229
+ </mo>
230
+ </xsl:template>
231
+
232
+ <!-- UNSUPPORTED: DELETE -->
233
+ <xsl:template match="char[mt_code_value='0x007F']">
234
+ <xsl:text>Unsupported character</xsl:text>
235
+ </xsl:template>
236
+
237
+ <!-- range: Latin-1 Supplement -->
238
+ <xsl:template match="char[mt_code_value='0x00B1' and variation='mathmode']">
239
+ <mo>
240
+ <xsl:call-template name="charhex">
241
+ <xsl:with-param name="mt_code_value" select="mt_code_value/text()"/>
242
+ </xsl:call-template>
243
+ </mo>
244
+ </xsl:template>
245
+
246
+
247
+ <!-- INVERTED QUESTION MARK -->
248
+ <xsl:template match="char[mt_code_value='0x00BF' and variation='mathmode']">
249
+ <mo>
250
+ <xsl:call-template name="charhex">
251
+ <xsl:with-param name="mt_code_value" select="mt_code_value/text()"/>
252
+ </xsl:call-template>
253
+ </mo>
254
+ </xsl:template>
255
+
256
+ <!-- MULTIPLICATION SIGN -->
257
+ <xsl:template match="char[mt_code_value='0x00D7' and variation='mathmode']">
258
+ <mo>
259
+ <xsl:call-template name="charhex">
260
+ <xsl:with-param name="mt_code_value" select="mt_code_value/text()"/>
261
+ </xsl:call-template>
262
+ </mo>
263
+ </xsl:template>
264
+
265
+ <!-- DIVISION SIGN -->
266
+ <xsl:template match="char[mt_code_value='0x00F7' and variation='mathmode']">
267
+ <mo>
268
+ <xsl:call-template name="charhex">
269
+ <xsl:with-param name="mt_code_value" select="mt_code_value/text()"/>
270
+ </xsl:call-template>
271
+ </mo>
272
+ </xsl:template>
273
+
274
+ <!-- DOUBLE-STRUCK CAPITAL C -->
275
+ <xsl:template match="char[mt_code_value='0x2102' and variation='mathmode']">
276
+ <mi>
277
+ <xsl:call-template name="charhex">
278
+ <xsl:with-param name="mt_code_value" select="mt_code_value/text()"/>
279
+ </xsl:call-template>
280
+ </mi>
281
+ </xsl:template>
282
+
283
+
284
+ <!-- PLUS ABOVE EQUALS -->
285
+ <xsl:template match="char[mt_code_value='0xE901' and variation='mathmode']">
286
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x2A72;</xsl:text></mo>
287
+ </xsl:template>
288
+
289
+ <!-- PLUS ABOVE EQUALS -->
290
+ <xsl:template match="char[mt_code_value='0xE901' and variation='textmode']">
291
+ <xsl:text disable-output-escaping="yes">&amp;#x2A72;</xsl:text>
292
+ </xsl:template>
293
+
294
+ <!-- PLUS BELOW EQUALS -->
295
+ <xsl:template match="char[mt_code_value='0xE902' and variation='mathmode']">
296
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x2A71;</xsl:text></mo>
297
+ </xsl:template>
298
+
299
+ <!-- PLUS BELOW EQUALS -->
300
+ <xsl:template match="char[mt_code_value='0xE902' and variation='textmode']">
301
+ <xsl:text disable-output-escaping="yes">&amp;#x2A71;</xsl:text>
302
+ </xsl:template>
303
+
304
+ <!-- PLUS ABOVE TILDE -->
305
+ <xsl:template match="char[mt_code_value='0xE903' and variation='mathmode']">
306
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x2A26;</xsl:text></mo>
307
+ </xsl:template>
308
+
309
+ <!-- PLUS ABOVE TILDE -->
310
+ <xsl:template match="char[mt_code_value='0xE903' and variation='textmode']">
311
+ <xsl:text disable-output-escaping="yes">&amp;#x2A26;</xsl:text>
312
+ </xsl:template>
313
+
314
+ <!-- PLUS BELOW TILDE -->
315
+ <xsl:template match="char[mt_code_value='0xE904' and variation='mathmode']">
316
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x2A24;</xsl:text></mo>
317
+ </xsl:template>
318
+
319
+ <!-- PLUS BELOW TILDE -->
320
+ <xsl:template match="char[mt_code_value='0xE904' and variation='textmode']">
321
+ <xsl:text disable-output-escaping="yes">&amp;#x2A24;</xsl:text>
322
+ </xsl:template>
323
+
324
+ <!-- SUPERSET OF OR EQUAL TO (DOUBLE) -->
325
+ <xsl:template match="char[mt_code_value='0xE90B' and variation='mathmode']">
326
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x2287;</xsl:text></mo>
327
+ </xsl:template>
328
+
329
+ <!-- SUPERSET OF OR EQUAL TO (DOUBLE) -->
330
+ <xsl:template match="char[mt_code_value='0xE90B' and variation='textmode']">
331
+ <xsl:text disable-output-escaping="yes">&amp;#x2287;</xsl:text>
332
+ </xsl:template>
333
+
334
+ <!-- SUBSET OF OR EQUAL TO (DOUBLE) -->
335
+ <xsl:template match="char[mt_code_value='0xE90C' and variation='mathmode']">
336
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x2286;</xsl:text></mo>
337
+ </xsl:template>
338
+
339
+ <!-- SUBSET OF OR EQUAL TO (DOUBLE) -->
340
+ <xsl:template match="char[mt_code_value='0xE90C' and variation='textmode']">
341
+ <xsl:text disable-output-escaping="yes">&amp;#x2286;</xsl:text>
342
+ </xsl:template>
343
+
344
+ <!-- LESS-THAN EQUAL TO (DOUBLE) OR GREATER-THAN -->
345
+ <xsl:template match="char[mt_code_value='0xE922' and variation='mathmode']">
346
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x22DA;</xsl:text></mo>
347
+ </xsl:template>
348
+
349
+ <!-- LESS-THAN EQUAL TO (DOUBLE) OR GREATER-THAN -->
350
+ <xsl:template match="char[mt_code_value='0xE922' and variation='textmode']">
351
+ <xsl:text disable-output-escaping="yes">&amp;#x22DA;</xsl:text>
352
+ </xsl:template>
353
+
354
+ <!-- UNSUPPORTED: EQUIVALENT TO OR GREATER-THAN -->
355
+ <xsl:template match="char[mt_code_value='0xE923' and variation='mathmode']">
356
+ <xsl:text>Unsupported character</xsl:text>
357
+ </xsl:template>
358
+
359
+ <!-- UNSUPPORTED: EQUIVALENT TO OR GREATER-THAN -->
360
+ <xsl:template match="char[mt_code_value='0xE923' and variation='textmode']">
361
+ <xsl:text>Unsupported character</xsl:text>
362
+ </xsl:template>
363
+
364
+ <!-- TILDE WITH DOT -->
365
+ <xsl:template match="char[mt_code_value='0xE924' and variation='mathmode']">
366
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x2A6A;</xsl:text></mo>
367
+ </xsl:template>
368
+
369
+ <!-- TILDE WITH DOT -->
370
+ <xsl:template match="char[mt_code_value='0xE924' and variation='textmode']">
371
+ <xsl:text disable-output-escaping="yes">&amp;#x2A6A;</xsl:text>
372
+ </xsl:template>
373
+
374
+ <!-- TILDE WITH TWO DOTS -->
375
+ <xsl:template match="char[mt_code_value='0xE925' and variation='mathmode']">
376
+ <mover accent='true'><mo><xsl:text disable-output-escaping="yes">&amp;#x223B;</xsl:text></mo><mo><xsl:text disable-output-escaping="yes">&amp;#x00A8;</xsl:text></mo></mover>
377
+ </xsl:template>
378
+
379
+ <!-- UNSUPPORTED: TILDE WITH TWO DOTS -->
380
+ <xsl:template match="char[mt_code_value='0xE925' and variation='textmode']">
381
+ <xsl:text>Unsupported character</xsl:text>
382
+ </xsl:template>
383
+
384
+ <!-- GREATER-THAN EQUAL TO (DOUBLE) OR LESS-THAN -->
385
+ <xsl:template match="char[mt_code_value='0xE92D' and variation='mathmode']">
386
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x22DB;</xsl:text></mo>
387
+ </xsl:template>
388
+
389
+ <!-- GREATER-THAN EQUAL TO (DOUBLE) OR LESS-THAN -->
390
+ <xsl:template match="char[mt_code_value='0xE92D' and variation='textmode']">
391
+ <xsl:text disable-output-escaping="yes">&amp;#x22DB;</xsl:text>
392
+ </xsl:template>
393
+
394
+ <!-- LESS-THAN OR APPROXIMATELY EQUAL TO -->
395
+ <xsl:template match="char[mt_code_value='0xE932' and variation='mathmode']">
396
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x2272;</xsl:text></mo>
397
+ </xsl:template>
398
+
399
+ <!-- LESS-THAN OR APPROXIMATELY EQUAL TO -->
400
+ <xsl:template match="char[mt_code_value='0xE932' and variation='textmode']">
401
+ <xsl:text disable-output-escaping="yes">&amp;#x2272;</xsl:text>
402
+ </xsl:template>
403
+
404
+ <!-- GREATER-THAN OR APPROXIMATELY EQUAL TO -->
405
+ <xsl:template match="char[mt_code_value='0xE933' and variation='mathmode']">
406
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x2273;</xsl:text></mo>
407
+ </xsl:template>
408
+
409
+ <!-- GREATER-THAN OR APPROXIMATELY EQUAL TO -->
410
+ <xsl:template match="char[mt_code_value='0xE933' and variation='textmode']">
411
+ <xsl:text disable-output-escaping="yes">&amp;#x2273;</xsl:text>
412
+ </xsl:template>
413
+
414
+ <!-- PRECEDES OR EQUIVALENT TO (DOUBLE) -->
415
+ <xsl:template match="char[mt_code_value='0xE93A' and variation='mathmode']">
416
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x227E;</xsl:text></mo>
417
+ </xsl:template>
418
+
419
+ <!-- PRECEDES OR EQUIVALENT TO (DOUBLE) -->
420
+ <xsl:template match="char[mt_code_value='0xE93A' and variation='textmode']">
421
+ <xsl:text disable-output-escaping="yes">&amp;#x227E;</xsl:text>
422
+ </xsl:template>
423
+
424
+ <!-- SUCCEEDS OR EQUIVALENT TO (DOUBLE) -->
425
+ <xsl:template match="char[mt_code_value='0xE93B' and variation='mathmode']">
426
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x227F;</xsl:text></mo>
427
+ </xsl:template>
428
+
429
+ <!-- SUCCEEDS OR EQUIVALENT TO (DOUBLE) -->
430
+ <xsl:template match="char[mt_code_value='0xE93B' and variation='textmode']">
431
+ <xsl:text disable-output-escaping="yes">&amp;#x227F;</xsl:text>
432
+ </xsl:template>
433
+
434
+ <!-- MEDIUM DOT OPERATOR (FREE RADICAL) -->
435
+ <xsl:template match="char[mt_code_value='0xE98F' and variation='mathmode']">
436
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x00B7;</xsl:text></mo>
437
+ </xsl:template>
438
+
439
+ <!-- MEDIUM DOT OPERATOR (FREE RADICAL) -->
440
+ <xsl:template match="char[mt_code_value='0xE98F' and variation='textmode']">
441
+ <xsl:text disable-output-escaping="yes">&amp;#x00B7;</xsl:text>
442
+ </xsl:template>
443
+
444
+ <!-- NOT LESS-THAN OR EQUAL TO (DOUBLE) -->
445
+ <xsl:template match="char[mt_code_value='0xEA06' and variation='mathmode']">
446
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x2270;</xsl:text></mo>
447
+ </xsl:template>
448
+
449
+ <!-- NOT LESS-THAN OR EQUAL TO (DOUBLE) -->
450
+ <xsl:template match="char[mt_code_value='0xEA06' and variation='textmode']">
451
+ <xsl:text disable-output-escaping="yes">&amp;#x2270;</xsl:text>
452
+ </xsl:template>
453
+
454
+ <!-- NOT GREATER-THAN OR EQUAL TO (DOUBLE) -->
455
+ <xsl:template match="char[mt_code_value='0xEA07' and variation='mathmode']">
456
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x2271;</xsl:text></mo>
457
+ </xsl:template>
458
+
459
+ <!-- NOT GREATER-THAN OR EQUAL TO (DOUBLE) -->
460
+ <xsl:template match="char[mt_code_value='0xEA07' and variation='textmode']">
461
+ <xsl:text disable-output-escaping="yes">&amp;#x2271;</xsl:text>
462
+ </xsl:template>
463
+
464
+ <!-- NEITHER SUPERSET OF NOR EQUAL TO (DOUBLE) -->
465
+ <xsl:template match="char[mt_code_value='0xEA0B' and variation='mathmode']">
466
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x2289;</xsl:text></mo>
467
+ </xsl:template>
468
+
469
+ <!-- NEITHER SUPERSET OF NOR EQUAL TO (DOUBLE) -->
470
+ <xsl:template match="char[mt_code_value='0xEA0B' and variation='textmode']">
471
+ <xsl:text disable-output-escaping="yes">&amp;#x2289;</xsl:text>
472
+ </xsl:template>
473
+
474
+ <!-- NEITHER SUBSET OF NOR EQUAL TO (DOUBLE) -->
475
+ <xsl:template match="char[mt_code_value='0xEA0C' and variation='mathmode']">
476
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x2288;</xsl:text></mo>
477
+ </xsl:template>
478
+
479
+ <!-- NEITHER SUBSET OF NOR EQUAL TO (DOUBLE) -->
480
+ <xsl:template match="char[mt_code_value='0xEA0C' and variation='textmode']">
481
+ <xsl:text disable-output-escaping="yes">&amp;#x2288;</xsl:text>
482
+ </xsl:template>
483
+
484
+ <!-- LESS-THAN BUT NOT APPROXIMATELY EQUAL TO -->
485
+ <xsl:template match="char[mt_code_value='0xEA32' and variation='mathmode']">
486
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x2A89;</xsl:text></mo>
487
+ </xsl:template>
488
+
489
+ <!-- LESS-THAN BUT NOT APPROXIMATELY EQUAL TO -->
490
+ <xsl:template match="char[mt_code_value='0xEA32' and variation='textmode']">
491
+ <xsl:text disable-output-escaping="yes">&amp;#x2A89;</xsl:text>
492
+ </xsl:template>
493
+
494
+ <!-- GREATER-THAN BUT NOT APPROXIMATELY EQUAL TO -->
495
+ <xsl:template match="char[mt_code_value='0xEA33' and variation='mathmode']">
496
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x2A8A;</xsl:text></mo>
497
+ </xsl:template>
498
+
499
+ <!-- GREATER-THAN BUT NOT APPROXIMATELY EQUAL TO -->
500
+ <xsl:template match="char[mt_code_value='0xEA33' and variation='textmode']">
501
+ <xsl:text disable-output-escaping="yes">&amp;#x2A8A;</xsl:text>
502
+ </xsl:template>
503
+
504
+ <!-- LESS-THAN OR NOT EQUAL TO (SINGLE) -->
505
+ <xsl:template match="char[mt_code_value='0xEA34' and variation='mathmode']">
506
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x2268;</xsl:text></mo>
507
+ </xsl:template>
508
+
509
+ <!-- LESS-THAN OR NOT EQUAL TO (SINGLE) -->
510
+ <xsl:template match="char[mt_code_value='0xEA34' and variation='textmode']">
511
+ <xsl:text disable-output-escaping="yes">&amp;#x2268;</xsl:text>
512
+ </xsl:template>
513
+
514
+ <!-- GREATER-THAN OR NOT EQUAL TO (SINGLE) -->
515
+ <xsl:template match="char[mt_code_value='0xEA35' and variation='mathmode']">
516
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x2269;</xsl:text></mo>
517
+ </xsl:template>
518
+
519
+ <!-- GREATER-THAN OR NOT EQUAL TO (SINGLE) -->
520
+ <xsl:template match="char[mt_code_value='0xEA35' and variation='textmode']">
521
+ <xsl:text disable-output-escaping="yes">&amp;#x2269;</xsl:text>
522
+ </xsl:template>
523
+
524
+ <!-- PRECEDES BUT NOT EQUIVALENT TO (DOUBLE) -->
525
+ <xsl:template match="char[mt_code_value='0xEA3A' and variation='mathmode']">
526
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x22E8;</xsl:text></mo>
527
+ </xsl:template>
528
+
529
+ <!-- PRECEDES BUT NOT EQUIVALENT TO (DOUBLE) -->
530
+ <xsl:template match="char[mt_code_value='0xEA3A' and variation='textmode']">
531
+ <xsl:text disable-output-escaping="yes">&amp;#x22E8;</xsl:text>
532
+ </xsl:template>
533
+
534
+ <!-- SUCCEEDS BUT NOT EQUIVALENT TO (DOUBLE) -->
535
+ <xsl:template match="char[mt_code_value='0xEA3B' and variation='mathmode']">
536
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x22E9;</xsl:text></mo>
537
+ </xsl:template>
538
+
539
+ <!-- SUCCEEDS BUT NOT EQUIVALENT TO (DOUBLE) -->
540
+ <xsl:template match="char[mt_code_value='0xEA3B' and variation='textmode']">
541
+ <xsl:text disable-output-escaping="yes">&amp;#x22E9;</xsl:text>
542
+ </xsl:template>
543
+
544
+ <!-- PRECEDES BUT NOT EQUAL TO (DOUBLE) -->
545
+ <xsl:template match="char[mt_code_value='0xEA40' and variation='mathmode']">
546
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x2AB5;</xsl:text></mo>
547
+ </xsl:template>
548
+
549
+ <!-- PRECEDES BUT NOT EQUAL TO (DOUBLE) -->
550
+ <xsl:template match="char[mt_code_value='0xEA40' and variation='textmode']">
551
+ <xsl:text disable-output-escaping="yes">&amp;#x2AB5;</xsl:text>
552
+ </xsl:template>
553
+
554
+ <!-- SUCCEEDS BUT NOT EQUAL TO (DOUBLE) -->
555
+ <xsl:template match="char[mt_code_value='0xEA41' and variation='mathmode']">
556
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x2AB6;</xsl:text></mo>
557
+ </xsl:template>
558
+
559
+ <!-- SUCCEEDS BUT NOT EQUAL TO (DOUBLE) -->
560
+ <xsl:template match="char[mt_code_value='0xEA41' and variation='textmode']">
561
+ <xsl:text disable-output-escaping="yes">&amp;#x2AB6;</xsl:text>
562
+ </xsl:template>
563
+
564
+ <!-- NOT SUBSET OF NOR EQUAL TO -->
565
+ <xsl:template match="char[mt_code_value='0xEA42' and variation='mathmode']">
566
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x2288;</xsl:text></mo>
567
+ </xsl:template>
568
+
569
+ <!-- NOT SUBSET OF NOR EQUAL TO -->
570
+ <xsl:template match="char[mt_code_value='0xEA42' and variation='textmode']">
571
+ <xsl:text disable-output-escaping="yes">&amp;#x2288;</xsl:text>
572
+ </xsl:template>
573
+
574
+ <!-- NOT SUPERSET OF NOR EQUAL TO -->
575
+ <xsl:template match="char[mt_code_value='0xEA43' and variation='mathmode']">
576
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x2289;</xsl:text></mo>
577
+ </xsl:template>
578
+
579
+ <!-- NOT SUPERSET OF NOR EQUAL TO -->
580
+ <xsl:template match="char[mt_code_value='0xEA43' and variation='textmode']">
581
+ <xsl:text disable-output-escaping="yes">&amp;#x2289;</xsl:text>
582
+ </xsl:template>
583
+
584
+ <!-- SUBSET OF OR NOT EQUAL TO (DOUBLE) -->
585
+ <xsl:template match="char[mt_code_value='0xEA44' and variation='mathmode']">
586
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x228A;</xsl:text></mo>
587
+ </xsl:template>
588
+
589
+ <!-- SUBSET OF OR NOT EQUAL TO (DOUBLE) -->
590
+ <xsl:template match="char[mt_code_value='0xEA44' and variation='textmode']">
591
+ <xsl:text disable-output-escaping="yes">&amp;#x228A;</xsl:text>
592
+ </xsl:template>
593
+
594
+ <!-- SUPERSET OF OR NOT EQUAL TO (DOUBLE) -->
595
+ <xsl:template match="char[mt_code_value='0xEA45' and variation='mathmode']">
596
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x228B;</xsl:text></mo>
597
+ </xsl:template>
598
+
599
+ <!-- SUPERSET OF OR NOT EQUAL TO (DOUBLE) -->
600
+ <xsl:template match="char[mt_code_value='0xEA45' and variation='textmode']">
601
+ <xsl:text disable-output-escaping="yes">&amp;#x228B;</xsl:text>
602
+ </xsl:template>
603
+
604
+ <!-- RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW -->
605
+ <xsl:template match="char[mt_code_value='0xEB01' and variation='mathmode']">
606
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x2942;</xsl:text></mo>
607
+ </xsl:template>
608
+
609
+ <!-- SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW -->
610
+ <xsl:template match="char[mt_code_value='0xEB02' and variation='mathmode']">
611
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x2944;</xsl:text></mo>
612
+ </xsl:template>
613
+
614
+ <!-- DOUBLE ARROW NORTHEAST SOUTHWEST -->
615
+ <xsl:template match="char[mt_code_value='0xEB05' and variation='mathmode']">
616
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x2922;</xsl:text></mo>
617
+ </xsl:template>
618
+
619
+ <!-- DOUBLE ARROW NORTHWEST SOUTHEAST -->
620
+ <xsl:template match="char[mt_code_value='0xEB06' and variation='mathmode']">
621
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x2921;</xsl:text></mo>
622
+ </xsl:template>
623
+
624
+ <!-- COMBINING TILDE TWO SPACE -->
625
+ <xsl:template match="char[mt_code_value='0xEE04' and variation='mathmode']">
626
+ <mo stretchy='true'>&amp;#x02DC;</mo>
627
+ </xsl:template>
628
+
629
+ <!-- COMBINING TILDE THREE SPACE -->
630
+ <xsl:template match="char[mt_code_value='0xEE05' and variation='mathmode']">
631
+ <mo stretchy='true'>&amp;#x02DC;</mo>
632
+ </xsl:template>
633
+
634
+ <!-- COMBINING TILDE FOUR SPACE -->
635
+ <xsl:template match="char[mt_code_value='0xEE06' and variation='mathmode']">
636
+ <mo stretchy='true'>&amp;#x02DC;</mo>
637
+ </xsl:template>
638
+
639
+ <!-- COMBINING CIRCUMFLEX TWO SPACE -->
640
+ <xsl:template match="char[mt_code_value='0xEE07' and variation='mathmode']">
641
+ <mo stretchy='true'>&amp;#x005E;</mo>
642
+ </xsl:template>
643
+
644
+ <!-- COMBINING CIRCUMFLEX THREE SPACE -->
645
+ <xsl:template match="char[mt_code_value='0xEE08' and variation='mathmode']">
646
+ <mo stretchy='true'>&amp;#x005E;</mo>
647
+ </xsl:template>
648
+
649
+ <!-- COMBINING CIRCUMFLEX FOUR SPACE -->
650
+ <xsl:template match="char[mt_code_value='0xEE09' and variation='mathmode']">
651
+ <mo stretchy='true'>&amp;#x005E;</mo>
652
+ </xsl:template>
653
+
654
+ <!-- COMBINING ARC TWO SPACE -->
655
+ <xsl:template match="char[mt_code_value='0xEE0A' and variation='mathmode']">
656
+ <mo stretchy='true'>&amp;#x2322;</mo>
657
+ </xsl:template>
658
+
659
+ <!-- COMBINING ARC THREE SPACE -->
660
+ <xsl:template match="char[mt_code_value='0xEE0B' and variation='mathmode']">
661
+ <mo stretchy='true'>&amp;#x2322;</mo>
662
+ </xsl:template>
663
+
664
+ <!-- COMBINING ARC FOUR SPACE -->
665
+ <xsl:template match="char[mt_code_value='0xEE0C' and variation='mathmode']">
666
+ <mo stretchy='true'>&amp;#x2322;</mo>
667
+ </xsl:template>
668
+
669
+ <!-- QUADRUPLE PRIME -->
670
+ <xsl:template match="char[mt_code_value='0xEE19' and variation='mathmode']">
671
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x2057;</xsl:text></mo>
672
+ </xsl:template>
673
+
674
+ <!-- QUADRUPLE PRIME -->
675
+ <xsl:template match="char[mt_code_value='0xEE19' and variation='textmode']">
676
+ <xsl:text disable-output-escaping="yes">&amp;#x2057;</xsl:text>
677
+ </xsl:template>
678
+
679
+ <!-- ALIGNMENT MARK -->
680
+ <xsl:template match="char[mt_code_value='0xEF00' and variation='mathmode']">
681
+ <malignmark/>
682
+ </xsl:template>
683
+
684
+ <!-- ALIGNMENT MARK -->
685
+ <xsl:template match="char[mt_code_value='0xEF00' and variation='textmode']">
686
+ <malignmark/>
687
+ </xsl:template>
688
+
689
+ <!-- MT ZERO SPACE -->
690
+ <xsl:template match="char[mt_code_value='0xEF01' and variation='mathmode']">
691
+ <mtext><xsl:text disable-output-escaping="yes">&amp;#x200B;</xsl:text></mtext>
692
+ </xsl:template>
693
+
694
+ <!-- MT ZERO SPACE -->
695
+ <xsl:template match="char[mt_code_value='0xEF01' and variation='textmode']">
696
+ <xsl:text disable-output-escaping="yes">&amp;#x200B;</xsl:text>
697
+ </xsl:template>
698
+
699
+ <!-- MT THIN SPACE -->
700
+ <xsl:template match="char[mt_code_value='0xEF02' and variation='mathmode']">
701
+ <mtext><xsl:text disable-output-escaping="yes">&amp;#x2009;</xsl:text></mtext>
702
+ </xsl:template>
703
+
704
+ <!-- MT THIN SPACE -->
705
+ <xsl:template match="char[mt_code_value='0xEF02' and variation='textmode']">
706
+ <xsl:text disable-output-escaping="yes">&amp;#x2009;</xsl:text>
707
+ </xsl:template>
708
+
709
+ <!-- MT MEDIUM SPACE -->
710
+ <xsl:template match="char[mt_code_value='0xEF03' and variation='mathmode']">
711
+ <mtext><xsl:text disable-output-escaping="yes">&amp;#x205F;</xsl:text></mtext>
712
+ </xsl:template>
713
+
714
+ <!-- MT MEDIUM SPACE -->
715
+ <xsl:template match="char[mt_code_value='0xEF03' and variation='textmode']">
716
+ <xsl:text disable-output-escaping="yes">&amp;#x205F;</xsl:text>
717
+ </xsl:template>
718
+
719
+ <!-- MT THICK SPACE -->
720
+ <xsl:template match="char[mt_code_value='0xEF04' and variation='mathmode']">
721
+ <mtext><xsl:text disable-output-escaping="yes">&amp;#x2009;</xsl:text></mtext>
722
+ </xsl:template>
723
+
724
+ <!-- MT THICK SPACE -->
725
+ <xsl:template match="char[mt_code_value='0xEF04' and variation='textmode']">
726
+ <xsl:text disable-output-escaping="yes">&amp;#x2009;</xsl:text>
727
+ </xsl:template>
728
+
729
+ <!-- MT EM SPACE -->
730
+ <xsl:template match="char[mt_code_value='0xEF05' and variation='mathmode']">
731
+ <mtext><xsl:text disable-output-escaping="yes">&amp;#x2003;</xsl:text></mtext>
732
+ </xsl:template>
733
+
734
+ <!-- MT EM SPACE -->
735
+ <xsl:template match="char[mt_code_value='0xEF05' and variation='textmode']">
736
+ <xsl:text disable-output-escaping="yes">&amp;#x2003;</xsl:text>
737
+ </xsl:template>
738
+
739
+ <!-- MT 2 EM SPACE -->
740
+ <xsl:template match="char[mt_code_value='0xEF06' and variation='mathmode']">
741
+ <mtext><xsl:text disable-output-escaping="yes">&amp;#x2003;</xsl:text>&amp;#x2003;</mtext>
742
+ </xsl:template>
743
+
744
+ <!-- MT 2 EM SPACE -->
745
+ <xsl:template match="char[mt_code_value='0xEF06' and variation='textmode']">
746
+ <xsl:text disable-output-escaping="yes">&amp;#x2003;&amp;#x2003;</xsl:text>
747
+ </xsl:template>
748
+
749
+ <!-- UNSUPPORTED: range: Private Use Area -->
750
+ <xsl:template match="char[mt_code_value='0xEF07' and variation='mathmode']">
751
+ <xsl:text>Unsupported character</xsl:text>
752
+ </xsl:template>
753
+
754
+ <!-- UNSUPPORTED: range: Private Use Area -->
755
+ <xsl:template match="char[mt_code_value='0xEF07' and variation='textmode']">
756
+ <xsl:text>Unsupported character</xsl:text>
757
+ </xsl:template>
758
+
759
+ <!-- MT 1 POINT SPACE -->
760
+ <xsl:template match="char[mt_code_value='0xEF08' and variation='mathmode']">
761
+ <mtext><xsl:text disable-output-escaping="yes">&amp;#x200A;</xsl:text></mtext>
762
+ </xsl:template>
763
+
764
+ <!-- MT 1 POINT SPACE -->
765
+ <xsl:template match="char[mt_code_value='0xEF08' and variation='textmode']">
766
+ <xsl:text disable-output-escaping="yes">&amp;#x200A;</xsl:text>
33
767
  </xsl:template>
34
768
 
769
+
770
+ <!-- MATHEMATICAL FRAKTUR CAPITAL A -->
771
+ <xsl:template match="char[mt_code_value='0xF000' and variation='mathmode']">
772
+ <mi mathvariant='fraktur'>A</mi>
773
+ </xsl:template>
774
+
775
+ <!-- MATHEMATICAL FRAKTUR CAPITAL B -->
776
+ <xsl:template match="char[mt_code_value='0xF001' and variation='mathmode']">
777
+ <mi mathvariant='fraktur'>B</mi>
778
+ </xsl:template>
779
+
780
+ <!-- MATHEMATICAL FRAKTUR CAPITAL C -->
781
+ <xsl:template match="char[mt_code_value='0x212D' and variation='mathmode']">
782
+ <mi><xsl:text disable-output-escaping="yes">&amp;#x212D;</xsl:text></mi>
783
+ </xsl:template>
784
+
785
+ <!-- UNSUPPORTED: range: Private Use Area -->
786
+ <xsl:template match="char[mt_code_value='0xF002' and variation='mathmode']">
787
+ <xsl:text>Unsupported character</xsl:text>
788
+ </xsl:template>
789
+
790
+ <!-- MATHEMATICAL FRAKTUR CAPITAL D -->
791
+ <xsl:template match="char[mt_code_value='0xF003' and variation='mathmode']">
792
+ <mi mathvariant='fraktur'>D</mi>
793
+ </xsl:template>
794
+
795
+ <!-- MATHEMATICAL FRAKTUR CAPITAL E -->
796
+ <xsl:template match="char[mt_code_value='0xF004' and variation='mathmode']">
797
+ <mi mathvariant='fraktur'>E</mi>
798
+ </xsl:template>
799
+
800
+ <!-- MATHEMATICAL FRAKTUR CAPITAL F -->
801
+ <xsl:template match="char[mt_code_value='0xF005' and variation='mathmode']">
802
+ <mi mathvariant='fraktur'>F</mi>
803
+ </xsl:template>
804
+
805
+ <!-- MATHEMATICAL FRAKTUR CAPITAL G -->
806
+ <xsl:template match="char[mt_code_value='0xF006' and variation='mathmode']">
807
+ <mi mathvariant='fraktur'>G</mi>
808
+ </xsl:template>
809
+
810
+ <!-- MATHEMATICAL FRAKTUR CAPITAL H -->
811
+ <xsl:template match="char[mt_code_value='0x210C' and variation='mathmode']">
812
+ <mi><xsl:text disable-output-escaping="yes">&amp;#x210C;</xsl:text></mi>
813
+ </xsl:template>
814
+
815
+ <!-- UNSUPPORTED -->
816
+ <xsl:template match="char[mt_code_value='0xF007' and variation='mathmode']">
817
+ <xsl:text>Unsupported character</xsl:text>
818
+ </xsl:template>
819
+
820
+ <!-- MATHEMATICAL FRAKTUR CAPITAL I -->
821
+ <xsl:template match="char[mt_code_value='0x2111' and variation='mathmode']">
822
+ <mi><xsl:text disable-output-escaping="yes">&amp;#x2111;</xsl:text></mi>
823
+ </xsl:template>
824
+
825
+ <!-- UNSUPPORTED -->
826
+ <xsl:template match="char[mt_code_value='0xF008' and variation='mathmode']">
827
+ <xsl:text>Unsupported character</xsl:text>
828
+ </xsl:template>
829
+ <!-- MATHEMATICAL FRAKTUR CAPITAL J -->
830
+ <xsl:template match="char[mt_code_value='0xF009' and variation='mathmode']">
831
+ <mi mathvariant='fraktur'>J</mi>
832
+ </xsl:template>
833
+
834
+ <!-- MATHEMATICAL FRAKTUR CAPITAL K -->
835
+ <xsl:template match="char[mt_code_value='0xF00A' and variation='mathmode']">
836
+ <mi mathvariant='fraktur'>K</mi>
837
+ </xsl:template>
838
+
839
+ <!-- MATHEMATICAL FRAKTUR CAPITAL L -->
840
+ <xsl:template match="char[mt_code_value='0xF00B' and variation='mathmode']">
841
+ <mi mathvariant='fraktur'>L</mi>
842
+ </xsl:template>
843
+
844
+ <!-- MATHEMATICAL FRAKTUR CAPITAL M -->
845
+ <xsl:template match="char[mt_code_value='0xF00C' and variation='mathmode']">
846
+ <mi mathvariant='fraktur'>M</mi>
847
+ </xsl:template>
848
+
849
+ <!-- MATHEMATICAL FRAKTUR CAPITAL N -->
850
+ <xsl:template match="char[mt_code_value='0xF00D' and variation='mathmode']">
851
+ <mi mathvariant='fraktur'>N</mi>
852
+ </xsl:template>
853
+
854
+ <!-- MATHEMATICAL FRAKTUR CAPITAL O -->
855
+ <xsl:template match="char[mt_code_value='0xF00E' and variation='mathmode']">
856
+ <mi mathvariant='fraktur'>O</mi>
857
+ </xsl:template>
858
+
859
+ <!-- MATHEMATICAL FRAKTUR CAPITAL P -->
860
+ <xsl:template match="char[mt_code_value='0xF00F' and variation='mathmode']">
861
+ <mi mathvariant='fraktur'>P</mi>
862
+ </xsl:template>
863
+
864
+ <!-- MATHEMATICAL FRAKTUR CAPITAL Q -->
865
+ <xsl:template match="char[mt_code_value='0xF010' and variation='mathmode']">
866
+ <mi mathvariant='fraktur'>Q</mi>
867
+ </xsl:template>
868
+
869
+ <!-- MATHEMATICAL FRAKTUR CAPITAL R -->
870
+ <xsl:template match="char[mt_code_value='0x211C' and variation='mathmode']">
871
+ <mi><xsl:text disable-output-escaping="yes">&amp;#x211C;</xsl:text></mi>
872
+ </xsl:template>
873
+
874
+ <!-- UNSUPPORTED -->
875
+ <xsl:template match="char[mt_code_value='0xF011' and variation='mathmode']">
876
+ <xsl:text>Unsupported character</xsl:text>
877
+ </xsl:template>
878
+ <!-- MATHEMATICAL FRAKTUR CAPITAL S -->
879
+ <xsl:template match="char[mt_code_value='0xF012' and variation='mathmode']">
880
+ <mi mathvariant='fraktur'>S</mi>
881
+ </xsl:template>
882
+
883
+ <!-- MATHEMATICAL FRAKTUR CAPITAL T -->
884
+ <xsl:template match="char[mt_code_value='0xF013' and variation='mathmode']">
885
+ <mi mathvariant='fraktur'>T</mi>
886
+ </xsl:template>
887
+
888
+ <!-- MATHEMATICAL FRAKTUR CAPITAL U -->
889
+ <xsl:template match="char[mt_code_value='0xF014' and variation='mathmode']">
890
+ <mi mathvariant='fraktur'>U</mi>
891
+ </xsl:template>
892
+
893
+ <!-- MATHEMATICAL FRAKTUR CAPITAL V -->
894
+ <xsl:template match="char[mt_code_value='0xF015' and variation='mathmode']">
895
+ <mi mathvariant='fraktur'>V</mi>
896
+ </xsl:template>
897
+
898
+ <!-- MATHEMATICAL FRAKTUR CAPITAL W -->
899
+ <xsl:template match="char[mt_code_value='0xF016' and variation='mathmode']">
900
+ <mi mathvariant='fraktur'>W</mi>
901
+ </xsl:template>
902
+
903
+ <!-- MATHEMATICAL FRAKTUR CAPITAL X -->
904
+ <xsl:template match="char[mt_code_value='0xF017' and variation='mathmode']">
905
+ <mi mathvariant='fraktur'>X</mi>
906
+ </xsl:template>
907
+
908
+ <!-- MATHEMATICAL FRAKTUR CAPITAL Y -->
909
+ <xsl:template match="char[mt_code_value='0xF018' and variation='mathmode']">
910
+ <mi mathvariant='fraktur'>Y</mi>
911
+ </xsl:template>
912
+
913
+ <!-- MATHEMATICAL FRAKTUR CAPITAL Z -->
914
+ <xsl:template match="char[mt_code_value='0x2128' and variation='mathmode']">
915
+ <mi><xsl:text disable-output-escaping="yes">&amp;#x2128;</xsl:text></mi>
916
+ </xsl:template>
917
+
918
+ <!-- UNSUPPORTED -->
919
+ <xsl:template match="char[mt_code_value='0xF019' and variation='mathmode']">
920
+ <xsl:text>Unsupported character</xsl:text>
921
+ </xsl:template>
922
+ <!-- MATHEMATICAL FRAKTUR SMALL A -->
923
+ <xsl:template match="char[mt_code_value='0xF01A' and variation='mathmode']">
924
+ <mi mathvariant='fraktur'>a</mi>
925
+ </xsl:template>
926
+
927
+ <!-- MATHEMATICAL FRAKTUR SMALL B -->
928
+ <xsl:template match="char[mt_code_value='0xF01B' and variation='mathmode']">
929
+ <mi mathvariant='fraktur'>b</mi>
930
+ </xsl:template>
931
+
932
+ <!-- MATHEMATICAL FRAKTUR SMALL C -->
933
+ <xsl:template match="char[mt_code_value='0xF01C' and variation='mathmode']">
934
+ <mi mathvariant='fraktur'>c</mi>
935
+ </xsl:template>
936
+
937
+ <!-- MATHEMATICAL FRAKTUR SMALL D -->
938
+ <xsl:template match="char[mt_code_value='0xF01D' and variation='mathmode']">
939
+ <mi mathvariant='fraktur'>d</mi>
940
+ </xsl:template>
941
+
942
+ <!-- MATHEMATICAL FRAKTUR SMALL E -->
943
+ <xsl:template match="char[mt_code_value='0xF01E' and variation='mathmode']">
944
+ <mi mathvariant='fraktur'>e</mi>
945
+ </xsl:template>
946
+
947
+ <!-- MATHEMATICAL FRAKTUR SMALL F -->
948
+ <xsl:template match="char[mt_code_value='0xF01F' and variation='mathmode']">
949
+ <mi mathvariant='fraktur'>f</mi>
950
+ </xsl:template>
951
+
952
+ <!-- MATHEMATICAL FRAKTUR SMALL G -->
953
+ <xsl:template match="char[mt_code_value='0xF020' and variation='mathmode']">
954
+ <mi mathvariant='fraktur'>g</mi>
955
+ </xsl:template>
956
+
957
+ <!-- MATHEMATICAL FRAKTUR SMALL H -->
958
+ <xsl:template match="char[mt_code_value='0xF021' and variation='mathmode']">
959
+ <mi mathvariant='fraktur'>h</mi>
960
+ </xsl:template>
961
+
962
+ <!-- MATHEMATICAL FRAKTUR SMALL I -->
963
+ <xsl:template match="char[mt_code_value='0xF022' and variation='mathmode']">
964
+ <mi mathvariant='fraktur'>i</mi>
965
+ </xsl:template>
966
+
967
+ <!-- MATHEMATICAL FRAKTUR SMALL J -->
968
+ <xsl:template match="char[mt_code_value='0xF023' and variation='mathmode']">
969
+ <mi mathvariant='fraktur'>j</mi>
970
+ </xsl:template>
971
+
972
+ <!-- MATHEMATICAL FRAKTUR SMALL K -->
973
+ <xsl:template match="char[mt_code_value='0xF024' and variation='mathmode']">
974
+ <mi mathvariant='fraktur'>k</mi>
975
+ </xsl:template>
976
+
977
+ <!-- MATHEMATICAL FRAKTUR SMALL L -->
978
+ <xsl:template match="char[mt_code_value='0xF025' and variation='mathmode']">
979
+ <mi mathvariant='fraktur'>l</mi>
980
+ </xsl:template>
981
+
982
+ <!-- MATHEMATICAL FRAKTUR SMALL M -->
983
+ <xsl:template match="char[mt_code_value='0xF026' and variation='mathmode']">
984
+ <mi mathvariant='fraktur'>m</mi>
985
+ </xsl:template>
986
+
987
+ <!-- MATHEMATICAL FRAKTUR SMALL N -->
988
+ <xsl:template match="char[mt_code_value='0xF027' and variation='mathmode']">
989
+ <mi mathvariant='fraktur'>n</mi>
990
+ </xsl:template>
991
+
992
+ <!-- MATHEMATICAL FRAKTUR SMALL O -->
993
+ <xsl:template match="char[mt_code_value='0xF028' and variation='mathmode']">
994
+ <mi mathvariant='fraktur'>o</mi>
995
+ </xsl:template>
996
+
997
+ <!-- MATHEMATICAL FRAKTUR SMALL P -->
998
+ <xsl:template match="char[mt_code_value='0xF029' and variation='mathmode']">
999
+ <mi mathvariant='fraktur'>p</mi>
1000
+ </xsl:template>
1001
+
1002
+ <!-- MATHEMATICAL FRAKTUR SMALL Q -->
1003
+ <xsl:template match="char[mt_code_value='0xF02A' and variation='mathmode']">
1004
+ <mi mathvariant='fraktur'>q</mi>
1005
+ </xsl:template>
1006
+
1007
+ <!-- MATHEMATICAL FRAKTUR SMALL R -->
1008
+ <xsl:template match="char[mt_code_value='0xF02B' and variation='mathmode']">
1009
+ <mi mathvariant='fraktur'>r</mi>
1010
+ </xsl:template>
1011
+
1012
+ <!-- MATHEMATICAL FRAKTUR SMALL S -->
1013
+ <xsl:template match="char[mt_code_value='0xF02C' and variation='mathmode']">
1014
+ <mi mathvariant='fraktur'>s</mi>
1015
+ </xsl:template>
1016
+
1017
+ <!-- MATHEMATICAL FRAKTUR SMALL T -->
1018
+ <xsl:template match="char[mt_code_value='0xF02D' and variation='mathmode']">
1019
+ <mi mathvariant='fraktur'>t</mi>
1020
+ </xsl:template>
1021
+
1022
+ <!-- MATHEMATICAL FRAKTUR SMALL U -->
1023
+ <xsl:template match="char[mt_code_value='0xF02E' and variation='mathmode']">
1024
+ <mi mathvariant='fraktur'>u</mi>
1025
+ </xsl:template>
1026
+
1027
+ <!-- MATHEMATICAL FRAKTUR SMALL V -->
1028
+ <xsl:template match="char[mt_code_value='0xF02F' and variation='mathmode']">
1029
+ <mi mathvariant='fraktur'>v</mi>
1030
+ </xsl:template>
1031
+
1032
+ <!-- MATHEMATICAL FRAKTUR SMALL W -->
1033
+ <xsl:template match="char[mt_code_value='0xF030' and variation='mathmode']">
1034
+ <mi mathvariant='fraktur'>w</mi>
1035
+ </xsl:template>
1036
+
1037
+ <!-- MATHEMATICAL FRAKTUR SMALL X -->
1038
+ <xsl:template match="char[mt_code_value='0xF031' and variation='mathmode']">
1039
+ <mi mathvariant='fraktur'>x</mi>
1040
+ </xsl:template>
1041
+
1042
+ <!-- MATHEMATICAL FRAKTUR SMALL Y -->
1043
+ <xsl:template match="char[mt_code_value='0xF032' and variation='mathmode']">
1044
+ <mi mathvariant='fraktur'>y</mi>
1045
+ </xsl:template>
1046
+
1047
+ <!-- MATHEMATICAL FRAKTUR SMALL Z -->
1048
+ <xsl:template match="char[mt_code_value='0xF033' and variation='mathmode']">
1049
+ <mi mathvariant='fraktur'>z</mi>
1050
+ </xsl:template>
1051
+
1052
+
1053
+ <!-- MATHEMATICAL DOUBLE-STRUCK CAPITAL A -->
1054
+ <xsl:template match="char[mt_code_value='0xF080' and variation='mathmode']">
1055
+ <mi mathvariant='double-struck'>A</mi>
1056
+ </xsl:template>
1057
+
1058
+ <!-- MATHEMATICAL DOUBLE-STRUCK CAPITAL B -->
1059
+ <xsl:template match="char[mt_code_value='0xF081' and variation='mathmode']">
1060
+ <mi mathvariant='double-struck'>B</mi>
1061
+ </xsl:template>
1062
+
1063
+ <!-- MATHEMATICAL DOUBLE-STRUCK CAPITAL C -->
1064
+ <xsl:template match="char[mt_code_value='0x2102' and variation='mathmode']">
1065
+ <mi><xsl:text disable-output-escaping="yes">&amp;#x2102;</xsl:text></mi>
1066
+ </xsl:template>
1067
+
1068
+ <!-- UNSUPPORTED -->
1069
+ <xsl:template match="char[mt_code_value='0xF082' and variation='mathmode']">
1070
+ <xsl:text>Unsupported character</xsl:text>
1071
+ </xsl:template>
1072
+ <!-- MATHEMATICAL DOUBLE-STRUCK CAPITAL D -->
1073
+ <xsl:template match="char[mt_code_value='0xF083' and variation='mathmode']">
1074
+ <mi mathvariant='double-struck'>D</mi>
1075
+ </xsl:template>
1076
+
1077
+ <!-- MATHEMATICAL DOUBLE-STRUCK CAPITAL E -->
1078
+ <xsl:template match="char[mt_code_value='0xF084' and variation='mathmode']">
1079
+ <mi mathvariant='double-struck'>E</mi>
1080
+ </xsl:template>
1081
+
1082
+ <!-- MATHEMATICAL DOUBLE-STRUCK CAPITAL F -->
1083
+ <xsl:template match="char[mt_code_value='0xF085' and variation='mathmode']">
1084
+ <mi mathvariant='double-struck'>F</mi>
1085
+ </xsl:template>
1086
+
1087
+ <!-- MATHEMATICAL DOUBLE-STRUCK CAPITAL G -->
1088
+ <xsl:template match="char[mt_code_value='0xF086' and variation='mathmode']">
1089
+ <mi mathvariant='double-struck'>G</mi>
1090
+ </xsl:template>
1091
+
1092
+ <!-- MATHEMATICAL DOUBLE-STRUCK CAPITAL H -->
1093
+ <xsl:template match="char[mt_code_value='0x210D' and variation='mathmode']">
1094
+ <mi><xsl:text disable-output-escaping="yes">&amp;#x210D;</xsl:text></mi>
1095
+ </xsl:template>
1096
+
1097
+ <!-- UNSUPPORTED -->
1098
+ <xsl:template match="char[mt_code_value='0xF087' and variation='mathmode']">
1099
+ <xsl:text>Unsupported character</xsl:text>
1100
+ </xsl:template>
1101
+ <!-- MATHEMATICAL DOUBLE-STRUCK CAPITAL I -->
1102
+ <xsl:template match="char[mt_code_value='0xF088' and variation='mathmode']">
1103
+ <mi mathvariant='double-struck'>I</mi>
1104
+ </xsl:template>
1105
+
1106
+ <!-- MATHEMATICAL DOUBLE-STRUCK CAPITAL J -->
1107
+ <xsl:template match="char[mt_code_value='0xF089' and variation='mathmode']">
1108
+ <mi mathvariant='double-struck'>J</mi>
1109
+ </xsl:template>
1110
+
1111
+ <!-- MATHEMATICAL DOUBLE-STRUCK CAPITAL K -->
1112
+ <xsl:template match="char[mt_code_value='0xF08A' and variation='mathmode']">
1113
+ <mi mathvariant='double-struck'>K</mi>
1114
+ </xsl:template>
1115
+
1116
+ <!-- MATHEMATICAL DOUBLE-STRUCK CAPITAL L -->
1117
+ <xsl:template match="char[mt_code_value='0xF08B' and variation='mathmode']">
1118
+ <mi mathvariant='double-struck'>L</mi>
1119
+ </xsl:template>
1120
+
1121
+ <!-- MATHEMATICAL DOUBLE-STRUCK CAPITAL M -->
1122
+ <xsl:template match="char[mt_code_value='0xF08C' and variation='mathmode']">
1123
+ <mi mathvariant='double-struck'>M</mi>
1124
+ </xsl:template>
1125
+
1126
+ <!-- MATHEMATICAL DOUBLE-STRUCK CAPITAL N -->
1127
+ <xsl:template match="char[mt_code_value='0x2115' and variation='mathmode']">
1128
+ <mi><xsl:text disable-output-escaping="yes">&amp;#x2115;</xsl:text></mi>
1129
+ </xsl:template>
1130
+
1131
+ <!-- UNSUPPORTED -->
1132
+ <xsl:template match="char[mt_code_value='0xF08D' and variation='mathmode']">
1133
+ <xsl:text>Unsupported character</xsl:text>
1134
+ </xsl:template>
1135
+ <!-- MATHEMATICAL DOUBLE-STRUCK CAPITAL O -->
1136
+ <xsl:template match="char[mt_code_value='0xF08E' and variation='mathmode']">
1137
+ <mi mathvariant='double-struck'>O</mi>
1138
+ </xsl:template>
1139
+
1140
+ <!-- MATHEMATICAL DOUBLE-STRUCK CAPITAL P -->
1141
+ <xsl:template match="char[mt_code_value='0x2119' and variation='mathmode']">
1142
+ <mi><xsl:text disable-output-escaping="yes">&amp;#x2119;</xsl:text></mi>
1143
+ </xsl:template>
1144
+
1145
+ <!-- UNSUPPORTED -->
1146
+ <xsl:template match="char[mt_code_value='0xF08F' and variation='mathmode']">
1147
+ <xsl:text>Unsupported character</xsl:text>
1148
+ </xsl:template>
1149
+ <!-- MATHEMATICAL DOUBLE-STRUCK CAPITAL Q -->
1150
+ <xsl:template match="char[mt_code_value='0x211A' and variation='mathmode']">
1151
+ <mi><xsl:text disable-output-escaping="yes">&amp;#x211A;</xsl:text></mi>
1152
+ </xsl:template>
1153
+
1154
+ <!-- UNSUPPORTED -->
1155
+ <xsl:template match="char[mt_code_value='0xF090' and variation='mathmode']">
1156
+ <xsl:text>Unsupported character</xsl:text>
1157
+ </xsl:template>
1158
+
1159
+ <!-- MATHEMATICAL DOUBLE-STRUCK CAPITAL R -->
1160
+ <xsl:template match="char[mt_code_value='0x211D' and variation='mathmode']">
1161
+ <mi><xsl:text disable-output-escaping="yes">&amp;#x211D;</xsl:text></mi>
1162
+ </xsl:template>
1163
+
1164
+ <!-- UNSUPPORTED -->
1165
+ <xsl:template match="char[mt_code_value='0xF091' and variation='mathmode']">
1166
+ <xsl:text>Unsupported character</xsl:text>
1167
+ </xsl:template>
1168
+
1169
+ <!-- MATHEMATICAL DOUBLE-STRUCK CAPITAL S -->
1170
+ <xsl:template match="char[mt_code_value='0xF092' and variation='mathmode']">
1171
+ <mi mathvariant='double-struck'>S</mi>
1172
+ </xsl:template>
1173
+
1174
+ <!-- MATHEMATICAL DOUBLE-STRUCK CAPITAL T -->
1175
+ <xsl:template match="char[mt_code_value='0xF093' and variation='mathmode']">
1176
+ <mi mathvariant='double-struck'>T</mi>
1177
+ </xsl:template>
1178
+
1179
+ <!-- MATHEMATICAL DOUBLE-STRUCK CAPITAL U -->
1180
+ <xsl:template match="char[mt_code_value='0xF094' and variation='mathmode']">
1181
+ <mi mathvariant='double-struck'>U</mi>
1182
+ </xsl:template>
1183
+
1184
+ <!-- MATHEMATICAL DOUBLE-STRUCK CAPITAL V -->
1185
+ <xsl:template match="char[mt_code_value='0xF095' and variation='mathmode']">
1186
+ <mi mathvariant='double-struck'>V</mi>
1187
+ </xsl:template>
1188
+
1189
+ <!-- MATHEMATICAL DOUBLE-STRUCK CAPITAL W -->
1190
+ <xsl:template match="char[mt_code_value='0xF096' and variation='mathmode']">
1191
+ <mi mathvariant='double-struck'>W</mi>
1192
+ </xsl:template>
1193
+
1194
+ <!-- MATHEMATICAL DOUBLE-STRUCK CAPITAL X -->
1195
+ <xsl:template match="char[mt_code_value='0xF097' and variation='mathmode']">
1196
+ <mi mathvariant='double-struck'>X</mi>
1197
+ </xsl:template>
1198
+
1199
+ <!-- MATHEMATICAL DOUBLE-STRUCK CAPITAL Y -->
1200
+ <xsl:template match="char[mt_code_value='0xF098' and variation='mathmode']">
1201
+ <mi mathvariant='double-struck'>Y</mi>
1202
+ </xsl:template>
1203
+
1204
+ <!-- MATHEMATICAL DOUBLE-STRUCK CAPITAL Z -->
1205
+ <xsl:template match="char[mt_code_value='0x2124' and variation='mathmode']">
1206
+ <mi><xsl:text disable-output-escaping="yes">&amp;#x2124;</xsl:text></mi>
1207
+ </xsl:template>
1208
+
1209
+ <!-- UNSUPPORTED -->
1210
+ <xsl:template match="char[mt_code_value='0xF099' and variation='mathmode']">
1211
+ <xsl:text>Unsupported character</xsl:text>
1212
+ </xsl:template>
1213
+
1214
+ <!-- MATHEMATICAL DOUBLE-STRUCK SMALL A -->
1215
+ <xsl:template match="char[mt_code_value='0xF09A' and variation='mathmode']">
1216
+ <mi mathvariant='double-struck'>a</mi>
1217
+ </xsl:template>
1218
+
1219
+ <!-- MATHEMATICAL DOUBLE-STRUCK SMALL B -->
1220
+ <xsl:template match="char[mt_code_value='0xF09B' and variation='mathmode']">
1221
+ <mi mathvariant='double-struck'>b</mi>
1222
+ </xsl:template>
1223
+
1224
+ <!-- MATHEMATICAL DOUBLE-STRUCK SMALL C -->
1225
+ <xsl:template match="char[mt_code_value='0xF09C' and variation='mathmode']">
1226
+ <mi mathvariant='double-struck'>c</mi>
1227
+ </xsl:template>
1228
+
1229
+ <!-- MATHEMATICAL DOUBLE-STRUCK SMALL D -->
1230
+ <xsl:template match="char[mt_code_value='0xF09D' and variation='mathmode']">
1231
+ <mi mathvariant='double-struck'>d</mi>
1232
+ </xsl:template>
1233
+
1234
+ <!-- MATHEMATICAL DOUBLE-STRUCK SMALL E -->
1235
+ <xsl:template match="char[mt_code_value='0xF09E' and variation='mathmode']">
1236
+ <mi mathvariant='double-struck'>e</mi>
1237
+ </xsl:template>
1238
+
1239
+ <!-- MATHEMATICAL DOUBLE-STRUCK SMALL F -->
1240
+ <xsl:template match="char[mt_code_value='0xF09F' and variation='mathmode']">
1241
+ <mi mathvariant='double-struck'>f</mi>
1242
+ </xsl:template>
1243
+
1244
+ <!-- MATHEMATICAL DOUBLE-STRUCK SMALL G -->
1245
+ <xsl:template match="char[mt_code_value='0xF0A0' and variation='mathmode']">
1246
+ <mi mathvariant='double-struck'>g</mi>
1247
+ </xsl:template>
1248
+
1249
+ <!-- MATHEMATICAL DOUBLE-STRUCK SMALL H -->
1250
+ <xsl:template match="char[mt_code_value='0xF0A1' and variation='mathmode']">
1251
+ <mi mathvariant='double-struck'>h</mi>
1252
+ </xsl:template>
1253
+
1254
+ <!-- MATHEMATICAL DOUBLE-STRUCK SMALL I -->
1255
+ <xsl:template match="char[mt_code_value='0xF0A2' and variation='mathmode']">
1256
+ <mi mathvariant='double-struck'>i</mi>
1257
+ </xsl:template>
1258
+
1259
+ <!-- MATHEMATICAL DOUBLE-STRUCK SMALL J -->
1260
+ <xsl:template match="char[mt_code_value='0xF0A3' and variation='mathmode']">
1261
+ <mi mathvariant='double-struck'>j</mi>
1262
+ </xsl:template>
1263
+
1264
+ <!-- MATHEMATICAL DOUBLE-STRUCK SMALL K -->
1265
+ <xsl:template match="char[mt_code_value='0xF0A4' and variation='mathmode']">
1266
+ <mi mathvariant='double-struck'>k</mi>
1267
+ </xsl:template>
1268
+
1269
+ <!-- MATHEMATICAL DOUBLE-STRUCK SMALL L -->
1270
+ <xsl:template match="char[mt_code_value='0xF0A5' and variation='mathmode']">
1271
+ <mi mathvariant='double-struck'>l</mi>
1272
+ </xsl:template>
1273
+
1274
+ <!-- MATHEMATICAL DOUBLE-STRUCK SMALL M -->
1275
+ <xsl:template match="char[mt_code_value='0xF0A6' and variation='mathmode']">
1276
+ <mi mathvariant='double-struck'>m</mi>
1277
+ </xsl:template>
1278
+
1279
+ <!-- MATHEMATICAL DOUBLE-STRUCK SMALL N -->
1280
+ <xsl:template match="char[mt_code_value='0xF0A7' and variation='mathmode']">
1281
+ <mi mathvariant='double-struck'>n</mi>
1282
+ </xsl:template>
1283
+
1284
+ <!-- MATHEMATICAL DOUBLE-STRUCK SMALL O -->
1285
+ <xsl:template match="char[mt_code_value='0xF0A8' and variation='mathmode']">
1286
+ <mi mathvariant='double-struck'>o</mi>
1287
+ </xsl:template>
1288
+
1289
+ <!-- MATHEMATICAL DOUBLE-STRUCK SMALL P -->
1290
+ <xsl:template match="char[mt_code_value='0xF0A9' and variation='mathmode']">
1291
+ <mi mathvariant='double-struck'>p</mi>
1292
+ </xsl:template>
1293
+
1294
+ <!-- MATHEMATICAL DOUBLE-STRUCK SMALL Q -->
1295
+ <xsl:template match="char[mt_code_value='0xF0AA' and variation='mathmode']">
1296
+ <mi mathvariant='double-struck'>q</mi>
1297
+ </xsl:template>
1298
+
1299
+ <!-- MATHEMATICAL DOUBLE-STRUCK SMALL R -->
1300
+ <xsl:template match="char[mt_code_value='0xF0AB' and variation='mathmode']">
1301
+ <mi mathvariant='double-struck'>r</mi>
1302
+ </xsl:template>
1303
+
1304
+ <!-- MATHEMATICAL DOUBLE-STRUCK SMALL S -->
1305
+ <xsl:template match="char[mt_code_value='0xF0AC' and variation='mathmode']">
1306
+ <mi mathvariant='double-struck'>s</mi>
1307
+ </xsl:template>
1308
+
1309
+ <!-- MATHEMATICAL DOUBLE-STRUCK SMALL T -->
1310
+ <xsl:template match="char[mt_code_value='0xF0AD' and variation='mathmode']">
1311
+ <mi mathvariant='double-struck'>t</mi>
1312
+ </xsl:template>
1313
+
1314
+ <!-- MATHEMATICAL DOUBLE-STRUCK SMALL U -->
1315
+ <xsl:template match="char[mt_code_value='0xF0AE' and variation='mathmode']">
1316
+ <mi mathvariant='double-struck'>u</mi>
1317
+ </xsl:template>
1318
+
1319
+ <!-- MATHEMATICAL DOUBLE-STRUCK SMALL V -->
1320
+ <xsl:template match="char[mt_code_value='0xF0AF' and variation='mathmode']">
1321
+ <mi mathvariant='double-struck'>v</mi>
1322
+ </xsl:template>
1323
+
1324
+ <!-- MATHEMATICAL DOUBLE-STRUCK SMALL W -->
1325
+ <xsl:template match="char[mt_code_value='0xF0B0' and variation='mathmode']">
1326
+ <mi mathvariant='double-struck'>w</mi>
1327
+ </xsl:template>
1328
+
1329
+ <!-- MATHEMATICAL DOUBLE-STRUCK SMALL X -->
1330
+ <xsl:template match="char[mt_code_value='0xF0B1' and variation='mathmode']">
1331
+ <mi mathvariant='double-struck'>x</mi>
1332
+ </xsl:template>
1333
+
1334
+ <!-- MATHEMATICAL DOUBLE-STRUCK SMALL Y -->
1335
+ <xsl:template match="char[mt_code_value='0xF0B2' and variation='mathmode']">
1336
+ <mi mathvariant='double-struck'>y</mi>
1337
+ </xsl:template>
1338
+
1339
+ <!-- MATHEMATICAL DOUBLE-STRUCK SMALL Z -->
1340
+ <xsl:template match="char[mt_code_value='0xF0B3' and variation='mathmode']">
1341
+ <mi mathvariant='double-struck'>z</mi>
1342
+ </xsl:template>
1343
+
1344
+
1345
+
1346
+ <!-- BLACKBOARD-BOLD DIGIT ZERO -->
1347
+ <xsl:template match="char[mt_code_value='0xF0C0' and variation='mathmode']">
1348
+ <mn mathvariant='double-struck'>0</mn>
1349
+ </xsl:template>
1350
+
1351
+ <!-- BLACKBOARD-BOLD DIGIT ONE -->
1352
+ <xsl:template match="char[mt_code_value='0xF0C1' and variation='mathmode']">
1353
+ <mn mathvariant='double-struck'>1</mn>
1354
+ </xsl:template>
1355
+
1356
+ <!-- BLACKBOARD-BOLD DIGIT TWO -->
1357
+ <xsl:template match="char[mt_code_value='0xF0C2' and variation='mathmode']">
1358
+ <mn mathvariant='double-struck'>2</mn>
1359
+ </xsl:template>
1360
+
1361
+ <!-- BLACKBOARD-BOLD DIGIT THREE -->
1362
+ <xsl:template match="char[mt_code_value='0xF0C3' and variation='mathmode']">
1363
+ <mn mathvariant='double-struck'>3</mn>
1364
+ </xsl:template>
1365
+
1366
+ <!-- BLACKBOARD-BOLD DIGIT FOUR -->
1367
+ <xsl:template match="char[mt_code_value='0xF0C4' and variation='mathmode']">
1368
+ <mn mathvariant='double-struck'>4</mn>
1369
+ </xsl:template>
1370
+
1371
+ <!-- BLACKBOARD-BOLD DIGIT FIVE -->
1372
+ <xsl:template match="char[mt_code_value='0xF0C5' and variation='mathmode']">
1373
+ <mn mathvariant='double-struck'>5</mn>
1374
+ </xsl:template>
1375
+
1376
+ <!-- BLACKBOARD-BOLD DIGIT SIX -->
1377
+ <xsl:template match="char[mt_code_value='0xF0C6' and variation='mathmode']">
1378
+ <mn mathvariant='double-struck'>6</mn>
1379
+ </xsl:template>
1380
+
1381
+ <!-- BLACKBOARD-BOLD DIGIT SEVEN -->
1382
+ <xsl:template match="char[mt_code_value='0xF0C7' and variation='mathmode']">
1383
+ <mn mathvariant='double-struck'>7</mn>
1384
+ </xsl:template>
1385
+
1386
+ <!-- BLACKBOARD-BOLD DIGIT EIGHT -->
1387
+ <xsl:template match="char[mt_code_value='0xF0C8' and variation='mathmode']">
1388
+ <mn mathvariant='double-struck'>8</mn>
1389
+ </xsl:template>
1390
+
1391
+ <!-- BLACKBOARD-BOLD DIGIT NINE -->
1392
+ <xsl:template match="char[mt_code_value='0xF0C9' and variation='mathmode']">
1393
+ <mn mathvariant='double-struck'>9</mn>
1394
+ </xsl:template>
1395
+
1396
+
1397
+ <!-- MATHEMATICAL SCRIPT CAPITAL A -->
1398
+ <xsl:template match="char[mt_code_value='0xF100' and variation='mathmode']">
1399
+ <mi mathvariant='script'>A</mi>
1400
+ </xsl:template>
1401
+
1402
+ <!-- MATHEMATICAL SCRIPT CAPITAL B -->
1403
+ <xsl:template match="char[mt_code_value='0x212C' and variation='mathmode']">
1404
+ <mi mathvariant='script'>B</mi>
1405
+ </xsl:template>
1406
+
1407
+ <!-- MATHEMATICAL SCRIPT CAPITAL B -->
1408
+ <xsl:template match="char[mt_code_value='0xF101' and variation='mathmode']">
1409
+ <mi mathvariant='script'>B</mi>
1410
+ </xsl:template>
1411
+
1412
+ <!-- UNSUPPORTED -->
1413
+ <xsl:template match="char[mt_code_value='0xF101' and variation='mathmode']">
1414
+ <xsl:text>Unsupported character</xsl:text>
1415
+ </xsl:template>
1416
+
1417
+ <!-- MATHEMATICAL SCRIPT CAPITAL C -->
1418
+ <xsl:template match="char[mt_code_value='0xF102' and variation='mathmode']">
1419
+ <mi mathvariant='script'>C</mi>
1420
+ </xsl:template>
1421
+
1422
+ <!-- MATHEMATICAL SCRIPT CAPITAL D -->
1423
+ <xsl:template match="char[mt_code_value='0xF103' and variation='mathmode']">
1424
+ <mi mathvariant='script'>D</mi>
1425
+ </xsl:template>
1426
+
1427
+ <!-- MATHEMATICAL SCRIPT CAPITAL E -->
1428
+ <xsl:template match="char[mt_code_value='0x2130' and variation='mathmode']">
1429
+ <mi mathvariant='script'>E</mi>
1430
+ </xsl:template>
1431
+
1432
+ <!-- MATHEMATICAL SCRIPT CAPITAL E -->
1433
+ <xsl:template match="char[mt_code_value='0xF104' and variation='mathmode']">
1434
+ <mi mathvariant='script'>E</mi>
1435
+ </xsl:template>
1436
+
1437
+ <!-- UNSUPPORTED -->
1438
+ <xsl:template match="char[mt_code_value='0xF104' and variation='mathmode']">
1439
+ <xsl:text>Unsupported character</xsl:text>
1440
+ </xsl:template>
1441
+
1442
+ <!-- MATHEMATICAL SCRIPT CAPITAL F -->
1443
+ <xsl:template match="char[mt_code_value='0x2131' and variation='mathmode']">
1444
+ <mi mathvariant='script'>F</mi>
1445
+ </xsl:template>
1446
+
1447
+ <!-- MATHEMATICAL SCRIPT CAPITAL F -->
1448
+ <xsl:template match="char[mt_code_value='0xF105' and variation='mathmode']">
1449
+ <mi mathvariant='script'>F</mi>
1450
+ </xsl:template>
1451
+
1452
+ <!-- UNSUPPORTED -->
1453
+ <xsl:template match="char[mt_code_value='0xF105' and variation='mathmode']">
1454
+ <xsl:text>Unsupported character</xsl:text>
1455
+ </xsl:template>
1456
+
1457
+ <!-- MATHEMATICAL SCRIPT CAPITAL G -->
1458
+ <xsl:template match="char[mt_code_value='0xF106' and variation='mathmode']">
1459
+ <mi mathvariant='script'>G</mi>
1460
+ </xsl:template>
1461
+
1462
+ <!-- MATHEMATICAL SCRIPT CAPITAL H -->
1463
+ <xsl:template match="char[mt_code_value='0x210B' and variation='mathmode']">
1464
+ <mi mathvariant='script'>H</mi>
1465
+ </xsl:template>
1466
+
1467
+ <!-- MATHEMATICAL SCRIPT CAPITAL H -->
1468
+ <xsl:template match="char[mt_code_value='0xF107' and variation='mathmode']">
1469
+ <mi mathvariant='script'>H</mi>
1470
+ </xsl:template>
1471
+
1472
+ <!-- UNSUPPORTED -->
1473
+ <xsl:template match="char[mt_code_value='0xF107' and variation='mathmode']">
1474
+ <xsl:text>Unsupported character</xsl:text>
1475
+ </xsl:template>
1476
+
1477
+ <!-- MATHEMATICAL SCRIPT CAPITAL I -->
1478
+ <xsl:template match="char[mt_code_value='0x2110' and variation='mathmode']">
1479
+ <mi mathvariant='script'>I</mi>
1480
+ </xsl:template>
1481
+
1482
+ <!-- MATHEMATICAL SCRIPT CAPITAL I -->
1483
+ <xsl:template match="char[mt_code_value='0xF108' and variation='mathmode']">
1484
+ <mi mathvariant='script'>I</mi>
1485
+ </xsl:template>
1486
+
1487
+ <!-- UNSUPPORTED -->
1488
+ <xsl:template match="char[mt_code_value='0xF108' and variation='mathmode']">
1489
+ <xsl:text>Unsupported character</xsl:text>
1490
+ </xsl:template>
1491
+
1492
+ <!-- MATHEMATICAL SCRIPT CAPITAL J -->
1493
+ <xsl:template match="char[mt_code_value='0xF109' and variation='mathmode']">
1494
+ <mi mathvariant='script'>J</mi>
1495
+ </xsl:template>
1496
+
1497
+ <!-- MATHEMATICAL SCRIPT CAPITAL K -->
1498
+ <xsl:template match="char[mt_code_value='0xF10A' and variation='mathmode']">
1499
+ <mi mathvariant='script'>K</mi>
1500
+ </xsl:template>
1501
+
1502
+ <!-- MATHEMATICAL SCRIPT CAPITAL L -->
1503
+ <xsl:template match="char[mt_code_value='0x2112' and variation='mathmode']">
1504
+ <mi mathvariant='script'>L</mi>
1505
+ </xsl:template>
1506
+
1507
+ <!-- MATHEMATICAL SCRIPT CAPITAL L -->
1508
+ <xsl:template match="char[mt_code_value='0xF10B' and variation='mathmode']">
1509
+ <mi mathvariant='script'>L</mi>
1510
+ </xsl:template>
1511
+
1512
+ <!-- UNSUPPORTED -->
1513
+ <xsl:template match="char[mt_code_value='0xF10B' and variation='mathmode']">
1514
+ <xsl:text>Unsupported character</xsl:text>
1515
+ </xsl:template>
1516
+
1517
+ <!-- MATHEMATICAL SCRIPT CAPITAL M -->
1518
+ <xsl:template match="char[mt_code_value='0x2133' and variation='mathmode']">
1519
+ <mi mathvariant='script'>M</mi>
1520
+ </xsl:template>
1521
+
1522
+ <!-- MATHEMATICAL SCRIPT CAPITAL M -->
1523
+ <xsl:template match="char[mt_code_value='0xF10C' and variation='mathmode']">
1524
+ <mi mathvariant='script'>M</mi>
1525
+ </xsl:template>
1526
+
1527
+ <!-- UNSUPPORTED -->
1528
+ <xsl:template match="char[mt_code_value='0xF10C' and variation='mathmode']">
1529
+ <xsl:text>Unsupported character</xsl:text>
1530
+ </xsl:template>
1531
+
1532
+ <!-- MATHEMATICAL SCRIPT CAPITAL N -->
1533
+ <xsl:template match="char[mt_code_value='0xF10D' and variation='mathmode']">
1534
+ <mi mathvariant='script'>N</mi>
1535
+ </xsl:template>
1536
+
1537
+ <!-- MATHEMATICAL SCRIPT CAPITAL O -->
1538
+ <xsl:template match="char[mt_code_value='0xF10E' and variation='mathmode']">
1539
+ <mi mathvariant='script'>O</mi>
1540
+ </xsl:template>
1541
+
1542
+ <!-- Weierstrass Elliptic Function -->
1543
+ <xsl:template match="char[mt_code_value='0x2118' and variation='mathmode']">
1544
+ <mi><xsl:text disable-output-escaping="yes">&amp;#x2118;</xsl:text></mi>
1545
+ </xsl:template>
1546
+
1547
+ <!-- MATHEMATICAL SCRIPT CAPITAL P -->
1548
+ <xsl:template match="char[mt_code_value='0x2118' and variation='mathmode']">
1549
+ <mi><xsl:text disable-output-escaping="yes">&amp;#x1D4AB</xsl:text>;</mi>
1550
+ </xsl:template>
1551
+
1552
+ <!-- MATHEMATICAL SCRIPT CAPITAL P -->
1553
+ <xsl:template match="char[mt_code_value='0xF10F' and variation='mathmode']">
1554
+ <mi mathvariant='script'>P</mi>
1555
+ </xsl:template>
1556
+
1557
+ <!-- UNSUPPORTED -->
1558
+ <xsl:template match="char[mt_code_value='0xF10F' and variation='mathmode']">
1559
+ <xsl:text>Unsupported character</xsl:text>
1560
+ </xsl:template>
1561
+
1562
+ <!-- MATHEMATICAL SCRIPT CAPITAL Q -->
1563
+ <xsl:template match="char[mt_code_value='0xF110' and variation='mathmode']">
1564
+ <mi mathvariant='script'>Q</mi>
1565
+ </xsl:template>
1566
+
1567
+ <!-- MATHEMATICAL SCRIPT CAPITAL R -->
1568
+ <xsl:template match="char[mt_code_value='0x211B' and variation='mathmode']">
1569
+ <mi mathvariant='script'>R</mi>
1570
+ </xsl:template>
1571
+
1572
+ <!-- MATHEMATICAL SCRIPT CAPITAL R -->
1573
+ <xsl:template match="char[mt_code_value='0xF111' and variation='mathmode']">
1574
+ <mi mathvariant='script'>R</mi>
1575
+ </xsl:template>
1576
+
1577
+ <!-- UNSUPPORTED -->
1578
+ <xsl:template match="char[mt_code_value='0xF111' and variation='mathmode']">
1579
+ <xsl:text>Unsupported character</xsl:text>
1580
+ </xsl:template>
1581
+
1582
+ <!-- MATHEMATICAL SCRIPT CAPITAL S -->
1583
+ <xsl:template match="char[mt_code_value='0xF112' and variation='mathmode']">
1584
+ <mi mathvariant='script'>S</mi>
1585
+ </xsl:template>
1586
+
1587
+ <!-- MATHEMATICAL SCRIPT CAPITAL T -->
1588
+ <xsl:template match="char[mt_code_value='0xF113' and variation='mathmode']">
1589
+ <mi mathvariant='script'>T</mi>
1590
+ </xsl:template>
1591
+
1592
+ <!-- MATHEMATICAL SCRIPT CAPITAL U -->
1593
+ <xsl:template match="char[mt_code_value='0xF114' and variation='mathmode']">
1594
+ <mi mathvariant='script'>U</mi>
1595
+ </xsl:template>
1596
+
1597
+ <!-- MATHEMATICAL SCRIPT CAPITAL V -->
1598
+ <xsl:template match="char[mt_code_value='0xF115' and variation='mathmode']">
1599
+ <mi mathvariant='script'>V</mi>
1600
+ </xsl:template>
1601
+
1602
+ <!-- MATHEMATICAL SCRIPT CAPITAL W -->
1603
+ <xsl:template match="char[mt_code_value='0xF116' and variation='mathmode']">
1604
+ <mi mathvariant='script'>W</mi>
1605
+ </xsl:template>
1606
+
1607
+ <!-- MATHEMATICAL SCRIPT CAPITAL X -->
1608
+ <xsl:template match="char[mt_code_value='0xF117' and variation='mathmode']">
1609
+ <mi mathvariant='script'>X</mi>
1610
+ </xsl:template>
1611
+
1612
+ <!-- MATHEMATICAL SCRIPT CAPITAL Y -->
1613
+ <xsl:template match="char[mt_code_value='0xF118' and variation='mathmode']">
1614
+ <mi mathvariant='script'>Y</mi>
1615
+ </xsl:template>
1616
+
1617
+ <!-- MATHEMATICAL SCRIPT CAPITAL Z -->
1618
+ <xsl:template match="char[mt_code_value='0xF119' and variation='mathmode']">
1619
+ <mi mathvariant='script'>Z</mi>
1620
+ </xsl:template>
1621
+
1622
+ <!-- MATHEMATICAL SCRIPT SMALL A -->
1623
+ <xsl:template match="char[mt_code_value='0xF11A' and variation='mathmode']">
1624
+ <mi mathvariant='script'>a</mi>
1625
+ </xsl:template>
1626
+
1627
+ <!-- MATHEMATICAL SCRIPT SMALL B -->
1628
+ <xsl:template match="char[mt_code_value='0xF11B' and variation='mathmode']">
1629
+ <mi mathvariant='script'>b</mi>
1630
+ </xsl:template>
1631
+
1632
+ <!-- MATHEMATICAL SCRIPT SMALL C -->
1633
+ <xsl:template match="char[mt_code_value='0xF11C' and variation='mathmode']">
1634
+ <mi mathvariant='script'>c</mi>
1635
+ </xsl:template>
1636
+
1637
+ <!-- MATHEMATICAL SCRIPT SMALL D -->
1638
+ <xsl:template match="char[mt_code_value='0xF11D' and variation='mathmode']">
1639
+ <mi mathvariant='script'>d</mi>
1640
+ </xsl:template>
1641
+
1642
+ <!-- MATHEMATICAL SCRIPT SMALL E -->
1643
+ <xsl:template match="char[mt_code_value='0xF11E' and variation='mathmode']">
1644
+ <mi mathvariant='script'>e</mi>
1645
+ </xsl:template>
1646
+
1647
+ <!-- MATHEMATICAL SCRIPT SMALL E -->
1648
+ <xsl:template match="char[mt_code_value='0x212F' and variation='mathmode']">
1649
+ <mi mathvariant='script'>e</mi>
1650
+ </xsl:template>
1651
+
1652
+ <!-- UNSUPPORTED -->
1653
+ <xsl:template match="char[mt_code_value='0xF11E' and variation='mathmode']">
1654
+ <xsl:text>Unsupported character</xsl:text>
1655
+ </xsl:template>
1656
+
1657
+ <!-- MATHEMATICAL SCRIPT SMALL F -->
1658
+ <xsl:template match="char[mt_code_value='0xF11F' and variation='mathmode']">
1659
+ <mi mathvariant='script'>f</mi>
1660
+ </xsl:template>
1661
+
1662
+ <!-- MATHEMATICAL SCRIPT SMALL G -->
1663
+ <xsl:template match="char[mt_code_value='0x210A' and variation='mathmode']">
1664
+ <mi mathvariant='script'>g</mi>
1665
+ </xsl:template>
1666
+
1667
+ <!-- MATHEMATICAL SCRIPT SMALL G -->
1668
+ <xsl:template match="char[mt_code_value='0xF120' and variation='mathmode']">
1669
+ <mi mathvariant='script'>g</mi>
1670
+ </xsl:template>
1671
+
1672
+ <!-- UNSUPPORTED -->
1673
+ <xsl:template match="char[mt_code_value='0xF120' and variation='mathmode']">
1674
+ <xsl:text>Unsupported character</xsl:text>
1675
+ </xsl:template>
1676
+
1677
+ <!-- MATHEMATICAL SCRIPT SMALL H -->
1678
+ <xsl:template match="char[mt_code_value='0xF121' and variation='mathmode']">
1679
+ <mi mathvariant='script'>h</mi>
1680
+ </xsl:template>
1681
+
1682
+ <!-- MATHEMATICAL SCRIPT SMALL I -->
1683
+ <xsl:template match="char[mt_code_value='0xF122' and variation='mathmode']">
1684
+ <mi mathvariant='script'>i</mi>
1685
+ </xsl:template>
1686
+
1687
+ <!-- MATHEMATICAL SCRIPT SMALL J -->
1688
+ <xsl:template match="char[mt_code_value='0xF123' and variation='mathmode']">
1689
+ <mi mathvariant='script'>j</mi>
1690
+ </xsl:template>
1691
+
1692
+ <!-- MATHEMATICAL SCRIPT SMALL K -->
1693
+ <xsl:template match="char[mt_code_value='0xF124' and variation='mathmode']">
1694
+ <mi mathvariant='script'>k</mi>
1695
+ </xsl:template>
1696
+
1697
+ <!-- MATHEMATICAL SCRIPT SMALL L -->
1698
+ <xsl:template match="char[mt_code_value='0x2113' and variation='mathmode']">
1699
+ <mi mathvariant='script'>l</mi>
1700
+ </xsl:template>
1701
+
1702
+ <!-- MATHEMATICAL SCRIPT SMALL L -->
1703
+ <xsl:template match="char[mt_code_value='0xF125' and variation='mathmode']">
1704
+ <mi mathvariant='script'>l</mi>
1705
+ </xsl:template>
1706
+
1707
+ <!-- UNSUPPORTED -->
1708
+ <xsl:template match="char[mt_code_value='0xF125' and variation='mathmode']">
1709
+ <xsl:text>Unsupported character</xsl:text>
1710
+ </xsl:template>
1711
+
1712
+ <!-- MATHEMATICAL SCRIPT SMALL M -->
1713
+ <xsl:template match="char[mt_code_value='0xF126' and variation='mathmode']">
1714
+ <mi mathvariant='script'>m</mi>
1715
+ </xsl:template>
1716
+
1717
+ <!-- MATHEMATICAL SCRIPT SMALL N -->
1718
+ <xsl:template match="char[mt_code_value='0xF127' and variation='mathmode']">
1719
+ <mi mathvariant='script'>n</mi>
1720
+ </xsl:template>
1721
+
1722
+ <!-- MATHEMATICAL SCRIPT SMALL O -->
1723
+ <xsl:template match="char[mt_code_value='0x2134' and variation='mathmode']">
1724
+ <mi mathvariant='script'>o</mi>
1725
+ </xsl:template>
1726
+
1727
+ <!-- MATHEMATICAL SCRIPT SMALL O -->
1728
+ <xsl:template match="char[mt_code_value='0xF128' and variation='mathmode']">
1729
+ <mi mathvariant='script'>o</mi>
1730
+ </xsl:template>
1731
+
1732
+ <!-- UNSUPPORTED -->
1733
+ <xsl:template match="char[mt_code_value='0xF128' and variation='mathmode']">
1734
+ <xsl:text>Unsupported character</xsl:text>
1735
+ </xsl:template>
1736
+
1737
+ <!-- MATHEMATICAL SCRIPT SMALL P -->
1738
+ <xsl:template match="char[mt_code_value='0xF129' and variation='mathmode']">
1739
+ <mi mathvariant='script'>p</mi>
1740
+ </xsl:template>
1741
+
1742
+ <!-- MATHEMATICAL SCRIPT SMALL Q -->
1743
+ <xsl:template match="char[mt_code_value='0xF12A' and variation='mathmode']">
1744
+ <mi mathvariant='script'>q</mi>
1745
+ </xsl:template>
1746
+
1747
+ <!-- MATHEMATICAL SCRIPT SMALL R -->
1748
+ <xsl:template match="char[mt_code_value='0xF12B' and variation='mathmode']">
1749
+ <mi mathvariant='script'>r</mi>
1750
+ </xsl:template>
1751
+
1752
+ <!-- MATHEMATICAL SCRIPT SMALL S -->
1753
+ <xsl:template match="char[mt_code_value='0xF12C' and variation='mathmode']">
1754
+ <mi mathvariant='script'>s</mi>
1755
+ </xsl:template>
1756
+
1757
+ <!-- MATHEMATICAL SCRIPT SMALL T -->
1758
+ <xsl:template match="char[mt_code_value='0xF12D' and variation='mathmode']">
1759
+ <mi mathvariant='script'>t</mi>
1760
+ </xsl:template>
1761
+
1762
+ <!-- MATHEMATICAL SCRIPT SMALL U -->
1763
+ <xsl:template match="char[mt_code_value='0xF12E' and variation='mathmode']">
1764
+ <mi mathvariant='script'>u</mi>
1765
+ </xsl:template>
1766
+
1767
+ <!-- MATHEMATICAL SCRIPT SMALL V -->
1768
+ <xsl:template match="char[mt_code_value='0xF12F' and variation='mathmode']">
1769
+ <mi mathvariant='script'>v</mi>
1770
+ </xsl:template>
1771
+
1772
+ <!-- MATHEMATICAL SCRIPT SMALL W -->
1773
+ <xsl:template match="char[mt_code_value='0xF130' and variation='mathmode']">
1774
+ <mi mathvariant='script'>w</mi>
1775
+ </xsl:template>
1776
+
1777
+ <!-- MATHEMATICAL SCRIPT SMALL X -->
1778
+ <xsl:template match="char[mt_code_value='0xF131' and variation='mathmode']">
1779
+ <mi mathvariant='script'>x</mi>
1780
+ </xsl:template>
1781
+
1782
+ <!-- MATHEMATICAL SCRIPT SMALL Y -->
1783
+ <xsl:template match="char[mt_code_value='0xF132' and variation='mathmode']">
1784
+ <mi mathvariant='script'>y</mi>
1785
+ </xsl:template>
1786
+
1787
+ <!-- MATHEMATICAL SCRIPT SMALL Z -->
1788
+ <xsl:template match="char[mt_code_value='0xF133' and variation='mathmode']">
1789
+ <mi mathvariant='script'>z</mi>
1790
+ </xsl:template>
1791
+
1792
+ <!-- ZERO WIDTH NO-BREAK SPACE -->
1793
+ <xsl:template match="char[mt_code_value='0xFEFF' and variation='mathmode']">
1794
+ <mtext><xsl:text disable-output-escaping="yes">&amp;#xFEFF;</xsl:text></mtext>
1795
+ </xsl:template>
1796
+
1797
+ <xsl:template match="char[mt_code_value='0x2212' and variation='mathmode']">
1798
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x2212;</xsl:text></mo>
1799
+ </xsl:template>
1800
+
1801
+ <!-- DifferentialD -->
1802
+ <xsl:template match="char[mt_code_value='0xED10' and variation='mathmode']">
1803
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x2146;</xsl:text></mo>
1804
+ </xsl:template>
1805
+
1806
+ <!-- DifferentialD -->
1807
+ <xsl:template match="char[mt_code_value='0xED10' and variation='textmode']">
1808
+ <xsl:text disable-output-escaping="yes">&amp;#x2146;</xsl:text>
1809
+ </xsl:template>
1810
+
1811
+ <!-- ExponentialE -->
1812
+ <xsl:template match="char[mt_code_value='0xED11' and variation='mathmode']">
1813
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x2147;</xsl:text></mo>
1814
+ </xsl:template>
1815
+
1816
+ <!-- ExponentialE -->
1817
+ <xsl:template match="char[mt_code_value='0xED11' and variation='textmode']">
1818
+ <xsl:text disable-output-escaping="yes">&amp;#x2147;</xsl:text>
1819
+ </xsl:template>
1820
+
1821
+ <!-- ImaginaryI -->
1822
+ <xsl:template match="char[mt_code_value='0xED12' and variation='mathmode']">
1823
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x2148;</xsl:text></mo>
1824
+ </xsl:template>
1825
+
1826
+ <!-- ImaginaryI -->
1827
+ <xsl:template match="char[mt_code_value='0xED12' and variation='textmode']">
1828
+ <xsl:text disable-output-escaping="yes">&amp;#x2148;</xsl:text>
1829
+ </xsl:template>
1830
+
1831
+ <!-- ImaginaryJ -->
1832
+ <xsl:template match="char[mt_code_value='0xED13' and variation='mathmode']">
1833
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x2149;</xsl:text></mo>
1834
+ </xsl:template>
1835
+
1836
+ <!-- ImaginaryJ -->
1837
+ <xsl:template match="char[mt_code_value='0xED13' and variation='textmode']">
1838
+ <xsl:text disable-output-escaping="yes">&amp;#x2149;</xsl:text>
1839
+ </xsl:template>
1840
+
1841
+ <!-- CapitalDifferentialD -->
1842
+ <xsl:template match="char[mt_code_value='0xED16' and variation='mathmode']">
1843
+ <mo><xsl:text disable-output-escaping="yes">&amp;#x2145;</xsl:text></mo>
1844
+ </xsl:template>
1845
+
1846
+ <!-- CapitalDifferentialD -->
1847
+ <xsl:template match="char[mt_code_value='0xED16' and variation='textmode']">
1848
+ <xsl:text disable-output-escaping="yes">&amp;#x2145;</xsl:text>
1849
+ </xsl:template>
1850
+
1851
+
1852
+
1853
+
35
1854
  </xsl:stylesheet>