--- loncom/interface/lonprintout.pm 2002/09/20 20:32:42 1.73
+++ loncom/interface/lonprintout.pm 2002/10/17 14:42:58 1.79
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Printout
#
-# $Id: lonprintout.pm,v 1.73 2002/09/20 20:32:42 sakharuk Exp $
+# $Id: lonprintout.pm,v 1.79 2002/10/17 14:42:58 sakharuk Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -54,7 +54,7 @@ use GDBM_File;
my %hash;
-
+my $LaTeXwidth = 0;
sub headerform {
my $r = shift;
@@ -225,7 +225,7 @@ sub additional_class_menu {
-
Mark students which assignments you want to print
+Select student(s) whose assignment you want to print
ENDMENUOUT1
my %courselist=&Apache::lonnet::dump(
'classlist',
@@ -292,6 +292,7 @@ ENDDISHEADER
}
$r->print(<
+
@@ -313,6 +314,7 @@ sub additional_print_menu {
+
@@ -342,12 +344,20 @@ ENDPART
my $choice = $ENV{'form.choice'};
my $layout = $ENV{'form.layout'};
- my $numberofcolumns = $ENV{'form.numberofcolumns'};
+ my $numberofcolumns = $ENV{'form.numberofcolumns'};
+ my $papersize = $ENV{'form.papersize'};
my $laystyle = 'book';
my $result = '';
my $number_of_columns = 1; #used only for pages to determine the width of the cell
my $selectionmade = '';
+ my ($textwidth,$textheight,$oddoffset,$evenoffset) = &page_format($papersize,$layout,$numberofcolumns);
+ my $LaTeXwidth;
+ if ($textwidth=~/(\d+\s*cm)/) {
+ $LaTeXwidth = $1*10;
+ } elsif ($textwidth=~/(\d+\s*mm)/) {
+ $LaTeXwidth = $1;
+ }
if ($choice eq 'Standard LaTeX output for current document') {
#-- single document - problem, page, html, xml
$selectionmade = 1;
@@ -357,9 +367,10 @@ ENDPART
$ENV{'form.url'}=~s/http:\/\/[^\/]+//;
}
$moreenv{'request.filename'}=$ENV{'form.url'};
+ $moreenv{'form.textwidth'}=$LaTeXwidth;
&Apache::lonnet::appenv(%moreenv);
my $texversion=&Apache::lonnet::ssi($ENV{'form.url'});
- &Apache::lonnet::delenv('form.grade_target');
+ &Apache::lonnet::delenv('form.grade_target','form.textwidth','form.counter');
$result .= $texversion;
if ($ENV{'form.url'}=~m/\.page\s*$/) {
($result,$number_of_columns) = &page_cleanup($result);
@@ -369,10 +380,9 @@ ENDPART
#-- minimal sequence to which the current document belongs
#-- where is the primary sequence containing file?
my $symbolic = &Apache::lonnet::symbread($ENV{'form.url'});
- $symbolic =~ m/([^_]+)_/;
- my $primary_sequence = '/res/'.$1;
- $symbolic =~ m/^([^_]+__)/;
- my @master_seq = &coming_from_hash($primary_sequence,$1);
+ my @sequence = split('___',$symbolic);
+ my $primary_sequence = '/res/'.$sequence[0];
+ my @master_seq = &coming_from_hash($primary_sequence,$sequence[0]);
#-- produce an output string
my $flag_latex_header_remove = 'NO';
my $flag_page_in_sequence = 'NO';
@@ -384,9 +394,11 @@ ENDPART
if ($urlp =~ m/\.(problem|exam|quiz|assess|survey|form|library)/) {
my %moreenv;
$moreenv{'form.grade_target'}='tex';
+ $moreenv{'form.textwidth'}=$LaTeXwidth;
&Apache::lonnet::appenv(%moreenv);
+ &Apache::lonnet::logthis("Trying to get $urlp with symb $symb");
my $texversion=&Apache::lonnet::ssi($urlp,('symb'=>$symb));
- &Apache::lonnet::delenv('form.grade_target');
+ &Apache::lonnet::delenv('form.grade_target','form.textwidth');
if ($flag_latex_header_remove ne 'NO') {
$texversion = &latex_header_footer_remove($texversion);
} else {
@@ -417,14 +429,15 @@ ENDPART
$result .= $texversion;
$flag_latex_header_remove = 'YES';
}
- }
+ }
+ &Apache::lonnet::delenv('form.counter');
if ($flag_page_in_sequence eq 'YES') {$result =~ s/\\usepackage{calc}/\\usepackage{calc}\\usepackage{longtable}/;}
$result .= '\end{document}';
} elsif ($choice eq 'Standard LaTeX output for the top level sequence') {
# where is the main sequence of the course?
$selectionmade = 4;
my $main_seq = '/res/'.$ENV{'request.course.uri'};
- my @file_seq = &coming_from_hash($main_seq);
+ my @file_seq = &coming_from_hash_whole($main_seq);
my $flag_latex_header_remove = 'NO';
#-- produce an output string
for (my $i=0;$i<=$#file_seq;$i++) {
@@ -433,17 +446,18 @@ ENDPART
if ($urlp=~m/\.(problem|exam|quiz|assess|survey|form|library)/) {
my %moreenv;
$moreenv{'form.grade_target'}='tex';
+ $moreenv{'form.textwidth'}=$LaTeXwidth;
&Apache::lonnet::appenv(%moreenv);
- my $texversion=&Apache::lonnet::ssi($urlp);
- &Apache::lonnet::delenv('form.grade_target');
+ my $texversion=&Apache::lonnet::ssi($urlp,('symb'=>$symb));
+ &Apache::lonnet::delenv('form.grade_target','form.textwidth');
if ($flag_latex_header_remove ne 'NO') {
$texversion = &latex_header_footer_remove($texversion);
} else {
$texversion =~ s/\\end{document}//;
}
- $result .= $texversion;
+ $result .= $texversion;
+ $flag_latex_header_remove = 'YES';
}
- $flag_latex_header_remove = 'YES';
}
$result .= '\end{document}';
} elsif ($choice eq 'All class print') {
@@ -457,10 +471,9 @@ ENDPART
}
#where is the primary sequence containing current resource (the same for all students)?
my $symbolic = &Apache::lonnet::symbread($ENV{'form.url'});
- $symbolic =~ m/([^_]+)_/;
- my $primary_sequence = '/res/'.$1;
- $symbolic =~ m/^([^_]+__)/;
- my @master_seq = &coming_from_hash($primary_sequence,$1);
+ my @sequence = split('___',$symbolic);
+ my $primary_sequence = '/res/'.$sequence[0];
+ my @master_seq = &coming_from_hash($primary_sequence,$sequence[0]);
#loop over students
my $flag_latex_header_remove = 'NO';
foreach my $person (@students) {
@@ -508,12 +521,13 @@ ENDPART
if ($urlp=~/\//) {
my %moreenv;
$moreenv{'form.grade_target'}='tex';
+ $moreenv{'form.textwidth'}=$LaTeXwidth;
&Apache::lonnet::appenv(%moreenv);
if ($ENV{'request.role'}=~m/^au\./ or $ENV{'request.role'}=~m/^ca\./) {
$urlp =~ s/\/home\/([^\/]*)\/public_html/\/~$1/;
}
my $texversion=&Apache::lonnet::ssi($urlp);
- &Apache::lonnet::delenv('form.grade_target');
+ &Apache::lonnet::delenv('form.grade_target','form.textwidth');
$texversion =~ s/(\\begin{document})/$1 {\\tiny\\begin{verbatim}$urlp\\end{verbatim}}/;
if ($flag_latex_header_remove ne 'NO') {
$texversion = &latex_header_footer_remove($texversion);
@@ -526,35 +540,12 @@ ENDPART
}
$result .= '\end{document}';
}
-#-- corrections for the different page formats
- if ($layout eq 'CBI' and $numberofcolumns eq '1') {
- $result =~ s/\\begin{document}/\\setlength{\\oddsidemargin}{-40pt}\\setlength{\\evensidemargin}{-60pt}\\setlength{\\topmargin}{200pt}\\setlength{\\textwidth}{4\.4in}\\setlength{\\textheight}{6\.8in}\\setlength{\\parindent}{20pt}\\setlength{\\marginparwidth}{90pt}\\setlength{\\textfloatsep}{8pt plus 2\.0pt minus 4\.0pt} \\begin{document}/;
- $result =~ s/\$number_of_columns/$number_of_columns/g;
- $laystyle = 'album';
- } elsif ($layout eq 'CBI' and $numberofcolumns eq '2') {
- $result =~ s/\\begin{document}/\\setlength{\\oddsidemargin}{-40pt}\\setlength{\\evensidemargin}{-60pt}\\setlength{\\topmargin}{200pt}\\setlength{\\textwidth}{4\.4in}\\setlength{\\textheight}{6\.8in}\\setlength{\\parindent}{20pt}\\setlength{\\marginparwidth}{90pt}\\setlength{\\textfloatsep}{8pt plus 2\.0pt minus 4\.0pt} \\begin{document}/;
- $result =~ s/\$number_of_columns/$number_of_columns/g;
+#-------------------------------------------------------- corrections for the different page formats
+ $result = &page_format_transformation($papersize,$layout,$numberofcolumns,$choice,$result);
+ if ($layout eq 'CBI') {
$laystyle = 'album';
- } elsif ($layout eq 'CAPA') {
- my $courseidinfo = $ENV{'request.role'};
- $_ = $courseidinfo;
- m/.*\/(.*)/;
- $courseidinfo = $ENV{'course.physnet_'.$1.'.description'};
- $result =~ s/\\documentclass\[letterpaper\]{article}/\\documentclass{article}/;
- if ($choice ne 'All class print') {
- $result =~ s/\\begin{document}/\\textheight 25\.9cm\\oddsidemargin = -0\.57in\\evensidemargin = -0\.57in\\textwidth= 9cm\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/$number_of_columns-0\.2cm}\\renewcommand{\\ref}{\\keephidden\}\\begin{document}\\voffset=-1\.8cm\\setcounter{page}{1}\\parbox{\\minipagewidth}{\\noindent\\fbox{\\textbf{$ENV{'environment.firstname'} $ENV{'environment.lastname'}}}\\hskip 1\.4in $courseidinfo} \\vskip 5 mm /;
- } else {
- $result =~ s/\\begin{document}/\\textheight 25\.9cm\\oddsidemargin = -0\.57in\\evensidemargin = -0\.57in\\textwidth= 9cm\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/$number_of_columns-0\.2cm}\\renewcommand{\\ref}{\\keephidden\}\\begin{document}\\voffset=-1\.8cm\\setcounter{page}{1} \\vskip 5 mm /;
- }
- $result =~ s/\\includegraphics{/\\includegraphics\[width=9\.0 cm\]{/g;
-# $result =~ s/\\includegraphics{/\\includegraphics\[width=\\textwidth\]{/g;
-# $result =~ s/(\\end{document})/\\newline\\noindent\\makebox\[9.0cm\]\[b\]{\\hrulefill}\\newline\\noindent\\tiny Dept\. of Physics and Astronomy, MSU\\makebox\[1.5cm\]\[b\]{\\hfill}LON-CAPA\\copyright MSU GNU\/GPL $1/;
- $result =~ s/(\\end{document})/\\newline\\noindent\\makebox\[\\textwidth\/$number_of_columns\]\[b\]{\\hrulefill}\\newline\\noindent\\tiny \\makebox\[1.5cm\]\[b\]{\\hfill}LON-CAPA\\copyright Michigan State University Board of Trustees $1/;
-# $result =~ s/(\\end{longtable}\s*)(\\newline\\noindent\\makebox\[9\.0cm\]\[b\]{\\hrulefill})/$2$1/g;
- $result =~ s/(\\end{longtable}\s*)(\\newline\\noindent\\makebox\[\\textwidth\/$number_of_columns\]\[b\]{\\hrulefill})/$2$1/g;
- $result =~ s/(\\end{longtable}\s*)\\newline/$1/g;
- $result =~ s/\$number_of_columns/$number_of_columns/g;
}
+ $result = &latex_corrections($number_of_columns,$result);
#changes page's parameters for the one column output
if ($ENV{'form.numberofcolumns'} == 1) {
$result =~ s/\\textwidth= 9cm/\\textwidth= $ENV{'form.width'}/;
@@ -562,27 +553,6 @@ ENDPART
$result =~ s/\\evensidemargin = -0\.57in/\\evensidemargin= $ENV{'form.leftmargin'}/;
$result =~ s/\\oddsidemargin = -0\.57in/\\oddsidemargin= $ENV{'form.leftmargin'}/;
}
-#-- LaTeX corrections
- my $first_comment = index($result,'',$first_comment);
- substr($result,$first_comment,$end_comment-$first_comment+3) = '';
- $first_comment = index($result,'',$first_comment);
+ substr($result,$first_comment,$end_comment-$first_comment+3) = '';
+ $first_comment = index($result,'