--- loncom/xml/londefdef.pm	2003/08/20 15:22:03	1.162
+++ loncom/xml/londefdef.pm	2003/08/26 21:31:19	1.168
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Tags Default Definition Module 
 #
-# $Id: londefdef.pm,v 1.162 2003/08/20 15:22:03 sakharuk Exp $
+# $Id: londefdef.pm,v 1.168 2003/08/26 21:31:19 albertel Exp $
 # 
 #
 # Copyright Michigan State University Board of Trustees
@@ -323,7 +323,7 @@ sub start_title {
     if ($target eq 'web') {
 	$currentstring = $token->[4];     
     } elsif ($target eq 'tex') {
-	$currentstring .= '\keephidden{' 
+	$currentstring .= '\keephidden{Title of the document:  ' 
     }
     if ($target eq 'meta') {
 	$currentstring='<title>';
@@ -398,7 +398,7 @@ sub start_meta {
 }
 
 sub end_meta {
-    my ($target,$token,$tagstack,$parstack,$parser) = @_;
+    my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
     my $currentstring = '';
     if ($target eq 'web') {
 	my $args='';
@@ -407,8 +407,11 @@ sub end_meta {
 	    $currentstring = $token->[4];
 	}
     } elsif ($target eq 'tex') {
-	$currentstring=&Apache::lonxml::endredirection();
-	$currentstring='';
+	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();
+	}
     }
     return $currentstring;
 }
@@ -1418,7 +1421,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];
@@ -1428,7 +1431,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];     
@@ -1792,7 +1795,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--;
@@ -1828,7 +1831,7 @@ sub end_table {
     return $currentstring;
 }
 
-#-- <tr> tag
+#-- <tr> tag (end tag optional)
 sub start_tr {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
     my $currentstring = '';
@@ -1865,7 +1868,7 @@ sub end_tr {
     return $currentstring;
 }
 
-#-- <td> tag
+#-- <td> tag (end tag optional)
 sub start_td {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
     my $currentstring = '';
@@ -1924,9 +1927,24 @@ sub end_td_tex {
 	    $Apache::londefdef::table[-1]{'TeXlength'} .= $1.',';
 	    $Apache::londefdef::table[-1]{'length'} .= '0,';
 	} else {  
-	    $data=~s/^\s+(\S.*)/$1/;
+	    $data=~s/^\s+(\S.*)/$1/; 
 	    $data=~s/(.*\S)\s+$/$1/;
-	    my $current_length=2*length($data);
+	    $data=~s/(\s)+/$1/;
+	    my $current_length=0;
+	    if ($data=~/\\vskip/) {
+                my $newdata=$data;
+		$newdata=~s/\\vskip \d*\.?\d*\s*mm/THISISJUSTTEMPORARYSEPARATOR/g;
+		my @newdata=split(/THISISJUSTTEMPORARYSEPARATOR/,$newdata);
+		foreach my $elementdata (@newdata) {
+		    $elementdata=~s/^\s+(\S.*)/$1/; 
+		    $elementdata=~s/(.*\S)\s+$/$1/;
+		    $elementdata=~s/(\s)+/$1/;
+		    my $lengthnewdata=1.8*length($elementdata);
+		    if ($lengthnewdata>$current_length) {$current_length=$lengthnewdata;}
+		}
+	    } else {
+		$current_length=1.8*length($data);
+	    }
 	    $Apache::londefdef::table[-1]{'length'} .= $current_length.',';
 	    $Apache::londefdef::table[-1]{'TeXlength'} .= '0,';
 	}        
@@ -1950,7 +1968,7 @@ sub end_td {
     return $currentstring;
 }
 
-#-- <th> tag
+#-- <th> tag (end tag optional)
 sub start_th {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
     my $currentstring = '';
@@ -2318,7 +2336,6 @@ sub end_xmp {
     return $currentstring;
 }
 
-
 #-- <pre>
 sub start_pre {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
@@ -3105,7 +3122,7 @@ sub end_tbody {
     return $currentstring;
 }
 
-#-- <tfoot> tag
+#-- <tfoot> tag (end tag optional)
 sub start_tfoot {
     my ($target,$token) = @_;
     my $currentstring = '';
@@ -3124,7 +3141,7 @@ sub end_tfoot {
     return $currentstring;
 }
 
-#-- <thead> tag
+#-- <thead> tag (end tag optional)
 sub start_thead {
     my ($target,$token) = @_;
     my $currentstring = '';
@@ -3149,7 +3166,9 @@ sub start_var {
     my $currentstring = '';
     if ($target eq 'web') {
 	$currentstring = $token->[4];     
-    } 
+    } elsif ($target eq 'tex') {
+	$currentstring = '\textit{'; 
+    }
     return $currentstring;
 }
 
@@ -3157,12 +3176,14 @@ sub end_var {
     my ($target,$token) = @_;
     my $currentstring = '';
     if ($target eq 'web') {
-	$currentstring = $token->[2];    
+	$currentstring = $token->[2];
+    } elsif ($target eq 'tex') {
+	$currentstring = '}'; 
     } 
     return $currentstring;
 }
 
-#-- <wbr> tag
+#-- <wbr> tag (end tag forbidden)
 sub start_wbr {
     my ($target,$token) = @_;
     my $currentstring = '';