--- loncom/interface/lonprintout.pm 2004/06/28 18:12:30 1.311 +++ loncom/interface/lonprintout.pm 2004/09/24 21:01:50 1.316.2.3 @@ -1,7 +1,7 @@ # The LearningOnline Network # Printout # -# $Id: lonprintout.pm,v 1.311 2004/06/28 18:12:30 sakharuk Exp $ +# $Id: lonprintout.pm,v 1.316.2.3 2004/09/24 21:01:50 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -472,9 +472,13 @@ sub get_course { } sub page_format_transformation { - my ($papersize,$layout,$numberofcolumns,$choice,$text,$assignment,$tableofcontents,$indexlist) = @_; + my ($papersize,$layout,$numberofcolumns,$choice,$text,$assignment,$tableofcontents,$indexlist,$selectionmade) = @_; my ($textwidth,$textheight,$oddoffset,$evenoffset,$topmargin); - $assignment=&Apache::lonxml::latex_special_symbols($assignment,'header'); + if ($selectionmade eq '4') { + $assignment='Problems from the Whole Course'; + } else { + $assignment=&Apache::lonxml::latex_special_symbols($assignment,'header'); + } ($textwidth,$textheight,$oddoffset,$evenoffset,$topmargin) = &page_format($papersize,$layout,$numberofcolumns,$topmargin); my $name = &get_name(); my $courseidinfo = &get_course(); @@ -536,11 +540,15 @@ sub details_for_menu { sub latex_corrections { - my ($number_of_columns,$result) = @_; + my ($number_of_columns,$result,$selectionmade) = @_; # $result =~ s/\\includegraphics{/\\includegraphics\[width=\\minipagewidth\]{/g; $result =~ s/\$number_of_columns/$number_of_columns/g; - $result =~ s/(\\end{document})/\\strut\\newline\\noindent\\makebox\[\\textwidth\/$number_of_columns\]\[b\]{\\hrulefill}\\newline\\noindent\\tiny Printed from LON-CAPA\\copyright MSU{\\hfill} Licensed under GNU General Public License $1/; + if ($selectionmade ne '1') { + $result =~ s/(\\end{document})/\\strut\\vspace\*{-4 mm}\\newline\\noindent\\makebox\[\\textwidth\/$number_of_columns\]\[b\]{\\hrulefill}\\newline\\noindent\\tiny Printed from LON-CAPA\\copyright MSU{\\hfill} Licensed under GNU General Public License $1/; + } else { + $result =~ s/(\\end{document})/\\strut\\newline\\noindent\\makebox\[\\textwidth\/$number_of_columns\]\[b\]{\\hrulefill}\\newline\\noindent\\tiny Printed from LON-CAPA\\copyright MSU{\\hfill} Licensed under GNU General Public License $1/; + } $result =~ s/(\\end{longtable}\s*)(\\strut\\newline\\noindent\\makebox\[\\textwidth\/$number_of_columns\]\[b\]{\\hrulefill})/$2$1/g; $result =~ s/(\\end{longtable}\s*)\\strut\\newline/$1/g; #-- LaTeX corrections @@ -555,8 +563,7 @@ sub latex_corrections { $result =~ s/\\\\\s*\\vskip/\\vskip/gm; $result =~ s/\\\\\s*\\noindent\s*(\\\\)+/\\\\\\noindent /g; $result =~ s/{\\par }\s*\\\\/\\\\/gm; - $result =~ s/\\\\\s+\[/ \[/g; - $result =~ s/\b__+\b/\\makebox\[1 cm\]\[b\]{\\hrulefill}/g; + $result =~ s/\\\\\s+\[/ \[/g; #conversion of html characters to LaTeX equivalents if ($result =~ m/&(\w+|#\d+);/) { $result = &character_chart($result); @@ -622,24 +629,21 @@ sub print_latex_header { } sub path_to_problem { - my ($urlp,$LaTeXwidth)=@_; + my ($urlp,$colwidth)=@_; my $newurlp = ''; - $LaTeXwidth=~s/\s*mm\s*$//; - my $HowMany = length($urlp)*2; - if ($HowMany > $LaTeXwidth) { - my @temporrary = split '/',$urlp; - my $HowManyNew = 0; - for (my $ii=0;$ii<=$#temporrary;$ii++) { - if ($temporrary[$ii] ne '') { - $HowManyNew += length($temporrary[$ii])*2; - if ($HowManyNew < $LaTeXwidth ) { - $newurlp .= '/'.$temporrary[$ii]; - } else { - $HowManyNew = 0; - $newurlp .= '|\vskip -1 mm \noindent \verb|'; - $ii--; - } + $colwidth=~s/\s*mm\s*$//; +#characters average about 2 mm in width + if (length($urlp)*2 > $LaTeXwidth) { + my @elements = split '/',$urlp; + my $curlength=0; + foreach my $element (@elements) { + if ($curlength+(length($element)*2) > $colwidth) { + $newurlp .= '|\vskip -1 mm \noindent \verb|'; + $curlength=0; + } else { + $curlength+=length($element)*2; } + $newurlp.='/'.$element; } } else { $newurlp=$urlp; @@ -1003,6 +1007,7 @@ ENDPART $result .= $texversion; $flag_latex_header_remove = 'YES'; } + if (&Apache::loncommon::connection_aborted($r)) { last; } } &Apache::lonnet::delenv('form.counter'); if ($flag_page_in_sequence eq 'YES') {$result =~ s/\\usepackage{calc}/\\usepackage{calc}\\usepackage{longtable}/;} @@ -1027,6 +1032,7 @@ ENDPART #loop over students my $flag_latex_header_remove = 'NO'; my %moreenv; + $moreenv{'instructor_comments'}='hide'; $moreenv{'textwidth'}=&get_textwidth($helper,$LaTeXwidth); $moreenv{'print_discussions'}=$helper->{'VARS'}->{'PRINT_DISCUSSIONS'}; if ($helper->{'VARS'}->{'PRINT_DISCUSSIONS'} eq 'yes') {$moreenv{'problem_split'}='yes';} @@ -1045,6 +1051,7 @@ ENDPART $student_names[$i].=$person.':'.$fullname.'_END_'; &Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,&mt('last student').' '.$fullname); $flag_latex_header_remove = 'YES'; + if (&Apache::loncommon::connection_aborted($r)) { last; } } &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); $result .= $print_array[0].' \end{document}'; @@ -1094,6 +1101,7 @@ ENDPART &mt('last assignment').' '.$fullname); $flag_latex_header_remove = 'YES'; $count++; + if (&Apache::loncommon::connection_aborted($r)) { last; } } &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); $result .= $print_array[0].' \end{document}'; @@ -1170,9 +1178,9 @@ ENDPART $result .= '\end{document}'; } #-------------------------------------------------------- corrections for the different page formats - $result = &page_format_transformation($papersize,$laystyle,$numberofcolumns,$helper->{'VARS'}->{'PRINT_TYPE'},$result,$helper->{VARS}->{'assignment'},$helper->{'VARS'}->{'TABLE_CONTENTS'},$helper->{'VARS'}->{'TABLE_INDEX'}); - $result = &latex_corrections($number_of_columns,$result); - for (my $i=1;$i<=$#print_array;$i++) {$print_array[$i] = &latex_corrections($number_of_columns,$print_array[$i]);} + $result = &page_format_transformation($papersize,$laystyle,$numberofcolumns,$helper->{'VARS'}->{'PRINT_TYPE'},$result,$helper->{VARS}->{'assignment'},$helper->{'VARS'}->{'TABLE_CONTENTS'},$helper->{'VARS'}->{'TABLE_INDEX'},$selectionmade); + $result = &latex_corrections($number_of_columns,$result,$selectionmade); + for (my $i=1;$i<=$#print_array;$i++) {$print_array[$i] = &latex_corrections($number_of_columns,$print_array[$i],$selectionmade);} #changes page's parameters for the one column output if ($numberofcolumns == 1) { $result =~ s/\\textwidth\s*=\s*\d*\.?\d*\s*(cm|mm|in)/\\textwidth= $helper->{'VARS'}->{'pagesize.width'} $helper->{'VARS'}->{'pagesize.widthunit'} /; @@ -1357,6 +1365,7 @@ sub print_resources { } $remove_latex_header = 'YES'; } + if (&Apache::loncommon::connection_aborted($r)) { last; } } my $courseidinfo = &get_course(); if (defined($courseidinfo)) { $courseidinfo=' - '.$courseidinfo } @@ -1367,7 +1376,7 @@ sub print_resources { } else { my $blankpages = ''; for (my $j=0;$j<$helper->{'VARS'}->{'EMPTY_PAGES'};$j++) {$blankpages.='\clearpage\strut\clearpage';} - $current_output = '\strut\\newline\\noindent\\makebox[\\textwidth/$number_of_columns][b]{\\hrulefill}\\newline\\noindent{\\tiny Printed from LON-CAPA\\copyright MSU{\\hfill} Licensed under GNU General Public License }\\newpage '.$blankpages.'\setcounter{page}{1}\noindent\parbox{\minipagewidth}{\noindent\\lhead{\\textit{\\textbf{'.$fullname.'}}'.$courseidinfo.' \\hfill \\thepage \\\\ \\textit{'.$currentassignment.'}}} \vskip -5 mm '.$current_output; + $current_output = '\strut\vspace*{-6 mm}\\newline\\noindent\\makebox[\\textwidth/$number_of_columns][b]{\\hrulefill}\vspace*{-2 mm}\\newline\\noindent{\\tiny Printed from LON-CAPA\\copyright MSU{\\hfill} Licensed under GNU General Public License }\\newpage '.$blankpages.'\setcounter{page}{1}\noindent\parbox{\minipagewidth}{\noindent\\lhead{\\textit{\\textbf{'.$fullname.'}}'.$courseidinfo.' \\hfill \\thepage \\\\ \\textit{'.$currentassignment.'}}} \vskip -5 mm '.$current_output; } return ($current_output,$fullname);