'.$body_log_file.''."\n"; if ($body_log_file=~m/!\s+Emergency stop/) { - #LaTeX failed to parse tex file - print "
"; + + my $sygnal = 0; + for (my $i=0;$i<=$#content_of_file;$i++) { + if ($content_of_file[$i]=~m/^Runaway argument?/ or $content_of_file[$i]=~m/^!/) { + $sygnal = 1; + } + if ($content_of_file[$i]=~m/Here is how much of/) { + $sygnal = 0; + } + if ($sygnal) { + print "$content_of_file[$i]"; + } + } + print "\n"; + # print "
'.$body_tex_file.''."\n"; - print "
'.$body_tex_file.''."\n"; + print "
Doing : $command"); my $pid=open(CMD,"$command |"); - if ($adv) { + if ($advanced_role) { &Apache::lonhtmlcommon::Update_PrgWin('',$progress_win,$message); } while(!$done) { @@ -452,7 +688,7 @@ sub busy_wait_command { my $size=(stat($output_file))[7]; $extra_msg=", $size bytes generated"; } - if ($adv) { + if ($advanced_role) { &Apache::lonhtmlcommon::Update_PrgWin('',$progress_win, $message.$extra_msg); } @@ -460,7 +696,134 @@ sub busy_wait_command { $SIG{CHLD}='IGNORE'; close(CMD); } + print("
End
"); + +# Repagninate +# What we need to do: +# - Count the number of pages in each student. +# - Rewrite the latex file replacing the \specials that +# mark the end of student with an appropriate number of newlines. +# parameters: +# psfile - Postscript filename +# latexfile - LaTeX filename +# columns - number of columns. +sub repaginate { + + # We will try to do this in 2 passes through the postscript since + # the postscript is potentially large, to do 2 passes, the first pass + # must be able to calculate the total number of document pages so that + # at the beginning of the second pass we already know how to replace + # %%Pages: + + # Figure out + # 1. Number of pages in the document + # 2. Maximum number of pages in a student + # 3. Number of pages in each student. + + my ($postscript_filename, $latex_filename, $num_columns) = @_; + open(PSFILE, "<$postscript_filename"); + my $line; + my $total_pages; # Total pages in document. + my $seen_pages = 0; # There are several %%Pages only the first is useful + my $student_number = 0; # Index of student we're working on. + my @pages_in_student; # For each student his/her initial page count. + my $max_pages = 0; # Pages in 'longest' student. + my $page_number = 0; + &Apache::lonhtmlcommon::Update_PrgWin('',\%prog_state, + "Counting pages for student: ".$student_number+1); + + while ($line =