#!/usr/local/bin/perl # make-proceedings.pl: build proceedings out of several files # order: papers in the order they should be included # *.ps: papers in postscript form # creates the files # - 'pagenumbers' with the start page of each article # - 'allpapers' with each of the pages individually wrapped $start_page = 7; # allow this much for title, etc. @numbers = ("one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen"); &main(); sub main { my($currentpage) = $start_page; open(PAGENUMBERS, "> pagenumbers.tex") || die "cannot open pagenumbers"; open(ALLPAPERS, "> allpapers.tex") || die "cannot open allpapers"; open(P, "< order") || die("Cannot read the order."); my(@papers) =
; close(P); my($number, $paper, $base); foreach (@papers) { my($paper) = $_; chop; s/\#.*//g; # cut "comments" if (/^\s*$/) { next; } # ignore empty lines (-f $paper) && die "Cannot open file '$_'"; if (/stop/) { exit 0; } # stop here $paper =~ /^(.*)\.ps/; $base = $1; # basename my($pages) = &convert($base); print PAGENUMBERS "\\renewcommand{\\" . $numbers[$number] . "}{" . $currentpage . "}\n"; print "$pages pages\n"; $currentpage += $pages; $number++; # paper number } close(PAGENUMBERS); close(ALLPAPERS); } sub psystem { print @_[0], "\n"; return system(@_[0]); } sub convert { my($base) = $_[0]; &psystem("ps2ps $base.ps x.ps"); my($page)=1; while (1) { print "psselect -p$page x.ps $base-$page.ps 2>&1\n"; my($res) = `psselect -p$page x.ps $base-$page.ps 2>&1`; if ($res =~ /\s0\s/) { last; } &psystem("ps2epsi $base-$page.ps"); &psystem("rm -f $base-$page.ps"); print ALLPAPERS "\\pageimage{$base-$page.epsi}\n\\newpage\n"; $page++; } &psystem("rm -f x.ps"); return $page-1; }