--- loncom/xml/londefdef.pm 2013/06/04 22:20:20 1.444 +++ loncom/xml/londefdef.pm 2023/07/10 02:23:29 1.456.2.6.2.1 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Tags Default Definition Module # -# $Id: londefdef.pm,v 1.444 2013/06/04 22:20:20 raeburn Exp $ +# $Id: londefdef.pm,v 1.456.2.6.2.1 2023/07/10 02:23:29 raeburn Exp $ # # # Copyright Michigan State University Board of Trustees @@ -92,6 +92,26 @@ sub start_m { my $inside = &Apache::lonxml::get_all_text_unbalanced("/m",$parser); if ($target eq 'web' || $target eq 'analyze') { &Apache::lonxml::debug("M is starting with:$inside:"); + if (!($inside =~ /^\s*\$.*\$\s*$/ || $inside =~ /^\s*\\[([].*\\[)\]]\s*$/)) { + # Non-math LaTeX will not be rendered correctly with MathJax + # and it should be avoided anyway. + # On top of that, MathJax will render math without $, but + # it will fail with tth. This is worth a warning. + # (even though some people might just use latex for printing) + &Apache::lonxml::warning(&mt('Missing $ in [_1].','<m>')); + } elsif (($env{'browser.type'} eq 'safari') && ($env{'form.editxmltext'}) && + (($env{'form.problemmode'} eq 'view') || ($env{'form.problemmode'} eq 'discard'))) { + my $delimiter; + if ($inside =~ /\$$/) { + $delimiter = '$'; + } elsif ($inside =~ /\\([)\]])$/) { + $delimiter = $1; + } + if ($delimiter) { + &Apache::lonxml::warning(&mt('Insert a space between [_1] and [_2].', + $delimiter,'</m>')); + } + } my $eval=&Apache::lonxml::get_param('eval',$parstack,$safeeval); if ($eval eq 'on') { $inside=&Apache::run::evaluate($inside,$safeeval,$$parstack[-1]); @@ -347,7 +367,7 @@ sub start_title { $Apache::londefdef::title = &Apache::lonxml::get_all_text('/title',$parser,$style); } elsif ($target eq 'tex') { - $currentstring .= '\keephidden{Title of the document: ' + $currentstring .= '\keephidden{Title of the document: '; } if ($target eq 'meta') { $currentstring='
if ($target eq 'tex') { - my $howmuch = &Apache::lonxml::get_param('heigth',$parstack,$safeeval,undef,1); + my $howmuch = &Apache::lonxml::get_param('height',$parstack,$safeeval,undef,1); $currentstring .= '\vskip '.$howmuch.' '; } return $currentstring; @@ -3429,7 +3470,7 @@ sub start_caption { my $currentstring = ''; if ($target eq 'web' || $target eq 'webgrade') { $currentstring = $token->[4]; - } + } return $currentstring; } @@ -3437,7 +3478,7 @@ sub end_caption { my ($target,$token) = @_; my $currentstring = ''; if ($target eq 'web' || $target eq 'webgrade') { - $currentstring = $token->[2]; + $currentstring = $token->[2]; } return $currentstring; } @@ -3570,8 +3611,68 @@ sub start_iframe { my ($target,$token) = @_; my $currentstring = ''; if ($target eq 'web' || $target eq 'webgrade') { - $currentstring = $token->[4]; - } + my ($src,$url,$query); + if ($token->[2]->{'src'}) { + $src = $token->[2]->{'src'}; + } elsif ($token->[2]->{'SRC'}) { + $src = $token->[2]->{'SRC'}; + } + if ($src) { + ($url,$query) = ($src =~ /^([^?]+)\??([^?]*)$/); + if ($query =~ /inhibitmenu=yes/) { + $currentstring = $token->[4]; + } else { + my $inhibit; + if ($url =~ m{^[^/.].*\.x?html?$}) { + $inhibit = 1; + } elsif ($url =~ m{^/(uploaded|res)/.*\.x?html?$}) { + $inhibit = 1; + } + if ($inhibit) { + $currentstring = '