void edit_typeset_rep::typeset_invalidate_all () { //cout << "Invalidate all\n"; notify_change (THE_ENVIRONMENT); typeset_preamble (); ::notify_assign (ttt, path(), subtree (et, rp)); }
tree edit_typeset_rep::exec_latex (tree t, path p) { t= convert_OTS1_symbols_to_universal_encoding (t); bool expand_unknown_macros= "on" == as_string ( call ("get-preference", "texmacs->latex:expand-macros")); bool expand_user_macro= "on" == as_string ( call ("get-preference", "texmacs->latex:expand-user-macros")); if (!expand_unknown_macros && !expand_user_macro) return t; if (p == (rp * 0)) typeset_preamble (); typeset_exec_until (p); hashmap<string,tree> H= copy (cur[p]); object l= null_object (); iterator<string> it= iterate (H); while (it->busy ()) l= cons (object (it->next ()), l); tree patch= as_tree (call ("stree->tree", call ("tmtex-env-patch", t, l))); hashmap<string,tree> P (UNINIT, patch); H->join (P); if (!expand_user_macro && is_document (t) && is_compound (t[0], "hide-preamble")) { tree r= copy (t); r[0]= ""; r= exec (value_to_compound (r, P), H, false); r[0]= exec (t[0], H, false); return r; } else { tree r= exec (value_to_compound (t, P), H, false); return r; } }
tree edit_typeset_rep::exec_html (tree t, path p) { t= convert_OTS1_symbols_to_universal_encoding (t); if (p == (rp * 0)) typeset_preamble (); typeset_exec_until (p); hashmap<string,tree> H= copy (cur[p]); tree patch= as_tree (eval ("(stree->tree (tmhtml-env-patch))")); hashmap<string,tree> P (UNINIT, patch); H->join (P); tree w (WITH); if (H->contains ("html-title")) w << string ("html-title") << H["html-title"]; if (H->contains ("html-css")) w << string ("html-css") << H["html-css"]; if (H->contains ("html-head-javascript")) w << string ("html-head-javascript") << H["html-head-javascript"]; if (H->contains ("html-head-javascript-src")) w << string ("html-head-javascript-src") << H["html-head-javascript-src"]; if (N(w) == 0) return exec (t, H); else { w << t; return exec (w, H); } //tree r= exec (t, H); //cout << "In: " << t << "\n"; //cout << "Out: " << r << "\n"; //return r; }
tree edit_typeset_rep::get_init_value (string var) { if (init->contains (var)) { tree t= init [var]; return is_func (t, BACKUP, 2)? t[0]: t; } if (N(pre)==0) typeset_preamble (); tree t= pre [var]; return is_func (t, BACKUP, 2)? t[0]: t; }
void edit_main_rep::print_doc (url name, bool conform, int first, int last) { bool ps = (suffix (name) == "ps"); bool pdf = (suffix (name) == "pdf"); url orig= resolve (name, ""); #ifdef USE_GS if (!use_pdf () && pdf) name= url_temp (".ps"); if (!use_ps () && ps) name= url_temp (".pdf"); #endif string medium = env->get_string (PAGE_MEDIUM); if (conform && (medium != "paper")) conform= false; // FIXME: better command for conform printing typeset_preamble (); // FIXME: when printing several files via aux buffers, // it seems that the style can be corrupted. Why? // Set environment variables for printing typeset_prepare (); env->write (DPI, printing_dpi); env->write (PAGE_SHOW_HF, "true"); env->write (PAGE_SCREEN_MARGIN, "false"); env->write (PAGE_BORDER, "none"); if (!conform) { env->write (PAGE_MEDIUM, "paper"); env->write (PAGE_PRINTED, "true"); } // Typeset pages for printing box the_box= typeset_as_document (env, subtree (et, rp), reverse (rp)); // Determine parameters for printer string page_type = env->get_string (PAGE_TYPE); double w = env->page_width; double h = env->page_height; double cm = env->as_length (string ("1cm")); bool landsc = env->page_landscape; int dpi = as_int (printing_dpi); int start = max (0, first-1); int end = min (N(the_box[0]), last); int pages = end-start; if (conform) { page_type= "user"; SI bw= the_box[0][0]->w(); SI bh= the_box[0][0]->h(); string bws= as_string (bw) * "tmpt"; string bhs= as_string (bh) * "tmpt"; w= env->as_length (bws); h= env->as_length (bhs); } // Print pages renderer ren= printer (name, dpi, pages, page_type, landsc, w/cm, h/cm); if (ren->is_started ()) { int i; ren->set_metadata ("title", get_metadata ("title")); ren->set_metadata ("author", get_metadata ("author")); ren->set_metadata ("subject", get_metadata ("subject")); for (i=start; i<end; i++) { tree bg= env->read (BG_COLOR); ren->set_background (bg); if (bg != "white" && bg != "#ffffff") ren->clear_pattern (0, (SI) -h, (SI) w, 0); rectangles rs; the_box[0]->sx(i)= 0; the_box[0]->sy(i)= 0; the_box[0][i]->redraw (ren, path (0), rs); if (i<end-1) ren->next_page (); } } tm_delete (ren); #ifdef USE_GS if (!use_pdf () && pdf) { gs_to_pdf (name, orig, landsc, h/cm, w/cm); ::remove (name); } if (!use_ps () && ps) { gs_to_ps (name, orig, landsc, h/cm, w/cm); ::remove (name); } if (ps || pdf) if (get_preference ("texmacs->pdf:check", "off") == "on") { //system_wait ("Checking exported file for correctness", "please wait"); // FIXME: the wait message often causes a crash, currently gs_check (orig); } #endif }
bool edit_typeset_rep::defined_at_init (string var) { if (init->contains (var)) return true; if (N(pre)==0) typeset_preamble (); return pre->contains (var); }