2017-11-18 2 views
1

私はPython Sympyを使って二次関数を解き、LaTexを使って結果を出力したいと思います。たとえば、結果がx =(1 + sqrt(3))/ 2ならば、LaTex経由で\ frac {1 + \ sqrt {3}} {2}として印刷したいと思います。しかし、PythonのSympyは\ frac {1} {2} + \ frac {\ sqrt {3}} {2}のようにこれを2つに分割するか、\ frac {1} {2} }(1 + \ sqrt {3})。私はsympy.fraction(expr)を介して分子を返そうとしましたが、他の記事(Sympy - fraction manipulationなど)を見ましたが、結果を生成することはできませんでした。Python Sympy Latex Fractionは最初にファクタリングせずに印刷されません

答えて

0

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} 
をチェック
関連する問題