i'm feeding sympy.latex
string involving fractions , i'd latex representation fractions "folded", i.e., typeset 3/2 rather \frac{3}{2}. i'm setting fold_short_fractions
keyword argument true
, results i'm getting inconsistent:
>>> sympy.parsing.sympy_parser import parse_exp >>> sympy import latex >>> >>> print(latex(parse_expr("3*x**2/y"))) # ok \frac{3 x^{2}}{y} >>> print(latex(parse_expr("3*x**2/y"), fold_short_frac=true)) # ok 3 x^{2} / y >>> >>> print(latex(parse_expr("3/2"))) # ok \frac{3}{2} >>> print(latex(parse_expr("3/2"), fold_short_frac=true)) # no!! \frac{3}{2}
as can see, refuses fold numerical fraction 3/2, although seems okay symbolic expressions. have explanation/fix/workaround this? thanks!
this bug in sympy latex printer. isn't looking @ fold_short_frac
option rational numbers. i've got fix here.
in meantime, can use workaround:
from sympy.printing.latex import latexprinter class mylatexprinter(latexprinter): def _print_rational(self, expr): if expr.q != 1: sign = "" p = expr.p if expr.p < 0: sign = "- " p = -p if self._settings['fold_short_frac']: return r"%s%d / %d" % (sign, p, expr.q) return r"%s\frac{%d}{%d}" % (sign, p, expr.q) else: return self._print(expr.p) def latex(expr, **settings): return mylatexprinter(settings).doprint(expr)
Comments
Post a Comment