# HG changeset patch # User Daniel J Sebald # Date 1435964208 18000 # Node ID 08a01acc2fcf5eab9d5b533ed9c6c6d73a953033 # Parent d632d99d5c2e9772dc1a93e5b8dea4f36b3f923c Use UTF-8 encoding rather than Symbol font for gnuplot terminals (patch #8696). * __gnuplot_drawnow__.m (gnuplot_set_term): Add "set encoding utf8;" prior to setting the terminal. * __go_draw_axes__.m (__go_draw_axes__): Pass 'gnuplot_term' into all functions __maybe_munge_text__(). Remove all use of undo_string_escapes() around text strings. (do_tics_1): Pass 'gnuplot_term' into __tex2enhanced__(). (get_fontname_and_size): Pass 'gnuplot_term' into __maybe_munge_text__(). (__maybe_munge_text__): Accept 'gnuplot_term' as an input variable. Pass 'gnuplot_term' into all occurrences of __tex2enhanced__(). (__tex2enhanced__): Accept 'gnuplot_term' as an input variable. Determine from gnuplot_term whether /Symbol string or UTF-8 encodings should be used. When inserting symbol strings, make the cell choice according to type. Use added sym.emptyset structure element for empty set escape sequence replacement. (__setup_sym_table__): Add the sys.emptyset definition. Add all the equivalent UTF-8 codes (viewed as glyphs in editors) alongside the /Symbol definitions in a cell array. diff -r d632d99d5c2e -r 08a01acc2fcf scripts/plot/util/__gnuplot_drawnow__.m --- a/scripts/plot/util/__gnuplot_drawnow__.m Thu Oct 22 11:20:26 2020 -0400 +++ b/scripts/plot/util/__gnuplot_drawnow__.m Fri Jul 03 17:56:48 2015 -0500 @@ -269,7 +269,7 @@ endif ## Set the gnuplot terminal (type, enhanced, title, options & size). - term_str = ["set terminal " term]; + term_str = ["set encoding utf8;\nset terminal " term]; if (__gnuplot_has_feature__ ("needs_color_with_postscript") ... && strcmp (term, "postscript")) term_str = [term_str, " color"]; diff -r d632d99d5c2e -r 08a01acc2fcf scripts/plot/util/private/__gnuplot_draw_axes__.m --- a/scripts/plot/util/private/__gnuplot_draw_axes__.m Thu Oct 22 11:20:26 2020 -0400 +++ b/scripts/plot/util/private/__gnuplot_draw_axes__.m Fri Jul 03 17:56:48 2015 -0500 @@ -154,11 +154,11 @@ if (nd == 2) t = get (axis_obj.title); colorspec = get_text_colorspec (t.color); - [tt, f, s] = __maybe_munge_text__ (enhanced, t, "string", t.interpreter); + [tt, f, s] = __maybe_munge_text__ (enhanced, t, "string", ... + t.interpreter, gnuplot_term); fontspec = create_fontspec (f, s, gnuplot_term); fprintf (plot_stream, ['set title "%s" %s %s %s;' "\n"], - undo_string_escapes (tt), fontspec, colorspec, - __do_enhanced_option__ (enhanced, t)); + tt, fontspec, colorspec, __do_enhanced_option__ (enhanced, t)); else ## Change meaning of "normalized", but it at least gives user some control if (! strcmp (get (axis_obj.title, "units"), "normalized")) @@ -186,16 +186,15 @@ fprintf (plot_stream, "unset xlabel;\n"); fprintf (plot_stream, "unset x2label;\n"); else - [tt, f, s] = __maybe_munge_text__ (enhanced, t, "string", t.interpreter); + [tt, f, s] = __maybe_munge_text__ (enhanced, t, "string", ... + t.interpreter, gnuplot_term); fontspec = create_fontspec (f, s, gnuplot_term); if (strcmp (axis_obj.xaxislocation, "top")) fprintf (plot_stream, 'set x2label "%s" %s %s %s', - undo_string_escapes (tt), colorspec, fontspec, - __do_enhanced_option__ (enhanced, t)); + tt, colorspec, fontspec, __do_enhanced_option__ (enhanced, t)); else fprintf (plot_stream, 'set xlabel "%s" %s %s %s', - undo_string_escapes (tt), colorspec, fontspec, - __do_enhanced_option__ (enhanced, t)); + tt, colorspec, fontspec, __do_enhanced_option__ (enhanced, t)); endif fprintf (plot_stream, " rotate by %f;\n", angle); if (strcmp (axis_obj.xaxislocation, "top")) @@ -214,16 +213,15 @@ fprintf (plot_stream, "unset ylabel;\n"); fprintf (plot_stream, "unset y2label;\n"); else - [tt, f, s] = __maybe_munge_text__ (enhanced, t, "string", t.interpreter); + [tt, f, s] = __maybe_munge_text__ (enhanced, t, "string", ... + t.interpreter, gnuplot_term); fontspec = create_fontspec (f, s, gnuplot_term); if (strcmp (axis_obj.yaxislocation, "right")) fprintf (plot_stream, 'set y2label "%s" %s %s %s', - undo_string_escapes (tt), colorspec, fontspec, - __do_enhanced_option__ (enhanced, t)); + tt, colorspec, fontspec, __do_enhanced_option__ (enhanced, t)); else fprintf (plot_stream, 'set ylabel "%s" %s %s %s', - undo_string_escapes (tt), colorspec, fontspec, - __do_enhanced_option__ (enhanced, t)); + tt, colorspec, fontspec, __do_enhanced_option__ (enhanced, t)); endif fprintf (plot_stream, " rotate by %f;\n", angle); if (strcmp (axis_obj.yaxislocation, "right")) @@ -241,11 +239,11 @@ if (isempty (t.string)) fputs (plot_stream, "unset zlabel;\n"); else - [tt, f, s] = __maybe_munge_text__ (enhanced, t, "string", t.interpreter); + [tt, f, s] = __maybe_munge_text__ (enhanced, t, "string", ... + t.interpreter, gnuplot_term); fontspec = create_fontspec (f, s, gnuplot_term); fprintf (plot_stream, 'set zlabel "%s" %s %s %s', - undo_string_escapes (tt), colorspec, fontspec, - __do_enhanced_option__ (enhanced, t)); + tt, colorspec, fontspec, __do_enhanced_option__ (enhanced, t)); fprintf (plot_stream, " rotate by %f;\n", angle); endif endif @@ -629,9 +627,8 @@ have_3d_patch(data_idx) = false; tmpdispname = obj.displayname; obj.displayname = get (obj.parent, "displayname"); - tmp = undo_string_escapes ( - __maybe_munge_text__ (enhanced, obj, "displayname", hlgndntrp) - ); + tmp = __maybe_munge_text__ (enhanced, obj, "displayname", ... + hlgndntrp, gnuplot_term); titlespec{data_idx} = ['title "' tmp '"']; obj.displayname = tmpdispname; if (! isempty (findobj (obj.parent, "-property", "format", "-depth", 0))) @@ -650,15 +647,15 @@ otherwise errbars = "xerrorbars"; endswitch - withclause{data_idx} = sprintf ("with %s linestyle %d", + withclause{data_idx} = sprintf ("with %s linestyle %d", ... errbars, sidx(1)); else ## Place phantom stemseries data for legend data{data_idx} = NaN (2,1); usingclause{data_idx} = sprintf ("record=1 using ($1):($2)"); hgobj = get (obj.parent); - [hgstyle, hgsidx] = do_linestyle_command (hgobj, hgobj.color, data_idx, - plot_stream); + [hgstyle, hgsidx] = do_linestyle_command (hgobj, hgobj.color, ... + data_idx, plot_stream); withclause{data_idx} = sprintf ("with %s linestyle %d", hgstyle{1}, hgsidx(1)); endif @@ -679,9 +676,8 @@ if (isempty (obj.displayname)) titlespec{data_idx} = 'title ""'; else - tmp = undo_string_escapes ( - __maybe_munge_text__ (enhanced, obj, "displayname", hlgndntrp) - ); + tmp = __maybe_munge_text__ (enhanced, obj, "displayname", ... + hlgndntrp, gnuplot_term); titlespec{data_idx} = ['title "' tmp '"']; endif usingclause{data_idx} = sprintf ("record=%d", numel (obj.xdata)); @@ -802,9 +798,8 @@ if (i > 1 || isempty (obj.displayname)) titlespec{local_idx} = 'title ""'; else - tmp = undo_string_escapes ( - __maybe_munge_text__ (enhanced, obj, "displayname", hlgndntrp) - ); + tmp = __maybe_munge_text__ (enhanced, obj, "displayname", ... + hlgndntrp, gnuplot_term); titlespec{local_idx} = ['title "' tmp '"']; endif if (isfield (obj, "facecolor")) @@ -1215,9 +1210,8 @@ parametric(data_idx) = false; have_cdata(data_idx) = false; have_3d_patch(data_idx) = false; - tmp = undo_string_escapes ( - __maybe_munge_text__ (enhanced, obj, "displayname", hlgndntrp) - ); + tmp = __maybe_munge_text__ (enhanced, obj, "displayname", ... + hlgndntrp, gnuplot_term); titlespec{data_idx} = ['title "' tmp '"']; data{data_idx} = NaN (3,1); usingclause{data_idx} = sprintf ("record=1 using ($1):($2):($3)"); @@ -2268,7 +2262,8 @@ endif if (strcmp (interpreter, "tex")) for n = 1 : numel (labels) - labels{n} = __tex2enhanced__ (labels{n}, fontname, false, false); + labels{n} = __tex2enhanced__ (labels{n}, fontname, false, false, ... + gnuplot_term); endfor elseif (strcmp (interpreter, "latex")) if (! warned_latex) @@ -2399,7 +2394,8 @@ endfunction -function [str, f, s] = __maybe_munge_text__ (enhanced, obj, fld, ntrp) +function [str, f, s] = __maybe_munge_text__ (enhanced, obj, fld, ntrp, ... + gnuplot_term) persistent warned_latex = false; if (strcmp (fld, "string")) @@ -2436,10 +2432,10 @@ if (strcmp (ntrp, "tex")) if (iscellstr (str)) for n = 1:numel (str) - str{n} = __tex2enhanced__ (str{n}, fnt, it, bld); + str{n} = __tex2enhanced__ (str{n}, fnt, it, bld, gnuplot_term); endfor else - str = __tex2enhanced__ (str, fnt, it, bld); + str = __tex2enhanced__ (str, fnt, it, bld, gnuplot_term); endif elseif (strcmp (ntrp, "latex")) if (! warned_latex) @@ -2455,20 +2451,26 @@ endfunction -function str = __tex2enhanced__ (str, fnt, it, bld) +function str = __tex2enhanced__ (str, fnt, it, bld, gnuplot_term) persistent sym = __setup_sym_table__ (); persistent flds = fieldnames (sym); + if (any (strcmp (gnuplot_term, {"postscript", "epscairo"}))) + symtype = 1; + else + symtype = 2; + endif + [s, e, m] = regexp (str, "\\\\([a-zA-Z]+|0)", "start", "end", "matches"); for i = length (s) : -1 : 1 - ## special case for "\0" and replace with empty set "{/Symbol \306}' + ## special case for "\0" and replace with empty set equivalent if (strncmp (m{i}, '\0', 2)) - str = [str(1:s(i) - 1) '{/Symbol \306}' str(s(i) + 2:end)]; + str = [str(1:s(i) - 1) sym.emptyset{symtype} str(s(i) + 2:end)]; else f = m{i}(2:end); if (isfield (sym, f)) - g = getfield (sym, f); + g = sym.(f){symtype}; ## FIXME: The symbol font doesn't seem to support bold or italic ##if (bld) ## if (it) @@ -2545,7 +2547,7 @@ ## like \pix, that should be translated to the symbol Pi and x for j = 1 : length (flds) if (strncmp (flds{j}, f, length (flds{j}))) - g = getfield (sym, flds{j}); + g = sym.(flds{j}){symtype}; ## FIXME: The symbol font doesn't seem to support bold or italic ##if (bld) ## if (it) @@ -2568,7 +2570,7 @@ ## But need to put the shorter of the two arguments first. ## Careful of nested {} and unprinted characters when defining ## shortest.. Don't have to worry about things like ^\theta as they - ## are already converted to ^{/Symbol q}. + ## are already converted. ## FIXME: This is a mess. Is it worth it just for a "@" character? @@ -2659,117 +2661,119 @@ function sym = __setup_sym_table__ () ## Setup the translation table for TeX to gnuplot enhanced mode. - sym.forall = '{/Symbol \042}'; - sym.exists = '{/Symbol \044}'; - sym.ni = '{/Symbol \047}'; - sym.cong = '{/Symbol \100}'; - sym.Delta = '{/Symbol D}'; - sym.Phi = '{/Symbol F}'; - sym.Gamma = '{/Symbol G}'; - sym.vartheta = '{/Symbol J}'; - sym.Lambda = '{/Symbol L}'; - sym.Pi = '{/Symbol P}'; - sym.Theta = '{/Symbol Q}'; - sym.Sigma = '{/Symbol S}'; - sym.varsigma = '{/Symbol V}'; - sym.Omega = '{/Symbol W}'; - sym.Xi = '{/Symbol X}'; - sym.Psi = '{/Symbol Y}'; - sym.perp = '{/Symbol \136}'; - sym.alpha = '{/Symbol a}'; - sym.beta = '{/Symbol b}'; - sym.chi = '{/Symbol c}'; - sym.delta = '{/Symbol d}'; - sym.epsilon = '{/Symbol e}'; - sym.phi = '{/Symbol f}'; - sym.gamma = '{/Symbol g}'; - sym.eta = '{/Symbol h}'; - sym.iota = '{/Symbol i}'; - sym.varphi = '{/Symbol j}'; # Not in OpenGL - sym.kappa = '{/Symbol k}'; - sym.lambda = '{/Symbol l}'; - sym.mu = '{/Symbol m}'; - sym.nu = '{/Symbol n}'; - sym.o = '{/Symbol o}'; - sym.pi = '{/Symbol p}'; - sym.theta = '{/Symbol q}'; - sym.rho = '{/Symbol r}'; - sym.sigma = '{/Symbol s}'; - sym.tau = '{/Symbol t}'; - sym.upsilon = '{/Symbol u}'; - sym.varpi = '{/Symbol v}'; - sym.omega = '{/Symbol w}'; - sym.xi = '{/Symbol x}'; - sym.psi = '{/Symbol y}'; - sym.zeta = '{/Symbol z}'; - sym.sim = '{/Symbol \176}'; - sym.Upsilon = '{/Symbol \241}'; - sym.prime = '{/Symbol \242}'; - sym.leq = '{/Symbol \243}'; - sym.infty = '{/Symbol \245}'; - sym.clubsuit = '{/Symbol \247}'; - sym.diamondsuit = '{/Symbol \250}'; - sym.heartsuit = '{/Symbol \251}'; - sym.spadesuit = '{/Symbol \252}'; - sym.leftrightarrow = '{/Symbol \253}'; - sym.leftarrow = '{/Symbol \254}'; - sym.uparrow = '{/Symbol \255}'; - sym.rightarrow = '{/Symbol \256}'; - sym.downarrow = '{/Symbol \257}'; - sym.circ = '{/Symbol \260}'; # degree symbol, not circ as in FLTK - sym.deg = '{/Symbol \260}'; - sym.ast = '{/Symbol *}'; - sym.pm = '{/Symbol \261}'; - sym.geq = '{/Symbol \263}'; - sym.times = '{/Symbol \264}'; - sym.propto = '{/Symbol \265}'; - sym.partial = '{/Symbol \266}'; - sym.bullet = '{/Symbol \267}'; - sym.div = '{/Symbol \270}'; - sym.neq = '{/Symbol \271}'; - sym.equiv = '{/Symbol \272}'; - sym.approx = '{/Symbol \273}'; - sym.ldots = '{/Symbol \274}'; - sym.mid = '{/Symbol \275}'; - sym.aleph = '{/Symbol \300}'; - sym.Im = '{/Symbol \301}'; - sym.Re = '{/Symbol \302}'; - sym.wp = '{/Symbol \303}'; - sym.otimes = '{/Symbol \304}'; - sym.oplus = '{/Symbol \305}'; + sym.forall = {'{/Symbol \042}', '∀'}; + sym.exists = {'{/Symbol \044}', '∃'}; + sym.ni = {'{/Symbol \047}', '∋'}; + sym.cong = {'{/Symbol \100}', '≅'}; + sym.Delta = {'{/Symbol D}', 'Δ'}; + sym.Phi = {'{/Symbol F}', 'Φ'}; + sym.Gamma = {'{/Symbol G}', 'Γ'}; + sym.vartheta = {'{/Symbol J}', 'ϑ'}; + sym.Lambda = {'{/Symbol L}', 'Λ'}; + sym.Pi = {'{/Symbol P}', 'Π'}; + sym.Theta = {'{/Symbol Q}', 'Θ'}; + sym.Sigma = {'{/Symbol S}', 'Σ'}; + sym.varsigma = {'{/Symbol V}', 'ς'}; + sym.Omega = {'{/Symbol W}', 'Ω'}; + sym.Xi = {'{/Symbol X}', 'Ξ'}; + sym.Psi = {'{/Symbol Y}', 'Ψ'}; + sym.perp = {'{/Symbol \136}', '⊥'}; + sym.alpha = {'{/Symbol a}', 'α'}; + sym.beta = {'{/Symbol b}', 'β'}; + sym.chi = {'{/Symbol c}', 'χ'}; + sym.delta = {'{/Symbol d}', 'δ'}; + sym.epsilon = {'{/Symbol e}', 'ε'}; + sym.phi = {'{/Symbol f}', 'ϕ'}; + sym.gamma = {'{/Symbol g}', 'γ'}; + sym.eta = {'{/Symbol h}', 'η'}; + sym.iota = {'{/Symbol i}', 'ι'}; + sym.varphi = {'{/Symbol j}', 'φ'}; # Not in OpenGL + sym.kappa = {'{/Symbol k}', 'κ'}; + sym.lambda = {'{/Symbol l}', 'λ'}; + sym.mu = {'{/Symbol m}', 'μ'}; + sym.nu = {'{/Symbol n}', 'ν'}; + sym.o = {'{/Symbol o}', 'ο'}; + sym.pi = {'{/Symbol p}', 'π'}; + sym.theta = {'{/Symbol q}', 'θ'}; + sym.rho = {'{/Symbol r}', 'ρ'}; + sym.sigma = {'{/Symbol s}', 'σ'}; + sym.tau = {'{/Symbol t}', 'τ'}; + sym.upsilon = {'{/Symbol u}', 'υ'}; + sym.varpi = {'{/Symbol v}', 'ϖ'}; + sym.omega = {'{/Symbol w}', 'ω'}; + sym.xi = {'{/Symbol x}', 'ξ'}; + sym.psi = {'{/Symbol y}', 'ψ'}; + sym.zeta = {'{/Symbol z}', 'ζ'}; + sym.sim = {'{/Symbol \176}', '∼'}; + sym.Upsilon = {'{/Symbol \241}', 'Υ'}; + sym.prime = {'{/Symbol \242}', '′'}; + sym.leq = {'{/Symbol \243}', '≤'}; + sym.infty = {'{/Symbol \245}', '∞'}; + sym.clubsuit = {'{/Symbol \247}', '♣'}; + sym.diamondsuit = {'{/Symbol \250}', '♢'}; + sym.heartsuit = {'{/Symbol \251}', '♡'}; + sym.spadesuit = {'{/Symbol \252}', '♠'}; + sym.leftrightarrow = {'{/Symbol \253}', '↔'}; + sym.leftarrow = {'{/Symbol \254}', '←'}; + sym.uparrow = {'{/Symbol \255}', '↑'}; + sym.rightarrow = {'{/Symbol \256}', '→'}; + sym.downarrow = {'{/Symbol \257}', '↓'}; + sym.circ = {'{/Symbol \260}', '∘'}; + ## degree symbol, not circ as in FLTK + sym.deg = {'{/Symbol \260}', '°'}; + sym.ast = {'{/Symbol *}', '∗'}; + sym.pm = {'{/Symbol \261}', '±'}; + sym.geq = {'{/Symbol \263}', '≥'}; + sym.times = {'{/Symbol \264}', '×'}; + sym.propto = {'{/Symbol \265}', '∝'}; + sym.partial = {'{/Symbol \266}', '∂'}; + sym.bullet = {'{/Symbol \267}', '∙'}; + sym.div = {'{/Symbol \270}', '÷'}; + sym.neq = {'{/Symbol \271}', '≠'}; + sym.equiv = {'{/Symbol \272}', '≡'}; + sym.approx = {'{/Symbol \273}', '≈'}; + sym.ldots = {'{/Symbol \274}', '…'}; + sym.mid = {'{/Symbol \275}', '∣'}; + sym.aleph = {'{/Symbol \300}', 'ℵ'}; + sym.Im = {'{/Symbol \301}', 'ℑ'}; + sym.Re = {'{/Symbol \302}', 'ℜ'}; + sym.wp = {'{/Symbol \303}', '℘'}; + sym.otimes = {'{/Symbol \304}', '⊗'}; + sym.oplus = {'{/Symbol \305}', '⊕'}; ## empty set, not circled slash division operator as in FLTK. - sym.oslash = '{/Symbol \306}'; - sym.cap = '{/Symbol \307}'; - sym.cup = '{/Symbol \310}'; - sym.supset = '{/Symbol \311}'; - sym.supseteq = '{/Symbol \312}'; - sym.subset = '{/Symbol \314}'; - sym.subseteq = '{/Symbol \315}'; - sym.in = '{/Symbol \316}'; - sym.notin = '{/Symbol \317}'; # Not in OpenGL - sym.angle = '{/Symbol \320}'; - sym.bigtriangledown = '{/Symbol \321}'; # Not in OpenGL - sym.langle = '{/Symbol \341}'; - sym.rangle = '{/Symbol \361}'; - sym.nabla = '{/Symbol \321}'; - sym.prod = '{/Symbol \325}'; # Not in OpenGL - sym.surd = '{/Symbol \326}'; - sym.cdot = '{/Symbol \327}'; - sym.neg = '{/Symbol \330}'; - sym.wedge = '{/Symbol \331}'; - sym.vee = '{/Symbol \332}'; - sym.Leftrightarrow = '{/Symbol \333}'; # Not in OpenGL - sym.Leftarrow = '{/Symbol \334}'; - sym.Uparrow = '{/Symbol \335}'; # Not in OpenGL - sym.Rightarrow = '{/Symbol \336}'; - sym.Downarrow = '{/Symbol \337}'; # Not in OpenGL - sym.diamond = '{/Symbol \340}'; # Not in OpenGL - sym.copyright = '{/Symbol \343}'; - sym.lfloor = '{/Symbol \353}'; - sym.lceil = '{/Symbol \351}'; - sym.rfloor = '{/Symbol \373}'; - sym.rceil = '{/Symbol \371}'; - sym.int = '{/Symbol \362}'; + sym.oslash = {'{/Symbol \306}', '⊘'}; + sym.emptyset = {'{/Symbol \306}', '∅'}; + sym.cap = {'{/Symbol \307}', '∩'}; + sym.cup = {'{/Symbol \310}', '∪'}; + sym.supset = {'{/Symbol \311}', '⊃'}; + sym.supseteq = {'{/Symbol \312}', '⊇'}; + sym.subset = {'{/Symbol \314}', '⊂'}; + sym.subseteq = {'{/Symbol \315}', '⊑'}; + sym.in = {'{/Symbol \316}', '∈'}; + sym.notin = {'{/Symbol \317}', '∋'}; # Not in OpenGL + sym.angle = {'{/Symbol \320}', '∠'}; + sym.bigtriangledown = {'{/Symbol \321}', '▽'}; # Not in OpenGL + sym.langle = {'{/Symbol \341}', '〈'}; + sym.rangle = {'{/Symbol \361}', '〉'}; + sym.nabla = {'{/Symbol \321}', '∇'}; + sym.prod = {'{/Symbol \325}', '∏'}; # Not in OpenGL + sym.surd = {'{/Symbol \326}', '√'}; + sym.cdot = {'{/Symbol \327}', '⋅'}; + sym.neg = {'{/Symbol \330}', '¬'}; + sym.wedge = {'{/Symbol \331}', '∧'}; + sym.vee = {'{/Symbol \332}', '∨'}; + sym.Leftrightarrow = {'{/Symbol \333}', '⇔'}; # Not in OpenGL + sym.Leftarrow = {'{/Symbol \334}', '⇐'}; + sym.Uparrow = {'{/Symbol \335}', '⇑'}; # Not in OpenGL + sym.Rightarrow = {'{/Symbol \336}', '⇒'}; + sym.Downarrow = {'{/Symbol \337}', '⇓'}; # Not in OpenGL + sym.diamond = {'{/Symbol \340}', '⋄'}; # Not in OpenGL + sym.copyright = {'{/Symbol \343}', '©'}; + sym.lfloor = {'{/Symbol \353}', '⌊'}; + sym.lceil = {'{/Symbol \351}', '⌈'}; + sym.rfloor = {'{/Symbol \373}', '⌋'}; + sym.rceil = {'{/Symbol \371}', '⌉'}; + sym.int = {'{/Symbol \362}', '∫'}; endfunction @@ -2788,7 +2792,8 @@ function do_text (stream, gpterm, enhanced, obj, hax, screenpos) - [label, f, s] = __maybe_munge_text__ (enhanced, obj, "string", obj.interpreter); + [label, f, s] = __maybe_munge_text__ (enhanced, obj, "string", ... + obj.interpreter, gpterm); fontspec = create_fontspec (f, s, gpterm); lpos = obj.position; halign = obj.horizontalalignment; @@ -2846,9 +2851,8 @@ endif fprintf (stream, ['set label "%s" at %s %.15e,%.15e%s %s rotate by %f offset character %f,%f %s %s front %s;' "\n"], - undo_string_escapes (label), units, lpos(1), - lpos(2), zstr, halign, angle, dx_and_dy, fontspec, - __do_enhanced_option__ (enhanced, obj), colorspec); + label, units, lpos(1), lpos(2), zstr, halign, angle, dx_and_dy, + fontspec, __do_enhanced_option__ (enhanced, obj), colorspec); endfunction