Diff for /loncom/homework/optionresponse.pm between versions 1.134 and 1.136

version 1.134, 2006/03/15 00:08:53 version 1.136, 2007/01/17 10:46:13
Line 185  sub end_foilgroup { Line 185  sub end_foilgroup {
       $result.=&displayfoils($target,$max,$randomize,$TeXlayout,@opt);        $result.=&displayfoils($target,$max,$randomize,$TeXlayout,@opt);
     } elsif ( $target eq 'answer') {      } elsif ( $target eq 'answer') {
       $result.=&displayanswers($max,$randomize,@opt);        $result.=&displayanswers($max,$randomize,@opt);
         
     } elsif ( $target eq 'analyze') {      } elsif ( $target eq 'analyze') {
  my @shown = &whichfoils($max,$randomize);   my @shown = &whichfoils($max,$randomize);
  &Apache::response::analyze_store_foilgroup(\@shown,   &Apache::response::analyze_store_foilgroup(\@shown,
Line 448  sub displayfoils { Line 449  sub displayfoils {
       $texoptionlist = &optionlist_correction($TeXlayout,@opt);        $texoptionlist = &optionlist_correction($TeXlayout,@opt);
   }    }
   if ($text=~/<drawoptionlist\s*\/>/) {    if ($text=~/<drawoptionlist\s*\/>/) {
       $text=~s|<drawoptionlist\s*/>| \\makebox\[0\.3in\]\[b\]\{\\hrulefill\} |;        $text=~s|<drawoptionlist\s*\/>| \\makebox\[0\.3in\]\[b\]\{\\hrulefill\} |g;
   }    }
   
   if ($text=~m/\\item /) {    if ($text=~m/\\item /) {
Line 481  sub displayfoils { Line 482  sub displayfoils {
 }  }
   
   
 #  Correct a single option list element.  
 #  - For embedded <display></display> tags,  
 #    we pass literally the stuff between them.  
 #  - For everything else, we run through latex_special_symbols  
 #    so that any symbols that have meaning to LaTeX will be  
 #    correctly escaped.  
 #  
 sub correct_option {  
     my $option = shift;  
   
   
     # There's probably a beter way with perl if I was  
     # more of a regexp wiz..(RF).  
   
     my $strlen = length($option);  
     my $here   = 0; # Where to start searching for <display></display>  
     my $result =""; # The return string is built here.  
       
     while ($here < $strlen) {  
  # look for an opening <display> tag:  
   
  my $openloc = index($option, "<display>", $here);  
  if ($openloc == -1) {  
     # No more... operate with latex_special_symbols on  
     # the rest of the string.  
   
     $result .= &Apache::lonxml::latex_special_symbols(substr($option, $here));  
     return $result;  
  } else {  
     # Need to pass the string up to the <display> tag   
     # through l_s_s ...  
     $result .= &Apache::lonxml::latex_special_symbols(substr($option, $here, $openloc-$here));  
  }  
  # look for the closing </display> tag...  
  # We're a bit stupid..or tolerant...  
  # in that if the user forgets the </display> tag  
  # we infer they intended one at the end of the option.  
  $openloc += 9; # 9 chars in <display>  
   
  my $closeloc = index($option, "</display>", $openloc); # 9 chars in <display>  
  if ($closeloc == -1) {  
     $closeloc = $strlen + 9;                             # 10chars in </display> faked off end.   
  }  
  #  Pass from openloc through closeloc without any interpretation:  
   
  &Apache::lonnet::logthis("Segment inside display: $openloc through $closeloc");  
  $result .= substr($option, $openloc, $closeloc - $openloc);  
  $here    = $closeloc + 10;                               # Next search is after the </display>   
     }  
   
     return $result;  
   
     # return &Apache::lonxml::latex_special_symbols($option);  
 }  
   
 #  Correct the option list elements so that if there  
 #  are special symbosl that have meaning to LaTeX  
 #  they get fixed up to display correctly.  
   
 sub optionlist_correction {  sub optionlist_correction {
     my ($TeXlayout,@options) = @_;      my ($TeXlayout,@options) = @_;
     my $texoptionlist='\\item [] Choices: ';      my $texoptionlist='\\item [] Choices: ';
Line 547  sub optionlist_correction { Line 489  sub optionlist_correction {
     if (scalar(@options) > 0) {      if (scalar(@options) > 0) {
  foreach my $option (@options) {   foreach my $option (@options) {
     $texoptionlist.='{\bf '.      $texoptionlist.='{\bf '.
  &correct_option($option).   &Apache::lonxml::latex_special_symbols($option).
  '}';   '}';
     if ($TeXlayout eq 'vertical') {      if ($TeXlayout eq 'vertical') {
  $texoptionlist.=' \vskip 0 mm ',   $texoptionlist.=' \vskip 0 mm ',
Line 747  sub end_foil { Line 689  sub end_foil {
   
 sub start_drawoptionlist {  sub start_drawoptionlist {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
     if ($target ne 'meta') {      if (($target ne 'meta')  && ($target ne 'answer')) {
  return $token->[4];   return $token->[4];
     }      }
 }  }
   
 sub end_drawoptionlist {  sub end_drawoptionlist {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
     if ($target ne 'meta') {      if (($target ne 'meta') && ($target ne 'answer')) {
  return $token->[2];   return $token->[2];
     }      }
 }  }

Removed from v.1.134  
changed lines
  Added in v.1.136


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