Diff for /loncom/xml/lontexconvert.pm between versions 1.109 and 1.112.2.1

version 1.109, 2011/12/06 16:10:53 version 1.112.2.1, 2012/05/10 19:19:30
Line 50  use LONCAPA; Line 50  use LONCAPA;
 use URI::Escape;  use URI::Escape;
 use IO::Socket::INET;  use IO::Socket::INET;
   
   
   #
   # Table of substitutions to unicode characters.
   #
   my %unicode_translations = (
       '\rightleftharpoons'  => 0x21cc,
   
   # Brackets - unicode is commented out with pure 8-bit ascii ugliness while we need it.
   
   #    ''             => 0x23a1,
   #    ''             => 0x23a2,
   #    ''             => 0x23a3,   # when unicode catches up with browsers
   #    ''             => 0x23a4,   # use these instead of the cheesey brackets below
   #    ''             => 0x23a5,
   #    ''             => 0x23a6   
       ''              => 0x5b,
       ''              => 0x5b,    # '['
       ''              => 0x5b,
       ''              => 0x5d,    # ']'
       ''              => 0x5d,
       ''              => 0x5d,
   
   #  Parens..again the unicode is commented out with the 8-bit ascii ugliness
   #  turned on until browsers catch up with the unicode world.
   
   #    ''              => 0x239b,
   #    ''              => 0x239c,
   #    ''              => 0x239d,
   #    ''              => 0x239e,
   #    ''              => 0x239f,
   #    ''              => 0x23a0
   
       ''              => 0x28,
       ''              => 0x28,      # '('
       ''              => 0x28,
   
       ''              => 0x29,
       ''              => 0x29,      # '('
       ''              => 0x29
   
   
   );
   
   ##
   # Utility to convert elements of a string to unicode:
   #
   # @param input - Input string
   # @param pattern - Pattern to convert
   # @param unicode - Unicode to substitute for pattern.
   #
   # @return string - resulting string.
   # 
   sub unicode_subst {
       my ($input, $pattern, $unicode) = @_;
       
       my $char = pack('U', $unicode);
   
       $input =~ s/$pattern/$char/g;
   
       return $input;
   }
   
 # ====================================================================== Header  # ====================================================================== Header
   
 sub init_tth {  sub init_tth {
Line 106  sub convert_real { Line 168  sub convert_real {
     $xmlstring=~s/^\s*\<br clear\=\"all\"/\<br/s;      $xmlstring=~s/^\s*\<br clear\=\"all\"/\<br/s;
     $xmlstring=~s/^\s*//;      $xmlstring=~s/^\s*//;
     $xmlstring=~s/\s*$//;      $xmlstring=~s/\s*$//;
       &Apache::lonxml::end_alarm();
   
     #      #
     # \rightleftharpoons is not converted by tth but maps      #  Several strings produced by tth require
     # reasonably well to &#8660;.  If we get many more of these,      # transliteration -> unicode equivalents to render reliably
     # we're going to need to have a translation sub.      # in browsers. %unicode_translations is a table of
     #      # string->substitution which we now apply:
     my $lrharpoon = pack("U", 0x21cc);  
     $xmlstring=~s/\\rightleftharpoons/$lrharpoon/g;      foreach my $pattern (keys(%unicode_translations)) {
    my $unicode = $unicode_translations{$pattern};
    $xmlstring = &unicode_subst($xmlstring, $pattern, $unicode);
       }
   
   
     &Apache::lonxml::end_alarm();  
     return ($xmlstring,$errorstring);      return ($xmlstring,$errorstring);
 }  }
   
Line 174  sub displaystyle { Line 241  sub displaystyle {
     return 0;      return 0;
 }  }
   
 sub MathJax_converted {  
     my $texstring=shift;  
     my $tag='math/tex;';  
     if (&displaystyle($texstring)) { $tag='math/tex; mode=display'; }  
     &clean_out_math_mode($texstring);  
     return &MathJax_header().  
       '<script type="'.$tag.'">'.$$texstring.'</script>';  
 }  
   
 {  
     #Relies heavily on the previous jsMath installation  
     my @MathJax_sent_header;  
     sub MathJax_reset {  
         undef(@MathJax_sent_header);  
     }  
     sub MathJax_push {  
         push(@MathJax_sent_header,0);  
     }  
     sub MathJax_header {  
         if (!@MathJax_sent_header) {  
             &Apache::lonnet::logthis("mismatched calls of MathJax_header and MathJax_process");  
             return '';  
         }  
         return '' if $MathJax_sent_header[-1];  
         $MathJax_sent_header[-1]=1;  
         return  
           '<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 {  sub jsMath_converted {
     my $texstring=shift;      my $texstring=shift;
     my $tag='span';      my $tag='span';
Line 282  sub init_math_support { Line 308  sub init_math_support {
  ($inherit_jsmath && &jsMath_state(-2))) {   ($inherit_jsmath && &jsMath_state(-2))) {
  return &Apache::lontexconvert::jsMath_header();   return &Apache::lontexconvert::jsMath_header();
     }      }
     &Apache::lontexconvert::MathJax_push();  
     if (lc(&tex_engine()) eq 'mathjax') { # ||  
         #($inherit_jsmath && &jsMath_state(-2))) {  
         return &Apache::lontexconvert::MathJax_header();  
     }  
     return;      return;
 }  }
   
Line 347  sub converted { Line 368  sub converted {
  return &tth_converted($string);   return &tth_converted($string);
     } elsif ($mode =~ /jsmath/i) {      } elsif ($mode =~ /jsmath/i) {
  return &jsMath_converted($string);   return &jsMath_converted($string);
     } elsif ($mode =~ /mathjax/i) {  
  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 557  Header Line 576  Header
   
 =item jsMath_converted()  =item jsMath_converted()
   
 =item MathJax_converted()  
  - Mimics the jsMath functionality  
   
 =item tex_engine()  =item tex_engine()
   
   

Removed from v.1.109  
changed lines
  Added in v.1.112.2.1


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