col*_*ang 44 python pretty-print sympy jupyter jupyter-notebook
我试过pprint,print前者只打印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)
Run Code Online (Sandbox Code Playgroud)
Mat*_*att 60
你需要使用显示器:
from IPython.display import display
display(yourobject)
Run Code Online (Sandbox Code Playgroud)
它会选择合适的表示形式(text/LaTex/png ...),默认导入最近版本的IPython(6.0+)显示,我们仍然建议显式导入它.
小智 27
问题出在你的init_printing语句中.在笔记本中,你不想运行latex,而应该使用mathjax,所以请尝试使用:
init_printing(use_latex='mathjax')
Run Code Online (Sandbox Code Playgroud)
当我使用它时,我到处都能得到正常的漂亮打印,即使我有一个表情符号作为单元格的最后一行.
这有效,
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))
Run Code Online (Sandbox Code Playgroud)
自己试试吧。
我问过一个类似的问题(现在链接到这个问题)。阅读答案并稍加修改后,我得出结论,可以得到 3 种类型的输出:
“不漂亮”,纯文字……“低质量”。这就是一个人获得的print(expression)
漂亮、纯正的文字……“中等质量”。这就是一个人获得的
import sympy as sym
sympy.pprint(expression)
Run Code Online (Sandbox Code Playgroud)
它仍然使用相同的字体并且仅使用字符来组合数学表达式。但它可以,例如,增加幂的数字,通过布置水平线来提取分数等。
漂亮,带有图形、符号等......“高品质”。这就是一个人获得的
import IPython.display as disp
disp.display(expression)
Run Code Online (Sandbox Code Playgroud)
这与作为笔记本单元的输出获得的相同,但现在作为命令的结果。然后,可以从单个笔记本单元获得多个这样的输出。
值得一提的是:
sym.init_printing(...影响输出sym.pprint。
sym.latex(expression)为表达式生成一个 LaTeX 字符串。
disp.Math(...从 LaTeX 生成表达式。这两个可能有用。因此,disp.display(disp.Math(sym.latex(expression)))将产生与 相同的输出
disp.display(expression)。
| 归档时间: |
|
| 查看次数: |
29739 次 |
| 最近记录: |