--- loncom/xml/londefdef.pm 2005/03/16 21:35:17 1.264 +++ loncom/xml/londefdef.pm 2005/05/23 09:41:38 1.274 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Tags Default Definition Module # -# $Id: londefdef.pm,v 1.264 2005/03/16 21:35:17 raeburn Exp $ +# $Id: londefdef.pm,v 1.274 2005/05/23 09:41:38 foxr Exp $ # # # Copyright Michigan State University Board of Trustees @@ -39,7 +39,7 @@ package Apache::londefdef; -use Apache::lonnet(); +use Apache::lonnet; use strict; use Apache::lonxml; use Apache::File(); @@ -132,7 +132,7 @@ sub start_tthoption { if ($target eq 'web') { my $inside = &Apache::lonxml::get_all_text("/tthoption",$parser); $inside=~s/^\s*//; - if ($ENV{'browser.mathml'}) { + if ($env{'browser.mathml'}) { &tth::ttmoptions($inside); } else { &tth::tthoptions($inside); @@ -151,15 +151,14 @@ sub end_tthoption { sub start_html { my ($target,$token) = @_; my $currentstring = ''; - my $options=$ENV{'course.'.$ENV{'request.course.id'}.'.tthoptions'}; + my $options=$env{'course.'.$env{'request.course.id'}.'.tthoptions'}; &Apache::lontexconvert::init_tth(); - if ($target eq 'web' || $target eq 'edit') { + if ($target eq 'web' || $target eq 'edit' || $target eq 'webgrade' ) { $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';} + if (($env{'form.latex_type'}=~'batchmode') || + (!$env{'request.role.adv'})) {$currentstring .='\batchmode';} $currentstring .= '\newcommand{\keephidden}[1]{}'. '\renewcommand{\deg}{$^{\circ}$}'. '\usepackage{longtable}'. @@ -202,7 +201,7 @@ sub start_head { sub end_head { my ($target,$token) = @_; my $currentstring = ''; - if ($target eq 'web' && $ENV{'request.state'} eq 'published') { + if ($target eq 'web' && $env{'request.state'} eq 'published') { $currentstring = &Apache::lonmenu::registerurl(undef,$target). $token->[2]; } @@ -490,15 +489,15 @@ sub start_body { return ''; } if (!$Apache::lonxml::registered && - $ENV{'request.state'} eq 'published') { + $env{'request.state'} eq 'published') { $currentstring.=''. &Apache::lonmenu::registerurl(undef,$target).''; } # Accessibility - if ($ENV{'browser.imagesuppress'} eq 'on') { + if ($env{'browser.imagesuppress'} eq 'on') { delete($token->[2]->{'background'}); } - if ($ENV{'browser.fontenhance'} eq 'on') { + if ($env{'browser.fontenhance'} eq 'on') { my $style=''; foreach my $key (keys(%{$token->[2]})) { if ($key =~ /^style$/i) { @@ -508,7 +507,7 @@ sub start_body { } $token->[2]->{'style'}=$style.'; font-size: x-large;'; } - if ($ENV{'browser.blackwhite'} eq 'on') { + if ($env{'browser.blackwhite'} eq 'on') { delete($token->[2]->{'font'}); delete($token->[2]->{'link'}); delete($token->[2]->{'alink'}); @@ -535,17 +534,17 @@ sub start_body { $token->[2]->{'onunload'}=&Apache::lonmenu::unloadevents(). ';'.$onUnload; - if ($ENV{'request.state'} ne 'construct') { + if ($env{'request.state'} ne 'construct') { $currentstring .= '<'.$token->[1]; } foreach (keys %{$token->[2]}) { $currentstring.=' '.$_.'="'.$token->[2]->{$_}.'"'; } - if ($ENV{'request.state'} ne 'construct') { + if ($env{'request.state'} ne 'construct') { $currentstring.='>'; } - if ($ENV{'request.state'} ne 'published') { - my $remote=($ENV{'environment.remote'} ne 'off'); + if ($env{'request.state'} ne 'published') { + my $remote=($env{'environment.remote'} ne 'off'); $currentstring=&Apache::loncommon::bodytag(undef,undef, $currentstring,$remote); $currentstring.=(<[4]; } elsif ($target eq 'tex') { @@ -1826,7 +1825,7 @@ sub start_table { $Apache::londefdef::table[-1]{'row_number'} = -1; #maximum table's width (default coincides with text line length) if ($#Apache::londefdef::table==0) { - $textwidth=&recalc($ENV{'form.textwidth'}); #result is always in mm + $textwidth=&recalc($env{'form.textwidth'}); #result is always in mm $textwidth=~/(\d+\.?\d*)/; $textwidth=0.95*$1; #accounts "internal" LaTeX space for table frame } else { @@ -2450,7 +2449,7 @@ sub start_img { # Render unto browsers that which are the browser's... if ($target eq 'web') { - if ($ENV{'browser.imagesuppress'} ne 'on') { + if ($env{'browser.imagesuppress'} ne 'on') { $currentstring.=&Apache::lonenc::encrypt_ref($token,{'src'=>$src}); } else { my $alttag= &Apache::lonxml::get_param @@ -2498,19 +2497,25 @@ sub start_img { &Apache::lonxml::debug("LaTeX rendering = $latex_rendering image file: $src"); #if original gif/jpg/png file exist do following: + my $origsrc=$src; 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); + &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; + if ($width_param) { $size.='width='.$width_param.' mm,'; } + if ($height_param) { $size.='height='.$height_param.' mm]'; } + $size='['.$size; + $size=~s/,$/]/; $currentstring .= '\graphicspath{{'.$destpath.'}}' - .'\includegraphics[width='.$width_param.' mm,height='.$height_param.'mm]{'.$destfile.'} '; + .'\includegraphics'.$size.'{'.$destfile.'} '; # If there's an alignment specification we need to honor it here. # For the horizontal alignments, we will also honor the @@ -2650,7 +2655,7 @@ sub start_applet { my $currentstring = ''; if ($target eq 'web') { - if ($ENV{'browser.appletsuppress'} ne 'on') { + if ($env{'browser.appletsuppress'} ne 'on') { $currentstring = &Apache::lonenc::encrypt_ref($token, {'code'=>$code, 'archive'=>$archive} @@ -2696,7 +2701,7 @@ sub start_embed { $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=$src; my $currentstring = ''; if ($target eq 'web') { - if ($ENV{'browser.embedsuppress'} ne 'on') { + if ($env{'browser.embedsuppress'} ne 'on') { $currentstring=&Apache::lonenc::encrypt_ref($token,{'src'=>$src}); } else { my $alttag=&Apache::lonxml::get_param @@ -2792,7 +2797,7 @@ sub start_frameset { my $currentstring = ''; if ($target eq 'web') { if (!$Apache::lonxml::registered && - $ENV{'request.state'} eq 'published') { + $env{'request.state'} eq 'published') { $currentstring.=''. &Apache::lonmenu::registerurl(undef,$target).''; } @@ -3792,23 +3797,33 @@ sub image_size { if ($TeXwidth) { my $old_width_param=$width_param; if ($TeXwidth=~/(\d+)\s*\%/) { - $width_param = $1*$ENV{'form.textwidth'}/100; + $width_param = $1*$env{'form.textwidth'}/100; } else { $width_param = $TeXwidth; } - $height_param=$TeXwidth/$old_width_param*$height_param; + if ($TeXheight) { + $height_param = $TeXheight; + } elsif ($old_width_param) { + $height_param=$TeXwidth/$old_width_param*$height_param; + } } elsif ($TeXheight) { $height_param = $TeXheight; - $width_param = $TeXheight/$height_param*$width_param; + if ($height_param) { + $width_param = $TeXheight/$height_param*$width_param; + } } elsif ($width) { my $old_width_param=$width_param; $width_param = $width*$scaling; - $height_param=$width_param/$old_width_param*$height_param; + if ($old_width_param) { + $height_param=$width_param/$old_width_param*$height_param; + } } - if ($width_param > $ENV{'form.textwidth'}) { + if ($width_param > $env{'form.textwidth'}) { my $old_width_param=$width_param; - $width_param =0.95*$ENV{'form.textwidth'}; - $height_param=$width_param/$old_width_param*$height_param; + $width_param =0.95*$env{'form.textwidth'}; + if ($old_width_param) { + $height_param=$width_param/$old_width_param*$height_param; + } } return ($height_param, $width_param); } @@ -3839,15 +3854,17 @@ sub get_eps_image { #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') { + #if no ps file try to replicate it. + my $didrepcopy = &Apache::lonnet::repcopy($src); + &Apache::lonxml::debug("repcopy of $src ... $didrepcopy"); + if ( (not -e $src) || + ($didrepcopy 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"); + 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.
"); @@ -3865,7 +3882,7 @@ sub get_eps_image { sub eps_generation { my ($src,$file,$width_param) = @_; - my $filename = "/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout.dat"; + my $filename = "/home/httpd/prtspool/$env{'user.name'}_$env{'user.domain'}_printout.dat"; my $temp_file = Apache::File->new('>>'.$filename); print $temp_file "$src\n"; my $newsrc = $src;