Source code for openest.generate.latextools

import formatting
from formatting import FormatElement

[docs]def call(func, description=None, *args): """Return a representation of this call. Any elements in args can be given their own FormatElements in the final dictionary. """ if len(args) == 0: funcvar = formatting.get_function() return {'main': FormatElement(funcvar + "()", [funcvar + '()'], is_primitive=True), funcvar + '()': FormatElement(description, is_abstract=True)} latex = latex_function(func, *tuple(map(formatting.get_repstr, args))) if latex: return {'main': FormatElement(latex)} if len(args) == 1: funcvar = formatting.get_function() argvar = formatting.call_argvar(args[0]) if isinstance(argvar, FormatElement): return {'main': FormatElement("%s(%s)" % (funcvar, argvar.repstr), [funcvar + r"(\cdot)"] + argvar.dependencies, is_primitive=True), funcvar + r"(\cdot)": FormatElement(description, is_abstract=True)} elif isinstance(args[0], FormatElement): return {'main': FormatElement("%s(%s)" % (funcvar, argvar), [funcvar + r"(\cdot)", argvar], is_primitive=True), funcvar + r"(\cdot)": FormatElement(description, is_abstract=True), argvar: args[0]} else: return {'main': FormatElement("%s(%s)" % (funcvar, args[0]), [funcvar + r"(\cdot)"], is_primitive=True), funcvar + r"(\cdot)": FormatElement(description, is_abstract=True)} elif len(args) == 2: funcvar = formatting.get_function() argname0 = formatting.call_argvar(args[0]) argname1 = formatting.call_argvar(args[1]) result = {'main': FormatElement("%s(%s, %s)" % (funcvar, argname0, argname1), [funcvar + r"(\cdot)"], is_primitive=True), funcvar + r"(\cdot)": FormatElement(description, is_abstract=True)} if isinstance(args[0], FormatElement): result[argname0] = args[0] result['main'].dependencies.append(argname0) if isinstance(args[1], FormatElement): result[argname1] = args[1] result['main'].dependencies.append(argname1) return result raise RuntimeError("Cannot format %s(%s)" % (func, ', '.join(["%s" % arg for arg in args])))
[docs]def latex_function(func, *args): if len(args) == 1: interp = formatting.interpret1(func) if interp == 'identity': return args[0] if len(args) == 2: interp = formatting.interpret2(func) if interp == '/': return r"\frac{%s}{%s}" % args elif interp == '-': return r"%s - %s" % args elif interp == '*': return r"\left(%s\right) \left(%s\right)" % args
[docs]def english_function(func, *args): if len(args) == 1: interp = formatting.interpret1(func) if interp == 'identity': return args[0] if len(args) == 2: interp = formatting.interpret2(func) if interp == '/': return r"%s / %s" % args elif interp == '-': return r"%s - %s" % args elif interp == '*': return r"%s x %s" % args