Python Sympy Latex Fraction在没有先考虑因素的情况下不会打印

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python Sympy Latex Fraction在没有先考虑因素的情况下不会打印相关的知识,希望对你有一定的参考价值。

我正在使用Python Sympy,解决二次方问题,并希望使用LaTex打印结果。例如,如果结果是x =(1 + sqrt(3))/ 2,我希望它通过LaTex打印为 frac {1 + sqrt {3}} {2}。但是,Python Sympy要么将其拆分为两个分数,如 frac {1} {2} + frac { sqrt {3}} {2},要么将因子分解为一半,如 frac {1} {2 }(1 + sqrt {3})。我试图通过sympy.fraction(expr)返回分子并查看了其他文章(Sympy - fraction manipulation和其他文章),但没有人能够产生结果。

答案

看看how to override the default printers.

import sympy
from sympy.printing.latex import LatexPrinter # necessary because latex is both a function and a module

class CustomLatexPrinter(LatexPrinter):
    def _print_Add(self, expr):
        n, d = expr.as_numer_denom()
        if d == sympy.S.One:
            # defer to the default printing mechanism
            super()._print_Add(expr)
            return
        return r'frac{%s}{%s}' % (sympy.latex(n), sympy.latex(d)) 

# doing this should override the default latex printer globally
# adopted from "Examples of overloading StrPrinter" in the sympy documentation
sympy.printing.latex = lambda self: CustomLatexPrinter().doprint(self)

print(sympy.printing.latex((1 + sympy.sqrt(3)) / 2)) # frac{1 + sqrt{3}}{2}

以上是关于Python Sympy Latex Fraction在没有先考虑因素的情况下不会打印的主要内容,如果未能解决你的问题,请参考以下文章

SymPy可以渲染LaTeX以在GUI中使用吗?

python3的sympy

如何在Python 3中打印上标/下标?

python sympy evalf()函数

使用 Sympy 在 Python 中进行符号集成

在 IPython (Jupyter) 中更改 Latex 输出的颜色