# HG changeset patch # User Rik # Date 1439587591 25200 # Node ID ab2c5e84954a04ab260d4bb900b586a04c5fe843 # Parent 610c7474851861c4d1a07a75cb9f9f9eaecf74fd Allow relative paths when printing with -dpdflatex (bug #45601). * __opengl_print__.m, __gnuplot_print__.m: When processing *latex devices, use fileparts() and fullfile() to determine names and extensions rather than searching for a '.' which is confused by relative paths. diff -r 610c74748518 -r ab2c5e84954a scripts/plot/util/private/__gnuplot_print__.m --- a/scripts/plot/util/private/__gnuplot_print__.m Fri Aug 14 13:28:30 2015 -0700 +++ b/scripts/plot/util/private/__gnuplot_print__.m Fri Aug 14 14:26:31 2015 -0700 @@ -71,15 +71,23 @@ dot = find (opts.name == ".", 1, "last"); n = find (opts.devopt == "l", 1); suffix = opts.devopt(1:n-1); - if (! isempty (dot)) - if (any (strcmpi (opts.name(dot:end), {["." suffix], ".tex", "."}))) - name = opts.name(1:dot-1); - else - error ("print:invalid-suffix", - "invalid suffix '%s' for device '%s'.", - opts.name(dot:end), lower (opts.devopt)); + [ndir, name, ext] = fileparts (opts.name); + if (isempty (ext)) + ext = "tex"; + else + ext = ext(2:end); # remove leading '.' + endif + if (any (strcmpi (ext, {suffix, "tex"}))) + name = fullfile (ndir, name); + if (any (strcmpi (ext, {"eps", "ps", "pdf"}))) + suffix = ext; # If user provides eps/ps/pdf suffix, use it. endif + else + error ("print:invalid-suffix", + "invalid suffix '%s' for device '%s'.", + ext, lower (opts.devopt)); endif + if (strfind (opts.devopt, "standalone")) term = sprintf ("%s ", strrep (opts.devopt, "standalone", " standalone")); diff -r 610c74748518 -r ab2c5e84954a scripts/plot/util/private/__opengl_print__.m --- a/scripts/plot/util/private/__opengl_print__.m Fri Aug 14 13:28:30 2015 -0700 +++ b/scripts/plot/util/private/__opengl_print__.m Fri Aug 14 14:26:31 2015 -0700 @@ -48,20 +48,21 @@ ## format GL2PS_TEX n = find (opts.devopt == "l", 1); suffix = opts.devopt(1:n-1); - dot = find (opts.name == ".", 1, "last"); - if ((! isempty (dot)) - && any (strcmpi (opts.name(dot:end), ... - {strcat(".", suffix), ".tex", "."}))) - name = opts.name(1:dot-1); - if (dot < numel (opts.name) - && any (strcmpi (opts.name(dot+1:end), {"eps", "ps", "pdf"}))) - ## If user provides eps/ps/pdf suffix, use it. - suffix = opts.name(dot+1:end); + [ndir, name, ext] = fileparts (opts.name); + if (isempty (ext)) + ext = "tex"; + else + ext = ext(2:end); # remove leading '.' + endif + if (any (strcmpi (ext, {suffix, "tex"}))) + name = fullfile (ndir, name); + if (any (strcmpi (ext, {"eps", "ps", "pdf"}))) + suffix = ext; # If user provides eps/ps/pdf suffix, use it. endif else error ("print:invalid-suffix", "invalid suffix '%s' for device '%s'.", - opts.name(dot:end), lower (opts.devopt)); + ext, lower (opts.devopt)); endif gl2ps_device = {sprintf("%snotxt", lower (suffix))}; gl2ps_device{2} = "tex";