--- loncom/xml/londefdef.pm 2023/10/06 17:48:55 1.456.2.6.2.2 +++ loncom/xml/londefdef.pm 2017/01/27 19:58:21 1.464 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Tags Default Definition Module # -# $Id: londefdef.pm,v 1.456.2.6.2.2 2023/10/06 17:48:55 raeburn Exp $ +# $Id: londefdef.pm,v 1.464 2017/01/27 19:58:21 damieng Exp $ # # # Copyright Michigan State University Board of Trustees @@ -98,19 +98,7 @@ sub start_m { # 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>')); - } + &Apache::lonxml::warning(&mt("Missing \$ in <m>.")); } my $eval=&Apache::lonxml::get_param('eval',$parstack,$safeeval); if ($eval eq 'on') { @@ -367,7 +355,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('height',$parstack,$safeeval,undef,1); + my $howmuch = &Apache::lonxml::get_param('heigth',$parstack,$safeeval,undef,1); $currentstring .= '\vskip '.$howmuch.' '; } return $currentstring; @@ -4060,13 +4057,33 @@ sub end_spacer { return $currentstring; } +my @span_end_stack; # for span tex target + #-- tag (end tag required) sub start_span { - my ($target,$token) = @_; + my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; my $currentstring = ''; if ($target eq 'web' || $target eq 'webgrade') { $currentstring = $token->[4]; - } + } elsif ($target eq 'tex') { + my $endstring = ''; + my $family = &get_css_property('font-family',$parstack,$safeeval); + if ($family eq 'monospace') { + $currentstring .= '\texttt{'; + $endstring .= '}'; + } + my $weight = &get_css_property('font-weight',$parstack,$safeeval); + if ($weight eq 'bold') { + $currentstring .= '\textbf{'; + $endstring .= '}'; + } + my $style = &get_css_property('font-style',$parstack,$safeeval); + if ($style eq 'italic') { + $currentstring .= '\textit{'; + $endstring .= '}'; + } + push(@span_end_stack, $endstring); + } return $currentstring; } @@ -4075,7 +4092,10 @@ sub end_span { my $currentstring = ''; if ($target eq 'web' || $target eq 'webgrade') { $currentstring = $token->[2]; - } + } elsif ($target eq 'tex') { + my $endstring = pop @span_end_stack; + $currentstring .= $endstring; + } return $currentstring; } @@ -4281,10 +4301,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; @@ -4673,6 +4693,23 @@ sub clean_docs_httpref { return $cleanhref; } +# This is retrieving a CSS property from the style attribute of the current element. +# It is not checking