--- loncom/xml/lontexconvert.pm 2002/07/30 12:42:13 1.7 +++ loncom/xml/lontexconvert.pm 2002/11/09 22:05:33 1.13 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # TeX Conversion Module # -# $Id: lontexconvert.pm,v 1.7 2002/07/30 12:42:13 www Exp $ +# $Id: lontexconvert.pm,v 1.13 2002/11/09 22:05:33 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -55,8 +55,18 @@ sub header { 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'); + } } return &Apache::lonxml::xmlbegin(). &Apache::lonxml::fontsettings(). @@ -68,18 +78,23 @@ sub header { # ================================================================== Conversion sub converted { - my $texstring=shift; - my $xmlstring; + my $texstring=shift; + my $xmlstring='[UNDISPLAYABLE]'; + eval(<<'ENDCONV'); + { + local $SIG{SEGV}=sub { die; }; if ($ENV{'browser.mathml'}) { $xmlstring=&tth::ttm($$texstring); $xmlstring=~s/\/\/g; $xmlstring=~s/\/\/g; $xmlstring=~s/\/\\<\/p\>/g; $errorstring.=&tth::ttmerror(); - } else { + } else { $xmlstring=&tth::tth($$texstring); $errorstring.=&tth::ttherror(); + } } +ENDCONV return $xmlstring; } @@ -99,8 +114,18 @@ sub footer { # ------------------------------------------------------------ Message display +sub to_convert { + my ($string) = @_; + $string=~s/\/ /g; + return &converted(\$string); +} + sub msgtexconverted { my $message=shift; + + #FIXME this crap needs to go but right now the -L option might be + #ignored if this isn;t the first time the tth engine is used + #thus the \\document class crap, it makes sure we init the LaTeX stuff if ($ENV{'browser.mathml'}) { &tth::ttminit(); &tth::ttmoptions("-L"); @@ -108,9 +133,11 @@ sub msgtexconverted { &tth::tthinit(); &tth::tthoptions("-L"); } - $message=~s/(\$.+?\$)/&converted(\$1)/ge; - $message=~s/(\\\[.+?\\\])/&converted(\$1)/ge; - return $message; + $message=~s/(\$\$.+?\$\$)/&to_convert("\\documentclass{article}".$1)/ge; + $message=~s/(\$.+?\$)/&to_convert("\\documentclass{article}".$1)/ge; + $message=~s/(\\\(.+?\\\))/&to_convert("\\documentclass{article}".$1)/ge; + $message=~s/(\\\[.+?\\\])/&to_convert("\\documentclass{article}".$1)/ge; + return $message.$errorstring; } 1;