--- loncom/xml/lontexconvert.pm 2005/04/07 06:56:27 1.65 +++ loncom/xml/lontexconvert.pm 2006/03/27 20:40:42 1.71 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # TeX Conversion Module # -# $Id: lontexconvert.pm,v 1.65 2005/04/07 06:56:27 albertel Exp $ +# $Id: lontexconvert.pm,v 1.71 2006/03/27 20:40:42 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -70,17 +70,6 @@ sub init_tth { } } -sub header { - $errorstring=''; - my $time=time; - &init_tth(); - return &Apache::lonxml::xmlbegin(). - "\n\n". - &Apache::lonxml::fontsettings(). - &Apache::lonmenu::registerurl(undef,'tex'). - "\n\n"; -} - # ================================================================== Conversion $Apache::lontexconvert::messedup=0; @@ -137,8 +126,20 @@ ENDCONV $errorstring) { &Apache::lonnet::logthis("Trying to kill myself"); $Apache::lontexconvert::messedup=1; - my $request=Apache->request(); - $request->child_terminate(); + if (ref($Apache::lonxml::request)) { + $Apache::lonxml::request->child_terminate(); + } else { + my $request; + eval { $request=Apache->request; }; + if (!$request) { + eval { $request=Apache2::RequestUtil->request; }; + } + if ($request) { + $request->child_terminate(); + } else { + &Apache::lonnet::logthis("Unable to find a request to do child_terminate on"); + } + } } return $xmlstring; } @@ -165,7 +166,28 @@ sub jsMath_converted { my $tag='span'; if (&displaystyle($texstring)) { $tag='div'; } &clean_out_math_mode($texstring); - return '<'.$tag.' class="math">'.$$texstring.''; + return &jsMath_header(). + '<'.$tag.' class="math">'.$$texstring.''; +} + +{ + my $jsMath_sent_header; + sub jsMath_reset { + $jsMath_sent_header=0; + } + sub jsMath_header { + return '' if $jsMath_sent_header; + $jsMath_sent_header=1; + return + ''."\n". + ''."\n"; + } + sub jsMath_process { + return '' if !$jsMath_sent_header; + return ''; + } } sub mimetex_converted { @@ -185,28 +207,16 @@ sub mimetex_converted { } 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 { - my $xmlstring=''; - if ($env{'request.state'} eq 'construct') { - $xmlstring.='
'.$errorstring.'
'; - } else { - &Apache::lonmsg::author_res_msg($env{'request.filename'},$errorstring); - } -# -------------------------------------------------------------------- End Body - $xmlstring.=&Apache::lonxml::xmlend(); - return $xmlstring; + my ($string,$mode)=@_; + if ($mode eq '') { $mode=$env{'environment.texengine'}; } + if ($mode =~ /tth/i) { + return &tth_converted($string); + } elsif ($mode =~ /jsmath/i) { + return &jsMath_converted($string); + } elsif ($mode =~ /mimetex/i) { + return &mimetex_converted($string); + } + return &tth_converted($string); } # ------------------------------------------------------------ Message display @@ -323,10 +333,6 @@ sub postprocess_algebra { # moodle had these and I don't know why, ignoring them for now # $string =~s/\\fun/ /g; - # sqrt(3,4) -> \sqrt\let{3,4\right}, which is annoying - $string =~s/\\left\{/\{/g; - $string =~s/\\right\}/\}/g; - # remove the extra () in the denominator of a \frac $string =~s/\\frac{(.+?)}{\\left\((.+?)\\right\)}/\\frac{$1}{$2}/gs;