--- loncom/interface/lonprintout.pm 2002/09/20 20:32:42 1.73 +++ loncom/interface/lonprintout.pm 2002/09/24 13:52:24 1.75 @@ -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.75 2002/09/24 13:52:24 sakharuk Exp $ # # Copyright Michigan State University Board of Trustees # @@ -342,7 +342,8 @@ 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 @@ -369,10 +370,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'; @@ -385,6 +385,7 @@ ENDPART my %moreenv; $moreenv{'form.grade_target'}='tex'; &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'); if ($flag_latex_header_remove ne 'NO') { @@ -424,7 +425,7 @@ ENDPART # 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++) { @@ -434,16 +435,16 @@ ENDPART my %moreenv; $moreenv{'form.grade_target'}='tex'; &Apache::lonnet::appenv(%moreenv); - my $texversion=&Apache::lonnet::ssi($urlp); + my $texversion=&Apache::lonnet::ssi($urlp,('symb'=>$symb)); &Apache::lonnet::delenv('form.grade_target'); 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 +458,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) { @@ -526,7 +526,78 @@ ENDPART } $result .= '\end{document}'; } -#-- corrections for the different page formats +#-------------------------------------------------------- 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; @@ -575,7 +646,6 @@ ENDPART $result =~ s/\\\\\s*\\noindent\s*(\\\\)+/\\\\\\noindent /g; $result =~ s/{\\par }\s*\\\\/\\\\/gm; $result =~ s/\\\\\s+\[/ \[/g; - $result =~ s/θ/\$\\theta\$/g; #converts theta from html into tex $result =~ s/\b__+\b/\\makebox\[1 cm\]\[b\]{\\hrulefill}/g; #conversion of html characters to LaTeX equivalents if ($result =~ m/&(\w+|#\d+);/) { @@ -609,14 +679,29 @@ sub coming_from_hash_whole { my $current_resource = $mapstart; while ($current_resource ne $mapfinish) { if ($hash{'src_'.$current_resource}=~/\.sequence$/) { - + push @resourcelist,&coming_from_hash_whole($hash{'src_'.$current_resource}); } else { - + $mainsequence =~ /\/res\/(.*)$/; + my $presymb = $1; + my $rid = $hash{'ids_'.$hash{'src_'.$current_resource}}; + if ($rid=~/,/) { + my @rid = split /,/, $rid; + foreach my $rid_element (@rid) { + if ($rid_element =~ m/^$mapid\.(\d*)/) { + $rid = $1; + last; + } + } + } else { + $rid =~ m/^$mapid\.(\d*)/; + $rid = $1; + } + $hash{'src_'.$current_resource} =~ m/\/res\/(.*)$/; + my $symb = $presymb.'___'.$rid.'___'.$1; + push @resourcelist,$hash{'src_'.$current_resource}.'&&'.$symb; } + $current_resource = $hash{'goesto_'.$hash{'to_'.$current_resource}}; } - - - push @resourcelist,$mapid,$mapstart,$mapfinish; return @resourcelist; } @@ -1007,7 +1092,8 @@ sub character_chart { # $result =~ s/þ//g; # $result =~ s/þ//g; $result =~ s/ÿ/\\"{y}/g; - $result =~ s/ÿ/\\"{y}/g; + $result =~ s/ÿ/\\"{y}/g; + $result =~ s/θ/\$\\theta\$/g; #converts theta from html into tex return $result; }