--- loncom/xml/londefdef.pm	2003/08/26 14:40:03	1.166
+++ loncom/xml/londefdef.pm	2003/09/05 19:35:40	1.171
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Tags Default Definition Module 
 #
-# $Id: londefdef.pm,v 1.166 2003/08/26 14:40:03 sakharuk Exp $
+# $Id: londefdef.pm,v 1.171 2003/09/05 19:35:40 sakharuk Exp $
 # 
 #
 # Copyright Michigan State University Board of Trustees
@@ -410,7 +410,7 @@ sub end_meta {
 	my $content=&Apache::lonxml::get_param('content',$parstack,$safeeval);
 	my $name=&Apache::lonxml::get_param('name',$parstack,$safeeval);
 	if ((not defined $content) && (not defined $name)) {
-	    &Apache::lonxml::startredirection();
+	    &Apache::lonxml::endredirection();
 	}
     }
     return $currentstring;
@@ -466,6 +466,10 @@ sub start_body {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
     my $currentstring = '';
     if ($target eq 'web') {
+	if ($Apache::lonhomework::parsing_a_problem) {
+	    &Apache::lonxml::warning("<body> tag found inside of <problem> tag this can cause problems.");
+	    return '';
+	}
 	if (!$Apache::lonxml::registered) {
 	    $currentstring.='<head>'.
 		&Apache::lonmenu::registerurl(undef,$target).'</head>';
@@ -537,7 +541,7 @@ sub end_body {
     if ($target eq 'web') {
 	$currentstring = $token->[2];     
     } elsif ($target eq 'tex') {
-	$currentstring = '\end{document}';  
+	$currentstring = '\strut\newline\noindent\makebox[\textwidth/$number_of_columns][b]{\hrulefill}\newline\noindent \end{document}';  
     } 
     return $currentstring;
 }
@@ -1421,7 +1425,7 @@ sub start_a {
 }
 
 sub end_a {
-    my ($target,$token,$tagstack,$parstack,$safeeval) = @_;
+    my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
     my $currentstring = '';
     if ($target eq 'web') {
 	$currentstring .= $token->[2];
@@ -1431,7 +1435,7 @@ sub end_a {
 
 #-- <li> tag
 sub start_li {
-    my ($target,$token,$tagstack,$parstack,$safeeval) = @_;
+    my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
     my $currentstring = '';
     if ($target eq 'web') {
 	$currentstring = $token->[4];     
@@ -1776,11 +1780,9 @@ sub end_table {
 	    }
 	}
 	#continues trying estimate the width of raw data
-#	$currentstring.=' SSS '.$Apache::londefdef::table[-1]{'lengthrow'}[0].' FFF '; ####for test only
 	my @length_raw_row = split(/,/,$Apache::londefdef::table[-1]{'lengthrow'}[0]);
 	for (my $in=1;$in<=$Apache::londefdef::table[-1]{'row_number'};$in++) {
 	    my @length_row = split(/,/,$Apache::londefdef::table[-1]{'lengthrow'}[$in]);
-#	    $currentstring.=' SSS '.$Apache::londefdef::table[-1]{'lengthrow'}[$in].' FFF '; ####for test only
 	    for (my $jn=0;$jn<=$#length_row;$jn++) {
 		if ($length_raw_row[$jn]<$length_row[$jn]) {$length_raw_row[$jn]=$length_row[$jn];}
 	    }
@@ -1797,7 +1799,7 @@ sub end_table {
 	$needed=$#length_row_final-$needed+1;
 	for (my $jn=0;$jn<=$#length_row_final;$jn++) {
 	    if ($length_row_final[$jn]==0) {
-		if ($length_raw_row[$jn]<$available_length/3) {
+		if ($length_raw_row[$jn]<$available_length) {
 		    $length_row_final[$jn]=$length_raw_row[$jn];
 		    $available_length=$available_length-$length_raw_row[$jn];
 		    $needed--;