--- loncom/xml/londefdef.pm 2006/01/04 23:14:24 1.310 +++ loncom/xml/londefdef.pm 2006/01/27 22:30:23 1.316 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Tags Default Definition Module # -# $Id: londefdef.pm,v 1.310 2006/01/04 23:14:24 albertel Exp $ +# $Id: londefdef.pm,v 1.316 2006/01/27 22:30:23 foxr Exp $ # # # Copyright Michigan State University Board of Trustees @@ -619,9 +619,6 @@ sub end_center { $currentstring = $token->[2]; } elsif ($target eq 'tex') { $currentstring = '\end{center}'; - if (&is_inside_of($tagstack, "table")) { - $currentstring .= ¢er_correction(); - } } return $currentstring; } @@ -1187,6 +1184,7 @@ sub start_p { $closing_string = '
'; # Deal correctly with e.g. } } elsif ($target eq 'tex' && !$para_disabled) { + $currentstring .= &end_p(); # close off prior para if in progress. my $align=&Apache::lonxml::get_param('align',$parstack,$safeeval,undef,1); if ($align eq 'center') { @@ -1194,7 +1192,6 @@ sub start_p { $closing_string = '\end{center}'; if (&is_inside_of($tagstack, "table")) { $currentstring = ¢er_correction().$currentstring; - $closing_string .= ¢er_correction(); } } elsif ($align eq 'right') { $currentstring.='\makebox['.$env{'form.textwidth'}.']{\hfill\llap{'; @@ -1204,7 +1201,11 @@ sub start_p { $closing_string = '}\hfill}'; } else { $currentstring.='\par '; - $closing_string = '\strut\\\\\strut '; + if (&is_inside_of($tagstack, 'table')) { + $closing_string = '\vskip 0pt'; # Seems to be consistent within tables. + } else { + $closing_string = '\strut\\\\\strut '; + } } } @@ -1539,7 +1540,6 @@ sub start_div { $endstring = '\end{center}'; if (&is_inside_of($tagstack, "table")) { $currentstring = ¢er_correction().$currentstring; - $endstring .= ¢er_correction(); } } elsif ($align eq 'right') { @@ -1961,11 +1961,16 @@ sub start_table { # width either comes forced from the TeXwidth or the width parameters. # in either case it can be a percentage or absolute width. - + # in the width case we ignore absolute width my $TeXwidth = &Apache::lonxml::get_param('TeXwidth',$parstack,$safeeval,undef,0); if (!defined($TeXwidth)) { - $TeXwidth = &Apache::lonxml::get_param('width',$parstack,$safeeval,undef,1); - if (!defined($TeXwidth)) { $TeXwidth = $textwidth; } + my $htmlwidth = &Apache::lonxml::get_param('width',$parstack, + $safeeval,undef,1); + if ($htmlwidth =~ /%/) { + $TeXwidth = $htmlwidth; + } else { + $TeXwidth = $textwidth; + } } else { $Apache::londefdef::table[-1]{'forcedtablewidth'} = 1; } @@ -1975,7 +1980,12 @@ sub start_table { $Apache::londefdef::table[-1]{'width'}=$1*$textwidth/100; } else { $Apache::londefdef::table[-1]{'width'}=$TeXwidth; - } + } + # In the end, however the table width cannot be wider than $textwidth... + + if ($Apache::londefdef::table[-1]{'width'} > $textwidth) { + $Apache::londefdef::table[-1]{'width'} = $textwidth; + } #table's border my $border = &Apache::lonxml::get_param('border',$parstack,$safeeval); @@ -2234,7 +2244,7 @@ sub end_table { } $output.=$Apache::londefdef::table[-1]{'content'}[$in][$jn]; if ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'c') { - $output.='\end{center}'.¢er_correction(); + $output.='\end{center}'; } elsif ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'r') { $output.='} '; } @@ -2760,12 +2770,7 @@ sub start_img { $safeeval, undef,1)); if(!$align) { - # disabled for now see BUG#4535 - if (0 && &is_inside_of($tagstack, "table")) { - $align = "right"; # Force wraptext use. - } else { $align = "bottom"; # This is html's default so it's ours too. - } } # &Apache::lonxml::debug("Alignemnt = $align"); @@ -2780,11 +2785,17 @@ sub start_img { $parstack, $safeeval, undef,0); - &Apache::lonxml::debug("LaTeX rendering = $latex_rendering"); + # &Apache::lonxml::debug("LaTeX rendering = $latex_rendering"); if(!$latex_rendering) { - $latex_rendering = "texwrap"; + $latex_rendering = "texwrap"; + } + # using texwrap inside a table does not work. So, if after all of this, + # texwrap is on, we turn it off if we detect we're in a table: + # + if (($latex_rendering eq 'texwrap') && &is_inside_of($tagstack, "table")) { + $latex_rendering = 'parpic'; } - &Apache::lonxml::debug("LaTeX rendering = $latex_rendering image file: $src"); + # &Apache::lonxml::debug("LaTeX rendering = $latex_rendering image file: $src"); #if original gif/jpg/png file exist do following: my $origsrc=$src;