math_ml 0.9 → 0.10

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,549 @@
1
+ module MathML::LaTeX::Builtin
2
+ module Symbol
3
+ MAP = {
4
+ "{"=>[[:s,:o],""],
5
+ "}"=>[[:s,:o],""],
6
+ "#"=>[[:s,:o],""],
7
+ "$"=>[[:s,:o],""],
8
+ "&"=>[[:s,:o],:amp],
9
+ "_"=>[[:s,:o],""],
10
+ "%"=>[[:s,:o],""],
11
+ ","=>nil,
12
+ "varepsilon"=>[[:s,:I],],
13
+ "mathdollar"=>[[:s,:o],"$"],
14
+ "lbrace"=>[[:s],],
15
+ "rbrace"=>[[:s],],
16
+ "P"=>[[:s,:o],:para],
17
+ "mathparagraph"=>[[:s,:o],:para],
18
+ "S"=>[[:s,:o],:sect],
19
+ "mathsection"=>[[:s,:o],:sect],
20
+ "dag"=>[[:s,:o],:dagger],
21
+ "dagger"=>[[:s],],
22
+ "ddag"=>[[:s,:o],:ddagger],
23
+ "ddagger"=>[[:s],],
24
+ "copyright"=>[[:s,:o],:copy],
25
+ "pounds"=>[[:s,:o],:pound],
26
+ "mathsterling"=>[[:s,:o],:pound],
27
+ "dots"=>[[:s,:o],:mldr],
28
+ "mathellipsis"=>[[:s,:o],:mldr],
29
+ "ldots"=>[[:s,:o],:mldr],
30
+ "ensuremath"=>nil,
31
+ "|"=>[[:s,:o],:DoubleVerticalBar],
32
+ "mho"=>[[:s],],
33
+ "Join"=>[[:s,:o],:bowtie],
34
+ "Box"=>[[:s,:o],:square],
35
+ "Diamond"=>[[:s],],
36
+ "leadsto"=>[[:s,:o],:zigrarr],
37
+ "sqsubset"=>[[:s],],
38
+ "sqsupset"=>[[:s],],
39
+ "lhd"=>[[:s,:o],:vltri],
40
+ "unlhd"=>[[:s,:o],:ltrie],
41
+ "rhd"=>[[:s,:o],:vrtri],
42
+ "unrhd"=>[[:s,:o],:rtrie],
43
+ "log"=>[[:s,:i],""],
44
+ "lg"=>[[:s,:i],""],
45
+ "ln"=>[[:s,:i],""],
46
+ "lim"=>[[:u,:i],""],
47
+ "limsup"=>[[:u,:i],"lim sup"],
48
+ "liminf"=>[[:u,:i],"lim inf"],
49
+ "sin"=>[[:s,:i],""],
50
+ "arcsin"=>[[:s,:i],""],
51
+ "sinh"=>[[:s,:i],""],
52
+ "cos"=>[[:s,:i],""],
53
+ "arccos"=>[[:s,:i],""],
54
+ "cosh"=>[[:s,:i],""],
55
+ "tan"=>[[:s,:i],""],
56
+ "arctan"=>[[:s,:i],""],
57
+ "tanh"=>[[:s,:i],""],
58
+ "cot"=>[[:s,:i],""],
59
+ "coth"=>[[:s,:i],""],
60
+ "sec"=>[[:s,:i],""],
61
+ "csc"=>[[:s,:i],""],
62
+ "max"=>[[:u,:i],""],
63
+ "min"=>[[:u,:i],""],
64
+ "sup"=>[[:u,:i],""],
65
+ "inf"=>[[:u,:i],""],
66
+ "arg"=>[[:s,:i],""],
67
+ "ker"=>[[:s,:i],""],
68
+ "dim"=>[[:s,:i],""],
69
+ "hom"=>[[:s,:i],""],
70
+ "det"=>[[:u,:i],""],
71
+ "exp"=>[[:s,:i],""],
72
+ "Pr"=>[[:u,:i],""],
73
+ "gcd"=>[[:u,:i],""],
74
+ "deg"=>[[:s,:i],""],
75
+ "prime"=>[[:s],],
76
+ "alpha"=>[[:s,:I],],
77
+ "beta"=>[[:s,:I],],
78
+ "gamma"=>[[:s,:I],],
79
+ "delta"=>[[:s,:I],],
80
+ "epsilon"=>[[:s,:I],],
81
+ "zeta"=>[[:s,:I],],
82
+ "eta"=>[[:s,:I],],
83
+ "theta"=>[[:s,:I],],
84
+ "iota"=>[[:s,:I],],
85
+ "kappa"=>[[:s,:I],],
86
+ "lambda"=>[[:s,:I],],
87
+ "mu"=>[[:s,:I],],
88
+ "nu"=>[[:s,:I],],
89
+ "xi"=>[[:s,:I],],
90
+ "pi"=>[[:s,:I],],
91
+ "rho"=>[[:s,:I],],
92
+ "sigma"=>[[:s,:I],],
93
+ "tau"=>[[:s,:I],],
94
+ "upsilon"=>[[:s,:I],],
95
+ "phi"=>[[:s,:I],],
96
+ "chi"=>[[:s,:I],],
97
+ "psi"=>[[:s,:I],],
98
+ "omega"=>[[:s,:I],],
99
+ "vartheta"=>[[:s,:I],],
100
+ "varpi"=>[[:s,:I],],
101
+ "varrho"=>[[:s,:I],],
102
+ "varsigma"=>[[:s,:I],],
103
+ "varphi"=>[[:s,:I],],
104
+ "Gamma"=>[[:s,:i],],
105
+ "Delta"=>[[:s,:i],],
106
+ "Theta"=>[[:s,:i],],
107
+ "Lambda"=>[[:s,:i],],
108
+ "Xi"=>[[:s,:i],],
109
+ "Pi"=>[[:s,:i],],
110
+ "Sigma"=>[[:s,:i],],
111
+ "Upsilon"=>[[:s,:i],:Upsi],
112
+ "Phi"=>[[:s,:i],],
113
+ "Psi"=>[[:s,:i],],
114
+ "Omega"=>[[:s,:i],],
115
+ "aleph"=>[[:s,:i],],
116
+ "hbar"=>[[:s,:i],:hslash],
117
+ "imath"=>[[:s,:i],],
118
+ "jmath"=>[[:s,:i],],
119
+ "ell"=>[[:s],],
120
+ "wp"=>[[:s],],
121
+ "Re"=>[[:s,:i],],
122
+ "Im"=>[[:s,:i],],
123
+ "partial"=>[[:s,:o],:part],
124
+ "infty"=>[[:s,:n],:infin],
125
+ "emptyset"=>[[:s,:i],:empty],
126
+ "nabla"=>[[:s,:i],],
127
+ "surd"=>[[:s,:o],:Sqrt],
128
+ "top"=>[[:s],],
129
+ "bot"=>[[:s],],
130
+ "angle"=>[[:s],],
131
+ "not"=>[[:s],],
132
+ "triangle"=>[[:s],],
133
+ "forall"=>[[:s],],
134
+ "exists"=>[[:s,:o],:exist],
135
+ "neg"=>[[:s,:o],:not],
136
+ "lnot"=>[[:s,:o],:not],
137
+ "flat"=>[[:s],],
138
+ "natural"=>[[:s],],
139
+ "sharp"=>[[:s],],
140
+ "clubsuit"=>[[:s],],
141
+ "diamondsuit"=>[[:s],],
142
+ "heartsuit"=>[[:s],],
143
+ "spadesuit"=>[[:s],],
144
+ "coprod"=>[[:u],],
145
+ "bigvee"=>[[:u],],
146
+ "bigwedge"=>[[:u],],
147
+ "biguplus"=>[[:u],],
148
+ "bigcap"=>[[:u],],
149
+ "bigcup"=>[[:u],],
150
+ "intop"=>[[:u,:o],:int],
151
+ "int"=>[[:s,:o],],
152
+ "prod"=>[[:u],],
153
+ "sum"=>[[:u],],
154
+ "bigotimes"=>[[:u],],
155
+ "bigoplus"=>[[:u],],
156
+ "bigodot"=>[[:u],],
157
+ "ointop"=>[[:u,:o],:oint],
158
+ "oint"=>[[:s],],
159
+ "bigsqcup"=>[[:u],],
160
+ "smallint"=>[[:u,:o],:int],
161
+ "triangleleft"=>[[:s],],
162
+ "triangleright"=>[[:s],],
163
+ "bigtriangleup"=>[[:s],],
164
+ "bigtriangledown"=>[[:s],],
165
+ "wedge"=>[[:s],],
166
+ "land"=>[[:s,:o],:wedge],
167
+ "vee"=>[[:s],],
168
+ "lor"=>[[:s,:o],:vee],
169
+ "cap"=>[[:s],],
170
+ "cup"=>[[:s],],
171
+ "sqcap"=>[[:s],],
172
+ "sqcup"=>[[:s],],
173
+ "uplus"=>[[:s],],
174
+ "amalg"=>[[:s],],
175
+ "diamond"=>[[:s],],
176
+ "bullet"=>[[:s],],
177
+ "wr"=>[[:s],],
178
+ "div"=>[[:s],],
179
+ "odot"=>[[:s],],
180
+ "oslash"=>[[:s],],
181
+ "otimes"=>[[:s],],
182
+ "ominus"=>[[:s],],
183
+ "oplus"=>[[:s],],
184
+ "mp"=>[[:s],],
185
+ "pm"=>[[:s],],
186
+ "circ"=>[[:s,:o],:cir],
187
+ "bigcirc"=>[[:s],],
188
+ "setminus"=>[[:s],],
189
+ "cdot"=>[[:s,:o],:sdot],
190
+ "ast"=>[[:s],],
191
+ "times"=>[[:s],],
192
+ "star"=>[[:s],],
193
+ "propto"=>[[:s],],
194
+ "sqsubseteq"=>[[:s],],
195
+ "sqsupseteq"=>[[:s],],
196
+ "parallel"=>[[:s],],
197
+ "mid"=>[[:s],],
198
+ "dashv"=>[[:s],],
199
+ "vdash"=>[[:s],],
200
+ "nearrow"=>[[:s],],
201
+ "searrow"=>[[:s],],
202
+ "nwarrow"=>[[:s],],
203
+ "swarrow"=>[[:s],],
204
+ "Leftrightarrow"=>[[:s],],
205
+ "Leftarrow"=>[[:s],],
206
+ "Rightarrow"=>[[:s],],
207
+ "neq"=>[[:s,:o],:ne],
208
+ "ne"=>[[:s],],
209
+ "leq"=>[[:s],],
210
+ "le"=>[[:s],],
211
+ "geq"=>[[:s],],
212
+ "ge"=>[[:s],],
213
+ "succ"=>[[:s],],
214
+ "prec"=>[[:s],],
215
+ "approx"=>[[:s],],
216
+ "succeq"=>[[:s,:o],:sccue],
217
+ "preceq"=>[[:s,:o],:prcue],
218
+ "supset"=>[[:s],],
219
+ "subset"=>[[:s],],
220
+ "supseteq"=>[[:s],],
221
+ "subseteq"=>[[:s],],
222
+ "in"=>[[:s],],
223
+ "ni"=>[[:s],],
224
+ "owns"=>[[:s,:o],:ni],
225
+ "gg"=>[[:s],],
226
+ "ll"=>[[:s],],
227
+ "leftrightarrow"=>[[:s],],
228
+ "leftarrow"=>[[:s],],
229
+ "gets"=>[[:s,:o],:leftarrow],
230
+ "rightarrow"=>[[:s],],
231
+ "to"=>[[:s,:o],:rightarrow],
232
+ "mapstochar"=>[[:s,:o],:vdash],
233
+ "mapsto"=>[[:s],],
234
+ "sim"=>[[:s],],
235
+ "simeq"=>[[:s],],
236
+ "perp"=>[[:s],],
237
+ "equiv"=>[[:s],],
238
+ "asymp"=>[[:s],],
239
+ "smile"=>[[:s],],
240
+ "frown"=>[[:s],],
241
+ "leftharpoonup"=>[[:s],],
242
+ "leftharpoondown"=>[[:s],],
243
+ "rightharpoonup"=>[[:s],],
244
+ "rightharpoondown"=>[[:s],],
245
+ "cong"=>[[:s],],
246
+ "notin"=>[[:s],],
247
+ "rightleftharpoons"=>[[:s],],
248
+ "doteq"=>[[:s],],
249
+ "joinrel"=>nil,
250
+ "relbar"=>[[:s,:o],"-"],
251
+ "Relbar"=>[[:s,:o],"="],
252
+ "lhook"=>[[:s,:o],:sub],
253
+ "hookrightarrow"=>[[:s],],
254
+ "rhook"=>[[:s,:o],:sup],
255
+ "hookleftarrow"=>[[:s],],
256
+ "bowtie"=>[[:s],],
257
+ "models"=>[[:s],],
258
+ "Longrightarrow"=>[[:s],],
259
+ "longrightarrow"=>[[:s],],
260
+ "longleftarrow"=>[[:s],],
261
+ "Longleftarrow"=>[[:s],],
262
+ "longmapsto"=>[[:s,:o],:mapsto],
263
+ "longleftrightarrow"=>[[:s],],
264
+ "Longleftrightarrow"=>[[:s],],
265
+ "iff"=>[[:s],],
266
+ "ldotp"=>[[:s,:o],"."],
267
+ "cdotp"=>[[:s,:o],:cdot],
268
+ "colon"=>[[:s],],
269
+ "cdots"=>[[:s,:o],:ctdot],
270
+ "vdots"=>[[:s,:o],:vellip],
271
+ "ddots"=>[[:s,:o],:dtdot],
272
+ "braceld"=>[[:s,:o],0x25dc],
273
+ "bracerd"=>[[:s,:o],0x25dd],
274
+ "bracelu"=>[[:s,:o],0x25df],
275
+ "braceru"=>[[:s,:o],0x25de],
276
+ "lmoustache"=>[[:s],],
277
+ "rmoustache"=>[[:s],],
278
+ "arrowvert"=>[[:s,:o],:vert],
279
+ "Arrowvert"=>[[:s,:o],:DoubleVerticalBar],
280
+ "Vert"=>[[:s,:o],:DoubleVerticalBar],
281
+ "vert"=>[[:s],],
282
+ "uparrow"=>[[:s],],
283
+ "downarrow"=>[[:s],],
284
+ "updownarrow"=>[[:s],],
285
+ "Uparrow"=>[[:s],],
286
+ "Downarrow"=>[[:s],],
287
+ "Updownarrow"=>[[:s],],
288
+ "backslash"=>[[:s,:o],"\\"],
289
+ "rangle"=>[[:s],],
290
+ "langle"=>[[:s],],
291
+ "rceil"=>[[:s],],
292
+ "lceil"=>[[:s],],
293
+ "rfloor"=>[[:s],],
294
+ "lfloor"=>[[:s],],
295
+ "lgroup"=>[[:s,:o],0x2570],
296
+ "rgroup"=>[[:s,:o],0x256f],
297
+ "bracevert"=>[[:s,:o],:vert],
298
+ "mathunderscore"=>[[:s,:o],"_"],
299
+ "square"=>[[:s],],
300
+ "rightsquigarrow"=>[[:s],],
301
+ "lozenge"=>[[:s],],
302
+ "vartriangleright"=>[[:s],],
303
+ "vartriangleleft"=>[[:s],],
304
+ "trianglerighteq"=>[[:s],],
305
+ "trianglelefteq"=>[[:s],],
306
+ "boxdot"=>[[:s,:o],:dotsquare],
307
+ "boxplus"=>[[:s],],
308
+ "boxtimes"=>[[:s],],
309
+ "blacksquare"=>[[:s],],
310
+ "centerdot"=>[[:s],],
311
+ "blacklozenge"=>[[:s],],
312
+ "circlearrowright"=>[[:s],],
313
+ "circlearrowleft"=>[[:s],],
314
+ "leftrightharpoons"=>[[:s],],
315
+ "boxminus"=>[[:s],],
316
+ "Vdash"=>[[:s],],
317
+ "Vvdash"=>[[:s],],
318
+ "vDash"=>[[:s],],
319
+ "twoheadrightarrow"=>[[:s],],
320
+ "twoheadleftarrow"=>[[:s],],
321
+ "leftleftarrows"=>[[:s],],
322
+ "rightrightarrows"=>[[:s],],
323
+ "upuparrows"=>[[:s],],
324
+ "downdownarrows"=>[[:s],],
325
+ "upharpoonright"=>[[:s],],
326
+ "restriction"=>[[:s,:o],:upharpoonright],
327
+ "downharpoonright"=>[[:s],],
328
+ "upharpoonleft"=>[[:s],],
329
+ "downharpoonleft"=>[[:s],],
330
+ "rightarrowtail"=>[[:s],],
331
+ "leftarrowtail"=>[[:s],],
332
+ "leftrightarrows"=>[[:s],],
333
+ "rightleftarrows"=>[[:s],],
334
+ "Lsh"=>[[:s],],
335
+ "Rsh"=>[[:s],],
336
+ "leftrightsquigarrow"=>[[:s],],
337
+ "looparrowleft"=>[[:s],],
338
+ "looparrowright"=>[[:s],],
339
+ "circeq"=>[[:s],],
340
+ "succsim"=>[[:s],],
341
+ "gtrsim"=>[[:s],],
342
+ "gtrapprox"=>[[:s],],
343
+ "multimap"=>[[:s],],
344
+ "therefore"=>[[:s],],
345
+ "because"=>[[:s],],
346
+ "doteqdot"=>[[:s],],
347
+ "Doteq"=>[[:s,:o],:doteqdot],
348
+ "triangleq"=>[[:s],],
349
+ "precsim"=>[[:s],],
350
+ "lesssim"=>[[:s],],
351
+ "lessapprox"=>[[:s],],
352
+ "eqslantless"=>[[:s],],
353
+ "eqslantgtr"=>[[:s],],
354
+ "curlyeqprec"=>[[:s],],
355
+ "curlyeqsucc"=>[[:s],],
356
+ "preccurlyeq"=>[[:s],],
357
+ "leqq"=>[[:s],],
358
+ "leqslant"=>[[:s,:o],:leq],
359
+ "lessgtr"=>[[:s],],
360
+ "backprime"=>[[:s],],
361
+ "risingdotseq"=>[[:s],],
362
+ "fallingdotseq"=>[[:s],],
363
+ "succcurlyeq"=>[[:s],],
364
+ "geqq"=>[[:s],],
365
+ "geqslant"=>[[:s,:o],:geq],
366
+ "gtrless"=>[[:s],],
367
+ "bigstar"=>[[:s],],
368
+ "between"=>[[:s],],
369
+ "blacktriangledown"=>[[:s],],
370
+ "blacktriangleright"=>[[:s],],
371
+ "blacktriangleleft"=>[[:s],],
372
+ "vartriangle"=>[[:s,:o],:triangle],
373
+ "blacktriangle"=>[[:s],],
374
+ "triangledown"=>[[:s],],
375
+ "eqcirc"=>[[:s],],
376
+ "lesseqgtr"=>[[:s],],
377
+ "gtreqless"=>[[:s],],
378
+ "lesseqqgtr"=>[[:s],],
379
+ "gtreqqless"=>[[:s],],
380
+ "Rrightarrow"=>[[:s],],
381
+ "Lleftarrow"=>[[:s],],
382
+ "veebar"=>[[:s],],
383
+ "barwedge"=>[[:s],],
384
+ "doublebarwedge"=>[[:s],],
385
+ "measuredangle"=>[[:s],],
386
+ "sphericalangle"=>[[:s,:o],:angsph],
387
+ "varpropto"=>[[:s],],
388
+ "smallsmile"=>[[:s,:o],:smile],
389
+ "smallfrown"=>[[:s,:o],:frown],
390
+ "Subset"=>[[:s],],
391
+ "Supset"=>[[:s],],
392
+ "Cup"=>[[:s],],
393
+ "doublecup"=>[[:s,:o],:Cup],
394
+ "Cap"=>[[:s],],
395
+ "doublecap"=>[[:s,:o],:Cap],
396
+ "curlywedge"=>[[:s],],
397
+ "curlyvee"=>[[:s],],
398
+ "leftthreetimes"=>[[:s],],
399
+ "rightthreetimes"=>[[:s],],
400
+ "subseteqq"=>[[:s],],
401
+ "supseteqq"=>[[:s],],
402
+ "bumpeq"=>[[:s],],
403
+ "Bumpeq"=>[[:s],],
404
+ "lll"=>[[:s,:o],:Ll],
405
+ "llless"=>[[:s,:o],:Ll],
406
+ "ggg"=>[[:s],],
407
+ "gggtr"=>[[:s,:o],:ggg],
408
+ "circledS"=>[[:s],],
409
+ "pitchfork"=>[[:s],],
410
+ "dotplus"=>[[:s],],
411
+ "backsim"=>[[:s],],
412
+ "backsimeq"=>[[:s],],
413
+ "complement"=>[[:s],],
414
+ "intercal"=>[[:s],],
415
+ "circledcirc"=>[[:s],],
416
+ "circledast"=>[[:s],],
417
+ "circleddash"=>[[:s],],
418
+ "lvertneqq"=>[[:s,:o],:lneqq],
419
+ "gvertneqq"=>[[:s,:o],:gneqq],
420
+ "nleq"=>[[:s,:o],0x2270],
421
+ "ngeq"=>[[:s,:o],0x2271],
422
+ "nless"=>[[:s],],
423
+ "ngtr"=>[[:s],],
424
+ "nprec"=>[[:s],],
425
+ "nsucc"=>[[:s],],
426
+ "lneqq"=>[[:s],],
427
+ "gneqq"=>[[:s],],
428
+ "nleqslant"=>[[:s],],
429
+ "ngeqslant"=>[[:s],],
430
+ "lneq"=>[[:s],],
431
+ "gneq"=>[[:s],],
432
+ "npreceq"=>[[:s,:o],:nprcue],
433
+ "nsucceq"=>[[:s,:o],:nsccue],
434
+ "precnsim"=>[[:s],],
435
+ "succnsim"=>[[:s],],
436
+ "lnsim"=>[[:s],],
437
+ "gnsim"=>[[:s],],
438
+ "nleqq"=>[[:s],],
439
+ "ngeqq"=>[[:s],],
440
+ "precneqq"=>[[:s,:o],0x2ab5],
441
+ "succneqq"=>[[:s,:o],0x2ab6],
442
+ "precnapprox"=>[[:s],],
443
+ "succnapprox"=>[[:s],],
444
+ "lnapprox"=>[[:s,:o],0x2a89],
445
+ "gnapprox"=>[[:s,:o],0x2a8a],
446
+ "nsim"=>[[:s],],
447
+ "ncong"=>[[:s],],
448
+ "diagup"=>[[:s,:o],0x2571],
449
+ "diagdown"=>[[:s,:o],0x2572],
450
+ "varsubsetneq"=>[[:s,:o],:subsetneq],
451
+ "varsupsetneq"=>[[:s,:o],:supsetneq],
452
+ "nsubseteqq"=>[[:s],],
453
+ "nsupseteqq"=>[[:s],],
454
+ "subsetneqq"=>[[:s],],
455
+ "supsetneqq"=>[[:s],],
456
+ "varsubsetneqq"=>[[:s,:o],:subsetneqq],
457
+ "varsupsetneqq"=>[[:s,:o],:supsetneqq],
458
+ "subsetneq"=>[[:s],],
459
+ "supsetneq"=>[[:s],],
460
+ "nsubseteq"=>[[:s],],
461
+ "nsupseteq"=>[[:s],],
462
+ "nparallel"=>[[:s],],
463
+ "nmid"=>[[:s],],
464
+ "nshortmid"=>[[:s,:o],:nmid],
465
+ "nshortparallel"=>[[:s,:o],:nparallel],
466
+ "nvdash"=>[[:s],],
467
+ "nVdash"=>[[:s],],
468
+ "nvDash"=>[[:s],],
469
+ "nVDash"=>[[:s],],
470
+ "ntrianglerighteq"=>[[:s],],
471
+ "ntrianglelefteq"=>[[:s],],
472
+ "ntriangleleft"=>[[:s],],
473
+ "ntriangleright"=>[[:s],],
474
+ "nleftarrow"=>[[:s],],
475
+ "nrightarrow"=>[[:s],],
476
+ "nLeftarrow"=>[[:s],],
477
+ "nRightarrow"=>[[:s],],
478
+ "nLeftrightarrow"=>[[:s],],
479
+ "nleftrightarrow"=>[[:s],],
480
+ "divideontimes"=>[[:s],],
481
+ "varnothing"=>[[:s],],
482
+ "nexists"=>[[:s],],
483
+ "Finv"=>[[:s,:o],0x2132],
484
+ "Game"=>[[:s,:o],"G"],
485
+ "eth"=>[[:s],],
486
+ "eqsim"=>[[:s],],
487
+ "beth"=>[[:s],],
488
+ "gimel"=>[[:s],],
489
+ "daleth"=>[[:s],],
490
+ "lessdot"=>[[:s],],
491
+ "gtrdot"=>[[:s],],
492
+ "ltimes"=>[[:s],],
493
+ "rtimes"=>[[:s],],
494
+ "shortmid"=>[[:s,:o],:mid],
495
+ "shortparallel"=>[[:s],],
496
+ "smallsetminus"=>[[:s,:o],:setminus],
497
+ "thicksim"=>[[:s,:o],:sim],
498
+ "thickapprox"=>[[:s,:o],:approx],
499
+ "approxeq"=>[[:s],],
500
+ "succapprox"=>[[:s],],
501
+ "precapprox"=>[[:s],],
502
+ "curvearrowleft"=>[[:s],],
503
+ "curvearrowright"=>[[:s],],
504
+ "digamma"=>[[:s],],
505
+ "varkappa"=>[[:s],],
506
+ "Bbbk"=>[[:s,:i],:kopf],
507
+ "hslash"=>[[:s],],
508
+ "backepsilon"=>[[:s],],
509
+ "ulcorner"=>[[:s,:o],:boxdr],
510
+ "urcorner"=>[[:s,:o],:boxdl],
511
+ "llcorner"=>[[:s,:o],:boxur],
512
+ "lrcorner"=>[[:s,:o],:boxul],
513
+ }
514
+
515
+ DELIMITERS=[
516
+ "lmoustache",
517
+ "rmoustache",
518
+ "arrowvert",
519
+ "Arrowvert",
520
+ "Vert",
521
+ "vert",
522
+ "uparrow",
523
+ "downarrow",
524
+ "updownarrow",
525
+ "Uparrow",
526
+ "Downarrow",
527
+ "Updownarrow",
528
+ "backslash",
529
+ "rangle",
530
+ "langle",
531
+ "rbrace",
532
+ "lbrace",
533
+ "rceil",
534
+ "lceil",
535
+ "rfloor",
536
+ "lfloor",
537
+ "lgroup",
538
+ "rgroup",
539
+ "bracevert",
540
+ "ulcorner",
541
+ "urcorner",
542
+ "llcorner",
543
+ "lrcorner",
544
+ "{",
545
+ "|",
546
+ "}",
547
+ ]
548
+ end
549
+ end
@@ -0,0 +1,5 @@
1
+ module MathML::LaTeX
2
+ module Builtin
3
+ end
4
+ end
5
+ require "math_ml/latex/builtin/symbol"
data/lib/math_ml/latex.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require "math_ml/latex/builtin"
2
+
1
3
  module MathML
2
4
  module LaTeX
3
5
  MBEC = /\\.|[^\\]/m
@@ -358,7 +360,9 @@ EOS
358
360
 
359
361
  attr_accessor :unsecure_entity
360
362
  attr_reader :macro
361
- def initialize
363
+ attr_reader :symbol_table
364
+
365
+ def initialize(opt={})
362
366
  @unsecure_entity = false
363
367
  @entities = Hash.new
364
368
  @commands = Hash.new
@@ -370,8 +374,10 @@ EOS
370
374
  @macro.parse(BUILTIN_MACRO)
371
375
  @expanded_command = Array.new
372
376
  @expanded_environment = Array.new
377
+ @symbol_table = opt[:symbol] || MathML::Symbol::Default
378
+ @symbol_table = MathML::Symbol::MAP[@symbol_table] if @symbol_table.is_a?(::Symbol)
373
379
 
374
- super
380
+ super()
375
381
  end
376
382
 
377
383
  def add_entity(list)
@@ -513,11 +519,11 @@ EOS
513
519
  when Font::BOLD_ITALIC
514
520
  i.extend(Variant).variant = Variant::BOLD_ITALIC
515
521
  when Font::BLACKBOLD
516
- c = MathML.pcstring(%Q[&#{c}opf;], true)
522
+ c = symbol_table.convert("#{c}opf")
517
523
  when Font::SCRIPT
518
- c = MathML.pcstring(%Q[&#{c}scr;], true)
524
+ c = symbol_table.convert("#{c}scr")
519
525
  when Font::FRAKTUR
520
- c = MathML.pcstring(%Q[&#{c}fr;], true)
526
+ c = symbol_table.convert("#{c}fr")
521
527
  end
522
528
  i << c
523
529
  end
@@ -591,10 +597,10 @@ EOS
591
597
  data = @symbols[com]
592
598
  return nil unless data
593
599
 
600
+ data, s = data
594
601
  su = data[0]
595
602
  el = data[1]
596
603
  el = :o unless el
597
- s = data[2]
598
604
  s = com.dup.untaint.to_sym unless s
599
605
  s = com if s.is_a?(String) && s.length==0
600
606
 
@@ -613,15 +619,16 @@ EOS
613
619
  end
614
620
 
615
621
  case s
616
- when String
617
622
  when Fixnum
618
- s = "&\#x#{s.to_s(16)};"
619
- when Symbol
620
- s = "&#{s.to_s};"
623
+ s = MathML.pcstring("&\#x#{s.to_s(16)};", true)
624
+ when ::Symbol
625
+ s = symbol_table.convert(s)
626
+ else
627
+ MathML.pcstring(s, true)
621
628
  end
622
629
 
623
630
  return s if plain
624
- el << MathML.pcstring(s, true)
631
+ el << s
625
632
  el.as_display_style if su==:u
626
633
  el
627
634
  end
@@ -706,8 +713,8 @@ EOS
706
713
  add_multi_command(:quad_etc, " ", "quad", "qquad", ",", ":", ";", "!")
707
714
  add_multi_command(:it_etc, "it", "rm", "bf")
708
715
  add_multi_command(:mathit_etc, "mathit", "mathrm", "mathbf", "bm", "mathbb", "mathscr", "mathfrak")
709
- add_sym_cmd(SymbolCommands)
710
- add_delimiter(Delimiters)
716
+ add_sym_cmd(Builtin::Symbol::MAP)
717
+ add_delimiter(Builtin::Symbol::DELIMITERS)
711
718
 
712
719
  super
713
720
  end
@@ -912,7 +919,6 @@ EOS
912
919
  p = @scanner.pos
913
920
  o = @scanner.scan_any
914
921
  raise ParseError.new('Need brace here.') unless o && (o=~RE::BRACES || @delimiters.include?(o[RE::COMMANDS, 1]))
915
-
916
922
  f.open = (o=~RE::BRACES ? o : parse_symbol_command(o[RE::COMMANDS, 1], true))
917
923
  f << push_container(Row.new) do |r|
918
924
  until @scanner.peek_command==right