-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathformule_latex.py
88 lines (56 loc) · 3.41 KB
/
formule_latex.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#############################################################################################################################
### MATHS-QUEST ###
# Pour toutes informations, veillez vous référer au dépot GitHub : https://github.com/Gandalf0207/Maths-Quest
# © Tous droits réservé 2024
# PLADEAU Quentin & LUBAN Théo
############################################################################################################################
# DEBUT formule_latex #
# Ce script permet de généré, à partir de formule latex, une image ayant l'affichage des formule 'jolie', ce qui est le but du latex
# Importation des modules nécessaires
from tkinter import * # Module de GUI
from tkinter import scrolledtext # Module de GUI
from PIL import Image, ImageTk # Module de gestion d'images
import matplotlib.pyplot as plt # Module mathématiques / graphiques
from io import BytesIO # Module de conversion des images
# Elément permettant l'utilisation des dépendances latex nécéssaires à la création des images avec le bon affichage
plt.rcParams['text.usetex'] = True
plt.rcParams['text.latex.preamble'] = r'\usepackage{amsmath}'
#Fonction principale de gestion (appelée depuis le script principal)
def make_formule(eqt, label_de_la_box, fontsize, space): # Paramètres : la formule, l'endroit où l'image doit etre ajoutée, la taille de police, si un retour à la ligne est nécéssaire
def render_latex(text): # Script généré par IA puis adapté, il permet la conversion en image de la taille de la formule le tout sans bords d'images
# Create a matplotlib figure with a tight layout
fig, ax = plt.subplots()
fig.patch.set_visible(False)
ax.axis('off')
# Render the LaTeX text with the specified fontsize
ax.text(0, 0, text, fontsize=fontsize, ha='center', va='center', wrap=True)
# Save the figure to a BytesIO object
buf = BytesIO()
plt.savefig(buf, format='png', bbox_inches='tight', pad_inches=0.1)
buf.seek(0)
# Load the image from the BytesIO object
image = Image.open(buf)
# Crop the image to the bounding box of the content
bbox = image.getbbox()
image = image.crop(bbox)
plt.close(fig)
return ImageTk.PhotoImage(image)
# Render and insert LaTeX text with font size 10
latex_text = eqt
latex_image = render_latex(latex_text)
label_de_la_box.config(state=NORMAL) # On rend la box accessible à l'écriture
label_de_la_box.image_create(END, image=latex_image) # On écrit
if space==1: # Si des espaces sont demandés , on en rajoute
label_de_la_box.insert(END, "\n")
elif space==2:
label_de_la_box.insert(END, "\n\n")
label_de_la_box.config(state=DISABLED) #On rend la box non modifiable par l'utilisateur
# Keep a reference to the image to prevent garbage collection
label_de_la_box.images.append(latex_image)
# FIN formule_latex #
#############################################################################################################################
### MATHS-QUEST ###
# Pour toutes informations, veillez vous référer au dépot GitHub : https://github.com/Gandalf0207/Maths-Quest
# © Tous droits réservé 2024
# PLADEAU Quentin & LUBAN Théo
############################################################################################################################