[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