1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
|
open Parser
open Render_info
open Tex
open Util
let tex_part = function
HTMLABLE (_,t,_) -> t
| HTMLABLEM (_,t,_) -> t
| HTMLABLEC (_,t,_) -> t
| MHTMLABLEC (_,t,_,_,_) -> t
| HTMLABLE_BIG (t,_) -> t
| TEX_ONLY t -> t
let rec render_tex = function
TEX_FQ (a,b,c) -> (render_tex a) ^ "_{" ^ (render_tex b) ^ "}^{" ^ (render_tex c) ^ "}"
| TEX_DQ (a,b) -> (render_tex a) ^ "_{" ^ (render_tex b) ^ "}"
| TEX_UQ (a,b) -> (render_tex a) ^ "^{" ^ (render_tex b) ^ "}"
| TEX_LITERAL s -> tex_part s
| TEX_FUN1 (f,a) -> "{" ^ f ^ " " ^ (render_tex a) ^ "}"
| TEX_FUN1hl (f,_,a) -> "{" ^ f ^ " " ^ (render_tex a) ^ "}"
| TEX_FUN1hf (f,_,a) -> "{" ^ f ^ " " ^ (render_tex a) ^ "}"
| TEX_DECLh (f,_,a) -> "{" ^ f ^ "{" ^ (mapjoin render_tex a) ^ "}}"
| TEX_FUN2 (f,a,b) -> "{" ^ f ^ " " ^ (render_tex a) ^ (render_tex b) ^ "}"
| TEX_FUN2h (f,_,a,b) -> "{" ^ f ^ " " ^ (render_tex a) ^ (render_tex b) ^ "}"
| TEX_FUN2sq (f,a,b) -> "{" ^ f ^ "[ " ^ (render_tex a) ^ "]" ^ (render_tex b) ^ "}"
| TEX_CURLY (tl) -> "{" ^ (mapjoin render_tex tl) ^ "}"
| TEX_INFIX (s,ll,rl) -> "{" ^ (mapjoin render_tex ll) ^ " " ^ s ^ "" ^ (mapjoin render_tex rl) ^ "}"
| TEX_INFIXh (s,_,ll,rl) -> "{" ^ (mapjoin render_tex ll) ^ " " ^ s ^ "" ^ (mapjoin render_tex rl) ^ "}"
| TEX_BOX (bt,s) -> "{"^bt^"{" ^ s ^ "}}"
| TEX_BIG (bt,d) -> "{"^bt^(tex_part d)^"}"
| TEX_MATRIX (t,rows) -> "{\\begin{"^t^"}"^(mapjoine "\\\\" (mapjoine "&" (mapjoin render_tex)) rows)^"\\end{"^t^"}}"
| TEX_LR (l,r,tl) -> "\\left "^(tex_part l)^(mapjoin render_tex tl)^"\\right "^(tex_part r)
(* Dynamic loading*)
type encoding_t = LATIN1 | LATIN2 | UTF8
let modules_ams = ref false
let modules_nonascii = ref false
let modules_encoding = ref UTF8
let modules_color = ref false
let tex_use_ams () = modules_ams := true
let tex_use_nonascii () = modules_nonascii := true
let tex_use_color () = modules_color := true
let tex_mod_reset () = (modules_ams := false; modules_nonascii := false; modules_encoding := UTF8; modules_color := false)
let get_encoding = function
UTF8 -> "\\usepackage{ucs}\n\\usepackage[utf8]{inputenc}\n"
| LATIN1 -> "\\usepackage[latin1]{inputenc}\n"
| LATIN2 -> "\\usepackage[latin2]{inputenc}\n"
let get_preface () = "\\nonstopmode\n\\documentclass[12pt]{article}\n" ^
(if !modules_nonascii then get_encoding !modules_encoding else "") ^
(if !modules_ams then "\\usepackage{amsmath}\n\\usepackage{amsfonts}\n\\usepackage{amssymb}\n" else "") ^
(if !modules_color then "\\usepackage[dvips,usenames]{color}\n" else "") ^
"\\pagestyle{empty}\n\\begin{document}\n$$\n"
let get_footer () = "\n$$\n\\end{document}\n"
let set_encoding = function
"ISO-8859-1" -> modules_encoding := LATIN1
| "iso-8859-1" -> modules_encoding := LATIN1
| "ISO-8859-2" -> modules_encoding := LATIN2
| _ -> modules_encoding := UTF8
(* Turn that into hash table lookup *)
exception Illegal_tex_function of string
let find = function
"\\alpha" -> LITERAL (HTMLABLEC (FONT_UF, "\\alpha ", "α"))
| "\\Alpha" -> LITERAL (HTMLABLEC (FONT_RTI, "A", "Α"))
| "\\beta" -> LITERAL (HTMLABLEC (FONT_UF, "\\beta ", "β"))
| "\\Beta" -> LITERAL (HTMLABLEC (FONT_RTI, "B", "Β"))
| "\\gamma" -> LITERAL (HTMLABLEC (FONT_UF, "\\gamma ", "γ"))
| "\\Gamma" -> LITERAL (HTMLABLEC (FONT_RTI, "\\Gamma ", "Γ"))
| "\\delta" -> LITERAL (HTMLABLEC (FONT_UF, "\\delta ", "δ"))
| "\\Delta" -> LITERAL (HTMLABLEC (FONT_RTI, "\\Delta ", "Δ"))
| "\\epsilon" -> LITERAL (HTMLABLEC (FONT_UF, "\\epsilon ", "ε"))
| "\\Epsilon" -> LITERAL (HTMLABLEC (FONT_RTI, "E", "Ε"))
| "\\varepsilon" -> LITERAL (TEX_ONLY "\\varepsilon ")
| "\\zeta" -> LITERAL (HTMLABLEC (FONT_UF, "\\zeta ", "ζ"))
| "\\Zeta" -> LITERAL (HTMLABLEC (FONT_RTI, "Z", "Ζ"))
| "\\eta" -> LITERAL (HTMLABLEC (FONT_UF, "\\eta ", "η"))
| "\\Eta" -> LITERAL (HTMLABLEC (FONT_RTI, "H", "Η"))
| "\\theta" -> LITERAL (HTMLABLEC (FONT_UF, "\\theta ", "θ"))
| "\\Theta" -> LITERAL (HTMLABLEC (FONT_RTI, "\\Theta ", "Θ"))
| "\\vartheta" -> LITERAL (HTMLABLE (FONT_UF, "\\vartheta ", "ϑ"))
| "\\thetasym" -> LITERAL (HTMLABLE (FONT_UF, "\\vartheta ", "ϑ"))
| "\\iota" -> LITERAL (HTMLABLEC (FONT_UF, "\\iota ", "ι"))
| "\\Iota" -> LITERAL (HTMLABLEC (FONT_RTI, "I", "Ι"))
| "\\kappa" -> LITERAL (HTMLABLEC (FONT_UF, "\\kappa ", "κ"))
| "\\Kappa" -> LITERAL (HTMLABLEC (FONT_RTI, "K", "Κ"))
| "\\lambda" -> LITERAL (HTMLABLEC (FONT_UF, "\\lambda ", "λ"))
| "\\Lambda" -> LITERAL (HTMLABLEC (FONT_RTI, "\\Lambda ", "Λ"))
| "\\mu" -> LITERAL (HTMLABLEC (FONT_UF, "\\mu ", "μ"))
| "\\Mu" -> LITERAL (HTMLABLEC (FONT_RTI, "M", "Μ"))
| "\\nu" -> LITERAL (HTMLABLEC (FONT_UF, "\\nu ", "ν"))
| "\\Nu" -> LITERAL (HTMLABLEC (FONT_RTI, "N", "Ν"))
| "\\pi" -> LITERAL (HTMLABLEC (FONT_UF, "\\pi ", "π"))
| "\\Pi" -> LITERAL (HTMLABLEC (FONT_RTI, "\\Pi ", "Π"))
| "\\varpi" -> LITERAL (TEX_ONLY "\\varpi ")
| "\\rho" -> LITERAL (HTMLABLEC (FONT_UF, "\\rho ", "ρ"))
| "\\Rho" -> LITERAL (HTMLABLEC (FONT_RTI, "P", "Ρ"))
| "\\varrho" -> LITERAL (TEX_ONLY "\\varrho ")
| "\\sim" -> LITERAL (HTMLABLEC (FONT_UF, "\\sim ", "˜"))
| "\\sigma" -> LITERAL (HTMLABLEC (FONT_UF, "\\sigma ", "σ"))
| "\\Sigma" -> LITERAL (HTMLABLEC (FONT_RTI, "\\Sigma ", "Σ"))
| "\\varsigma" -> LITERAL (TEX_ONLY "\\varsigma ")
| "\\tau" -> LITERAL (HTMLABLEC (FONT_UF, "\\tau ", "τ"))
| "\\Tau" -> LITERAL (HTMLABLEC (FONT_RTI, "T", "Τ"))
| "\\upsilon" -> LITERAL (HTMLABLEC (FONT_UF, "\\upsilon ", "υ"))
| "\\Upsilon" -> LITERAL (HTMLABLEC (FONT_RTI, "\\Upsilon ", "Υ"))
| "\\phi" -> LITERAL (HTMLABLEC (FONT_UF, "\\phi ", "φ"))
| "\\Phi" -> LITERAL (HTMLABLEC (FONT_RTI, "\\Phi ", "Φ"))
| "\\varphi" -> LITERAL (TEX_ONLY "\\varphi ")
| "\\chi" -> LITERAL (HTMLABLEC (FONT_UF, "\\chi ", "χ"))
| "\\Chi" -> LITERAL (HTMLABLEC (FONT_RTI, "X", "Χ"))
| "\\psi" -> LITERAL (HTMLABLEC (FONT_UF, "\\psi ", "ψ"))
| "\\Psi" -> LITERAL (HTMLABLEC (FONT_RTI, "\\Psi ", "Ψ"))
| "\\omega" -> LITERAL (HTMLABLEC (FONT_UF, "\\omega ", "ω"))
| "\\Omega" -> LITERAL (HTMLABLEC (FONT_RTI, "\\Omega ", "Ω"))
| "\\xi" -> LITERAL (HTMLABLEC (FONT_UF, "\\xi ", "ξ"))
| "\\Xi" -> LITERAL (HTMLABLEC (FONT_RTI, "\\Xi ", "Ξ"))
| "\\aleph" -> LITERAL (HTMLABLE (FONT_UF, "\\aleph ", "ℵ"))
| "\\alef" -> LITERAL (HTMLABLE (FONT_UF, "\\aleph ", "ℵ"))
| "\\alefsym" -> LITERAL (HTMLABLE (FONT_UF, "\\aleph ", "ℵ"))
| "\\larr" -> LITERAL (HTMLABLEM (FONT_UF, "\\leftarrow ", "←"))
| "\\leftarrow" -> LITERAL (HTMLABLEM (FONT_UF, "\\leftarrow ", "←"))
| "\\rarr" -> LITERAL (HTMLABLEM (FONT_UF, "\\rightarrow ", "→"))
| "\\to" -> LITERAL (HTMLABLEM (FONT_UF, "\\to ", "→"))
| "\\gets" -> LITERAL (HTMLABLEM (FONT_UF, "\\gets ", "←"))
| "\\rightarrow" -> LITERAL (HTMLABLEM (FONT_UF, "\\rightarrow ", "→"))
| "\\longleftarrow" -> LITERAL (HTMLABLE (FONT_UF, "\\longleftarrow ", "←"))
| "\\longrightarrow" -> LITERAL (HTMLABLE (FONT_UF, "\\longrightarrow ", "→"))
| "\\Larr" -> LITERAL (HTMLABLE (FONT_UF, "\\Leftarrow ", "⇐"))
| "\\lArr" -> LITERAL (HTMLABLE (FONT_UF, "\\Leftarrow ", "⇐"))
| "\\Leftarrow" -> LITERAL (HTMLABLE (FONT_UF, "\\Leftarrow ", "⇐"))
| "\\Rarr" -> LITERAL (HTMLABLE (FONT_UF, "\\Rightarrow ", "⇒"))
| "\\rArr" -> LITERAL (HTMLABLE (FONT_UF, "\\Rightarrow ", "⇒"))
| "\\Rightarrow" -> LITERAL (HTMLABLEM (FONT_UF, "\\Rightarrow ", "⇒"))
| "\\mapsto" -> LITERAL (HTMLABLE (FONT_UF, "\\mapsto ", "→"))
| "\\longmapsto" -> LITERAL (HTMLABLE (FONT_UF, "\\longmapsto ", "→"))
| "\\Longleftarrow" -> LITERAL (HTMLABLE (FONT_UF, "\\Longleftarrow ", "⇐"))
| "\\Longrightarrow" -> LITERAL (HTMLABLE (FONT_UF, "\\Longrightarrow ", "⇒"))
| "\\uarr" -> DELIMITER (HTMLABLEM (FONT_UF, "\\uparrow ", "↑"))
| "\\uparrow" -> DELIMITER (HTMLABLEM (FONT_UF, "\\uparrow ", "↑"))
| "\\uArr" -> DELIMITER (HTMLABLE (FONT_UF, "\\Uparrow ", "⇑"))
| "\\Uarr" -> DELIMITER (HTMLABLE (FONT_UF, "\\Uparrow ", "⇑"))
| "\\Uparrow" -> DELIMITER (HTMLABLE (FONT_UF, "\\Uparrow ", "⇑"))
| "\\darr" -> DELIMITER (HTMLABLEM (FONT_UF, "\\downarrow ", "↓"))
| "\\downarrow" -> DELIMITER (HTMLABLEM (FONT_UF, "\\downarrow ", "↓"))
| "\\dArr" -> DELIMITER (HTMLABLE (FONT_UF, "\\Downarrow ", "⇓"))
| "\\Darr" -> DELIMITER (HTMLABLE (FONT_UF, "\\Downarrow ", "⇓"))
| "\\Downarrow" -> DELIMITER (HTMLABLE (FONT_UF, "\\Downarrow ", "⇓"))
| "\\updownarrow" -> DELIMITER (TEX_ONLY "\\updownarrow ")
| "\\Updownarrow" -> DELIMITER (TEX_ONLY "\\Updownarrow ")
| "\\ulcorner" -> (tex_use_ams (); DELIMITER (TEX_ONLY "\\ulcorner "))
| "\\urcorner" -> (tex_use_ams (); DELIMITER (TEX_ONLY "\\urcorner "))
| "\\llcorner" -> (tex_use_ams (); DELIMITER (TEX_ONLY "\\llcorner "))
| "\\lrcorner" -> (tex_use_ams (); DELIMITER (TEX_ONLY "\\lrcorner "))
| "\\twoheadleftarrow" -> (tex_use_ams (); DELIMITER (TEX_ONLY "\\twoheadleftarrow "))
| "\\twoheadrightarrow" -> (tex_use_ams (); DELIMITER (TEX_ONLY "\\twoheadrightarrow "))
| "\\rightleftharpoons" -> DELIMITER (TEX_ONLY "\\rightleftharpoons ")
| "\\leftrightarrow" -> LITERAL (HTMLABLE (FONT_UF, "\\leftrightarrow ", "↔"))
| "\\lrarr" -> LITERAL (HTMLABLE (FONT_UF, "\\leftrightarrow ", "↔"))
| "\\harr" -> LITERAL (HTMLABLE (FONT_UF, "\\leftrightarrow ", "↔"))
| "\\Leftrightarrow" -> LITERAL (HTMLABLE (FONT_UF, "\\Leftrightarrow ", "⇔"))
| "\\Lrarr" -> LITERAL (HTMLABLE (FONT_UF, "\\Leftrightarrow ", "⇔"))
| "\\Harr" -> LITERAL (HTMLABLE (FONT_UF, "\\Leftrightarrow ", "⇔"))
| "\\lrArr" -> LITERAL (HTMLABLE (FONT_UF, "\\Leftrightarrow ", "⇔"))
| "\\hAar" -> LITERAL (HTMLABLE (FONT_UF, "\\Leftrightarrow ", "⇔"))
| "\\Longleftrightarrow"->LITERAL (HTMLABLE (FONT_UF, "\\Longleftrightarrow ", "↔"))
| "\\iff" -> LITERAL (HTMLABLE (FONT_UF, "\\iff ", "↔"))
| "\\ll" -> LITERAL (TEX_ONLY "\\ll ")
| "\\gg" -> LITERAL (TEX_ONLY "\\gg ")
| "\\div" -> LITERAL (TEX_ONLY "\\div ")
| "\\searrow" -> LITERAL (TEX_ONLY "\\searrow ")
| "\\nearrow" -> LITERAL (TEX_ONLY "\\nearrow ")
| "\\swarrow" -> LITERAL (TEX_ONLY "\\swarrow ")
| "\\nwarrow" -> LITERAL (TEX_ONLY "\\nwarrow ")
| "\\simeq" -> LITERAL (TEX_ONLY "\\simeq ")
| "\\star" -> LITERAL (TEX_ONLY "\\star ")
| "\\ell" -> LITERAL (TEX_ONLY "\\ell ")
| "\\P" -> LITERAL (TEX_ONLY "\\P ")
| "\\smile" -> LITERAL (TEX_ONLY "\\smile ")
| "\\frown" -> LITERAL (TEX_ONLY "\\frown ")
| "\\bigcap" -> LITERAL (TEX_ONLY "\\bigcap ")
| "\\bigodot" -> LITERAL (TEX_ONLY "\\bigodot ")
| "\\bigcup" -> LITERAL (TEX_ONLY "\\bigcup ")
| "\\bigotimes" -> LITERAL (TEX_ONLY "\\bigotimes ")
| "\\coprod" -> LITERAL (TEX_ONLY "\\coprod ")
| "\\bigsqcup" -> LITERAL (TEX_ONLY "\\bigsqcup ")
| "\\bigoplus" -> LITERAL (TEX_ONLY "\\bigoplus ")
| "\\bigvee" -> LITERAL (TEX_ONLY "\\bigvee ")
| "\\biguplus" -> LITERAL (TEX_ONLY "\\biguplus ")
| "\\oint" -> LITERAL (TEX_ONLY "\\oint ")
| "\\bigwedge" -> LITERAL (TEX_ONLY "\\bigwedge ")
| "\\models" -> LITERAL (TEX_ONLY "\\models ")
| "\\vdash" -> LITERAL (TEX_ONLY "\\vdash ")
| "\\triangle" -> LITERAL (TEX_ONLY "\\triangle ")
| "\\bowtie" -> LITERAL (TEX_ONLY "\\bowtie ")
| "\\wr" -> LITERAL (TEX_ONLY "\\wr ")
| "\\triangleleft" -> LITERAL (TEX_ONLY "\\triangleleft ")
| "\\triangleright" -> LITERAL (TEX_ONLY "\\triangleright ")
| "\\textvisiblespace" -> LITERAL (TEX_ONLY "\\textvisiblespace ")
| "\\ker" -> LITERAL (TEX_ONLY "\\ker ")
| "\\lim" -> LITERAL (TEX_ONLY "\\lim ")
| "\\limsup" -> LITERAL (TEX_ONLY "\\limsup ")
| "\\liminf" -> LITERAL (TEX_ONLY "\\liminf ")
| "\\sup" -> LITERAL (TEX_ONLY "\\sup ")
| "\\Pr" -> LITERAL (TEX_ONLY "\\Pr ")
| "\\hom" -> LITERAL (TEX_ONLY "\\hom ")
| "\\arg" -> LITERAL (TEX_ONLY "\\arg ")
| "\\dim" -> LITERAL (TEX_ONLY "\\dim ")
| "\\inf" -> LITERAL (TEX_ONLY "\\inf ")
| "\\circ" -> LITERAL (TEX_ONLY "\\circ ")
| "\\hbar" -> LITERAL (TEX_ONLY "\\hbar ")
| "\\imath" -> LITERAL (TEX_ONLY "\\imath ")
| "\\lnot" -> LITERAL (TEX_ONLY "\\lnot ")
| "\\hookrightarrow" -> LITERAL (TEX_ONLY "\\hookrightarrow ")
| "\\hookleftarrow" -> LITERAL (TEX_ONLY "\\hookleftarrow ")
| "\\mp" -> LITERAL (TEX_ONLY "\\mp ")
| "\\approx" -> LITERAL (TEX_ONLY "\\approx ")
| "\\propto" -> LITERAL (TEX_ONLY "\\propto ")
| "\\flat" -> LITERAL (TEX_ONLY "\\flat ")
| "\\sharp" -> LITERAL (TEX_ONLY "\\sharp ")
| "\\natural" -> LITERAL (TEX_ONLY "\\natural ")
| "\\int" -> LITERAL (HTMLABLE_BIG ("\\int ", "∫"))
| "\\sum" -> LITERAL (HTMLABLE_BIG ("\\sum ", "∑"))
| "\\prod" -> LITERAL (HTMLABLE_BIG ("\\prod ", "∏"))
| "\\vdots" -> LITERAL (TEX_ONLY "\\vdots ")
| "\\limits" -> LITERAL (TEX_ONLY "\\limits ")
| "\\nolimits" -> LITERAL (TEX_ONLY "\\nolimits ")
| "\\top" -> LITERAL (TEX_ONLY "\\top ")
| "\\sin" -> LITERAL (HTMLABLEC(FONT_UFH,"\\sin ","sin"))
| "\\cos" -> LITERAL (HTMLABLEC(FONT_UFH,"\\cos ","cos"))
| "\\sinh" -> LITERAL (HTMLABLEC(FONT_UFH,"\\sinh ","sinh"))
| "\\cosh" -> LITERAL (HTMLABLEC(FONT_UFH,"\\cosh ","cosh"))
| "\\tan" -> LITERAL (HTMLABLEC(FONT_UFH,"\\tan ","tan"))
| "\\tanh" -> LITERAL (HTMLABLEC(FONT_UFH,"\\tanh ","tanh"))
| "\\sec" -> LITERAL (HTMLABLEC(FONT_UFH,"\\sec ","sec"))
| "\\csc" -> LITERAL (HTMLABLEC(FONT_UFH,"\\csc ","csc"))
| "\\arcsin" -> LITERAL (HTMLABLEC(FONT_UFH,"\\arcsin ","arcsin"))
| "\\arctan" -> LITERAL (HTMLABLEC(FONT_UFH,"\\arctan ","arctan"))
| "\\arccos" -> (tex_use_ams (); LITERAL (HTMLABLEC(FONT_UFH,"\\mathop{\\mathrm{arccos}}","arccos")))
| "\\arccot" -> (tex_use_ams (); LITERAL (HTMLABLEC(FONT_UFH,"\\mathop{\\mathrm{arccot}}","arccot")))
| "\\arcsec" -> (tex_use_ams (); LITERAL (HTMLABLEC(FONT_UFH,"\\mathop{\\mathrm{arcsec}}","arcsec")))
| "\\arccsc" -> (tex_use_ams (); LITERAL (HTMLABLEC(FONT_UFH,"\\mathop{\\mathrm{arccsc}}","arccsc")))
| "\\sgn" -> (tex_use_ams (); LITERAL (HTMLABLEC(FONT_UFH,"\\mathop{\\mathrm{sgn}}","sgn")))
| "\\cot" -> LITERAL (HTMLABLEC(FONT_UFH,"\\cot ","cot"))
| "\\coth" -> LITERAL (HTMLABLEC(FONT_UFH,"\\coth ","coth"))
| "\\log" -> LITERAL (HTMLABLEC(FONT_UFH,"\\log ", "log"))
| "\\lg" -> LITERAL (HTMLABLEC(FONT_UFH,"\\lg ", "lg"))
| "\\ln" -> LITERAL (HTMLABLEC(FONT_UFH,"\\ln ", "ln"))
| "\\exp" -> LITERAL (HTMLABLEC(FONT_UFH,"\\exp ", "exp"))
| "\\min" -> LITERAL (HTMLABLEC(FONT_UFH,"\\min ", "min"))
| "\\max" -> LITERAL (HTMLABLEC(FONT_UFH,"\\max ", "max"))
| "\\gcd" -> LITERAL (HTMLABLEC(FONT_UFH,"\\gcd ", "gcd"))
| "\\deg" -> LITERAL (HTMLABLEC(FONT_UFH,"\\deg ", "deg"))
| "\\det" -> LITERAL (HTMLABLEC(FONT_UFH,"\\det ", "det"))
| "\\bullet" -> LITERAL (HTMLABLE (FONT_UFH, "\\bullet ", "•"))
| "\\bull" -> LITERAL (HTMLABLE (FONT_UFH, "\\bullet ", "•"))
| "\\angle" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UF, "\\angle ", "∠")))
| "\\dagger" -> LITERAL (HTMLABLEM(FONT_UFH, "\\dagger ", "†"))
| "\\ddagger" -> LITERAL (HTMLABLEM(FONT_UFH, "\\ddagger ", "‡"))
| "\\Dagger" -> LITERAL (HTMLABLEM(FONT_UFH, "\\ddagger ", "‡"))
| "\\colon" -> LITERAL (HTMLABLEC(FONT_UFH, "\\colon ", ":"))
| "\\Vert" -> DELIMITER (HTMLABLEM(FONT_UFH, "\\Vert ", "||"))
| "\\vert" -> DELIMITER (HTMLABLEM(FONT_UFH, "\\vert ", "|"))
| "\\wp" -> LITERAL (HTMLABLE (FONT_UF, "\\wp ", "℘"))
| "\\weierp" -> LITERAL (HTMLABLE (FONT_UF, "\\wp ", "℘"))
| "\\wedge" -> LITERAL (HTMLABLE (FONT_UF, "\\wedge ", "∧"))
| "\\and" -> LITERAL (HTMLABLE (FONT_UF, "\\land ", "∧"))
| "\\land" -> LITERAL (HTMLABLE (FONT_UF, "\\land ", "∧"))
| "\\vee" -> LITERAL (HTMLABLE (FONT_UF, "\\vee ", "∨"))
| "\\or" -> LITERAL (HTMLABLE (FONT_UF, "\\lor ", "∨"))
| "\\lor" -> LITERAL (HTMLABLE (FONT_UF, "\\lor ", "∨"))
| "\\sub" -> LITERAL (HTMLABLE (FONT_UF, "\\subset ", "⊂"))
| "\\supe" -> LITERAL (HTMLABLE (FONT_UF, "\\supseteq ", "⊇"))
| "\\sube" -> LITERAL (HTMLABLE (FONT_UF, "\\subseteq ", "⊆"))
| "\\supset" -> LITERAL (HTMLABLE (FONT_UF, "\\supset ", "⊃"))
| "\\subset" -> LITERAL (HTMLABLE (FONT_UF, "\\subset ", "⊂"))
| "\\supseteq" -> LITERAL (HTMLABLE (FONT_UF, "\\supseteq ", "⊇"))
| "\\subseteq" -> LITERAL (HTMLABLE (FONT_UF, "\\subseteq ", "⊆"))
| "\\sqsupset" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\sqsupset "))
| "\\sqsubset" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\sqsubset "))
| "\\sqsupseteq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\sqsupseteq "))
| "\\sqsubseteq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\sqsubseteq "))
| "\\perp" -> LITERAL (HTMLABLE (FONT_UF, "\\perp ", "⊥"))
| "\\bot" -> LITERAL (HTMLABLE (FONT_UF, "\\bot ", "⊥"))
| "\\lfloor" -> DELIMITER (HTMLABLE (FONT_UF, "\\lfloor ", "⌊"))
| "\\rfloor" -> DELIMITER (HTMLABLE (FONT_UF, "\\rfloor ", "⌋"))
| "\\lceil" -> DELIMITER (HTMLABLE (FONT_UF, "\\lceil ", "⌈"))
| "\\rceil" -> DELIMITER (HTMLABLE (FONT_UF, "\\rceil ", "⌉"))
| "\\lbrace" -> DELIMITER (HTMLABLEC(FONT_UFH, "\\lbrace ", "{"))
| "\\rbrace" -> DELIMITER (HTMLABLEC(FONT_UFH, "\\rbrace ", "}"))
| "\\infty" -> LITERAL (HTMLABLEM(FONT_UF, "\\infty ", "∞"))
| "\\infin" -> LITERAL (HTMLABLEM(FONT_UF, "\\infty ", "∞"))
| "\\isin" -> LITERAL (HTMLABLE (FONT_UF, "\\in ", "∈"))
| "\\in" -> LITERAL (HTMLABLE (FONT_UF, "\\in ", "∈"))
| "\\ni" -> LITERAL (HTMLABLE (FONT_UF, "\\ni ", "∋"))
| "\\notin" -> LITERAL (HTMLABLE (FONT_UF, "\\notin ", "∉"))
| "\\smallsetminus" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\smallsetminus "))
| "\\And" -> (tex_use_ams (); LITERAL (HTMLABLEM(FONT_UFH, "\\And ", " & ")))
| "\\forall" -> LITERAL (HTMLABLE (FONT_UFH, "\\forall ", "∀"))
| "\\exists" -> LITERAL (HTMLABLE (FONT_UFH, "\\exists ", "∃"))
| "\\exist" -> LITERAL (HTMLABLE (FONT_UFH, "\\exists ", "∃"))
| "\\equiv" -> LITERAL (HTMLABLEM(FONT_UFH, "\\equiv ", "≡"))
| "\\ne" -> LITERAL (HTMLABLEM(FONT_UFH, "\\neq ", "≠"))
| "\\neq" -> LITERAL (HTMLABLEM(FONT_UFH, "\\neq ", "≠"))
| "\\Re" -> LITERAL (HTMLABLE (FONT_UF, "\\Re ", "ℜ"))
| "\\real" -> LITERAL (HTMLABLE (FONT_UF, "\\Re ", "ℜ"))
| "\\Im" -> LITERAL (HTMLABLE (FONT_UF, "\\Im ", "ℑ"))
| "\\image" -> LITERAL (HTMLABLE (FONT_UF, "\\Im ", "ℑ"))
| "\\prime" -> LITERAL (HTMLABLE (FONT_UFH,"\\prime ", "′"))
| "\\backslash" -> DELIMITER (HTMLABLEM(FONT_UFH,"\\backslash ", "\\"))
| "\\setminus" -> LITERAL (HTMLABLEM(FONT_UFH,"\\setminus ", "\\"))
| "\\times" -> LITERAL (HTMLABLEM(FONT_UFH,"\\times ", "×"))
| "\\pm" -> LITERAL (HTMLABLEM(FONT_UFH,"\\pm ", "±"))
| "\\plusmn" -> LITERAL (HTMLABLEM(FONT_UFH,"\\pm ", "±"))
| "\\cdot" -> LITERAL (HTMLABLE (FONT_UFH,"\\cdot ", "⋅"))
| "\\AA" -> LITERAL (HTMLABLE (FONT_UFH,"\\AA ", "Å"))
| "\\cdots" -> LITERAL (HTMLABLE (FONT_UFH,"\\cdots ", "⋅⋅⋅"))
| "\\sdot" -> LITERAL (HTMLABLE (FONT_UFH,"\\cdot ", "⋅"))
| "\\oplus" -> LITERAL (HTMLABLE (FONT_UF, "\\oplus ", "⊕"))
| "\\otimes" -> LITERAL (HTMLABLE (FONT_UF, "\\otimes ", "⊗"))
| "\\cap" -> LITERAL (HTMLABLEM(FONT_UF, "\\cap ", "∩"))
| "\\cup" -> LITERAL (HTMLABLE (FONT_UF, "\\cup ", "∪"))
| "\\sqcap" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\sqcap "))
| "\\sqcup" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\sqcup "))
| "\\empty" -> LITERAL (HTMLABLE (FONT_UF, "\\emptyset ", "∅"))
| "\\emptyset" -> LITERAL (HTMLABLE (FONT_UF, "\\emptyset ", "∅"))
| "\\O" -> LITERAL (HTMLABLE (FONT_UF, "\\emptyset ", "∅"))
| "\\S" -> LITERAL (HTMLABLEM(FONT_UFH,"\\S ", "§"))
| "\\sect" -> LITERAL (HTMLABLEM(FONT_UFH,"\\S ", "§"))
| "\\nabla" -> LITERAL (HTMLABLE (FONT_UF, "\\nabla ", "∇"))
| "\\geq" -> LITERAL (HTMLABLE (FONT_UFH,"\\geq ", "≥"))
| "\\ge" -> LITERAL (HTMLABLE (FONT_UFH,"\\geq ", "≥"))
| "\\leq" -> LITERAL (HTMLABLE (FONT_UFH,"\\leq ", "≤"))
| "\\le" -> LITERAL (HTMLABLE (FONT_UFH,"\\leq ", "≤"))
| "\\cong" -> LITERAL (HTMLABLE (FONT_UF, "\\cong ", "≅"))
| "\\ang" -> LITERAL (HTMLABLE (FONT_UF, "\\angle ", "∠"))
| "\\part" -> LITERAL (HTMLABLEM(FONT_UF, "\\partial ", "∂"))
| "\\partial" -> LITERAL (HTMLABLEM(FONT_UF, "\\partial ", "∂"))
| "\\ldots" -> LITERAL (HTMLABLEM(FONT_UFH,"\\ldots ", "..."))
| "\\dots" -> LITERAL (HTMLABLEM(FONT_UFH,"\\dots ", "..."))
| "\\quad" -> LITERAL (HTMLABLE (FONT_UF, "\\quad "," "))
| "\\qquad" -> LITERAL (HTMLABLE (FONT_UF, "\\qquad "," "))
| "\\mid" -> LITERAL (HTMLABLEM(FONT_UFH,"\\mid ", " | "))
| "\\neg" -> LITERAL (HTMLABLEM(FONT_UFH,"\\neg ", "¬"))
| "\\langle" -> DELIMITER (HTMLABLE (FONT_UFH,"\\langle ","⟨"))
| "\\rangle" -> DELIMITER (HTMLABLE (FONT_UFH,"\\rangle ","⟩"))
| "\\lang" -> DELIMITER (HTMLABLE (FONT_UFH,"\\langle ","⟨"))
| "\\rang" -> DELIMITER (HTMLABLE (FONT_UFH,"\\rangle ","⟩"))
| "\\lbrack" -> DELIMITER (HTMLABLEC(FONT_UFH,"[","["))
| "\\rbrack" -> DELIMITER (HTMLABLEC(FONT_UFH,"]","]"))
| "\\ddots" -> LITERAL (TEX_ONLY "\\ddots ")
| "\\clubs" -> LITERAL (TEX_ONLY "\\clubsuit ")
| "\\clubsuit" -> LITERAL (TEX_ONLY "\\clubsuit ")
| "\\spades" -> LITERAL (TEX_ONLY "\\spadesuit ")
| "\\spadesuit" -> LITERAL (TEX_ONLY "\\spadesuit ")
| "\\hearts" -> LITERAL (TEX_ONLY "\\heartsuit ")
| "\\heartsuit" -> LITERAL (TEX_ONLY "\\heartsuit ")
| "\\diamonds" -> LITERAL (TEX_ONLY "\\diamondsuit ")
| "\\diamondsuit" -> LITERAL (TEX_ONLY "\\diamondsuit ")
| "\\implies" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UF, "\\implies ", "⇒")))
| "\\mod" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\mod ", "mod")))
| "\\Diamond" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UF, "\\Diamond ", "◊")))
| "\\dotsb" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UF, "\\dotsb ", "⋅⋅⋅")))
| "\\reals" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\mathbb{R}", "<b>R</b>")))
| "\\Reals" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\mathbb{R}", "<b>R</b>")))
| "\\R" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\mathbb{R}", "<b>R</b>")))
| "\\cnums" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\mathbb{C}", "<b>C</b>")))
| "\\Complex" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\mathbb{C}", "<b>C</b>")))
| "\\Z" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\mathbb{Z}", "<b>Z</b>")))
| "\\natnums" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\mathbb{N}", "<b>N</b>")))
| "\\N" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\mathbb{N}", "<b>N</b>")))
| "\\lVert" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\lVert ", "||")))
| "\\rVert" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\rVert ", "||")))
| "\\nmid" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nmid "))
| "\\lesssim" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\lesssim "))
| "\\ngeq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\ngeq "))
| "\\smallsmile" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\smallsmile "))
| "\\smallfrown" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\smallfrown "))
| "\\nleftarrow" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nleftarrow "))
| "\\nrightarrow" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nrightarrow "))
| "\\trianglelefteq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\trianglelefteq "))
| "\\trianglerighteq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\trianglerighteq "))
| "\\square" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\square "))
| "\\checkmark" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\checkmark "))
| "\\supsetneq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\supsetneq "))
| "\\subsetneq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\subsetneq "))
| "\\Box" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Box "))
| "\\nleq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nleq "))
| "\\upharpoonright" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\upharpoonright "))
| "\\upharpoonleft" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\upharpoonleft "))
| "\\downharpoonright" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\downharpoonright "))
| "\\downharpoonleft" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\downharpoonleft "))
| "\\rightharpoonup" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\rightharpoonup "))
| "\\rightharpoondown" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\rightharpoondown "))
| "\\leftharpoonup" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\leftharpoonup "))
| "\\leftharpoondown" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\leftharpoondown "))
| "\\nless" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nless "))
| "\\Vdash" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Vdash "))
| "\\vDash" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\vDash "))
| "\\varkappa" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\varkappa "))
| "\\digamma" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\digamma "))
| "\\beth" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\beth "))
| "\\daleth" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\daleth "))
| "\\gimel" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\gimel "))
| "\\complement" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\complement "))
| "\\eth" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\eth "))
| "\\hslash" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\hslash "))
| "\\mho" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\mho "))
| "\\Finv" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Finv "))
| "\\Game" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Game "))
| "\\varlimsup" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\varlimsup "))
| "\\varliminf" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\varliminf "))
| "\\varinjlim" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\varinjlim "))
| "\\varprojlim" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\varprojlim "))
| "\\injlim" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\injlim "))
| "\\projlim" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\projlim "))
| "\\iint" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\iint "))
| "\\iiint" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\iiint "))
| "\\iiiint" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\iiiint "))
| "\\varnothing" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\varnothing "))
| "\\left" -> LEFT
| "\\right" -> RIGHT
| "\\hat" -> FUN_AR1 "\\hat "
| "\\widehat" -> FUN_AR1 "\\widehat "
| "\\overline" -> FUN_AR1 "\\overline "
| "\\overbrace" -> FUN_AR1 "\\overbrace "
| "\\underline" -> FUN_AR1 "\\underline "
| "\\underbrace" -> FUN_AR1 "\\underbrace "
| "\\overleftarrow" -> FUN_AR1 "\\overleftarrow "
| "\\overrightarrow" -> FUN_AR1 "\\overrightarrow "
| "\\overleftrightarrow"->FUN_AR1 "\\overleftrightarrow "
| "\\check" -> FUN_AR1 "\\check "
| "\\acute" -> FUN_AR1 "\\acute "
| "\\grave" -> FUN_AR1 "\\grave "
| "\\bar" -> FUN_AR1 "\\bar "
| "\\vec" -> FUN_AR1 "\\vec "
| "\\dot" -> FUN_AR1 "\\dot "
| "\\ddot" -> FUN_AR1 "\\ddot "
| "\\breve" -> FUN_AR1 "\\breve "
| "\\tilde" -> FUN_AR1 "\\tilde "
| "\\not" -> LITERAL (TEX_ONLY "\\not ")
| "\\choose" -> FUN_INFIX "\\choose "
| "\\atop" -> FUN_INFIX "\\atop "
| "\\binom" -> FUN_AR2 "\\binom "
| "\\stackrel" -> FUN_AR2 "\\stackrel "
| "\\frac" -> FUN_AR2h ("\\frac ", fun num den -> Html.html_render [num], "<hr style=\"{background: black}\"/>", Html.html_render [den])
| "\\cfrac" -> (tex_use_ams (); FUN_AR2h ("\\cfrac ", fun num den -> Html.html_render [num], "<hr style=\"{background: black}\">", Html.html_render [den]))
| "\\over" -> FUN_INFIXh ("\\over ", fun num den -> Html.html_render num, "<hr style=\"{background: black}\"/>", Html.html_render den)
| "\\sqrt" -> FUN_AR1 "\\sqrt "
| "\\pmod" -> FUN_AR1hl ("\\pmod ", ("(mod ", ")"))
| "\\bmod" -> FUN_AR1hl ("\\bmod ", ("mod ", ""))
| "\\emph" -> FUN_AR1 "\\emph "
| "\\texttt" -> FUN_AR1 "\\texttt "
| "\\textbf" -> FUN_AR1 "\\textbf "
| "\\textit" -> FUN_AR1hf ("\\textit ", FONTFORCE_IT)
| "\\textrm" -> FUN_AR1hf ("\\textrm ", FONTFORCE_RM)
| "\\rm" -> DECLh ("\\rm ", FONTFORCE_RM)
| "\\it" -> DECLh ("\\it ", FONTFORCE_IT)
| "\\cal" -> DECL "\\cal "
| "\\displaystyle" -> LITERAL (TEX_ONLY "\\displaystyle ")
| "\\scriptstyle" -> LITERAL (TEX_ONLY "\\scriptstyle ")
| "\\textstyle" -> LITERAL (TEX_ONLY "\\textstyle ")
| "\\scriptscriptstyle"-> LITERAL (TEX_ONLY "\\scriptscriptstyle ")
| "\\bf" -> DECL "\\bf "
| "\\big" -> BIG "\\big "
| "\\Big" -> BIG "\\Big "
| "\\bigg" -> BIG "\\bigg "
| "\\Bigg" -> BIG "\\Bigg "
| "\\mathit" -> (tex_use_ams (); FUN_AR1hf ("\\mathit ", FONTFORCE_IT))
| "\\mathrm" -> (tex_use_ams (); FUN_AR1hf ("\\mathrm ", FONTFORCE_RM))
| "\\mathop" -> (tex_use_ams (); FUN_AR1 "\\mathop ")
| "\\boldsymbol" -> (tex_use_ams (); FUN_AR1 "\\boldsymbol ")
| "\\bold" -> (tex_use_ams (); FUN_AR1 "\\mathbf ")
| "\\Bbb" -> (tex_use_ams (); FUN_AR1 "\\mathbb ")
| "\\mathbf" -> (tex_use_ams (); FUN_AR1 "\\mathbf ")
| "\\mathsf" -> (tex_use_ams (); FUN_AR1 "\\mathsf ")
| "\\mathcal" -> (tex_use_ams (); FUN_AR1 "\\mathcal ")
| "\\mathbb" -> (tex_use_ams (); FUN_AR1 "\\mathbb ")
| "\\mathfrak" -> (tex_use_ams (); FUN_AR1 "\\mathfrak ")
| "\\operatorname" -> (tex_use_ams (); FUN_AR1 "\\operatorname ")
| "\\mbox" -> raise (Failure "malformatted \\mbox")
| "\\vbox" -> raise (Failure "malformatted \\vbox")
| "\\hbox" -> raise (Failure "malformatted \\hbox")
| "\\color" -> (tex_use_color (); LITERAL (TEX_ONLY "\\color"))
| s -> raise (Illegal_tex_function s)
|