Diff for /loncom/xml/londefdef.pm between versions 1.341 and 1.350

version 1.341, 2006/11/06 11:39:02 version 1.350, 2007/01/08 19:09:23
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 LONCAPA();
 # use Data::Dumper;  # use Data::Dumper;
   
 BEGIN {  BEGIN {
Line 1916  sub start_table { Line 1917  sub start_table {
     if ($target eq 'web' || $target eq 'webgrade') {      if ($target eq 'web' || $target eq 'webgrade') {
  $currentstring .= $token->[4];        $currentstring .= $token->[4];     
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  my $aa = {};   push(@Apache::londefdef::table, {}); 
  push @Apache::londefdef::table, $aa;   
  $Apache::londefdef::table[-1]{'row_number'} = -1;   $Apache::londefdef::table[-1]{'row_number'} = -1;
         #maximum table's width (default coincides with text line length)          #maximum table's width (default coincides with text line length)
  if ($#Apache::londefdef::table==0) {   if ($#Apache::londefdef::table==0) {
Line 2251  sub end_table { Line 2251  sub end_table {
     }      }
     $have_rowspan++;      $have_rowspan++;
     $output .= '\multirow{'.$rowspan.'}[0]{*}{';      $output .= '\multirow{'.$rowspan.'}[0]{*}{';
       
       $Apache::londefdef::table[-1]{'content'}[$in][$jn] =~
    s{^\s*\\par\s*}{};
       $Apache::londefdef::table[-1]{'content'}[$in][$jn] =~
    s{\s*\\vskip\s*0pt\s*$}{};
   
     #      #
     # If we did not throw in a multicolumn to align, then add       # If we did not throw in a multicolumn to align, then add 
     # an extra {      # an extra {
Line 2859  sub start_img { Line 2865  sub start_img {
     &Apache::lonxml::debug("$src exists");      &Apache::lonxml::debug("$src exists");
     my ($height_param,$width_param)=      my ($height_param,$width_param)=
  &image_size($origsrc,0.3,$parstack,$safeeval);   &image_size($origsrc,0.3,$parstack,$safeeval);
     my $destpath = $path;  
     $destpath    =~ s/ /\_/g; # Spaces in path cause LaTex to vomit.  
     my $destfile = $file;  
     $destfile    =~ s/ /\_/g;  
     my $size;      my $size;
     if ($width_param)  { $size.='width='.$width_param.' mm,'; }      if ($width_param)  { $size.='width='.$width_param.' mm,'; }
     if ($height_param) { $size.='height='.$height_param.' mm]'; }      if ($height_param) { $size.='height='.$height_param.' mm]'; }
     # Default size if not able to extract that (e.g. eps image).      # Default size if not able to extract that (e.g. eps image).
           
     # &Apache::lonnet::logthis("Size = $size");      # &Apache::lonnet::logthis("Size = $size");
     if ($size eq "0 mm") {  
  $size = "50 mm]";     # Default to 1 column width for 2 column.  
     }  
           
     $size='['.$size;      $size='['.$size;
     $size=~s/,$/]/;       $size=~s/,$/]/; 
     $currentstring .= '\graphicspath{{'.$destpath.'}}'      $currentstring .= '\graphicspath{{'.$path.'}}'
  .'\includegraphics'.$size.'{'.$destfile.'} ';   .'\includegraphics'.$size.'{'.$file.'} ';
   
     #    If there's an alignment specification we need to honor it here.      #    If there's an alignment specification we need to honor it here.
     #    For the horizontal alignments, we will also honor the      #    For the horizontal alignments, we will also honor the
Line 2894  sub start_img { Line 2893  sub start_img {
     } elsif ($align eq "left")   {       } elsif ($align eq "left")   { 
  if ($latex_rendering eq "parpic") {    if ($latex_rendering eq "parpic") { 
     $currentstring = '\parpic[l]{'.$currentstring.'}';      $currentstring = '\parpic[l]{'.$currentstring.'}';
  } else {                                     # wrapfig render   } elsif ($latex_rendering eq "parbox") {
     $currentstring = '\begin{wrapfigure}{l}{'.$width_param.'mm}'      $currentstring = '\begin{minipage}[l]{'.$width_param.'mm}'
    .$currentstring.'\end{minipage}';
    } elsif ($latex_rendering eq "wrapfigure"
    || $latex_rendering ne 'none') {  # wrapfig render
       $currentstring = 
    '\begin{wrapfigure}{l}{'.$width_param.'mm}'
  .'\scalebox{1.0}{'.$currentstring.'}\end{wrapfigure}';   .'\scalebox{1.0}{'.$currentstring.'}\end{wrapfigure}';
  }   }
     } elsif ($align eq "right")  {         } elsif ($align eq "right")  {   
  if ($latex_rendering eq "parpic") {   if ($latex_rendering eq "parpic") {
     $currentstring = '\parpic[r]{'.$currentstring.'}';      $currentstring = '\parpic[r]{'.$currentstring.'}';
  } else {                                 # wrapfig rendering   } elsif ($latex_rendering eq "parbox") {
     $currentstring = '\begin{wrapfigure}{r}{'.$width_param.'mm}'      $currentstring =  '\begin{minipage}[r]{'.$width_param.'mm}'
    .$currentstring.'\end{minipage}';
    } elsif ($latex_rendering eq "wrapfigure"
    || $latex_rendering ne 'none') {  # wrapfig render
       $currentstring = 
    '\begin{wrapfigure}{r}{'.$width_param.'mm}'
  .'\scalebox{1.0}{'.$currentstring.'}\end{wrapfigure}';   .'\scalebox{1.0}{'.$currentstring.'}\end{wrapfigure}';
   
  }   }
     } else { # Bottom is also default.      } else { # Bottom is also default.
  # $currentstring = '\raisebox{'.$height_param.'mm}{'.$currentstring.'}';   # $currentstring = '\raisebox{'.$height_param.'mm}{'.$currentstring.'}';
Line 2936  sub start_img { Line 2944  sub start_img {
  $currentstring .=&Apache::edit::select_arg('Alignment:','align',   $currentstring .=&Apache::edit::select_arg('Alignment:','align',
    ['','bottom','middle','top','left','right'],$token,5);     ['','bottom','middle','top','left','right'],$token,5);
  $currentstring .=&Apache::edit::select_arg('TeXwrap:', 'TeXwrap',   $currentstring .=&Apache::edit::select_arg('TeXwrap:', 'TeXwrap',
    ['', 'parbox', 'parpic'], $token, 2);     ['', 'none','parbox', 'parpic', 'wrapfigure'], $token, 2);
  $currentstring .=&Apache::edit::select_arg('Encrypt URL:','encrypturl',   $currentstring .=&Apache::edit::select_arg('Encrypt URL:','encrypturl',
    ['no','yes'], $token, 2);     ['no','yes'], $token, 2);
  $currentstring .=&Apache::edit::end_row().&Apache::edit::start_spanning_row();   $currentstring .=&Apache::edit::end_row().&Apache::edit::start_spanning_row();
Line 4243  sub get_eps_image { Line 4251  sub get_eps_image {
  &Apache::lonnet::repcopy($orig_src); # Failure is not completely fatal.   &Apache::lonnet::repcopy($orig_src); # Failure is not completely fatal.
     }      }
     &Apache::lonxml::debug("get_eps_image: Original image: $orig_src");      &Apache::lonxml::debug("get_eps_image: Original image: $orig_src");
     my ($spath, $sname, $sext) = fileparse($src, qr/\.(gif|png|jpg|jpeg)/i);      my ($spath, $sname, $sext) = &fileparse($src, qr/\.(gif|png|jpg|jpeg)/i);
     $src=~s/\.(gif|png|jpg|jpeg)$/\.eps/i;      $src=~s/\.(gif|png|jpg|jpeg)$/\.eps/i;
     $src=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$src);      $src=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$src);
     &Apache::lonxml::debug("Filelocation gives: $src");      &Apache::lonxml::debug("Filelocation gives: $src");
     if (! -e $src) {      if (! -e $src) {
  # &Apache::lonnet::logthis("$src does not exist...repcopying");  
  &Apache::lonxml::debug("$src does not exist");   &Apache::lonxml::debug("$src does not exist");
  if (&Apache::lonnet::repcopy($src) ne 'ok' ) {   if (&Apache::lonnet::repcopy($src) ne 'ok' ) {
     &Apache::lonxml::debug("Repcopy of $src failed (1)");      &Apache::lonxml::debug("Repcopy of $src failed (1)");
Line 4260  sub get_eps_image { Line 4267  sub get_eps_image {
     &Apache::lonxml::debug("repcopy of $src ... $didrepcopy");      &Apache::lonxml::debug("repcopy of $src ... $didrepcopy");
     if ( (not -e $src) ||      if ( (not -e $src) ||
  ($didrepcopy ne 'ok')) {   ($didrepcopy ne 'ok')) {
  # &Apache::lonnet::logthis("queuing $orig_src for dynamic eps gen");  
  &Apache::lonxml::debug("Failed to find or replicate $src");   &Apache::lonxml::debug("Failed to find or replicate $src");
   
  #if replication failed try to produce eps file dynamically   #if replication failed try to produce eps file dynamically
Line 4270  sub get_eps_image { Line 4276  sub get_eps_image {
  my $newsrc=$orig_src;   my $newsrc=$orig_src;
  $newsrc =~ s|(.*)/res/|/home/httpd/html/res/|;   $newsrc =~ s|(.*)/res/|/home/httpd/html/res/|;
  &Apache::lonxml::debug("queueing $newsrc for dynamic eps production.");   &Apache::lonxml::debug("queueing $newsrc for dynamic eps production.");
  print FILE "$newsrc\n";   print FILE ("$newsrc\n");
  close FILE;   close(FILE);
  $src=~s|/home/httpd/html/res|/home/httpd/prtspool|;   $src=~s|/home/httpd/html/res|/home/httpd/prtspool|;
  $src=~s|/home/([^/]*)/public_html/|/home/httpd/prtspool/$1/|;   $src=~s|/home/([^/]*)/public_html/|/home/httpd/prtspool/$1/|;
  if ($sext ne "") { # Put the ext. back in to uniquify.   if ($sext ne "") { # Put the ext. back in to uniquify.
Line 4279  sub get_eps_image { Line 4285  sub get_eps_image {
  }   }
   
     }      }
   
  }   }
     } else {      } else {
 # &Apache::lonnet::logthis("$src exists. queueing for copy.");  
 # &Apache::lonnet::logthis("Got eps already.. queue for copy");  
  # If the postscript file has spaces in its name,   # If the postscript file has spaces in its name,
  # LaTeX will gratuitiously vomit.  Therefore   # LaTeX will gratuitiously vomit.  Therefore
  # queue such files for copy with " " replaced by "_".   # queue such files for copy with " " replaced by "_".
Line 4290  sub get_eps_image { Line 4295  sub get_eps_image {
  my $newsrc = $orig_src;   my $newsrc = $orig_src;
  $newsrc    =~  s|(.*)/res/|/home/httpd/html/res/|;   $newsrc    =~  s|(.*)/res/|/home/httpd/html/res/|;
  open(FILE,">>/home/httpd/prtspool/$env{'user.name'}_$env{'user.domain'}_printout.dat");   open(FILE,">>/home/httpd/prtspool/$env{'user.name'}_$env{'user.domain'}_printout.dat");
 # &Apache::lonnet::logthis("Queueing $newsrc for copy");   print FILE "$src\n";
  print FILE "$newsrc\n";  
  close FILE;   close FILE;
  $src=~s|/home/httpd/html/res|/home/httpd/prtspool|;   $src=~s|/home/httpd/html/res|/home/httpd/prtspool|;
  $src=~s|/home/([^/]*)/public_html/|/home/httpd/prtspool/$1/|;   $src=~s|/home/([^/]*)/public_html/|/home/httpd/prtspool/$1/|;
     }      }
     my ($path,$file)=($src=~m|(.*)/([^/]*)$|);      my ($path,$file)=($src=~m|(.*)/([^/]*)$|);
       $path =~ s/ /\_/g;
       $file =~ s/ /\_/g;
     &Apache::lonxml::debug("get_eps_image returning: $path / $file<BR />");      &Apache::lonxml::debug("get_eps_image returning: $path / $file<BR />");
     return ($path.'/',$file);      return ($path.'/',$file);
 }  }
Line 4308  sub eps_generation { Line 4314  sub eps_generation {
     print $temp_file "$src\n";      print $temp_file "$src\n";
     my $newsrc = $src;      my $newsrc = $src;
     $newsrc =~ s/(\.gif|\.jpg|\.jpeg)$/\.eps/i;      $newsrc =~ s/(\.gif|\.jpg|\.jpeg)$/\.eps/i;
     $newsrc=~s/\/home\/httpd\/html\/res//;      $newsrc=~s{/home/httpd/html/res}{};
     $newsrc=~s/\/home\/([^\/]*)\/public_html\//\/$1\//;      $newsrc=~s{/home/($LONCAPA::username_re)/public_html/}{/$1/};
     $newsrc=~s/\/\.\//\//;      $newsrc=~s{/\./}{/};
     $newsrc=~s/\/([^\/]+)\.(ps|eps)/\//;      $newsrc=~s{/([^/]+)\.(ps|eps)}{/};
     if ($newsrc=~/\/home\/httpd\/lonUsers\//) {      if ($newsrc=~m{/home/httpd/lonUsers/}) {
  $newsrc=~s/\/home\/httpd\/lonUsers//;   $newsrc=~s{/home/httpd/lonUsers}{};
  $newsrc=~s/\/([^\/]+)\/(\w)\/(\w)\/(\w)\//\/$1\//;   $newsrc=~s{/($LONCAPA::domain_re)/./././}{/$1/};
     }      }
     if ($newsrc=~/\/userfiles\//) {      if ($newsrc=~m{/userfiles/}) {
  return ' \graphicspath{{'.$newsrc.'}}\includegraphics[width='.$width_param.' mm]{'.$file.'} ';   return ' \graphicspath{{'.$newsrc.'}}\includegraphics[width='.$width_param.' mm]{'.$file.'} ';
     } else {      } else {
  return ' \graphicspath{{/home/httpd/prtspool'.$newsrc.'}}\includegraphics[width='.$width_param.' mm]{'.$file.'} ';   return ' \graphicspath{{/home/httpd/prtspool'.$newsrc.'}}\includegraphics[width='.$width_param.' mm]{'.$file.'} ';

Removed from v.1.341  
changed lines
  Added in v.1.350


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