这里有一个相当长但仍然不完整的方法,它不涉及任何同情。足以涵盖(-b-sqrt(b**2-4*a*c))/(2*a)的示例,该示例被转换为\frac{- b - \sqrt{b^{2} - 4 \; a \; c}}{2 \; a},并呈现为
它基本上创建AST并遍历它,生成对应于AST节点的乳胶数学。有什么可以提供足够的想法,如何在它缺乏的地方扩展它。import ast
class LatexVisitor(ast.NodeVisitor):
def prec(self, n):
return getattr(self, 'prec_'+n.__class__.__name__, getattr(self, 'generic_prec'))(n)
def visit_Call(self, n):
func = self.visit(n.func)
args = ', '.join(map(self.visit, n.args))
if func == 'sqrt':
return '\sqrt{%s}' % args
else:
return r'\operatorname{%s}\left(%s\right)' % (func, args)
def prec_Call(self, n):
return 1000
def visit_Name(self, n):
return n.id
def prec_Name(self, n):
return 1000
def visit_Una