let s_len = String.length s in
(fun _ -> s_len, [s])
-let render_to_strings choose_action size markup =
+let render_to_strings ~map_unicode_to_tex choose_action size markup =
let max_size = max_int in
let rec aux_box =
function
and aux_mpres =
let text s = Pres.Mtext ([], s) in
let mrow c = Pres.Mrow ([], c) in
+ let parentesize s = s in
function
| Pres.Mi (_, s)
| Pres.Mn (_, s)
| Pres.Mgliph (_, s) -> fixed_rendering s
| Pres.Mo (_, s) ->
let s =
- if String.length s = 1 && Char.code s.[0] < 128 then
- s
- else
- match Utf8Macro.tex_of_unicode s with
- Some s -> s ^ " "
- | None -> s
+ if map_unicode_to_tex then begin
+ if String.length s = 1 && Char.code s.[0] < 128 then
+ s
+ else
+ match Utf8Macro.tex_of_unicode s with
+ | s::_ -> s ^ " "
+ | [] -> " " ^ s ^ " "
+ end else
+ s
in
- fixed_rendering s
+ fixed_rendering s
| Pres.Mspace _ -> fixed_rendering string_space
| Pres.Mrow (attrs, children) ->
let children' = List.map aux_mpres children in
(fun size -> render_row size false children')
| Pres.Mfrac (_, m, n) ->
- aux_mpres (mrow [ text "\\frac("; text ")"; text "("; n; text ")" ])
- | Pres.Msqrt (_, m) -> aux_mpres (mrow [ text "\\sqrt("; m; text ")" ])
+ aux_mpres (mrow [ text " \\frac "; parentesize m ; text " "; parentesize n; text " " ])
+ | Pres.Msqrt (_, m) -> aux_mpres (mrow [ text " \\sqrt "; parentesize m; text " "])
| Pres.Mroot (_, r, i) ->
aux_mpres (mrow [
- text "\\root("; i; text ")"; text "\\of("; r; text ")" ])
+ text " \\root "; parentesize i; text " \\of "; parentesize r; text " " ])
| Pres.Mstyle (_, m)
| Pres.Merror (_, m)
| Pres.Mpadded (_, m)
| Pres.Mfenced (_, children) -> aux_mpres (mrow children)
| Pres.Maction (_, []) -> assert false
| Pres.Msub (_, m, n) ->
- aux_mpres (mrow [ text "("; m; text ")\\sub("; n; text ")" ])
+ aux_mpres (mrow [ text " "; parentesize m; text " \\sub "; parentesize n; text " " ])
| Pres.Msup (_, m, n) ->
- aux_mpres (mrow [ text "("; m; text ")\\sup("; n; text ")" ])
+ aux_mpres (mrow [ text " "; parentesize m; text " \\sup "; parentesize n; text " " ])
| Pres.Munder (_, m, n) ->
- aux_mpres (mrow [ text "("; m; text ")\\below("; n; text ")" ])
+ aux_mpres (mrow [ text " "; parentesize m; text " \\below "; parentesize n; text " " ])
| Pres.Mover (_, m, n) ->
- aux_mpres (mrow [ text "("; m; text ")\\above("; n; text ")" ])
+ aux_mpres (mrow [ text " "; parentesize m; text " \\above "; parentesize n; text " " ])
| Pres.Msubsup _
| Pres.Munderover _
| Pres.Mtable _ ->
in
snd (aux_mpres markup size)
-let render_to_string choose_action size markup =
- String.concat "\n" (render_to_strings choose_action size markup)
+let render_to_string ~map_unicode_to_tex choose_action size markup =
+ String.concat "\n"
+ (render_to_strings ~map_unicode_to_tex choose_action size markup)