version 1.301, 2005/12/06 22:37:00
|
version 1.304, 2005/12/20 23:12:03
|
Line 48 use Apache::lonmenu();
|
Line 48 use Apache::lonmenu();
|
use Apache::lonmeta(); |
use Apache::lonmeta(); |
use Apache::Constants qw(:common); |
use Apache::Constants qw(:common); |
use File::Basename; |
use File::Basename; |
use Data::Dumper; |
# use Data::Dumper; |
|
|
BEGIN { |
BEGIN { |
|
|
Line 61 BEGIN {
|
Line 61 BEGIN {
|
# Need this 'cause evidently when given an array, Data::Dumper only seems |
# Need this 'cause evidently when given an array, Data::Dumper only seems |
# to dump element 0. |
# to dump element 0. |
# |
# |
sub debug_dump_table { |
#sub debug_dump_table { |
my $lastrow = $#Apache::londefdef::table; |
# my $lastrow = $#Apache::londefdef::table; |
&Apache::lonnet::logthis("Dumping table: Last row index: $lastrow"); |
# &Apache::lonnet::logthis("Dumping table: Last row index: $lastrow"); |
my $row; |
# my $row; |
for ($row =0; $row <= $lastrow; $row++ ) { |
# for ($row =0; $row <= $lastrow; $row++ ) { |
my $text = Dumper($Apache::londefdef::table[$row]); |
# my $text = Dumper($Apache::londefdef::table[$row]); |
&Apache::lonnet::logthis("table [ $row ]".$text); |
# &Apache::lonnet::logthis("table [ $row ]".$text); |
|
# |
} |
# } |
} |
#} |
sub initialize_londefdef { |
sub initialize_londefdef { |
$Apache::londefdef::TD_redirection=0; |
$Apache::londefdef::TD_redirection=0; |
@Apache::londefdef::table = (); |
@Apache::londefdef::table = (); |
Line 2187 sub end_table {
|
Line 2187 sub end_table {
|
#fill the table |
#fill the table |
for (my $in=0;$in<=$Apache::londefdef::table[-1]{'row_number'};$in++) { |
for (my $in=0;$in<=$Apache::londefdef::table[-1]{'row_number'};$in++) { |
for (my $jn=0;$jn<=$#fwidth;$jn++) { |
for (my $jn=0;$jn<=$#fwidth;$jn++) { |
|
# |
|
# Do the appropriate magic if this has a colspan |
|
# |
|
my $colspan = $Apache::londefdef::table[-1]{'colspan'}[$in][$jn]; |
|
if ($colspan > 1) { |
|
$output .= '\multicolumn{'. |
|
$colspan |
|
.'}{|l|}{'; |
|
} |
if ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'c') { |
if ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'c') { |
# $output.='\vspace*{-6 mm}\begin{center}'; |
# $output.='\vspace*{-6 mm}\begin{center}'; |
$output.='\begin{center}'; |
$output.='\begin{center}'; |
Line 2200 sub end_table {
|
Line 2209 sub end_table {
|
} elsif ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'r') { |
} elsif ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'r') { |
$output.='} '; |
$output.='} '; |
} |
} |
|
# Close off the colspan... |
|
# |
|
if ($colspan > 1) { |
|
$output .= '}'; |
|
$jn += $colspan-1; # Adjust for number of rows really left. |
|
} |
if ($jn!=$#fwidth) {$output.=' '.$Apache::londefdef::table[-1]{'vinc'};} |
if ($jn!=$#fwidth) {$output.=' '.$Apache::londefdef::table[-1]{'vinc'};} |
} |
} |
$output.=' \\\\ '.$Apache::londefdef::table[-1]{'hinc'}.' '; |
$output.=' \\\\ '.$Apache::londefdef::table[-1]{'hinc'}.' '; |
Line 2346 sub start_td_tex {
|
Line 2361 sub start_td_tex {
|
|
|
sub end_td_tex { |
sub end_td_tex { |
my ($parstack,$parser,$safeeval) = @_; |
my ($parstack,$parser,$safeeval) = @_; |
my $current_row = $Apache::londefdef::table[-1]{'row_number'}; |
my $current_row = $Apache::londefdef::table[-1]{'row_number'}; |
my $data=&Apache::lonxml::endredirection(); |
my $current_column = $Apache::londefdef::table[-1]{'counter_columns'}; |
|
my $data = &Apache::lonxml::endredirection(); |
|
|
|
|
|
|
|
|
my $TeXwidth=&Apache::lonxml::get_param('TeXwidth',$parstack,$safeeval,undef,0); |
my $TeXwidth=&Apache::lonxml::get_param('TeXwidth',$parstack,$safeeval,undef,0); |
if (defined $TeXwidth) { |
if (defined $TeXwidth) { |
push @ {$Apache::londefdef::table[-1]{'objectlen'}[$Apache::londefdef::table[-1]{'row_number'}] },'0'; |
push @ {$Apache::londefdef::table[-1]{'objectlen'}[$Apache::londefdef::table[-1]{'row_number'}] },'0'; |
Line 2424 sub end_td_tex {
|
Line 2444 sub end_td_tex {
|
push @ {$Apache::londefdef::table[-1]{'minlen'}[$Apache::londefdef::table[-1]{'row_number'}] },$min_length; |
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++) { |
# 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'}}; |
my $nested = shift @{$Apache::londefdef::table[-1]{'include'}}; |
$nested =~ s/\\end\{tabular\}\\strut\\\\/\\end\{tabular\}/; |
$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\}/$Apache::londefdef::table[-1]{'include'}[$in]/; |
Line 2433 sub end_td_tex {
|
Line 2457 sub end_td_tex {
|
} |
} |
# Should be be killing off the 'include' elements as they're used up? |
# Should be be killing off the 'include' elements as they're used up? |
push @ {$Apache::londefdef::table[-1]{'content'}[-1] },$data; |
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 |
|
# cell..this requires that counter_columns also be adjusted accordingly |
|
# so that the next bunch of text goes in the right cell. Note that since |
|
# counter_columns is incremented in the start_td_tex, we adjust by colspan-1. |
|
# |
|
|
|
$Apache::londefdef::table[-1]{'colspan'}[$current_row][$current_column] = $colspan; |
|
$Apache::londefdef::table[-1]{'counter_columns'} += $colspan -1; |
|
|
|
# Put empty text in spanned cols. |
|
|
|
for (my $i = 0; $i < ($colspan -1); $i++) { |
|
push @ {$Apache::londefdef::table[-1]{'content'}[-1] },''; |
|
} |
|
|
|
|
return ''; |
return ''; |
} |
} |
|
|