Diff for /loncom/interface/lonprintout.pm between versions 1.568.2.3 and 1.568.2.4

version 1.568.2.3, 2010/03/30 10:40:35 version 1.568.2.4, 2010/04/01 23:38:26
Line 494  sub printf_style_subst { Line 494  sub printf_style_subst {
 #     %a    - Assignment name.  #     %a    - Assignment name.
 #     %c    - Course name.  #     %c    - Course name.
 #     %n    - Student name.  #     %n    - Student name.
 #     %s    - The section if it is supplied.  
 #  #
 sub format_page_header {  sub format_page_header {
     my ($width, $format, $assignment, $course, $student, $section) = @_;      my ($width, $format, $assignment, $course, $student) = @_;
   
   
   
     $width = &recalcto_mm($width); # Get width in mm.      $width = &recalcto_mm($width); # Get width in mm.
     my $chars_per_line = int($width/1.6);   # Character/textline.      my $chars_per_line = int($width/2);   # Character/textline.
   
     #  Default format?      #  Default format?
   
Line 518  sub format_page_header { Line 515  sub format_page_header {
  # - Allow the assignment to be 2 lines (wrapped).   # - Allow the assignment to be 2 lines (wrapped).
  #   #
   
           my $firstline = "$student $course";
           if (length($firstline) > $chars_per_line) {
  my $name_length    = int($chars_per_line *3 /4);              my $lastchar = $chars_per_line - length($student) - 1;
  my $sec_length     = int($chars_per_line / 5);              if ($lastchar > 0) {
                   $course = substr($course, 0, $lastchar);
  $format  = "%$name_length".'n';              } else {            # Nothing left of course:
                   $course = '';
  if ($section) {              }
     $format .=  ' - Sec: '."%$sec_length".'s';          }
  }          if (length($assignment) > $chars_per_line) {
               $assignment = substr($assignment, 0, $chars_per_line);
           }
   
  $format .= '\\\\%c \\\\ %a';          $format =  "\\textbf{$student} $course \\hfill \\thepage \\\\ \\textit{$assignment}";
           
   
       } else {
           # An open question is how to handle long user formatted page headers...
           # A possible future is to support e.g. %na so that the user can control
           # the truncation of the elements that can appear in the header.
           #
           $format =  &printf_style_subst("a", $format, $assignment);
           $format =  &printf_style_subst("c", $format, $course);
           $format =  &printf_style_subst("n", $format, $student);
   
           # If the user put %'s in the format string, they  must be escaped
           # to \% else LaTeX will think they are comments and terminate
           # the line.. which is bad!!!
     }      }
     # An open question is how to handle long user formatted page headers...  
     # A possible future is to support e.g. %na so that the user can control  
     # the truncation of the elements that can appear in the header.  
     #  
     $format =  &printf_style_subst("a", $format, $assignment);  
     $format =  &printf_style_subst("c", $format, $course);  
     $format =  &printf_style_subst("n", $format, $student);  
     $format =  &printf_style_subst("s", $format, $section);  
           
       
     # If the user put %'s in the format string, they  must be escaped  
     # to \% else LaTeX will think they are comments and terminate  
     # the line.. which is bad!!!  
       
     # If the user has role author, $course and $assignment are empty so  
     # there is '\\ \\ ' in the page header. That's cause a error in LaTeX  
     if($format =~ /\\\\\s\\\\\s/) {  
         #TODO find sensible caption for page header  
         my $testPrintout = '\\\\'.&mt('Construction Space').' \\\\'.&mt('Test-Printout ');  
         $format =~ s/\\\\\s\\\\\s/$testPrintout/;  
     }  
     #  
     #  We're going to trust LaTeX to break lines appropriately, but  
     #  we'll truncate anything that's more than 3 lines worth of  
     # text.  This is also assuming (which will probably end badly)  
     # nobody's going to embed LaTeX control sequences in the title  
     # header or rather that those control sequences won't get broken  
     # by the stuff below.  
     #  
     my $total_length = 3*$chars_per_line;  
     if (length($format) > $total_length) {  
  $format = substr($format, 0, $total_length);  
     }  
   
   
     return $format;      return $format;
       
 }  }
   
 #  #
Line 1265  sub get_course { Line 1240  sub get_course {
     my $courseidinfo;      my $courseidinfo;
     if (defined($env{'request.course.id'})) {      if (defined($env{'request.course.id'})) {
  $courseidinfo = &Apache::lonxml::latex_special_symbols(&unescape($env{'course.'.$env{'request.course.id'}.'.description'}),'header');   $courseidinfo = &Apache::lonxml::latex_special_symbols(&unescape($env{'course.'.$env{'request.course.id'}.'.description'}),'header');
  my $sec = $env{'request.course.sec'};  
       
     }      }
     return $courseidinfo;      return $courseidinfo;
 }  }
Line 1289  sub page_format_transformation { Line 1262  sub page_format_transformation {
   
     my $name = &get_name();      my $name = &get_name();
     my $courseidinfo = &get_course();      my $courseidinfo = &get_course();
       if (defined($courseidinfo)) { $courseidinfo=' - '.$courseidinfo }
     my $header_text  = $parmhash{'print_header_format'};      my $header_text  = $parmhash{'print_header_format'};
     $header_text     = &format_page_header($textwidth, $header_text, $assignment,      $header_text     = &format_page_header($textwidth, $header_text, $assignment,
    $courseidinfo, $name);     $courseidinfo, $name);
Line 2282  ENDPART Line 2256  ENDPART
  if (($selectionmade == 4) and ($assignment ne $prevassignment)) {   if (($selectionmade == 4) and ($assignment ne $prevassignment)) {
     my $name = &get_name();      my $name = &get_name();
     my $courseidinfo = &get_course();      my $courseidinfo = &get_course();
       if (defined($courseidinfo)) { $courseidinfo=' - '.$courseidinfo }
     $prevassignment=$assignment;      $prevassignment=$assignment;
     my $header_text = $parmhash{'print_header_format'};      my $header_text = $parmhash{'print_header_format'};
     $header_text    = &format_page_header($textwidth, $header_text,      $header_text    = &format_page_header($textwidth, $header_text,
Line 2904  sub print_resources { Line 2879  sub print_resources {
   
   
     my $courseidinfo = &get_course();      my $courseidinfo = &get_course();
       if (defined($courseidinfo)) { $courseidinfo=' - '.$courseidinfo }
       if ($usersection ne '') {$courseidinfo.=' - Sec. '.$usersection}
     my $currentassignment=&Apache::lonxml::latex_special_symbols($helper->{VARS}->{'assignment'},'header');      my $currentassignment=&Apache::lonxml::latex_special_symbols($helper->{VARS}->{'assignment'},'header');
     my $header_line =      my $header_line =
  &format_page_header($LaTeXwidth, $parmhash{'print_header_format'},   &format_page_header($LaTeXwidth, $parmhash{'print_header_format'},
     $currentassignment, $courseidinfo, $fullname, $usersection);      $currentassignment, $courseidinfo, $fullname);
     my $header_start = ($columns_in_format == 1) ? '\lhead'      my $header_start = ($columns_in_format == 1) ? '\lhead'
                                          : '\fancyhead[LO]';                                           : '\fancyhead[LO]';
     $header_line = $header_start.'{'.$header_line.'}';      $header_line = $header_start.'{'.$header_line.'}';

Removed from v.1.568.2.3  
changed lines
  Added in v.1.568.2.4


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>