--- loncom/homework/radiobuttonresponse.pm 2003/04/18 06:26:43 1.69 +++ loncom/homework/radiobuttonresponse.pm 2003/05/16 19:25:08 1.71 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # mutliple choice style responses # -# $Id: radiobuttonresponse.pm,v 1.69 2003/04/18 06:26:43 albertel Exp $ +# $Id: radiobuttonresponse.pm,v 1.71 2003/05/16 19:25:08 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -62,6 +62,16 @@ sub start_radiobuttonresponse { $safeeval,'max','randomize'); if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); } } elsif ($target eq 'tex') { + my $type=&Apache::lonxml::get_param('TeXtype',$parstack,$safeeval,undef,0); + if ($type eq '1') { + $result .= ' \renewcommand{\labelenumi}{\arabic{enumi}.}'; + } elsif ($type eq 'A') { + $result .= ' \renewcommand{\labelenumi}{\Alph{enumi}.}'; + } elsif ($type eq 'a') { + $result .= ' \renewcommand{\labelenumi}{\alph{enumi}.}'; + } elsif ($type eq 'i') { + $result .= ' \renewcommand{\labelenumi}{\roman{enumi}.}'; + } $result .= '\begin{enumerate}'; } return $result; @@ -285,9 +295,10 @@ sub whichfoils { &Apache::lonxml::debug("Max is $max, From $#truelist elms, picking $whichtrue"); my (@toplist, @bottomlist); my $topcount=0; + my $bottomcount=0; # assign everyone to either toplist/bottomlist or whichfalse # which false is randomized, toplist bottomlist are in order - while ((($#whichfalse) < $max-2) && ($#falselist > -1)) { + while ((($#whichfalse+$topcount+$bottomcount) < $max-2) && ($#falselist > -1)) { &Apache::lonxml::debug("Have $#whichfalse max is $max"); my $afalse=int(&Math::Random::random_uniform() * ($#falselist+1)); &Apache::lonxml::debug("From $#falselist elms, picking $afalse"); @@ -300,10 +311,12 @@ sub whichfoils { $topcount++; } elsif ($bottom{$afalse}) { $bottomlist[$bottom{$afalse}]=$afalse; + $bottomcount++; } else { push (@whichfalse,$afalse); } } + &Apache::lonxml::debug("Answer wants $answer"); my $truename=$truelist[$whichtrue]; my $dosplice=1; #insert the true statement, keeping track of where it wants to be @@ -325,11 +338,12 @@ sub whichfoils { $answer+=$topcount+$#whichfalse+1; $dosplice=0; } else { - if ($topcount>0) { - $answer = int(&Math::Random::random_uniform() * ($#whichfalse+1)) - + $topcount; + if ($topcount>0 || $bottomcount>0) { + $answer = int(&Math::Random::random_uniform() * ($#whichfalse+1)) + + $topcount; } } + &Apache::lonxml::debug("Answer now wants $answer"); #add the top items to the top, bottom items to the bottom for (my $i=0;$i<=$#toplist;$i++) { if ($toplist[$i]) { unshift(@whichfalse,$toplist[$i]) }