Diff for /loncom/homework/optionresponse.pm between versions 1.106 and 1.109

version 1.106, 2004/04/16 22:25:13 version 1.109, 2004/05/06 07:31:32
Line 56  sub start_optionresponse { Line 56  sub start_optionresponse {
      $token,'4').       $token,'4').
         &Apache::edit::select_arg('Randomize Foil Order','randomize',          &Apache::edit::select_arg('Randomize Foil Order','randomize',
   ['yes','no'],$token).    ['yes','no'],$token).
           &Apache::edit::select_arg(&mt('Display of options when printed'),'TeXlayout',
     [['horizontal',&mt('Normal list')],
      ['vertical',&mt('Listed in a vertical column')]],$token).
         &Apache::edit::end_row().&Apache::edit::start_spanning_row();          &Apache::edit::end_row().&Apache::edit::start_spanning_row();
   } elsif ($target eq 'modified') {    } elsif ($target eq 'modified') {
     my $constructtag=&Apache::edit::get_new_args($token,$parstack,      my $constructtag=&Apache::edit::get_new_args($token,$parstack,
  $safeeval,'max','randomize');   $safeeval,'max','randomize',
    'TeXlayout');
     if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); }      if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); }
   } elsif ($target eq 'meta') {    } elsif ($target eq 'meta') {
     $result=&Apache::response::meta_package_write('optionresponse');      $result=&Apache::response::meta_package_write('optionresponse');
Line 144  ENDTABLE Line 148  ENDTABLE
     } # else nothing changed so just use the default mechanism      } # else nothing changed so just use the default mechanism
   }    }
   if ($target eq 'tex' and $Apache::lonhomework::type ne 'exam') {    if ($target eq 'tex' and $Apache::lonhomework::type ne 'exam') {
       $result .= ' \begin{enumerate} ';        $result .= ' \renewcommand{\labelenumi}{\Alph{enumi}.}
                      \begin{enumerate} ';
   }    }
   return $result;    return $result;
 }  }
Line 159  sub end_foilgroup { Line 164  sub end_foilgroup {
     my $name;      my $name;
     my @opt;      my @opt;
     eval '@opt ='.&Apache::lonxml::get_param('options',$parstack,$safeeval);      eval '@opt ='.&Apache::lonxml::get_param('options',$parstack,$safeeval);
       my $TeXlayout=&Apache::lonxml::get_param('TeXlayout',$parstack,$safeeval,
        -2,0);
     if ($target eq 'tex' && $tex_option_switch eq 'nochoice') {@opt=();}      if ($target eq 'tex' && $tex_option_switch eq 'nochoice') {@opt=();}
     &Apache::lonxml::debug("Options are $#opt");      &Apache::lonxml::debug("Options are $#opt");
     my $max = &Apache::lonxml::get_param('max',$parstack,$safeeval,'-2');      my $max = &Apache::lonxml::get_param('max',$parstack,$safeeval,'-2');
     my $randomize = &Apache::lonxml::get_param('randomize',$parstack,      my $randomize = &Apache::lonxml::get_param('randomize',$parstack,
        $safeeval,'-2');         $safeeval,'-2');
     if ($target eq 'web' || $target eq 'tex') {      if ($target eq 'web' || $target eq 'tex') {
       $result.=&displayfoils($target,$max,$randomize,@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') {
Line 306  sub check_for_invalid { Line 313  sub check_for_invalid {
 }  }
   
 sub displayfoils {  sub displayfoils {
   my ($target,$max,$randomize,@opt)=@_;    my ($target,$max,$randomize,$TeXlayout,@opt)=@_;
   if (!defined(@{ $Apache::response::foilgroup{'names'} })) {return;}    if (!defined(@{ $Apache::response::foilgroup{'names'} })) {return;}
   my @names = @{ $Apache::response::foilgroup{'names'} };    my @names = @{ $Apache::response::foilgroup{'names'} };
   my @truelist;    my @truelist;
Line 397  sub displayfoils { Line 404  sub displayfoils {
   my $texoptionlist='';    my $texoptionlist='';
   if ($displayoptionintex &&    if ($displayoptionintex &&
       $Apache::lonhomework::type ne 'exam') {        $Apache::lonhomework::type ne 'exam') {
       $texoptionlist = &optionlist_correction(@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\} |;
Line 412  sub displayfoils { Line 419  sub displayfoils {
       if ($Apache::lonhomework::type eq 'exam') {        if ($Apache::lonhomework::type eq 'exam') {
   $result.= $texoptionlist.'  '.$text;    $result.= $texoptionlist.'  '.$text;
       } else {        } else {
   $result.= $texoptionlist.'\vspace*{-2 mm}\item '.$text;    if ($text=~/\S/) {$result.= $texoptionlist.'\vspace*{-2 mm}\item '.$text;} else {$result.= $texoptionlist;}
       }        }
   }    }
   if ($Apache::lonhomework::type eq 'exam') {    if ($Apache::lonhomework::type eq 'exam') {
Line 434  sub displayfoils { Line 441  sub displayfoils {
   
   
 sub optionlist_correction {  sub optionlist_correction {
     my @options = @_;      my ($TeXlayout,@options) = @_;
     my $texoptionlist='\\item [] Choices: ';      my $texoptionlist='\\item [] Choices: ';
       if ($TeXlayout eq 'vertical') {$texoptionlist='\\item []';}
     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).   &Apache::lonxml::latex_special_symbols($option).
  '},';   '}';
       if ($TeXlayout eq 'vertical') {
    $texoptionlist.=' \vskip 0 mm ',
       } else {
    $texoptionlist.=',';
       }
  }   }
  chop($texoptionlist);   chop($texoptionlist);
  $texoptionlist.='.';   if ($TeXlayout ne 'vertical') {$texoptionlist.='.';}
     } else {      } else {
  $texoptionlist='\\item [] \\vskip -5 mm';   if ($TeXlayout ne 'vertical') {$texoptionlist='\\item [] \\vskip -5 mm';}
     }      }
     return $texoptionlist;      return $texoptionlist;
 }  }
Line 498  sub bubbles { Line 511  sub bubbles {
     $head.='lr';      $head.='lr';
  } else {   } else {
     $line=~s/\&\s*$//;      $line=~s/\&\s*$//;
     $result.='\vskip -2 mm\noindent\begin{tabular}{'.$head.'}'.$line.'\\\\\end{tabular}';      $result.='\vskip -2 mm\noindent\begin{tabular}{'.$head.'}'.$line.'\\\\\end{tabular}\vskip 0 mm';
     $line = '\hskip -1 mm {\small \textbf{'.$alphabet[$ind].'}}$\bigcirc$\hskip -1 mm & \hskip -3 mm {\small '.$opt[$ind].'} & ';;      $line = '\hskip -1 mm {\small \textbf{'.$alphabet[$ind].'}}$\bigcirc$\hskip -1 mm & \hskip -3 mm {\small '.$opt[$ind].'} & ';;
     $head ='lr';      $head ='lr';
     $current_length = (length($opt[$ind])+length($alphabet[$ind]))*2;      $current_length = (length($opt[$ind])+length($alphabet[$ind]))*2;
Line 586  sub end_foil { Line 599  sub end_foil {
   my $result = '';    my $result = '';
   if ($target eq 'web' || $target eq 'tex' || $target eq 'analyze') {     if ($target eq 'web' || $target eq 'tex' || $target eq 'analyze') { 
       $text=&Apache::lonxml::endredirection;        $text=&Apache::lonxml::endredirection;
       if ($target eq 'tex' and $Apache::lonhomework::type ne 'exam') { $text = '\vspace*{-2 mm}\item '.$text; }        $text=~/(\w)/;
         if (($target eq 'tex') and ($Apache::lonhomework::type ne 'exam') and ($text=~/\S/)) {$text = '\vspace*{-2 mm}\item '.$text;} 
   }    }
   if ($target eq 'web' || $target eq 'grade' || $target eq 'answer'     if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' 
       || $target eq 'tex' || $target eq 'analyze') {        || $target eq 'tex' || $target eq 'analyze') {

Removed from v.1.106  
changed lines
  Added in v.1.109


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