#!/usr/athena/bin/perl

#!/afs/athena/contrib/perl/perl

### do centering

sub center {
    local ($l,@ret);
    foreach $i (@_) {
	$l = 36+int(length($i)/2);
	push(@ret, sprintf("%${l}s\n", $i));
    }
    @ret;
}

### parse cover-defs.tex for information

open(DETEX,'| detex -l | more -s') || die "couldn't open a pipe to detex!";
open(COVER,'cover-defs.tex') || die "couldn't find cover definitions!";

while (<COVER>) {
    m@\{\\volume\}\{\s*(\S.*\S)\s*\}@ &&   ($vol=$1);
    m@\{\\thisday\}\{\s*(\S.*\S)\s*\}@ &&  ($date=$1);
    m@\{\\thisterm\}\{\s*(\S.*\S)\s*\}@ && ($term=$1);
}

close(COVER);

($issue) = $vol =~ /Issue\s*(\S.*)\s*$/;

print DETEX "Subject: APOcrypha \#$issue\n\n";

print DETEX &center("APOcrypha",$vol,$date,$term), "\n";

### do a bit of parsing on body.tex and feed it to detex

open(BODY,'body.tex') || die "couldn't find body!";

while (<BODY>) {
    if (/^(.*)\\(sub)?article\{(.*)\}(.*)$/) {
	print DETEX "$1\n";
	print DETEX "------------------------------------------------------------------------\n" unless $2;
	print DETEX &center($3);
	print DETEX "\n$4";
    } else {
	s/\\[hv]space\*?\{[^\}]*\}//g;
	s/\\makebox(\[.*\](\[.*\])?)?//g;
	s/\\item\[(.*)\]\s*/\1/g;
	s/\\ldots/.../g;
	s/\\&/&/g;  # detex sucks...
	s/\$<\$/</g;
	s/\$>\$/>/g;
	print DETEX;
    }
}

close(BODY);
close(DETEX);
