Hướng dẫn convert latex to image python - chuyển đổi latex thành hình ảnh python

Tôi có một chức năng Tôi đang tiêu thụ trả về một chuỗi mã latex. Tôi cần tạo ra một hình ảnh từ điều này. Hầu hết các phương pháp tôi đã thấy khi làm như vậy đề nghị gọi một ứng dụng bên ngoài thông qua nói rằng mô -đun phụ sẽ tạo hình ảnh cho tôi.

Tuy nhiên, quản lý không quan tâm đến việc này vì nó sẽ yêu cầu người dùng bên ngoài cài đặt phần mềm bổ sung ngoài chính chúng ta, với cơ sở người dùng của chúng ta, không phải là thứ chúng ta có thể cho là một nhiệm vụ đơn giản.

Vì vậy, có bất kỳ thư viện Python nào sẽ hoàn thành nhiệm vụ đưa latex vào một định dạng [chẳng hạn như tệp hình ảnh] có thể hiển thị trong GUI?

Hỏi ngày 4 tháng 9 năm 2009 lúc 22:04Sep 4, 2009 at 22:04

Mark Roddymark RoddyMark Roddy

26.4K19 Huy hiệu vàng66 Huy hiệu bạc71 Huy hiệu đồng19 gold badges66 silver badges71 bronze badges

2

Sympy có chức năng xem trước tích hợp thực hiện điều này.

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

tạo ra

Có rất nhiều tùy chọn để preview để thay đổi định dạng của đầu ra [ví dụ: nếu bạn không thích phông chữ Euler, bạn có thể đặt euler=False].

preview cũng chấp nhận chuỗi latex thay vì biểu thức sympy nếu bạn có điều đó

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

Đã trả lời ngày 27 tháng 3 năm 2016 lúc 16:46Mar 27, 2016 at 16:46

Asmeurerasmeerasmeurer

82,8K25 Huy hiệu vàng169 Huy hiệu bạc236 Huy hiệu Đồng25 gold badges169 silver badges236 bronze badges

9

Câu trả lời này có thể không có sẵn tại thời điểm câu hỏi được đặt ra, nhưng tôi sẽ thêm nó cho những người tìm kiếm một giải pháp vào năm 2015.

Bạn có thể sử dụng matplotlib.pyplot để hiển thị một phương trình trong biểu đồ bằng các trục, sau đó tháo các trục bằng tay. Bạn cũng có thể tạo mủ với 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[]

được thử nghiệm với Sympy

preview[r'$$\int_0^1 e^x\,dx$$', viewer='file', filename='test.png', euler=False]
0 và matplotlib
preview[r'$$\int_0^1 e^x\,dx$$', viewer='file', filename='test.png', euler=False]
1

Đã trả lời ngày 28 tháng 4 năm 2015 lúc 15:01Apr 28, 2015 at 15:01

Mulllhausenmulllhausenmulllhausen

4.2637 Huy hiệu vàng46 Huy hiệu bạc69 Huy hiệu Đồng7 gold badges46 silver badges69 bronze badges

1

Đây là một giải pháp xấu xí mà tôi thường sử dụng, nhưng tôi thấy dễ sử dụng nhất trong nhiều trường hợp.

import matplotlib.pyplot as plt
import io
from PIL import Image, ImageChops

white = [255, 255, 255, 255]

def latex_to_img[tex]:
    buf = io.BytesIO[]
    plt.rc['text', usetex=True]
    plt.rc['font', family='serif']
    plt.axis['off']
    plt.text[0.05, 0.5, f'${tex}$', size=40]
    plt.savefig[buf, format='png']
    plt.close[]

    im = Image.open[buf]
    bg = Image.new[im.mode, im.size, white]
    diff = ImageChops.difference[im, bg]
    diff = ImageChops.add[diff, diff, 2.0, -100]
    bbox = diff.getbbox[]
    return im.crop[bbox]

latex_to_img[r'\frac{x}{y^2}'].save['img.png']

Hãy ghi nhớ, nó đòi hỏi gối và matplotlib.

pip install matplotlib pillow

Đã trả lời ngày 4 tháng 5 năm 2018 lúc 6:07May 4, 2018 at 6:07

Đã trả lời ngày 5 tháng 9 năm 2009 lúc 10:37Sep 5, 2009 at 10:37

Jouni K. Seppänenjouni K. SeppänenJouni K. Seppänen

41,7K5 Huy hiệu vàng72 Huy hiệu bạc100 Huy hiệu đồng5 gold badges72 silver badges100 bronze badges

Bạn sẽ cần sử dụng latex để xử lý để chuỗi. Quá trình kết xuất latex/Tex rất liên quan [thường phải có gói 100+MB để thực hiện công việc], bạn sẽ không thể ném vào một mô -đun Python nhỏ để hoàn thành công việc.

Đã trả lời ngày 4 tháng 9 năm 2009 lúc 22:25Sep 4, 2009 at 22:25

D'NabreD'NabreD'Nabre

2.21616 Huy hiệu bạc13 Huy hiệu đồng16 silver badges13 bronze badges

Nếu đó chỉ là phương trình toán học mà bạn cần, có lẽ bạn sẽ có may mắn hơn khi tìm được trình kết xuất MathML trong Python. Trang này có thể cung cấp một số manh mối, bao gồm một số dịch giả latex-mathml.

Đã trả lời ngày 5 tháng 9 năm 2009 lúc 0:31Sep 5, 2009 at 0:31

Eduardo Leonieduardo LeoniEduardo Leoni

9.1226 Huy hiệu vàng41 Huy hiệu bạc47 Huy hiệu đồng6 gold badges41 silver badges47 bronze badges

Bài Viết Liên Quan

Chủ Đề