--- loncom/xml/londefdef.pm 2005/03/01 03:21:58 1.259 +++ loncom/xml/londefdef.pm 2005/03/31 15:54:33 1.265 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Tags Default Definition Module # -# $Id: londefdef.pm,v 1.259 2005/03/01 03:21:58 albertel Exp $ +# $Id: londefdef.pm,v 1.265 2005/03/31 15:54:33 albertel Exp $ # # # Copyright Michigan State University Board of Trustees @@ -156,7 +156,6 @@ sub start_html { if ($target eq 'web' || $target eq 'edit') { $currentstring = &Apache::lonxml::xmlbegin(); } elsif ($target eq 'tex') { - @Apache::londefdef::table = (); $currentstring .= '\documentclass[letterpaper]{article}'; if (($ENV{'form.latex_type'}=~'batchmode') || (!$ENV{'request.role.adv'})) {$currentstring .='\batchmode';} @@ -2495,16 +2494,22 @@ sub start_img { if(!$latex_rendering) { $latex_rendering = "parbox"; } - &Apache::lonxml::debug("LaTeX rendering = $latex_rendering"); + &Apache::lonxml::debug("LaTeX rendering = $latex_rendering image file: $src"); #if original gif/jpg/png file exist do following: my ($path,$file) = &get_eps_image($src); $src=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$src); + &Apache::lonxml::debug("path = $path file = $file src = $src"); if (-e $src) { + &Apache::lonxml::debug("$src exists"); my ($height_param,$width_param)= &image_size($src,0.3,$parstack,$safeeval); - $currentstring .= '\graphicspath{{'.$path.'}}' - .'\includegraphics[width='.$width_param.' mm,height='.$height_param.'mm]{'.$file.'} '; + my $destpath = $path; + $destpath =~ s/ /\_/g; # Spaces in path cause LaTex to vomit. + my $destfile = $file; + $destfile =~ s/ /\_/g; + $currentstring .= '\graphicspath{{'.$destpath.'}}' + .'\includegraphics[width='.$width_param.' mm,height='.$height_param.'mm]{'.$destfile.'} '; # If there's an alignment specification we need to honor it here. # For the horizontal alignments, we will also honor the @@ -2537,6 +2542,7 @@ sub start_img { # $currentstring = '\raisebox{'.$height_param.'mm}{'.$currentstring.'}'; } } else { + &Apache::lonxml::debug("$src does not exist"); #original image file doesn't exist so check the alt attribute my $alt = &Apache::lonxml::get_param('alt',$parstack,$safeeval,undef,1); @@ -2615,6 +2621,7 @@ sub start_img { } if ($ctag) {$currentstring=&Apache::edit::rebuild_tag($token);} } + return $currentstring; } @@ -3749,22 +3756,30 @@ sub image_replication { $pssrc =~ s/\.(gif|jpg|jpeg|png)$/.ps/i; if (not -e $epssrc && not -e $pssrc) { my $result=&Apache::lonnet::repcopy($epssrc); - if ($result ne OK) { &Apache::lonnet::repcopy($pssrc); } + if ($result ne 'ok') { &Apache::lonnet::repcopy($pssrc); } } return ''; } sub image_size { my ($src,$scaling,$parstack,$safeeval,$depth,$cis)=@_; + #size of image from gif/jpg/jpeg/png - $src=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$src); + my $ressrc=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$src); + if (-e $ressrc) { + $src = $ressrc; + } my $image = Image::Magick->new; my $current_figure = $image->Read($src); my $width_param = $image->Get('width') * $scaling;; - my $height_param = $image->Get('height') * $scaling;; + my $height_param = $image->Get('height') * $scaling; + &Apache::lonxml::debug("Image magick says: $src : Height = $height_param width = $width_param"); undef($image); #do we have any specified LaTeX size of the picture? - my $toget='TeXwidth'; if ($cis) { $toget=lc($toget); } + my $toget='TeXwidth'; + if ($cis) { + $toget=lc($toget); + } my $TeXwidth = &Apache::lonxml::get_param($toget,$parstack, $safeeval,$depth,$cis); $toget='TeXheight'; if ($cis) { $toget=lc($toget); } @@ -3811,29 +3826,39 @@ sub image_height { sub get_eps_image { my ($src)=@_; - my $orig_src=$src; + my $orig_src=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1], $src); + &Apache::lonxml::debug("get_eps_image: Original image: $orig_src
"); $src=~s/\.(gif|png|jpg|jpeg)$/\.eps/i; $src=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$src); + &Apache::lonxml::debug("Filelocation gives; $src
"); if (! -e $src) { - if (&Apache::lonnet::repcopy($src) ne OK ) { + &Apache::lonxml::debug("$src does not exist"); + if (&Apache::lonnet::repcopy($src) ne 'ok' ) { + &Apache::lonxml::debug("Repcopy of $src failed (1)"); #if replication failed try to find ps file $src=~s/\.eps$/\.ps/; + &Apache::lonxml::debug("Now looking for $src"); #if no ps file try to replicate it if (not -e $src && - &Apache::lonnet::repcopy($src) ne OK) { + &Apache::lonnet::repcopy($src) ne 'ok') { + &Apache::lonxml::debug("Failed to find or replicate $src"); + #if replication failed try to produce eps file dynamically $src=~s/\.ps$/\.eps/; my $temp_file; open(FILE,">>/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout.dat"); my $newsrc=$orig_src; $newsrc =~ s|(.*)/res/|/home/httpd/html/res/|; + &Apache::lonxml::debug("queueing $newsrc for dynamic eps production.
"); print FILE "$newsrc\n"; + close FILE; $src=~s|/home/httpd/html/res|/home/httpd/prtspool|; $src=~s|/home/([^/]*)/public_html/|/home/httpd/prtspool/$1/|; } } } my ($path,$file)=($src=~m|(.*)/([^/]*)$|); + &Apache::lonxml::debug("get_eps_image returning: $path / $file
"); return ($path.'/',$file); }