I have asked a similar question (now linked to this one).
After reading the answers and tinkering a bit, I conclude that there are 3 types of output one can get:
"Not pretty", pure text... "low quality".
This is what one obtains with print(expression)
Pretty, pure text... "medium quality".
This is what one obtains with
import sympy as sym
sympy.pprint(expression)
It still uses the same font and uses only characters to put together the mathematical expression. But it can, e.g., raise numbers for powers, pull fractions by laying out the horizontal line, etc.
Pretty, with graphics, symbols, etc... "high quality".
This is what one obtains with
import IPython.display as disp
disp.display(expression)
This is the same as what one obtains as an output of the notebook cell, but now as a result of a command. Then, one can have multiple such outputs from a single notebook cell.
It is worth noting that:
sym.init_printing(...
affects the output of sym.pprint
.
sym.latex(expression)
produces a LaTeX string for the expression.
disp.Math(...
produces the expression from LaTeX.
These two may come in useful.
Thus, disp.display(disp.Math(sym.latex(expression)))
would produce the same output as
disp.display(expression)
.
init_printing
for this to work, as that's what registers the LaTeX display for SymPy objects. – Cesspool