[pdftex] pdflatex and gnuplot and type-1 fonts

Allin Cottrell cottrell at wfu.edu
Sat Aug 11 23:38:52 CEST 2001


On Sat, 11 Aug 2001, Kevin E. Cahill wrote:

> My procedure involves these steps:
>
> I use gnuplot with the settings
> 	set terminal pslatex color
> 	set output 'temp1a1s.tex'
>
> I then use latex on a file, 1a1s.tex,
> which has the line
> 	\input{temp1a1s}
> to make a dvi file 1a1s.dvi.

The pslatex terminal option is a good choice, but stop right there!
There's no call to make a dvi file out of the gnuplot output, if
you're shooting for pdf.

I use the following perl script, gnuplot2pdftex:

#!/usr/bin/perl

# I suppose we are starting from a pair of files foo.tex and
# foo.ps, generated by Gnuplot with the terminal type set
# to "pslatex auxfile".  E.g., in gnuplot:
#
# > set term pslatex auxfile
# > set output 'foo.tex'
#
# This script requires one parameter, namely the base name of the
# two gnuplot output files ("foo", in the example).

# After running this script you should have foo.tex, foo.eps
# and foo.pdf in the current directory.  You should then be
# able to put something like:
#
#     \begin{figure}
#     \input foo
#     \end{figure}
#
# into your main LaTeX source file.  If you use
#
#     \usepackage[dvips]{graphicx}
#
# then foo.eps will get used.  If you substitute "[pdftex]" for
# "[dvips]" in the call to graphicx, then foo.pdf will get used
# instead.

if (@ARGV != 1) {
   print "Please supply one argument: " .
   "the basename of the gnuplot output files\n";
   exit;
}
my $source = $ARGV[0];
my $ready;

# Rename foo.ps as foo.eps
rename "$source.ps", "$source.eps";

# Use ghostscript to convert the eps file to pdf
my $gscmd = "gs -q -sDEVICE=pdfwrite -dNOCACHE " .
  "-dUseFlateCompression=false -dNOPAUSE -dBATCH " .
  "-sOutputFile=$source.pdf $source.eps";
system($gscmd);

# Throw away the garbage from foo.tex
open (IN, "< $source.tex") || die "Can't open $source.tex";
open (OUT, "> $source.tmp") || die "Can't open $source.tmp";
$ready = 0;
while (<IN>) {
   if (/setlength{/) { $ready = 1; }
   if (/end{picture}/) { last; }
   if (/includegraphics/) { last; }
   if ($ready) { print OUT; }
}

print OUT "\\includegraphics{$source}\n";
print OUT "\\end{picture}\n";

close (IN);
close (OUT);

rename "$source.tmp", "$source.tex";

# end of perl script

Allin Cottrell.






More information about the pdftex mailing list