version 1.299, 2005/12/01 18:46:17
|
version 1.302.2.3, 2006/01/13 21:05:57
|
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 71 BEGIN {
|
Line 71 BEGIN {
|
# |
# |
# } |
# } |
#} |
#} |
|
|
sub initialize_londefdef { |
sub initialize_londefdef { |
$Apache::londefdef::TD_redirection=0; |
$Apache::londefdef::TD_redirection=0; |
@Apache::londefdef::table = (); |
@Apache::londefdef::table = (); |
Line 595 sub end_body {
|
Line 594 sub end_body {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
|
# \begin{center} causes a new paragprah spacing that looks odd inside |
|
# of a table cell |
|
sub center_correction { return '\vspace*{-6 mm}'; } |
#-- <center> tag (end tag required) |
#-- <center> tag (end tag required) |
sub start_center { |
sub start_center { |
my ($target,$token) = @_; |
my ($target,$token,$tagstack) = @_; |
my $currentstring = &end_p(); # Close off any prior para. |
my $currentstring = &end_p(); # Close off any prior para. |
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring .= $token->[4]; |
$currentstring .= $token->[4]; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
|
if (&is_inside_of($tagstack, "table")) { |
|
$currentstring .= ¢er_correction(); |
|
} |
$currentstring .= '\begin{center}'; |
$currentstring .= '\begin{center}'; |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
sub end_center { |
sub end_center { |
my ($target,$token) = @_; |
my ($target,$token,$tagstack) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring = $token->[2]; |
$currentstring = $token->[2]; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$currentstring = '\end{center}'; |
$currentstring = '\end{center}'; |
|
if (&is_inside_of($tagstack, "table")) { |
|
#$currentstring .= ¢er_correction(); |
|
} |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
Line 1184 sub start_p {
|
Line 1192 sub start_p {
|
if ($align eq 'center') { |
if ($align eq 'center') { |
$currentstring .='\begin{center}\par'; |
$currentstring .='\begin{center}\par'; |
$closing_string = '\end{center}'; |
$closing_string = '\end{center}'; |
|
if (&is_inside_of($tagstack, "table")) { |
|
$currentstring = ¢er_correction().$currentstring; |
|
#$closing_string .= ¢er_correction(); |
|
} |
} elsif ($align eq 'right') { |
} elsif ($align eq 'right') { |
$currentstring.='\makebox['.$env{'form.textwidth'}.']{\hfill\llap{'; |
$currentstring.='\makebox['.$env{'form.textwidth'}.']{\hfill\llap{'; |
$closing_string= '}}'; |
$closing_string= '}}'; |
Line 1525 sub start_div {
|
Line 1537 sub start_div {
|
if ($align eq 'center') { |
if ($align eq 'center') { |
$currentstring .= '\begin{center}'; |
$currentstring .= '\begin{center}'; |
$endstring = '\end{center}'; |
$endstring = '\end{center}'; |
|
if (&is_inside_of($tagstack, "table")) { |
|
$currentstring = ¢er_correction().$currentstring; |
|
#$endstring .= ¢er_correction(); |
|
} |
} |
} |
elsif ($align eq 'right') { |
elsif ($align eq 'right') { |
$currentstring .= '\begin{flushright}'; |
$currentstring .= '\begin{flushright}'; |
Line 1945 sub start_table {
|
Line 1961 sub start_table {
|
|
|
# width either comes forced from the TeXwidth or the width parameters. |
# width either comes forced from the TeXwidth or the width parameters. |
# in either case it can be a percentage or absolute width. |
# in either case it can be a percentage or absolute width. |
|
# in the width case we ignore absolute width |
my $TeXwidth = &Apache::lonxml::get_param('TeXwidth',$parstack,$safeeval,undef,0); |
my $TeXwidth = &Apache::lonxml::get_param('TeXwidth',$parstack,$safeeval,undef,0); |
if (not defined $TeXwidth) { |
if (!defined($TeXwidth)) { |
$TeXwidth = &Apache::lonxml::get_param('width',$parstack,$safeeval,undef,1); |
my $htmlwidth = &Apache::lonxml::get_param('width',$parstack, |
|
$safeeval,undef,1); |
|
if ($htmlwidth =~ /%/) { |
|
$TeXwidth = $htmlwidth; |
|
} else { |
|
$TeXwidth = $textwidth; |
|
} |
} else { |
} else { |
$Apache::londefdef::table[-1]{'forcedtablewidth'} = 1; |
$Apache::londefdef::table[-1]{'forcedtablewidth'} = 1; |
} |
} |
Line 2189 sub end_table {
|
Line 2210 sub end_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++) { |
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.=¢er_correction().'\begin{center}'; |
$output.='\begin{center}'; |
|
} elsif ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'r') { |
} elsif ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'r') { |
$output.=' \hfill \llap{' |
$output.=' \hfill \llap{' |
} |
} |
$output.=$Apache::londefdef::table[-1]{'content'}[$in][$jn]; |
$output.=$Apache::londefdef::table[-1]{'content'}[$in][$jn]; |
if ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'c') { |
if ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'c') { |
# $output.='\end{center}\vspace*{-6 mm}'; |
$output.='\end{center}';#.¢er_correction(); |
$output.='\end{center}'; |
|
} elsif ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'r') { |
} elsif ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'r') { |
$output.='} '; |
$output.='} '; |
} |
} |
Line 2218 sub end_table {
|
Line 2237 sub end_table {
|
my $min_nested_width = 0; |
my $min_nested_width = 0; |
my $max_nested_width = 0; |
my $max_nested_width = 0; |
for (my $col = 0; $col <= $Apache::londefdef::table[-1]{'counter_columns'}; $col++) { |
for (my $col = 0; $col <= $Apache::londefdef::table[-1]{'counter_columns'}; $col++) { |
|
|
$min_nested_width += $min_len[$col]; |
$min_nested_width += $min_len[$col]; |
$max_nested_width += $max_len[$col]; |
$max_nested_width += $max_len[$col]; |
|
|
} |
} |
# Fudge in an extra 5 mm for borders etc: |
# Fudge in an extra 5 mm for borders etc: |
|
|
Line 2262 sub start_tr {
|
Line 2281 sub start_tr {
|
push @ {$Apache::londefdef::table[-1]{'rows'} }, 'l'; |
push @ {$Apache::londefdef::table[-1]{'rows'} }, 'l'; |
} |
} |
push ( @{ $Apache::londefdef::table[-1]{'rowdata'} }, $Apache::londefdef::table[-1]{'hinc'}); |
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; |
$Apache::londefdef::table[-1]{'counter_columns'} = -1; |
push @ {$Apache::londefdef::table[-1]{'TeXlen'}}, []; |
push @ {$Apache::londefdef::table[-1]{'TeXlen'}}, []; |
push @ {$Apache::londefdef::table[-1]{'objectlen'}}, []; |
push @ {$Apache::londefdef::table[-1]{'objectlen'}}, []; |
Line 2281 sub end_tr {
|
Line 2304 sub end_tr {
|
if ($Apache::londefdef::TD_redirection) { |
if ($Apache::londefdef::TD_redirection) { |
&end_td_tex($parstack,$parser,$safeeval); |
&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'}; |
|
} |
|
|
|
|
|
|
Line 2416 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 = $Apache::londefdef::table[-1]{'include'}[$in]; |
|
&Apache::lonnet::logthis("Nested: $nested"); |
|
$nested =~ s/\\end\{tabular\}\\strut\\\\/\\end\{tabular\}/; |
my $nested_count = $#{$Apache::londefdef::table[-1]{'include'}}; # This one is constant... |
&Apache::lonnet::logthis("After sub: $nested"); |
for (my $in=0; $in<=$nested_count; $in++) { |
# $data=~s/\\keephidden\{NEW TABLE ENTRY\}/$Apache::londefdef::table[-1]{'include'}[$in]/; |
my $nested = shift @{$Apache::londefdef::table[-1]{'include'}}; |
$data =~ s/\\keephidden\{NEW TABLE ENTRY\}/$nested/; |
$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; |
push @ {$Apache::londefdef::table[-1]{'content'}[-1] },$data; |
return''; |
return ''; |
} |
} |
|
|
sub end_td { |
sub end_td { |
Line 2621 sub start_img {
|
Line 2653 sub start_img {
|
$safeeval, |
$safeeval, |
undef,1)); |
undef,1)); |
if(!$align) { |
if(!$align) { |
|
# disabled for now see BUG#4535 |
if (&is_inside_of($tagstack, "table")) { |
if (&is_inside_of($tagstack, "table")) { |
$align = "right"; # Force wraptext use. |
$align = "top"; # Force top of image to top of table cell |
} else { |
} else { |
$align = "bottom"; # This is html's default so it's ours too. |
$align = "bottom"; # This is html's default so it's ours too. |
} |
} |