--- loncom/xml/londefdef.pm 2002/07/30 14:10:51 1.79 +++ loncom/xml/londefdef.pm 2002/08/01 19:47:29 1.82 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Tags Default Definition Module # -# $Id: londefdef.pm,v 1.79 2002/07/30 14:10:51 sakharuk Exp $ +# $Id: londefdef.pm,v 1.82 2002/08/01 19:47:29 sakharuk Exp $ # # # Copyright Michigan State University Board of Trustees @@ -1039,7 +1039,7 @@ EDITBUTTON if ($target eq 'web') { $currentstring .= $token->[4]; } elsif ($target eq 'tex') { - $currentstring .= '\vskip 0 mm \noindent\makebox[\textwidth - 8 mm][b]{\hrulefill}'; + $currentstring .= '\vskip 0 mm \noindent\makebox[\textwidth ][b]{\hrulefill}\vskip 0 mm '; } return $currentstring; } @@ -1325,9 +1325,11 @@ EDITBUTTON my $filled_columns = 0; foreach my $tempo_length (@{ $Apache::londefdef::table[-1]{'lengthrow'} }) { my @length = split(/,/,$tempo_length); + my $nfilled_columns = 0; for (my $ico=0;$ico<$how_many_columns;$ico++) { - if (not $lengthforoutput[$ico]=~m/\s*0\s*/) {$filled_columns++;} + if (not $lengthforoutput[$ico]=~m/\s*0\s*/) {$nfilled_columns++;} } + if ($nfilled_columns > $filled_columns) {$filled_columns=$nfilled_columns;} } my $temp_file; my $filename = "/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout.tbl"; @@ -1381,7 +1383,7 @@ EDITBUTTON for (my $io=0; $io<=$#lengthforoutput;$io++) { $parboxlength .= ' - '.$lengthforoutput[$io].' '; } - $parboxlength .= ')/($GLOBALnumberOFcolumns+1) - 1 mm'; + $parboxlength .= ')/($GLOBALnumberOFcolumns+1) - 3 mm'; $output =~ s/\\parbox{}{}/\\parbox{1 mm}{}/g; $output =~ s/\\parbox{}{(\\textbf{\w?\.?})}/\\parbox{5 mm}{$1}/g; #for stupid tables with empty columns $output =~ s/\\parbox{}/\\parbox{$parboxlength}/g; @@ -1405,6 +1407,9 @@ EDITBUTTON $currentstring = $Apache::londefdef::table[-1]{'output'}; $currentstring =~ s/\\\\\s+\\\\/\\\\/g; pop @Apache::londefdef::table; + if (-e $filename) { + unlink $filename; + } } } return $currentstring; @@ -1462,17 +1467,25 @@ EDITBUTTON sub end_td { my ($target,$token) = @_; my $currentstring = ''; + my $tempolen = ''; if ($target eq 'web') { $currentstring = $token->[2]; } elsif ($target eq 'tex') { my $current_row = $Apache::londefdef::table[-1]{'row_number'}; my $data=&Apache::lonxml::endredirection(); - if ($data=~m/width\s*=\s*(\d+\.*\d*\s*(mm|cm))/) { - $Apache::londefdef::table[-1]{'length'} .= $1.','; + if ($data=~m/width\s*=\s*(\d+\.*\d*\s*(mm|cm|in|pc|pt))/) { + $Apache::londefdef::table[-1]{'length'} .= $1.','; + $tempolen = $1; } else { - $Apache::londefdef::table[-1]{'length'} .= '0 mm,'; + if (length($data)<5) { + $Apache::londefdef::table[-1]{'length'} .= '7 mm,'; + $tempolen = '5 mm'; + } else { + $Apache::londefdef::table[-1]{'length'} .= '0 mm,'; + $tempolen = ''; + } } - @{ $Apache::londefdef::table[-1]{'rowdata'} }[$current_row] .= '\parbox{'.$1.'}{'.$data.'} '.$Apache::londefdef::table[-1]{'vinc'}; + @{ $Apache::londefdef::table[-1]{'rowdata'} }[$current_row] .= '\parbox{'.$tempolen.'}{'.$data.'} '.$Apache::londefdef::table[-1]{'vinc'}; } return $currentstring; } @@ -1526,71 +1539,80 @@ EDITBUTTON } elsif ($target eq 'tex') { my $src = &Apache::lonxml::get_param('src',$parstack,$safeeval); $src=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$src); - my $image = Image::Magick->new; - my $current_figure = $image->Read($src); - $width_param = $image->Get('width') * $scaling;; - $height_param = $image->Get('height') * $scaling;; - undef $image; - my $epssrc = $src; - $epssrc =~ s/(\.gif|\.jpg)$/\.eps/i; - if (not -e $epssrc) { - my $localfile = $epssrc; - $localfile =~ s/.*(\/res)/$1/; + if (-e $src) { #new one + my $image = Image::Magick->new; + my $current_figure = $image->Read($src); + $width_param = $image->Get('width') * $scaling;; + $height_param = $image->Get('height') * $scaling;; + undef $image; + my $epssrc = $src; + $epssrc =~ s/(\.gif|\.jpg)$/\.eps/i; + if (not -e $epssrc) { + my $localfile = $epssrc; + $localfile =~ s/.*(\/res)/$1/; + my $file; + my $path; + if ($localfile =~ m!(.*)/([^/]*)$!) { + $file = $2; + $path = $1.'/'; + } + my $signal_eps = 0; + my @content_directory = &Apache::lonnet::dirlist($path); + for (my $iy=0;$iy<=$#content_directory;$iy++) { + my @tempo_array = split(/&/,$content_directory[$iy]); + $content_directory[$iy] = $tempo_array[0]; + if ($file eq $tempo_array[0]) { + $signal_eps = 1; + last; + } + } + if ($signal_eps) { + my $eps_file = &Apache::lonnet::getfile($localfile); + } else { + $localfile = $src; + $localfile =~ s/.*(\/res)/$1/; + my $as = &Apache::lonnet::getfile($src); + } + } my $file; my $path; - if ($localfile =~ m!(.*)/([^/]*)$!) { - $file = $2; - $path = $1.'/'; - } - my $signal_eps = 0; - my @content_directory = &Apache::lonnet::dirlist($path); - for (my $iy=0;$iy<=$#content_directory;$iy++) { - my @tempo_array = split(/&/,$content_directory[$iy]); - $content_directory[$iy] = $tempo_array[0]; - if ($file eq $tempo_array[0]) { - $signal_eps = 1; - last; - } + if ($src =~ m!(.*)/([^/]*)$!) { + $file = $2; + $path = $1.' /'; + } + my $newsrc = $src; + $newsrc =~ s/(\.gif|\.jpg)$/\.eps/i; + $file=~s/(\.gif|\.jpg)$/\.eps/i; + #do we have any specified size of the picture? + my $TeXwidth = &Apache::lonxml::get_param('TeXwidth',$parstack,$safeeval); + my $TeXheight = &Apache::lonxml::get_param('TeXheight',$parstack,$safeeval); + my $width = &Apache::lonxml::get_param('width',$parstack,$safeeval); + if ($TeXwidth ne '') { + $width_param = $TeXwidth; + } elsif ($TeXheight ne '') { + $width_param = $TeXheight/$height_param*$width_param; + } elsif ($width ne '') { + $width_param = $width*$scaling; } - if ($signal_eps) { - my $eps_file = &Apache::lonnet::getfile($localfile); + #where can we find the picture? + if (-e $newsrc) { + if ($path) { + $currentstring .= '\noindent\graphicspath{{'.$path.'}}\fbox{\includegraphics[width='.$width_param.' mm]{'.$file.'}} '; + } } else { - $localfile = $src; - $localfile =~ s/.*(\/res)/$1/; - my $as = &Apache::lonnet::getfile($src); - } - } - my $file; - my $path; - if ($src =~ m!(.*)/([^/]*)$!) { - $file = $2; - $path = $1.'/'; - } - my $newsrc = $src; - $newsrc =~ s/(\.gif|\.jpg)$/\.eps/i; - $file=~s/(\.gif|\.jpg)$/\.eps/i; - #do we have any specified size of the picture? - my $TeXwidth = &Apache::lonxml::get_param('TeXwidth',$parstack,$safeeval); - my $TeXheight = &Apache::lonxml::get_param('TeXheight',$parstack,$safeeval); - my $width = &Apache::lonxml::get_param('width',$parstack,$safeeval); - if ($TeXwidth ne '') { - $width_param = $TeXwidth; - } elsif ($TeXheight ne '') { - $width_param = $TeXheight/$height_param*$width_param; - } elsif ($width ne '') { - $width_param = $width*$scaling; - } - #where can we find the picture? - if (-e $newsrc) { - if ($path) { - $currentstring .= '\noindent\graphicspath{{'.$path.'}}\fbox{\includegraphics[width='.$width_param.' mm]{'.$file.'}} '; + my $temp_file; + my $filename = "/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout.dat"; + $temp_file = Apache::File->new('>>'.$filename); + print $temp_file "$src\n"; + $currentstring .= '\graphicspath{{/home/httpd/prtspool/}}\fbox{\includegraphics[width='.$width_param.' mm]{'.$file.'}} '; } } else { - my $temp_file; - my $filename = "/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout.dat"; - $temp_file = Apache::File->new('>>'.$filename); - print $temp_file "$src\n"; - $currentstring .= '\graphicspath{{/home/httpd/prtspool/}}\fbox{\includegraphics[width='.$width_param.' mm]{'.$file.'}} '; + my $alt = &Apache::lonxml::get_param('alt',$parstack,$safeeval); + if ($alt) { + $currentstring .= ' '.$alt.' '; + } else { + $currentstring .= ' THE ORIGINAL PROBLEM CONTAINS EMPTY IMG TAG WITHOUT IMAGE '; + } } } return $currentstring;