version 1.110, 2012/02/28 10:38:14
|
version 1.116, 2014/06/18 06:48:03
|
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 for browsers/OS which support it. |
|
|
'' => 0x23a1, |
'' => 0x23a1, |
'' => 0x23a2, |
'' => 0x23a2, |
'' => 0x23a3, |
'' => 0x23a3, |
'' => 0x23a4, |
'' => 0x23a4, |
'' => 0x23a5, |
'' => 0x23a5, |
'' => 0x23a6 |
'' => 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 |
|
|
|
'' => 0x5b, |
|
'' => 0x5b, # '[' |
|
'' => 0x5b, |
|
'' => 0x5d, # ']' |
|
'' => 0x5d, |
|
'' => 0x5d, |
|
|
|
# Parens - pure 8-bit ascii ugliness for browsers/OS which can't handle unicode |
|
|
|
'' => 0x28, |
|
'' => 0x28, # '(' |
|
'' => 0x28, |
|
'' => 0x29, |
|
'' => 0x29, # '(' |
|
'' => 0x29, |
|
|
); |
); |
|
|
## |
## |
Line 126 sub convert_real {
|
Line 165 sub convert_real {
|
}; |
}; |
&Apache::lonxml::start_alarm(); |
&Apache::lonxml::start_alarm(); |
if ($env{'browser.mathml'}) { |
if ($env{'browser.mathml'}) { |
&Apache::lonnet::logthis("mathml"); |
|
$xmlstring=&tth::ttm($$texstring); |
$xmlstring=&tth::ttm($$texstring); |
$xmlstring=~s/\<math\>/\<math xmlns=\"\&mathns\;\"\>/g; |
$xmlstring=~s/\<math\>/\<math xmlns=\"\&mathns\;\"\>/g; |
$xmlstring=~s/\<br\>/\<br\/\>/g; |
$xmlstring=~s/\<br\>/\<br\/\>/g; |
$xmlstring=~s/\<p\>/\<p\>\<\/p\>/g; |
$xmlstring=~s/\<p\>/\<p\>\<\/p\>/g; |
$errorstring.=&tth::ttmerror(); |
$errorstring.=&tth::ttmerror(); |
} else { |
} else { |
&Apache::lonnet::logthis("tth"); |
|
$xmlstring=&tth::tth($$texstring); |
$xmlstring=&tth::tth($$texstring); |
$errorstring.=&tth::ttherror(); |
$errorstring.=&tth::ttherror(); |
$xmlstring=~s-</font(\s*)>-</font>-g; |
$xmlstring=~s-</font(\s*)>-</font>-g; |
Line 144 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 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 468 sub msgtexconverted {
|
Line 522 sub msgtexconverted {
|
foreach my $fragment (split(/(?:\<\;|\<)\/*algebra\s*(?:\>\;|\>)/i, |
foreach my $fragment (split(/(?:\<\;|\<)\/*algebra\s*(?:\>\;|\>)/i, |
$message)) { |
$message)) { |
if ($tex) { |
if ($tex) { |
my $algebra = &algebra($fragment, 'web', undef, undef, undef, undef, 'tth'); |
my $algebra = &algebra($fragment, 'web', undef, undef, undef, 'tth'); |
if ($email) { |
if ($email) { |
$outmessage.='</pre><tt>'.$algebra.'</tt><pre>'; |
$outmessage.='</pre><tt>'.$algebra.'</tt><pre>'; |
$tex=0; |
$tex=0; |
Line 553 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__ |
|
|