[LON-CAPA-cvs] cvs: loncom /homework/caparesponse caparesponse.pm
sakharuk
lon-capa-cvs@mail.lon-capa.org
Mon, 13 Jan 2003 21:22:00 -0000
sakharuk Mon Jan 13 16:22:00 2003 EDT
Modified files:
/loncom/homework/caparesponse caparesponse.pm
Log:
Done some changes (mainly additions) to print bubble exams in a more elegant way.
Index: loncom/homework/caparesponse/caparesponse.pm
diff -u loncom/homework/caparesponse/caparesponse.pm:1.75 loncom/homework/caparesponse/caparesponse.pm:1.76
--- loncom/homework/caparesponse/caparesponse.pm:1.75 Mon Dec 2 12:06:09 2002
+++ loncom/homework/caparesponse/caparesponse.pm Mon Jan 13 16:22:00 2003
@@ -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 @@
&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 @@
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.= '<table border="1"><tr>';
for ($ind=0;$ind<$number_of_bubbles;$ind++) {
@@ -253,71 +255,80 @@
$result.='<td><input type="radio" name="HWVAL'.$id.'" value="'.$ans.'"><b>'.$alphabet[$ind].'</b>: '.$ans.'</td>';
}
$result.='</tr></table>';
+ } elsif ($$tagstack[-1] eq 'formularesponse') {
+ $result.= '<br /><br /><font color="red"> Formula have to be entered here! </font><br /><br />';
+ }
} 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') {