【问题标题】:The output of diff fails to render in with enabled LaTeXdiff 的输出无法在启用 LaTeX 的情况下呈现
【发布时间】:2017-10-07 12:31:20
【问题描述】:

我想在sympy 中区分如下表达式。我正在使用jupyter qtconsole 启用乳胶:

from sympy import *
init_printing()
p0,nu,lamb,k,epsp, dp0 = symbols(r'p_0, nu, lambda, kappa, \delta\epsilon_p^p, \deltap_0')
test = Eq(epsp,((lamb-k)/nu)*dp0/p0)
p0expr = solve(test,p0)[0]
diff(p0expr, epsp)
diff(p0expr,k)
diff(p0expr,lamb)

我想重点关注最后三行代码,即第 6、7 和 8 行。第 7 行和第 8 行输出乳胶样式输出,而第 6 行不输出。为什么第 6 行没有在乳胶中得到输出?

【问题讨论】:

    标签: python sympy


    【解决方案1】:

    通过查看diff(p0expr, epsp) 的文本输出,

    -\deltap_0*(-kappa + lambda)/(\delta\epsilon_p^p**2*nu)
    

    问题在于对您命名为\delta\epsilon_p^p 的变量进行平方。 (其他两个导数没有平方。)如果这个平方在 LaTeX 标记中被转换为

    \delta\epsilon_p^p^2
    

    由于多个上标,结果是无效的 LaTeX。建议:在这个符号名称周围加上花括号,

    symbols(r'p_0, nu, lambda, kappa, {\delta\epsilon_p^p}, \deltap_0')
    

    这将防止名称和包含它的公式之间的这种干扰。

    http://live.sympy.org/ 测试:

    顶部输出来自您的版本,底部是上面的花括号。它呈现除了\deltap,这当然是一个未定义的 LaTeX 命令。除非它是您在其他地方定义的自定义内容,否则应该使用 {\delta}p_0 进行修复。

    【讨论】:

    • 对不起,我试过你的方法,还是同样的问题。更重要的是,如果我用花括号括起最后两个符号,它们都不会输出乳胶。我的设置非常接近他们的主要文档推荐的设置。据我所知,Jupyter qtconsole 是由制作 Ipython 和 anaconda 的同一个人制作的
    猜你喜欢
    • 1970-01-01
    • 2021-01-02
    • 2021-08-31
    • 1970-01-01
    • 2022-01-11
    • 2021-09-30
    • 1970-01-01
    • 2018-05-14
    • 2020-03-07
    相关资源
    最近更新 更多