* Add a parser test for parser hooks inside comments which are currently
[lhc/web/wiklou.git] / math / texutil.ml
index 99c7f31..67cb1a8 100644 (file)
@@ -36,10 +36,12 @@ 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_mod_reset ()   = (modules_ams := false; modules_nonascii := false; modules_encoding := UTF8)
+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"
@@ -49,6 +51,7 @@ let get_encoding = function
 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"
 
@@ -158,6 +161,9 @@ let find = function
     | "\\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 ")
@@ -183,6 +189,7 @@ let find = function
     | "\\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 ")
@@ -213,6 +220,8 @@ let find = function
     | "\\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"))
@@ -301,6 +310,7 @@ let find = function
     | "\\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 ", "⊕"))
@@ -368,6 +378,7 @@ let find = function
     | "\\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 "))
@@ -424,7 +435,7 @@ let find = function
     | "\\ddot"             -> FUN_AR1 "\\ddot "
     | "\\breve"            -> FUN_AR1 "\\breve "
     | "\\tilde"            -> FUN_AR1 "\\tilde "
-    | "\\not"              -> FUN_AR1 "\\not "
+    | "\\not"              -> LITERAL (TEX_ONLY "\\not ")
     | "\\choose"           -> FUN_INFIX "\\choose "
     | "\\atop"             -> FUN_INFIX "\\atop "
     | "\\binom"            -> FUN_AR2 "\\binom "
@@ -442,6 +453,10 @@ let find = function
     | "\\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 "
@@ -462,4 +477,5 @@ let find = function
     | "\\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)