--- loncom/xml/lontexconvert.pm 2003/03/31 16:34:08 1.21 +++ loncom/xml/lontexconvert.pm 2004/01/28 20:48:35 1.30 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # TeX Conversion Module # -# $Id: lontexconvert.pm,v 1.21 2003/03/31 16:34:08 www Exp $ +# $Id: lontexconvert.pm,v 1.30 2004/01/28 20:48:35 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -51,24 +51,29 @@ use Apache::lonmenu; # ====================================================================== Header +sub init_tth { + my $options=$ENV{'course.'.$ENV{'request.course.id'}.'.tthoptions'}; + if ($ENV{'browser.mathml'}) { + &tth::ttminit(); + if ($ENV{'browser.unicode'}) { + &tth::ttmoptions('-L -u1 '.$options); + } else { + &tth::ttmoptions('-L -u0 '.$options); + } + } else { + &tth::tthinit(); + if ($ENV{'browser.unicode'}) { + &tth::tthoptions('-L -u1 '.$options); + } else { + &tth::tthoptions('-L -u0 '.$options); + } + } +} + sub header { $errorstring=''; my $time=time; - if ($ENV{'browser.mathml'}) { - &tth::ttminit(); - if ($ENV{'browser.unicode'}) { - &tth::ttmoptions('-L -u1'); - } else { - &tth::ttmoptions('-L -u0'); - } - } else { - &tth::tthinit(); - if ($ENV{'browser.unicode'}) { - &tth::tthoptions('-L -u1'); - } else { - &tth::tthoptions('-L -u0'); - } - } + &init_tth(); return &Apache::lonxml::xmlbegin(). &Apache::lonxml::fontsettings(). "\n\n". @@ -83,7 +88,7 @@ sub converted { my $texstring=shift; my $xmlstring='[UNDISPLAYABLE]'; if ($Apache::lontexconvert::messedup) { - return '[Uncoverted Due To Previous Errors]'; + return '[TeX Unconverted Due To Previous Errors]'; } eval(<<'ENDCONV'); { @@ -97,7 +102,10 @@ sub converted { } else { $xmlstring=&tth::tth($$texstring); $errorstring.=&tth::ttherror(); + $xmlstring=~s---g; } + $xmlstring=~s/^\s*//; + $xmlstring=~s/\s*$//; } ENDCONV if ($Apache::lontexconvert::messedup || &tth::tthmessedup()) { @@ -127,7 +135,8 @@ sub footer { sub to_convert { my ($string) = @_; - $string=~s/\/ /g; + $string=~s/\/ /gs; +# $string=~s/\s/ /gs; $string=&HTML::Entities::decode($string); return &converted(\$string); } @@ -135,19 +144,20 @@ sub to_convert { sub smiley { my $expression=shift; if ($ENV{'browser.imagesuppress'} eq 'on') { return $expression; } - my %smileys=('\:\-*\)' => 'smiley', - '8\-*\)' => 'coolsmile', - '8\-*I' => 'coolindiff', - ':\-*\(' => 'frowny', - '\:\-*(o|O|\(\))' => 'shocked', - '\;\-*\)' => 'wink', - '\:\-*P' => 'baeh', + my %smileys=('\:\-\)' => 'smiley', + '8\-\)' => 'coolsmile', + '8\-(I|\|)' => 'coolindiff', + ':\-(I|\|)' => 'neutral', + '\:\-(o|O|\(\))' => 'shocked', + ':\-\(' => 'frowny', + '\;\-\)' => 'wink', + '\:\-P' => 'baeh', '\:\-(\\\|\\/)' => 'hrrm', - '\:\-*D' => 'bigsmile', - '\:\-*C' => 'angry', - '\:(\'|\`)\-*\(' => 'cry', - '\:\-*(X|\#)' => 'lipsrsealed', - '\:\-*S' => 'huh'); + '\:\-D' => 'bigsmile', + '\:\-C' => 'angry', + '\:(\'|\`)\-\(' => 'cry', + '\:\-(X|\#)' => 'lipsrsealed', + '\:\-S' => 'huh'); my $iconpath=$Apache::lonnet::perlvar{'lonIconsURL'}; foreach (keys %smileys) { $expression=~s/$_/\/gs; @@ -157,28 +167,27 @@ sub smiley { sub msgtexconverted { my $message=shift; - + my $email=shift; $errorstring=''; - if ($ENV{'browser.mathml'}) { - &tth::ttminit(); - if ($ENV{'browser.unicode'}) { - &tth::ttmoptions('-L -u1'); + &init_tth(); + my $outmessage=''; + my $tex=0; + foreach (split(/(?:\<\;|\<)\/*m\s*(?:\>\;|\>)/i,$message)) { + if ($tex) { + if ($email) { + $outmessage.=''.&to_convert($_).'
'; $tex=0;
+	    } else {
+		$outmessage.=&to_convert($_); $tex=0;
+	    }
 	} else {
-	    &tth::ttmoptions('-L -u0');
+            $outmessage.=&smiley($_); $tex=1;
 	}
+    }
+    if (wantarray) {
+	return ($outmessage,$errorstring);
     } else {
-	&tth::tthinit();
-	if ($ENV{'browser.unicode'}) {
-	    &tth::tthoptions('-L -u1');
-	} else {
-	    &tth::tthoptions('-L -u0');
-	}
+	return $outmessage.$errorstring;
     }
-    $message=~s/(\$\$.+?\$\$)/&to_convert($1)/ge;
-    $message=~s/(\$.+?\$)/&to_convert($1)/ge;
-    $message=~s/(\\\(.+?\\\))/&to_convert($1)/ge;
-    $message=~s/(\\\[.+?\\\])/&to_convert($1)/ge;
-    return &smiley($message).$errorstring;
 }
 
 1;