--- loncom/interface/lonprintout.pm 2010/04/01 23:38:26 1.568.2.4
+++ loncom/interface/lonprintout.pm 2010/11/13 01:57:14 1.568.2.10
@@ -2,7 +2,7 @@
# The LearningOnline Network
# Printout
#
-# $Id: lonprintout.pm,v 1.568.2.4 2010/04/01 23:38:26 raeburn Exp $
+# $Id: lonprintout.pm,v 1.568.2.10 2010/11/13 01:57:14 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -306,11 +306,16 @@ sub set_font_size {
my ($text) = @_;
- $text =~ s/\\begin{document}/\\begin{document}{\\$font_size/;
- $text =~ s/\\end{document}/}\\end{document}/;
- return $text;
+ # There appear to be cases where the font directive is empty.. in which
+ # case the first substituion would insert a spurious \ oh happy day.
+ # as this has been the cause of much mystery and hair pulling _sigh_
+ if ($font_size ne '') {
+ $text =~ s/\\begin{document}/\\begin{document}{\\$font_size/;
+ }
+ $text =~ s/\\end{document}/}\\end{document}/;
+ return $text;
}
# include_pdf - PDF files are included into the
@@ -1283,7 +1288,13 @@ sub page_format_transformation {
$text =~ s/\\pagestyle{fancy}\\rhead{}\\chead{}\s*\\begin{document}/\\textheight = $textheight\\oddsidemargin = $evenoffset\n\\evensidemargin = $evenoffset $topmargintoinsert\\textwidth= $textwidth\\newlength{\\minipagewidth}\n\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm}\\renewcommand{\\ref}{\\keephidden\}\\pagestyle{fancy}\\rhead{}\\chead{}\\usepackage{booktabs}\\begin{document}\\voffset=-0\.8cm\n\\setcounter{page}{1} \\vskip 5 mm\n /;
}
if ($papersize eq 'a4') {
- $text =~ s/(\\begin{document})/$1\\\\special\{papersize=210mm,297mm\}/;
+ my $papersize_text;
+ if ($perm{'pav'}) {
+ $papersize_text = '\\special{papersize=210mm,297mm}';
+ } else {
+ $papersize_text = '\special{papersize=210mm,297mm}';
+ }
+ $text =~ s/(\\begin{document})/$1$papersize_text/;
}
}
if ($tableofcontents eq 'yes') {$text=~s/(\\setcounter\{page\}\{1\})/$1 \\tableofcontents\\newpage /;}
@@ -1514,7 +1525,9 @@ sub print_page_in_course {
my $title=&Apache::lonnet::gettitle($symb);
$title = &Apache::lonxml::latex_special_symbols($title);
} else {
- $result.=$currentURL;
+ my $esc_currentURL= $currentURL;
+ $esc_currentURL =~ s/_/\\_/g;
+ $result.=$esc_currentURL;
}
$result .= '\\\\';
@@ -1544,7 +1557,7 @@ sub print_page_in_course {
}
# these resources go through the XML transformer:
- elsif ($resource_src =~ /\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm\xhtml|xhtm)$/) {
+ elsif ($resource_src =~ /\.(problem|exam|quiz|assess|survey|form|library|xml|html|htm|xhtml|xhtm)$/) {
my $urlp = &Apache::lonnet::clutter($resource_src);
my %form;
my %moreenv;
@@ -1659,8 +1672,9 @@ sub print_page_in_course {
# List of recently generated print files
#
sub recently_generated {
- my $r=shift;
- my $prtspool=$r->dir_config('lonPrtDir');
+ my ($prtspool) = @_;
+ my $output;
+
my $zip_result;
my $pdf_result;
opendir(DIR,$prtspool);
@@ -1693,10 +1707,10 @@ sub recently_generated {
if ($ext eq 'zip') { $zip_result .= $result; }
}
if ($zip_result || $pdf_result) {
- $r->print('
');
+ $output = '
';
}
if ($zip_result) {
- $r->print(''.&mt('Recently generated printout zip files')."
\n"
+ $output .=''.&mt('Recently generated printout zip files')."
\n"
.&Apache::loncommon::start_data_table()
.&Apache::loncommon::start_data_table_header_row()
.''.&mt('Download').' | '
@@ -1704,11 +1718,10 @@ sub recently_generated {
.''.&mt('File Size (Bytes)').' | '
.&Apache::loncommon::end_data_table_header_row()
.$zip_result
- .&Apache::loncommon::end_data_table()
- );
+ .&Apache::loncommon::end_data_table();
}
if ($pdf_result) {
- $r->print(''.&mt('Recently generated printouts')."
\n"
+ $output .=''.&mt('Recently generated printouts')."
\n"
.&Apache::loncommon::start_data_table()
.&Apache::loncommon::start_data_table_header_row()
.''.&mt('Download').' | '
@@ -1716,9 +1729,9 @@ sub recently_generated {
.''.&mt('File Size (Bytes)').' | '
.&Apache::loncommon::end_data_table_header_row()
.$pdf_result
- .&Apache::loncommon::end_data_table()
- );
+ .&Apache::loncommon::end_data_table();
}
+ return $output;
}
#
@@ -2200,7 +2213,14 @@ ENDPART
&Apache::lonxml::remember_problem_counter();
if ($flag_latex_header_remove eq 'NO') {
$texversion.=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'}); # RF
- $flag_latex_header_remove = 'YES';
+ unless (($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only') ||
+ (($i==0) &&
+ (($urlp=~/\.page$/) ||
+ ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems_in_page') ||
+ ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_resources_in_page')))) {
+
+ $flag_latex_header_remove = 'YES';
+ }
}
$texversion.=&ssi_with_retries($urlp, $ssi_retry_count, %form);
if ($urlp=~/\.page$/) {
@@ -2221,12 +2241,22 @@ ENDPART
&Apache::lonxml::restore_problem_counter();
my $answer=&ssi_with_retries($urlp, $ssi_retry_count, %answerform);
+ if ($urlp =~ /\.page$/) {
+ $answer =~ s/\\end{document}(\d*)$//;
+ }
if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {
- $texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/;
+ if ($urlp =~ /\.page$/) {
+ my @probs = split(/\\keephidden{ENDOFPROBLEM}/,$texversion);
+ my $lastprob = pop(@probs);
+ $texversion = join('\keephidden{ENDOFPROBLEM}',@probs).
+ $answer.'\keephidden{ENDOFPROBLEM}'.$lastprob;
+ } else {
+ $texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/;
+ }
} else {
- if ($urlp=~/\.(problem|exam|quiz|assess|survey|form|library)$/) {
+ if ($urlp=~/\.(problem|exam|quiz|assess|survey|form|library|page)$/) {
$texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});
- $texversion =~ s/\\begin{document}//;
+# $texversion =~ s/\\begin{document}//;
my $title = &Apache::lonnet::gettitle($master_seq[$i]);
$title = &Apache::lonxml::latex_special_symbols($title);
my $body ='\vskip 0 mm \noindent\textbf{'.$title.'}\vskip 0 mm ';
@@ -2293,7 +2323,11 @@ ENDPART
if ($i > 0) {
$result .= '\cleardoublepage';
}
- $result .= &include_pdf($urlp);
+ my $texfrompdf = &include_pdf($urlp);
+ if ($flag_latex_header_remove ne 'NO') {
+ $texfrompdf = &latex_header_footer_remove($texfrompdf);
+ }
+ $result .= $texfrompdf;
if ($i != $#master_seq) {
if ($numberofcolumns eq '1') {
$result .= '\newpage';
@@ -2790,7 +2824,7 @@ sub print_resources {
$i++;
if ( !($type eq 'problems' &&
- ($curresline!~ m/\.(problem|exam|quiz|assess|survey|form|library)$/)) ) {
+ ($curresline!~ m/\.(problem|exam|quiz|assess|survey|form|library|page)$/)) ) {
my ($map,$id,$res_url) = &Apache::lonnet::decode_symb($curresline);
if (&Apache::lonnet::allowed('bre',$res_url)) {
if ($res_url!~m|^ext/|
@@ -2799,6 +2833,18 @@ sub print_resources {
&Apache::lonxml::remember_problem_counter();
my $rendered = &get_student_view_with_retries($curresline,$ssi_retry_count,$username,$userdomain,$env{'request.course.id'},'tex',$moreenv);
+ if ($res_url =~ /\.page$/) {
+ if ($remove_latex_header eq 'NO') {
+ if (!($rendered =~ /\\begin\{document\}/)) {
+ $rendered = &print_latex_header().$rendered;
+ }
+ }
+ if ($remove_latex_header eq 'YES') {
+ $rendered = &latex_header_footer_remove($rendered);
+ } else {
+ $rendered =~ s/\\end{document}\d*//;
+ }
+ }
if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||
($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) {
# Use a copy of the hash so we don't pervert it on future loop passes.
@@ -2816,7 +2862,9 @@ sub print_resources {
my $header =&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});
- $header =~ s/\\begin{document}//; #<<<<<
+ unless ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only') {
+ $header =~ s/\\begin{document}//; #<<<<<
+ }
my $title = &Apache::lonnet::gettitle($curresline);
$title = &Apache::lonxml::latex_special_symbols($title);
my $body ='\vskip 0 mm \noindent\textbf{'.$title.'}\vskip 0 mm ';
@@ -2877,7 +2925,9 @@ sub print_resources {
if (&Apache::loncommon::connection_aborted($r)) { last; }
}
-
+ if ($syllabus_first) {
+ $current_output =~ s/\\\\ Last updated:/Last updated:/
+ }
my $courseidinfo = &get_course();
if (defined($courseidinfo)) { $courseidinfo=' - '.$courseidinfo }
if ($usersection ne '') {$courseidinfo.=' - Sec. '.$usersection}
@@ -2888,11 +2938,8 @@ sub print_resources {
my $header_start = ($columns_in_format == 1) ? '\lhead'
: '\fancyhead[LO]';
$header_line = $header_start.'{'.$header_line.'}';
- if ($current_output=~/\\documentclass/ && (!$syllabus_first)) {
+ if ($current_output=~/\\documentclass/) {
$current_output =~ s/\\begin{document}/\\setlength{\\topmargin}{1cm} \\begin{document}\\noindent\\parbox{\\minipagewidth}{\\noindent$header_line$namepostfix}\\vskip 5 mm /;
- } elsif ($syllabus_first) {
-
- $current_output =~ s/\\\\ Last updated:/Last updated:/
} else {
my $blankpages =
'\clearpage\strut\clearpage'x$helper->{'VARS'}->{'EMPTY_PAGES'};
@@ -3928,10 +3975,12 @@ PROBTYPE
return $helper;
}
- $r->print($helper->display());
+ my $footer;
if ($helper->{STATE} eq 'START') {
- &recently_generated($r);
+ my $prtspool=$r->dir_config('lonPrtDir');
+ $footer = &recently_generated($prtspool);
}
+ $r->print($helper->display($footer));
&Apache::lonhelper::unregisterHelperTags();
return OK;