使用 sympy 的 latex() 函数而不计算输入

Using sympy's latex() function without calculating the input

我想在不计算表达式的情况下从 sympy 表达式获取乳胶输出。例如,如果我执行 latex((2+3)/7) 输出将是 5/7(使用 latex),但我所追求的是它只输出 (2+3)/7 with latex。像这样:\frac{2+3}{7}

你可以尝试用关键字 evaluate=False:

简化表达式
>>> latex(S('(2+3)/7',evaluate=False))
'\frac{1}{7} \left(2 + 3\right)'

(最好添加为另一个答案)

不要忘记模式选项:

>>> e = S('(2+3)/7', evaluate=False)
>>> latex(e,mode='inline')
'$\left(2 + 3\right) / 7$'
>>> latex(e,mode='plain')
'\frac{1}{7} \left(2 + 3\right)'
>>> latex(e,mode='equation')
'\begin{equation}\frac{1}{7} \left(2 + 3\right)\end{equation}'
>>> latex(e,mode='equation*')
'\begin{equation*}\frac{1}{7} \left(2 + 3\right)\end{equation*}'

也许 fold_short_frac 选项就是您要找的?

>>> latex(S('(2+3)/7',evaluate=False), fold_short_frac=True)
'\left(2 + 3\right) / 7'

此外,不确定您所说的 evaluate=False 不适用于 Mul 是什么意思。或许你可以举个例子。

>>> S('2*3',evaluate=False)
2*3
>>> S('2*3/7',evaluate=False)
2*3/7

您可以手动调整long_frac_ratio

long_frac_ratio: The allowed ratio of the width of the numerator to the width of the denominator before we start breaking off long fractions. The default value is 2.

>>> latex(e,long_frac_ratio=3)
'\frac{2 + 3}{7}'