Преобразование латексного кода в изображения (или другой формат displayble) с помощью Python

У меня есть функция, которую я потребляю, которая возвращает строку латексного кода. Мне нужно создать изображение из этого. Большинство методов, которые я видел для этого, предлагают вызов внешнего приложения через модуль подпроцесса, который будет генерировать изображение для меня.

Тем не менее, руководство не заинтересовано в этом, так как потребует от внешних пользователей установки дополнительного программного обеспечения в дополнение к нашему, которое с нашей пользовательской базой не является чем-то, что мы можем считать простой задачей.

Итак, существуют ли библиотеки python, которые будут выполнять задачу по переносу латекса в формат (например, файл изображения), который отображается в графическом интерфейсе?

Ответ 1

этот ответ, возможно, не был доступен в момент, когда был задан вопрос, но я добавлю его для тех, кто ищет решение по состоянию на 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

Ответ 2

SymPy имеет встроенную функцию предварительного просмотра, которая делает это.

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

генерирует

введите описание изображения здесь

Есть множество параметров до preview, чтобы изменить формат вывода (например, если вам не нравится Эйлер шрифт, который вы можете установить euler=False).

preview также принимает строку LaTeX вместо выражения SymPy, если у вас есть

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

введите описание изображения здесь

Ответ 3

Взгляните на mathtex.

Ответ 4

Вам понадобится использовать LaTeX для обработки строки. Процесс рендеринга LaTex/TeX очень востребован (для выполнения этой работы обычно требуется пакет 100 + МБ), вы просто не сможете входить в небольшой модуль python для выполнения этой работы.