Diff for /loncom/xml/lontexconvert.pm between versions 1.112.2.8 and 1.114

version 1.112.2.8, 2019/02/15 17:52:54 version 1.114, 2014/06/18 06:06:47
Line 65  my %unicode_translations = ( Line 65  my %unicode_translations = (
   
     ''             => 0x23a1,      ''             => 0x23a1,
     ''             => 0x23a2,      ''             => 0x23a2,
     ''             => 0x23a3,      ''             => 0x23a3,   # when unicode catches up with browsers
     ''             => 0x23a4,      ''             => 0x23a4,   # use these instead of the cheesey brackets below
     ''             => 0x23a5,      ''             => 0x23a5,
     ''             => 0x23a6,      ''             => 0x23a6, 
   
 #  Parens - unicode for browsers/OS which support it  #  Parens - unicode for browsers/OS which support it
   
Line 181  sub convert_real { Line 181  sub convert_real {
     &Apache::lonxml::end_alarm();      &Apache::lonxml::end_alarm();
   
     #      #
     # Several strings produced by tth require      #  Several strings produced by tth require
     # transliteration -> unicode equivalents to render reliably      # transliteration -> unicode equivalents to render reliably
     # in browsers. %unicode_translations and %unicode_harpoons are tables of      # in browsers. %unicode_translations and %unicode_harpoons are tables of
     # string->substitution which we now apply. (%ascii_8bit_translations used      # string->substitution which we now apply. (%ascii_8bit_translations used 
     # instead for Windows XP and mobile devices.      # instead for Windows XP and mobile devices.
   
     my $use_ascii;      my $use_ascii;
Line 270  sub displaystyle { Line 270  sub displaystyle {
   
 sub MathJax_converted {  sub MathJax_converted {
     my $texstring=shift;      my $texstring=shift;
     my ($tag,$startspan,$endspan);      my $tag='math/tex;';
     $tag='math/tex;';      if (&displaystyle($texstring)) { $tag='math/tex; mode=display'; }
     if (&displaystyle($texstring)) {  
         $tag='math/tex; mode=display';  
         $startspan='';  
         $endspan='';  
     } else {  
         $startspan='<span style="display:inline-block;">';  
         $endspan='</span>';  
     }  
     &clean_out_math_mode($texstring);      &clean_out_math_mode($texstring);
     return &MathJax_header().$startspan.      return &MathJax_header().
       '<script type="'.$tag.'">'.$$texstring.'</script>'.$endspan;        '<script type="'.$tag.'">'.$$texstring.'</script>';
 }  }
   
 {  {
Line 304  sub MathJax_converted { Line 296  sub MathJax_converted {
         return          return
           '<script type="text/javascript" src="/adm/MathJax/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>'."\n";            '<script type="text/javascript" src="/adm/MathJax/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>'."\n";
     }      }
       #sub MathJax_process {
       #    my $state = pop(@MathJax_sent_header);
       #    return '' if !$state;
       #    return "\n".
       #        '<script type="text/javascript">MathJax.Process()</script>'."\n";
       #}
       #sub MathJax_state {
       #    my ($level) = @_;
       #    return $MathJax_sent_header[$level];
       #}
   }
   
   
   sub jsMath_converted {
       my $texstring=shift;
       my $tag='span';
       if (&displaystyle($texstring)) { $tag='div'; }
       &clean_out_math_mode($texstring);
       return &jsMath_header().
    '<'.$tag.' class="math">'.$$texstring.'</'.$tag.'>';
   }
   
   {
       my @jsMath_sent_header;
       sub jsMath_reset {
    undef(@jsMath_sent_header);
       }
       sub jsMath_push {
    push(@jsMath_sent_header,0);
       }
       sub jsMath_header {
    if (!@jsMath_sent_header) {
       &Apache::lonnet::logthis("mismatched calls of jsMath_header and jsMath_process");
       return '';
    }
    return '' if $jsMath_sent_header[-1];
    $jsMath_sent_header[-1]=1;
    return
               '<script type="text/javascript">
                        function NoFontMessage () {}
                        jsMath = {Parser: {prototype: {environments: {\'eqnarray*\' :[\'Array\',null,null,\'rcl\',[5/18,5/18],3,\'D\']}}}};
                      </script>'."\n".
       '<script type="text/javascript" src="/adm/jsMath/jsMath.js"></script>'."\n";
       }
       sub jsMath_process {
    my $state = pop(@jsMath_sent_header);
    return '' if !$state;
    return "\n".
       '<script type="text/javascript">jsMath.Process()</script>'."\n";
       }
       sub jsMath_state {
    my ($level) = @_;
    return $jsMath_sent_header[$level];
       }
 }  }
   
 sub tex_engine {  sub tex_engine {
     if (exists($env{'form.texengine'})) {      if (exists($env{'form.texengine'})) {
  if ($env{'form.texengine'} ne '') {   if ($env{'form.texengine'} ne '') {
             if (lc($env{'form.texengine'}) eq 'jsmath') {  
                 return 'MathJax';  
             }  
             return $env{'form.texengine'};              return $env{'form.texengine'};
         }          }
     }          }    
     if ($env{'request.course.id'}      if ($env{'request.course.id'}
  && exists($env{'course.'.$env{'request.course.id'}.'.texengine'})) {   && exists($env{'course.'.$env{'request.course.id'}.'.texengine'})) {
         if (lc($env{'course.'.$env{'request.course.id'}.'.texengine'}) eq 'jsmath') {  
             return 'MathJax';  
         }  
  return $env{'course.'.$env{'request.course.id'}.'.texengine'};   return $env{'course.'.$env{'request.course.id'}.'.texengine'};
     }      }
     if (exists($env{'environment.texengine'})) {      if (exists($env{'environment.texengine'})) {
         if (lc($env{'environment.texengine'}) eq 'jsmath') {  
             return 'MathJax';  
         }  
  return $env{'environment.texengine'};   return $env{'environment.texengine'};
     }      }
     my $dom = $env{'request.role.domain'} || $env{'user.domain'};  
     my %domdefaults = &Apache::lonnet::get_domain_defaults($dom);  
     if ($domdefaults{'texengine'} ne '') {  
         return $domdefaults{'texengine'};  
     }  
     return 'tth';      return 'tth';
 }  }
   
 sub init_math_support {  sub init_math_support {
       my ($inherit_jsmath) = @_;
     &init_tth();      &init_tth();
       &Apache::lontexconvert::jsMath_push();
       if (lc(&tex_engine()) eq 'jsmath' ||
    ($inherit_jsmath && &jsMath_state(-2))) {
    return &Apache::lontexconvert::jsMath_header();
       }
     &Apache::lontexconvert::MathJax_push();      &Apache::lontexconvert::MathJax_push();
     if (lc(&tex_engine()) eq 'mathjax') {      if (lc(&tex_engine()) eq 'mathjax') { # ||
           #($inherit_jsmath && &jsMath_state(-2))) {
         return &Apache::lontexconvert::MathJax_header();          return &Apache::lontexconvert::MathJax_header();
     }      }
     return;      return;
Line 401  sub converted { Line 440  sub converted {
     if ($mode =~ /tth/i) {      if ($mode =~ /tth/i) {
  return &tth_converted($string);   return &tth_converted($string);
     } elsif ($mode =~ /jsmath/i) {      } elsif ($mode =~ /jsmath/i) {
  return &MathJax_converted($string);   return &jsMath_converted($string);
     } elsif ($mode =~ /mathjax/i) {      } elsif ($mode =~ /mathjax/i) {
         return &MathJax_converted($string);   return &MathJax_converted($string);
     } elsif ($mode =~ /mimetex/i) {      } elsif ($mode =~ /mimetex/i) {
  return &mimetex_converted($string);   return &mimetex_converted($string);
     } elsif ($mode =~ /raw/i) {      } elsif ($mode =~ /raw/i) {
Line 550  sub postprocess_algebra { Line 589  sub postprocess_algebra {
     # $string =~s/\\fun/ /g;      # $string =~s/\\fun/ /g;
   
     # 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;
   
     # log(3,4) means the log base 4 of 3      # log(3,4) means the log base 4 of 3
     $string =~s/\\log\\left\((.+?),(.+?)\\right\)/\\log_{$2}\\left($1\\right)/gs;      $string =~s/\\log\\left\((.+?),(.+?)\\right\)/\\log_{$2}\\left($1\\right)/gs;
Line 612  Header Line 651  Header
 =item displaystyle()  =item displaystyle()
   
   
   =item jsMath_converted()
   
 =item MathJax_converted()  =item MathJax_converted()
    - Mimics the jsMath functionality
   
 =item tex_engine()  =item tex_engine()
   
   
 =item init_math_support()  =item init_math_support()
   
 =item mimetex_valign()  =item mimetex_valign()

Removed from v.1.112.2.8  
changed lines
  Added in v.1.114


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