--- loncom/homework/optionresponse.pm 2002/10/01 20:17:04 1.50 +++ loncom/homework/optionresponse.pm 2002/10/28 14:27:27 1.56 @@ -1,7 +1,7 @@ # LearningOnline Network with CAPA # option list style responses # -# $Id: optionresponse.pm,v 1.50 2002/10/01 20:17:04 sakharuk Exp $ +# $Id: optionresponse.pm,v 1.56 2002/10/28 14:27:27 sakharuk Exp $ # # Copyright Michigan State University Board of Trustees # @@ -321,7 +321,8 @@ sub displayfoils { $result .=$Apache::response::foilgroup{$name.'.value'}. ":".$Apache::response::foilgroup{$name.'.text'}."\n"; } else { - $result .='\item '.$Apache::response::foilgroup{$name.'.value'}. + $Apache::response::foilgroup{$name.'.text'}=~s/\\item//; + $result .='\item \textit{'.$Apache::response::foilgroup{$name.'.value'}.'}'. ":".$Apache::response::foilgroup{$name.'.text'}."\n"; } } @@ -355,10 +356,18 @@ sub displayfoils { } else { if ($displayoptionintex == 0) { my $texoptionlist = &optionlist_correction($optionlist); + if ($Apache::lonhomework::type eq 'exam') {$texoptionlist='';} if ($Apache::response::foilgroup{$name.'.text'}=~m/\\item /) { + if ($Apache::lonhomework::type eq 'exam') { + $Apache::response::foilgroup{$name.'.text'}=~s/\\item/\\item[\\textbf{$Apache::lonxml::counter}\.]/; + } $result.= $texoptionlist.$Apache::response::foilgroup{$name.'.text'}; } else { - $result.= $texoptionlist.'\item '.$Apache::response::foilgroup{$name.'.text'}; + if ($Apache::lonhomework::type eq 'exam') { + $result.= $texoptionlist.'\vspace*{-2 mm}\item[\textbf{'.$Apache::lonxml::counter.'}.]'.$Apache::response::foilgroup{$name.'.text'}; + } else { + $result.= $texoptionlist.'\vspace*{-2 mm}\item '.$Apache::response::foilgroup{$name.'.text'}; + } } if ($Apache::lonhomework::type eq 'exam') { $result.=&bubbles(\@alphabet,\@opt); @@ -366,9 +375,16 @@ sub displayfoils { $displayoptionintex=1; } else { if ($Apache::response::foilgroup{$name.'.text'}=~m/\\item /) { + if ($Apache::lonhomework::type eq 'exam') { + $Apache::response::foilgroup{$name.'.text'}=~s/\\item/\\item[\\textbf{$Apache::lonxml::counter}\.]/; + } $result.= $Apache::response::foilgroup{$name.'.text'}; } else { - $result.= '\item '.$Apache::response::foilgroup{$name.'.text'}; + if ($Apache::lonhomework::type eq 'exam') { + $result.= '\item[\textbf{'.$Apache::lonxml::counter.'}.]'.$Apache::response::foilgroup{$name.'.text'}; + } else { + $result.= '\item '.$Apache::response::foilgroup{$name.'.text'}; + } } if ($Apache::lonhomework::type eq 'exam') { $result.=&bubbles(\@alphabet,\@opt); @@ -389,7 +405,7 @@ sub displayfoils { sub optionlist_correction { my $texoptionlist = shift; - $texoptionlist =~ s/<option><\/option>/\\item \[\] The possible answers are:/; + $texoptionlist =~ s/<option><\/option>/\\item \[\] Possible answers are:/; $texoptionlist =~ s/<option>/\{\\bf /g; $texoptionlist =~ s/<option selected="on">/\{\\bf /g; $texoptionlist =~ s/<\/option>/\},/g; @@ -406,18 +422,24 @@ sub bubbles { my ($ralphabit,$ropt) = @_; my @alphabet = @$ralphabit; my @opt = @$ropt; - my $result=''; + my ($result,$head,$line) =('','',''); my $number_of_bubbles = $#opt + 1; - $result.= '\vskip 2 mm \noindent \begin{tabular}{|'; - for (my $ind=0;$ind<$number_of_bubbles;$ind++) { - $result.='lr|'; - } - $result.='}\hline '; - for (my $ind=0;$ind<$number_of_bubbles;$ind++) { - $result.=' '.$alphabet[$ind].': & '.$opt[$ind].' '; - if ($ind != $number_of_bubbles - 1) {$result.=' & ';} + my $current_length = 0; + for (my $ind=0;$ind<=$number_of_bubbles;$ind++) { + $current_length += (length($opt[$ind])+length($alphabet[$ind])+2)*2; + if ($current_length<0.9*$ENV{'form.textwidth'} and $ind!=$number_of_bubbles) { + $line.='\hskip -1 mm {\small \textbf{'.$alphabet[$ind].'}}$\bigcirc$\hskip -1 mm & \hskip -3 mm {\small '.$opt[$ind].'} & '; + $head.='lr'; + } else { + $line=~s/\&\s*$//; + $result.='\vskip -5 mm\begin{tabular}{'.$head.'}\\\\'.$line.'\\\\\end{tabular}'; + $line = '\hskip -1 mm {\small \textbf{'.$alphabet[$ind].'}}$\bigcirc$\hskip -1 mm & \hskip -3 mm {\small '.$opt[$ind].'} & ';; + $head ='lr'; + $current_length = (length($opt[$ind])+length($alphabet[$ind]))*2; + } + } - $result.='\\\\\hline\end{tabular}\vskip 0 mm '; + &Apache::lonxml::increment_counter(); return $result; } @@ -524,7 +546,7 @@ sub end_foil { my $result = ''; if ($target eq 'web' || $target eq 'tex') { $text=&Apache::lonxml::endredirection; - if ($target eq 'tex') { $text = '\item '.$text; } + if ($target eq 'tex') { $text = '\vspace*{-2 mm}\item '.$text; } } if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || $target eq 'tex' || $target eq 'analyze') {