Diff for /loncom/xml/londefdef.pm between versions 1.307 and 1.319

version 1.307, 2006/01/03 23:41:52 version 1.319, 2006/02/05 18:32:40
Line 105  sub start_m { Line 105  sub start_m {
     $inside=&Apache::run::evaluate($inside,$safeeval,$$parstack[-1]);      $inside=&Apache::run::evaluate($inside,$safeeval,$$parstack[-1]);
     #&Apache::lonxml::debug("M is evaulated to:$inside:");      #&Apache::lonxml::debug("M is evaulated to:$inside:");
  }   }
    my $tex = $inside;
  my $display=&Apache::lonxml::get_param('display',$parstack,$safeeval);   my $display=&Apache::lonxml::get_param('display',$parstack,$safeeval);
  $currentstring = &Apache::lontexconvert::converted(\$inside,$display);   $currentstring = &Apache::lontexconvert::converted(\$inside,$display);
  if ($Apache::lontexconvert::errorstring) {   if ($Apache::lontexconvert::errorstring) {
     &Apache::lonxml::warning("tth error: ".      my $errormsg='<pre>'.&HTML::Entities::encode($Apache::lontexconvert::errorstring,'<>&"').'</pre> occured while attempting to convert this TeX: <pre>';
      $Apache::lontexconvert::errorstring);      $tex = &HTML::Entities::encode($tex,'<>&"');
       my ($linenumber) =
    ($Apache::lontexconvert::errorstring =~ /Line (\d+)/);
       if (defined($linenumber)) {
    my @tex=split("\n",$tex);
    $tex[$linenumber]='<b><font color="red">'.
       $tex[$linenumber].'</font></b>';
    $tex=join("\n",@tex);
       }
       &Apache::lonxml::warning($errormsg.$tex.'</pre>');
     $Apache::lontexconvert::errorstring='';      $Apache::lontexconvert::errorstring='';
  }   }
  #&Apache::lonxml::debug("M is ends with:$currentstring:");   #&Apache::lonxml::debug("M is ends with:$currentstring:");
Line 594  sub end_body { Line 604  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 .= &center_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];     
Line 1178  sub start_p { Line 1194  sub start_p {
     $closing_string = '</p>'; # Deal correctly with <p /> e.g.      $closing_string = '</p>'; # Deal correctly with <p /> e.g.
  }   }
     } elsif ($target eq 'tex' && !$para_disabled) {      } elsif ($target eq 'tex' && !$para_disabled) {
   
  $currentstring .= &end_p(); # close off prior para if in progress.   $currentstring .= &end_p(); # close off prior para if in progress.
  my $align=&Apache::lonxml::get_param('align',$parstack,$safeeval,undef,1);   my $align=&Apache::lonxml::get_param('align',$parstack,$safeeval,undef,1);
  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;
       }
  } 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 1191  sub start_p { Line 1211  sub start_p {
     $closing_string = '}\hfill}';      $closing_string = '}\hfill}';
  } else {   } else {
             $currentstring.='\par ';              $currentstring.='\par ';
     $closing_string = '\strut\\\\\strut ';      if (&is_inside_of($tagstack, 'table')) {
    $closing_string = '\vskip 0pt'; # Seems to be consistent with <p> in tables.
       } else {
    $closing_string = '\strut\\\\\strut ';
       }
         }          }
   
     }      }
Line 1524  sub start_div { Line 1548  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;
       }
  }   }
  elsif ($align eq 'right') {   elsif ($align eq 'right') {
     $currentstring .= '\begin{flushright}';      $currentstring .= '\begin{flushright}';
Line 1944  sub start_table { Line 1971  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 1958  sub start_table { Line 1990  sub start_table {
             $Apache::londefdef::table[-1]{'width'}=$1*$textwidth/100;              $Apache::londefdef::table[-1]{'width'}=$1*$textwidth/100;
  } else {   } else {
     $Apache::londefdef::table[-1]{'width'}=$TeXwidth;      $Apache::londefdef::table[-1]{'width'}=$TeXwidth;
  }           }
           #  In the end, however the table width cannot be wider than $textwidth...
   
    if ($Apache::londefdef::table[-1]{'width'} > $textwidth) {
       $Apache::londefdef::table[-1]{'width'} = $textwidth;
    }
   
         #table's border          #table's border
  my $border = &Apache::lonxml::get_param('border',$parstack,$safeeval);    my $border = &Apache::lonxml::get_param('border',$parstack,$safeeval); 
Line 2211  sub end_table { Line 2248  sub end_table {
  }   }
   
  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.=&center_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}';      $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 2745  sub start_img { Line 2780  sub start_img {
   $safeeval,    $safeeval,
   undef,1));    undef,1));
  if(!$align) {   if(!$align) {
     if (&is_inside_of($tagstack, "table")) {  
  $align = "right";      # Force wraptext use.   
     } 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.
     }  
  }   }
  #   #
  &Apache::lonxml::debug("Alignemnt = $align");   &Apache::lonxml::debug("Alignemnt = $align");
Line 2764  sub start_img { Line 2795  sub start_img {
     $parstack,      $parstack,
     $safeeval,      $safeeval,
     undef,0);      undef,0);
  &Apache::lonxml::debug("LaTeX rendering = $latex_rendering");   # &Apache::lonxml::debug("LaTeX rendering = $latex_rendering");
  if(!$latex_rendering) {   if(!$latex_rendering) {
     $latex_rendering = "texwrap";   $latex_rendering = "texwrap";
    }
    # using texwrap inside a table does not work. So, if after all of this,
    # texwrap is on, we turn it off if we detect we're in a table:
    #
    if (($latex_rendering eq 'texwrap') && &is_inside_of($tagstack, "table")) {
       $latex_rendering = 'parpic';
  }   }
  &Apache::lonxml::debug("LaTeX rendering = $latex_rendering image file: $src");   # &Apache::lonxml::debug("LaTeX rendering = $latex_rendering image file: $src");
   
  #if original gif/jpg/png file exist do following:   #if original gif/jpg/png file exist do following:
  my $origsrc=$src;   my $origsrc=$src;
Line 3142  sub start_pre { Line 3179  sub start_pre {
  $currentstring .= $token->[4];   $currentstring .= $token->[4];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $currentstring .= '\begin{verbatim}';   $currentstring .= '\begin{verbatim}';
    &Apache::lonxml::disable_LaTeX_substitutions();
     }       } 
     return $currentstring;      return $currentstring;
 }  }
Line 3153  sub end_pre { Line 3191  sub end_pre {
  $currentstring .= $token->[2];   $currentstring .= $token->[2];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $currentstring .= '\end{verbatim}';   $currentstring .= '\end{verbatim}';
    &Apache::lonxml::enable_LaTeX_substitutions();
     }      }
     return $currentstring;      return $currentstring;
 }  }

Removed from v.1.307  
changed lines
  Added in v.1.319


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