【发布时间】:2015-02-16 14:47:34
【问题描述】:
我想在不计算表达式的情况下从 sympy 表达式中获取乳胶输出。例如,如果我做 latex((2+3)/7) 输出将是 5/7(使用乳胶),但我所追求的是它只输出 (2+3)/7 和乳胶。像这样:\frac{2+3}{7}
【问题讨论】:
标签: math python-3.x latex sympy
我想在不计算表达式的情况下从 sympy 表达式中获取乳胶输出。例如,如果我做 latex((2+3)/7) 输出将是 5/7(使用乳胶),但我所追求的是它只输出 (2+3)/7 和乳胶。像这样:\frac{2+3}{7}
【问题讨论】:
标签: math python-3.x latex sympy
你可以尝试用关键字evaluate=False来表示表达式:
>>> latex(S('(2+3)/7',evaluate=False))
'\\frac{1}{7} \\left(2 + 3\\right)'
【讨论】:
evaluate=False 的问题。有没有一种模式选项可以避免这种情况?
您可以手动调整long_frac_ratio
long_frac_ratio:分子宽度与分子宽度的允许比 在我们开始分解长分数之前分母的宽度。 默认值为 2。
>>> latex(e,long_frac_ratio=3)
'\\frac{2 + 3}{7}'
【讨论】:
(最好作为另一个答案添加)
别忘了模式选项:
>>> 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'
另外,不确定您对评估 = False 对 Mul 不起作用的意思。或许你可以举个例子。
>>> S('2*3',evaluate=False)
2*3
>>> S('2*3/7',evaluate=False)
2*3/7
【讨论】: