X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fcomponents%2Fcontent_pres%2FboxPp.ml;h=0d58d97643a17aa147d117d006ed4cc8cec212d5;hb=f9abd21eb0d26cf9b632af4df819225be4d091e3;hp=53149877ea73a1eb71e3c5b2f75ec4f7f78df552;hpb=f45affb2ac7e6c1b35350642f8028ca48a781fbe;p=helm.git diff --git a/helm/software/components/content_pres/boxPp.ml b/helm/software/components/content_pres/boxPp.ml index 53149877e..0d58d9764 100644 --- a/helm/software/components/content_pres/boxPp.ml +++ b/helm/software/components/content_pres/boxPp.ml @@ -93,7 +93,7 @@ let fixed_rendering s = 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 @@ -185,6 +185,7 @@ let render_to_strings choose_action size markup = 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) @@ -193,11 +194,15 @@ let render_to_strings choose_action size markup = | Pres.Mgliph (_, s) -> fixed_rendering s | Pres.Mo (_, s) -> let s = - if String.length s > 1 then - (* heuristic to guess which operators need to be expanded in their - * TeX like format *) - Utf8Macro.tex_of_unicode s ^ " " - else 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 | Pres.Mspace _ -> fixed_rendering string_space @@ -205,11 +210,11 @@ let render_to_strings choose_action size markup = 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) @@ -218,13 +223,13 @@ let render_to_strings choose_action size markup = | 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 _ -> @@ -236,6 +241,7 @@ let render_to_strings choose_action size markup = 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)