--- loncom/interface/printout.pl 2006/06/20 09:39:47 1.104
+++ loncom/interface/printout.pl 2006/09/14 17:04:42 1.110
@@ -487,16 +487,28 @@ foreach $texfile (@texfile) {
&busy_wait_command("latex $latex_file 1>/dev/null 2>/dev/null",
"for $status_statement first latex to repaginate",
\%prog_state, $name_file);
- &busy_wait_command("latex $latex_file 1>/dev/null 2>/dev/null",
- "for $status_statement second latex to repaginate",
- \%prog_state, $name_file);
- &busy_wait_command("latex $latex_file 1>/dev/null 2>/dev/null",
- "for $status_statement third latex to repaginate",
- \%prog_state, $name_file);
+ if ($tableofcontents eq 'yes') {
+ &busy_wait_command("latex $latex_file 1>/dev/null 2>/dev/null",
+ "for $status_statement second latex to repaginate",
+ \%prog_state, $name_file);
+ &busy_wait_command("latex $latex_file 1>/dev/null 2>/dev/null",
+ "for $status_statement third latex to repaginate",
+ \%prog_state, $name_file);
+ }
+ if ($tableofindex eq 'yes') {
+ my $idxname = $latex_file;
+ $idxname =~ s/\.tex$/\.idx/;
+ &busy_wait_command("makindex $idxname",
+ "Re-creating index file",
+ \%prog_state, $idxname);
+ &busy_wait_command("latex $latex_file 1>/dev/null 2>/dev/null",
+ "for $status_statement now Recreting index (latex)",
+ \%prog_state, $dvi_file);
+
+ }
&busy_wait_command("$comma $name_file 1>dev/null 2>/dev/null",
"for $status_statement dvips to repaginate",
\%prog_state, $new_name_file);
-
print "\n
PDF output file (see link below)
\n";
$new_name_file =~ m/^(.*)\./;
my $ps_file = my $tempo_file = $1.'temporar.ps';
@@ -577,12 +589,24 @@ foreach $texfile (@texfile) {
&busy_wait_command("latex $latex_file 1>/dev/null 2>/dev/null",
"for $status_statement first latex to repaginate",
\%prog_state, $name_file);
- &busy_wait_command("latex $latex_file 1>/dev/null 2>/dev/null",
- "for $status_statement second latex to repaginate",
- \%prog_state, $name_file);
- &busy_wait_command("latex $latex_file 1>/dev/null 2>/dev/null",
- "for $status_statement third latex to repaginate",
- \%prog_state, $name_file);
+ if ($tableofcontents eq 'yes') {
+ &busy_wait_command("latex $latex_file 1>/dev/null 2>/dev/null",
+ "for $status_statement second latex to repaginate",
+ \%prog_state, $name_file);
+ &busy_wait_command("latex $latex_file 1>/dev/null 2>/dev/null",
+ "for $status_statement third latex to repaginate",
+ \%prog_state, $name_file);
+ }
+ if ($tableofindex eq 'yes') {
+ my $idxname = $latex_file;
+ $idxname =~ s/\.tex$/\.idx/;
+ &busy_wait_command("makeindex $idxname",
+ "Re-creating index file",
+ \%prog_state, $idxname);
+ &busy_wait_command("latex $latex_file 1>/dev/null 2>/dev/null",
+ "for $status_statement now Recreting index (latex)",
+ \%prog_state, $dvi_file);
+ }
&busy_wait_command("$comma $name_file 1>/dev/null 2>/dev/null",
"for $status_statement dvips to repaginate",
\%prog_state, $new_name_file);
@@ -676,7 +700,6 @@ sub busy_wait_command {
$SIG{CHLD} = \&REAPER;
$done=0;
- print(" Doing : $command");
my $pid=open(CMD,"$command |");
if ($advanced_role) {
&Apache::lonhtmlcommon::Update_PrgWin('',$progress_win,$message);
@@ -696,7 +719,6 @@ sub busy_wait_command {
$SIG{CHLD}='IGNORE';
close(CMD);
}
- print("
End
");
# Repagninate
# What we need to do:
@@ -725,12 +747,11 @@ sub repaginate {
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);
+ &mt("Counting pages for student: [_1]",1));
while ($line = ) {
@@ -752,38 +773,42 @@ sub repaginate {
my @pageinfo = split(/ /, $line);
if ($page_number < $pageinfo[1]) {
$page_number = $pageinfo[1];
+ } elsif ($pageinfo[2] ne 1) {
+ # current page count reset, and it's not because of a
+ # minipage
+ # - save the page_number, reset and, if necessary
+ # update max_pages.
+ push(@pages_in_student, $page_number);
+ &Apache::lonhtmlcommon::Update_PrgWin('',\%prog_state,
+ &mt("Counting pages for student: [_1]", scalar(@pages_in_student)));
+ if ($page_number > $max_pages) {
+ $max_pages = $page_number;
+ }
+ $page_number = $pageinfo[1];
}
}
- # ENDOFSTUDENTSTAMP - save the page_number, reset and, if necessary
- # udpate max_pages.
- #
- if ($line =~ /ENDOFSTUDENTSTAMP/) {
- $pages_in_student[$student_number] = $page_number;
- $student_number++;
- &Apache::lonhtmlcommon::Update_PrgWin('',\%prog_state,
- "Counting pages for student: ".$student_number+1);
-
- if ($page_number > $max_pages) {
- $max_pages = $page_number;
- }
- $page_number = 0;
-
- }
}
+ # file ended so one more student
+ push(@pages_in_student, $page_number);
+ &Apache::lonhtmlcommon::Update_PrgWin('',\%prog_state,
+ &mt("Counting pages for student: [_1]",scalar(@pages_in_student)));
+ if ($page_number > $max_pages) {
+ $max_pages = $page_number;
+ }
+ $page_number = 0;
+
close(PSFILE);
# If 2 columns, max_pages must go to an even number of columns:
- &Apache::lonnet::logthis("Before 2 col adjust max-pages = $max_pages");
if ($num_columns == 2) {
if ($max_pages % 2) {
$max_pages++;
}
}
- &Apache::lonnet::logthis("after adjust: $max_pages");
# Now rewrite the LaTex file, substituting our \special
# with an appropriate number of \newpage directives.
@@ -794,7 +819,7 @@ sub repaginate {
open(LATEXOUT, ">$outfilename");
- $student_number = 0; # first student...
+ my $student_number = 0; # Index of student we're working on.
&Apache::lonhtmlcommon::Update_PrgWin('',\%prog_state,
"Repaginating student ".$student_number+1);
@@ -806,9 +831,9 @@ sub repaginate {
# End of student replace with 0 or more newpages.
my $addlines = $max_pages - $pages_in_student[$student_number];
- &Apache::lonnet::logthis("student: $pages_in_student[$student_number] add: $addlines");
while($addlines) {
- print LATEXOUT '\pagebreak';
+ print LATEXOUT '\clearpage \strut \clearpage';
+
$addlines--;
}
@@ -823,7 +848,7 @@ sub repaginate {
close(LATEXIN);
close(LATEXOUT);
- rename($outfilename, $latex_filename);
+ rename($outfilename, $latex_filename);
}