Diff for /loncom/xml/londefdef.pm between versions 1.301 and 1.305

version 1.301, 2005/12/06 22:37:00 version 1.305, 2005/12/23 00:12:32
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 2002  sub end_table { Line 2001  sub end_table {
  my $inmemory = '';   my $inmemory = '';
  my $output = '';   my $output = '';
  my $WARNING='';   my $WARNING='';
    # &debug_dump_table($Apache::londefdef::table[-1]);
         #width of columns from TeXwidth attributes          #width of columns from TeXwidth attributes
   
  for (my $in=0;$in<=$Apache::londefdef::table[-1]{'row_number'};$in++) {   for (my $in=0;$in<=$Apache::londefdef::table[-1]{'row_number'};$in++) {
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();
   
       #  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);      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 2469  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 2432  sub end_td_tex { Line 2481  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.
   
       my $colspan = &Apache::lonxml::get_param('colspan', $parstack, $safeeval, undef, 0);
       if (!$colspan) {
    $colspan = 1;
       }
   
   
       #  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 '';
 }  }
   

Removed from v.1.301  
changed lines
  Added in v.1.305


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>