--- loncom/xml/lontexconvert.pm 2005/02/24 10:09:32 1.58 +++ loncom/xml/lontexconvert.pm 2005/02/28 19:08:11 1.62 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # TeX Conversion Module # -# $Id: lontexconvert.pm,v 1.58 2005/02/24 10:09:32 albertel Exp $ +# $Id: lontexconvert.pm,v 1.62 2005/02/28 19:08:11 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -117,12 +117,14 @@ sub convert_real { return ($xmlstring,$errorstring); } -sub converted { +sub tth_converted { my $texstring=shift; my $xmlstring='['.&mt('UNDISPLAYABLE').']'; if ($Apache::lontexconvert::messedup) { return '['.&mt('TeX unconverted due to previous errors').']'; } + $$texstring ='\\documentstyle{article}'.$$texstring; + eval(<<'ENDCONV'); ($xmlstring,$errorstring)=&convert_real($texstring) ENDCONV @@ -140,6 +142,58 @@ ENDCONV return $xmlstring; } +sub clean_out_math_mode { + my ($texstring)=@_; + $$texstring=~s/(?!\\)\$//g; + $$texstring=~s/\\[\)\(\]\[]//g; + $$texstring=~s/\\ensuremath//g; + return ''; +} + +sub displaystyle { + my ($texstring)=@_; + #has a $$ or \[ or \displaystyle in it, guessinng it's display mode + if ($$texstring=~/[^\\]\$\$/ || + $$texstring=~/\\\[/ || + $$texstring=~/\\displaystyle/) { return 1; } + return 0; +} + +sub jsMath_converted { + my $texstring=shift; + my $tag='span'; + if (&displaystyle($texstring)) { $tag='div'; } + &clean_out_math_mode($texstring); + return '<'.$tag.' class="math">'.$$texstring.''; +} + +sub mimetex_converted { + my $texstring=shift; + my $displaystyle=&displaystyle($texstring); + + &clean_out_math_mode($texstring); + + if ($displaystyle) { + $$texstring='\\displaystyle \\Large '.$$texstring; + } + my $result=''; + if ($displaystyle) { + $result='
'.$result.'
'; + } + return $result; +} + +sub converted { + if ($ENV{'environment.texengine'} eq 'tth') { + return &tth_converted; + } elsif ($ENV{'environment.texengine'} eq 'jsMath') { + return &jsMath_converted; + } elsif ($ENV{'environment.texengine'} eq 'mimetex') { + return &mimetex_converted; + } + return &tth_converted; +} + # ====================================================================== Footer sub footer { @@ -228,6 +282,7 @@ sub algebra { if ($style eq 'display') { $latex='$$'.$latex.'$$x'; } else { + # style is 'inline' $latex='\\ensuremath{'.$latex.'}'; } if ($target eq 'web' || $target eq 'analyze') { @@ -279,7 +334,6 @@ sub postprocess_algebra { # $string =~s/\\lim\\left\((.+?),(.+?),(.+?)\\right\)/\\lim_{$2\\to $3}$1/gs; - &Apache::lonnet::logthis($string); return $string; } 1;