latex-export script added

master
Stefan Krulj 15 years ago
parent 6e845d2506
commit c581a6d76b
  1. 79
      md2tex/md2tex.py
  2. 23
      md2tex/mdx_math.py
  3. 3
      mdx_math.py
  4. 4
      style.css

@ -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")

@ -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), '<image_link')

@ -6,7 +6,7 @@ import markdown, urllib
class MathPattern(Pattern):
def __init__(self,md):
Pattern.__init__(self,"!\[math\]\((.*?)\)\[math\]",md)
Pattern.__init__(self,"\$\$(.*?)\$\$",md)
def handleMatch(self, m):
texcode=m.group(2)
@ -14,6 +14,7 @@ class MathPattern(Pattern):
el.attrib["src"]="tex.cgi?"+self.unescape(texcode.replace(' ','%20'))
el.attrib["alt"]=self.unescape(texcode)
el.attrib["class"]='tex'
return el
class MathExtension(markdown.Extension):

@ -62,6 +62,10 @@ h2#subtitle {
height:15px;
}
img.tex {
vertical-align:middle;
}
/* menu */
#menu {
float:left;

Loading…
Cancel
Save