--- loncom/xml/londefdef.pm 2005/12/01 18:46:17 1.299 +++ loncom/xml/londefdef.pm 2005/12/19 23:27:33 1.303 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Tags Default Definition Module # -# $Id: londefdef.pm,v 1.299 2005/12/01 18:46:17 albertel Exp $ +# $Id: londefdef.pm,v 1.303 2005/12/19 23:27:33 foxr Exp $ # # # Copyright Michigan State University Board of Trustees @@ -48,7 +48,7 @@ use Apache::lonmenu(); use Apache::lonmeta(); use Apache::Constants qw(:common); use File::Basename; -#use Data::Dumper; +# use Data::Dumper; BEGIN { @@ -71,7 +71,6 @@ BEGIN { # # } #} - sub initialize_londefdef { $Apache::londefdef::TD_redirection=0; @Apache::londefdef::table = (); @@ -2218,9 +2217,9 @@ sub end_table { my $min_nested_width = 0; my $max_nested_width = 0; for (my $col = 0; $col <= $Apache::londefdef::table[-1]{'counter_columns'}; $col++) { - $min_nested_width += $min_len[$col]; $max_nested_width += $max_len[$col]; + } # Fudge in an extra 5 mm for borders etc: @@ -2262,6 +2261,10 @@ sub start_tr { push @ {$Apache::londefdef::table[-1]{'rows'} }, 'l'; } push ( @{ $Apache::londefdef::table[-1]{'rowdata'} }, $Apache::londefdef::table[-1]{'hinc'}); + # + # Need to save the number of table columns to preserve the max # columns. + # + $Apache::londefdef::table[-1]{'prior_columns'} = $Apache::londefdef::table[-1]{'counter_columns'}; $Apache::londefdef::table[-1]{'counter_columns'} = -1; push @ {$Apache::londefdef::table[-1]{'TeXlen'}}, []; push @ {$Apache::londefdef::table[-1]{'objectlen'}}, []; @@ -2281,6 +2284,11 @@ sub end_tr { if ($Apache::londefdef::TD_redirection) { &end_td_tex($parstack,$parser,$safeeval); } + # Counter columns must be the maximum number of columns seen + # in the table so far so: + if ($Apache::londefdef::table[-1]{'prior_columns'} > $Apache::londefdef::table[-1]{'counter_columns'}) { + $Apache::londefdef::table[-1]{'counter_columns'} = $Apache::londefdef::table[-1]{'prior_columns'}; + } @@ -2339,7 +2347,15 @@ sub start_td_tex { sub end_td_tex { my ($parstack,$parser,$safeeval) = @_; my $current_row = $Apache::londefdef::table[-1]{'row_number'}; - my $data=&Apache::lonxml::endredirection(); + my $data = &Apache::lonxml::endredirection(); + + # 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); + my $rowspan = &Apache::lonxml::get_param('rowspan', $parstack, $safeeval, undef, 0); + my $TeXwidth=&Apache::lonxml::get_param('TeXwidth',$parstack,$safeeval,undef,0); if (defined $TeXwidth) { push @ {$Apache::londefdef::table[-1]{'objectlen'}[$Apache::londefdef::table[-1]{'row_number'}] },'0'; @@ -2416,16 +2432,20 @@ sub end_td_tex { push @ {$Apache::londefdef::table[-1]{'minlen'}[$Apache::londefdef::table[-1]{'row_number'}] },$min_length; } } - for (my $in=0; $in<=$#{$Apache::londefdef::table[-1]{'include'}};$in++) { - my $nested = $Apache::londefdef::table[-1]{'include'}[$in]; - &Apache::lonnet::logthis("Nested: $nested"); - $nested =~ s/\\end\{tabular\}\\strut\\\\/\\end\{tabular\}/; - &Apache::lonnet::logthis("After sub: $nested"); - # $data=~s/\\keephidden\{NEW TABLE ENTRY\}/$Apache::londefdef::table[-1]{'include'}[$in]/; - $data =~ s/\\keephidden\{NEW TABLE ENTRY\}/$nested/; - } + # Substitute all of the tables nested in this cell in their appropriate places. + + + my $nested_count = $#{$Apache::londefdef::table[-1]{'include'}}; # This one is constant... + for (my $in=0; $in<=$nested_count; $in++) { + my $nested = shift @{$Apache::londefdef::table[-1]{'include'}}; + $nested =~ s/\\end\{tabular\}\\strut\\\\/\\end\{tabular\}/; + # $data=~s/\\keephidden\{NEW TABLE ENTRY\}/$Apache::londefdef::table[-1]{'include'}[$in]/; + $data =~ s/\\keephidden\{NEW TABLE ENTRY\}/$nested/; + + } + # Should be be killing off the 'include' elements as they're used up? push @ {$Apache::londefdef::table[-1]{'content'}[-1] },$data; - return''; + return ''; } sub end_td {