--- loncom/homework/default_homework.lcpm 2004/05/17 22:20:21 1.80 +++ loncom/homework/default_homework.lcpm 2004/05/18 23:12:15 1.81 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # used by lonxml::xmlparse() as input variable $safeinit to Apache::run::run() # -# $Id: default_homework.lcpm,v 1.80 2004/05/17 22:20:21 albertel Exp $ +# $Id: default_homework.lcpm,v 1.81 2004/05/18 23:12:15 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -480,15 +480,21 @@ sub floor {return (($_[0]-CORE::int($_[ sub format { my ($value,$fmt)=@_; - my $dollarmode,$commamode; - if ($fmt =~ /^\$(.*)/) { $fmt=$1; $dollarmode=1; } - if ($fmt =~ /^,(.*)/) { $fmt=$1; $commamode=1; } + my ($dollarmode,$commamode,$alwaysperiod,$options); + if ($fmt =~ /^([^\d]*)(.*)/) { $options=$1; $fmt=$2; } + #if ($options =~ /\$/) { $dollamode=1; } + #if ($options =~ /,/) { $commamode=1; } + if ($options =~ /\./) { + $alwaysperiod=1; + &LONCAPA_INTERNAL_DEBUG("hrrm setting it to 1"); + } + &LONCAPA_INTERNAL_DEBUG("alwyas per $alwaysperiod opt $options fmt $fmt"); $fmt=~s/e/E/g; my $result=sprintf('%.'.$fmt,$value); - if ($fmt eq '0f') { $result .='.'; } + if ($alwaysperiod && $fmt eq '0f') { $result .='.'; } $result=~s/(E[+-]*)0/$1/; - if ($dollarmode) {$result=&dollarformat($result);} - if ($commamode) {$result=&commaformat($result);} + #if ($dollarmode) {$result=&dollarformat($result);} + #if ($commamode) {$result=&commaformat($result);} return $result; } @@ -534,13 +540,21 @@ sub chemparse { sub prettyprint { my ($value,$fmt,$target)=@_; my $result; - my $dollarmode,$commamode; if (!$target) { $target = $external::target; } if ($fmt =~ /chem/i) { return(&chemparse($value)); } - if ($fmt =~ /^\$(.*)/) { $fmt=$1; $dollarmode=1; } - if ($fmt =~ /^,(.*)/) { $fmt=$1; $commamode=1; } + my ($dollarmode,$commamode,$alwaysperiod,$options); + if ($fmt =~ /^([^\d]*)(.*)/) { $options=$1; $fmt=$2; } + if ($options =~ /\$/) { $dollamode=1; } + if ($options =~ /,/) { $commamode=1; } + if ($options =~ /\./) { $alwaysperiod=1; } if ($fmt) { $value=sprintf('%.'.$fmt,$value); } - if ($fmt eq '0f') { $value .='.'; } + if ($alwaysperiod && $fmt eq '0f') { + if ($target eq 'tex') { + $value .='\\ensuremath{.}'; + } else { + $value .='.'; + } + } if ($value =~ /([0-9\.\-\+]+)E([0-9\-\+]+)/i ) { my $frac=$1; if ($dollarmode) { $frac=&dollarformat($frac); }