import html from misaka import Markdown, HtmlRenderer import latex2mathml.converter import re def renderLatex(code): code = code.strip() code = code.replace("=>", "\\Rightarrow") code = code.replace("->", "\\rightarrow") code = code.replace("*", "\\cdot") a = re.search(r"{[^{}]*} */ *{[^{}]*}", code) while a is not None: newcode = code[:a.span()[0]] newcode += "\\frac" newcode += re.sub(r'}[ ]*/[ ]*{', '}{', code[a.span()[0] : a.span()[1]]) newcode += code[a.span()[1]:] code = newcode a = re.search(r"{[^{}}]*} */ *{[^{}}]*}", code) return latex2mathml.converter.convert(code) class HighlighterRenderer(HtmlRenderer): def codespan(self, code): lang = code.split(' ')[0] if(lang == 'tex'): return '{}\n'.format(renderLatex(' '.join(code.split(' ')[1:]).strip())) return '{}\n'.format(code.strip()) def blockcode(self, code, lang): if(lang == 'latex/equetion'): return '

{}

\n'.format(code.strip(), renderLatex(code)) return '
{}
\n'.format(lang.replace('/', '-'), code) renderer = HighlighterRenderer() md = Markdown(renderer, extensions=('fenced-code','tables')) def renderMD(src): srcFile = open(src, 'r') html = md(srcFile.read()) srcFile.close() return html