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

version 1.302.2.1, 2006/01/04 23:15:52 version 1.305, 2005/12/23 00:12:32
Line 68  BEGIN { Line 68  BEGIN {
 #    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 {
Line 594  sub end_body { Line 593  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,$tagstack) = @_;      my ($target,$token) = @_;
     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 .= &center_correction();  
  }  
  $currentstring .= '\begin{center}';     $currentstring .= '\begin{center}';  
     }      }
     return $currentstring;      return $currentstring;
 }  }
   
 sub end_center {  sub end_center {
     my ($target,$token,$tagstack) = @_;      my ($target,$token) = @_;
     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 .= &center_correction();  
  }  
     }      }
     return $currentstring;      return $currentstring;
 }  }
Line 1192  sub start_p { Line 1182  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 = &center_correction().$currentstring;  
  $closing_string .= &center_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 1537  sub start_div { Line 1523  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 = &center_correction().$currentstring;  
  $endstring .= &center_correction();  
     }  
  }   }
  elsif ($align eq 'right') {   elsif ($align eq 'right') {
     $currentstring .= '\begin{flushright}';      $currentstring .= '\begin{flushright}';
Line 1963  sub start_table { Line 1945  sub start_table {
  # in either case it can be a percentage or absolute width.   # in either case it can be a percentage or 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 (!defined($TeXwidth)) {   if (not defined $TeXwidth) {
     $TeXwidth = &Apache::lonxml::get_param('width',$parstack,$safeeval,undef,1);      $TeXwidth = &Apache::lonxml::get_param('width',$parstack,$safeeval,undef,1);
     if (!defined($TeXwidth)) { $TeXwidth = $textwidth; }  
  } else {   } else {
     $Apache::londefdef::table[-1]{'forcedtablewidth'} = 1;      $Apache::londefdef::table[-1]{'forcedtablewidth'} = 1;
  }   }
Line 2019  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 2204  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.=&center_correction().'\begin{center}';      # $output.='\vspace*{-6 mm}\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}'.&center_correction();      # $output.='\end{center}\vspace*{-6 mm}';
       $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.='} ';
  }   }
    #  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 2361  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 2451  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 '';
 }  }
   
Line 2648  sub start_img { Line 2705  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 (0 && &is_inside_of($tagstack, "table")) {  
  $align = "right";      # Force wraptext use.    $align = "right";      # Force wraptext use. 
     } 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.

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


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