使用Python将乳胶代码转换为图像(或其他可显示格式)

2024-06-06 18:29:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用一个函数,它返回一个乳胶代码字符串。我需要从中生成一个图像。我看到的大多数这样做的方法都建议通过将为我生成图像的子流程模块调用外部应用程序。

然而,管理层并不热衷于此,因为它将需要外部用户安装额外的软件,除了我们自己的软件,我们的用户群,这不是我们可以假设的一个简单的任务。

那么,是否有任何python库可以完成将latex转换为在GUI中显示的格式(如图像文件)的任务?


Tags: 模块方法函数字符串代码用户图像应用程序
3条回答

看看mathtex

这个答案在提出问题时可能还没有,但我将为那些到2015年寻求解决办法的人补充这个答案。

可以使用matplotlib.pyplot在带有轴的图形中呈现一个方程,然后手动移除轴。您还可以使用sympy生成乳胶:

#!/usr/bin/env python2.7                                                        

import matplotlib.pyplot as plt                                                 
import sympy                                                                    

x = sympy.symbols('x')                                                          
y = 1 + sympy.sin(sympy.sqrt(x**2 + 20))                                         
lat = sympy.latex(y)                                                            

#add text                                                                       
plt.text(0, 0.6, r"$%s$" % lat, fontsize = 50)                                  

#hide axes                                                                      
fig = plt.gca()                                                                 
fig.axes.get_xaxis().set_visible(False)                                         
fig.axes.get_yaxis().set_visible(False)                                         
plt.draw() #or savefig                                                          
plt.show()

用sympy0.7.6和matplotlib1.4.3测试

SymPy有一个内置的预览功能来实现这一点。

expr = sin(sqrt(x**2 + 20)) + 1
preview(expr, viewer='file', filename='output.png')

产生

enter image description here

lots of optionspreview来更改输出的格式(例如,如果您不喜欢Euler字体,可以设置euler=False)。

preview也接受乳胶字符串,而不是SymPy表达式

preview(r'$$\int_0^1 e^x\,dx$$', viewer='file', filename='test.png', euler=False)

enter image description here

相关问题 更多 >