--- loncom/interface/lonprintout.pm 2006/10/23 10:40:09 1.489 +++ loncom/interface/lonprintout.pm 2007/01/08 10:57:41 1.493 @@ -2,7 +2,7 @@ # The LearningOnline Network # Printout # -# $Id: lonprintout.pm,v 1.489 2006/10/23 10:40:09 foxr Exp $ +# $Id: lonprintout.pm,v 1.493 2007/01/08 10:57:41 foxr Exp $ # # Copyright Michigan State University Board of Trustees # @@ -38,11 +38,10 @@ use Apache::grades; use Apache::edit; use Apache::File(); use Apache::lonnavmaps; -use Apache::lonratedt; +use LONCAPA::map(); use POSIX qw(strftime); use Apache::lonlocal; use Carp; -use lib '/home/httpd/lib/perl/'; use LONCAPA; my %perm; @@ -61,19 +60,38 @@ my $resources_printed; # sub printf_style_subst { my ($item, $format_string, $repl) = @_; - - while ($format_string =~m/%\d*\Q$item\E/) { + my $result = ""; + while ($format_string =~ /(%)(\d*)\Q$item\E/g ) { my $fmt = $1; my $size = $2; my $subst = $repl; if ($size ne "") { $subst = substr($subst, 0, $size); + + # Here's a nice edge case.. supose the end of the + # substring is a \. In that case may have just + # chopped off a TeX escape... in that case, we append + # " " for the trailing character, and let the field + # spill over a bit (sigh). + # We don't just chop off the last character in order to deal + # with one last pathology, and that would be if substr had + # trimmed us to e.g. \\\ + + + if ($subst =~ /\\$/) { + $subst .= " "; + } } - my $newpos = pos($format_string) + length($subst) - length($fmt); - $format_string =~ s/\Q$fmt\E/$subst/; - pos($format_string)=$newpos; + my $item_pos = pos($format_string); + $result .= substr($format_string, 0, $item_pos - length($size) -2) . $subst; + $format_string = substr($format_string, pos($format_string)); } - return $format_string; + + # Put the residual format string into the result: + + $result .= $format_string; + + return $result; } @@ -133,7 +151,7 @@ sub format_page_header { # to \% else LaTeX will think they are comments and terminate # the line.. which is bad!!! - $format =~ s/%/\\%/g; + } @@ -157,7 +175,7 @@ sub num_to_letters { sub letters_to_num { my ($letters) = @_; my @letters = split('', uc($letters)); - my %substitution; + my %substitution; my $digit = 0; foreach my $letter ('A'..'J') { $substitution{$letter} = $digit; @@ -687,11 +705,11 @@ sub character_chart { my %page_formats= ('letter' => { 'book' => { - '1' => [ '7.1 in','9.8 in', '-0.57 in','-0.57 in','0.7 cm'], - '2' => ['3.66 in','9.8 in', '-0.57 in','-0.57 in','0.7 cm'] + '1' => [ '7.1 in','9.8 in', '-0.57 in','-0.57 in','0.275 in'], + '2' => ['3.66 in','9.8 in', '-0.57 in','-0.57 in','0.275 in'] }, 'album' => { - '1' => [ '8.8 in', '6.8 in','-0.55 in', '-0.55 in','1 cm'], + '1' => [ '8.8 in', '6.8 in','-0.55 in', '-0.55 in','1.0 in'], '2' => [ '4.8 in', '6.8 in','-0.5 in', '-1.0 in','3.5 in'] }, }, @@ -747,12 +765,12 @@ my %page_formats= }, 'a4' => { 'book' => { - '1' => ['17.6 cm','27.2 cm','-0.55 in','-0.83 in','-0.5 in'], - '2' => [ '9.1 cm','27.2 cm','-0.55 in','-0.83 in','-0.5 in'] + '1' => ['17.6 cm','27.2 cm','-1.397 cm','-2.11 cm','-1.27 cm'], + '2' => [ '9.1 cm','27.2 cm','-1.397 c,','-2.11 cm','-1.27 cm'] }, 'album' => { - '1' => ['8.5 in','7.7 in','-0.55 in','-0.83 in','0 in'], - '2' => ['3.9 in','7.7 in','-0.55 in','-0.83 in','0 in'] + '1' => ['21.59 cm','19.558 cm','-1.27 cm','-2.11 cm','0 cm'], + '2' => ['9.91 cm','19.558 cm','-1.397 cm','-2.11 cm','0 cm'] }, }, 'a5' => { @@ -1147,12 +1165,12 @@ sub print_construction_sequence { if ($helper->{'VARS'}->{'curseed'}) { $rndseed=$helper->{'VARS'}->{'curseed'}; } - my $errtext=&Apache::lonratedt::mapread($currentURL); + my $errtext=&LONCAPA::map::mapread($currentURL); # # These make this all support recursing for subsequences. # - my @order = @Apache::lonratedt::order; - my @resources = @Apache::lonratedt::resources; + my @order = @LONCAPA::map::order; + my @resources = @LONCAPA::map::resources; for (my $member=0;$member<=$#order;$member++) { $resources[$order[$member]]=~/^([^:]*):([^:]*):/; my $urlp=$2; @@ -1961,9 +1979,9 @@ sub print_resources { my $printed = ''; my ($username,$userdomain,$usersection) = split /:/,$person; my $fullname = &get_name($username,$userdomain); - my $namepostfix; + my $namepostfix = "\\\\"; # Both anon and not anon should get the same vspace. if ($person =~ 'anon') { - $namepostfix="\\\\Name: "; + $namepostfix .="Name: "; $fullname = "CODE - ".$moreenv->{'CODE'}; } # Fullname may have special latex characters that need \ prefixing: