web-dev-qa-db-ja.com

sympy経由でipythonノートブックをきれいに印刷するにはどうすればよいですか?

pprintprintを試しました。前者はUnicodeバージョンのみを印刷し、後者はきれいな印刷を行いません。

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)
41
colinfang

ディスプレイを使用する必要があります:

from IPython.display import display

display(yourobject)

適切な表現(text/LaTex/png ...)を選択します。最近の十分なバージョンのIPython(6.0+)ディスプレイはデフォルトでインポートされますが、明示的にインポートすることをお勧めします。

56
Matt

問題は、init_printingステートメントにあります。ノートブックでは、latexを実行したくないので、代わりにmathjaxを使用する必要があるため、代わりにこれを試してください。

init_printing(use_latex='mathjax')

これを使用すると、セルの最後の行にsympy式がある場合でも、どこでも通常のきれいな印刷が得られます。

26
Kyle

これは機能します

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))

自分で試してみてください。

1
acesaif