]> scripts.mit.edu Git - autoinstalls/mediawiki.git/blob - math/texutil.ml
MediaWiki 1.11.0
[autoinstalls/mediawiki.git] / math / texutil.ml
1 open Parser
2 open Render_info
3 open Tex
4 open Util
5
6 let tex_part = function
7     HTMLABLE (_,t,_) -> t
8   | HTMLABLEM (_,t,_) -> t
9   | HTMLABLEC (_,t,_) -> t
10   | MHTMLABLEC (_,t,_,_,_) -> t
11   | HTMLABLE_BIG (t,_) -> t
12   | TEX_ONLY t -> t
13 let rec render_tex = function
14     TEX_FQ (a,b,c) -> (render_tex a) ^ "_{" ^ (render_tex  b) ^ "}^{" ^ (render_tex  c) ^ "}"
15   | TEX_DQ (a,b) -> (render_tex a) ^ "_{" ^ (render_tex  b) ^ "}"
16   | TEX_UQ (a,b) -> (render_tex a) ^ "^{" ^ (render_tex  b) ^ "}"
17   | TEX_FQN (a,b) -> "_{" ^ (render_tex  a) ^ "}^{" ^ (render_tex  b) ^ "}"
18   | TEX_DQN (a) -> "_{" ^ (render_tex  a) ^ "}"
19   | TEX_UQN (a) -> "^{" ^ (render_tex  a) ^ "}"
20   | TEX_LITERAL s -> tex_part s
21   | TEX_FUN1 (f,a) -> "{" ^ f ^ " " ^ (render_tex a) ^ "}"
22   | TEX_FUN1hl (f,_,a) -> "{" ^ f ^ " " ^ (render_tex a) ^ "}"
23   | TEX_FUN1hf (f,_,a) -> "{" ^ f ^ " " ^ (render_tex a) ^ "}"
24   | TEX_DECLh (f,_,a) -> "{" ^ f ^ "{" ^ (mapjoin render_tex a) ^ "}}"
25   | TEX_FUN2 (f,a,b) -> "{" ^ f ^ " " ^ (render_tex a) ^ (render_tex b) ^ "}"
26   | TEX_FUN2nb (f,a,b) -> f ^ (render_tex a) ^ (render_tex b)
27   | TEX_FUN2h (f,_,a,b) -> "{" ^ f ^ " " ^ (render_tex a) ^ (render_tex b) ^ "}"
28   | TEX_FUN2sq (f,a,b) -> "{" ^ f ^ "[ " ^ (render_tex a) ^ "]" ^ (render_tex b) ^ "}"
29   | TEX_CURLY (tl) -> "{" ^ (mapjoin render_tex tl) ^ "}"
30   | TEX_INFIX (s,ll,rl) -> "{" ^ (mapjoin render_tex ll) ^ " " ^ s ^ "" ^ (mapjoin render_tex rl) ^ "}"
31   | TEX_INFIXh (s,_,ll,rl) -> "{" ^ (mapjoin render_tex ll) ^ " " ^ s ^ "" ^ (mapjoin render_tex rl) ^ "}"
32   | TEX_BOX (bt,s) -> "{"^bt^"{" ^ s ^ "}}"
33   | TEX_BIG (bt,d) -> "{"^bt^(tex_part d)^"}"
34   | TEX_MATRIX (t,rows) -> "{\\begin{"^t^"}"^(mapjoine "\\\\" (mapjoine "&" (mapjoin render_tex)) rows)^"\\end{"^t^"}}"
35   | TEX_LR (l,r,tl) -> "\\left "^(tex_part l)^(mapjoin render_tex tl)^"\\right "^(tex_part r)
36
37
38 (* Dynamic loading*)
39 type encoding_t = LATIN1 | LATIN2 | UTF8
40
41 let modules_ams = ref false
42 let modules_nonascii = ref false
43 let modules_encoding = ref UTF8
44 let modules_color = ref false
45
46 let tex_use_ams ()     = modules_ams := true
47 let tex_use_nonascii () = modules_nonascii := true
48 let tex_use_color ()  = modules_color := true
49 let tex_mod_reset ()   = (modules_ams := false; modules_nonascii := false; modules_encoding := UTF8; modules_color := false)
50
51 let get_encoding = function
52     UTF8 -> "\\usepackage{ucs}\n\\usepackage[utf8]{inputenc}\n"
53   | LATIN1 -> "\\usepackage[latin1]{inputenc}\n"
54   | LATIN2 -> "\\usepackage[latin2]{inputenc}\n"
55
56 let get_preface ()  = "\\nonstopmode\n\\documentclass[12pt]{article}\n" ^
57               (if !modules_nonascii then get_encoding !modules_encoding else "") ^
58               (if !modules_ams then "\\usepackage{amsmath}\n\\usepackage{amsfonts}\n\\usepackage{amssymb}\n" else "") ^
59               (if !modules_color then "\\usepackage[dvips,usenames]{color}\n" else "") ^
60               "\\pagestyle{empty}\n\\begin{document}\n$$\n"
61 let get_footer  ()  = "\n$$\n\\end{document}\n"
62
63 let set_encoding = function
64     "ISO-8859-1" -> modules_encoding := LATIN1
65   | "iso-8859-1" -> modules_encoding := LATIN1
66   | "ISO-8859-2" -> modules_encoding := LATIN2
67   | _ -> modules_encoding := UTF8
68
69 (* Turn that into hash table lookup *)
70 exception Illegal_tex_function of string
71
72 let find = function
73       "\\alpha"            -> LITERAL (HTMLABLEC (FONT_UF,  "\\alpha ", "α"))
74     | "\\Alpha"            -> (tex_use_ams (); LITERAL (HTMLABLEC (FONT_UF,
75     "\\mathrm{A}", "Α")))
76     | "\\beta"             -> LITERAL (HTMLABLEC (FONT_UF,  "\\beta ",  "β"))
77     | "\\Beta"             -> (tex_use_ams (); LITERAL (HTMLABLEC (FONT_UF,
78     "\\mathrm{B}",  "Β")))
79     | "\\gamma"            -> LITERAL (HTMLABLEC (FONT_UF,  "\\gamma ", "γ"))
80     | "\\Gamma"            -> LITERAL (HTMLABLEC (FONT_UF, "\\Gamma ", "Γ"))
81     | "\\delta"            -> LITERAL (HTMLABLEC (FONT_UF,  "\\delta ", "δ"))
82     | "\\Delta"            -> LITERAL (HTMLABLEC (FONT_UF, "\\Delta ", "Δ"))
83     | "\\epsilon"          -> LITERAL (HTMLABLEC (FONT_UF,  "\\epsilon ", "ε"))
84     | "\\Epsilon"          -> (tex_use_ams (); LITERAL (HTMLABLEC (FONT_UF,
85     "\\mathrm{E}", "Ε")))
86     | "\\varepsilon"       -> LITERAL (TEX_ONLY "\\varepsilon ")
87     | "\\zeta"             -> LITERAL (HTMLABLEC (FONT_UF,  "\\zeta ", "ζ"))
88     | "\\Zeta"             -> (tex_use_ams (); LITERAL (HTMLABLEC (FONT_UF,
89     "\\mathrm{Z}", "Ζ")))
90     | "\\eta"              -> LITERAL (HTMLABLEC (FONT_UF,  "\\eta ", "η"))
91     | "\\Eta"              -> (tex_use_ams (); LITERAL (HTMLABLEC (FONT_UF,
92     "\\mathrm{H}", "Η")))
93     | "\\theta"            -> LITERAL (HTMLABLEC (FONT_UF,  "\\theta ", "θ"))
94     | "\\Theta"            -> LITERAL (HTMLABLEC (FONT_UF, "\\Theta ", "Θ"))
95     | "\\vartheta"         -> LITERAL (HTMLABLE  (FONT_UF,  "\\vartheta ", "ϑ"))
96     | "\\thetasym"         -> LITERAL (HTMLABLE  (FONT_UF,  "\\vartheta ", "ϑ"))
97     | "\\iota"             -> LITERAL (HTMLABLEC (FONT_UF,  "\\iota ", "ι"))
98     | "\\Iota"             -> (tex_use_ams (); LITERAL (HTMLABLEC (FONT_UF,
99     "\\mathrm{I}", "Ι")))
100     | "\\kappa"            -> LITERAL (HTMLABLEC (FONT_UF,  "\\kappa ", "κ"))
101     | "\\Kappa"            -> (tex_use_ams (); LITERAL (HTMLABLEC (FONT_UF,
102     "\\mathrm{K}", "Κ")))
103     | "\\lambda"           -> LITERAL (HTMLABLEC (FONT_UF,  "\\lambda ", "λ"))
104     | "\\Lambda"           -> LITERAL (HTMLABLEC (FONT_UF, "\\Lambda ", "Λ"))
105     | "\\mu"               -> LITERAL (HTMLABLEC (FONT_UF,  "\\mu ", "μ"))
106     | "\\Mu"               -> (tex_use_ams (); LITERAL (HTMLABLEC (FONT_UF,
107     "\\mathrm{M}", "Μ")))
108     | "\\nu"               -> LITERAL (HTMLABLEC (FONT_UF,  "\\nu ", "ν"))
109     | "\\Nu"               -> (tex_use_ams (); LITERAL (HTMLABLEC (FONT_UF,
110     "\\mathrm{N}", "Ν")))
111     | "\\pi"               -> LITERAL (HTMLABLEC (FONT_UF,  "\\pi ", "π"))
112     | "\\Pi"               -> LITERAL (HTMLABLEC (FONT_UF, "\\Pi ", "Π"))
113     | "\\varpi"            -> LITERAL (TEX_ONLY "\\varpi ")
114     | "\\rho"              -> LITERAL (HTMLABLEC (FONT_UF,  "\\rho ", "ρ"))
115     | "\\Rho"              -> (tex_use_ams (); LITERAL (HTMLABLEC (FONT_UF,
116     "\\mathrm{P}", "Ρ")))
117     | "\\varrho"           -> LITERAL (TEX_ONLY "\\varrho ")
118     | "\\sim"              -> LITERAL (HTMLABLEC (FONT_UF,  "\\sim ", "˜"))
119     | "\\sigma"            -> LITERAL (HTMLABLEC (FONT_UF,  "\\sigma ", "σ"))
120     | "\\Sigma"            -> LITERAL (HTMLABLEC (FONT_UF, "\\Sigma ", "Σ"))
121     | "\\varsigma"         -> LITERAL (TEX_ONLY "\\varsigma ")
122     | "\\tau"              -> LITERAL (HTMLABLEC (FONT_UF,  "\\tau ", "τ"))
123     | "\\Tau"              -> (tex_use_ams (); LITERAL (HTMLABLEC (FONT_UF,
124     "\\mathrm{T}", "Τ")))
125     | "\\upsilon"          -> LITERAL (HTMLABLEC (FONT_UF,  "\\upsilon ", "υ"))
126     | "\\Upsilon"          -> LITERAL (HTMLABLEC (FONT_UF, "\\Upsilon ", "Υ"))
127     | "\\phi"              -> LITERAL (HTMLABLEC (FONT_UF,  "\\phi ", "φ"))
128     | "\\Phi"              -> LITERAL (HTMLABLEC (FONT_UF, "\\Phi ", "Φ"))
129     | "\\varphi"           -> LITERAL (TEX_ONLY "\\varphi ")
130     | "\\chi"              -> LITERAL (HTMLABLEC (FONT_UF,  "\\chi ", "χ"))
131     | "\\Chi"              -> (tex_use_ams (); LITERAL (HTMLABLEC (FONT_UF,
132     "\\mathrm{X}", "Χ")))
133     | "\\psi"              -> LITERAL (HTMLABLEC (FONT_UF,  "\\psi ", "ψ"))
134     | "\\Psi"              -> LITERAL (HTMLABLEC (FONT_UF, "\\Psi ", "Ψ"))
135     | "\\omega"            -> LITERAL (HTMLABLEC (FONT_UF,  "\\omega ", "ω"))
136     | "\\Omega"            -> LITERAL (HTMLABLEC (FONT_UF, "\\Omega ", "Ω"))
137     | "\\xi"               -> LITERAL (HTMLABLEC (FONT_UF,  "\\xi ", "ξ"))
138     | "\\Xi"               -> LITERAL (HTMLABLEC (FONT_UF, "\\Xi ", "Ξ"))
139     | "\\aleph"            -> LITERAL (HTMLABLE  (FONT_UF,  "\\aleph ", "ℵ"))
140     | "\\alef"             -> LITERAL (HTMLABLE  (FONT_UF,  "\\aleph ", "ℵ"))
141     | "\\alefsym"          -> LITERAL (HTMLABLE  (FONT_UF,  "\\aleph ", "ℵ"))
142     | "\\larr"             -> LITERAL (HTMLABLEM (FONT_UF,  "\\leftarrow ", "←"))
143     | "\\leftarrow"        -> LITERAL (HTMLABLEM (FONT_UF,  "\\leftarrow ", "←"))
144     | "\\rarr"             -> LITERAL (HTMLABLEM (FONT_UF,  "\\rightarrow ", "→"))
145     | "\\to"               -> LITERAL (HTMLABLEM (FONT_UF,  "\\to ", "→"))
146     | "\\gets"             -> LITERAL (HTMLABLEM (FONT_UF,  "\\gets ", "←"))
147     | "\\rightarrow"       -> LITERAL (HTMLABLEM (FONT_UF,  "\\rightarrow ", "→"))
148     | "\\longleftarrow"    -> LITERAL (HTMLABLE  (FONT_UF,  "\\longleftarrow ", "←"))
149     | "\\longrightarrow"   -> LITERAL (HTMLABLE  (FONT_UF,  "\\longrightarrow ", "→"))
150     | "\\Larr"             -> LITERAL (HTMLABLE  (FONT_UF,  "\\Leftarrow ", "⇐"))
151     | "\\lArr"             -> LITERAL (HTMLABLE  (FONT_UF,  "\\Leftarrow ", "⇐"))
152     | "\\Leftarrow"        -> LITERAL (HTMLABLE  (FONT_UF,  "\\Leftarrow ", "⇐"))
153     | "\\Rarr"             -> LITERAL (HTMLABLE  (FONT_UF,  "\\Rightarrow ", "⇒"))
154     | "\\rArr"             -> LITERAL (HTMLABLE  (FONT_UF,  "\\Rightarrow ", "⇒"))
155     | "\\Rightarrow"       -> LITERAL (HTMLABLEM (FONT_UF,  "\\Rightarrow ", "⇒"))
156     | "\\mapsto"           -> LITERAL (HTMLABLE  (FONT_UF,  "\\mapsto ", "→"))
157     | "\\longmapsto"       -> LITERAL (HTMLABLE  (FONT_UF,  "\\longmapsto ", "→"))
158     | "\\Longleftarrow"    -> LITERAL (HTMLABLE  (FONT_UF,  "\\Longleftarrow ", "⇐"))
159     | "\\Longrightarrow"   -> LITERAL (HTMLABLE  (FONT_UF,  "\\Longrightarrow ", "⇒"))
160     | "\\uarr"             -> DELIMITER (HTMLABLEM (FONT_UF,  "\\uparrow ", "↑"))
161     | "\\uparrow"          -> DELIMITER (HTMLABLEM (FONT_UF,  "\\uparrow ", "↑"))
162     | "\\uArr"             -> DELIMITER (HTMLABLE  (FONT_UF,  "\\Uparrow ", "⇑"))
163     | "\\Uarr"             -> DELIMITER (HTMLABLE  (FONT_UF,  "\\Uparrow ", "⇑"))
164     | "\\Uparrow"          -> DELIMITER (HTMLABLE  (FONT_UF,  "\\Uparrow ", "⇑"))
165     | "\\darr"             -> DELIMITER (HTMLABLEM (FONT_UF,  "\\downarrow ", "↓"))
166     | "\\downarrow"        -> DELIMITER (HTMLABLEM (FONT_UF,  "\\downarrow ", "↓"))
167     | "\\dArr"             -> DELIMITER (HTMLABLE  (FONT_UF,  "\\Downarrow ", "⇓"))
168     | "\\Darr"             -> DELIMITER (HTMLABLE  (FONT_UF,  "\\Downarrow ", "⇓"))
169     | "\\Downarrow"        -> DELIMITER (HTMLABLE  (FONT_UF,  "\\Downarrow ", "⇓"))
170     | "\\updownarrow"      -> DELIMITER (TEX_ONLY "\\updownarrow ")
171     | "\\Updownarrow"      -> DELIMITER (TEX_ONLY "\\Updownarrow ")
172     | "\\ulcorner"         -> (tex_use_ams (); DELIMITER (TEX_ONLY "\\ulcorner "))
173     | "\\urcorner"         -> (tex_use_ams (); DELIMITER (TEX_ONLY "\\urcorner "))
174     | "\\llcorner"         -> (tex_use_ams (); DELIMITER (TEX_ONLY "\\llcorner "))
175     | "\\lrcorner"         -> (tex_use_ams (); DELIMITER (TEX_ONLY "\\lrcorner "))
176     | "\\twoheadleftarrow" -> (tex_use_ams (); DELIMITER (TEX_ONLY "\\twoheadleftarrow "))
177     | "\\twoheadrightarrow" -> (tex_use_ams (); DELIMITER (TEX_ONLY "\\twoheadrightarrow "))
178     | "\\xleftarrow"       -> (tex_use_ams (); FUN_AR1 "\\xleftarrow ")
179     | "\\xrightarrow"       -> (tex_use_ams (); FUN_AR1 "\\xrightarrow ")
180     | "\\rightleftharpoons" -> DELIMITER (TEX_ONLY "\\rightleftharpoons ")
181     | "\\leftrightarrow"   -> LITERAL (HTMLABLE  (FONT_UF,  "\\leftrightarrow ", "↔"))
182     | "\\lrarr"            -> LITERAL (HTMLABLE  (FONT_UF,  "\\leftrightarrow ", "↔"))
183     | "\\harr"             -> LITERAL (HTMLABLE  (FONT_UF,  "\\leftrightarrow ", "↔"))
184     | "\\Leftrightarrow"   -> LITERAL (HTMLABLE  (FONT_UF,  "\\Leftrightarrow ", "⇔"))
185     | "\\Lrarr"            -> LITERAL (HTMLABLE  (FONT_UF,  "\\Leftrightarrow ", "⇔"))
186     | "\\Harr"             -> LITERAL (HTMLABLE  (FONT_UF,  "\\Leftrightarrow ", "⇔"))
187     | "\\lrArr"            -> LITERAL (HTMLABLE  (FONT_UF,  "\\Leftrightarrow ", "⇔"))
188     | "\\hAar"             -> LITERAL (HTMLABLE  (FONT_UF,  "\\Leftrightarrow ", "⇔"))
189     | "\\longleftrightarrow"->LITERAL (HTMLABLE  (FONT_UF,  "\\longleftrightarrow ", "↔"))
190     | "\\Longleftrightarrow"->LITERAL (HTMLABLE  (FONT_UF,  "\\Longleftrightarrow ", "↔"))
191     | "\\iff"              -> LITERAL (HTMLABLE  (FONT_UF,  "\\iff ", "↔"))
192     | "\\ll"               -> LITERAL (TEX_ONLY "\\ll ")
193     | "\\gg"               -> LITERAL (TEX_ONLY "\\gg ")
194     | "\\div"              -> LITERAL (TEX_ONLY "\\div ")
195     | "\\searrow"          -> LITERAL (TEX_ONLY "\\searrow ")
196     | "\\nearrow"          -> LITERAL (TEX_ONLY "\\nearrow ")
197     | "\\swarrow"          -> LITERAL (TEX_ONLY "\\swarrow ")
198     | "\\nwarrow"          -> LITERAL (TEX_ONLY "\\nwarrow ")
199     | "\\simeq"            -> LITERAL (TEX_ONLY "\\simeq ")
200     | "\\ast"              -> LITERAL (TEX_ONLY "\\ast ")
201     | "\\star"             -> LITERAL (TEX_ONLY "\\star ")
202     | "\\ell"              -> LITERAL (TEX_ONLY "\\ell ")
203     | "\\P"                -> LITERAL (TEX_ONLY "\\P ")
204     | "\\smile"            -> LITERAL (TEX_ONLY "\\smile ")
205     | "\\frown"            -> LITERAL (TEX_ONLY "\\frown ")
206     | "\\bigcap"           -> LITERAL (TEX_ONLY "\\bigcap ")
207     | "\\bigodot"          -> LITERAL (TEX_ONLY "\\bigodot ")
208     | "\\bigcup"           -> LITERAL (TEX_ONLY "\\bigcup ")
209     | "\\bigotimes"        -> LITERAL (TEX_ONLY "\\bigotimes ")
210     | "\\coprod"           -> LITERAL (TEX_ONLY "\\coprod ")
211     | "\\bigsqcup"         -> LITERAL (TEX_ONLY "\\bigsqcup ")
212     | "\\bigoplus"         -> LITERAL (TEX_ONLY "\\bigoplus ")
213     | "\\bigvee"           -> LITERAL (TEX_ONLY "\\bigvee ")
214     | "\\biguplus"         -> LITERAL (TEX_ONLY "\\biguplus ")
215     | "\\oint"             -> LITERAL (TEX_ONLY "\\oint ")
216     | "\\bigwedge"         -> LITERAL (TEX_ONLY "\\bigwedge ")
217     | "\\models"           -> LITERAL (TEX_ONLY "\\models ")
218     | "\\vdash"            -> LITERAL (TEX_ONLY "\\vdash ")
219     | "\\triangle"         -> LITERAL (TEX_ONLY "\\triangle ")
220     | "\\bowtie"           -> LITERAL (TEX_ONLY "\\bowtie ")
221     | "\\wr"               -> LITERAL (TEX_ONLY "\\wr ")
222     | "\\triangleleft"     -> LITERAL (TEX_ONLY "\\triangleleft ")
223     | "\\triangleright"    -> LITERAL (TEX_ONLY "\\triangleright ")
224     | "\\textvisiblespace" -> LITERAL (TEX_ONLY "\\textvisiblespace ")
225     | "\\ker"              -> LITERAL (HTMLABLEC(FONT_UFH,"\\ker ","ker"))
226     | "\\lim"              -> LITERAL (TEX_ONLY "\\lim ")
227     | "\\limsup"           -> LITERAL (TEX_ONLY "\\limsup ")
228     | "\\liminf"           -> LITERAL (TEX_ONLY "\\liminf ")
229     | "\\sup"              -> LITERAL (TEX_ONLY "\\sup ")
230     | "\\Pr"               -> LITERAL (TEX_ONLY "\\Pr ")
231     | "\\hom"              -> LITERAL (HTMLABLEC(FONT_UFH,"\\hom ","hom"))
232     | "\\arg"              -> LITERAL (HTMLABLEC(FONT_UFH,"\\arg ","arg"))
233     | "\\dim"              -> LITERAL (HTMLABLEC(FONT_UFH,"\\dim ","dim"))
234     | "\\inf"              -> LITERAL (TEX_ONLY "\\inf ")
235     | "\\circ"             -> LITERAL (TEX_ONLY "\\circ ")
236     | "\\hbar"             -> LITERAL (TEX_ONLY "\\hbar ")
237     | "\\imath"            -> LITERAL (TEX_ONLY "\\imath ")
238     | "\\jmath"            -> LITERAL (TEX_ONLY "\\jmath ")
239     | "\\lnot"             -> LITERAL (TEX_ONLY "\\lnot ")
240     | "\\hookrightarrow"   -> LITERAL (TEX_ONLY "\\hookrightarrow ")
241     | "\\hookleftarrow"    -> LITERAL (TEX_ONLY "\\hookleftarrow ")
242     | "\\mp"               -> LITERAL (TEX_ONLY "\\mp ")
243     | "\\approx"           -> LITERAL (HTMLABLE  (FONT_UF,  "\\approx ", "≈"))
244     | "\\propto"           -> LITERAL (TEX_ONLY "\\propto ")
245     | "\\flat"             -> LITERAL (TEX_ONLY "\\flat ")
246     | "\\sharp"            -> LITERAL (TEX_ONLY "\\sharp ")
247     | "\\natural"          -> LITERAL (TEX_ONLY "\\natural ")
248     | "\\int"              -> LITERAL (HTMLABLE_BIG ("\\int ", "∫"))
249     | "\\sum"              -> LITERAL (HTMLABLE_BIG ("\\sum ", "∑"))
250     | "\\prod"             -> LITERAL (HTMLABLE_BIG ("\\prod ", "∏"))
251     | "\\vdots"            -> LITERAL (TEX_ONLY "\\vdots ")
252     | "\\limits"           -> LITERAL (TEX_ONLY "\\limits ")
253     | "\\nolimits"         -> LITERAL (TEX_ONLY "\\nolimits ")
254     | "\\top"              -> LITERAL (TEX_ONLY "\\top ")
255     | "\\sin"              -> LITERAL (HTMLABLEC(FONT_UFH,"\\sin ","sin"))
256     | "\\cos"              -> LITERAL (HTMLABLEC(FONT_UFH,"\\cos ","cos"))
257     | "\\sinh"             -> LITERAL (HTMLABLEC(FONT_UFH,"\\sinh ","sinh"))
258     | "\\cosh"             -> LITERAL (HTMLABLEC(FONT_UFH,"\\cosh ","cosh"))
259     | "\\tan"              -> LITERAL (HTMLABLEC(FONT_UFH,"\\tan ","tan"))
260     | "\\tanh"             -> LITERAL (HTMLABLEC(FONT_UFH,"\\tanh ","tanh"))
261     | "\\sec"              -> LITERAL (HTMLABLEC(FONT_UFH,"\\sec ","sec"))
262     | "\\csc"              -> LITERAL (HTMLABLEC(FONT_UFH,"\\csc ","csc"))
263     | "\\arcsin"           -> LITERAL (HTMLABLEC(FONT_UFH,"\\arcsin ","arcsin"))
264     | "\\arctan"           -> LITERAL (HTMLABLEC(FONT_UFH,"\\arctan ","arctan"))
265     | "\\arccos"           -> (tex_use_ams (); LITERAL (HTMLABLEC(FONT_UFH,"\\mathop{\\mathrm{arccos}}","arccos")))
266     | "\\arccot"           -> (tex_use_ams (); LITERAL (HTMLABLEC(FONT_UFH,"\\mathop{\\mathrm{arccot}}","arccot")))
267     | "\\arcsec"           -> (tex_use_ams (); LITERAL (HTMLABLEC(FONT_UFH,"\\mathop{\\mathrm{arcsec}}","arcsec")))
268     | "\\arccsc"           -> (tex_use_ams (); LITERAL (HTMLABLEC(FONT_UFH,"\\mathop{\\mathrm{arccsc}}","arccsc")))
269     | "\\sgn"              -> (tex_use_ams (); LITERAL (HTMLABLEC(FONT_UFH,"\\mathop{\\mathrm{sgn}}","sgn")))
270     | "\\cot"              -> LITERAL (HTMLABLEC(FONT_UFH,"\\cot ","cot"))
271     | "\\coth"             -> LITERAL (HTMLABLEC(FONT_UFH,"\\coth ","coth"))
272     | "\\log"              -> LITERAL (HTMLABLEC(FONT_UFH,"\\log ", "log"))
273     | "\\lg"               -> LITERAL (HTMLABLEC(FONT_UFH,"\\lg ", "lg"))
274     | "\\ln"               -> LITERAL (HTMLABLEC(FONT_UFH,"\\ln ", "ln"))
275     | "\\exp"              -> LITERAL (HTMLABLEC(FONT_UFH,"\\exp ", "exp"))
276     | "\\min"              -> LITERAL (HTMLABLEC(FONT_UFH,"\\min ", "min"))
277     | "\\max"              -> LITERAL (HTMLABLEC(FONT_UFH,"\\max ", "max"))
278     | "\\gcd"              -> LITERAL (HTMLABLEC(FONT_UFH,"\\gcd ", "gcd"))
279     | "\\deg"              -> LITERAL (HTMLABLEC(FONT_UFH,"\\deg ", "deg"))
280     | "\\det"              -> LITERAL (HTMLABLEC(FONT_UFH,"\\det ", "det"))
281     | "\\bullet"           -> LITERAL (HTMLABLE (FONT_UFH, "\\bullet ", "•"))
282     | "\\bull"             -> LITERAL (HTMLABLE (FONT_UFH, "\\bullet ", "•"))
283     | "\\angle"            -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UF, "\\angle ", "∠")))
284     | "\\dagger"           -> LITERAL (HTMLABLEM(FONT_UFH, "\\dagger ", "†"))
285     | "\\ddagger"          -> LITERAL (HTMLABLEM(FONT_UFH, "\\ddagger ", "‡"))
286     | "\\Dagger"           -> LITERAL (HTMLABLEM(FONT_UFH, "\\ddagger ", "‡"))
287     | "\\colon"            -> LITERAL (HTMLABLEC(FONT_UFH, "\\colon ", ":"))
288     | "\\Vert"             -> DELIMITER (HTMLABLEM(FONT_UFH, "\\Vert ", "||"))
289     | "\\vert"             -> DELIMITER (HTMLABLEM(FONT_UFH, "\\vert ", "|"))
290     | "\\wp"               -> LITERAL (HTMLABLE (FONT_UF,  "\\wp ", "℘"))
291     | "\\weierp"           -> LITERAL (HTMLABLE (FONT_UF,  "\\wp ", "℘"))
292     | "\\wedge"            -> LITERAL (HTMLABLE (FONT_UF,  "\\wedge ", "∧"))
293     | "\\and"              -> LITERAL (HTMLABLE (FONT_UF,  "\\land ", "∧"))
294     | "\\land"             -> LITERAL (HTMLABLE (FONT_UF,  "\\land ", "∧"))
295     | "\\vee"              -> LITERAL (HTMLABLE (FONT_UF,  "\\vee ", "∨"))
296     | "\\or"               -> LITERAL (HTMLABLE (FONT_UF,  "\\lor ", "∨"))
297     | "\\lor"              -> LITERAL (HTMLABLE (FONT_UF,  "\\lor ", "∨"))
298     | "\\sub"              -> LITERAL (HTMLABLE (FONT_UF,  "\\subset ", "⊂"))
299     | "\\supe"             -> LITERAL (HTMLABLE (FONT_UF,  "\\supseteq ", "⊇"))
300     | "\\sube"             -> LITERAL (HTMLABLE (FONT_UF,  "\\subseteq ", "⊆"))
301     | "\\supset"           -> LITERAL (HTMLABLE (FONT_UF,  "\\supset ", "⊃"))
302     | "\\subset"           -> LITERAL (HTMLABLE (FONT_UF,  "\\subset ", "⊂"))
303     | "\\supseteq"         -> LITERAL (HTMLABLE (FONT_UF,  "\\supseteq ", "⊇"))
304     | "\\subseteq"         -> LITERAL (HTMLABLE (FONT_UF,  "\\subseteq ", "⊆"))
305     | "\\sqsupset"         -> (tex_use_ams (); LITERAL (TEX_ONLY "\\sqsupset "))
306     | "\\sqsubset"         -> (tex_use_ams (); LITERAL (TEX_ONLY "\\sqsubset "))
307     | "\\sqsupseteq"       -> (tex_use_ams (); LITERAL (TEX_ONLY "\\sqsupseteq "))
308     | "\\sqsubseteq"       -> (tex_use_ams (); LITERAL (TEX_ONLY "\\sqsubseteq "))
309     | "\\perp"             -> LITERAL (HTMLABLE (FONT_UF,  "\\perp ", "⊥"))
310     | "\\bot"              -> LITERAL (HTMLABLE (FONT_UF,  "\\bot ", "⊥"))
311     | "\\lfloor"           -> DELIMITER (HTMLABLE (FONT_UF,  "\\lfloor ", "⌊"))
312     | "\\rfloor"           -> DELIMITER (HTMLABLE (FONT_UF,  "\\rfloor ", "⌋"))
313     | "\\lceil"            -> DELIMITER (HTMLABLE (FONT_UF,  "\\lceil ", "⌈"))
314     | "\\rceil"            -> DELIMITER (HTMLABLE (FONT_UF,  "\\rceil ", "⌉"))
315     | "\\lbrace"           -> DELIMITER (HTMLABLEC(FONT_UFH, "\\lbrace ", "{"))
316     | "\\rbrace"           -> DELIMITER (HTMLABLEC(FONT_UFH, "\\rbrace ", "}"))
317     | "\\infty"            -> LITERAL (HTMLABLEM(FONT_UF,  "\\infty ", "∞"))
318     | "\\infin"            -> LITERAL (HTMLABLEM(FONT_UF,  "\\infty ", "∞"))
319     | "\\isin"             -> LITERAL (HTMLABLE (FONT_UF,  "\\in ", "∈"))
320     | "\\in"               -> LITERAL (HTMLABLE (FONT_UF,  "\\in ", "∈"))
321     | "\\ni"               -> LITERAL (HTMLABLE (FONT_UF,  "\\ni ", "∋"))
322     | "\\notin"            -> LITERAL (HTMLABLE (FONT_UF,  "\\notin ", "∉"))
323     | "\\smallsetminus"    -> (tex_use_ams (); LITERAL (TEX_ONLY "\\smallsetminus "))
324     | "\\And"              -> (tex_use_ams (); LITERAL (HTMLABLEM(FONT_UFH, "\\And ", " & ")))
325     | "\\forall"           -> LITERAL (HTMLABLE (FONT_UFH, "\\forall ", "∀"))
326     | "\\exists"           -> LITERAL (HTMLABLE (FONT_UFH, "\\exists ", "∃"))
327     | "\\exist"            -> LITERAL (HTMLABLE (FONT_UFH, "\\exists ", "∃"))
328     | "\\equiv"            -> LITERAL (HTMLABLEM(FONT_UFH, "\\equiv ", "≡"))
329     | "\\ne"               -> LITERAL (HTMLABLEM(FONT_UFH, "\\neq ", "≠"))
330     | "\\neq"              -> LITERAL (HTMLABLEM(FONT_UFH, "\\neq ", "≠"))
331     | "\\Re"               -> LITERAL (HTMLABLE (FONT_UF,  "\\Re ", "ℜ"))
332     | "\\real"             -> LITERAL (HTMLABLE (FONT_UF,  "\\Re ", "ℜ"))
333     | "\\Im"               -> LITERAL (HTMLABLE (FONT_UF,  "\\Im ", "ℑ"))
334     | "\\image"            -> LITERAL (HTMLABLE (FONT_UF,  "\\Im ", "ℑ"))
335     | "\\prime"            -> LITERAL (HTMLABLE (FONT_UFH,"\\prime ", "′"))
336     | "\\backslash"        -> DELIMITER (HTMLABLEM(FONT_UFH,"\\backslash ", "\\"))
337     | "\\setminus"         -> LITERAL (HTMLABLEM(FONT_UFH,"\\setminus ", "\\"))
338     | "\\times"            -> LITERAL (HTMLABLEM(FONT_UFH,"\\times ", "×"))
339     | "\\pm"               -> LITERAL (HTMLABLEM(FONT_UFH,"\\pm ", "±"))
340     | "\\plusmn"           -> LITERAL (HTMLABLEM(FONT_UFH,"\\pm ", "±"))
341     | "\\cdot"             -> LITERAL (HTMLABLE (FONT_UFH,"\\cdot ", "⋅"))
342     | "\\AA"               -> LITERAL (HTMLABLE (FONT_UFH,"\\AA ", "Å"))
343     | "\\cdots"            -> LITERAL (HTMLABLE (FONT_UFH,"\\cdots ", "⋅⋅⋅"))
344     | "\\sdot"             -> LITERAL (HTMLABLE (FONT_UFH,"\\cdot ", "⋅"))
345     | "\\oplus"            -> LITERAL (HTMLABLE (FONT_UF, "\\oplus ", "⊕"))
346     | "\\otimes"           -> LITERAL (HTMLABLE (FONT_UF, "\\otimes ", "⊗"))
347     | "\\cap"              -> LITERAL (HTMLABLEM(FONT_UF, "\\cap ", "∩"))
348     | "\\cup"              -> LITERAL (HTMLABLE (FONT_UF, "\\cup ", "∪"))
349     | "\\uplus"            -> LITERAL (TEX_ONLY "\\uplus ")
350     | "\\sqcap"            -> (tex_use_ams (); LITERAL (TEX_ONLY "\\sqcap "))
351     | "\\sqcup"            -> (tex_use_ams (); LITERAL (TEX_ONLY "\\sqcup "))
352     | "\\empty"            -> LITERAL (HTMLABLE (FONT_UF, "\\emptyset ", "∅"))
353     | "\\emptyset"         -> LITERAL (HTMLABLE (FONT_UF, "\\emptyset ", "∅"))
354     | "\\O"                -> LITERAL (HTMLABLE (FONT_UF, "\\emptyset ", "∅"))
355     | "\\S"                -> LITERAL (HTMLABLEM(FONT_UFH,"\\S ", "§"))
356     | "\\sect"             -> LITERAL (HTMLABLEM(FONT_UFH,"\\S ", "§"))
357     | "\\nabla"            -> LITERAL (HTMLABLE (FONT_UF, "\\nabla ", "∇"))
358     | "\\geq"              -> LITERAL (HTMLABLE (FONT_UFH,"\\geq ", "≥"))
359     | "\\ge"               -> LITERAL (HTMLABLE (FONT_UFH,"\\geq ", "≥"))
360     | "\\leq"              -> LITERAL (HTMLABLE (FONT_UFH,"\\leq ", "≤"))
361     | "\\le"               -> LITERAL (HTMLABLE (FONT_UFH,"\\leq ", "≤"))
362     | "\\cong"             -> LITERAL (HTMLABLE (FONT_UF, "\\cong ", "≅"))
363     | "\\ang"              -> LITERAL (HTMLABLE (FONT_UF, "\\angle ", "∠"))
364     | "\\part"             -> LITERAL (HTMLABLEM(FONT_UF, "\\partial ", "∂"))
365     | "\\partial"          -> LITERAL (HTMLABLEM(FONT_UF, "\\partial ", "∂"))
366     | "\\ldots"            -> LITERAL (HTMLABLEM(FONT_UFH,"\\ldots ", "..."))
367     | "\\dots"             -> LITERAL (HTMLABLEM(FONT_UFH,"\\dots ", "..."))
368     | "\\quad"             -> LITERAL (HTMLABLE (FONT_UF, "\\quad ","  "))
369     | "\\qquad"            -> LITERAL (HTMLABLE (FONT_UF, "\\qquad ","    "))
370     | "\\mid"              -> LITERAL (HTMLABLEM(FONT_UFH,"\\mid ", " | "))
371     | "\\neg"              -> LITERAL (HTMLABLEM(FONT_UFH,"\\neg ", "¬"))
372     | "\\langle"           -> DELIMITER (HTMLABLE (FONT_UFH,"\\langle ","⟨"))
373     | "\\rangle"           -> DELIMITER (HTMLABLE (FONT_UFH,"\\rangle ","⟩"))
374     | "\\lang"             -> DELIMITER (HTMLABLE (FONT_UFH,"\\langle ","⟨"))
375     | "\\rang"             -> DELIMITER (HTMLABLE (FONT_UFH,"\\rangle ","⟩"))
376     | "\\lbrack"           -> DELIMITER (HTMLABLEC(FONT_UFH,"[","["))
377     | "\\rbrack"           -> DELIMITER (HTMLABLEC(FONT_UFH,"]","]"))
378     | "\\surd"             -> LITERAL (TEX_ONLY "\\surd ")
379     | "\\ddots"            -> LITERAL (TEX_ONLY "\\ddots ")
380     | "\\clubs"            -> LITERAL (TEX_ONLY "\\clubsuit ")
381     | "\\clubsuit"         -> LITERAL (TEX_ONLY "\\clubsuit ")
382     | "\\spades"           -> LITERAL (TEX_ONLY "\\spadesuit ")
383     | "\\spadesuit"        -> LITERAL (TEX_ONLY "\\spadesuit ")
384     | "\\hearts"           -> LITERAL (TEX_ONLY "\\heartsuit ")
385     | "\\heartsuit"        -> LITERAL (TEX_ONLY "\\heartsuit ")
386     | "\\diamonds"         -> LITERAL (TEX_ONLY "\\diamondsuit ")
387     | "\\diamond"          -> LITERAL (TEX_ONLY "\\diamond ")
388     | "\\bigtriangleup"    -> LITERAL (TEX_ONLY "\\bigtriangleup ")
389     | "\\bigtriangledown"  -> LITERAL (TEX_ONLY "\\bigtriangledown ")
390     | "\\diamondsuit"      -> LITERAL (TEX_ONLY "\\diamondsuit ")
391     | "\\ominus"           -> LITERAL (TEX_ONLY "\\ominus ")
392     | "\\oslash"           -> LITERAL (TEX_ONLY "\\oslash ")
393     | "\\odot"             -> LITERAL (TEX_ONLY "\\odot ")
394     | "\\bigcirc"          -> LITERAL (TEX_ONLY "\\bigcirc ")
395     | "\\amalg"            -> LITERAL (TEX_ONLY "\\amalg ")
396     | "\\prec"             -> LITERAL (TEX_ONLY "\\prec ")
397     | "\\succ"             -> LITERAL (TEX_ONLY "\\succ ")
398     | "\\preceq"           -> LITERAL (TEX_ONLY "\\preceq ")
399     | "\\succeq"           -> LITERAL (TEX_ONLY "\\succeq ")
400     | "\\dashv"            -> LITERAL (TEX_ONLY "\\dashv ")
401     | "\\asymp"            -> LITERAL (TEX_ONLY "\\asymp ")
402     | "\\doteq"            -> LITERAL (TEX_ONLY "\\doteq ")
403     | "\\parallel"         -> LITERAL (TEX_ONLY "\\parallel ")
404     | "\\implies"          -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UF, "\\implies ", "⇒")))
405     | "\\mod"              -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\mod ", "mod")))
406     | "\\Diamond"          -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UF, "\\Diamond ", "◊")))
407     | "\\dotsb"            -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UF, "\\dotsb ", "⋅⋅⋅")))
408     | "\\reals"            -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\mathbb{R}", "<b>R</b>")))
409     | "\\Reals"            -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\mathbb{R}", "<b>R</b>")))
410     | "\\R"                -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\mathbb{R}", "<b>R</b>")))
411     | "\\cnums"            -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\mathbb{C}", "<b>C</b>")))
412     | "\\Complex"          -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\mathbb{C}", "<b>C</b>")))
413     | "\\Z"                -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\mathbb{Z}", "<b>Z</b>")))
414     | "\\natnums"          -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\mathbb{N}", "<b>N</b>")))
415     | "\\N"                -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\mathbb{N}", "<b>N</b>")))
416     | "\\lVert"            -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\lVert ", "||")))
417     | "\\rVert"            -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\rVert ", "||")))
418     | "\\nmid"             -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nmid "))
419     | "\\lesssim"          -> (tex_use_ams (); LITERAL (TEX_ONLY "\\lesssim "))
420     | "\\ngeq"             -> (tex_use_ams (); LITERAL (TEX_ONLY "\\ngeq "))
421     | "\\smallsmile"       -> (tex_use_ams (); LITERAL (TEX_ONLY "\\smallsmile "))
422     | "\\smallfrown"       -> (tex_use_ams (); LITERAL (TEX_ONLY "\\smallfrown "))
423     | "\\nleftarrow"       -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nleftarrow "))
424     | "\\nrightarrow"      -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nrightarrow "))
425     | "\\trianglelefteq"   -> (tex_use_ams (); LITERAL (TEX_ONLY "\\trianglelefteq "))
426     | "\\trianglerighteq"  -> (tex_use_ams (); LITERAL (TEX_ONLY "\\trianglerighteq "))
427     | "\\square"           -> (tex_use_ams (); LITERAL (TEX_ONLY "\\square "))
428     | "\\checkmark"        -> (tex_use_ams (); LITERAL (TEX_ONLY "\\checkmark "))
429     | "\\supsetneq"        -> (tex_use_ams (); LITERAL (TEX_ONLY "\\supsetneq "))
430     | "\\subsetneq"        -> (tex_use_ams (); LITERAL (TEX_ONLY "\\subsetneq "))
431     | "\\Box"              -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Box "))
432     | "\\nleq"             -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nleq "))
433     | "\\upharpoonright"   -> (tex_use_ams (); LITERAL (TEX_ONLY "\\upharpoonright "))
434     | "\\restriction"      -> (tex_use_ams (); LITERAL (TEX_ONLY "\\upharpoonright "))
435     | "\\upharpoonleft"    -> (tex_use_ams (); LITERAL (TEX_ONLY "\\upharpoonleft "))
436     | "\\downharpoonright" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\downharpoonright "))
437     | "\\downharpoonleft"  -> (tex_use_ams (); LITERAL (TEX_ONLY "\\downharpoonleft "))
438     | "\\rightharpoonup"   -> (tex_use_ams (); LITERAL (TEX_ONLY "\\rightharpoonup "))
439     | "\\rightharpoondown" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\rightharpoondown "))
440     | "\\leftharpoonup"    -> (tex_use_ams (); LITERAL (TEX_ONLY "\\leftharpoonup "))
441     | "\\leftharpoondown"  -> (tex_use_ams (); LITERAL (TEX_ONLY "\\leftharpoondown "))
442     | "\\nless"            -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nless "))
443     | "\\Vdash"            -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Vdash "))
444     | "\\vDash"            -> (tex_use_ams (); LITERAL (TEX_ONLY "\\vDash "))
445     | "\\varkappa"         -> (tex_use_ams (); LITERAL (TEX_ONLY "\\varkappa "))
446     | "\\digamma"          -> (tex_use_ams (); LITERAL (TEX_ONLY "\\digamma "))
447     | "\\beth"             -> (tex_use_ams (); LITERAL (TEX_ONLY "\\beth "))
448     | "\\daleth"           -> (tex_use_ams (); LITERAL (TEX_ONLY "\\daleth "))
449     | "\\gimel"            -> (tex_use_ams (); LITERAL (TEX_ONLY "\\gimel "))
450     | "\\complement"       -> (tex_use_ams (); LITERAL (TEX_ONLY "\\complement "))
451     | "\\eth"              -> (tex_use_ams (); LITERAL (TEX_ONLY "\\eth "))
452     | "\\hslash"           -> (tex_use_ams (); LITERAL (TEX_ONLY "\\hslash "))
453     | "\\mho"              -> (tex_use_ams (); LITERAL (TEX_ONLY "\\mho "))
454     | "\\Finv"             -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Finv "))
455     | "\\Game"             -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Game "))
456     | "\\varlimsup"        -> (tex_use_ams (); LITERAL (TEX_ONLY "\\varlimsup "))
457     | "\\varliminf"        -> (tex_use_ams (); LITERAL (TEX_ONLY "\\varliminf "))
458     | "\\varinjlim"        -> (tex_use_ams (); LITERAL (TEX_ONLY "\\varinjlim "))
459     | "\\varprojlim"       -> (tex_use_ams (); LITERAL (TEX_ONLY "\\varprojlim "))
460     | "\\injlim"           -> (tex_use_ams (); LITERAL (TEX_ONLY "\\injlim "))
461     | "\\projlim"          -> (tex_use_ams (); LITERAL (TEX_ONLY "\\projlim "))
462     | "\\iint"             -> (tex_use_ams (); LITERAL (TEX_ONLY "\\iint "))
463     | "\\iiint"            -> (tex_use_ams (); LITERAL (TEX_ONLY "\\iiint "))
464     | "\\iiiint"           -> (tex_use_ams (); LITERAL (TEX_ONLY "\\iiiint "))
465     | "\\varnothing"       -> (tex_use_ams (); LITERAL (TEX_ONLY "\\varnothing "))
466     | "\\left"             -> LEFT
467     | "\\right"            -> RIGHT
468     | "\\hat"              -> FUN_AR1 "\\hat "
469     | "\\hline"            -> LITERAL (TEX_ONLY "\\hline ")
470     | "\\vline"            -> LITERAL (TEX_ONLY "\\vline ")
471     | "\\widehat"          -> LITERAL (TEX_ONLY "\\widehat ")
472     | "\\overline"         -> LITERAL (TEX_ONLY "\\overline ")
473     | "\\overbrace"        -> LITERAL (TEX_ONLY "\\overbrace ")
474     | "\\underline"        -> LITERAL (TEX_ONLY "\\underline ")
475     | "\\underbrace"       -> LITERAL (TEX_ONLY "\\underbrace ")
476     | "\\overleftarrow"    -> LITERAL (TEX_ONLY "\\overleftarrow ")
477     | "\\overrightarrow"   -> LITERAL (TEX_ONLY "\\overrightarrow ")
478     | "\\overleftrightarrow"->LITERAL (TEX_ONLY "\\overleftrightarrow ")
479     | "\\check"            -> FUN_AR1 "\\check "
480     | "\\acute"            -> FUN_AR1 "\\acute "
481     | "\\grave"            -> FUN_AR1 "\\grave "
482     | "\\bar"              -> FUN_AR1 "\\bar "
483     | "\\vec"              -> FUN_AR1 "\\vec "
484     | "\\dot"              -> FUN_AR1 "\\dot "
485     | "\\ddot"             -> FUN_AR1 "\\ddot "
486     | "\\breve"            -> FUN_AR1 "\\breve "
487     | "\\tilde"            -> FUN_AR1 "\\tilde "
488     | "\\not"              -> LITERAL (TEX_ONLY "\\not ")
489     | "\\choose"           -> FUN_INFIX "\\choose "
490     | "\\atop"             -> FUN_INFIX "\\atop "
491     | "\\binom"            -> (tex_use_ams (); FUN_AR2 "\\binom ")
492     | "\\dbinom"            -> (tex_use_ams (); FUN_AR2 "\\dbinom ")
493     | "\\tbinom"            -> (tex_use_ams (); FUN_AR2 "\\tbinom ")
494     | "\\stackrel"         -> FUN_AR2 "\\stackrel "
495     | "\\sideset"         -> (tex_use_ams (); FUN_AR2nb "\\sideset ")
496     | "\\underset"         -> (tex_use_ams (); FUN_AR2 "\\underset ")
497     | "\\overset"         -> (tex_use_ams (); FUN_AR2 "\\overset ")
498     | "\\frac"             -> FUN_AR2h ("\\frac ", fun num den -> Html.html_render [num], "<hr style=\"{background: black}\"/>", Html.html_render [den])
499     | "\\dfrac"             -> (tex_use_ams () ; FUN_AR2 "\\dfrac ")
500     | "\\tfrac"             -> (tex_use_ams () ; FUN_AR2h ("\\tfrac ", fun num den -> Html.html_render [num], "<hr style=\"background: black\">", Html.html_render [den]))
501     | "\\cfrac"            -> (tex_use_ams (); FUN_AR2h ("\\cfrac ", fun num den -> Html.html_render [num], "<hr style=\"{background: black}\">", Html.html_render [den]))
502     | "\\over"             -> FUN_INFIXh ("\\over ", fun num den -> Html.html_render num, "<hr style=\"{background: black}\"/>", Html.html_render den)
503     | "\\sqrt"             -> FUN_AR1 "\\sqrt "
504     | "\\pmod"             -> FUN_AR1hl ("\\pmod ", ("(mod ", ")"))
505     | "\\bmod"             -> FUN_AR1hl ("\\bmod ", ("mod ", ""))
506     | "\\emph"             -> FUN_AR1 "\\emph "
507     | "\\texttt"           -> FUN_AR1 "\\texttt "
508     | "\\textbf"           -> FUN_AR1 "\\textbf "
509     | "\\textit"           -> FUN_AR1hf ("\\textit ", FONTFORCE_IT)
510     | "\\textrm"           -> FUN_AR1hf ("\\textrm ", FONTFORCE_RM)
511     | "\\rm"               -> DECLh ("\\rm ", FONTFORCE_RM)
512     | "\\it"               -> DECLh ("\\it ", FONTFORCE_IT)
513     | "\\cal"              -> DECL "\\cal "
514     | "\\displaystyle"     -> LITERAL (TEX_ONLY  "\\displaystyle ")
515     | "\\scriptstyle"      -> LITERAL (TEX_ONLY "\\scriptstyle ")
516     | "\\textstyle"        -> LITERAL (TEX_ONLY "\\textstyle ")
517     | "\\scriptscriptstyle"-> LITERAL (TEX_ONLY "\\scriptscriptstyle ")
518     | "\\bf"               -> DECL "\\bf "
519     | "\\big"              -> BIG "\\big "
520     | "\\Big"              -> BIG "\\Big "
521     | "\\bigg"             -> BIG "\\bigg "
522     | "\\Bigg"             -> BIG "\\Bigg "
523     | "\\bigl"             -> (tex_use_ams ();BIG "\\bigl ")
524     | "\\bigr"             -> (tex_use_ams ();BIG "\\bigr ")
525     | "\\Bigl"             -> (tex_use_ams ();BIG "\\Bigl ")
526     | "\\Bigr"             -> (tex_use_ams ();BIG "\\Bigr ")
527     | "\\biggl"             -> (tex_use_ams ();BIG "\\biggl ")
528     | "\\biggr"             -> (tex_use_ams ();BIG "\\biggr ")
529     | "\\Biggl"             -> (tex_use_ams ();BIG "\\Biggl ")
530     | "\\Biggr"             -> (tex_use_ams ();BIG "\\Biggr ")
531     | "\\vartriangle"      -> (tex_use_ams (); LITERAL (TEX_ONLY "\\vartriangle "))
532     | "\\triangledown"     -> (tex_use_ams (); LITERAL (TEX_ONLY "\\triangledown "))
533     | "\\lozenge"          -> (tex_use_ams (); LITERAL (TEX_ONLY "\\lozenge "))
534     | "\\circledS"         -> (tex_use_ams (); LITERAL (TEX_ONLY "\\circledS "))
535     | "\\measuredangle"    -> (tex_use_ams (); LITERAL (TEX_ONLY "\\measuredangle "))
536     | "\\nexists"          -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nexists "))
537     | "\\Bbbk"             -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Bbbk "))
538     | "\\backprime"        -> (tex_use_ams (); LITERAL (TEX_ONLY "\\backprime "))
539     | "\\blacktriangle"    -> (tex_use_ams (); LITERAL (TEX_ONLY "\\blacktriangle "))
540     | "\\blacktriangledown"-> (tex_use_ams (); LITERAL (TEX_ONLY "\\blacktriangledown "))
541     | "\\blacksquare"      -> (tex_use_ams (); LITERAL (TEX_ONLY "\\blacksquare "))
542     | "\\blacklozenge"     -> (tex_use_ams (); LITERAL (TEX_ONLY "\\blacklozenge "))
543     | "\\bigstar"          -> (tex_use_ams (); LITERAL (TEX_ONLY "\\bigstar "))
544     | "\\sphericalangle"   -> (tex_use_ams (); LITERAL (TEX_ONLY "\\sphericalangle "))
545     | "\\diagup"           -> (tex_use_ams (); LITERAL (TEX_ONLY "\\diagup "))
546     | "\\diagdown"         -> (tex_use_ams (); LITERAL (TEX_ONLY "\\diagdown "))
547     | "\\dotplus"          -> (tex_use_ams (); LITERAL (TEX_ONLY "\\dotplus "))
548     | "\\Cap"              -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Cap "))
549     | "\\doublecap"        -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Cap "))
550     | "\\Cup"              -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Cup "))
551     | "\\doublecup"        -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Cup "))
552     | "\\barwedge"         -> (tex_use_ams (); LITERAL (TEX_ONLY "\\barwedge "))
553     | "\\veebar"           -> (tex_use_ams (); LITERAL (TEX_ONLY "\\veebar "))
554     | "\\doublebarwedge"   -> (tex_use_ams (); LITERAL (TEX_ONLY "\\doublebarwedge "))
555     | "\\boxminus"         -> (tex_use_ams (); LITERAL (TEX_ONLY "\\boxminus "))
556     | "\\boxtimes"         -> (tex_use_ams (); LITERAL (TEX_ONLY "\\boxtimes "))
557     | "\\boxdot"           -> (tex_use_ams (); LITERAL (TEX_ONLY "\\boxdot "))
558     | "\\boxplus"          -> (tex_use_ams (); LITERAL (TEX_ONLY "\\boxplus "))
559     | "\\divideontimes"    -> (tex_use_ams (); LITERAL (TEX_ONLY "\\divideontimes "))
560     | "\\ltimes"           -> (tex_use_ams (); LITERAL (TEX_ONLY "\\ltimes "))
561     | "\\rtimes"           -> (tex_use_ams (); LITERAL (TEX_ONLY "\\rtimes "))
562     | "\\leftthreetimes"   -> (tex_use_ams (); LITERAL (TEX_ONLY "\\leftthreetimes "))
563     | "\\rightthreetimes"  -> (tex_use_ams (); LITERAL (TEX_ONLY "\\rightthreetimes "))
564     | "\\curlywedge"       -> (tex_use_ams (); LITERAL (TEX_ONLY "\\curlywedge "))
565     | "\\curlyvee"         -> (tex_use_ams (); LITERAL (TEX_ONLY "\\curlyvee "))
566     | "\\circleddash"      -> (tex_use_ams (); LITERAL (TEX_ONLY "\\circleddash "))
567     | "\\circledast"       -> (tex_use_ams (); LITERAL (TEX_ONLY "\\circledast "))
568     | "\\circledcirc"      -> (tex_use_ams (); LITERAL (TEX_ONLY "\\circledcirc "))
569     | "\\centerdot"        -> (tex_use_ams (); LITERAL (TEX_ONLY "\\centerdot "))
570     | "\\intercal"         -> (tex_use_ams (); LITERAL (TEX_ONLY "\\intercal "))
571     | "\\leqq"             -> (tex_use_ams (); LITERAL (TEX_ONLY "\\leqq "))
572     | "\\leqslant"         -> (tex_use_ams (); LITERAL (TEX_ONLY "\\leqslant "))
573     | "\\eqslantless"      -> (tex_use_ams (); LITERAL (TEX_ONLY "\\eqslantless "))
574     | "\\lessapprox"       -> (tex_use_ams (); LITERAL (TEX_ONLY "\\lessapprox "))
575     | "\\approxeq"         -> (tex_use_ams (); LITERAL (TEX_ONLY "\\approxeq "))
576     | "\\lessdot"          -> (tex_use_ams (); LITERAL (TEX_ONLY "\\lessdot "))
577     | "\\lll"              -> (tex_use_ams (); LITERAL (TEX_ONLY "\\lll "))
578     | "\\lessgtr"          -> (tex_use_ams (); LITERAL (TEX_ONLY "\\lessgtr "))
579     | "\\lesseqgtr"        -> (tex_use_ams (); LITERAL (TEX_ONLY "\\lesseqgtr "))
580     | "\\lesseqqgtr"       -> (tex_use_ams (); LITERAL (TEX_ONLY "\\lesseqqgtr "))
581     | "\\doteqdot"         -> (tex_use_ams (); LITERAL (TEX_ONLY "\\doteqdot "))
582     | "\\Doteq"            -> (tex_use_ams (); LITERAL (TEX_ONLY "\\doteqdot "))
583     | "\\risingdotseq"     -> (tex_use_ams (); LITERAL (TEX_ONLY "\\risingdotseq "))
584     | "\\fallingdotseq"    -> (tex_use_ams (); LITERAL (TEX_ONLY "\\fallingdotseq "))
585     | "\\backsim"          -> (tex_use_ams (); LITERAL (TEX_ONLY "\\backsim "))
586     | "\\backsimeq"        -> (tex_use_ams (); LITERAL (TEX_ONLY "\\backsimeq "))
587     | "\\subseteqq"        -> (tex_use_ams (); LITERAL (TEX_ONLY "\\subseteqq "))
588     | "\\Subset"           -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Subset "))
589     | "\\preccurlyeq"      -> (tex_use_ams (); LITERAL (TEX_ONLY "\\preccurlyeq "))
590     | "\\curlyeqprec"      -> (tex_use_ams (); LITERAL (TEX_ONLY "\\curlyeqprec "))
591     | "\\precsim"          -> (tex_use_ams (); LITERAL (TEX_ONLY "\\precsim "))
592     | "\\precapprox"       -> (tex_use_ams (); LITERAL (TEX_ONLY "\\precapprox "))
593     | "\\vartriangleleft"  -> (tex_use_ams (); LITERAL (TEX_ONLY "\\vartriangleleft "))
594     | "\\Vvdash"           -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Vvdash "))
595     | "\\bumpeq"           -> (tex_use_ams (); LITERAL (TEX_ONLY "\\bumpeq "))
596     | "\\Bumpeq"           -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Bumpeq "))
597     | "\\geqq"             -> (tex_use_ams (); LITERAL (TEX_ONLY "\\geqq "))
598     | "\\geqslant"         -> (tex_use_ams (); LITERAL (TEX_ONLY "\\geqslant "))
599     | "\\eqslantgtr"       -> (tex_use_ams (); LITERAL (TEX_ONLY "\\eqslantgtr "))
600     | "\\gtrsim"           -> (tex_use_ams (); LITERAL (TEX_ONLY "\\gtrsim "))
601     | "\\gtrapprox"        -> (tex_use_ams (); LITERAL (TEX_ONLY "\\gtrapprox "))
602     | "\\eqsim"            -> (tex_use_ams (); LITERAL (TEX_ONLY "\\eqsim "))
603     | "\\gtrdot"           -> (tex_use_ams (); LITERAL (TEX_ONLY "\\gtrdot "))
604     | "\\ggg"              -> (tex_use_ams (); LITERAL (TEX_ONLY "\\ggg "))
605     | "\\gggtr"            -> (tex_use_ams (); LITERAL (TEX_ONLY "\\ggg "))
606     | "\\gtrless"          -> (tex_use_ams (); LITERAL (TEX_ONLY "\\gtrless "))
607     | "\\gtreqless"        -> (tex_use_ams (); LITERAL (TEX_ONLY "\\gtreqless "))
608     | "\\gtreqqless"       -> (tex_use_ams (); LITERAL (TEX_ONLY "\\gtreqqless "))
609     | "\\eqcirc"           -> (tex_use_ams (); LITERAL (TEX_ONLY "\\eqcirc "))
610     | "\\circeq"           -> (tex_use_ams (); LITERAL (TEX_ONLY "\\circeq "))
611     | "\\triangleq"        -> (tex_use_ams (); LITERAL (TEX_ONLY "\\triangleq "))
612     | "\\thicksim"         -> (tex_use_ams (); LITERAL (TEX_ONLY "\\thicksim "))
613     | "\\thickapprox"      -> (tex_use_ams (); LITERAL (TEX_ONLY "\\thickapprox "))
614     | "\\supseteqq"        -> (tex_use_ams (); LITERAL (TEX_ONLY "\\supseteqq "))
615     | "\\Supset"           -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Supset "))
616     | "\\succcurlyeq"      -> (tex_use_ams (); LITERAL (TEX_ONLY "\\succcurlyeq "))
617     | "\\curlyeqsucc"      -> (tex_use_ams (); LITERAL (TEX_ONLY "\\curlyeqsucc "))
618     | "\\succsim"          -> (tex_use_ams (); LITERAL (TEX_ONLY "\\succsim "))
619     | "\\succapprox"       -> (tex_use_ams (); LITERAL (TEX_ONLY "\\succapprox "))
620     | "\\vartriangleright" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\vartriangleright "))
621     | "\\shortmid"         -> (tex_use_ams (); LITERAL (TEX_ONLY "\\shortmid "))
622     | "\\shortparallel"    -> (tex_use_ams (); LITERAL (TEX_ONLY "\\shortparallel "))
623     | "\\between"          -> (tex_use_ams (); LITERAL (TEX_ONLY "\\between "))
624     | "\\pitchfork"        -> (tex_use_ams (); LITERAL (TEX_ONLY "\\pitchfork "))
625     | "\\varpropto"        -> (tex_use_ams (); LITERAL (TEX_ONLY "\\varpropto "))
626     | "\\blacktriangleleft"-> (tex_use_ams (); LITERAL (TEX_ONLY "\\blacktriangleleft "))
627     | "\\therefore"        -> (tex_use_ams (); LITERAL (TEX_ONLY "\\therefore "))
628     | "\\backepsilon"      -> (tex_use_ams (); LITERAL (TEX_ONLY "\\backepsilon "))
629     | "\\blacktriangleright"-> (tex_use_ams (); LITERAL (TEX_ONLY "\\blacktriangleright "))
630     | "\\because"          -> (tex_use_ams (); LITERAL (TEX_ONLY "\\because "))
631     | "\\nleqslant"        -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nleqslant "))
632     | "\\nleqq"            -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nleqq "))
633     | "\\lneq"             -> (tex_use_ams (); LITERAL (TEX_ONLY "\\lneq "))
634     | "\\lneqq"            -> (tex_use_ams (); LITERAL (TEX_ONLY "\\lneqq "))
635     | "\\lvertneqq"        -> (tex_use_ams (); LITERAL (TEX_ONLY "\\lvertneqq "))
636     | "\\lnsim"            -> (tex_use_ams (); LITERAL (TEX_ONLY "\\lnsim "))
637     | "\\lnapprox"         -> (tex_use_ams (); LITERAL (TEX_ONLY "\\lnapprox "))
638     | "\\nprec"            -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nprec "))
639     | "\\npreceq"          -> (tex_use_ams (); LITERAL (TEX_ONLY "\\npreceq "))
640     | "\\precneqq"         -> (tex_use_ams (); LITERAL (TEX_ONLY "\\precneqq "))
641     | "\\precnsim"         -> (tex_use_ams (); LITERAL (TEX_ONLY "\\precnsim "))
642     | "\\precnapprox"      -> (tex_use_ams (); LITERAL (TEX_ONLY "\\precnapprox "))
643     | "\\nsim"             -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nsim "))
644     | "\\nshortmid"        -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nshortmid "))
645     | "\\nvdash"           -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nvdash "))
646     | "\\nVdash"           -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nVdash "))
647     | "\\ntriangleleft"    -> (tex_use_ams (); LITERAL (TEX_ONLY "\\ntriangleleft "))
648     | "\\ntrianglelefteq"  -> (tex_use_ams (); LITERAL (TEX_ONLY "\\ntrianglelefteq "))
649     | "\\nsubseteq"        -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nsubseteq "))
650     | "\\nsubseteqq"       -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nsubseteqq "))
651     | "\\varsubsetneq"     -> (tex_use_ams (); LITERAL (TEX_ONLY "\\varsubsetneq "))
652     | "\\subsetneqq"       -> (tex_use_ams (); LITERAL (TEX_ONLY "\\subsetneqq "))
653     | "\\varsubsetneqq"    -> (tex_use_ams (); LITERAL (TEX_ONLY "\\varsubsetneqq "))
654     | "\\ngtr"             -> (tex_use_ams (); LITERAL (TEX_ONLY "\\ngtr "))
655     | "\\ngeqslant"        -> (tex_use_ams (); LITERAL (TEX_ONLY "\\ngeqslant "))
656     | "\\ngeqq"            -> (tex_use_ams (); LITERAL (TEX_ONLY "\\ngeqq "))
657     | "\\gneq"             -> (tex_use_ams (); LITERAL (TEX_ONLY "\\gneq "))
658     | "\\gneqq"            -> (tex_use_ams (); LITERAL (TEX_ONLY "\\gneqq "))
659     | "\\gvertneqq"        -> (tex_use_ams (); LITERAL (TEX_ONLY "\\gvertneqq "))
660     | "\\gnsim"            -> (tex_use_ams (); LITERAL (TEX_ONLY "\\gnsim "))
661     | "\\gnapprox"         -> (tex_use_ams (); LITERAL (TEX_ONLY "\\gnapprox "))
662     | "\\nsucc"            -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nsucc "))
663     | "\\nsucceq"          -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nsucceq "))
664     | "\\succneqq"         -> (tex_use_ams (); LITERAL (TEX_ONLY "\\succneqq "))
665     | "\\succnsim"         -> (tex_use_ams (); LITERAL (TEX_ONLY "\\succnsim "))
666     | "\\succnapprox"      -> (tex_use_ams (); LITERAL (TEX_ONLY "\\succnapprox "))
667     | "\\ncong"            -> (tex_use_ams (); LITERAL (TEX_ONLY "\\ncong "))
668     | "\\nshortparallel"   -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nshortparallel "))
669     | "\\nparallel"        -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nparallel "))
670     | "\\nvDash"           -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nvDash "))
671     | "\\nVDash"           -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nVDash "))
672     | "\\ntriangleright"   -> (tex_use_ams (); LITERAL (TEX_ONLY "\\ntriangleright "))
673     | "\\ntrianglerighteq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\ntrianglerighteq "))
674     | "\\nsupseteq"        -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nsupseteq "))
675     | "\\nsupseteqq"       -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nsupseteqq "))
676     | "\\varsupsetneq"     -> (tex_use_ams (); LITERAL (TEX_ONLY "\\varsupsetneq "))
677     | "\\supsetneqq"       -> (tex_use_ams (); LITERAL (TEX_ONLY "\\supsetneqq "))
678     | "\\varsupsetneqq"    -> (tex_use_ams (); LITERAL (TEX_ONLY "\\varsupsetneqq "))
679     | "\\leftleftarrows"   -> (tex_use_ams (); LITERAL (TEX_ONLY "\\leftleftarrows "))
680     | "\\leftrightarrows"  -> (tex_use_ams (); LITERAL (TEX_ONLY "\\leftrightarrows "))
681     | "\\Lleftarrow"       -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Lleftarrow "))
682     | "\\leftarrowtail"    -> (tex_use_ams (); LITERAL (TEX_ONLY "\\leftarrowtail "))
683     | "\\looparrowleft"    -> (tex_use_ams (); LITERAL (TEX_ONLY "\\looparrowleft "))
684     | "\\leftrightharpoons"-> (tex_use_ams (); LITERAL (TEX_ONLY "\\leftrightharpoons "))
685     | "\\curvearrowleft"   -> (tex_use_ams (); LITERAL (TEX_ONLY "\\curvearrowleft "))
686     | "\\circlearrowleft"  -> (tex_use_ams (); LITERAL (TEX_ONLY "\\circlearrowleft "))
687     | "\\Lsh"              -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Lsh "))
688     | "\\upuparrows"       -> (tex_use_ams (); LITERAL (TEX_ONLY "\\upuparrows "))
689     | "\\rightrightarrows" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\rightrightarrows "))
690     | "\\rightleftarrows"  -> (tex_use_ams (); LITERAL (TEX_ONLY "\\rightleftarrows "))
691     | "\\Rrightarrow"      -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Rrightarrow "))
692     | "\\rightarrowtail"   -> (tex_use_ams (); LITERAL (TEX_ONLY "\\rightarrowtail "))
693     | "\\looparrowright"   -> (tex_use_ams (); LITERAL (TEX_ONLY "\\looparrowright "))
694     | "\\curvearrowright"  -> (tex_use_ams (); LITERAL (TEX_ONLY "\\curvearrowright "))
695     | "\\circlearrowright" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\circlearrowright "))
696     | "\\Rsh"              -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Rsh "))
697     | "\\downdownarrows"   -> (tex_use_ams (); LITERAL (TEX_ONLY "\\downdownarrows "))
698     | "\\multimap"         -> (tex_use_ams (); LITERAL (TEX_ONLY "\\multimap "))
699     | "\\leftrightsquigarrow"-> (tex_use_ams (); LITERAL (TEX_ONLY "\\leftrightsquigarrow "))
700     | "\\rightsquigarrow"  -> (tex_use_ams (); LITERAL (TEX_ONLY "\\rightsquigarrow "))
701     | "\\nLeftarrow"       -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nLeftarrow "))
702     | "\\nleftrightarrow"  -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nleftrightarrow "))
703     | "\\nRightarrow"      -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nRightarrow "))
704     | "\\nLeftrightarrow"  -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nLeftrightarrow "))
705     | "\\mathit"           -> (tex_use_ams (); FUN_AR1hf ("\\mathit ", FONTFORCE_IT))
706     | "\\mathrm"           -> (tex_use_ams (); FUN_AR1hf ("\\mathrm ", FONTFORCE_RM))
707     | "\\mathord"          -> (tex_use_ams (); FUN_AR1 "\\mathord ")
708     | "\\mathop"           -> (tex_use_ams (); FUN_AR1 "\\mathop ")
709     | "\\mathbin"          -> (tex_use_ams (); FUN_AR1 "\\mathbin ")
710     | "\\mathrel"          -> (tex_use_ams (); FUN_AR1 "\\mathrel ")
711     | "\\mathopen"         -> (tex_use_ams (); FUN_AR1 "\\mathopen ")
712     | "\\mathclose"        -> (tex_use_ams (); FUN_AR1 "\\mathclose ")
713     | "\\mathpunct"        -> (tex_use_ams (); FUN_AR1 "\\mathpunct ")
714     | "\\boldsymbol"       -> (tex_use_ams (); FUN_AR1 "\\boldsymbol ")
715     | "\\bold"             -> (tex_use_ams (); FUN_AR1 "\\mathbf ")
716     | "\\Bbb"              -> (tex_use_ams (); FUN_AR1 "\\mathbb ")
717     | "\\mathbf"           -> (tex_use_ams (); FUN_AR1 "\\mathbf ")
718     | "\\mathsf"           -> (tex_use_ams (); FUN_AR1 "\\mathsf ")
719     | "\\mathcal"          -> (tex_use_ams (); FUN_AR1 "\\mathcal ")
720     | "\\mathbb"           -> (tex_use_ams (); FUN_AR1 "\\mathbb ")
721     | "\\mathfrak"         -> (tex_use_ams (); FUN_AR1 "\\mathfrak ")
722     | "\\operatorname"     -> (tex_use_ams (); FUN_AR1 "\\operatorname ")
723     | "\\text"             -> raise (Failure "malformatted \\text")
724     | "\\mbox"             -> raise (Failure "malformatted \\mbox")
725     | "\\vbox"             -> raise (Failure "malformatted \\vbox")
726     | "\\hbox"             -> raise (Failure "malformatted \\hbox")
727     | "\\color"            -> (tex_use_color (); LITERAL (TEX_ONLY "\\color"))
728     | s                    -> raise (Illegal_tex_function s)