--- loncom/homework/cleanxml/post_xml.pm 2016/11/10 21:53:56 1.11 +++ loncom/homework/cleanxml/post_xml.pm 2017/01/17 20:29:06 1.12 @@ -1,7 +1,7 @@ # The LearningOnline Network # Third step to clean a file. # -# $Id: post_xml.pm,v 1.11 2016/11/10 21:53:56 damieng Exp $ +# $Id: post_xml.pm,v 1.12 2017/01/17 20:29:06 damieng Exp $ # # Copyright Michigan State University Board of Trustees # @@ -430,6 +430,15 @@ sub replace_m { my $var_key1 = 'dfhg3df54hg65hg4'; my $var_key2 = 'dfhg654d6f5g4h5f'; my $eval = defined $m->getAttribute('eval') && $m->getAttribute('eval') eq 'on'; + my $display = $m->getAttribute('display'); + if (defined $display) { + if ($display eq '') { + $display = undef; + } + if (lc($display) eq 'jsmath') { + $display = 'mathjax'; + } + } if ($eval) { # replace variables foreach my $variable (@variables) { @@ -467,6 +476,9 @@ sub replace_m { if ($eval) { $new_node->setAttribute('eval', 'on'); } + if (defined $display) { + $new_node->setAttribute('display', $display); + } $new_node->appendChild($doc->createTextNode($new_text)); $m->parentNode->replaceChild($new_node, $m); next; @@ -497,7 +509,7 @@ sub replace_m { # there are math separators inside, even after hiding variables, or there was no math symbol # hide math parts inside before running tth - my $math_key1 = '#ghjgdh5hg45gf'; + my $math_key1 = '#5752398247516385'; my $math_key2 = '#'; my @maths = (); my @separators = (['$$','$$'], ['\\(','\\)'], ['\\[','\\]'], ['$','$']); @@ -528,14 +540,30 @@ sub replace_m { $math =~ s/&/&/g; $math =~ s//>/g; + my ($mel, $inside); if ($math =~ /^\$\$(.*)\$\$$/s) { - $math = ''.$1.''; + $mel = 'dtm'; + $inside = $1; } elsif ($math =~ /^\\\[(.*)\\\]$/s) { - $math = ''.$1.''; + $mel = 'dtm'; + $inside = $1; } elsif ($math =~ /^\\\((.*)\\\)$/s) { - $math = ''.$1.''; + $mel = 'tm'; + $inside = $1; } elsif ($math =~ /^\$(.*)\$$/s) { - $math = ''.$1.''; + $mel = 'tm'; + $inside = $1; + } + if (defined $inside) { + if ($inside =~ /^\s*$/) { + $math = ''; + } else { + $math = '<'.$mel; + if ($eval && $inside =~ /$var_key1/) { + $math .= ' eval="on"'; + } + $math .= '>'.$inside.''; + } } my $replace = $math_key1.($i+1).$math_key2; $html_text =~ s/$replace/$math/;