问题
I tried pprint
, print
, the former only prints Unicode version, and the latter doesn't do pretty prints.
from sympy import symbols, Function
import sympy.functions as sym
from sympy import init_printing
init_printing(use_latex=True)
from sympy import pprint
from sympy import Symbol
x = Symbol('x')
# If a cell contains only the following, it will render perfectly.
(pi + x)**2
# However I would like to control what to print in a function,
# so that multiple expressions can be printed from a single notebook cell.
pprint((pi + x)**2)
回答1:
you need to use display:
from IPython.display import display
display(yourobject)
It will choose the appropriate representation (text/LaTex/png...), in recent enough version of IPython (6.0+) display is imported by default, still we recommend to explicitly import it.
回答2:
The issue is with your init_printing statement. In a notebook, you do not want to run latex, instead you should use mathjax, so try this instead:
init_printing(use_latex='mathjax')
When I use this, I get normal pretty printing everywhere, even when I have a sympy expression as the last line of the cell.
回答3:
This works,
from IPython.display import display, Latex
from sympy import *
x = symbols('x')
display(x)
int_x = Integral(cos(x)*exp(x), x)
result = "$${} = {}$$".format(latex(int_x), latex(int_x.doit()))
display(Latex(result))
derv_x = Derivative(cos(x)*exp(x), x)
result = "$${} = {}$$".format(latex(derv_x), latex(derv_x.doit()))
display(Latex(result))
try it for yourself.
来源:https://stackoverflow.com/questions/20979993/how-to-pretty-print-in-ipython-notebook-via-sympy