version 1.112.2.3, 2013/09/22 02:04:31
|
version 1.115, 2014/06/18 06:45:36
|
Line 54 use IO::Socket::INET;
|
Line 54 use IO::Socket::INET;
|
# |
# |
# Table of substitutions to unicode characters. |
# Table of substitutions to unicode characters. |
# |
# |
|
|
|
my %unicode_harpoons = ( |
|
'\rightleftharpoons' => 0x21cc, |
|
); |
|
|
my %unicode_translations = ( |
my %unicode_translations = ( |
'\rightleftharpoons' => 0x21cc, |
|
|
|
# Brackets - unicode is commented out with pure 8-bit ascii ugliness while we need it. |
# Brackets - unicode for browsers/OS which support it. |
|
|
|
'' => 0x23a1, |
|
'' => 0x23a2, |
|
'' => 0x23a3, |
|
'' => 0x23a4, |
|
'' => 0x23a5, |
|
'' => 0x23a6, |
|
|
|
# Parens - unicode for browsers/OS which support it |
|
|
|
'' => 0x239b, |
|
'' => 0x239c, |
|
'' => 0x239d, |
|
'' => 0x239e, |
|
'' => 0x239f, |
|
'' => 0x23a0, |
|
|
|
); |
|
|
|
my %ascii_8bit_translations = ( |
|
|
|
# Brackets - pure 8-bit ascii ugliness for browsers/OS which can't handle unicode |
|
|
# '' => 0x23a1, |
|
# '' => 0x23a2, |
|
# '' => 0x23a3, # when unicode catches up with browsers |
|
# '' => 0x23a4, # use these instead of the cheesey brackets below |
|
# '' => 0x23a5, |
|
# '' => 0x23a6 |
|
'' => 0x5b, |
'' => 0x5b, |
'' => 0x5b, # '[' |
'' => 0x5b, # '[' |
'' => 0x5b, |
'' => 0x5b, |
Line 72 my %unicode_translations = (
|
Line 92 my %unicode_translations = (
|
'' => 0x5d, |
'' => 0x5d, |
'' => 0x5d, |
'' => 0x5d, |
|
|
# Parens..again the unicode is commented out with the 8-bit ascii ugliness |
# Parens - pure 8-bit ascii ugliness for browsers/OS which can't handle unicode |
# turned on until browsers catch up with the unicode world. |
|
|
|
# '' => 0x239b, |
|
# '' => 0x239c, |
|
# '' => 0x239d, |
|
# '' => 0x239e, |
|
# '' => 0x239f, |
|
# '' => 0x23a0 |
|
|
|
'' => 0x28, |
'' => 0x28, |
'' => 0x28, # '(' |
'' => 0x28, # '(' |
'' => 0x28, |
'' => 0x28, |
|
|
'' => 0x29, |
'' => 0x29, |
'' => 0x29, # '(' |
'' => 0x29, # '(' |
'' => 0x29 |
'' => 0x29, |
|
|
|
|
); |
); |
|
|
Line 173 sub convert_real {
|
Line 183 sub convert_real {
|
# |
# |
# 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 is a table of |
# in browsers. %unicode_translations and %unicode_harpoons are tables of |
# string->substitution which we now apply: |
# string->substitution which we now apply. (%ascii_8bit_translations used |
|
# instead for Windows XP and mobile devices. |
|
|
|
my $use_ascii; |
|
if ($env{'browser.os'} eq 'win') { |
|
if (($env{'browser.osversion'}) && ($env{'browser.osversion'} < 6.0)) { |
|
$use_ascii = 1; |
|
} |
|
} |
|
if ($env{'browser.mobile'}) { |
|
$use_ascii = 1; |
|
} |
|
|
foreach my $pattern (keys(%unicode_translations)) { |
foreach my $pattern (keys(%unicode_translations)) { |
my $unicode = $unicode_translations{$pattern}; |
my $unicode = $unicode_translations{$pattern}; |
|
if ($use_ascii) { |
|
$unicode = $ascii_8bit_translations{$pattern}; |
|
} |
$xmlstring = &unicode_subst($xmlstring, $pattern, $unicode); |
$xmlstring = &unicode_subst($xmlstring, $pattern, $unicode); |
} |
} |
|
|
|
foreach my $pattern (keys(%unicode_harpoons)) { |
|
$xmlstring = &unicode_subst($xmlstring, $pattern, $unicode_harpoons{$pattern}); |
|
} |
|
|
return ($xmlstring,$errorstring); |
return ($xmlstring,$errorstring); |
} |
} |
Line 269 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 { |
sub jsMath_converted { |
my $texstring=shift; |
my $texstring=shift; |
my $tag='span'; |
my $tag='span'; |
Line 404 sub converted {
|
Line 442 sub converted {
|
} elsif ($mode =~ /jsmath/i) { |
} elsif ($mode =~ /jsmath/i) { |
return &jsMath_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 569 sub postprocess_algebra {
|
Line 607 sub postprocess_algebra {
|
$string =~s/\\lim\\left\((.+?),(.+?),(.+?)\\right\)/\\lim_{$2\\to $3}$1/gs; |
$string =~s/\\lim\\left\((.+?),(.+?),(.+?)\\right\)/\\lim_{$2\\to $3}$1/gs; |
return $string; |
return $string; |
} |
} |
|
|
|
|
1; |
1; |
__END__ |
__END__ |
|
|
Line 614 Header
|
Line 654 Header
|
=item jsMath_converted() |
=item jsMath_converted() |
|
|
=item MathJax_converted() |
=item MathJax_converted() |
- Mimics the jsMath functionality |
- Mimics the jsMath functionality |
|
|
=item tex_engine() |
=item tex_engine() |
|
|