diff --git a/md2tex/md2tex.py b/md2tex/md2tex.py new file mode 100755 index 0000000..c6119e8 --- /dev/null +++ b/md2tex/md2tex.py @@ -0,0 +1,79 @@ +#!/usr/bin/python +import markdown,sys +from HTMLParser import HTMLParser + +class MDHTML2TexParser(HTMLParser): + txt='' + oul=False + def handle_starttag(self, tag, attrs): + if tag=='h2': + self.txt+='\\section{' + if tag=='h3': + self.txt+='\\subsection{' + if tag=='h4': + self.txt+='\\subsubsection{' + if tag=='strong': + self.txt+='\\textbf{' + if tag=='em': + self.txt+='\\textit{' + + if tag=='ul': + self.txt+='\\begin{itemize}\n' + self.oul=True + if tag=='ol': + self.txt+='\\begin{enumerate}\n' + self.oul=True + if tag=='li': + self.txt+='\\item ' + if tag=='p': + self.txt+='\n\n' + + def handle_endtag(self, tag): + if tag=='h2' or\ + tag=='h3' or\ + tag=='h4': + self.txt+='}\n' + if tag=='strong' or\ + tag=='em': + self.txt+='}' + if tag=='ul': + self.txt+='\\end{itemize}\n' + if tag=='ol': + self.txt+='\\end{enumerate}\n' + + def handle_data(self, data): + self.txt+=data + + def handle_entityref(self,ref): + self.handle_charref(ref) + def handle_charref(self,ref): + if self.body: + self.txt += '&'+ref+';' + +if not(len(sys.argv)==3 or len(sys.argv)==2): + print "Usage: %s infile [outfile] " % sys.argv[0] + sys.exit(1) +html=markdown.markdown(open(sys.argv[1]).read(),["math"]) +parser = MDHTML2TexParser() +parser.feed(html) + +if len(sys.argv)==2: + f=sys.stdout +else: + f=open(sys.argv[2],'w') + +f.write(""" +\\documentclass{scrartcl} +\\usepackage[latin1]{inputenc} +\\usepackage[T1]{fontenc} +\\usepackage[ngerman]{babel} +\\usepackage{amsmath} + +\\title{Ein Testdokument} +\\author{Otto Normalverbraucher} +\\date{05. Januar 2004} +\\begin{document} +""") +f.write(parser.txt) +f.write("\\end{document}\n") + diff --git a/md2tex/mdx_math.py b/md2tex/mdx_math.py new file mode 100644 index 0000000..4ee1e8f --- /dev/null +++ b/md2tex/mdx_math.py @@ -0,0 +1,23 @@ +def makeExtension(configs=None) : + return MathExtension() + +from markdown.inlinepatterns import Pattern +import markdown, urllib + +class MathPattern(Pattern): + def __init__(self,md): + Pattern.__init__(self,"\$\$(.*?)\$\$",md) + def handleMatch(self, m): + + texcode=m.group(2) + el = markdown.util.etree.Element('span') + el.text="$"+self.unescape(texcode)+"$" + + #el.attrib["alt"]=self.unescape(texcode) + #el.attrib["class"]='tex' + return el + +class MathExtension(markdown.Extension): + def extendMarkdown(self, md, md_globals): + md.inlinePatterns.add('math', MathPattern(md), '