// Author : Pierre Vuillemin (2017) // License : BSD function prettify(e,options) // Settings if argn(2) < 2 then options = struct() end default_options = struct('title_font_size' , 4,... 'labels_font_size' , 3,... 'thicks_font_size' , 2,... 'leg_font_size' , 3,... 'line_thickness' , 2) // if ~isdef(fieldnames(default_options)) then options = fill_options(options,default_options) extract_fields(options) end // select convstr(e.type,'l') case 'figure' prettify_fig(e) case 'axes' prettify_axes(e) case 'polyline' prettify_polyline(e) case 'legend' prettify_legend(e) case 'compound' prettify_compound(e) end endfunction function prettify_fig(f) f.anti_aliasing = '8x' for i = 1:length(f.children) prettify(f.children(i)) end endfunction function prettify_axes(ax) // Axis thicks ax.font_size = thicks_font_size ax.x_ticks.labels = latexify(ax.x_ticks.labels) ax.y_ticks.labels = latexify(ax.y_ticks.labels) // Axis labels xl = ax.x_label xl.font_size = labels_font_size xl.text = latexify(xl.text) yl = ax.y_label yl.font_size = labels_font_size yl.text = latexify(yl.text) // Title T = ax.title T.text = latexify(T.text) T.font_size = title_font_size // Legend for i = 1:length(ax.children) prettify(ax.children(i)) end endfunction function prettify_polyline(po) po.thickness = line_thickness endfunction function prettify_legend(leg) leg.font_size = leg_font_size leg.text = latexify(leg.text) endfunction function prettify_compound(co) for i = 1:length(co.children) prettify(co.children(i)) end endfunction function str = latexify(str) if str == '' then return end // Adds $ at the beginning and the end of a matrix of strings for i = 1:size(str,1) str(i) = '$' + wrap_in_text(str(i)) + '$' end endfunction function out_str = wrap_in_text(str) // In a string containing normal text and latex expressions between $, this // routines wraps the text part inside \text{.} macros // '$f(x) = sin(x)$ is a nice function' --> 'f(x) = sin(x)\text{ is a nice function}' str = stripblanks(str) T = tokens(str, '$') if part(str,1) ~= '$' then start = 1 else start = 2 end for i = start:2:size(T,1) T(i,:) = '\text{'+T(i,:)+'}' end out_str = '' for i = 1:size(T,1) out_str = out_str + T(i,:) end endfunction function opt = fill_options(opt, default) fields = fieldnames(default) for f = fields' if ~isfield(opt,f) opt(f) = default(f) end end endfunction function extract_fields(stru) varNames = fieldnames(stru)' varValues = [] for v = varNames varValues = [varValues,'stru.'+v+''] end exStr = '[' + strcat(varNames,',') + '] = resume(' + strcat(varValues,',')+');' execstr(exStr) endfunction