【问题标题】:Reading LaTeX expression and pretty printing it as ASCII with python读取 LaTeX 表达式并使用 python 将其漂亮地打印为 ASCII
【发布时间】:2016-04-11 22:21:02
【问题描述】:

我正在终端中运行一些 python 代码,我想输出一个漂亮的 ASCII 表示的 LaTeX 表达式。我意识到我可以使用 matplotlib 弹出一个单独的窗口,但我不希望在单独的窗口中显示文本。 Sympy 在打印方面做得很好,但似乎没有导入 LaTeX(至少不是我发现的)。

理想情况下,它会像这样工作:

print('$x^2$')

会在控制台输出:

 2
x

就像 sympy 一样,如果我制作一个 sympy 符号 x 并打印 x**2。

必须适当处理更复杂的表达式。例如:

\lim_{n \to \inf} \sum_{x=1}^{n} \frac{1}{x}

可以呈现为:

        n
       -----
       \      1
lim     >   -----
n->inf /      x
       -----
        x=1

ASCII 中不支持的字符(例如 $\alpha$)可以扩展为 ASCII 等价物,例如“alpha”,否则可能会引发错误。

【问题讨论】:

  • 你能列出你想要转换的乳胶表达式的种类,然后将它们转换为 sympy 字符串......你的例子可以很容易地转换......
  • 如果输入包含 LaTeX 的许多特性中的任何一个,这些特性很难或不可能用纯 ASCII 表示?希腊字母、不同大小的字符等。像$lim_{n \to \inf} \sum_{x=1}^{n} \frac{1}{x}$ 这样的东西完全行不通。
  • 我将编辑问题以解决更复杂的表达式。

标签: python latex sympy


【解决方案1】:

LaTeX 解析目前不包含在 SymPy 中,尽管 speculated since 2012 具有相当高的优先级。

第三方latex2sympy或许能满足你的需求。

【讨论】:

  • 使用类似 latex2sympy 的东西,然后使用 SymPy 的漂亮打印机(pprint(expr, use_unicode=False) 将仅使用 ASCII 字符漂亮地打印表达式)应该可以工作,但请注意 SymPy 不完全保留输入表达式的形式,所以输出可能与输入不同(尽管在数学上是等价的)(例如,它可能会重新排列术语)。
  • 似乎有效。将它内置到 sympy 中会很好。
猜你喜欢
  • 2011-08-20
  • 1970-01-01
  • 1970-01-01
  • 2017-12-19
  • 2014-05-10
相关资源
最近更新 更多