Diff for /loncom/xml/londefdef.pm between versions 1.79 and 1.87

version 1.79, 2002/07/30 14:10:51 version 1.87, 2002/09/05 19:33:55
Line 52  use Image::Magick; Line 52  use Image::Magick;
   
 BEGIN {  BEGIN {
   
     &Apache::lonxml::register('Apache::londefdef',('m','html','head','map','select','option','input','textarea','form','meta','title','body','center','b','strong','dt','h1','h2','h3','h4','h5','h6','cite','i','address','dd','dl','dir','ol','ul','menu','dfn','kbd','tt','code','em','q','p','br','big','small','basefont','font','s','sub','strike','sup','hr','a','li','u','output','param','applet','img','embed','allow','frameset','pre','insert','externallink','table','tr','th','td','blankspace','bubble','bubbles','bubbleline'));      &Apache::lonxml::register('Apache::londefdef',('m','html','head','map','select','option','input','textarea','form','meta','title','body','center','b','strong','dt','h1','h2','h3','h4','h5','h6','cite','i','address','dd','dl','dir','ol','ul','menu','dfn','kbd','tt','code','em','q','p','br','big','small','basefont','font','s','sub','strike','sup','hr','a','li','u','output','param','applet','img','embed','allow','frameset','pre','insert','div','externallink','table','tr','th','td','blankspace','bubble','bubbles','bubbleline'));
   
 }  }
   
Line 91  sub start_m { Line 91  sub start_m {
     #&Apache::lonxml::debug("M is ends with:$currentstring:");      #&Apache::lonxml::debug("M is ends with:$currentstring:");
   } elsif ($target eq 'tex') {    } elsif ($target eq 'tex') {
     $currentstring = &Apache::lonxml::get_all_text_unbalanced("/m",$parser);      $currentstring = &Apache::lonxml::get_all_text_unbalanced("/m",$parser);
     if ($currentstring=~/\s*\\\\\s*/) {$currentstring = ' \vskip 0 mm ';}      if ($currentstring=~/^(\s*\\\\\s*)*$/) {$currentstring = ' \vskip 0 mm ';}
   } else {    } else {
     my $inside = &Apache::lonxml::get_all_text_unbalanced("/m",$parser);      my $inside = &Apache::lonxml::get_all_text_unbalanced("/m",$parser);
   }    }
Line 126  sub end_m { Line 126  sub end_m {
                                  \newcommand{\keephidden}[1]{}                                   \newcommand{\keephidden}[1]{}
                                  \renewcommand{\deg}{$^{\circ}$}                                   \renewcommand{\deg}{$^{\circ}$}
                                  \usepackage[dvips]{graphicx}                                   \usepackage[dvips]{graphicx}
                                  \usepackage{epsfig}\usepackage{calc}';                                   \usepackage{epsfig}\usepackage{calc}
                                    \newenvironment{choicelist}{\begin{enumerate}}{\end{enumerate}}';
     }      }
    return $currentstring;     return $currentstring;
  }   }
Line 466  EDITBUTTON Line 467  EDITBUTTON
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[4];         $currentstring .= $token->[4];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $currentstring .= '\large{\textbf{';   $currentstring .= '{\large \textbf{';
     } elsif ($target eq 'meta') {      } elsif ($target eq 'meta') {
  $currentstring='<subject>';   $currentstring='<subject>';
                 &start_output();                  &start_output();
Line 493  EDITBUTTON Line 494  EDITBUTTON
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[4];         $currentstring .= $token->[4];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $currentstring .= '\large{\textbf{';   $currentstring .= '{\large \textbf{';
     }       } 
            return $currentstring;             return $currentstring;
  }   }
Line 514  EDITBUTTON Line 515  EDITBUTTON
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[4];         $currentstring .= $token->[4];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $currentstring .= '\large{\textbf{';   $currentstring .= '{\large \textbf{';
     }       } 
            return $currentstring;             return $currentstring;
  }   }
Line 535  EDITBUTTON Line 536  EDITBUTTON
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[4];         $currentstring .= $token->[4];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $currentstring .= '\large{\textbf{';   $currentstring .= '{\large \textbf{';
     }       } 
            return $currentstring;             return $currentstring;
  }   }
Line 556  EDITBUTTON Line 557  EDITBUTTON
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[4];         $currentstring .= $token->[4];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $currentstring .= '\large{\textbf{';   $currentstring .= '{\large \textbf{';
     }       } 
            return $currentstring;             return $currentstring;
  }   }
Line 577  EDITBUTTON Line 578  EDITBUTTON
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[4];         $currentstring .= $token->[4];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $currentstring .= '\large{\textbf{';   $currentstring .= '{\large \textbf{';
     }       } 
            return $currentstring;             return $currentstring;
  }   }
Line 1039  EDITBUTTON Line 1040  EDITBUTTON
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[4];         $currentstring .= $token->[4];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $currentstring .= '\vskip 0 mm \noindent\makebox[\textwidth - 8 mm][b]{\hrulefill}';   $currentstring .= '\vskip 0 mm \noindent\makebox[\textwidth/2 ][b]{\hrulefill}\vskip 0 mm ';
     }       } 
            return $currentstring;             return $currentstring;
  }   }
Line 1052  EDITBUTTON Line 1053  EDITBUTTON
     }       } 
            return $currentstring;             return $currentstring;
  }   }
   #-- <div> tag
           sub start_div {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
          $currentstring .= $token->[4];
       } 
              return $currentstring;
    }
           sub end_div {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
          $currentstring .= $token->[2];
       } 
              return $currentstring;
    }
 #-- <a> tag  #-- <a> tag
         sub start_a {          sub start_a {
     my ($target,$token) = @_;      my ($target,$token) = @_;
Line 1325  EDITBUTTON Line 1343  EDITBUTTON
  my $filled_columns = 0;   my $filled_columns = 0;
  foreach my $tempo_length (@{ $Apache::londefdef::table[-1]{'lengthrow'} }) {   foreach my $tempo_length (@{ $Apache::londefdef::table[-1]{'lengthrow'} }) {
     my @length = split(/,/,$tempo_length);      my @length = split(/,/,$tempo_length);
       my $nfilled_columns = 0; 
     for (my $ico=0;$ico<$how_many_columns;$ico++) {      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 $temp_file;
  my $filename = "/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout.tbl";   my $filename = "/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout.tbl";
Line 1381  EDITBUTTON Line 1401  EDITBUTTON
                 for (my $io=0; $io<=$#lengthforoutput;$io++) {                  for (my $io=0; $io<=$#lengthforoutput;$io++) {
     $parboxlength .= ' - '.$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{}{}/\\parbox{1 mm}{}/g;
  $output =~ s/\\parbox{}{(\\textbf{\w?\.?})}/\\parbox{5 mm}{$1}/g; #for stupid tables with empty columns   $output =~ s/\\parbox{}{(\\textbf{\w?\.?})}/\\parbox{5 mm}{$1}/g; #for stupid tables with empty columns
  $output =~ s/\\parbox{}/\\parbox{$parboxlength}/g;   $output =~ s/\\parbox{}/\\parbox{$parboxlength}/g;
Line 1405  EDITBUTTON Line 1425  EDITBUTTON
     $currentstring = $Apache::londefdef::table[-1]{'output'};      $currentstring = $Apache::londefdef::table[-1]{'output'};
     $currentstring =~ s/\\\\\s+\\\\/\\\\/g;       $currentstring =~ s/\\\\\s+\\\\/\\\\/g; 
     pop @Apache::londefdef::table;      pop @Apache::londefdef::table;
       if (-e $filename) {
    unlink $filename;
       }
  }   }
     }      }
    return $currentstring;     return $currentstring;
Line 1462  EDITBUTTON Line 1485  EDITBUTTON
         sub end_td {          sub end_td {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             my $currentstring = '';              my $currentstring = '';
               my $tempolen = '';
             if ($target eq 'web') {              if ($target eq 'web') {
  $currentstring = $token->[2];        $currentstring = $token->[2];     
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  my $current_row = $Apache::londefdef::table[-1]{'row_number'};   my $current_row = $Apache::londefdef::table[-1]{'row_number'};
  my $data=&Apache::lonxml::endredirection();   my $data=&Apache::lonxml::endredirection();
  if ($data=~m/width\s*=\s*(\d+\.*\d*\s*(mm|cm))/) {                    if ($data=~m/width\s*=\s*(\d+\.*\d*\s*(mm|cm|in|pc|pt))/) {                 
                     $Apache::londefdef::table[-1]{'length'} .= $1.',';                              $Apache::londefdef::table[-1]{'length'} .= $1.',';
       $tempolen = $1;         
  } else {   } 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;     return $currentstring;
  }   }
Line 1519  EDITBUTTON Line 1550  EDITBUTTON
             my $currentstring = '';              my $currentstring = '';
     my $width_param = '';      my $width_param = '';
     my $height_param = '';      my $height_param = '';
     my $scaling = .3;      my $scaling = .3; 
   
     if ($target eq 'web') {      if ($target eq 'web') {
               $currentstring = $token->[4];                     $currentstring = $token->[4];     
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
       my $src = &Apache::lonxml::get_param('src',$parstack,$safeeval);        my $src = &Apache::lonxml::get_param('src',$parstack,$safeeval);
       $src=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$src);        $src=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$src);
               my $image = Image::Magick->new;                #if original gif/jpg file exist do following:
               my $current_figure = $image->Read($src);                if (-e $src) {          
               $width_param = $image->Get('width') * $scaling;;                    #defines the default size of image
       $height_param = $image->Get('height') * $scaling;;    my $image = Image::Magick->new;
       undef $image;    my $current_figure = $image->Read($src);
       my $epssrc = $src;    $width_param = $image->Get('width') * $scaling;;
       $epssrc =~ s/(\.gif|\.jpg)$/\.eps/i;    $height_param = $image->Get('height') * $scaling;;
       if (not -e $epssrc) {    undef $image;
   my $localfile = $epssrc;    #do we have any specified size of the picture?
   $localfile =~ s/.*(\/res)/$1/;    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;      
     }
   my $file;    my $file;
   my $path;    my $path;
   if ($localfile =~ m!(.*)/([^/]*)$!) {    if ($src =~ m!(.*)/([^/]*)$!) {
       $file = $2;        $file = $2; 
       $path = $1.'/';         $path = $1.'/'; 
   }    } 
   my $signal_eps = 0;    my $newsrc = $src;
   my @content_directory = &Apache::lonnet::dirlist($path);    $newsrc =~ s/(\.gif|\.jpg)$/\.eps/i;
   for (my $iy=0;$iy<=$#content_directory;$iy++) {    $file=~s/(\.gif|\.jpg)$/\.eps/i;
       my @tempo_array = split(/&/,$content_directory[$iy]);    #where can we find the picture?
       $content_directory[$iy] = $tempo_array[0];    if (-e $newsrc) {
       if ($file eq $tempo_array[0]) {                        #eps counterpart for image exist 
   $signal_eps = 1;        if ($path) {
   last;    $currentstring .= '\noindent\graphicspath{{'.$path.'}}\fbox{\includegraphics[width='.$width_param.' mm]{'.$file.'}} ';
       }        }
   }  
   if ($signal_eps) {  
       my $eps_file = &Apache::lonnet::getfile($localfile);  
   } else {    } else {
       $localfile = $src;                        #there is no eps counterpart for image - check for ps one
       $localfile =~ s/.*(\/res)/$1/;        $newsrc =~ s/\.eps$/\.ps/;
       my $as = &Apache::lonnet::getfile($src);              if (-e $newsrc) {
   }    #ps counterpart for image exist 
       }    $file =~ s/\.eps$/\.ps/;
       my $file;    if ($path) {
       my $path;        $currentstring .= '\noindent\graphicspath{{'.$path.'}}\fbox{\includegraphics[width='.$width_param.' mm]{'.$file.'}} ';
               if ($src =~ m!(.*)/([^/]*)$!) {    }
   $file = $2;        } else {
   $path = $1.'/';     #there aren't eps or ps - so create eps 
       }    my $temp_file;
       my $newsrc = $src;    my $filename = "/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout.dat";
       $newsrc =~ s/(\.gif|\.jpg)$/\.eps/i;    $temp_file = Apache::File->new('>>'.$filename); 
       $file=~s/(\.gif|\.jpg)$/\.eps/i;    print $temp_file "$src\n";
               #do we have any specified size of the picture?    $currentstring .= '\graphicspath{{/home/httpd/prtspool/}}\fbox{\includegraphics[width='.$width_param.' mm]{'.$file.'}} ';
       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.'}} ';  
   }    }
       } else {        } else {
   my $temp_file;    #original image file doesn't exist so check the alt attribute
   my $filename = "/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout.dat";    my $alt = &Apache::lonxml::get_param('alt',$parstack,$safeeval);
   $temp_file = Apache::File->new('>>'.$filename);                     if ($alt) {
   print $temp_file "$src\n";        $currentstring .= ' '.$alt.' ';
   $currentstring .= '\graphicspath{{/home/httpd/prtspool/}}\fbox{\includegraphics[width='.$width_param.' mm]{'.$file.'}} ';    } else {
                     #there are no image and alt attribute
                         $currentstring .= ' THE ORIGINAL PROBLEM CONTAINS EMPTY IMG TAG WITHOUT IMAGE AND ALT ATTRIBUTE ';
     }
       }        }
     }      }
     return $currentstring;      return $currentstring;

Removed from v.1.79  
changed lines
  Added in v.1.87


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