2009-09-04 39 views
11

我有一個函數,我正在使用它返回一個乳膠代碼字符串。我需要從中生成一個圖像。我所見過的大多數方法都建議通過子進程模塊調用外部應用程序,該模塊將爲我生成映像。使用Python將乳膠代碼轉換爲圖像(或其他顯示格式)

然而,管理層並不熱衷於這個,因爲它需要外部用戶除了我們自己來安裝額外的軟件,它與我們的用戶羣,是不是我們可以假設是一個簡單的任務。

所以是否有任何Python庫,將完成的服用膠乳成格式的任務(例如圖像文件),其是顯示在GUI?

+2

你想渲染LaTeX的代碼,或者只顯示源?如果前者,注意在Python中重新實現TeX是瘋狂的。 – user57368 2009-09-04 22:15:29

+0

我需要顯示呈現的膠乳。如果有助於澄清,我需要顯示渲染的數學方程,而不是整個文檔。 – 2009-09-04 22:24:10

回答

0

您將需要使用LaTeX處理字符串。渲染LaTex/TeX的過程非常複雜(通常需要100 + MB的軟件包才能完成這項工作),但你不能在一個小的Python模塊中進行折騰來完成工作。

0

如果是,你只需要數學方程式,你可能有更好的運氣找到Python中的MathML呈現。這page可能會提供一些線索,包括一些latex-mathml翻譯器。

10

這個答案可能沒有可用的時候,有人問,但我會添加它爲那些尋求解決方案,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() 

測試與sympy 0.7.6和matplotlib 1.4.3

+0

但pyplot使用自己的LaTeX渲染器,這並不總是最大的(與真正的LaTeX相比)。它可以在沒有LaTeX安裝的情況下工作,但這可以是一個優點。 – asmeurer 2017-03-20 21:31:44

9

SymPy有一個內置的預覽功能,這是否。

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

產生

enter image description here

lots of optionspreview改變輸出的格式(例如,如果你不喜歡歐拉字體可以設置euler=False)。

preview也接受LaTeX的字符串,而不是一個SymPy表達的,如果你有

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

enter image description here