Diff for /loncom/xml/londefdef.pm between versions 1.7 and 1.63

version 1.7, 2000/10/30 20:34:25 version 1.63, 2002/05/23 17:43:07
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,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;
   use Apache::File();
   
   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'));
   
 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'));  
 }  }
   
 #===================================================================== TAG SUBROUTINES  #======================= TAG SUBROUTINES =====================
   #-- <output>
   sub start_output {
     my ($target) = @_;
     if ($target eq 'meta') { $Apache::lonxml::metamode--; }
     return '';
   }
   sub end_output {
     my ($target) = @_;
     if ($target eq 'meta') { $Apache::lonxml::metamode++; }
     return '';
   }
 #-- <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 'meta') {    if ($target eq 'web') {
               my $inside = &Apache::lonxml::get_all_text("/m",$$parser[$#$parser]);       $Apache::lonxml::prevent_entity_encode++;
       $currentstring ='';      my $inside = &Apache::lonxml::get_all_text("/m",$$parser[-1]);
     }      $inside ='\\documentstyle{article}'.$inside;
             if ($target eq 'web') {      &Apache::lonxml::debug("M is starting with:$inside:");
  my $inside = &Apache::lonxml::get_all_text("/m",$$parser[$#$parser]);       my $eval=&Apache::lonxml::get_param('eval',$parstack,$safeeval);
                 $inside ='\\documentstyle{article}'.$inside;      if ($eval eq 'on') {
 #          &Apache::lonxml::debug($inside);        $inside=&Apache::run::evaluate($inside,$safeeval,$$parstack[-1]);
                 $currentstring = &Apache::lontexconvert::converted(\$inside);        #&Apache::lonxml::debug("M is evaulated to:$inside:");
 #          &Apache::lonxml::debug($currentstring);      }
       $currentstring = &Apache::lontexconvert::converted(\$inside);
     } elsif ($target eq 'tex') {      if ($Apache::lontexconvert::errorstring) {
               $currentstring = "";        &Apache::lonxml::warning("tth error: ".
             }         $Apache::lontexconvert::errorstring);
    return $currentstring;        $Apache::lontexconvert::errorstring='';
  }      }
         sub end_m {      #&Apache::lonxml::debug("M is ends with:$currentstring:");
     my ($target,$token) = @_;    } elsif ($target eq 'tex') {
             my $currentstring = '';      $currentstring = "";
             if ($target eq 'web') {    }
             } elsif ($target eq 'tex') {    return $currentstring;
               $currentstring = "";  }
     } elsif ($target eq 'meta') {  sub end_m {
             }    my ($target,$token) = @_;
    return $currentstring;    my $currentstring = '';
  }    if ($target eq 'web') {
 #-------------------------------------------------------------------------- <html> tag          $Apache::lonxml::prevent_entity_encode--;
     } 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 73  sub BEGIN { Line 147  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 94  sub BEGIN { Line 169  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 128  sub BEGIN { Line 186  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 145  sub BEGIN { Line 203  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 162  sub BEGIN { Line 220  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 179  sub BEGIN { Line 237  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 196  sub BEGIN { Line 254  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') {
    $currentstring='<title>';
                   &start_output();
               }
    return $currentstring;     return $currentstring;
  }   }
         sub end_title {          sub end_title {
Line 210  sub BEGIN { Line 274  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') {
                  &end_output();
                  $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') {
    unless ($token->[2]->{'http-equiv'}) {
       my $name=$token->[2]->{'name'};
                       $name=~tr/A-Z/a-z/;
                       $name=~s/\s/\_/g;
                       if ($name) {
                          $currentstring='<'.$name.'>'.
                                            $token->[2]->{'content'}.
                 '</'.$name.'>';
       }
                   }
     }      }
    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 247  sub BEGIN { Line 374  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 268  sub BEGIN { Line 397  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 289  sub BEGIN { Line 422  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 311  sub BEGIN { Line 449  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') {
    $currentstring='<subject>';
                   &start_output();
               }
            return $currentstring;             return $currentstring;
  }   }
         sub end_h1 {          sub end_h1 {
Line 332  sub BEGIN { Line 475  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') {
                   &end_output();
    $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 353  sub BEGIN { Line 499  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 374  sub BEGIN { Line 520  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 395  sub BEGIN { Line 541  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 416  sub BEGIN { Line 562  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 437  sub BEGIN { Line 583  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 459  sub BEGIN { Line 607  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 479  sub BEGIN { Line 631  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 501  sub BEGIN { Line 657  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 522  sub BEGIN { Line 682  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 542  sub BEGIN { Line 706  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 564  sub BEGIN { Line 732  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 584  sub BEGIN { Line 754  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 605  sub BEGIN { Line 777  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 627  sub BEGIN { Line 803  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 647  sub BEGIN { Line 827  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 670  sub BEGIN { Line 854  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 687  sub BEGIN { Line 873  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 708  sub BEGIN { Line 898  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 = '';
             if ($target eq 'web') {   if ($target eq 'web') {
               $currentstring = $token->[4];         $currentstring = $token->[4];     
     }    } 
    return $currentstring;   return $currentstring;
  }        }
 #-------------------------------------------------------------------------- <font> tag        sub end_basefont {
    my ($target,$token) = @_;
    my $currentstring = '';
    if ($target eq 'web') {
     $currentstring = $token->[4];     
    } 
    return $currentstring;
         }
   #-- <font> tag
          sub start_font {           sub start_font {
     my ($target,$token) = @_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
             my $currentstring = '';              my $currentstring = '';
             if ($target eq 'web') {              if ($target eq 'web') {
         my $face=&Apache::lonxml::get_param('face',$parstack,$safeeval);
         if ($face=~/symbol/i) {$Apache::lonxml::prevent_entity_encode++;}
               $currentstring = $token->[4];                     $currentstring = $token->[4];     
     }       } 
    return $currentstring;     return $currentstring;
  }   }
         sub end_font {          sub end_font {
     my ($target,$token) = @_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
             my $currentstring = '';              my $currentstring = '';
             if ($target eq 'web') {              if ($target eq 'web') {
         my $face=&Apache::lonxml::get_param('face',$parstack,$safeeval);
         if ($face=~/symbol/i) {$Apache::lonxml::prevent_entity_encode--;}
               $currentstring = $token->[2];                    $currentstring = $token->[2];    
             }               } 
    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 759  sub BEGIN { Line 963  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 780  sub BEGIN { Line 984  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 801  sub BEGIN { Line 1005  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 822  sub BEGIN { Line 1026  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 842  sub BEGIN { Line 1046  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 853  sub BEGIN { Line 1057  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 861  sub BEGIN { Line 1065  sub BEGIN {
                 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}";  #        $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 869  sub BEGIN { Line 1073  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];     
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
                 my  $tempor_var = $stackref->[$#$stackref-1];                  my  $tempor_var = $stackref->[$#$stackref];
                 if (index($tempor_var,'circle') != -1 ) {                  if (index($tempor_var,'circle') != -1 ) {
           $currentstring .= " \\item[o] ";            $currentstring .= " \\item[o] ";
         } elsif (index($tempor_var,'square') != -1 ) {          } elsif (index($tempor_var,'square') != -1 ) {
                $currentstring .= " \\item[$\Box$] ";                 $currentstring .= " \\item[$\Box$] ";
         } else {          } elsif ($tempor_var ne '') { 
          $_ = $tempor_var;
                          m/my\s*([^=]*)=/;
          $currentstring .= " \\item[$1] ";
    } else {
     $currentstring .= " \\item ";      $currentstring .= " \\item ";
         }            }  
     }       } 
Line 895  sub BEGIN { Line 1103  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 916  sub BEGIN { Line 1124  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 933  sub BEGIN { Line 1141  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 958  sub BEGIN { Line 1166  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 979  sub BEGIN { Line 1187  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 996  sub BEGIN { Line 1204  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 1017  sub BEGIN { Line 1225  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 1038  sub BEGIN { Line 1246  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 1059  sub BEGIN { Line 1267  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 = " \\begin{tabular} ";     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 1076  sub BEGIN { Line 1298  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{tabular}";     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;
    }
   #-- <tr> tag
           sub start_tr {
       my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } elsif ($target eq 'tex') {
    $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;
    }        
           sub end_tr {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
    $currentstring = $token->[2];     
       } elsif ($target eq 'tex') {
   # $currentstring .= ' START ROW '. $Apache::londefdef::table[-1]{'rowdata'}[$Apache::londefdef::table[-1]{'row_number'}].' END ROW ';
       }
      return $currentstring;
    }
   #-- <td> tag
           sub start_td {
       my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } elsif ($target eq 'tex') {
    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;
    }        
           sub end_td {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
    $currentstring = $token->[2];     
       } elsif ($target eq 'tex') {
    my $current_row = $Apache::londefdef::table[-1]{'row_number'};
    my $data=&Apache::lonxml::endredirection();
    @{ $Apache::londefdef::table[-1]{'rowdata'} }[$current_row] .= $data.' '.$Apache::londefdef::table[-1]{'vinc'};
       }
      return $currentstring;
    }
   #-- <th> tag
           sub start_th {
       my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } elsif ($target eq 'tex') {
    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;
    }        
           sub end_th {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
    $currentstring = $token->[2];     
       } elsif ($target eq 'tex') {
    my $current_row = $Apache::londefdef::table[-1]{'row_number'};
    my $data=&Apache::lonxml::endredirection();
    @{ $Apache::londefdef::table[-1]{'rowdata'} }[$current_row] .= '\bf{'.$data.'} '.$Apache::londefdef::table[-1]{'vinc'};
       }
      return $currentstring;
    }
   #-- <img> tag
           sub start_img {
       my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
               $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=
                                           $token->[2]->{'src'};
               my $currentstring = '';
       my $width_param = '';
   
       if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } elsif ($target eq 'tex') {
         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; 
         } else {
     if ($width ne '') {
         $width_param = $width*.3;
         if ($width_param <= 900) {
     $width_param = '[width='.$width_param.'mm]';
         } else {
     $width_param = '[width= 9.0 cm]';
         }
     }
         }
         my $src = &Apache::lonxml::get_param('src',$parstack,$safeeval);
         $src=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$src);
         my $epssrc = $src;
         $epssrc =~ s/(\.gif|\.jpg|\.GIF|\.JPG)$/\.eps/;
         if (not -e $epssrc) {
     my $localfile = $epssrc;
     $localfile =~ s/.*(\/res)/$1/;
     my $file;
     my $path;
     if ($localfile =~ m!(.*)/([^/]*)$!) {
         $file = $2;
         $path = $1.'/'; 
     }
     my $signal_eps = 0;
     my @content_directory = &Apache::lonnet::dirlist($path);
     for (my $iy=0;$iy<=$#content_directory;$iy++) {
         my @tempo_array = split(/&/,$content_directory[$iy]);
         $content_directory[$iy] = $tempo_array[0];
         if ($file eq $tempo_array[0]) {
     $signal_eps = 1;
     last;
         }
     }
     if ($signal_eps) {
         my $eps_file = &Apache::lonnet::getfile($localfile);
     } else {
         $localfile = $src;
         $localfile =~ s/.*(\/res)/$1/;
         my $as = &Apache::lonnet::getfile($src);
         
     }
         }
         my $file;
         my $path;
                 if ($src =~ m!(.*)/([^/]*)$!) {
     $file = $2;
     $path = $1.'/'; 
         }
         my $newsrc = $src;
         $newsrc =~ s/(\.gif|\.jpg)$/\.eps/i;
     $file=~s/(\.gif|\.jpg)$/\.eps/i;
         if (-e $newsrc) {
     if ($path) {
         $currentstring .= '\graphicspath{{'.$path.'}}\fbox{\includegraphics'.$width_param.'{'.$file.'}}';
     }
         } else {
     my $temp_file;
     my $filename = "/home/httpd/prtspool/$ENV{'user.name'}$ENV{'user.domain'}temp$ENV{'user.login.time'}.dat";
     $temp_file = Apache::File->new('>>'.$filename); 
     print $temp_file "$src\n";
     $currentstring .= '\graphicspath{{/home/httpd/prtspool/}}\fbox{\includegraphics'.$width_param.'{'.$file.'}}';
         }
       }
       return $currentstring;
    }
           sub end_img {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];
       } elsif ($target eq 'tex') {
                 $currentstring = '';
       }
      return $currentstring;
    }
   #-- <applet> tag
   
           sub start_applet {
       my ($target,$token) = @_;
                 $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=   
                                           $token->[2]->{'code'};
                 $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=
                                           $token->[2]->{'archive'};
               my $currentstring = '';
               if ($target eq 'web') {
                 $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') {
    $currentstring = " \\end{figure}";
       } 
       return $currentstring;
   }
   
   #-- <embed> tag
   
   sub start_embed {    
       my ($target,$token) = @_;
       $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=
    $token->[2]->{'src'};
       my $currentstring = '';
       if ($target eq 'web') {
    $currentstring = $token->[4];
       } elsif ($target eq 'tex') {
    $currentstring = " \\begin{figure} ";  
       } 
       return $currentstring;
   }
           sub end_embed {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];     
       } elsif ($target eq 'tex') {
                 $currentstring = " \\end{figure}";  
     }       } 
    return $currentstring;     return $currentstring;
  }   }
   
   #-- <param> tag
   
           sub start_param {
       my ($target,$token) = @_;
       if ($token->[2]->{'name'} eq 'cabbase') {
                         $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=
        $token->[2]->{'value'};
               }   
               $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=   
                                           $token->[2]->{'src'};
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[4];     
       } elsif ($target eq 'tex') {
                 $currentstring = " \\begin{figure} ";  
       } 
      return $currentstring;
    }
           sub end_param {
       my ($target,$token) = @_;
               my $currentstring = '';
               if ($target eq 'web') {
                 $currentstring = $token->[2];     
       } elsif ($target eq 'tex') {
                 $currentstring = " \\end{figure}";  
       } 
      return $currentstring;
    }
   
   #-- <allow> tag
   
           sub start_allow {
       my ($target,$token) = @_;
   
               $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=   
                                           $token->[2]->{'src'};
   
      return '';
    }
           sub end_allow {
      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.7  
changed lines
  Added in v.1.63


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.