#!/usr/dist/bin/perl

print "\n\n";
#system("clear");

if($#ARGV != 0)
{
  print "\n\n";
  print "Usage: extractpgf file.tex";
  print "\n\n";
  exit(-1);
}

if(!-e "@ARGV[0]")
{
  print "ERROR: file @ARGV[0] does not exist\n\n";
  exit(-1);
}

$filename=`basename @ARGV[0] .tex`;
chomp($filename);
$texname="$filename.tex";
$extractpgf_filename_tex="$filename-extract.tex";
$extractpgf_filename_pdf="$filename-extract.pdf";
$extractpgf_filename_log="$filename-extract.log";

system("sed -e 's/usepackage{tikz}/usepackage{tikz}\\\\usepackage[active,tightpage]{preview}\\\\PreviewEnvironment{tikzpicture}/g' $texname > $extractpgf_filename_tex");

$FirstRun = system("pdflatex --interaction nonstopmode $extractpgf_filename_tex > FirstTeX.output");

if($FirstRun != 0)
{
    print "\n\n";
    print "There was a Fatal pdfLaTeX Error:\n";
    print "--------------------------------------------------\n";
    system("cat FirstTeX.output"); #write out the log file to stdout
    print "--------------------------------------------------\n\n";
    #system("nedit $filename.bib &");
    #system("rm FirstTeX.output");
    exit(-1);
}

#we examine the successful output log to get the total number of pages
$PageLine = `more FirstTeX.output | grep page`;  #page or pages?
chomp($PageLine);
$PageLine=~m/\(([0-9]+) page/;
$TotalNumberOfPages = $1;
system("rm FirstTeX.output");

#add more code for proper file names if ever more than 9 figures

if($TotalNumberOfPages == 1)
{
  system("cp $extractpgf_filename_pdf pgf-fig001.pdf");
}

else
{
  for($i=1; $i<=$TotalNumberOfPages; $i++)
  {
    $FigureFileNumber=$i;
    $FigureFileName="pgf-fig00$FigureFileNumber.pdf";
    print "name = $FigureFileName\n";
    system("pdfnup --nup 1x1 --pages $i --outfile $FigureFileName $extractpgf_filename_pdf");
    system("pdfcrop $FigureFileName $FigureFileName");
  }
}
system("rm $extractpgf_filename_pdf");
system("rm $extractpgf_filename_tex");
system("rm $extractpgf_filename_log");
