Mercurial > repos > public > sbplib
view saveeps.m @ 1037:2d7ba44340d0 feature/burgers1d
Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Fri, 18 Jan 2019 09:02:02 +0100 |
parents | a2b95af82f68 |
children |
line wrap: on
line source
% Saves a figure to an .eps file with corrected bounding box. % e.g. saveeps(gcf,'myfig.eps') function saveeps(handle,filename) if length(filename) < 4 || ~strcmp(filename(end-3:end),'.eps') filename = [filename '.eps']; end handle_units = handle.Units; % Save the current units to be able to restore % Copy size of figure in centimeters to a place where saveas will honor it handle.Units = 'centimeters'; handle.PaperUnits = 'centimeters'; handle.PaperPosition(3:4) = handle.Position(3:4); % Save as a bugged eps file. saveas(handle,filename,'epsc'); handle.Units = handle_units; % Restore the old units % Correct the buggy eps file correct_stupid_matlab_bug(filename); end % Corrects the format of an eps file so that the bounding box is defined at the top of the file instead of % at the bottom. function correct_stupid_matlab_bug(filename) contents = fileread(filename); lines = strsplit(contents,'\n'); % Find the line pagel = findPrefix(lines,'%%Pages:'); boundl = findPrefix(lines,'%%BoundingBox:'); if ~(length(pagel) == 2 && length(boundl) == 2) warning('Undexpected number of found lines: %d , %d\nNot correcting the file',pagel, boundl); return end if ~(strcmp(lines{pagel(1)},'%%Pages: (atend)') && strcmp(lines{boundl(1)},'%%BoundingBox: (atend)')) warning('Does the file really contain the error?\nNot correcting the file'); return end % Overwrite the nasty lines with the nice ones. lines{pagel(1)} = lines{pagel(2)}; lines{boundl(1)} = lines{boundl(2)}; % Delete the duplicates lines(pagel(2)) = []; lines(boundl(2)) = []; %Rewrite the file contents = strjoin(lines,'\n'); fh = fopen(filename,'w'); fprintf(fh, '%s',contents); fclose(fh); end function I = findPrefix(lines, prefix) I = find(strncmp(lines,prefix,length(prefix))); end