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 = true) choose_action size markup =
let max_size = max_int in
let rec aux_box =
function
| 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
+ | Some s -> s ^ " "
+ | None -> 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
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)
* http://helm.cs.unibo.it/
*)
- (** @return rows list of rows *)
+ (**
+ * @param map_unicode_to_tex if true converts multibye unicode sequences to
+ * TeX-like macros (when possible). Default: true
+ * @return rows list of rows *)
val render_to_strings:
+ ?map_unicode_to_tex:bool ->
(CicNotationPres.boxml_markup Mpresentation.mpres Box.box list -> CicNotationPres.boxml_markup) ->
int -> CicNotationPres.markup -> string list
(** helper function
+ * @param map_unicode_to_tex as above
* @return s, concatenation of the return value of render_to_strings above
* with newlines as separators *)
val render_to_string:
+ ?map_unicode_to_tex:bool ->
(CicNotationPres.boxml_markup Mpresentation.mpres Box.box list -> CicNotationPres.boxml_markup) ->
int -> CicNotationPres.markup -> string
(ids_to_terms, ids_to_father_ids, ids_to_conjectures, ids_to_hypotheses,
ids_to_inner_sorts,ids_to_inner_types)))
-let txt_of_cic_sequent size metasenv sequent =
+let txt_of_cic_sequent ?map_unicode_to_tex size metasenv sequent =
let unsh_sequent,(asequent,ids_to_terms,
ids_to_father_ids,ids_to_inner_sorts,ids_to_hypotheses)
=
CicNotationPres.mpres_of_box
(Sequent2pres.sequent2pres ~ids_to_inner_sorts content_sequent)
in
- BoxPp.render_to_string (function x::_ -> x | _ -> assert false) size
- pres_sequent
+ BoxPp.render_to_string ?map_unicode_to_tex
+ (function x::_ -> x | _ -> assert false) size pres_sequent
-let txt_of_cic_sequent_conclusion size metasenv sequent =
+let txt_of_cic_sequent_conclusion ?map_unicode_to_tex size metasenv sequent =
let _,(asequent,_,_,ids_to_inner_sorts,_) =
Cic2acic.asequent_of_sequent metasenv sequent
in
let t, ids_to_uris = TermAcicContent.ast_of_acic ids_to_inner_sorts t in
let t = TermContentPres.pp_ast t in
let t = CicNotationPres.render ids_to_uris t in
- BoxPp.render_to_string (function x::_ -> x | _ -> assert false) size t
+ BoxPp.render_to_string ?map_unicode_to_tex
+ (function x::_ -> x | _ -> assert false) size t
-let txt_of_cic_term size metasenv context t =
+let txt_of_cic_term ?map_unicode_to_tex size metasenv context t =
let fake_sequent = (-1,context,t) in
- txt_of_cic_sequent_conclusion size metasenv fake_sequent
+ txt_of_cic_sequent_conclusion ?map_unicode_to_tex size metasenv fake_sequent
;;
ignore (
let remove_closed_substs s =
Pcre.replace ~pat:"{...}" ~templ:"" s
-let term2pres n ids_to_inner_sorts annterm =
+let term2pres ?map_unicode_to_tex n ids_to_inner_sorts annterm =
let ast, ids_to_uris =
TermAcicContent.ast_of_acic ids_to_inner_sorts annterm
in
in
let render = function _::x::_ -> x | _ -> assert false in
let mpres = CicNotationPres.mpres_of_box bobj in
- let s = BoxPp.render_to_string render n mpres in
+ let s = BoxPp.render_to_string ?map_unicode_to_tex render n mpres in
remove_closed_substs s
-let txt_of_cic_object n style prefix obj =
+let txt_of_cic_object ?map_unicode_to_tex n style prefix obj =
let aobj,_,_,ids_to_inner_sorts,ids_to_inner_types,_,_ =
try Cic2acic.acic_object_of_cic_object obj
with e ->
let cobj = Acic2content.annobj2content ids_to_inner_sorts ids_to_inner_types aobj in
let bobj = Content2pres.content2pres ids_to_inner_sorts cobj in
remove_closed_substs ("\n\n" ^
- BoxPp.render_to_string (function _::x::_ -> x | _ -> assert false) n (CicNotationPres.mpres_of_box bobj)
+ BoxPp.render_to_string ?map_unicode_to_tex
+ (function _::x::_ -> x | _ -> assert false) n
+ (CicNotationPres.mpres_of_box bobj)
)
| GrafiteAst.Procedural depth ->
let term_pp = term2pres (n - 8) ids_to_inner_sorts in
(Cic.id, Cic2acic.anntypes) Hashtbl.t)) (* ids_to_inner_types *)
val txt_of_cic_term:
- int -> Cic.metasenv -> Cic.context -> Cic.term -> string
+ ?map_unicode_to_tex:bool -> int -> Cic.metasenv -> Cic.context -> Cic.term ->
+ string
val txt_of_cic_sequent:
- int -> Cic.metasenv -> Cic.conjecture -> string
+ ?map_unicode_to_tex:bool -> int -> Cic.metasenv -> Cic.conjecture ->
+ string
val txt_of_cic_sequent_conclusion:
- int -> Cic.metasenv -> Cic.conjecture -> string
+ ?map_unicode_to_tex:bool -> int -> Cic.metasenv -> Cic.conjecture ->
+ string
(* columns, rendering style, name prefix, object *)
val txt_of_cic_object:
- int -> GrafiteAst.presentation_style -> string -> Cic.obj -> string
+ ?map_unicode_to_tex:bool -> int -> GrafiteAst.presentation_style -> string ->
+ Cic.obj ->
+ string
(* presentation_style, uri or baseuri, name prefix *)
val txt_of_inline_macro:
<accelerator key="n" modifiers="GDK_CONTROL_MASK" signal="activate"/>
<child internal-child="image">
- <widget class="GtkImage" id="image1013">
+ <widget class="GtkImage" id="image1047">
<property name="visible">True</property>
<property name="stock">gtk-new</property>
<property name="icon_size">1</property>
<accelerator key="o" modifiers="GDK_CONTROL_MASK" signal="activate"/>
<child internal-child="image">
- <widget class="GtkImage" id="image1014">
+ <widget class="GtkImage" id="image1048">
<property name="visible">True</property>
<property name="stock">gtk-open</property>
<property name="icon_size">1</property>
<accelerator key="s" modifiers="GDK_CONTROL_MASK" signal="activate"/>
<child internal-child="image">
- <widget class="GtkImage" id="image1015">
+ <widget class="GtkImage" id="image1049">
<property name="visible">True</property>
<property name="stock">gtk-save</property>
<property name="icon_size">1</property>
<accelerator key="s" modifiers="GDK_CONTROL_MASK | GDK_SHIFT_MASK" signal="activate"/>
<child internal-child="image">
- <widget class="GtkImage" id="image1016">
+ <widget class="GtkImage" id="image1050">
<property name="visible">True</property>
<property name="stock">gtk-save-as</property>
<property name="icon_size">1</property>
<accelerator key="d" modifiers="GDK_CONTROL_MASK" signal="activate"/>
<child internal-child="image">
- <widget class="GtkImage" id="image1017">
+ <widget class="GtkImage" id="image1051">
<property name="visible">True</property>
<property name="stock">gtk-execute</property>
<property name="icon_size">1</property>
<accelerator key="q" modifiers="GDK_CONTROL_MASK" signal="activate"/>
<child internal-child="image">
- <widget class="GtkImage" id="image1018">
+ <widget class="GtkImage" id="image1052">
<property name="visible">True</property>
<property name="stock">gtk-quit</property>
<property name="icon_size">1</property>
<accelerator key="z" modifiers="GDK_CONTROL_MASK" signal="activate"/>
<child internal-child="image">
- <widget class="GtkImage" id="image1019">
+ <widget class="GtkImage" id="image1053">
<property name="visible">True</property>
<property name="stock">gtk-undo</property>
<property name="icon_size">1</property>
<accelerator key="z" modifiers="GDK_CONTROL_MASK | GDK_SHIFT_MASK" signal="activate"/>
<child internal-child="image">
- <widget class="GtkImage" id="image1020">
+ <widget class="GtkImage" id="image1054">
<property name="visible">True</property>
<property name="stock">gtk-redo</property>
<property name="icon_size">1</property>
<accelerator key="x" modifiers="GDK_CONTROL_MASK" signal="activate"/>
<child internal-child="image">
- <widget class="GtkImage" id="image1021">
+ <widget class="GtkImage" id="image1055">
<property name="visible">True</property>
<property name="stock">gtk-cut</property>
<property name="icon_size">1</property>
<accelerator key="c" modifiers="GDK_CONTROL_MASK" signal="activate"/>
<child internal-child="image">
- <widget class="GtkImage" id="image1022">
+ <widget class="GtkImage" id="image1056">
<property name="visible">True</property>
<property name="stock">gtk-copy</property>
<property name="icon_size">1</property>
<accelerator key="v" modifiers="GDK_CONTROL_MASK" signal="activate"/>
<child internal-child="image">
- <widget class="GtkImage" id="image1023">
+ <widget class="GtkImage" id="image1057">
<property name="visible">True</property>
<property name="stock">gtk-paste</property>
<property name="icon_size">1</property>
</widget>
</child>
+ <child>
+ <widget class="GtkCheckMenuItem" id="unicodeAsTexMenuItem">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Paste Unicode as TeX</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ </widget>
+ </child>
+
<child>
<widget class="GtkImageMenuItem" id="deleteMenuItem">
<property name="visible">True</property>
<property name="use_underline">True</property>
<child internal-child="image">
- <widget class="GtkImage" id="image1024">
+ <widget class="GtkImage" id="image1058">
<property name="visible">True</property>
<property name="stock">gtk-delete</property>
<property name="icon_size">1</property>
<accelerator key="f" modifiers="GDK_CONTROL_MASK" signal="activate"/>
<child internal-child="image">
- <widget class="GtkImage" id="image1025">
+ <widget class="GtkImage" id="image1059">
<property name="visible">True</property>
<property name="stock">gtk-find-and-replace</property>
<property name="icon_size">1</property>
<accelerator key="plus" modifiers="GDK_CONTROL_MASK" signal="activate"/>
<child internal-child="image">
- <widget class="GtkImage" id="image1026">
+ <widget class="GtkImage" id="image1060">
<property name="visible">True</property>
<property name="stock">gtk-zoom-in</property>
<property name="icon_size">1</property>
<accelerator key="minus" modifiers="GDK_CONTROL_MASK" signal="activate"/>
<child internal-child="image">
- <widget class="GtkImage" id="image1027">
+ <widget class="GtkImage" id="image1061">
<property name="visible">True</property>
<property name="stock">gtk-zoom-out</property>
<property name="icon_size">1</property>
<accelerator key="equal" modifiers="GDK_CONTROL_MASK" signal="activate"/>
<child internal-child="image">
- <widget class="GtkImage" id="image1028">
+ <widget class="GtkImage" id="image1062">
<property name="visible">True</property>
<property name="stock">gtk-zoom-100</property>
<property name="icon_size">1</property>
<accelerator key="F1" modifiers="0" signal="activate"/>
<child internal-child="image">
- <widget class="GtkImage" id="image1029">
+ <widget class="GtkImage" id="image1063">
<property name="visible">True</property>
<property name="stock">gtk-help</property>
<property name="icon_size">1</property>
<property name="use_underline">True</property>
<child internal-child="image">
- <widget class="GtkImage" id="image1030">
+ <widget class="GtkImage" id="image1064">
<property name="visible">True</property>
<property name="stock">gtk-about</property>
<property name="icon_size">1</property>
not (Hr.get_opt_default Hr.bool ~default:false "matita.tactics_bar")
then
main#tacticsBarMenuItem#set_active false;
- MatitaGtkMisc.toggle_callback
+ MatitaGtkMisc.toggle_callback ~check:main#fullscreenMenuItem
~callback:(function
| true -> main#toplevel#fullscreen ()
- | false -> main#toplevel#unfullscreen ())
- ~check:main#fullscreenMenuItem;
+ | false -> main#toplevel#unfullscreen ());
main#fullscreenMenuItem#set_active false;
MatitaGtkMisc.toggle_callback ~check:main#ppNotationMenuItem
~callback:(function
CicNotation.set_active_notations []);
MatitaGtkMisc.toggle_callback ~check:main#hideCoercionsMenuItem
~callback:(fun enabled -> Acic2content.hide_coercions := enabled);
+ MatitaGtkMisc.toggle_callback ~check:main#unicodeAsTexMenuItem
+ ~callback:(fun enabled ->
+ Helm_registry.set_bool "matita.paste_unicode_as_tex" enabled);
+ if not (Helm_registry.has "matita.paste_unicode_as_tex") then
+ Helm_registry.set_bool "matita.paste_unicode_as_tex" true;
+ main#unicodeAsTexMenuItem#set_active
+ (Helm_registry.get_bool "matita.paste_unicode_as_tex");
(* log *)
HLog.set_log_callback self#console#log_callback;
GtkSignal.user_handler :=
let markup = CicNotationPres.render ids_to_uris pped_ast in
BoxPp.render_to_string text_width markup
*)
- ApplyTransformation.txt_of_cic_sequent_conclusion
+ let map_unicode_to_tex =
+ Helm_registry.get_opt Helm_registry.bool "matita.paste_unicode_as_tex" in
+ ApplyTransformation.txt_of_cic_sequent_conclusion ?map_unicode_to_tex
text_width metasenv cic_sequent
method private pattern_of term context unsh_sequent =