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

foxr lon-capa-cvs@mail.lon-capa.org
Fri, 23 Dec 2005 00:12:33 -0000


foxr		Thu Dec 22 19:12:33 2005 EDT

  Modified files:              
    /loncom/xml	londefdef.pm 
  Log:
  Got the data structures needed to get row spanning to work.. Just need to 
  add \multirow at end_table to finish this off (hopefully).
  
  
Index: loncom/xml/londefdef.pm
diff -u loncom/xml/londefdef.pm:1.304 loncom/xml/londefdef.pm:1.305
--- loncom/xml/londefdef.pm:1.304	Tue Dec 20 18:12:03 2005
+++ loncom/xml/londefdef.pm	Thu Dec 22 19:12:32 2005
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Tags Default Definition Module 
 #
-# $Id: londefdef.pm,v 1.304 2005/12/20 23:12:03 foxr Exp $
+# $Id: londefdef.pm,v 1.305 2005/12/23 00:12:32 foxr Exp $
 # 
 #
 # Copyright Michigan State University Board of Trustees
@@ -68,7 +68,6 @@
 #    for ($row =0; $row <= $lastrow; $row++ ) {
 #	my $text = Dumper($Apache::londefdef::table[$row]);
 #	&Apache::lonnet::logthis("table [ $row ]".$text);
-#
 #    }
 #}
 sub initialize_londefdef {
@@ -2002,6 +2001,7 @@
 	my $inmemory = '';
 	my $output = '';
 	my $WARNING='';
+	# &debug_dump_table($Apache::londefdef::table[-1]);
         #width of columns from TeXwidth attributes
 
 	for (my $in=0;$in<=$Apache::londefdef::table[-1]{'row_number'};$in++) {
@@ -2365,8 +2365,33 @@
     my $current_column = $Apache::londefdef::table[-1]{'counter_columns'}; 
     my $data = &Apache::lonxml::endredirection();
 
+    #  The rowspan array of the table indicates which cells are part of a span.
+    #  n indicates the start of a span set of n rows.
+    #  ^ indicates a cell that continues a span set.
+    #  If this and subsequent cells are part of a rowspan, we must
+    #  push along the row until we find one that is not.
+
+    while ((defined $Apache::londefdef::table[-1]{'rowspan'}[$current_row] [$current_column]) 
+	   && $Apache::londefdef::table[-1]{'rowspan'}[$current_row][$current_column] eq '^') {
+	# Part of a span.
+	push @ {$Apache::londefdef::table[-1]{'content'}[-1]}, '';
+	$current_column++;
+    }
+    $Apache::londefdef::table[-1]{'counter_columns'} = $current_column;
+   
+
+
+    my $rowspan = &Apache::lonxml::get_param('rowspan', $parstack, $safeeval, undef, 0);
+    if (!$rowspan) {
+	$rowspan = 1;
+    }
 
-    
+
+
+    $Apache::londefdef::table[-1]{'rowspan'}[$current_row][$current_column] = $rowspan;
+    for (my $i = 1; $i < $rowspan; $i++) {
+	$Apache::londefdef::table[-1]{'rowspan'}[$current_row+$i][$current_column] = '^';
+    }
 
     my $TeXwidth=&Apache::lonxml::get_param('TeXwidth',$parstack,$safeeval,undef,0);
     if (defined $TeXwidth) {		
@@ -2456,16 +2481,16 @@
 
     }
     # Should be be killing off the 'include' elements as they're used up?
+
     push @ {$Apache::londefdef::table[-1]{'content'}[-1] },$data;
+
     # Get the column and row spans.
     # Colspan can be done via \multicolumn if I can figure out the data structs.
-    # Rowspan, can be done using the multirow package which adds similar stuff to rowspanning.
 
     my $colspan = &Apache::lonxml::get_param('colspan', $parstack, $safeeval, undef, 0);
     if (!$colspan) {
 	$colspan = 1;
     }
-    my $rowspan = &Apache::lonxml::get_param('rowspan', $parstack, $safeeval, undef, 0);
 
 
     #  the colspan array will indicate how many columns will be spanned by this