#!/usr/bin/env python ## ## latex2html.py (very poor version) ## ## by Yusuke Shinyama, May 2003 ## import re, sys, getopt from texparser import TexParser, TexTokenizer class ConvHTMLParser(TexParser): def __init__(self): TexParser.__init__(self) self.in_table = 0 self.in_table_tr = 0 self.in_table_td = 0 self.chapter = 0 self.section = 0 self.subsection = 0 self.hook = "" self.ok = 1 return def cr(self): if self.ok: print "

" self.ok = 0 return def do_linebreak(self): if self.in_table: if self.in_table_td: print "" self.in_table_td = 0 if self.in_table_tr: print "" self.in_table_tr = 0 else: self.cr() return def do_tablesep(self): if self.in_table and self.in_table_td: print "" self.in_table_td = 0 return def do_documentclass(self, arg): return def do_usepackage(self, arg): return def do_bibliography(self, arg): return def do_includegraphics(self, arg): print '' % arg.replace(".eps",".png") return def do_cite(self, arg): print '[%s]' % arg return def do_ref(self, arg): print '[%s]' % arg return def do_label(self, arg): print '...[%s]' % arg return def start_title(self): print "

" return def finish_title(self): print "

" return def start_grouping(self): return def finish_grouping(self): print self.hook self.hook = "" return def do_it(self): print "" self.hook = ""+self.hook return def do_bf(self): print "" self.hook = ""+self.hook return def do_tt(self): print "" self.hook = ""+self.hook return def start_underline(self): print "" return def finish_underline(self): print "" return def start_chapter(self): self.chapter += 1 self.section = 0 print "

", self.chapter, "." return def finish_chapter(self): print "

" return def start_chapter_a(self): print "

" return def finish_chapter_a(self): print "

" return def start_section(self): self.section += 1 self.subsection = 0 print "

", self.section, "." return def finish_section(self): print "

" return def start_section_a(self): print "

" return def finish_section_a(self): print "

" return def start_subsection(self): self.subsection += 1 print "

", self.subsection, "." return def finish_subsection(self): print "

" return def start_subsection_a(self): print "

" return def finish_subsection_a(self): print "

" return def begin_center(self): print "
" return def end_center(self): print "
" return def begin_math(self): print "" return def end_math(self): print "" return def begin_displaymath(self): print "
" return def end_displaymath(self): print "
" return def begin_equation(self): print "
" return def end_equation(self): print "
" return def begin_enumerate(self): print "
    " return def end_enumerate(self): print "
" return def begin_itemize(self): print "" return def do_item(self): print "
  • " return def begin_tabular(self, arg): print "" self.in_table = 1 self.in_table_tr = 0 self.in_table_td = 0 return def end_tabular(self): self.in_table = 0 if self.in_table_td: print "" if self.in_table_tr: print "" print "
    " return def handle_data(self, data): if data.strip(): if self.in_table: if not self.in_table_tr: print "" self.in_table_tr = 1 if not self.in_table_td: print "" self.in_table_td = 1 sys.stdout.write(str(data)) self.ok = 1 else: self.cr() return def do_unknown_command(self, cmd): return # main if __name__ == "__main__": def usage(): print "usage: latex2html.py [file.tex ...]" sys.exit(2) try: (opts, args) = getopt.getopt(sys.argv[1:], "") except getopt.GetoptError: usage() for n in (args or ["-"]): if n == "-": f = sys.stdin else: f = file(n) tokenizer = TexTokenizer(f) parser = ConvHTMLParser() print "" while 1: t = tokenizer.get() if not t: break parser.feed(t) parser.close() print "" f.close()