diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..dfd8e8b --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +sympy +latex2sympy2 diff --git a/tex.snippets b/tex.snippets index 45aa4c7..dca8331 100644 --- a/tex.snippets +++ b/tex.snippets @@ -200,6 +200,42 @@ snip.rv = subprocess.check_output(['wolframscript', '-code', code]) ` endsnippet +priority 10000 +context "math()" +snippet '^(.*(?:= |\$))(.*[^\s=])\s*$' "latex-sympy-calculator-expression" wr +`!p +import re +from latex2sympy2 import latex2latex, latex2sympy, var, variances, set_variances, set_real, latex +from sympy import simplify +prefix = match.group(1) +code = match.group(2) +reg = re.match(r'^(.*)\&\s*=(?:.*)$', prefix) +sep = '\n' + ' ' * len(reg.group(1)) + '&= ' if reg else ' = ' +try: + snip.rv = prefix + code + sep + latex(simplify(latex2sympy(code).subs(variances))) +except: + snip.rv = prefix + code + sep +` +endsnippet + +priority 10000 +context "math()" +snippet '^(.*(?:= |\$))(.*)=\s*$' "latex-sympy-calculator-numeric" wr +`!p +import re +from latex2sympy2 import latex2latex, latex2sympy, var, variances, set_variances, set_real, latex +from sympy import simplify +prefix = match.group(1) +code = match.group(2) +reg = re.match(r'^(.*)\&\s*=(?:.*)$', prefix) +sep = '\n' + ' ' * len(reg.group(1)) + '&= ' if reg else ' = ' +try: + snip.rv = prefix + code + sep + latex(simplify(latex2sympy(code).subs(variances).doit().doit()).evalf(subs=variances)) +except: + snip.rv = prefix + code + sep +` +endsnippet + snippet == "equals" iA &= $1 \\\\ endsnippet