Diff for /loncom/xml/lontexconvert.pm between versions 1.72 and 1.81

version 1.72, 2006/04/11 18:42:43 version 1.81, 2006/11/09 21:31:54
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::lonmsg();  #use Apache::lonxml();
 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);
  }   }
     }      }
 }  }
Line 170  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;   if (!@jsMath_sent_header) {
  $jsMath_sent_header=1;      &Apache::lonnet::logthis("mismatched calls of jsMath_header and jsMath_process");
       return '';
    }
    return '' if $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 type="text/javascript" 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 '<script type="text/javascript">jsMath.Process()</script>';   return '' if !$state;
    return "\n".
       '<script type="text/javascript">jsMath.Process()</script>'."\n";
     }      }
 }  }
   
 sub init_math_support {  sub init_math_support {
     &Apache::lontexconvert::jsMath_reset();      &init_tth();
       &Apache::lontexconvert::jsMath_push();
     if ($env{'environment.texengine'} eq 'jsMath' ||      if ($env{'environment.texengine'} eq 'jsMath' ||
  $env{'form.texengine'}        eq 'jsMath' ) {   $env{'form.texengine'}        eq 'jsMath' ) {
  return &Apache::lontexconvert::jsMath_header();   return &Apache::lontexconvert::jsMath_header();
Line 207  sub mimetex_converted { Line 224  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 255  sub smiley { Line 272  sub smiley {
  '\:\-(X|\#)' => 'lipsrsealed',   '\:\-(X|\#)' => 'lipsrsealed',
  '\:\-S' => 'huh');   '\:\-S' => 'huh');
     my $iconpath=$Apache::lonnet::perlvar{'lonIconsURL'};      my $iconpath=$Apache::lonnet::perlvar{'lonIconsURL'};
     foreach (keys %smileys) {      foreach my $smiley (keys(%smileys)) {
  $expression=~s/$_/\<img src="$iconpath\/$smileys{$_}.gif" \/\>/gs;    $expression=~s/$smiley/\<img src="$iconpath\/$smileys{$smiley}.gif" \/\>/gs; 
     }      }
     return $expression;      return $expression;
 }  }
Line 267  sub msgtexconverted { Line 284  sub msgtexconverted {
     &init_tth();      &init_tth();
     my $outmessage='';      my $outmessage='';
     my $tex=0;      my $tex=0;
     foreach (split(/(?:\&lt\;|\<)\/*m\s*(?:\&gt\;|\>)/i,$message)) {      foreach my $fragment (split(/(?:\&lt\;|\<)\/*m\s*(?:\&gt\;|\>)/i,$message)) {
  if ($tex) {   if ($tex) {
     if ($email) {      if ($email) {
  $outmessage.='</pre><tt>'.&to_convert($_).'</tt><pre>'; $tex=0;   $outmessage.='</pre><tt>'.&to_convert($fragment).'</tt><pre>';
    $tex=0;
     } else {      } else {
  $outmessage.=&to_convert($_); $tex=0;   $outmessage.=&to_convert($fragment);
    $tex=0;
     }      }
  } else {   } else {
             $outmessage.=&smiley($_); $tex=1;              $outmessage.=&smiley($fragment);
       $tex=1;
  }   }
     }      }
     $message=$outmessage; $outmessage=''; $tex=0;      $message=$outmessage; $outmessage=''; $tex=0;
     foreach (split(/(?:\&lt\;|\<)\/*algebra\s*(?:\&gt\;|\>)/i,$message)) {      foreach my $fragment (split(/(?:\&lt\;|\<)\/*algebra\s*(?:\&gt\;|\>)/i,
    $message)) {
  if ($tex) {   if ($tex) {
     if ($email) {      if ($email) {
  $outmessage.='</pre><tt>'.&algebra($_,'web').'</tt><pre>'; $tex=0;   $outmessage.='</pre><tt>'.&algebra($fragment,'web').'</tt><pre>';
    $tex=0;
     } else {      } else {
  $outmessage.=&algebra($_,'web'); $tex=0;   $outmessage.=&algebra($fragment,'web');
    $tex=0;
     }      }
  } else {   } else {
             $outmessage.=$_; $tex=1;              $outmessage.=$fragment;
       $tex=1;
  }   }
     }      }
     if (wantarray) {      if (wantarray) {
Line 341  sub postprocess_algebra { Line 365  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.72  
changed lines
  Added in v.1.81


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