2009-12-24 30 views
2

HI,定制MWD的数学方程

我要定制的大规模杀伤性武器的编辑器(或wmd-new)转换的TeX方程像$ \压裂{2} {3} $到谷歌图表API图片(http://chart.apis.google.com/chart?chl=\frac{3}{2}&cht=tx

是否可以自定义HTML的生成方式?

回答

5

我决定用markitup和我写的python-markdown扩展名。以下是Google App Engine解析器的代码:

import markdown 

from urllib import urlencode 
from markdown.inlinepatterns import Pattern 
from google.appengine.ext import webapp 

LATEX_RE = r'\${2}([^$]+)\${2}' 
API_URL = 'http://chart.apis.google.com/chart?' 

class LatexPattern(Pattern): 
    """ 
     Searchs for LaTex equations $$\latex$$ and 
     returns img tags using google charts API 
    """ 

    def handleMatch(self, m): 
     el = markdown.etree.Element('img') 
     src = API_URL + urlencode({ 
      'chl': m.group(2), 
      'cht': 'tx' 
     }) 
     el.set('src', src) 
     el.set('alt', m.group(2)) 
     return el 

class LatexExtension(markdown.Extension): 
    def extendMarkdown(self, md, md_globals): 
     md.inlinePatterns.add(
      'latex', 
      LatexPattern(LATEX_RE, self), 
      '<automail' 
     ) 

class MarkdownHandler(webapp.RequestHandler): 
    def post(self): 
     data = self.request.get('data') 
     extension = LatexExtension(configs=[]) 
     md = markdown.Markdown(extensions=[extension]) 
     html = md.convert(data) 
     self.response.out.write(html)