Diff for /loncom/xml/londefdef.pm between versions 1.15 and 1.56

version 1.15, 2001/01/05 19:20:01 version 1.56, 2002/05/03 22:32:15
Line 1 Line 1
   
 # The LearningOnline Network with CAPA  # The LearningOnline Network with CAPA
 # Tags Default Definition Module   # Tags Default Definition Module 
 #  #
   # $Id$
   # 
   #
   # Copyright Michigan State University Board of Trustees
   #
   # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
   #
   # LON-CAPA is free software; you can redistribute it and/or modify
   # it under the terms of the GNU General Public License as published by
   # the Free Software Foundation; either version 2 of the License, or
   # (at your option) any later version.
   #
   # LON-CAPA is distributed in the hope that it will be useful,
   # but WITHOUT ANY WARRANTY; without even the implied warranty of
   # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   # GNU General Public License for more details.
   #
   # You should have received a copy of the GNU General Public License
   # along with LON-CAPA; if not, write to the Free Software
   # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   #
   # /home/httpd/html/adm/gpl.txt
   #
   # http://www.lon-capa.org/
   #
   # Copyright for TtHfunc and TtMfunc by Ian Hutchinson. 
   # TtHfunc and TtMfunc (the "Code") may be compiled and linked into 
   # binary executable programs or libraries distributed by the 
   # Michigan State University (the "Licensee"), but any binaries so 
   # distributed are hereby licensed only for use in the context
   # of a program or computational system for which the Licensee is the 
   # primary author or distributor, and which performs substantial 
   # additional tasks beyond the translation of (La)TeX into HTML.
   # The C source of the Code may not be distributed by the Licensee
   # to any other parties under any circumstances.
   #
   #
 # last modified 06/26/00 by Alexander Sakharuk  # last modified 06/26/00 by Alexander Sakharuk
 # 11/6,11/30 Gerd Kortemeyer  # 11/6,11/30,02/01/01,5/4 Gerd Kortemeyer
   # 01/18 Alex Sakharuk
   
 package Apache::londefdef;   package Apache::londefdef; 
   
   use Apache::lonnet;
 use strict;  use strict;
 use Apache::lonxml;  use Apache::lonxml;
   
 sub BEGIN {  
   
     &Apache::lonxml::register('Apache::londefdef',('m','html','head','map','applet','select','option','input','textarea','form','meta','title','body','center','b','strong','table','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','tr','td'));  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','td'));
   
 }  }
   
 #===================================================================== TAG SUBROUTINES  #======================= TAG SUBROUTINES =====================
 #-- <output>  #-- <output>
         sub start_output {  sub start_output {
      my ($target,$token) = @_;    my ($target) = @_;
             $Apache::lonxml::textredirection = 1;     if ($target eq 'meta') { $Apache::lonxml::metamode--; }
             my $result = '';    return '';
             return $result;  }
  }  sub end_output {
         sub end_output {    my ($target) = @_;
      my ($target,$token) = @_;    if ($target eq 'meta') { $Apache::lonxml::metamode++; }
             $Apache::lonxml::textredirection = 0;                 return '';
             my $result = '';  }
             return $result;  
  }  
 #-- <m> tag  #-- <m> tag
         sub start_m {  sub start_m {
     my ($target,$token,$parstack,$parser) = @_;    my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
             my $currentstring = '';    my $currentstring = '';
             if ($target eq 'web') {    if ($target eq 'web') {
  my $inside = &Apache::lonxml::get_all_text("/m",$$parser[$#$parser]);       my $inside = &Apache::lonxml::get_all_text("/m",$$parser[-1]);
                 $inside ='\\documentstyle{article}'.$inside;      $inside ='\\documentstyle{article}'.$inside;
 #          &Apache::lonxml::debug($inside);      &Apache::lonxml::debug("M is starting with:$inside:");
                 $currentstring = &Apache::lontexconvert::converted(\$inside);      my $eval=&Apache::lonxml::get_param('eval',$parstack,$safeeval);
 #          &Apache::lonxml::debug($currentstring);      if ($eval eq 'on') {
         $inside=&Apache::run::evaluate($inside,$safeeval,$$parstack[-1]);
     } elsif ($target eq 'tex') {        #&Apache::lonxml::debug("M is evaulated to:$inside:");
               $currentstring = "";      }
             }      $currentstring = &Apache::lontexconvert::converted(\$inside);
    return $currentstring;      if ($Apache::lontexconvert::errorstring) {
  }        &Apache::lonxml::warning("tth error: ".
         sub end_m {         $Apache::lontexconvert::errorstring);
     my ($target,$token) = @_;        $Apache::lontexconvert::errorstring='';
             my $currentstring = '';      }
             if ($target eq 'web') {      #&Apache::lonxml::debug("M is ends with:$currentstring:");
             } elsif ($target eq 'tex') {    } elsif ($target eq 'tex') {
               $currentstring = "";      $currentstring = "";
     } elsif ($target eq 'meta') {    }
             }    return $currentstring;
    return $currentstring;  }
  }  sub end_m {
 #-------------------------------------------------------------------------- <html> tag        my ($target,$token) = @_;
     my $currentstring = '';
     if ($target eq 'web') {
     } elsif ($target eq 'tex') {
       $currentstring = "";
     } elsif ($target eq 'meta') {
     }
     return $currentstring;
   }
   #-- <html> tag    
       sub start_html {        sub start_html {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             my $currentstring = '';              my $currentstring = '';
       if ($ENV{'browser.mathml'}) {
         &tth::ttminit();
       } else {
         &tth::tthinit();
       }
             if ($target eq 'web') {              if ($target eq 'web') {
               $currentstring = $token->[4];                     $currentstring = &Apache::lonxml::xmlbegin().
     }                                  &Apache::lonxml::fontsettings();     
       } elsif ($target eq 'tex') {
         @Apache::londefdef::table = ();
         $currentstring .= '\documentclass[letterpaper]{article}
                                    \newcommand{\keephidden}[1]{}           
                                    \usepackage[dvips]{graphicx}
                                    \usepackage{epsfig}';
       }
    return $currentstring;     return $currentstring;
  }   }
         sub end_html {          sub end_html {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             my $currentstring = '';              my $currentstring = '';
             if ($target eq 'web') {              if ($target eq 'web') {
               $currentstring = $token->[2];       $currentstring = &Apache::lonxml::xmlend();
             }       }
    return $currentstring;     return $currentstring;
  }   }
 #-------------------------------------------------------------------------- <head> tag  #-- <head> tag
       sub start_head {        sub start_head {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             my $currentstring = '';              my $currentstring = '';
Line 85  sub BEGIN { Line 145  sub BEGIN {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             my $currentstring = '';              my $currentstring = '';
             if ($target eq 'web') {              if ($target eq 'web') {
               $currentstring = $token->[2];                    $currentstring = &Apache::lonxml::registerurl(undef,$target).
                                  $token->[2];    
             }               } 
    return $currentstring;     return $currentstring;
  }   }
 #--------------------------------------------------------------------------- <map> tag  #-- <map> tag
       sub start_map {        sub start_map {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             my $currentstring = '';              my $currentstring = '';
Line 106  sub BEGIN { Line 167  sub BEGIN {
             }               } 
    return $currentstring;     return $currentstring;
  }   }
 #------------------------------------------------------------------------ <applet> tag  #-- <select> tag
       sub start_applet {  
     my ($target,$token) = @_;  
             my $currentstring = '';  
             if ($target eq 'web') {  
               $currentstring = $token->[4];       
     }   
    return $currentstring;  
  }  
         sub end_applet {  
     my ($target,$token) = @_;  
             my $currentstring = '';  
             if ($target eq 'web') {  
               $currentstring = $token->[2];      
             }   
    return $currentstring;  
  }  
 #------------------------------------------------------------------------ <select> tag  
       sub start_select {        sub start_select {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             my $currentstring = '';              my $currentstring = '';
Line 140  sub BEGIN { Line 184  sub BEGIN {
             }               } 
    return $currentstring;     return $currentstring;
  }   }
 #------------------------------------------------------------------------ <option> tag  #-- <option> tag
       sub start_option {        sub start_option {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             my $currentstring = '';              my $currentstring = '';
Line 157  sub BEGIN { Line 201  sub BEGIN {
             }               } 
    return $currentstring;     return $currentstring;
  }   }
 #------------------------------------------------------------------------- <input> tag  #-- <input> tag
       sub start_input {        sub start_input {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             my $currentstring = '';              my $currentstring = '';
Line 174  sub BEGIN { Line 218  sub BEGIN {
             }               } 
    return $currentstring;     return $currentstring;
  }   }
 #---------------------------------------------------------------------- <textarea> tag  #-- <textarea> tag
       sub start_textarea {        sub start_textarea {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             my $currentstring = '';              my $currentstring = '';
Line 191  sub BEGIN { Line 235  sub BEGIN {
             }               } 
    return $currentstring;     return $currentstring;
  }   }
 #-------------------------------------------------------------------------- <form> tag  #-- <form> tag
       sub start_form {        sub start_form {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             my $currentstring = '';              my $currentstring = '';
Line 208  sub BEGIN { Line 252  sub BEGIN {
             }               } 
    return $currentstring;     return $currentstring;
  }   }
 #------------------------------------------------------------------------- <title> tag  #-- <title> tag
       sub start_title {        sub start_title {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             my $currentstring = '';              my $currentstring = '';
             if ($target eq 'web') {              if ($target eq 'web') {
               $currentstring = $token->[4];                     $currentstring = $token->[4];     
       } elsif ($target eq 'tex') {
                 $currentstring .= '\keephidden{' 
     }      }
             if ($target eq 'meta') {              if ($target eq 'meta') {
  $currentstring='<title>';   $currentstring='<title>';
Line 226  sub BEGIN { Line 272  sub BEGIN {
             my $currentstring = '';              my $currentstring = '';
             if ($target eq 'web') {              if ($target eq 'web') {
               $currentstring = $token->[2];                    $currentstring = $token->[2];    
             }              } elsif ($target eq 'tex') {
                 $currentstring .= '}';
       }  
             if ($target eq 'meta') {              if ($target eq 'meta') {
                &end_output();                 &end_output();
                $currentstring='</title>';                 $currentstring='</title>';
             }               } 
    return $currentstring;     return $currentstring;
  }   }
 #-------------------------------------------------------------------------- <meta> tag  #-- <meta> tag
       sub start_meta {        sub start_meta {
     my ($target,$token) = @_;      my ($target,$token,$tagstack,$parstack,$parser) = @_;
             my $currentstring = '';              my $currentstring = '';
             if ($target eq 'web') {              if ($target eq 'web') {
               $currentstring = $token->[4];             my $args='';
         if ( $#$parstack > -1 ) { $args=$$parstack[$#$parstack]; }
         if ($args eq '') {
    &Apache::lonxml::get_all_text("/meta",$$parser[$#$parser]);
         } else {
    $currentstring = $token->[4];
         }
     }      }
             if ($target eq 'meta') {              if ($target eq 'meta') {
  unless ($token->[2]->{'http-equiv'}) {   unless ($token->[2]->{'http-equiv'}) {
Line 254  sub BEGIN { Line 308  sub BEGIN {
     }      }
    return $currentstring;     return $currentstring;
  }   }
         sub end_meta {        sub end_meta {
     my ($target,$token) = @_;   my ($target,$token,$tagstack,$parstack,$parser) = @_;
             my $currentstring = '';   my $currentstring = '';
             if ($target eq 'web') {   if ($target eq 'web') {
               $currentstring = $token->[2];        my $args='';
             }     if ( $#$parstack > -1 ) { $args=$$parstack[$#$parstack]; }
    return $currentstring;    if ($args ne '') {
  }      $currentstring = $token->[4];
 #-------------------------------------------------------------------------- <body> tag    }
    } 
    return $currentstring;
         }
   #-- <body> tag
         sub start_body {          sub start_body {
     my ($target,$token) = @_;              my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
   #    my ($target,$token) = @_;
             my $currentstring = '';              my $currentstring = '';
             if ($target eq 'web') {              if ($target eq 'web') {
               $currentstring = $token->[4];             if (!$Apache::lonxml::registered) {
     } elsif ($target eq 'tex') {   $currentstring.='<head>'.
               $currentstring = " \\begin{document} ";        &Apache::lonxml::registerurl(undef,$target).'</head>';
         }
         my $onLoad='';
         foreach my $key (keys(%{$token->[2]})) {
    if ($key =~ /^onload$/i) {
     $onLoad.=$token->[2]->{$key}.';';
     delete($token->[2]->{$key});
    }
         }
         $token->[2]->{'onLoad'}=&Apache::lonxml::loadevents().
                          ';'.$onLoad;
         my $onUnload='';
         foreach my $key (keys(%{$token->[2]})) {
    if ($key =~ /^onunload$/i) {
     $onUnload.=$token->[2]->{$key}.';';
     delete($token->[2]->{$key});
    }
         }
         $token->[2]->{'onUnload'}=&Apache::lonxml::unloadevents().
                            ';'.$onUnload;
   
         $currentstring .= '<'.$token->[1];
         foreach (keys %{$token->[2]}) {
          $currentstring.=' '.$_.'="'.$token->[2]->{$_}.'"';
         }
         $currentstring.='>';
         if ($ENV{'request.state'} ne 'published') {
    $currentstring.=(<<EDITBUTTON);
    <form method="post">
    <input type="submit" name="editmode" value="Edit" />
    </form>
   EDITBUTTON
         }
              } elsif ($target eq 'tex') {
                 $currentstring = '\begin{document}';  
     }       } 
    return $currentstring;     return $currentstring;
  }   }
Line 279  sub BEGIN { Line 372  sub BEGIN {
             if ($target eq 'web') {              if ($target eq 'web') {
               $currentstring = $token->[2];                     $currentstring = $token->[2];     
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
               $currentstring = " \\end{document}";                  $currentstring = '\end{document}';  
     }       } 
    return $currentstring;     return $currentstring;
  }   }
 #------------------------------------------------------------------------ <center> tag  #-- <center> tag
         sub start_center {          sub start_center {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             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') {
               $currentstring = " \\begin{center} ";                  $currentstring = '\begin{center}';  
       }  elsif ($target eq 'latexsource') {
                 $currentstring = '\begin{center}';  
     }       } 
    return $currentstring;     return $currentstring;
  }   }
Line 300  sub BEGIN { Line 395  sub BEGIN {
             if ($target eq 'web') {              if ($target eq 'web') {
               $currentstring = $token->[2];                     $currentstring = $token->[2];     
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
               $currentstring = " \\end{center}";                  $currentstring = '\end{center}';  
       }  elsif ($target eq 'latexsource') {
                 $currentstring = '\end{center}';  
     }       } 
    return $currentstring;     return $currentstring;
  }   }
 #----------------------------------------------------------------------------- <b> tag  #-- <b> tag
         sub start_b {          sub start_b {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             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') {
               $currentstring = " {\\bf ";                  $currentstring = '\textbf{';  
       }  elsif ($target eq 'latexsource') {
                 $currentstring = '\textbf{';  
     }       } 
    return $currentstring;     return $currentstring;
  }   }
Line 321  sub BEGIN { Line 420  sub BEGIN {
             if ($target eq 'web') {              if ($target eq 'web') {
               $currentstring = $token->[2];                     $currentstring = $token->[2];     
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
               $currentstring = "}";                  $currentstring = '}';  
   
       } elsif ($target eq 'latexsource') {
                 $currentstring = '}';  
     }       } 
    return $currentstring;     return $currentstring;
  }   }
 #------------------------------------------------------------------------ <strong> tag  #-- <strong> tag
         sub start_strong {          sub start_strong {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             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') {
               $currentstring = " {\\bf ";                  $currentstring = '\textbf{';  
       } elsif ($target eq 'latexsource') {
                 $currentstring = '\textbf{';  
     }       } 
    return $currentstring;     return $currentstring;
  }   }
Line 343  sub BEGIN { Line 447  sub BEGIN {
   
               $currentstring = $token->[2];                     $currentstring = $token->[2];     
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
               $currentstring = "}";                  $currentstring = '}';  
       }  elsif ($target eq 'latexsource') {
                 $currentstring = '}';  
     }       } 
    return $currentstring;     return $currentstring;
  }   }
 #---------------------------------------------------------------------------- <h1> tag  #-- <h1> tag
         sub start_h1 {          sub start_h1 {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             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') {
  $currentstring .= "\\chapter{ ";   $currentstring .= '\large{\textbf{';
     } elsif ($target eq 'meta') {      } elsif ($target eq 'meta') {
  $currentstring='<subject>';   $currentstring='<subject>';
                 &start_output();                  &start_output();
Line 367  sub BEGIN { Line 473  sub BEGIN {
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[2];         $currentstring .= $token->[2];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $currentstring .= "}";   $currentstring .= '}}';
     } elsif ($target eq 'meta') {      } elsif ($target eq 'meta') {
                 &end_output();                  &end_output();
  $currentstring='</subject>';   $currentstring='</subject>';
             }               } 
            return $currentstring;             return $currentstring;
  }   }
 #---------------------------------------------------------------------------- <h2> tag  #-- <h2> tag
         sub start_h2 {          sub start_h2 {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             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') {
  $currentstring .= "\\section{ ";   $currentstring .= '\large{\textbf{';
     }       } 
            return $currentstring;             return $currentstring;
  }   }
Line 391  sub BEGIN { Line 497  sub BEGIN {
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[2];         $currentstring .= $token->[2];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $currentstring .= "}";   $currentstring .= '}}';
     }       } 
            return $currentstring;             return $currentstring;
  }   }
 #---------------------------------------------------------------------------- <h3> tag  #-- <h3> tag
         sub start_h3 {          sub start_h3 {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             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') {
  $currentstring .= "\\subsection{ ";   $currentstring .= '\large{\textbf{';
     }       } 
            return $currentstring;             return $currentstring;
  }   }
Line 412  sub BEGIN { Line 518  sub BEGIN {
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[2];         $currentstring .= $token->[2];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $currentstring .= "}";   $currentstring .= '}}';
     }       } 
            return $currentstring;             return $currentstring;
  }   }
 #---------------------------------------------------------------------------- <h4> tag  #-- <h4> tag
         sub start_h4 {          sub start_h4 {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             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') {
  $currentstring .= "\\subsubsection{ ";   $currentstring .= '\large{\textbf{';
     }       } 
            return $currentstring;             return $currentstring;
  }   }
Line 433  sub BEGIN { Line 539  sub BEGIN {
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[2];         $currentstring .= $token->[2];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $currentstring .= "}";   $currentstring .= '}}';
     }       } 
            return $currentstring;             return $currentstring;
  }   }
 #---------------------------------------------------------------------------- <h5> tag  #-- <h5> tag
         sub start_h5 {          sub start_h5 {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             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') {
  $currentstring .= "\\paragraph{ ";   $currentstring .= '\large{\textbf{';
     }       } 
            return $currentstring;             return $currentstring;
  }   }
Line 454  sub BEGIN { Line 560  sub BEGIN {
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[2];         $currentstring .= $token->[2];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $currentstring .= "}";   $currentstring .= '}}';
     }       } 
            return $currentstring;             return $currentstring;
  }   }
 #---------------------------------------------------------------------------- <h6> tag  #-- <h6> tag
         sub start_h6 {          sub start_h6 {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             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') {
  $currentstring .= "\\subparagraph{ ";   $currentstring .= '\large{\textbf{';
     }       } 
            return $currentstring;             return $currentstring;
  }   }
Line 475  sub BEGIN { Line 581  sub BEGIN {
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[2];         $currentstring .= $token->[2];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $currentstring .= "}";   $currentstring .= '}}';
     }       } 
            return $currentstring;             return $currentstring;
  }   }
 #-------------------------------------------------------------------------- <cite> tag  #--- <cite> tag
         sub start_cite {          sub start_cite {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             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') {
  $currentstring .= "{ \\it ";   $currentstring .= "\\textit{";
       }  elsif ($target eq 'latexsource') {
    $currentstring .= "\\textit{";
     }       } 
            return $currentstring;             return $currentstring;
  }   }
Line 497  sub BEGIN { Line 605  sub BEGIN {
        $currentstring .= $token->[2];         $currentstring .= $token->[2];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $currentstring .= "}";   $currentstring .= "}";
       }  elsif ($target eq 'latexsource') {
    $currentstring .= "}";
     }       } 
            return $currentstring;             return $currentstring;
  }   }
 #----------------------------------------------------------------------------- <i> tag  #-- <i> tag
         sub start_i {          sub start_i {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             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') {
  $currentstring .= "{ \\it ";   $currentstring .= '\textit{';
       }  elsif ($target eq 'latexsource') {
    $currentstring .= '\textit{';
     }       } 
            return $currentstring;             return $currentstring;
  }   }
Line 517  sub BEGIN { Line 629  sub BEGIN {
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[2];         $currentstring .= $token->[2];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $currentstring .= "}";   $currentstring .= '}';
       } elsif ($target eq 'latexsource') {
    $currentstring .= '}';
     }       } 
            return $currentstring;             return $currentstring;
  }   }
 #----------------------------------------------------------------------- <address> tag  #-- <address> tag
         sub start_address {          sub start_address {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             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') {
  $currentstring .= "{ \\it ";   $currentstring .= "\\textit{";
       } elsif ($target eq 'latexsource') {
    $currentstring .= "\\textit{";
     }       } 
            return $currentstring;             return $currentstring;
  }   }
Line 539  sub BEGIN { Line 655  sub BEGIN {
        $currentstring .= $token->[2];         $currentstring .= $token->[2];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $currentstring .= "}";   $currentstring .= "}";
       } elsif ($target eq 'latexsource') {
    $currentstring .= "}";
     }      }
            return $currentstring;             return $currentstring;
  }   }
 #--------------------------------------------------------------------------- <dfn> tag  #-- <dfn> tag
         sub start_dfn {          sub start_dfn {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             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') {
  $currentstring .= "{ \\it ";   $currentstring .= "\\textit{";
       } elsif ($target eq 'latexsource') {
    $currentstring .= "\\textit{";
     }       } 
            return $currentstring;             return $currentstring;
  }   }
Line 560  sub BEGIN { Line 680  sub BEGIN {
        $currentstring .= $token->[2];         $currentstring .= $token->[2];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $currentstring .= "}";   $currentstring .= "}";
       } elsif ($target eq 'latexsource') {
    $currentstring .= "}";
     }       } 
            return $currentstring;             return $currentstring;
  }   }
 #---------------------------------------------------------------------------- <tt> tag  #-- <tt> tag
         sub start_tt {          sub start_tt {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             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') {
  $currentstring .= "{ \\tt ";   $currentstring .= '\texttt{';
       } elsif ($target eq 'latexsource') {
    $currentstring .= '\texttt{';
     }       } 
            return $currentstring;             return $currentstring;
  }   }
Line 580  sub BEGIN { Line 704  sub BEGIN {
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[2];         $currentstring .= $token->[2];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $currentstring .= "}";   $currentstring .= '}';
     }       } elsif ($target eq 'latexsource') {
    $currentstring .= '}';
       }
            return $currentstring;             return $currentstring;
  }   }
 #---------------------------------------------------------------------------- <kbd> tag  #-- <kbd> tag
         sub start_kbd {          sub start_kbd {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             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') {
  $currentstring .= "{ \\tt ";   $currentstring .= "\\texttt";
       } elsif ($target eq 'latexsource') {
    $currentstring .= "\\texttt{";
     }       } 
            return $currentstring;             return $currentstring;
  }   }
Line 602  sub BEGIN { Line 730  sub BEGIN {
        $currentstring .= $token->[2];         $currentstring .= $token->[2];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $currentstring .= "}";   $currentstring .= "}";
       } elsif ($target eq 'latexsource') {
    $currentstring .= "}";
     }       } 
            return $currentstring;             return $currentstring;
  }   }
 #-------------------------------------------------------------------------- <code> tag  #-- <code> tag
         sub start_code {          sub start_code {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             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') {
  $currentstring .= "{ \\tt ";   $currentstring .= '\texttt{';
     }       } 
            return $currentstring;             return $currentstring;
  }   }
Line 622  sub BEGIN { Line 752  sub BEGIN {
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[2];         $currentstring .= $token->[2];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $currentstring .= "}";   $currentstring .= '}';
     }       } 
            return $currentstring;             return $currentstring;
  }   }
 #---------------------------------------------------------------------------- <em> tag  #-- <em> tag
         sub start_em {          sub start_em {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             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') {
  $currentstring .= "\\emph{";   $currentstring .= '\emph{';
       } elsif ($target eq 'latexsource') {
    $currentstring .= '\emph{';
     }       } 
            return $currentstring;             return $currentstring;
  }   }
Line 643  sub BEGIN { Line 775  sub BEGIN {
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[2];         $currentstring .= $token->[2];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $currentstring .= "}";   $currentstring .= '}';
     }       } elsif ($target eq 'latexsource') {
    $currentstring .= '}';
       }  
            return $currentstring;             return $currentstring;
  }   }
 #----------------------------------------------------------------------------- <q> tag  #-- <q> tag
         sub start_q {          sub start_q {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             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') {
  $currentstring .= "{ \\emph ";   $currentstring .= "\\emph{";
     }       }  elsif ($target eq 'latexsource') {
    $currentstring .= "\\emph{";
       }
            return $currentstring;             return $currentstring;
  }   }
         sub end_q {          sub end_q {
Line 665  sub BEGIN { Line 801  sub BEGIN {
        $currentstring .= $token->[2];         $currentstring .= $token->[2];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $currentstring .= "}";   $currentstring .= "}";
     }       } elsif ($target eq 'latexsource') {
    $currentstring .= "}";
       }  
            return $currentstring;             return $currentstring;
  }   }
 #----------------------------------------------------------------------------- <p> tag  #-- <p> tag
         sub start_p {          sub start_p {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             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') {
  $currentstring .= "{\\par ";   $currentstring .= '{\par ';
       } elsif ($target eq 'latexsource') {
    $currentstring .= '{\par ';
     }       } 
            return $currentstring;             return $currentstring;
  }   }
Line 685  sub BEGIN { Line 825  sub BEGIN {
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[2];         $currentstring .= $token->[2];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
         $currentstring .= " }";          $currentstring .= '}';
               } elsif ($target eq 'latexsource') {
           $currentstring .= '}';
             }              }
            return $currentstring;             return $currentstring;
  }   }
 #---------------------------------------------------------------------------- <br> tag  #-- <br> tag
         sub start_br {          sub start_br {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             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') {
  $currentstring .= "\\\\";   $currentstring .= '\\\\';
       } elsif ($target eq 'latexsource') {
    $currentstring .= '\\';
     }       } 
            return $currentstring;             return $currentstring;
  }   }
Line 708  sub BEGIN { Line 852  sub BEGIN {
     }      }
            return $currentstring;             return $currentstring;
  }   }
 #--------------------------------------------------------------------------- <big> tag  #-- <big> tag
         sub start_big {          sub start_big {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             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') {
  $currentstring .= "{\\large ";   $currentstring .= '\large{';
     }       } elsif ($target eq 'latexsource') {
    $currentstring .= '{\Large ';
       }  
            return $currentstring;             return $currentstring;
  }   }
         sub end_big {          sub end_big {
Line 725  sub BEGIN { Line 871  sub BEGIN {
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[2];         $currentstring .= $token->[2];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
         $currentstring .= " }";          $currentstring .= '}';
               } elsif ($target eq 'latexsource') {
           $currentstring .= '}';
             }              }
            return $currentstring;             return $currentstring;
  }   }
 #------------------------------------------------------------------------- <small> tag  #-- <small> tag
         sub start_small {          sub start_small {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             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') {
  $currentstring .= "{\\footnotesize ";   $currentstring .= '{\footnotesize ';
       } elsif ($target eq 'latexsource') {
    $currentstring .= '{\footnotesize ';
     }       } 
            return $currentstring;             return $currentstring;
  }   }
Line 746  sub BEGIN { Line 896  sub BEGIN {
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[2];         $currentstring .= $token->[2];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
         $currentstring .= " }";          $currentstring .= '}';
               } elsif ($target eq 'latexsource') {
           $currentstring .= '}';
             }              }
            return $currentstring;             return $currentstring;
  }   }
 #---------------------------------------------------------------------- <basefont> tag  #-- <basefont> tag
       sub start_basefont {        sub start_basefont {
  my ($target,$token) = @_;   my ($target,$token) = @_;
  my $currentstring = '';   my $currentstring = '';
Line 767  sub BEGIN { Line 919  sub BEGIN {
  }    } 
  return $currentstring;   return $currentstring;
       }        }
 #-------------------------------------------------------------------------- <font> tag  #-- <font> tag
          sub start_font {           sub start_font {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             my $currentstring = '';              my $currentstring = '';
Line 784  sub BEGIN { Line 936  sub BEGIN {
             }               } 
    return $currentstring;     return $currentstring;
  }    } 
 #------------------------------------------------------------------------ <strike> tag  #-- <strike> tag
         sub start_strike {          sub start_strike {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             my $currentstring = '';              my $currentstring = '';
Line 805  sub BEGIN { Line 957  sub BEGIN {
             }              }
            return $currentstring;             return $currentstring;
  }   }
 #----------------------------------------------------------------------------- <s> tag  #-- <s> tag
         sub start_s {          sub start_s {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             my $currentstring = '';              my $currentstring = '';
Line 826  sub BEGIN { Line 978  sub BEGIN {
             }              }
            return $currentstring;             return $currentstring;
  }   }
 #--------------------------------------------------------------------------- <sub> tag  #-- <sub> tag
         sub start_sub {          sub start_sub {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             my $currentstring = '';              my $currentstring = '';
Line 847  sub BEGIN { Line 999  sub BEGIN {
             }              }
            return $currentstring;             return $currentstring;
  }   }
 #--------------------------------------------------------------------------- <sup> tag  #-- <sup> tag
         sub start_sup {          sub start_sup {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             my $currentstring = '';              my $currentstring = '';
Line 868  sub BEGIN { Line 1020  sub BEGIN {
             }              }
            return $currentstring;             return $currentstring;
  }   }
 #---------------------------------------------------------------------------- <hr> tag  #-- <hr> tag
         sub start_hr {          sub start_hr {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             my $currentstring = '';              my $currentstring = '';
Line 888  sub BEGIN { Line 1040  sub BEGIN {
     }       } 
            return $currentstring;             return $currentstring;
  }   }
 #----------------------------------------------------------------------------- <a> tag  #-- <a> tag
         sub start_a {          sub start_a {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             my $currentstring = '';              my $currentstring = '';
Line 899  sub BEGIN { Line 1051  sub BEGIN {
            return $currentstring;             return $currentstring;
  }   }
         sub end_a {          sub end_a {
     my ($target,$token,$stackref) = @_;      my ($target,$token,$tagstack,$stackref) = @_;
             my $currentstring = '';              my $currentstring = '';
             if ($target eq 'web') {              if ($target eq 'web') {
        $currentstring .= $token->[2];         $currentstring .= $token->[2];
Line 915  sub BEGIN { Line 1067  sub BEGIN {
             }              }
            return $currentstring;             return $currentstring;
  }   }
 #---------------------------------------------------------------------------- <li> tag  #-- <li> tag
         sub start_li {          sub start_li {
     my ($target,$token,$stackref) = @_;      my ($target,$token,$tagstack,$stackref) = @_;
             my $currentstring = '';              my $currentstring = '';
             if ($target eq 'web') {              if ($target eq 'web') {
               $currentstring = $token->[4];                     $currentstring = $token->[4];     
Line 945  sub BEGIN { Line 1097  sub BEGIN {
     }       } 
    return $currentstring;     return $currentstring;
  }   }
 #----------------------------------------------------------------------------- <u> tag  #-- <u> tag
         sub start_u {          sub start_u {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             my $currentstring = '';              my $currentstring = '';
Line 966  sub BEGIN { Line 1118  sub BEGIN {
             }              }
            return $currentstring;             return $currentstring;
  }   }
 #---------------------------------------------------------------------------- <ul> tag  #-- <ul> tag
         sub start_ul {          sub start_ul {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             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') {
               $currentstring = " \\begin{itemize} ";                  $currentstring = '\begin{itemize}';  
     }       } 
    return $currentstring;     return $currentstring;
  }   }
Line 983  sub BEGIN { Line 1135  sub BEGIN {
             if ($target eq 'web') {              if ($target eq 'web') {
               $currentstring = $token->[2];                     $currentstring = $token->[2];     
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
               $currentstring = " \\end{itemize}";                  $currentstring = '\end{itemize}';  
     }       } 
    return $currentstring;     return $currentstring;
  }   }
 #-------------------------------------------------------------------------- <menu> tag  #-- <menu> tag
         sub start_menu {          sub start_menu {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             my $currentstring = '';              my $currentstring = '';
Line 1008  sub BEGIN { Line 1160  sub BEGIN {
     }       } 
    return $currentstring;     return $currentstring;
  }   }
 #--------------------------------------------------------------------------- <dir> tag  #-- <dir> tag
         sub start_dir {          sub start_dir {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             my $currentstring = '';              my $currentstring = '';
Line 1029  sub BEGIN { Line 1181  sub BEGIN {
     }       } 
    return $currentstring;     return $currentstring;
  }   }
 #---------------------------------------------------------------------------- <ol> tag  #-- <ol> tag
         sub start_ol {          sub start_ol {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             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') {
               $currentstring = " \\begin{enumerate} ";                  $currentstring = '\begin{enumerate}';  
     }       } 
    return $currentstring;     return $currentstring;
  }   }
Line 1046  sub BEGIN { Line 1198  sub BEGIN {
             if ($target eq 'web') {              if ($target eq 'web') {
               $currentstring = $token->[2];                     $currentstring = $token->[2];     
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
               $currentstring = " \\end{enumerate}";                  $currentstring = '\end{enumerate}';  
     }       } 
    return $currentstring;     return $currentstring;
  }   }
 #---------------------------------------------------------------------------- <dl> tag  #-- <dl> tag
         sub start_dl {          sub start_dl {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             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') {
               $currentstring = " \\begin{description} ";                  $currentstring = '\begin{description}';  
     }       } 
    return $currentstring;     return $currentstring;
  }   }
Line 1067  sub BEGIN { Line 1219  sub BEGIN {
             if ($target eq 'web') {              if ($target eq 'web') {
               $currentstring = $token->[2];                     $currentstring = $token->[2];     
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
               $currentstring = " \\end{description}";                  $currentstring = '\end{description}';  
     }       } 
    return $currentstring;     return $currentstring;
  }   }
 #---------------------------------------------------------------------------- <dt> tag  #-- <dt> tag
         sub start_dt {          sub start_dt {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             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') {
               $currentstring = "\\item[ ";                  $currentstring = '\item[';  
     }       } 
    return $currentstring;     return $currentstring;
  }   }
Line 1088  sub BEGIN { Line 1240  sub BEGIN {
             if ($target eq 'web') {              if ($target eq 'web') {
               $currentstring = $token->[2];                    $currentstring = $token->[2];    
             } elsif ($target eq 'tex') {              } elsif ($target eq 'tex') {
               $currentstring = "]";                  $currentstring = ']';  
     }       } 
    return $currentstring;     return $currentstring;
  }   }
 #---------------------------------------------------------------------------- <dd> tag  #-- <dd> tag
         sub start_dd {          sub start_dd {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             my $currentstring = '';              my $currentstring = '';
Line 1109  sub BEGIN { Line 1261  sub BEGIN {
             }               } 
    return $currentstring;     return $currentstring;
  }   }
 #------------------------------------------------------------------------- <table> tag  #-- <table> tag
         sub start_table {          sub start_table {
     my ($target,$token) = @_;      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') {
               $currentstring = "";     my $aa = {};
    push @Apache::londefdef::table, $aa; 
    $Apache::londefdef::table[-1]{'row_number'} = -1;
    $Apache::londefdef::table[-1]{'output'} = '\begin{tabular} ';
    my $border = &Apache::lonxml::get_param('border',$parstack,$safeeval);
    unless (defined $border) { $border = 0; }
    if ($border) { 
       $Apache::londefdef::table[-1]{'hinc'} = '\hline '; 
       $Apache::londefdef::table[-1]{'vinc'} = '&'; 
       $Apache::londefdef::table[-1]{'vvinc'} = '|';
    } else {
       $Apache::londefdef::table[-1]{'hinc'} = ''; 
       $Apache::londefdef::table[-1]{'vinc'} = ''; 
       $Apache::londefdef::table[-1]{'vvinc'} = '';
    }
     }       } 
    return $currentstring;     return $currentstring;
  }   }
Line 1126  sub BEGIN { Line 1292  sub BEGIN {
             if ($target eq 'web') {              if ($target eq 'web') {
               $currentstring = $token->[2];                     $currentstring = $token->[2];     
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
               $currentstring = "";     my $inmemory = '';
     }    my $output = '';
    my $header_of_table = '{'.$Apache::londefdef::table[-1]{'vvinc'};
    my $in;
    for ($in=0;$in<=$Apache::londefdef::table[-1]{'counter_columns'};$in++) {
       $header_of_table .= $Apache::londefdef::table[-1]{'columns'}[$in].$Apache::londefdef::table[-1]{'vvinc'};
    }
    $header_of_table .= '}';
    for ($in=0;$in<=$Apache::londefdef::table[-1]{'row_number'};$in++) {
       $output .=  $Apache::londefdef::table[-1]{'rowdata'}[$in];
       chop $output;
       $output .= ' \\\\ ';
    }
    $Apache::londefdef::table[-1]{'output'} .= $header_of_table.$output.$Apache::londefdef::table[-1]{'hinc'}.'\end{tabular}';
    if ($#Apache::londefdef::table > 0) {
       $inmemory = $Apache::londefdef::table[-1]{'output'};
       pop @Apache::londefdef::table;
       $Apache::londefdef::table[-1]{'rowdata'}[$Apache::londefdef::table[-1]{'row_number'}] .= $inmemory;
    } else {
       $currentstring = $Apache::londefdef::table[-1]{'output'};
       $currentstring =~ s/\\\\\s+\\\\/\\\\/g; 
       pop @Apache::londefdef::table;
    }
       }
    return $currentstring;     return $currentstring;
  }   }
 #------------------------------------------------------------------------- <tr> tag  #-- <tr> tag
         sub start_tr {          sub start_tr {
     my ($target,$token) = @_;      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') {
       $currentstring = '';   $Apache::londefdef::table[-1]{'row_number'}++;
    my $alignchar = substr(&Apache::lonxml::get_param('align',$parstack,$safeeval),0,1);
    if ($alignchar ne '') {
       push @ {$Apache::londefdef::table[-1]{'rows'} }, $alignchar;
    } else {
       push @ {$Apache::londefdef::table[-1]{'rows'} }, 'c';
    }
    push ( @{ $Apache::londefdef::table[-1]{'rowdata'} }, $Apache::londefdef::table[-1]{'hinc'});
    $Apache::londefdef::table[-1]{'counter_columns'} = -1;
   
     }       } 
    return $currentstring;     return $currentstring;
  }   }        
         sub end_tr {          sub end_tr {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             my $currentstring = '';              my $currentstring = '';
             if ($target eq 'web') {              if ($target eq 'web') {
               $currentstring = $token->[2];        $currentstring = $token->[2];     
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
               $currentstring = "";    # $currentstring .= ' START ROW '. $Apache::londefdef::table[-1]{'rowdata'}[$Apache::londefdef::table[-1]{'row_number'}].' END ROW ';
     }       }
    return $currentstring;     return $currentstring;
  }   }
 #------------------------------------------------------------------------- <td> tag  #-- <td> tag
         sub start_td {          sub start_td {
     my ($target,$token) = @_;      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') {
       $currentstring = '';   my $what_to_push = substr(&Apache::lonxml::get_param('align',$parstack,$safeeval),0,1);
    if ($what_to_push eq '') {
       $what_to_push = substr($Apache::londefdef::table[-1]{'rows'}[0],0,1);;
    }
       push @{ $Apache::londefdef::table[-1]{'columns'} }, $what_to_push;
    $Apache::londefdef::table[-1]{'counter_columns'}++;
    &Apache::lonxml::startredirection();
   ;
     }       } 
    return $currentstring;     return $currentstring;
  }   }        
         sub end_td {          sub end_td {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             my $currentstring = '';              my $currentstring = '';
             if ($target eq 'web') {              if ($target eq 'web') {
               $currentstring = $token->[2];        $currentstring = $token->[2];     
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
               $currentstring = "";     my $current_row = $Apache::londefdef::table[-1]{'row_number'};
     }    my $data=&Apache::lonxml::endredirection();
    @{ $Apache::londefdef::table[-1]{'rowdata'} }[$current_row] .= $data.' '.$Apache::londefdef::table[-1]{'vinc'};
       }
    return $currentstring;     return $currentstring;
  }   }
 # -------------------------------------------------------------------------- <img> tag  #-- <img> tag
   
         sub start_img {          sub start_img {
     my ($target,$token) = @_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
             $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=                 $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=
                                         $token->[2]->{'src'};                                          $token->[2]->{'src'};
             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') {
               $currentstring = " \\begin{figure} ";          my $src = &Apache::lonxml::get_param('src',$parstack,$safeeval);
     }         $src=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$src);
    return $currentstring;        my $file;
         my $path;
                 if ($src =~ m!(.*)/([^/]*)$!) {
     $file = $2;
     $path = $1; 
         } else {
     $path = $Apache::lonxml::pwd[-1];
     $file = $src;
         }
         $file=~s/(\.gif|\.jpg)$/\.eps/;
         if ($path) {
    $currentstring .= '\graphicspath{{'.$path.'/}}\fbox{\includegraphics{'.$file.'}}';
         } else {
    $currentstring .= 'See the image at \tt{'.$src.'}';
         }
       }
       return $currentstring;
  }   }
         sub end_img {          sub end_img {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             my $currentstring = '';              my $currentstring = '';
             if ($target eq 'web') {              if ($target eq 'web') {
               $currentstring = $token->[2];                     $currentstring = $token->[2];
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
               $currentstring = " \\end{figure}";                  $currentstring = '';
     }       }
    return $currentstring;     return $currentstring;
  }   }
 # ----------------------------------------------------------------------- <applet> tag  #-- <applet> tag
   
         sub start_applet {          sub start_applet {
     my ($target,$token) = @_;      my ($target,$token) = @_;
               $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=                   $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=   
                                         $token->[2]->{'code'};                                          $token->[2]->{'code'};
               $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=                   $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=
                                         $token->[2]->{'archive'};                                          $token->[2]->{'archive'};
             my $currentstring = '';              my $currentstring = '';
             if ($target eq 'web') {              if ($target eq 'web') {
               $currentstring = $token->[4];                     $currentstring = $token->[4];
     } elsif ($target eq 'tex') {  
               $currentstring = " \\begin{figure} ";    
     }   
    return $currentstring;  
  }  
         sub end_applet {  
     my ($target,$token) = @_;  
             my $currentstring = '';  
             if ($target eq 'web') {  
               $currentstring = $token->[2];       
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
               $currentstring = " \\end{figure}";                  $currentstring = " \\begin{figure} ";
     }       } 
    return $currentstring;     return $currentstring;
  }   }
   sub end_applet {
       my ($target,$token) = @_;
       my $currentstring = '';
       if ($target eq 'web') {
    $currentstring = $token->[2];
       } elsif ($target eq 'tex') {
    $currentstring = " \\end{figure}";
       } 
       return $currentstring;
   }
   
 # ------------------------------------------------------------------------ <embed> tag  #-- <embed> tag
   
         sub start_embed {  sub start_embed {    
     my ($target,$token) = @_;      my ($target,$token) = @_;
             $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=         $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=
                                         $token->[2]->{'src'};   $token->[2]->{'src'};
            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') {
               $currentstring = " \\begin{figure} ";     $currentstring = " \\begin{figure} ";  
     }       } 
    return $currentstring;      return $currentstring;
  }  }
         sub end_embed {          sub end_embed {
     my ($target,$token) = @_;      my ($target,$token) = @_;
             my $currentstring = '';              my $currentstring = '';
Line 1248  sub BEGIN { Line 1470  sub BEGIN {
    return $currentstring;     return $currentstring;
  }   }
   
 # ------------------------------------------------------------------------ <param> tag  #-- <param> tag
   
         sub start_param {          sub start_param {
     my ($target,$token) = @_;      my ($target,$token) = @_;
Line 1256  sub BEGIN { Line 1478  sub BEGIN {
                       $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=                        $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=
      $token->[2]->{'value'};       $token->[2]->{'value'};
             }                 }   
             $Apache::lonxml::extlinks[$Apache::lonxml::extlinks+1]=                 $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=   
                                         $token->[2]->{'src'};                                          $token->[2]->{'src'};
             my $currentstring = '';              my $currentstring = '';
             if ($target eq 'web') {              if ($target eq 'web') {
Line 1277  sub BEGIN { Line 1499  sub BEGIN {
    return $currentstring;     return $currentstring;
  }   }
   
 # ------------------------------------------------------------------------ <allow> tag  #-- <allow> tag
   
         sub start_allow {          sub start_allow {
     my ($target,$token) = @_;      my ($target,$token) = @_;
   
             $Apache::lonxml::extlinks[$Apache::lonxml::extlinks+1]=                 $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=   
                                         $token->[2]->{'src'};                                          $token->[2]->{'src'};
   
    return '';     return '';
Line 1290  sub BEGIN { Line 1512  sub BEGIN {
         sub end_allow {          sub end_allow {
    return '';     return '';
  }   }
   #-- Frames
    sub start_frameset {
     my ($target,$token) = @_;
     my $currentstring = '';
     if ($target eq 'web') { 
       if (!$Apache::lonxml::registered) {
         $currentstring.='<head>'.
     &Apache::lonxml::registerurl(undef,$target).'</head>';
       }
       $currentstring .= $token->[4];
     }
     return $currentstring;
    }
           sub end_frameset {
     my ($target,$token) = @_;
     my $currentstring = '';
     if ($target eq 'web') {
       $currentstring = $token->[2];
     }
     return $currentstring;
    }
   #-- <pre>
    sub start_pre {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
          $currentstring .= $token->[4];
       } elsif ($target eq 'tex') {
    $currentstring .= '\begin{verbatim}';
       } 
              return $currentstring;
    }
           sub end_pre {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
          $currentstring .= $token->[2];
       } elsif ($target eq 'tex') {
    $currentstring .= '\end{verbatim}';
       }
              return $currentstring;
    }
   #-- <insert>
    sub start_insert {
       my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
    my $display = &Apache::lonxml::get_param('display',$parstack,$safeeval);
          $currentstring .= '<b>'.$display.'</b>';;
       }
              return $currentstring;
    }
           sub end_insert {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
          $currentstring .= '';
       }
              return $currentstring;
    }
   #-- <externallink>
    sub start_externallink {
       my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
    my $display = &Apache::lonxml::get_param('display',$parstack,$safeeval);
          $currentstring .= '<b>'.$display.'</b>';;
       }
              return $currentstring;
    }
           sub end_externallink {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
          $currentstring .= '';
       }
              return $currentstring;
    }
 1;  1;
 __END__  __END__

Removed from v.1.15  
changed lines
  Added in v.1.56


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.