[LON-CAPA-cvs] cvs: loncom(version_2_1_X) /xml londefdef.pm

albertel lon-capa-cvs@mail.lon-capa.org
Wed, 04 Jan 2006 23:15:54 -0000


albertel		Wed Jan  4 18:15:54 2006 EDT

  Modified files:              (Branch: version_2_1_X)
    /loncom/xml	londefdef.pm 
  Log:
  - backport 1.308 1.309 1.310
  
  
Index: loncom/xml/londefdef.pm
diff -u loncom/xml/londefdef.pm:1.302 loncom/xml/londefdef.pm:1.302.2.1
--- loncom/xml/londefdef.pm:1.302	Tue Dec  6 17:55:31 2005
+++ loncom/xml/londefdef.pm	Wed Jan  4 18:15:52 2006
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Tags Default Definition Module 
 #
-# $Id: londefdef.pm,v 1.302 2005/12/06 22:55:31 foxr Exp $
+# $Id: londefdef.pm,v 1.302.2.1 2006/01/04 23:15:52 albertel Exp $
 # 
 #
 # Copyright Michigan State University Board of Trustees
@@ -594,25 +594,34 @@
     return $currentstring;
 }
 
+# \begin{center} causes a new paragprah spacing that looks odd inside 
+# of a table cell
+sub center_correction { return '\vspace*{-6 mm}'; }
 #-- <center> tag (end tag required)
 sub start_center {
-    my ($target,$token) = @_;
+    my ($target,$token,$tagstack) = @_;
     my $currentstring = &end_p();	# Close off any prior para.
     if ($target eq 'web') {
 	$currentstring .= $token->[4];     
     } elsif ($target eq 'tex') {
+	if (&is_inside_of($tagstack, "table")) {
+	    $currentstring .= &center_correction();
+	}
 	$currentstring .= '\begin{center}';  
     }
     return $currentstring;
 }
 
 sub end_center {
-    my ($target,$token) = @_;
+    my ($target,$token,$tagstack) = @_;
     my $currentstring = '';
     if ($target eq 'web') {
 	$currentstring = $token->[2];     
     } elsif ($target eq 'tex') {
 	$currentstring = '\end{center}';  
+	if (&is_inside_of($tagstack, "table")) {
+	    $currentstring .= &center_correction();
+	}
     }
     return $currentstring;
 }
@@ -1183,6 +1192,10 @@
 	if ($align eq 'center') {
 	    $currentstring .='\begin{center}\par';
 	    $closing_string = '\end{center}';
+	    if (&is_inside_of($tagstack, "table")) {
+		$currentstring = &center_correction().$currentstring;
+		$closing_string .= &center_correction();
+	    }
 	} elsif ($align eq 'right') {
 	    $currentstring.='\makebox['.$env{'form.textwidth'}.']{\hfill\llap{';
 	    $closing_string= '}}';
@@ -1524,6 +1537,10 @@
 	if ($align eq 'center') {
 	    $currentstring .= '\begin{center}';
 	    $endstring      = '\end{center}';
+	    if (&is_inside_of($tagstack, "table")) {
+		$currentstring = &center_correction().$currentstring;
+		$endstring .= &center_correction();
+	    }
 	}
 	elsif ($align eq 'right') {
 	    $currentstring .= '\begin{flushright}';
@@ -1946,9 +1963,9 @@
 	# in either case it can be a percentage or absolute width.
 
 	my $TeXwidth = &Apache::lonxml::get_param('TeXwidth',$parstack,$safeeval,undef,0);
-	if (not defined $TeXwidth) {
+	if (!defined($TeXwidth)) {
 	    $TeXwidth = &Apache::lonxml::get_param('width',$parstack,$safeeval,undef,1);
-
+	    if (!defined($TeXwidth)) { $TeXwidth = $textwidth; }
 	} else {
 	    $Apache::londefdef::table[-1]{'forcedtablewidth'} = 1;
 	}
@@ -2188,15 +2205,13 @@
 	for (my $in=0;$in<=$Apache::londefdef::table[-1]{'row_number'};$in++) {
 	    for (my $jn=0;$jn<=$#fwidth;$jn++) {
 		if ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'c') {
-		    # $output.='\vspace*{-6 mm}\begin{center}';
-		    $output.='\begin{center}';
+		    $output.=&center_correction().'\begin{center}';
 		} elsif ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'r') {
 		    $output.=' \hfill \llap{'
 		}
 		$output.=$Apache::londefdef::table[-1]{'content'}[$in][$jn];
 		if ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'c') {
-		    # $output.='\end{center}\vspace*{-6 mm}';
-		    $output.='\end{center}';
+		    $output.='\end{center}'.&center_correction();
 		} elsif ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'r') {
 		    $output.='} ';
 		}
@@ -2633,7 +2648,8 @@
 						  $safeeval,
 						  undef,1));
 	if(!$align) {
-	    if (&is_inside_of($tagstack, "table")) {
+	    # 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.