--- loncom/xml/londefdef.pm	2004/05/26 15:13:56	1.217
+++ loncom/xml/londefdef.pm	2004/07/12 17:19:13	1.226
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Tags Default Definition Module 
 #
-# $Id: londefdef.pm,v 1.217 2004/05/26 15:13:56 sakharuk Exp $
+# $Id: londefdef.pm,v 1.226 2004/07/12 17:19:13 sakharuk Exp $
 # 
 #
 # Copyright Michigan State University Board of Trustees
@@ -1133,15 +1133,13 @@ sub end_p {
     if ($target eq 'web') {
 	$currentstring .= $token->[2];
     } elsif ($target eq 'tex') {
-	if ($$tagstack[-1] eq 'p') {
-	    my $align=&Apache::lonxml::get_param('align',$parstack,$safeeval,undef,1);
-	    if ($align eq 'center') {		
-		$currentstring .= '\end{center}';
-	    } elsif ($align eq 'right') {
-		$currentstring .= '}}';
-	    } elsif ($align eq 'left') {
-		$currentstring .= '}\hfill}';
-	    }
+	my $align=&Apache::lonxml::get_param('align',$parstack,$safeeval,undef,1);
+	if ($align eq 'center') {		
+	    $currentstring .= '\end{center}';
+	} elsif ($align eq 'right') {
+	    $currentstring .= '}}';
+	} elsif ($align eq 'left') {
+	    $currentstring .= '}\hfill}';
 	}
     }
     return $currentstring;
@@ -1154,8 +1152,11 @@ sub start_br {
     if ($target eq 'web') {
 	$currentstring .= $token->[4];
     } elsif ($target eq 'tex') {
-	if ($$tagstack[-2] ne 'sub' && $$tagstack[-2] ne 'sup') {
-	    $currentstring .= '\vskip 0.2 mm ';
+	if (($$tagstack[-2] eq 'b') || ($$tagstack[-2] eq 'strong') ||
+            ($$tagstack[-2] eq 'ol') || ($$tagstack[-2] eq 'ul')) {
+	    $currentstring .= ' \vskip 0 mm ';
+	} elsif ($$tagstack[-2] ne 'sub' && $$tagstack[-2] ne 'sup') {
+	    $currentstring .= '\strut \\\\ \strut ';
 	}
     }
     return $currentstring;
@@ -1531,22 +1532,22 @@ sub start_ul {
     } elsif ($target eq 'tex') {
 	my $TeXtype=&Apache::lonxml::get_param('type',$parstack,$safeeval,undef,0);
 	if ($TeXtype eq 'disc') {
-	    $currentstring .= ' \renewcommand{\labelitemi}{$\bullet$}
-                                \renewcommand{\labelitemii}{$\bullet$} 
-                                \renewcommand{\labelitemiii}{$\bullet$}
-                                \renewcommand{\labelitemiv}{$\bullet$}';
+	    $currentstring .= '\renewcommand{\labelitemi}{$\bullet$}'.
+                              '\renewcommand{\labelitemii}{$\bullet$}'. 
+                              '\renewcommand{\labelitemiii}{$\bullet$}'.
+                              '\renewcommand{\labelitemiv}{$\bullet$}';
 	} elsif ($TeXtype eq 'circle') {
-	    $currentstring .= ' \renewcommand{\labelitemi}{$\circ$}
-                                \renewcommand{\labelitemii}{$\circ$} 
-                                \renewcommand{\labelitemiii}{$\circ$}
-                                \renewcommand{\labelitemiv}{$\circ$}';
+	    $currentstring .= '\renewcommand{\labelitemi}{$\circ$}'.
+                              '\renewcommand{\labelitemii}{$\circ$}'. 
+                              '\renewcommand{\labelitemiii}{$\circ$}'.
+                              '\renewcommand{\labelitemiv}{$\circ$}';
 	} elsif ($TeXtype eq 'square') {
-	    $currentstring .= ' \renewcommand{\labelitemi}{$\diamond$}
-                                \renewcommand{\labelitemii}{$\diamond$} 
-                                \renewcommand{\labelitemiii}{$\diamond$}
-                                \renewcommand{\labelitemiv}{$\diamond$}';
+	    $currentstring .= '\renewcommand{\labelitemi}{$\diamond$}'.
+                              '\renewcommand{\labelitemii}{$\diamond$}'. 
+                              '\renewcommand{\labelitemiii}{$\diamond$}'.
+                              '\renewcommand{\labelitemiv}{$\diamond$}';
 	}
-	$currentstring .= '\begin{itemize}';  
+	$currentstring .= '\strut \begin{itemize}';  
     } 
     return $currentstring;
 }
@@ -1557,10 +1558,10 @@ sub end_ul {
     if ($target eq 'web') {
 	$currentstring = $token->[2];     
     } elsif ($target eq 'tex') {
-	$currentstring = '\end{itemize} \renewcommand{\labelitemi}{$\bullet$}
-                                \renewcommand{\labelitemii}{$\bullet$} 
-                                \renewcommand{\labelitemiii}{$\bullet$}
-                                \renewcommand{\labelitemiv}{$\bullet$}';  
+	$currentstring = '\end{itemize} \renewcommand{\labelitemi}{$\bullet$}'.
+                               '\renewcommand{\labelitemii}{$\bullet$}'. 
+                               '\renewcommand{\labelitemiii}{$\bullet$}'.
+                               '\renewcommand{\labelitemiv}{$\bullet$}\strut ';  
     } 
     return $currentstring;
 }
@@ -1620,32 +1621,32 @@ sub start_ol {
     } elsif ($target eq 'tex') {
 	my $type=&Apache::lonxml::get_param('type',$parstack,$safeeval,undef,0);
 	if ($type eq '1') {
-	    $currentstring .= ' \renewcommand{\labelenumi}{\arabic{enumi}.}
-                                \renewcommand{\labelenumii}{\arabic{enumii}.} 
-                                \renewcommand{\labelenumiii}{\arabic{enumiii}.}
-                                \renewcommand{\labelenumiv}{\arabic{enumiv}.}';
+	    $currentstring .= '\renewcommand{\labelenumi}{\arabic{enumi}.}'.
+                              '\renewcommand{\labelenumii}{\arabic{enumii}.}'. 
+                              '\renewcommand{\labelenumiii}{\arabic{enumiii}.}'.
+                              '\renewcommand{\labelenumiv}{\arabic{enumiv}.}';
 	} elsif ($type eq 'A') {
-	    $currentstring .= ' \renewcommand{\labelenumi}{\Alph{enumi}.}
-                                \renewcommand{\labelenumii}{\Alph{enumii}.} 
-                                \renewcommand{\labelenumiii}{\Alph{enumiii}.}
-                                \renewcommand{\labelenumiv}{\Alph{enumiv}.}';
+	    $currentstring .= '\renewcommand{\labelenumi}{\Alph{enumi}.}'.
+                              '\renewcommand{\labelenumii}{\Alph{enumii}.}'. 
+                              '\renewcommand{\labelenumiii}{\Alph{enumiii}.}'.
+                              '\renewcommand{\labelenumiv}{\Alph{enumiv}.}';
 	} elsif ($type eq 'a') {
-	    $currentstring .= ' \renewcommand{\labelenumi}{\alph{enumi}.}
-                                \renewcommand{\labelenumii}{\alph{enumii}.}
-                                \renewcommand{\labelenumiii}{\alph{enumiii}.}
-                                \renewcommand{\labelenumiv}{\alph{enumiv}.} ';
+	    $currentstring .= '\renewcommand{\labelenumi}{\alph{enumi}.}'.
+                              '\renewcommand{\labelenumii}{\alph{enumii}.}'.
+                              '\renewcommand{\labelenumiii}{\alph{enumiii}.}'.
+                              '\renewcommand{\labelenumiv}{\alph{enumiv}.}';
 	} elsif ($type eq 'i') {
-	    $currentstring .= ' \renewcommand{\labelenumi}{\roman{enumi}.}
-                                \renewcommand{\labelenumii}{\roman{enumii}.}
-                                \renewcommand{\labelenumiii}{\roman{enumiii}.}
-                                \renewcommand{\labelenumiv}{\roman{enumiv}.} ';
+	    $currentstring .= '\renewcommand{\labelenumi}{\roman{enumi}.}'.
+                              '\renewcommand{\labelenumii}{\roman{enumii}.}'.
+                              '\renewcommand{\labelenumiii}{\roman{enumiii}.}'.
+                              '\renewcommand{\labelenumiv}{\roman{enumiv}.}';
 	} elsif ($type eq 'I') {
-	    $currentstring .= ' \renewcommand{\labelenumi}{\Roman{enumi}.}
-                                \renewcommand{\labelenumii}{\Roman{enumii}.}
-                                \renewcommand{\labelenumiii}{\Roman{enumiii}.}
-                                \renewcommand{\labelenumiv}{\Roman{enumiv}.} ';
+	    $currentstring .= '\renewcommand{\labelenumi}{\Roman{enumi}.}'.
+                              '\renewcommand{\labelenumii}{\Roman{enumii}.}'.
+                              '\renewcommand{\labelenumiii}{\Roman{enumiii}.}'.
+                              '\renewcommand{\labelenumiv}{\Roman{enumiv}.}';
 	}
-	$currentstring .= '\begin{enumerate}';  
+	$currentstring .= '\strut \begin{enumerate}';  
     } 
     return $currentstring;
 }
@@ -1656,10 +1657,10 @@ sub end_ol {
     if ($target eq 'web') {
 	$currentstring = $token->[2];     
     } elsif ($target eq 'tex') {
-	$currentstring = '\end{enumerate} \renewcommand{\labelenumi}{\arabic{enumi}.}
-                                          \renewcommand{\labelenumii}{\arabic{enumii}.}
-                                          \renewcommand{\labelenumiii}{\arabic{enumiii}.}
-                                          \renewcommand{\labelenumiv}{\arabic{enumiv}.}';  
+	$currentstring = '\end{enumerate}\renewcommand{\labelenumi}{\arabic{enumi}.}'.
+                                        '\renewcommand{\labelenumii}{\arabic{enumii}.}'.
+                                        '\renewcommand{\labelenumiii}{\arabic{enumiii}.}'.
+                                        '\renewcommand{\labelenumiv}{\arabic{enumiv}.}\strut ';  
     } 
     return $currentstring;
 }
@@ -1783,8 +1784,7 @@ sub start_table {
 	my $aa = {};
 	push @Apache::londefdef::table, $aa; 
 	$Apache::londefdef::table[-1]{'row_number'} = -1;
-        #table's width 
-        #default coincides with text line length
+        #maximum table's width (default coincides with text line length)
 	if ($#Apache::londefdef::table==0) {
 	    $textwidth=&recalc($ENV{'form.textwidth'}); #result is always in mm
 	    $textwidth=~/(\d+\.?\d*)/;
@@ -1816,6 +1816,7 @@ sub start_table {
 	    $TeXwidth=~/(\d+)/;
             $Apache::londefdef::table[-1]{'width'}=$1*$textwidth/100;
 	} else {
+	    $Apache::londefdef::table[-1]{'forcetablewidth'}=1;
 	    $Apache::londefdef::table[-1]{'width'}=$TeXwidth;
 	}        
         #table's border
@@ -1832,7 +1833,7 @@ sub start_table {
 	    $Apache::londefdef::table[-1]{'vvinc'} = '';
 	}
 	if ($#Apache::londefdef::table==0) {
-	    $Apache::londefdef::table[-1]{'output'}='\newline\setlength{\tabcolsep}{1 mm}';
+	    $Apache::londefdef::table[-1]{'output'}='\strut\newline\strut\setlength{\tabcolsep}{1 mm}';
 	}
 	$Apache::londefdef::table[-1]{'output'}.=' \noindent \begin{tabular} ';
         $Apache::londefdef::table[-1]{'TeXlen'}=[];
@@ -1957,11 +1958,15 @@ sub end_table {
 			    $fwidth[$jn]=$adjust[$jn];
 			}
 		    }
+		} else {
+		    for (my $jn=0;$jn<=$#min_len;$jn++) {
+			$fwidth[$jn]=$adjust[$jn];
+		    }
 		}
 	    }
 	}
-        #recalculation for the use of all available width if width is defined in %
-        if ($Apache::londefdef::table[-1]{'percent'}==1) {
+        #use all available width if it is defined in % or as TeXwidth
+        if (($Apache::londefdef::table[-1]{'percent'}==1) || ($Apache::londefdef::table[-1]{'forcetablewidth'}==1)) {
 	    my $current=0; 
 	    for (my $i=0;$i<=$#fwidth;$i++) {  
 		$current+=$fwidth[$i];
@@ -2014,7 +2019,7 @@ sub end_table {
 	    }
 	    $output.=' \\\\ '.$Apache::londefdef::table[-1]{'hinc'}.' ';
 	}
-	$Apache::londefdef::table[-1]{'output'} .= $header_of_table.$Apache::londefdef::table[-1]{'hinc'}.$output.'\end{tabular}\vskip 0 mm ';
+	$Apache::londefdef::table[-1]{'output'} .= $header_of_table.$Apache::londefdef::table[-1]{'hinc'}.$output.'\end{tabular}\strut\newline\strut ';
 	if ($#Apache::londefdef::table > 0) {	    
 	    my $inmemory = $Apache::londefdef::table[-1]{'output'};
 	    pop @Apache::londefdef::table;
@@ -2256,7 +2261,6 @@ sub start_img {
 					 undef,1);
     if (not $src and ($target eq 'web' or $target eq 'tex')) { 
 	my $inside = &Apache::lonxml::get_all_text("/img",$parser);
-	&Apache::lonnet::logthis("inside was $inside");
 	return '';
     }
     $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=$src;
@@ -3607,8 +3611,6 @@ sub LATEX_length {
     $garbage=~s|\\(\w+)\\|\\|g;	 
     $garbage=~s|\\(\w+)(\s*)|$2|g;	 	 
     $garbage=~s|\+|11|g;
-
-    &Apache::lonnet::logthis("garbage was just $garbage");
     my  $value=length($garbage);
     return $value;
 }