--- loncom/xml/londefdef.pm 2016/08/13 20:01:52 1.456.2.2 +++ loncom/xml/londefdef.pm 2024/02/28 18:15:50 1.456.2.6.2.4 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Tags Default Definition Module # -# $Id: londefdef.pm,v 1.456.2.2 2016/08/13 20:01:52 raeburn Exp $ +# $Id: londefdef.pm,v 1.456.2.6.2.4 2024/02/28 18:15:50 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=''; @@ -592,6 +612,9 @@ sub start_body { if ($env{'request.use_absolute'}) { $args->{'use_absolute'} = $env{'request.use_absolute'}; } + if ($env{'form.only_body'}) { + $args->{'only_body'} = 1; + } } $currentstring = &Apache::loncommon::start_page($Apache::londefdef::title, @@ -626,9 +649,9 @@ sub start_body { sub edit_controls { my ($nochgview) = @_; - my $result .= ' + my $result = &Apache::lonxml::seteditor_javascript().' <form method="post" action=""> -<div class="LC_edit_problem_header">'; +<div class="LC_edit_problem_header">'."\n"; unless ($nochgview) { $result .= ' <div class="LC_edit_problem_header_row1">'. @@ -637,7 +660,21 @@ sub edit_controls { </div>'; } $result .= ' -<div><input type="submit" name="editmode" accesskey="e" value="'.&mt('Edit').'" />'; +<div> +<input type="hidden" name="editmode" value="" /> +<input type="button" name="editordefault" accesskey="e" value="'.&mt('Edit'). +'" onclick="seteditmode(this.form,'."'edit'".');" />'."\n"; + if ($env{'browser.type'} ne 'explorer' || $env{'browser.version'} > 9) { + my $uri = $env{'request.uri'}; + if ($uri =~ /\.(xml|html|htm|xhtml|xhtm)$/) { + my %editors = &Apache::loncommon::permitted_editors(); + if ($editors{'daxe'}) { + my $daxeurl = '/daxepage'.$uri; + $result .= '<input type="button" name="editordaxe" value="'.&mt('Edit with Daxe'). + '" onclick="seteditmode(this.form,'."'daxe'".');" />'."\n"; + } + } + } if (($env{'request.course.id'}) && ($env{'form.forceedit'})) { my $url=&Apache::lonnet::hreflocation('',$env{'request.filename'}); if ($url =~ /\.html?$/i) { @@ -812,7 +849,7 @@ sub end_h1 { $currentstring .= $token->[2]; } elsif ($target eq 'tex') { my $post='\vskip 0 mm '; - my $align=&Apache::lonxml::get_param('align',$parstack,$safeeval,undef,1); + my $align=lc(&Apache::lonxml::get_param('align',$parstack,$safeeval,undef,1)); if ($align eq 'center') { $post='\end{center}'; } elsif ($align eq 'left') { @@ -3247,12 +3284,12 @@ sub end_externallink { return $currentstring; } -#-- <blankspace heigth=""> +#-- <blankspace height=""> sub start_blankspace { my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; my $currentstring = &end_p(); # closes off any unclosed <p> 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; @@ -4258,10 +4295,10 @@ sub resize_image { $height_param=$TeXwidth/$old_width_param*$height_param; } } elsif ($TeXheight) { - $height_param = $TeXheight; if ($height_param) { $width_param = $TeXheight/$height_param*$width_param; } + $height_param = $TeXheight; } elsif ($width) { my $old_width_param=$width_param; $width_param = $width*$scaling;