Diff for /loncom/xml/londefdef.pm between versions 1.82 and 1.117

version 1.82, 2002/08/01 19:47:29 version 1.117, 2003/02/18 22:19:30
Line 49  use strict; Line 49  use strict;
 use Apache::lonxml;  use Apache::lonxml;
 use Apache::File();  use Apache::File();
 use Image::Magick;  use Image::Magick;
   use Apache::lonmenu;
   #use Apache::lonmeta;
   
 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',('a','abbr','acronym','address','allow','applet','area','b','base','basefont','bgo','bgsound','big','blink','blockquote','blankspace','body','br','button','caption','center','cite','code','col','colgroup','dd','del','dfn','dir','div','dl','dt','em','embed','externallink','fieldset','font','form','frame','frameset','h1','h2','h3','h4','h5','h6','head','hr','html','i','iframe','img','input','ins','insert','isindex','kbd','keygen','label','layer','legend','li','link','m','map','marquee','menu','meta','multicol','nobr','noembed','noframes','nolayer','noscript','object','ol','optgroup','option','output','p','param','pre','q','s','samp','select','server','small','spacer','span','strike','strong','sub','sup','table','tbody','td','textarea','tfoot','th','thead','title','tr','tt','tthoption','u','ul','var','wbr'));
   
 }  }
   
Line 91  sub start_m { Line 93  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 108  sub end_m { Line 110  sub end_m {
   }    }
   return $currentstring;    return $currentstring;
 }  }
   
   sub start_tthoption {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
     my $result;
     if ($target eq 'web') {
         my $inside = &Apache::lonxml::get_all_text("/tthoption",$parser);
         $inside=~s/^\s*//;
         if ($ENV{'browser.mathml'}) {
     &tth::ttmoptions($inside);
         } else {
     &tth::tthoptions($inside);
         }
     }
   }
   
   sub end_tthoption {
     my ($target,$token) = @_;
     my $result;
     return $result;
   }
   
 #-- <html> tag      #-- <html> tag    
       sub start_html {  sub start_html {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             my $currentstring = '';      my $currentstring = '';
     if ($ENV{'browser.mathml'}) {      if ($ENV{'browser.mathml'}) {
       &tth::ttminit();   &tth::ttminit();
     } else {   if ($ENV{'browser.unicode'}) {
       &tth::tthinit();      &tth::ttmoptions('-L -u1');
     }   } else {
             if ($target eq 'web') {      &tth::ttmoptions('-L -u0');
               $currentstring = &Apache::lonxml::xmlbegin().   }
                                &Apache::lonxml::fontsettings();           } else {
     } elsif ($target eq 'tex') {   &tth::tthinit();
       @Apache::londefdef::table = ();   if ($ENV{'browser.unicode'}) {
       $currentstring .= '\documentclass[letterpaper]{article}      &tth::tthoptions('-L -u1');
                                  \newcommand{\keephidden}[1]{}   } else {
                                  \renewcommand{\deg}{$^{\circ}$}      &tth::tthoptions('-L -u0');
                                  \usepackage[dvips]{graphicx}  
                                  \usepackage{epsfig}\usepackage{calc}';  
     }  
    return $currentstring;  
  }   }
       }
       if ($target eq 'web') {
    $currentstring = &Apache::lonxml::xmlbegin().
       &Apache::lonxml::fontsettings();     
       } elsif ($target eq 'tex') {
    @Apache::londefdef::table = ();
    $currentstring .= '\documentclass[letterpaper]{article}
                              \newcommand{\keephidden}[1]{}
                              \renewcommand{\deg}{$^{\circ}$}
                              \usepackage{textcomp}
                              \usepackage[dvips]{graphicx}
                              \usepackage{epsfig}\usepackage{calc}
   \newenvironment{choicelist}{\begin{list}{}{\setlength{\rightmargin}{0in}\setlength{\leftmargin}{0.13in}\setlength{\topsep}{0.05in}\setlength{\itemsep}{0.022in}\setlength{\parsep}{0in}\setlength{\belowdisplayskip}{0.04in}\setlength{\abovedisplayskip}{0.05in}\setlength{\abovedisplayshortskip}{-0.04in}\setlength{\belowdisplayshortskip}{0.04in}}}{\end{list}}';
       }
       return $currentstring;
   }
         sub end_html {          sub end_html {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             my $currentstring = '';              my $currentstring = '';
Line 151  sub end_m { Line 186  sub end_m {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             my $currentstring = '';              my $currentstring = '';
             if ($target eq 'web') {              if ($target eq 'web') {
               $currentstring = &Apache::lonxml::registerurl(undef,$target).                $currentstring = &Apache::lonmenu::registerurl(undef,$target).
                                $token->[2];                                     $token->[2];    
             }               } 
    return $currentstring;     return $currentstring;
Line 295  sub end_m { Line 330  sub end_m {
       my $args='';        my $args='';
       if ( $#$parstack > -1 ) { $args=$$parstack[$#$parstack]; }        if ( $#$parstack > -1 ) { $args=$$parstack[$#$parstack]; }
       if ($args eq '') {        if ($args eq '') {
  &Apache::lonxml::get_all_text("/meta",$$parser[$#$parser]);   &Apache::lonxml::get_all_text("/meta",$parser);
       } else {        } else {
  $currentstring = $token->[4];   $currentstring = $token->[4];
       }        }
Line 329  sub end_m { Line 364  sub end_m {
 #-- <body> tag  #-- <body> tag
         sub start_body {          sub start_body {
             my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;              my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
 #    my ($target,$token) = @_;  
             my $currentstring = '';              my $currentstring = '';
             if ($target eq 'web') {              if ($target eq 'web') {
       if (!$Apache::lonxml::registered) {        if (!$Apache::lonxml::registered) {
  $currentstring.='<head>'.   $currentstring.='<head>'.
     &Apache::lonxml::registerurl(undef,$target).'</head>';      &Apache::lonmenu::registerurl(undef,$target).'</head>';
       }        }
       my $onLoad='';        my $onLoad='';
       foreach my $key (keys(%{$token->[2]})) {        foreach my $key (keys(%{$token->[2]})) {
Line 343  sub end_m { Line 377  sub end_m {
   delete($token->[2]->{$key});    delete($token->[2]->{$key});
  }   }
       }        }
       $token->[2]->{'onLoad'}=&Apache::lonxml::loadevents().        $token->[2]->{'onload'}=&Apache::lonmenu::loadevents().
                        ';'.$onLoad;                         ';'.$onLoad;
       my $onUnload='';        my $onUnload='';
       foreach my $key (keys(%{$token->[2]})) {        foreach my $key (keys(%{$token->[2]})) {
Line 352  sub end_m { Line 386  sub end_m {
   delete($token->[2]->{$key});    delete($token->[2]->{$key});
  }   }
       }        }
       $token->[2]->{'onUnload'}=&Apache::lonxml::unloadevents().        $token->[2]->{'onunload'}=&Apache::lonmenu::unloadevents().
                          ';'.$onUnload;                           ';'.$onUnload;
   
       $currentstring .= '<'.$token->[1];        $currentstring .= '<'.$token->[1];
Line 366  sub end_m { Line 400  sub end_m {
  <input type="submit" name="editmode" value="Edit" />   <input type="submit" name="editmode" value="Edit" />
  </form>   </form>
 EDITBUTTON  EDITBUTTON
       }                } else {
    $currentstring.=&Apache::lonmenu::menubuttons(undef,$target,1);
                 }
            } elsif ($target eq 'tex') {             } elsif ($target eq 'tex') {
               $currentstring = '\begin{document}';                  $currentstring = '\begin{document}';  
     }       } 
Line 466  EDITBUTTON Line 502  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 529  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 550  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 571  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 592  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 613  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 845  EDITBUTTON Line 881  EDITBUTTON
        $currentstring .= $token->[4];         $currentstring .= $token->[4];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  if ($$tagstack[-2] ne 'sub' && $$tagstack[-2] ne 'sup') {   if ($$tagstack[-2] ne 'sub' && $$tagstack[-2] ne 'sup') {
     $currentstring .= '\vskip 0 mm';      $currentstring .= '\vskip 0.2 mm';
  }   }
     } elsif ($target eq 'latexsource') {      } elsif ($target eq 'latexsource') {
  $currentstring .= '\\';   $currentstring .= '\\';
Line 955  EDITBUTTON Line 991  EDITBUTTON
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[4];         $currentstring .= $token->[4];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $currentstring .= '\underline{';         &Apache::lonxml::startredirection();
     }       } 
            return $currentstring;             return $currentstring;
  }   }
Line 965  EDITBUTTON Line 1001  EDITBUTTON
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[2];         $currentstring .= $token->[2];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
         $currentstring .= '}';         $currentstring=&Apache::lonxml::endredirection();
          $currentstring=~s/(\S)(\s+)(\S)/$1}$2\\underline{$3/g;
          $currentstring=~s/^\s*(\S)/\\underline{$1/;
          $currentstring=~s/(\S)\s*$/$1}/;       
             }              }
            return $currentstring;             return $currentstring;
  }   }
Line 976  EDITBUTTON Line 1015  EDITBUTTON
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[4];         $currentstring .= $token->[4];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $currentstring .= '\underline{';         &Apache::lonxml::startredirection();
     }       } 
            return $currentstring;             return $currentstring;
  }   }
Line 986  EDITBUTTON Line 1025  EDITBUTTON
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[2];         $currentstring .= $token->[2];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
         $currentstring .= '}';         $currentstring=&Apache::lonxml::endredirection();
          $currentstring=~s/(\S)(\s+)(\S)/$1}$2\\underline{$3/g;
          $currentstring=~s/^\s*(\S)/\\underline{$1/;
          $currentstring=~s/(\S)\s*$/$1}/;
             }              }
            return $currentstring;             return $currentstring;
  }   }
Line 1039  EDITBUTTON Line 1081  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 ][b]{\hrulefill}\vskip 0 mm ';   $currentstring .= '\vskip 0 mm \noindent\makebox[\textwidth/2 ][b]{\hrulefill}\vskip 0 mm ';
     }       } 
            return $currentstring;             return $currentstring;
  }   }
Line 1052  EDITBUTTON Line 1094  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 1071  EDITBUTTON Line 1130  EDITBUTTON
                 my  $tempor_var = $stackref->[$#$stackref];                  my  $tempor_var = $stackref->[$#$stackref];
  if (index($tempor_var,'name') != -1 ) {   if (index($tempor_var,'name') != -1 ) {
     $tempor_var =~ s/name=([^,]*),/$1/g;      $tempor_var =~ s/name=([^,]*),/$1/g;
 #        $currentstring .= " \\label{$tempor_var}";  
         } elsif (index($tempor_var,'href') != -1 ) {          } elsif (index($tempor_var,'href') != -1 ) {
     $tempor_var =~ s/href=([^,]*),/$1/g;      $tempor_var =~ s/href=([^,]*),/$1/g;
         $currentstring .= " \\ref{$tempor_var}";          $currentstring .= " \\ref{$tempor_var}";
Line 1116  EDITBUTTON Line 1174  EDITBUTTON
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[4];         $currentstring .= $token->[4];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $currentstring .= '\underline{';         &Apache::lonxml::startredirection();
     }       } 
            return $currentstring;             return $currentstring;
  }   }
Line 1126  EDITBUTTON Line 1184  EDITBUTTON
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[2];         $currentstring .= $token->[2];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
         $currentstring .= '}';         $currentstring=&Apache::lonxml::endredirection();
          $currentstring=~s/(\S)(\s+)(\S)/$1}$2\\underline{$3/g;
          $currentstring=~s/^\s*(\S)/\\underline{$1/;
          $currentstring=~s/(\S)\s*$/$1}/;
             }              }
            return $currentstring;             return $currentstring;
  }   }
Line 1274  EDITBUTTON Line 1335  EDITBUTTON
    return $currentstring;     return $currentstring;
  }   }
 #-- <table> tag  #-- <table> tag
         sub start_table {  sub start_table {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
             my $currentstring = '';      my $currentstring = '';
             if ($target eq 'web') {      if ($target eq 'web') {
               $currentstring = $token->[4];        $currentstring = $token->[4];     
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  my $aa = {};   my $aa = {};
  push @Apache::londefdef::table, $aa;    push @Apache::londefdef::table, $aa; 
  $Apache::londefdef::table[-1]{'row_number'} = -1;   $Apache::londefdef::table[-1]{'row_number'} = -1;
  $Apache::londefdef::table[-1]{'output'} = ' \noindent \begin{tabular} ';   $Apache::londefdef::table[-1]{'output'} = ' \noindent \begin{tabular} ';
  my $border = &Apache::lonxml::get_param('border',$parstack,$safeeval);   my $border = &Apache::lonxml::get_param('border',$parstack,$safeeval,undef,1); 
  unless (defined $border) { $border = 0; }   unless (defined $border) { $border = 0; }
  if ($border) {    if ($border) { 
     $Apache::londefdef::table[-1]{'hinc'} = '\hline ';       $Apache::londefdef::table[-1]{'hinc'} = '\hline '; 
     $Apache::londefdef::table[-1]{'vinc'} = '&';       $Apache::londefdef::table[-1]{'vinc'} = '&'; 
     $Apache::londefdef::table[-1]{'vvinc'} = '|';      $Apache::londefdef::table[-1]{'vvinc'} = '|';
  } else {   } else {
     $Apache::londefdef::table[-1]{'hinc'} = '';       $Apache::londefdef::table[-1]{'hinc'} = ''; 
     $Apache::londefdef::table[-1]{'vinc'} = '&';       $Apache::londefdef::table[-1]{'vinc'} = '&'; 
     $Apache::londefdef::table[-1]{'vvinc'} = '';      $Apache::londefdef::table[-1]{'vvinc'} = '';
  }   }
     }    my $width;
    return $currentstring;   foreach my $key (keys(%{$token->[2]})) {
       if ($key =~ /^width$/i) {
    $width = &Apache::lonxml::get_param($key,$parstack,$safeeval,undef,1);
       }
  }   }
    if (defined($width)) { $Apache::londefdef::table[-1]{'width'}=$width; }
       }
       return $currentstring;
   }
         sub end_table {          sub end_table {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
             my $currentstring = '';              my $currentstring = '';
Line 1321  EDITBUTTON Line 1389  EDITBUTTON
  }   }
                 #define the length of the table cells                  #define the length of the table cells
  my @lengthforoutput = split(/,/,$Apache::londefdef::table[-1]{'lengthrow'}[0]);   my @lengthforoutput = split(/,/,$Apache::londefdef::table[-1]{'lengthrow'}[0]);
  my $how_many_columns = $#lengthforoutput + 1;   my $how_many_columns = $#lengthforoutput + 1; #total number of columns in the table 
  my $filled_columns = 0;   my $filled_columns = 0; #number of columns with information about width
  foreach my $tempo_length (@{ $Apache::londefdef::table[-1]{'lengthrow'} }) {   my $available_space = ' ';
     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*/) {$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";  
  if (-e $filename) {  
     $temp_file = Apache::File->new($filename);   
     my @tbl_file_content = <$temp_file>;  
     my ($one,$two) = split(/,/,$tbl_file_content[0]);  
  $how_many_columns+=$one-1;  
  $filled_columns+=$two;  
  } else {  
     $temp_file = Apache::File->new('>>'.$filename);   
  }  
  print $temp_file "$how_many_columns,$filled_columns\n";  
  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);
     for (my $ico=0;$ico<=$#lengthforoutput;$ico++) {      for (my $ico=0;$ico<=$#lengthforoutput;$ico++) {
Line 1379  EDITBUTTON Line 1428  EDITBUTTON
  }     }  
     }      }
  }   }
                 my $parboxlength = '(\textwidth';   for (my $ico=0;$ico<=$#lengthforoutput;$ico++) {
                 for (my $io=0; $io<=$#lengthforoutput;$io++) {      if (not $lengthforoutput[$ico]=~m/^\s*0\s*\w*\s*$/) {
     $parboxlength .= ' - '.$lengthforoutput[$io].' ';   $filled_columns++;
    $available_space = $available_space.' - '.$lengthforoutput[$ico];
       }
  }   }
  $parboxlength .= ')/($GLOBALnumberOFcolumns+1) - 3 mm';   my $temp_file;
  $output =~ s/\\parbox{}{}/\\parbox{1 mm}{}/g;   my $filename = "/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout.tbl";
  $output =~ s/\\parbox{}{(\\textbf{\w?\.?})}/\\parbox{5 mm}{$1}/g; #for stupid tables with empty columns   if (-e $filename) {
  $output =~ s/\\parbox{}/\\parbox{$parboxlength}/g;      $temp_file = Apache::File->new($filename); 
                 my ($howmanyatall,$howmanyfilled) = (0,0);      my @tbl_file_content = <$temp_file>;
            my ($one,$two,$three) = split(/,/,$tbl_file_content[0]);
           $how_many_columns+=$one-1;
           $filled_columns+=$two;
       if($three=~/\S/) {$available_space = $available_space.' - '.$three;}
    } else {
       $temp_file = Apache::File->new('>>'.$filename); 
    }
    print $temp_file "$how_many_columns,$filled_columns,$available_space\n";
    $output =~ s/\\parbox{TOBECHANGEDONNUMBER}{}/\\parbox{1 mm}{}/g;
    $output =~ s/\\parbox{TOBECHANGEDONNUMBER}/\\parbox{\$SpacePerColumn}/g;
  my @tagar = @$tagstack;   my @tagar = @$tagstack;
  my $signature = 1;   my $signature = 1;
  for (my $ico=0;$ico<$#tagar;$ico++) {   for (my $ico=0;$ico<$#tagar;$ico++) {
      if ($tagar[$ico] eq 'table') { $signature = 0; }       if ($tagar[$ico] eq 'table') { $signature = 0; }
  }   }
  if ($signature) {   if ($signature) {
     my $totalnumber = $how_many_columns-$filled_columns-1;      my $NumberEmptyLength = $how_many_columns - $filled_columns;
     $output =~ s/\$GLOBALnumberOFcolumns/$totalnumber/g;      my $SpacePerColumn = '(\textwidth '.$available_space.')/'.$NumberEmptyLength;
  }      my $shorthand = ($filled_columns+1)*4;
       $output =~ s/\$SpacePerColumn/$SpacePerColumn - $shorthand mm/g;
    }
    if ($how_many_columns==1) {  #start of block with width correction for one column table
     $output=~s/^\s*\\parbox{([^}]*)}/\\parbox{\\textwidth - 1 cm}/;
    }                            #end of block with width correction for one column table
  $Apache::londefdef::table[-1]{'output'} .= $header_of_table.$output.$Apache::londefdef::table[-1]{'hinc'}.'\end{tabular}\vskip 0 mm ';   $Apache::londefdef::table[-1]{'output'} .= $header_of_table.$output.$Apache::londefdef::table[-1]{'hinc'}.'\end{tabular}\vskip 0 mm ';
  if ($#Apache::londefdef::table > 0) {   if ($#Apache::londefdef::table > 0) {
     $inmemory = $Apache::londefdef::table[-1]{'output'};      $inmemory = $Apache::londefdef::table[-1]{'output'};
     pop @Apache::londefdef::table;      pop @Apache::londefdef::table;
     $Apache::londefdef::table[-1]{'rowdata'}[$Apache::londefdef::table[-1]{'row_number'}] .= $inmemory;      $Apache::londefdef::table[-1]{'rowdata'}[$Apache::londefdef::table[-1]{'row_number'}] .= $inmemory
  } else {   } else {
     $currentstring = $Apache::londefdef::table[-1]{'output'};      $currentstring = $Apache::londefdef::table[-1]{'output'};
     $currentstring =~ s/\\\\\s+\\\\/\\\\/g;       $currentstring =~ s/\\\\\s+\\\\/\\\\/g; 
Line 1422  EDITBUTTON Line 1487  EDITBUTTON
               $currentstring = $token->[4];                     $currentstring = $token->[4];     
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $Apache::londefdef::table[-1]{'row_number'}++;   $Apache::londefdef::table[-1]{'row_number'}++;
  my $alignchar = substr(&Apache::lonxml::get_param('align',$parstack,$safeeval),0,1);   my $alignchar = substr(&Apache::lonxml::get_param('align',$parstack,$safeeval,undef,1),0,1);
  if ($alignchar ne '') {   if ($alignchar ne '') {
     push @ {$Apache::londefdef::table[-1]{'rows'} }, $alignchar;      push @ {$Apache::londefdef::table[-1]{'rows'} }, $alignchar;
  } else {   } else {
Line 1440  EDITBUTTON Line 1505  EDITBUTTON
             if ($target eq 'web') {              if ($target eq 'web') {
  $currentstring = $token->[2];        $currentstring = $token->[2];     
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
 # $currentstring .= ' START ROW '. $Apache::londefdef::table[-1]{'rowdata'}[$Apache::londefdef::table[-1]{'row_number'}].' END ROW ';  
  push @{ $Apache::londefdef::table[-1]{'lengthrow'} },$Apache::londefdef::table[-1]{'length'};   push @{ $Apache::londefdef::table[-1]{'lengthrow'} },$Apache::londefdef::table[-1]{'length'};
   
     }      }
Line 1453  EDITBUTTON Line 1517  EDITBUTTON
             if ($target eq 'web') {              if ($target eq 'web') {
               $currentstring = $token->[4];                     $currentstring = $token->[4];     
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  my $what_to_push = substr(&Apache::lonxml::get_param('align',$parstack,$safeeval),0,1);   my $what_to_push = substr(&Apache::lonxml::get_param('align',$parstack,$safeeval,undef,1),0,1);
  if ($what_to_push eq '') {   if ($what_to_push eq '') {
     $what_to_push = substr($Apache::londefdef::table[-1]{'rows'}[0],0,1);;      $what_to_push = substr($Apache::londefdef::table[-1]{'rows'}[0],0,1);;
  }   }
     push @{ $Apache::londefdef::table[-1]{'columns'} }, $what_to_push;      push @{ $Apache::londefdef::table[-1]{'columns'} }, $what_to_push;
  $Apache::londefdef::table[-1]{'counter_columns'}++;   $Apache::londefdef::table[-1]{'counter_columns'}++;
  &Apache::lonxml::startredirection();   &Apache::lonxml::startredirection();
 ;  
     }       } 
    return $currentstring;     return $currentstring;
  }           }        
Line 1473  EDITBUTTON Line 1536  EDITBUTTON
     } 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|in|pc|pt))/) {                    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;               $tempolen = $1;         
  } else {   } else {
     if (length($data)<5) {      if (length($data)<5) {
  $Apache::londefdef::table[-1]{'length'} .= '7 mm,';   $Apache::londefdef::table[-1]{'length'} .= '0 mm,';
  $tempolen = '5 mm';   $tempolen = '6 mm';
     } else {      } else {
  $Apache::londefdef::table[-1]{'length'} .= '0 mm,';   $Apache::londefdef::table[-1]{'length'} .= '0 mm,';
  $tempolen = '';   $tempolen = 'TOBECHANGEDONNUMBER';
     }      }
                 }                                                          }                                        
  @{ $Apache::londefdef::table[-1]{'rowdata'} }[$current_row] .= '\parbox{'.$tempolen.'}{'.$data.'} '.$Apache::londefdef::table[-1]{'vinc'};   @{ $Apache::londefdef::table[-1]{'rowdata'} }[$current_row] .= '\parbox{'.$tempolen.'}{'.$data.'} '.$Apache::londefdef::table[-1]{'vinc'};
Line 1496  EDITBUTTON Line 1559  EDITBUTTON
             if ($target eq 'web') {              if ($target eq 'web') {
               $currentstring = $token->[4];                     $currentstring = $token->[4];     
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  my $what_to_push = substr(&Apache::lonxml::get_param('align',$parstack,$safeeval),0,1);   my $what_to_push = substr(&Apache::lonxml::get_param('align',$parstack,$safeeval,undef,1),0,1);
  if ($what_to_push eq '') {   if ($what_to_push eq '') {
     $what_to_push = substr($Apache::londefdef::table[-1]{'rows'}[0],0,1);;      $what_to_push = substr($Apache::londefdef::table[-1]{'rows'}[0],0,1);;
  }   }
Line 1527  EDITBUTTON Line 1590  EDITBUTTON
 #-- <img> tag  #-- <img> tag
         sub start_img {          sub start_img {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
             $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=      my $src = &Apache::lonxml::get_param('src',$parstack,$safeeval,
                                         $token->[2]->{'src'};   undef,1);
               $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=$src;
             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];                     if ($ENV{'browser.imagesuppress'} ne 'on') {
                    $currentstring = $token->[4];
         } else {
     my $alttag= &Apache::lonxml::get_param
                                  ('alt',$parstack,$safeeval,undef,1);
                     unless ($alttag) {
       $alttag=&Apache::lonmeta::alttag
                                      ($Apache::lonxml::pwd[-1],$src);
                     }
                     $currentstring='[IMAGE: '.$alttag.']';
         }
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
       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);       &image_replication($src);
               if (-e $src) {          #new one  
                 #if original gif/jpg/png file exist do following:
                 if (-e $src) {          
                     #defines the default size of image
   my $image = Image::Magick->new;    my $image = Image::Magick->new;
   my $current_figure = $image->Read($src);    my $current_figure = $image->Read($src);
   $width_param = $image->Get('width') * $scaling;;    $width_param = $image->Get('width') * $scaling;;
   $height_param = $image->Get('height') * $scaling;;    $height_param = $image->Get('height') * $scaling;;
   undef $image;    undef $image;
   my $epssrc = $src;    #do we have any specified size of the picture?
   $epssrc =~ s/(\.gif|\.jpg)$/\.eps/i;    my $TeXwidth = &Apache::lonxml::get_param('TeXwidth',$parstack,$safeeval);
   if (not -e $epssrc) {    my $TeXheight = &Apache::lonxml::get_param('TeXheight',$parstack,$safeeval);
       my $localfile = $epssrc;    my $width = &Apache::lonxml::get_param('width',$parstack,$safeeval,
       $localfile =~ s/.*(\/res)/$1/;                                                           undef,1);
       my $file;    if ($TeXwidth ne '') {  
       my $path;        if ($TeXwidth=~/(\d+)\s*\%/) {
       if ($localfile =~ m!(.*)/([^/]*)$!) {    $width_param = $1*$ENV{'form.textwidth'}/100;
   $file = $2;        } else { 
   $path = $1.'/';     $width_param = $TeXwidth;
       }  
       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);        
       }        }
     } 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 ($src =~ m!(.*)/([^/]*)$!) {    if ($src =~ m!(.*)/([^/]*)$!) {
       $file = $2;         $file = $2; 
       $path = $1.' /';         $path = $1.'/'; 
   }     } 
   my $newsrc = $src;    my $newsrc = $src;
   $newsrc =~ s/(\.gif|\.jpg)$/\.eps/i;    $newsrc =~ s/\.(gif|jpg|png)$/.eps/i;
   $file=~s/(\.gif|\.jpg)$/\.eps/i;    $file=~s/\.(gif|jpg|png)$/.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?    #where can we find the picture?
   if (-e $newsrc) {    if (-e $newsrc) {
                         #eps counterpart for image exist 
       if ($path) {        if ($path) {
   $currentstring .= '\noindent\graphicspath{{'.$path.'}}\fbox{\includegraphics[width='.$width_param.' mm]{'.$file.'}} ';    $currentstring .= '\vskip 1 mm \noindent\graphicspath{{'.$path.'}}\includegraphics[width='.$width_param.' mm]{'.$file.'} ';
       }        }
   } else {    } else {
       my $temp_file;                        #there is no eps counterpart for image - check for ps one
       my $filename = "/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout.dat";        $newsrc =~ s/\.eps$/\.ps/;
       $temp_file = Apache::File->new('>>'.$filename);         if (-e $newsrc) {
       print $temp_file "$src\n";    #ps counterpart for image exist 
       $currentstring .= '\graphicspath{{/home/httpd/prtspool/}}\fbox{\includegraphics[width='.$width_param.' mm]{'.$file.'}} ';    $file =~ s/\.eps$/\.ps/;
     if ($path) {
         $currentstring .= '\vskip 1 mm \noindent\graphicspath{{'.$path.'}}\includegraphics[width='.$width_param.' mm]{'.$file.'} ';
     }
         } else {
     #there aren't eps or ps - so create eps 
     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 .= '\vskip 1 mm \graphicspath{{/home/httpd/prtspool/}}\includegraphics[width='.$width_param.' mm]{'.$file.'} ';
         }
   }    }
       } else {        } else {
   my $alt = &Apache::lonxml::get_param('alt',$parstack,$safeeval);    #original image file doesn't exist so check the alt attribute
     my $alt = &Apache::lonxml::get_param('alt',$parstack,$safeeval,undef,1);
                   if ($alt) {                    if ($alt) {
       $currentstring .= ' '.$alt.' ';        $currentstring .= ' '.$alt.' ';
   } else {    } else {
                       $currentstring .= ' THE ORIGINAL PROBLEM CONTAINS EMPTY IMG TAG WITHOUT IMAGE ';                       #<allow> tag will care about replication 
   }    }
       }        }
     }      }
Line 1637  EDITBUTTON Line 1703  EDITBUTTON
                                         $token->[2]->{'archive'};                                          $token->[2]->{'archive'};
             my $currentstring = '';              my $currentstring = '';
             if ($target eq 'web') {              if ($target eq 'web') {
               $currentstring = $token->[4];                if ($ENV{'browser.appletsuppress'} ne 'on') {
                    $currentstring = $token->[4];
         } else {
     my $alttag=$token->[2]->{'alt'};
                     unless ($alttag) {
                        $alttag=&Apache::lonmeta::alttag($ENV{'REQUEST_URI'},
                                                         $token->[2]->{'code'});
                     }
                     $currentstring='[APPLET: '.$alttag.']';
         }
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
               $currentstring = " \\begin{figure} ";                $currentstring = " \\begin{figure} ";
     }       } 
Line 1662  sub start_embed { Line 1737  sub start_embed {
  $token->[2]->{'src'};   $token->[2]->{'src'};
     my $currentstring = '';      my $currentstring = '';
     if ($target eq 'web') {      if ($target eq 'web') {
  $currentstring = $token->[4];         if ($ENV{'browser.embedsuppress'} ne 'on') {
             $currentstring = $token->[4];
          } else {
     my $alttag=$token->[2]->{'alt'};
             unless ($alttag) {
                $alttag=&Apache::lonmeta::alttag($ENV{'REQUEST_URI'},
                                                 $token->[2]->{'src'});
             }
             $currentstring='[EMBED: '.$alttag.']';
         }
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $currentstring = " \\begin{figure} ";     $currentstring = " \\begin{figure} ";  
     }       } 
Line 1707  sub start_embed { Line 1791  sub start_embed {
     }       } 
    return $currentstring;     return $currentstring;
  }   }
   
 #-- <allow> tag  #-- <allow> tag
   sub start_allow {
       my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
       $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=
    $token->[2]->{'src'};
       my $src = &Apache::lonxml::get_param('src',$parstack,$safeeval,undef,1);
       &image_replication($src);
       my $result;
       if ($target eq 'edit') {
    $result .=&Apache::edit::tag_start($target,$token);
    $result .=&Apache::edit::text_arg('File Spec:','src',$token,70);
    $result .=&Apache::edit::end_row();#.&Apache::edit::start_spanning_row();
       } elsif ($target eq 'modified') {
    my $constructtag=&Apache::edit::get_new_args($token,$parstack,
        $safeeval,'src');
    if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); }
       }
       return $result;
   }
   
         sub start_allow {  sub end_allow {
     my ($target,$token) = @_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
       if ( $target eq 'edit') { return (&Apache::edit::end_table()); }
             $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=         return '';
                                         $token->[2]->{'src'};  }
   
    return '';  
  }  
         sub end_allow {  
    return '';  
  }  
 #-- Frames  #-- Frames
  sub start_frameset {   sub start_frameset {
   my ($target,$token) = @_;    my ($target,$token) = @_;
Line 1728  sub start_embed { Line 1823  sub start_embed {
   if ($target eq 'web') {     if ($target eq 'web') { 
     if (!$Apache::lonxml::registered) {      if (!$Apache::lonxml::registered) {
       $currentstring.='<head>'.        $currentstring.='<head>'.
   &Apache::lonxml::registerurl(undef,$target).'</head>';    &Apache::lonmenu::registerurl(undef,$target).'</head>';
     }      }
     $currentstring .= $token->[4];      $currentstring .= $token->[4];
   }    }
Line 1768  sub start_embed { Line 1863  sub start_embed {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
             my $currentstring = '';              my $currentstring = '';
             if ($target eq 'web') {              if ($target eq 'web') {
  my $display = &Apache::lonxml::get_param('display',$parstack,$safeeval);   my $display = &Apache::lonxml::get_param('display',$parstack,$safeeval,undef,1);
        $currentstring .= '<b>'.$display.'</b>';;         $currentstring .= '<b>'.$display.'</b>';;
     }      }
            return $currentstring;             return $currentstring;
Line 1786  sub start_embed { Line 1881  sub start_embed {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
             my $currentstring = '';              my $currentstring = '';
             if ($target eq 'web') {              if ($target eq 'web') {
  my $display = &Apache::lonxml::get_param('display',$parstack,$safeeval);   my $display = &Apache::lonxml::get_param('display',$parstack,$safeeval,undef,1);
        $currentstring .= '<b>'.$display.'</b>';;         $currentstring .= '<b>'.$display.'</b>';;
     }      }
            return $currentstring;             return $currentstring;
Line 1804  sub start_embed { Line 1899  sub start_embed {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
             my $currentstring = '';              my $currentstring = '';
             if ($target eq 'tex') {              if ($target eq 'tex') {
  my $howmuch = &Apache::lonxml::get_param('heigth',$parstack,$safeeval);   my $howmuch = &Apache::lonxml::get_param('heigth',$parstack,$safeeval,undef,1);
  $currentstring .= '\vskip '.$howmuch.' ';   $currentstring .= '\vskip '.$howmuch.' ';
     }      }
            return $currentstring;             return $currentstring;
Line 1817  sub start_embed { Line 1912  sub start_embed {
     }      }
            return $currentstring;             return $currentstring;
  }   }
   #-- <abbr> tag
         sub start_abbr {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_abbr {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <acronym> tag
         sub start_acronym {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_acronym {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <area> tag
         sub start_area {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_area {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <base> tag
         sub start_base {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_base {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <bdo> tag
         sub start_bdo {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_bdo {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <bgsound> tag
         sub start_bgsound {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_bgsound {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <blink> tag
         sub start_blink {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_blink {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <blockquote> tag
         sub start_blockquote {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_blockquote {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <button> tag
         sub start_button {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_button {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <caption> tag
         sub start_caption {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_caption {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <col> tag
         sub start_col {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_col {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <colgroup> tag
         sub start_colgroup {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_colgroup {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <del> tag
         sub start_del {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_del {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <fieldset> tag
         sub start_fieldset {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_fieldset {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <frame> tag
         sub start_frame {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_frame {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <iframe> tag
         sub start_iframe {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_iframe {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <ins> tag
         sub start_ins {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_ins {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <isindex> tag
         sub start_isindex {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_isindex {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <keygen> tag
         sub start_keygen {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_keygen {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <label> tag
         sub start_label {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_label {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <layer> tag
         sub start_layer {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_layer {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <legend> tag
         sub start_legend {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_legend {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <link> tag
         sub start_link {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_link {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <marquee> tag
         sub start_marquee {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_marquee {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <malticol> tag
         sub start_malticol {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_malticol {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <nobr> tag
         sub start_nobr {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_nobr {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <noembed> tag
         sub start_noembed {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_noembed {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <noframes> tag
         sub start_noframes {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_noframes {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <nolayer> tag
         sub start_nolayer {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_nolayer {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <noscript> tag
         sub start_noscript {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_noscript {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <object> tag
         sub start_object {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_object {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <optgroup> tag
         sub start_optgroup {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_optgroup {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <samp> tag
         sub start_samp {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_samp {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <server> tag
         sub start_server {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_server {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <spacer> tag
         sub start_spacer {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_spacer {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <span> tag
         sub start_span {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_span {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <tbody> tag
         sub start_tbody {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_tbody {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <tfoot> tag
         sub start_tfoot {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_tfoot {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <thead> tag
         sub start_thead {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_thead {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <var> tag
         sub start_var {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_var {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   #-- <wbr> tag
         sub start_wbr {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } 
      return $currentstring;
    }
           sub end_wbr {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];    
               } 
      return $currentstring;
    }
   
   sub image_replication {
       my $src = shift;
       if (not -e '/home/httpd/html'.$src) {
    #replicates image itself
    &Apache::lonnet::repcopy('/home/httpd/html'.$src);
    #replicates eps or ps 
    my $newsrc = $src;
    $newsrc =~ s/\.(gif|jpg|png)$/.eps/;
    if (not-e $newsrc && &Apache::lonnet::repcopy('/home/httpd/html'.$newsrc) ne 'OK') {
       $newsrc =~ s/\.eps$/\.ps/;
       &Apache::lonnet::repcopy('/home/httpd/html'.$newsrc);
    }
       }
       return '';
   }
   
 1;  1;
 __END__  __END__

Removed from v.1.82  
changed lines
  Added in v.1.117


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.