--- loncom/interface/printout.pl 2006/12/06 12:10:16 1.115 +++ loncom/interface/printout.pl 2007/02/22 01:00:13 1.121 @@ -1,6 +1,7 @@ #!/usr/bin/perl # CGI-script to run LaTeX, dvips, ps2ps, ps2pdf etc. # +# $Id: printout.pl,v 1.121 2007/02/22 01:00:13 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -187,9 +188,9 @@ END print "Return to last resource.

"; my $figfile = $texfile; - $figfile =~ s/^([^\.]+printout)[^t]+\.tex/$1\.dat/; + $figfile =~ s/^(.*_printout)_\d+_\d+_\d+\.tex/$1\.dat/; my $duefile = $texfile; - $duefile =~ s/^([^\.]+printout)[^t]+\.tex/$1\.due/; + $duefile =~ s/^(.*_printout)_\d+_\d+_\d+\.tex/$1\.due/; #do we have figures? # print "Figure file: $figfile\n"; if (-e $figfile) { @@ -527,7 +528,7 @@ foreach $texfile (@texfile) { \%prog_state, $dvi_file); } - &busy_wait_command("$comma $name_file 1>dev/null 2>/dev/null", + &busy_wait_command("$comma $name_file 1>/dev/null 2>/dev/null", "for $status_statement dvips to repaginate", \%prog_state, $new_name_file); # @@ -555,12 +556,11 @@ foreach $texfile (@texfile) { # my $print_directory = dirname($name_file); my $missfonts_file = $print_directory."/missfont.log"; - print "
Missing fonts file is: $missfonts_file"; + #print("
Missing fonts file is: $missfonts_file"); if (-e $missfonts_file) { - print "
Missing fonts file exists\n"; + #print("
Missing fonts file exists\n"); &create_missing_fonts($missfonts_file); - unlink($missfonts_file, \%prog_state); - &busy_wait_command("$comma $name_file 1>dev/null 2>/dev/null", + &busy_wait_command("$comma $name_file 1>/dev/null 2>/dev/null", "for $status_statement dvips generated missing fonts", \%prog_state, $new_name_file); } @@ -604,8 +604,10 @@ foreach $texfile (@texfile) { $texps =~ s/\.tex/\.ps/; my @garb = ($texaux,$texdvi,$texps); # unlink @garb; - unlink $duefile; + unlink($duefile); print "Your PDF document"; + unlink($missfonts_file); + } if ($advanced_role) { print "

"; @@ -627,6 +629,7 @@ foreach $texfile (@texfile) { print "Your original LaTeX file "; print "\n"; } + } else { #LaTeX successfully parsed tex file $name_file =~ s/\.tex/\.dvi/; @@ -664,12 +667,11 @@ foreach $texfile (@texfile) { # my $print_directory = dirname($name_file); my $missfonts_file = $print_directory."/missfont.log"; - print "
Missing fonts file is: $missfonts_file"; + #print("
Missing fonts file is: $missfonts_file"); if (-e $missfonts_file) { - print "
Missing fonts file exists\n"; + #print("
Missing fonts file exists\n"); &create_missing_fonts($missfonts_file); - unlink($missfonts_file, \%prog_state); - &busy_wait_command("$comma $name_file 1>dev/null 2>/dev/null", + &busy_wait_command("$comma $name_file 1>/dev/null 2>/dev/null", "for $status_statement dvips generated missing fonts", \%prog_state, $new_name_file); } @@ -755,10 +757,12 @@ foreach $texfile (@texfile) { $texps =~ s/\.tex/\.ps/; my @garb = ($texlog,$texaux,$texdvi,$texps); # unlink @garb; - unlink $duefile; + unlink($duefile); print "$link_text - click here to download pdf"; print "\n"; } + unlink($missfonts_file); + } } else { print "LaTeX file $texfile was not created successfully"; @@ -862,7 +866,7 @@ sub repaginate { # if ($line =~ /^%%Page:/) { - my @pageinfo = split(/ /, $line); + my @pageinfo = split(/\s+/, $line); if ($page_number < $pageinfo[1]) { $page_number = $pageinfo[1]; } elsif ($pageinfo[2] ne 1) { @@ -962,21 +966,24 @@ sub create_missing_fonts { # Open and read in the font file..we'll read it into the array # font_commands. # - my $font_handle = IO::File->new($fontfile); + open(my $font_handle, $fontfile); my @font_commands = <$font_handle>; - + + # make the list contain each command only once + my %uniq; + @font_commands = map { $uniq{$_}++ == 0 ? $_ : () } @font_commands; # Now process each command replacing the appropriate 8000's with # 600's ensuring that font names with 8000's in them are not corrupted. # and if the --mfmode is not ljfour we turn it into ljfour. # Then we execute the command. # - + foreach my $command (@font_commands) { - print "
Raw command: $command"; + #print("
Raw command: $command"); $command =~ s/ 8000/ 600/g; # dpi directives. $command =~ s/\/8000/\/600/g; # mag directives. - print "
After dpi replacements: $command"; + #print("
After dpi replacements: $command"); my @cmdarray = split(/ /,$command); for (my $i =0; $i < scalar(@cmdarray); $i++) { @@ -984,11 +991,11 @@ sub create_missing_fonts { $cmdarray[$i+1] = "ljfour"; } } - print "
before reassembly : (@cmdarray)"; + #print("
before reassembly : (@cmdarray)"); $command = join(" ", (@cmdarray)); - print "
Creating fonts via command: $command"; - &busy_wait_command("$command 1>dev/null 2>/dev/null", + #print("
Creating fonts via command: $command"); + &busy_wait_command("$command 1>/dev/null 2>/dev/null", "Creating missing font", $state, $command);