--- loncom/homework/caparesponse/caparesponse.pm 2002/12/02 17:06:09 1.75
+++ loncom/homework/caparesponse/caparesponse.pm 2003/01/13 21:22:00 1.76
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# caparesponse definition
#
-# $Id: caparesponse.pm,v 1.75 2002/12/02 17:06:09 albertel Exp $
+# $Id: caparesponse.pm,v 1.76 2003/01/13 21:22:00 sakharuk Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -193,6 +193,7 @@ sub end_numericalresponse {
&Apache::lonxml::debug("no format answer :$answer:");
$formatted="$answer,";
}
+
if ($target eq 'tex') {
$formatted='';
#$formatted=&Apache::lonxml::latex_special_symbols($formatted);
@@ -231,6 +232,7 @@ sub end_numericalresponse {
my @alphabet = ('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P',
'Q','R','S','T','U','V','W','X','Y','Z');
if ($target eq 'web') {
+ if ($$tagstack[-1] eq 'numericalresponse') {
my $id=$Apache::inputtags::response[-1];
$result.= '
';
+ } elsif ($$tagstack[-1] eq 'formularesponse') {
+ $result.= '
Formula have to be entered here!
';
+ }
} elsif ($target eq 'tex') {
- my $max_val = 0;
- if ($formats[0]=~m/^(\d+)E([^\d]*)(\d*)$/) {
- $max_val=$1+$2+4;
- } else {
- $max_val=4;
- }
- $max_val = int(0.9*$ENV{'form.textwidth'}/(($max_val+6)*2));
- my $celllength = 0.9*$ENV{'form.textwidth'}/$max_val-10;
- my @table_range = ();
- my $number_of_tables = int($number_of_bubbles/$max_val);
- for (my $i=0;$i<$number_of_tables;$i++) {push @table_range,$max_val;}
- if ($number_of_bubbles % $max_val != 0) {
- $number_of_tables++;
- push @table_range,($number_of_bubbles % $max_val);
- }
- my $j=0;
- my $cou=0;
- $result.='\vskip -1 mm \noindent \begin{enumerate}\item[\textbf{'.$Apache::lonxml::counter.'}.]';
- for (my $i=0;$i<$number_of_tables;$i++) {
- $result.='\vskip -1 mm \noindent \begin{tabular}{';
- for ($ind=0;$ind<$table_range[$j];$ind++) {
- $result.='lp{'.$celllength.' mm}';
+ if ($$tagstack[-1] eq 'numericalresponse') {
+ my $max_val = 0;
+ if ($formats[0]=~m/^(\d+)E([^\d]*)(\d*)$/) {
+ $max_val=$1+$2+4;
+ } else {
+ $max_val=4;
+ }
+ $max_val = int(0.9*$ENV{'form.textwidth'}/(($max_val+6)*2));
+ my $celllength = 0.9*$ENV{'form.textwidth'}/$max_val-10;
+ my @table_range = ();
+ my $number_of_tables = int($number_of_bubbles/$max_val);
+ for (my $i=0;$i<$number_of_tables;$i++) {push @table_range,$max_val;}
+ if ($number_of_bubbles % $max_val != 0) {
+ $number_of_tables++;
+ push @table_range,($number_of_bubbles % $max_val);
}
- $result.='}';
- for ($ind=$cou;$ind<$cou+$table_range[$j];$ind++) {
- my $ans;
- if ($formats[0] ne '') {
- $ans = sprintf('%.'.$formats[0],$bubbles_values[$ind]);
- if ($ans =~ m/([0-9\.\-\+]+)E([0-9\-\+]+)/ ) {
- my $number = $1;
- my $power = $2;
- $power=~s/^\+//;
- $power=~s/^(-?)0+(\d+)//;
- $ans=$number.'$\times 10^{'.$1.$2.'}$'; #'stupidemacs
- }
- } else {
- my $badans = $bubbles_values[$ind];
- my $format = '';
- #What is the number? (integer,decimal,floating point)
- if ($badans=~/^(\d*\.?\d*)(E|e)(\d*)$/) {
- $format = 'e'.$2;
- } elsif ($badans=~/^(\d*)\.(\d*)$/) {
- $format = '4f';
- } elsif ($badans=~/^(\d*)$/) {
- $format = 'd';
- }
- $ans = sprintf('%.'.$format,$bubbles_values[$ind]);
- if ($ans =~ m/([0-9\.\-\+]+)E([0-9\-\+]+)/ ) {
- my $number = $1;
- my $power = $2;
- $power=~s/^\+//;
- $power=~s/^(-?)0+(\d+)//;
- $ans=$number.'$\times 10^{'.$1.$2.'}$'; #'stupidemacs
- }
- }
- $result.='\hskip -3 mm {\small \textbf{'.$alphabet[$ind].'}}$\bigcirc$\hskip -2 mm & {\small '.$ans.'} ';
- if ($ind != $cou+$table_range[$j]-1) {$result.=' & ';}
- }
- $cou += $table_range[$j];
- $j++;
- $result.='\\\\\end{tabular}\vskip 0 mm ';
- }
- $result.='\end{enumerate}';
- &Apache::lonxml::increment_counter();
+ my $j=0;
+ my $cou=0;
+ $result.='\vskip -1 mm \noindent \begin{enumerate}\item[\textbf{'.$Apache::lonxml::counter.'}.]';
+ for (my $i=0;$i<$number_of_tables;$i++) {
+ $result.='\vskip -1 mm \noindent \begin{tabular}{';
+ for ($ind=0;$ind<$table_range[$j];$ind++) {
+ $result.='lp{'.$celllength.' mm}';
+ }
+ $result.='}';
+ for ($ind=$cou;$ind<$cou+$table_range[$j];$ind++) {
+ my $ans;
+ if ($formats[0] ne '') {
+ $ans = sprintf('%.'.$formats[0],$bubbles_values[$ind]);
+ if ($ans =~ m/([0-9\.\-\+]+)E([0-9\-\+]+)/ ) {
+ my $number = $1;
+ my $power = $2;
+ $power=~s/^\+//;
+ $power=~s/^(-?)0+(\d+)//;
+ $ans=$number.'$\times 10^{'.$1.$2.'}$'; #'stupidemacs
+ }
+ } else {
+ my $badans = $bubbles_values[$ind];
+ my $format = '';
+ #What is the number? (integer,decimal,floating point)
+ if ($badans=~/^(\d*\.?\d*)(E|e)(\d*)$/) {
+ $format = 'e'.$2;
+ } elsif ($badans=~/^(\d*)\.(\d*)$/) {
+ $format = '4f';
+ } elsif ($badans=~/^(\d*)$/) {
+ $format = 'd';
+ }
+ $ans = sprintf('%.'.$format,$bubbles_values[$ind]);
+ if ($ans =~ m/([0-9\.\-\+]+)E([0-9\-\+]+)/ ) {
+ my $number = $1;
+ my $power = $2;
+ $power=~s/^\+//;
+ $power=~s/^(-?)0+(\d+)//;
+ $ans=$number.'$\times 10^{'.$1.$2.'}$'; #'stupidemacs
+ }
+ }
+ $result.='\hskip -3 mm {\small \textbf{'.$alphabet[$ind].'}}$\bigcirc$\hskip -2 mm & {\small '.$ans.'} ';
+ if ($ind != $cou+$table_range[$j]-1) {$result.=' & ';}
+ }
+ $cou += $table_range[$j];
+ $j++;
+ $result.='\\\\\end{tabular}\vskip 0 mm ';
+ }
+ $result.='\end{enumerate}';
+ &Apache::lonxml::increment_counter();
+ } else {
+ $result.='\fbox{\fbox{\parbox{\textwidth-5mm}{\strut\\\\\strut\\\\\strut\\\\\strut\\\\\strut\\\\\strut\\\\}}}';
+ $result.= '\begin{enumerate}\item[\textbf{'.$Apache::lonxml::counter.'}.]\textit{Live blank on scoring form}\vskip 0 mm \end{enumerate}';
+ &Apache::lonxml::increment_counter();
+ }
}
}
} elsif ($target eq 'edit') {