Diff for /loncom/xml/lontexconvert.pm between versions 1.69 and 1.78

version 1.69, 2006/01/27 23:55:15 version 1.78, 2006/09/07 21:51:16
Line 42  package Apache::lontexconvert; Line 42  package Apache::lontexconvert;
 use strict;  use strict;
 use tth();  use tth();
 use vars qw($errorstring);  use vars qw($errorstring);
 use Apache();  #use Apache::lonxml();
 use Apache::lonmsg();  
 use Apache::lonxml();  
 use Apache::lonmenu();  
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::lonnet;  use Apache::lonnet;
   use lib '/home/httpd/lib/perl/';
   use LONCAPA;
    
   
 # ====================================================================== Header  # ====================================================================== Header
   
 sub init_tth {  sub init_tth {
     my $options=$env{'course.'.$env{'request.course.id'}.'.tthoptions'};      my $options=$env{'course.'.$env{'request.course.id'}.'.tthoptions'};
       if ($options =~ /\S/) {
    $options = ' '.$options;
       } else {
    undef($options);
       }
     if ($env{'browser.mathml'}) {      if ($env{'browser.mathml'}) {
  &tth::ttminit();   &tth::ttminit();
  if ($env{'browser.unicode'}) {   if ($env{'browser.unicode'}) {
     &tth::ttmoptions('-L -u1 '.$options);      &tth::ttmoptions('-L -u1'.$options);
  } else {   } else {
     &tth::ttmoptions('-L -u0 '.$options);      &tth::ttmoptions('-L -u0'.$options);
  }   }
     } else {      } else {
  &tth::tthinit();   &tth::tthinit();
  if ($env{'browser.unicode'}) {   if ($env{'browser.unicode'}) {
     &tth::tthoptions('-L -u1 '.$options);      &tth::tthoptions('-L -u1'.$options);
  } else {   } else {
     &tth::tthoptions('-L -u0 '.$options);      &tth::tthoptions('-L -u0'.$options);
  }   }
     }      }
 }  }
   
 sub header {  
     $errorstring='';  
     my $time=time;  
     &init_tth();  
     return &Apache::lonxml::xmlbegin().  
  "\n<head>\n".  
  &Apache::lonxml::fontsettings().  
  &Apache::lonmenu::registerurl(undef,'tex').  
  "\n</head>\n";  
 }  
   
 # ================================================================== Conversion  # ================================================================== Conversion
   
 $Apache::lontexconvert::messedup=0;  $Apache::lontexconvert::messedup=0;
Line 137  ENDCONV Line 131  ENDCONV
  $errorstring) {   $errorstring) {
  &Apache::lonnet::logthis("Trying to kill myself");   &Apache::lonnet::logthis("Trying to kill myself");
  $Apache::lontexconvert::messedup=1;   $Apache::lontexconvert::messedup=1;
  $Apache::lonxml::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;      return $xmlstring;
 }  }
Line 169  sub jsMath_converted { Line 176  sub jsMath_converted {
 }  }
   
 {  {
     my $jsMath_sent_header;      my @jsMath_sent_header;
     sub jsMath_reset {      sub jsMath_reset {
  $jsMath_sent_header=0;   undef(@jsMath_sent_header);
       }
       sub jsMath_push {
    push(@jsMath_sent_header,0);
     }      }
     sub jsMath_header {      sub jsMath_header {
  return '' if $jsMath_sent_header;   return '' if $jsMath_sent_header[-1];
  $jsMath_sent_header=1;   $jsMath_sent_header[-1]=1;
  return   return
             '<script type="text/javascript">              '<script type="text/javascript">
                      function NoFontMessage () {}                       function NoFontMessage () {}
                        jsMath = {Parser: {prototype: {environments: {\'eqnarray*\' :[\'Array\',null,null,\'rcl\',[5/18,5/18],3,\'D\']}}}};
                    </script>'."\n".                     </script>'."\n".
     '<script src="/adm/jsMath/jsMath.js"></script>'."\n";      '<script type="text/javascript" src="/adm/jsMath/jsMath.js"></script>'."\n";
     }      }
     sub jsMath_process {      sub jsMath_process {
  return '' if !$jsMath_sent_header;   my $state = pop(@jsMath_sent_header);
    return '' if !$state;
  return '<script type="text/javascript">jsMath.Process()</script>';   return '<script type="text/javascript">jsMath.Process()</script>';
     }      }
 }  }
   
   sub init_math_support {
       &init_tth();
       &Apache::lontexconvert::jsMath_push();
       if ($env{'environment.texengine'} eq 'jsMath' ||
    $env{'form.texengine'}        eq 'jsMath' ) {
    return &Apache::lontexconvert::jsMath_header();
       }
       return;
   }
   
 sub mimetex_converted {  sub mimetex_converted {
     my $texstring=shift;      my $texstring=shift;
     my $displaystyle=&displaystyle($texstring);      my $displaystyle=&displaystyle($texstring);
Line 197  sub mimetex_converted { Line 219  sub mimetex_converted {
     if ($displaystyle) {      if ($displaystyle) {
  $$texstring='\\displaystyle \\Large '.$$texstring;   $$texstring='\\displaystyle \\Large '.$$texstring;
     }      }
     my $result='<img src="/cgi-bin/mimetex.cgi?'.&Apache::lonnet::escape($$texstring).'" />';      my $result='<img src="/cgi-bin/mimetex.cgi?'.&escape($$texstring).'" />';
     if ($displaystyle) {      if ($displaystyle) {
  $result='<center>'.$result.'</center>';   $result='<center>'.$result.'</center>';
     }      }
Line 217  sub converted { Line 239  sub converted {
     return &tth_converted($string);      return &tth_converted($string);
 }  }
   
 # ====================================================================== Footer  
   
 sub footer {  
   my $xmlstring='';  
   if ($env{'request.state'} eq 'construct') {  
       $xmlstring.='<address>'.$errorstring.'</address>';  
   } else {  
       &Apache::lonmsg::author_res_msg($env{'request.filename'},$errorstring);  
   }  
 # -------------------------------------------------------------------- End Body  
   $xmlstring.=&Apache::lonxml::xmlend();  
   return $xmlstring;  
 }  
   
 # ------------------------------------------------------------ Message display  # ------------------------------------------------------------ Message display
   
 sub to_convert {  sub to_convert {
Line 345  sub postprocess_algebra { Line 353  sub postprocess_algebra {
     # moodle had these and I don't know why, ignoring them for now      # moodle had these and I don't know why, ignoring them for now
     # $string =~s/\\fun/ /g;      # $string =~s/\\fun/ /g;
   
     # remove the extra () in the denominator of a \frac  
     $string =~s/\\frac{(.+?)}{\\left\((.+?)\\right\)}/\\frac{$1}{$2}/gs;  
       
     # sqrt(3,4) means the 4 root of 3      # sqrt(3,4) means the 4 root of 3
     $string =~s/\\sqrt{([^,]+),([^\}]+)}/\\sqrt[$2]{$1}/gs;      $string =~s/\\sqrt{([^,]+),([^\}]+)}/\\sqrt[$2]{$1}/gs;
   

Removed from v.1.69  
changed lines
  Added in v.1.78


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>