【问题标题】:Can I integrate MathJax into a Python program?我可以将 MathJax 集成到 Python 程序中吗?
【发布时间】:2016-06-10 18:12:35
【问题描述】:

这可能是一个愚蠢的问题,但是否可以将 MathJax 合并到 Python 代码中?很多时候我希望程序输出看起来更整洁,老实说 MathJax 看起来很棒。

我知道 MathJax 在 Javascript 上运行,但我没有放弃希望。如果答案是否定的,是否可以使用一些简单的模块来代替?

例如,如果:

1.234 / e^23 [and] (I^-)_(aq) +I _(2(s)) -> (I^-)_3(aq)

可以格式化为:

,

那将是理想的。

【问题讨论】:

  • 程序输出是什么意思?图形用户界面?你的命令行?
  • @rawbeans,要么就足够了 :)。 GUI 甚至可能是首选(例如 tkinter)。
  • 你在使用 ipython/Jupyter 笔记本吗?你看过同情吗?查看this answerthis other answer
  • @michael_j_ward:有效的问题,我实际上正在使用Thonny,因为我对编程很陌生 :) 我非常感谢这些链接!
  • @RadLexus 我几乎不会称它为堆栈溢出指令,但正如我之前所说,我确实理解你的观点。另请注意,该用户的主要论点是它弄乱了行之间的垂直空间,这是一个非常可解决的技术问题。无论如何,这不是讨论它的合适场所。我可能会碰巧最终尝试对元进行这个讨论。感谢您的提醒。

标签: python mathjax


【解决方案1】:

我只能假设您可能想将某些内容输出到显示器以进行打印。因此,Python 中的常见用法可能是 Matplotlib(尽管 Gnuplot 是与 python 兼容的一个很好的替代品)。 如果您使用 Matplotlib 创建一个空白图,那么您可以输入普通的普通 LaTeX 数学指令(与 MathJax 几乎相同):

一个小例子:

import matplotlib
matplotlib.use('TkAgg')
import pylab
import matplotlib.pyplot as plt
from matplotlib import rc

plt.clf()
plt.rc('text', usetex=True)
plt.rcParams["figure.figsize"] = (8, 5)
plt.rc('font', **{'family':'serif', 'serif':['Computer Modern Roman'], 'size': 16})
plt.axis("off")
plt.text(0.5, 0.5, "Maths $e = mc^2$")

给出以下输出

可以很容易地保存为 .pdf,然后删除我的屏幕截图的明显颗粒感。

【讨论】:

  • 即使这似乎是我所希望的,有没有办法在我的命令行中以类似的方式格式化文本?仅供参考
  • 我不太确定你想要实现什么:我已经给出了一个示例,使用 Python 我们可以生成使用 Latex 格式的输出,这仅在生成数字和图表,我想在它们上面覆盖一些格式很好的文本,通常我以 pdf 格式输出结果。您能否举例说明您正在寻找什么样的输入和输出?对于带有数学的 Python 中格式良好的控制台输出,可能值得研究 sympy 之类的东西,尽管它与 MathJax 相去甚远。 @LinearChristmas
  • 抱歉耽搁了。我想知道是否确实可以在 Python 命令行中很好地格式化数学(当人们使用 print 函数时,东西去的地方)。 GUI 选项是我最初寻找的;命令行更多是出于好奇。我可以在接下来的几周内研究这些模块。再次感谢您分享您的知识!
  • 也许 shell 是最准确的术语 :)
  • 我想你可能想看看pythontexsympy。据我所知,您无法将乳胶直接打印到终端,您受到控制台图形的限制,这意味着平台可移植性非常简单。然而,这两个包使打印出来的内容更加用户友好,并且同样可以使用 python 自动生成乳胶代码(说得有点松散)。
【解决方案2】:

按照oliversm的回答,可以使用mathplotlib的类mathtext:

from matplotlib import mathtext, font_manager
import matplotlib as mpl
mpl.rcParams['savefig.transparent'] = True

#texFont = font_manager.FontProperties(size=30, fname="./OpenSans-Medium.ttf")
texFont = font_manager.FontProperties(size=30, family='serif', math_fontfamily='cm')

mathtext.math_to_image(r"Maths $e = mc^2$", "output.png", prop=texFont, dpi=300, format='png')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 2020-02-29
    相关资源
    最近更新 更多