@@ -1251,9 +1274,7 @@ sub start_br { $signal = 1; } } - if ($signal eq 1) { - $currentstring .= ' \vskip 0 mm '; - } else { + if ($signal != 1) { $currentstring .= '\strut \\\\ \strut '; } @@ -1565,6 +1586,9 @@ sub start_div { } if ($target eq 'tex') { # 4 possible alignments: left, right, center, and -missing-. + # If inside a table row, we must let the table logic + # do the alignment, however. + # my $endstring = ''; @@ -1575,6 +1599,7 @@ sub start_div { $endstring = '\end{center}'; if (&is_inside_of($tagstack, "table")) { $currentstring = ¢er_correction().$currentstring; + $endstring .= ¢er_end_correction(); } } elsif ($align eq 'right') { @@ -1630,14 +1655,18 @@ sub end_a { &Apache::lonxml::get_param('href',$parstack,$safeeval,undef,1); my $name = &Apache::lonxml::get_param('name',$parstack,$safeeval,undef,1); - if ($href =~ /\S/) { + my $uriprint = + &Apache::lonxml::get_param('uriprint',$parstack,$safeeval,undef,1); + my $anchorprint = + &Apache::lonxml::get_param('anchorprint',$parstack,$safeeval,undef,1); + if (($href =~ /\S/) && ($uriprint=~/^on|uriprint|yes|1$/i)) { $href =~ s/([^\\])%/$1\\\%/g; # Substitute special symbols... and allow line breaks at each / # $href = &Apache::lonxml::latex_special_symbols($href); $href =~ s/\//\/\\-/g; # Map / to /\- to allow hyphenation. $currentstring .= ' ({\tt URI:'.$href.'})'; - } elsif ($name =~ /\S/) { + } elsif (($name =~ /\S/) && ($anchorprint=~/^on|anchorprint|yes|1$/i)) { $currentstring .= ' ({\tt Anchor:'.&Apache::lonxml::latex_special_symbols($name).'})'; } else { $currentstring.=''; @@ -2066,11 +2095,16 @@ sub end_table { if ($target eq 'web' || $target eq 'webgrade') { $currentstring = $token->[2]; } elsif ($target eq 'tex') { + my $border = &Apache::lonxml::get_param('border',$parstack,$safeeval); my $inmemory = ''; my $output = ''; my $WARNING=''; #width of columns from TeXwidth attributes + # Protect against unbalanced tag. + + if (scalar(@Apache::londefdef::table) > 0) { + for (my $in=0;$in<=$Apache::londefdef::table[-1]{'row_number'};$in++) { for (my $jn=0;$jn<=$Apache::londefdef::table[-1]{'counter_columns'};$jn++) { if ($Apache::londefdef::table[-1]{'TeXlen'}[0][$jn]<$Apache::londefdef::table[-1]{'TeXlen'}[$in][$jn]) { @@ -2313,6 +2347,10 @@ sub end_table { # Do the appropriate magic if this has a colspan # + my $border_char = ""; + if ($border) { + $border_char = "|"; + } my $spanwidth = 0; if ($colspan > 1) { for (my $spancol = $jn; $spancol < $jn + $colspan; $spancol++) { @@ -2322,12 +2360,12 @@ sub end_table { $colspan ."}"; if ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'c') { - $output .= '{|c|}{'; + $output .= '{'.$border_char.'c'.$border_char.'}{'; } elsif ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'r') { - $output .= '{|r|}{'; + $output .= '{'.$border_char.'r'.$border_char.'}{'; } else { - $output .= "{|p{$spanwidth mm}|}{"; + $output .= '{'.$border_char."p{$spanwidth mm}".$border_char.'}{'; } } else { @@ -2343,10 +2381,10 @@ sub end_table { if ($rowspan > 1) { if ($colspan == 1) { if ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'c') { - $output .= '\multicolumn{1}{|c|}{'; + $output .= '\multicolumn{1}{'.$border_char.'c'.$border_char.'}{'; $multirow_aligned = 1; } elsif ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'r') { - $output .= '\multicolumn{1}{|r|}{'; + $output .= '\multicolumn{1}{'.$border_char.'r'.$border_char.'}{'; $multirow_aligned = 1; } } @@ -2383,9 +2421,9 @@ sub end_table { # if ($colspan == 1 && $rowspan == 1) { if ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'c') { - $output .= '\multicolumn{1}{|c|}{'; + $output .= '\multicolumn{1}{'.$border_char.'c'.$border_char.'}{'; } elsif ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'r') { - $output .= '\multicolumn{1}{|r|}{'; + $output .= '\multicolumn{1}{'.$border_char.'r'.$border_char.'}{'; } } @@ -2470,6 +2508,7 @@ sub end_table { undef @Apache::londefdef::table; } } + } return $currentstring; } @@ -3034,11 +3073,14 @@ sub start_img { my $width= &Apache::lonxml::get_param('width',$parstack,$safeeval); my $height= &Apache::lonxml::get_param('height',$parstack,$safeeval); - - $currentstring .= '[2]{'src'}=~/\$/) { + $currentstring.='Variable image source'; + } else { + $currentstring .= '[2]{'src'},$token->[2]{'width'},$token->[2]{'height'}); @@ -4518,6 +4560,12 @@ sub align_latex_image { my ($align, $latex_rendering, $image, $width, $height) = @_; my $currentstring; # The 1/2 wrapped image. my $closure; # The closure of the wrappage. + + # if it's none just return it back + if ($latex_rendering eq 'none') { + return ($image,''); + } + # If there's an alignment specification we need to honor it here. # For the horizontal alignments, we will also honor the # value of the latex specfication. The default is parbox,