--- loncom/xml/londefdef.pm 2005/12/20 23:12:03 1.304 +++ loncom/xml/londefdef.pm 2005/12/23 00:12:32 1.305 @@ -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 @@ BEGIN { # 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 @@ sub end_table { 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 @@ sub end_td_tex { 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 @@ sub end_td_tex { } # 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