]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/components/content_pres/cicNotationPres.ml
parameter sintax added to axiom statement
[helm.git] / helm / software / components / content_pres / cicNotationPres.ml
index 8ed430901893a0d2cf8f268b34c6509428e30fbd..82a326c48bbb4ffc70d64400ef043b1b74955fa0 100644 (file)
@@ -200,16 +200,17 @@ let add_parens child_prec curr_prec t =
       BoxPp.render_to_string (function x::_->x|_->assert false)
         ~map_unicode_to_tex:false 80 t);*)t)
 
-let render ids_to_uris ?(prec=(-1)) =
+let lookup_uri ids_to_uris id =
+ try
+   let uri = Hashtbl.find ids_to_uris id in
+   Some (UriManager.string_of_uri uri)
+ with Not_found -> None
+;;
+
+let render ~lookup_uri ?(prec=(-1)) =
   let module A = Ast in
   let module P = Mpresentation in
 (*   let use_unicode = true in *)
-  let lookup_uri id =
-    (try
-      let uri = Hashtbl.find ids_to_uris id in
-      Some (UriManager.string_of_uri uri)
-    with Not_found -> None)
-  in
   let make_href xmlattrs xref =
     let xref_uris =
       List.fold_right
@@ -331,7 +332,7 @@ let render ids_to_uris ?(prec=(-1)) =
           | `Raw _ -> ()
           | `Level (-1) -> reset := true
           | `Level child_prec ->
-              assert (!expected_level = None);
+(*               assert (!expected_level = None); *)
               expected_level := !inferred_level;
               inferred_level := Some child_prec
           | `IdRef xref -> new_xref := xref :: !new_xref
@@ -344,7 +345,7 @@ let render ids_to_uris ?(prec=(-1)) =
             | Some prec -> prec
           in
           (match !inferred_level with
-          | None -> aux !new_xmlattrs mathonly new_xref prec t 
+          | None -> aux !new_xmlattrs mathonly new_xref prec t
           | Some child_prec ->
               let t' = aux !new_xmlattrs mathonly new_xref child_prec t in
               (*prerr_endline 
@@ -370,6 +371,9 @@ let render ids_to_uris ?(prec=(-1)) =
       (* use the one below to reset precedence and associativity *)
     let invoke_reinit t = aux [] mathonly xref ~-1 t in
     match l with
+    | A.Sup (A.Layout (A.Sub (t1,t2)), t3)
+    | A.Sup (A.AttributedTerm (_,A.Layout (A.Sub (t1,t2))), t3)
+      -> Mpres.Msubsup (attrs, invoke' t1, invoke_reinit t2, invoke_reinit t3)
     | A.Sub (t1, t2) -> Mpres.Msub (attrs, invoke' t1, invoke_reinit t2)
     | A.Sup (t1, t2) -> Mpres.Msup (attrs, invoke' t1, invoke_reinit t2)
     | A.Below (t1, t2) -> Mpres.Munder (attrs, invoke' t1, invoke_reinit t2)
@@ -381,11 +385,15 @@ let render ids_to_uris ?(prec=(-1)) =
         Mpres.Mfrac (atop_attributes @ attrs, invoke_reinit t1,
           invoke_reinit t2)
     | A.InfRule (t1, t2, t3) ->
+      Mpres.Mstyle ([None,"mathsize","big"],
        Mpres.Mrow (attrs,
         [Mpres.Mfrac ([],
            Mpres.Mstyle ([None,"scriptlevel","0"],invoke_reinit t1),
            Mpres.Mstyle ([None,"scriptlevel","0"],invoke_reinit t2));
-         Mpres.Mstyle ([None,"scriptlevel","2"],invoke_reinit t3)])
+          Mpres.Mstyle ([None,"scriptlevel","2"],
+           Mpresentation.Mspace 
+            (RenderingAttrs.small_skip_attributes `MathML));
+         Mpres.Mstyle ([None,"scriptlevel","1"],invoke_reinit t3)]))
     | A.Sqrt t -> Mpres.Msqrt (attrs, invoke_reinit t)
     | A.Root (t1, t2) ->
         Mpres.Mroot (attrs, invoke_reinit t1, invoke_reinit t2)
@@ -395,6 +403,20 @@ let render ids_to_uris ?(prec=(-1)) =
             (CicNotationUtil.ungroup terms)
         in
         box_of mathonly kind attrs children
+    | A.Mstyle (l,terms) -> 
+        Mpres.Mstyle 
+          (List.map (fun (k,v) -> None,k,v) l, 
+           box_of mathonly (A.H, false, false) attrs 
+            (aux_children mathonly false xref  prec 
+              (CicNotationUtil.ungroup terms)))
+    | A.Mpadded (l,terms) -> 
+        Mpres.Mpadded 
+          (List.map (fun (k,v) -> None,k,v) l, 
+           box_of mathonly (A.H, false, false) attrs 
+            (aux_children mathonly false xref  prec 
+              (CicNotationUtil.ungroup terms)))
+    | A.Maction alternatives -> 
+         toggle_action (List.map invoke_reinit alternatives)
     | A.Group terms ->
        let children =
           aux_children mathonly false xref  prec