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

version 1.133, 2006/03/09 01:04:43 version 1.134, 2006/03/15 00:08:53
Line 481  sub displayfoils { Line 481  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 488  sub optionlist_correction { Line 547  sub optionlist_correction {
     if (scalar(@options) > 0) {      if (scalar(@options) > 0) {
  foreach my $option (@options) {   foreach my $option (@options) {
     $texoptionlist.='{\bf '.      $texoptionlist.='{\bf '.
  &Apache::lonxml::latex_special_symbols($option).   &correct_option($option).
  '}';   '}';
     if ($TeXlayout eq 'vertical') {      if ($TeXlayout eq 'vertical') {
  $texoptionlist.=' \vskip 0 mm ',   $texoptionlist.=' \vskip 0 mm ',

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


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