--- loncom/interface/lonprintout.pm 2002/09/24 13:52:24 1.75 +++ loncom/interface/lonprintout.pm 2002/10/22 22:07:50 1.81 @@ -1,7 +1,7 @@ # The LearningOnline Network # Printout # -# $Id: lonprintout.pm,v 1.75 2002/09/24 13:52:24 sakharuk Exp $ +# $Id: lonprintout.pm,v 1.81 2002/10/22 22:07:50 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 { + @@ -348,7 +350,14 @@ ENDPART 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; @@ -358,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); @@ -384,10 +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 { @@ -418,7 +429,8 @@ 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') { @@ -434,9 +446,10 @@ 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,('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 { @@ -462,7 +475,10 @@ ENDPART 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'; + my $flag_latex_header_remove = 'NO'; + my %moreenv; + $moreenv{'form.textwidth'}=$LaTeXwidth; + &Apache::lonnet::appenv(%moreenv); foreach my $person (@students) { my $current_output = ''; my ($usersection,$username,$userdomain) = split /:/,$person; @@ -491,8 +507,10 @@ ENDPART $current_output = '\\vskip 3mm\noindent\parbox{\minipagewidth}{\noindent\fbox{\textbf{'.$fullname.'}}\hskip 1.4in } \vskip 5 mm '.$current_output; } $result .= $current_output; + &Apache::lonnet::delenv('form.counter'); } - $result .= '\end{document}'; + $result .= '\end{document}'; + &Apache::lonnet::delenv('form.textwidth'); } elsif ($choice eq 'Subdirectory print') { #prints selected problems from the subdirectory $selectionmade = 6; @@ -508,12 +526,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); @@ -527,105 +546,11 @@ ENDPART $result .= '\end{document}'; } #-------------------------------------------------------- corrections for the different page formats - my ($textwidth,$textheight,$oddoffset,$evenoffset) = (0,0,0,0); - if ($papersize=~/Letter/) { - if ($layout eq 'CAPA') { - if ($numberofcolumns == 1) { - $textwidth = '18 cm'; - $textheight = '25.9 cm'; - $oddoffset = '-0.57 in'; - $evenoffset = '-0.57 in'; - } elsif ($numberofcolumns == 2) { - $textwidth = '9 cm'; - $textheight = '25.9 cm'; - $oddoffset = '-0.57 in'; - $evenoffset = '-0.57 in'; - } - } elsif ($layout eq 'CBI') { - if ($numberofcolumns == 1) { - $textwidth = '8.8 in'; - $textheight = '6.8 in'; - $oddoffset = '-40 pt'; - $evenoffset = '-60 pt'; - } elsif ($numberofcolumns == 2) { - $textwidth = '4.4 in'; - $textheight = '6.8 in'; - $oddoffset = '-40 pt'; - $evenoffset = '-60 pt'; - } - } -# } elsif($papersize=~/Legal/) { -# $textwidth = ; -# $textheight = ; -# $offset = ; -# } elsif($papersize=~/Ledger/) { -# $textwidth = ; -# $textheight = ; -# $offset = ; -# } elsif($papersize=~/Executive/) { -# $textwidth = ; -# $textheight = ; -# $offset = ; -# } elsif($papersize=~/A4/) { -# $textwidth = ; -# $textheight = ; -# $offset = ; -# } elsif($papersize=~/A3/) { -# $textwidth = ; -# $textheight = ; -# $offset = ; -# } elsif($papersize=~/A2/) { -# $textwidth = ; -# $textheight = ; -# $offset = ; -# } elsif($papersize=~/A5/) { -# $textwidth = ; -# $textheight = ; -# $offset = ; -# } elsif($papersize=~/A6/) { -# $textwidth = ; -# $textheight = ; -# $offset = ; -# -# -# -# -# -# -# -# -# -# - } - - 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; + $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'}/; @@ -633,26 +558,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,'