X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fcomponents%2Fbinaries%2Fmatex%2FTeXOutput.ml;h=f18b2b44abbf787f3d637bfa11b2ac9aa8d75e2f;hb=58ea181757dce19b875b2f5a224fe193b2263004;hp=053c890bbde243977bee9140a7457eadf8ddf4bd;hpb=21679cd1397d9c51519dbe439c29c1683b91ec64;p=helm.git diff --git a/matita/components/binaries/matex/TeXOutput.ml b/matita/components/binaries/matex/TeXOutput.ml index 053c890bb..f18b2b44a 100644 --- a/matita/components/binaries/matex/TeXOutput.ml +++ b/matita/components/binaries/matex/TeXOutput.ml @@ -13,19 +13,26 @@ module L = List module P = Printf module S = String +module X = Ground module T = TeX (* internal functions *******************************************************) let special = "\\{}$&#^_~%" (* LaTeX reserves these characters *) -let quote c = - if S.contains special c then '.' else c +let special = [ + '_', "\\_"; +] + +let quote s c = try s ^ L.assoc c special with + | Not_found -> s ^ S.make 1 c let rec out_item och = function - | T.Free s -> P.fprintf och "%s" (S.map quote s) - | T.Macro s -> P.fprintf och "\\%s" s - | T.Group t -> P.fprintf och "%%\n{%a}" out_text t + | T.Free s -> P.fprintf och "%s" s + | T.Text s -> P.fprintf och "%s" (X.fold_string quote "" s) + | T.Macro s -> P.fprintf och "\\%s%%\n" s + | T.Group t -> P.fprintf och "{%a}%%\n" out_text t + | T.Note s -> P.fprintf och "%% %s\n" s (* interface functions ******************************************************)