X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fcomponents%2Fbinaries%2Fmatex%2FTeXOutput.ml;h=f18b2b44abbf787f3d637bfa11b2ac9aa8d75e2f;hb=HEAD;hp=609772d47bdc607946f4e94085791ae16fc52db8;hpb=2ffd7e47f1872878f6af4084074655da5cf3b23e;p=helm.git diff --git a/matita/components/binaries/matex/TeXOutput.ml b/matita/components/binaries/matex/TeXOutput.ml index 609772d47..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 = "_" +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 ******************************************************)