#!/usr/bin/perl -w

$basename = $ARGV[0];
if (! -f $basename.".tex"){
  die "no such file: $basename.tex\n";
}
print "Making PDF fragments from '$basename.tex'\n\n";

print "searching for files read with include ...\n";
@lines = `grep \\include\{ $basename.tex`;

if (0 == scalar @lines) {
  die "no files included by '$basename.tex'\n";
}

print "running pdflatex twice to prepare *.aux ...\n";
system("pdflatex $basename >/dev/null 2>&1");
system("pdflatex $basename >/dev/null 2>&1");
if ($? >> 8) {
  print "Exit value !=0\n";
}


system ("rm -f pdf-parts/*");
mkdir "pdf-parts";

print "running pdflatex twice for every included file ...\n";
open INDEX, ">pdf-parts/index.html";
print INDEX "<OL>\n";
$cnt=0;
foreach (@lines) {
  if (/\\include\{(.*)\}/) {
    $txtcnt = sprintf "%02d", $cnt++;
    $dest   = "pdf-parts/$basename-$txtcnt-$1.pdf";
    print "\n($1) --> $dest ";
    system("pdflatex '\\includeonly{$1}\\input{$basename.tex}' >/dev/null 2>&1");
    system("pdflatex '\\includeonly{$1}\\input{$basename.tex}' >/dev/null 2>&1");
    if (! -f $basename.".pdf") {
      print " !!! Problem creating $basename.pdf";
    }
    else {
      rename($basename.".pdf",  $dest);
      print INDEX "<LI><A HREF=\"$dest\">$1</A>\n";
    }
  }
}
print INDEX "</OL>\n";
close INDEX;
print "\n\n";

print "running pdflatex twice to recreate full PDF ...\n";
system("pdflatex $basename >/dev/null 2>&1");
system("pdflatex $basename >/dev/null 2>&1");
