Rendu de figures LaTeX | Aspose.TeX pour Python
Dans certaines situations, vous devrez peut-être extraire du contenu spécifique d’un fichier LaTeX en tant qu’élément rendu autonome, communément appelé figure, sans aucune connexion avec la mise en page. Cela peut être utile, par exemple, lors de la création d’illustrations pour une publication en ligne. Notre API vous permet d’accomplir cela. Les formats cibles pour le rendu des figures sont PNG et SVG, tout comme avec la fonction de rendu de formules mathématiques LaTeX. Il convient de noter que le rendu de figures LaTeX est une fonctionnalité plus générale par rapport au rendu de formule mathématique LaTeX.
Rendu d’une figure LaTeX en PNG
Si nécessaire, jetez d’abord un œil à la section de référence API pour ce sujet. Semblable au rendu de formule, nous commencerons par un exemple. C’est ici:
1from aspose.tex.features import *
2from aspose.pydrawing import Color
3from aspose.tex.io import *
4from aspose.tex.presentation.xps import *
5from util import Util
6from io import BytesIO
7from os import path
8###############################################
9###### Class and Method declaration here ######
10###############################################
11
12# Create rendering options setting the image resolution to 150 dpi.
13options = PngFigureRendererOptions()
14options.resolution = 150 # Specify the preamble.
15options.preamble = r"\usepackage{pict2e}"
16# Specify the scaling factor 300%.
17options.scale = 3000
18# Specify the background color.
19options.background_color = Color.white
20# Specify the output stream for the log file.
21options.log_stream = BytesIO()
22# Specify whether to show the terminal output on the console or not.
23options.show_terminal = True
24
25# Create the output stream for the figure image.
26with open(path.join(Util.output_directory, "text-and-formula.png"), "wb") as stream:
27 # Run rendering.
28 size = PngFigureRenderer().render(r"""\setlength{\unitlength}{0.8cm}
29\begin{picture}(6,5)
30\thicklines
31\put(1,0.5){\line(2,1){3}} \put(4,2){\line(-2,1){2}} \put(2,3){\line(-2,-5){1}} \put(0.7,0.3){$A$} \put(4.05,1.9){$B$} \put(1.7,2.95){$C$}
32\put(3.1,2.5){$a$} \put(1.3,1.7){$b$} \put(2.5,1.05){$c$} \put(0.3,4){$F=\sqrt{s(s-a)(s-b)(s-c)}$} \put(3.5,0.4){$\displaystyle s:=\frac{a+b+c}{2}$}
33\end{picture}""", stream, options)
34
35# Show other results.
36print(options.error_report)
37print()
38print(f"Size: {size.width}x{size.height}")
Pour commencer, nous créons une instance de la classe LaTeX figure renderer options, où nous spécifions simultanément la résolution de l’image de sortie.
Ensuite, nous devons préciser le préambule. Contrairement au rendu des formules mathématiques LaTeX, il n’y a pas de préambule par défaut pour le rendu des figures LaTeX. Par conséquent, si vous envisagez de restituer des graphiques créés à l’aide du package LaTeX pict2e
, par exemple, vous devrez le spécifier dans le préambule :
1\usepackage{pict2e}
Ensuite, nous demandons au moteur de rendu de mettre à l’échelle la sortie de 300 %.
L’option suivante détermine la couleur d’arrière-plan. Contrairement au rendu des formules mathématiques, nous n’avons pas besoin de spécifier une couleur de premier plan, car nous supposons que les couleurs sont entièrement contrôlées par le code LaTeX. De même, la couleur d’arrière-plan est également contrôlée par le code LaTeX, cette option est donc simplement fournie pour plus de commodité.
La ligne suivante dans l’exemple n’est peut-être pas particulièrement significative. Il est simplement destiné à démontrer que vous avez la possibilité de diriger la sortie du journal vers un flux spécifique.
La dernière option, ShowTerminal
, vous permet de contrôler si la sortie du terminal doit être affichée dans la console.
La méthode responsable du rendu de la figure est FigureRenderer.render(). Il renvoie la taille de la figure en points.
La méthode accepte un flux comme deuxième argument, qui est le flux dans lequel l’image sera écrite. Nous créons le flux dans la ligne suivante.
Enfin, nous invoquons la méthode FigureRenderer.render()
elle-même, en passant les options comme troisième argument. Le code LaTeX de la figure est fourni comme premier argument.
Les dernières lignes de l’exemple affichent deux informations liées au rendu de la figure : la taille de la figure et un bref rapport d’erreur (s’il y a des erreurs).
Voici le résultat du rendu.
Il s’agit du cas d’utilisation le plus général de la fonctionnalité Rendu de figures LaTeX.
Rendu d’une figure LaTeX en SVG
De même, nous pouvons également restituer une figure LaTeX au format SVG.
1from aspose.tex.features import *
2from aspose.pydrawing import Color
3from util import Util
4from io import BytesIO
5from os import path
6###############################################
7###### Class and Method declaration here ######
8###############################################
9
10# Create rendering options.
11options = SvgFigureRendererOptions()
12# Specify the preamble.
13options.preamble = r"\usepackage{pict2e}"
14# Specify the scaling factor 300%.
15options.scale = 3000
16# Specify the background color.
17options.background_color = Color.white
18# Specify the output stream for the log file.
19options.log_stream = BytesIO()
20# Specify whether to show the terminal output on the console or not.
21options.show_terminal = True
22
23# Create the output stream for the figure image.
24with open(path.join(Util.output_directory, "text-and-formula.svg"), "wb") as stream:
25 # Run rendering.
26 size = SvgFigureRenderer().render(r"""\setlength{\unitlength}{0.8cm}
27\begin{picture}(6,5)
28\thicklines
29\put(1,0.5){\line(2,1){3}} \put(4,2){\line(-2,1){2}} \put(2,3){\line(-2,-5){1}} \put(0.7,0.3){$A$} \put(4.05,1.9){$B$} \put(1.7,2.95){$C$}
30\put(3.1,2.5){$a$} \put(1.3,1.7){$b$} \put(2.5,1.05){$c$} \put(0.3,4){$F=\sqrt{s(s-a)(s-b)(s-c)}$} \put(3.5,0.4){$\displaystyle s:=\frac{a+b+c}{2}$}
31\end{picture}""", stream, options)
32
33# Show other results.
34print(options.error_report)
35print()
36print(f"Size: {size.width}x{size.height}")
Les différences sont :
- Au lieu d’utiliser la classe PngFigureRendererOptions, nous utilisons la classe SvgFigureRendererOptions.
- Nous n’avons pas besoin de préciser la résolution.
- Au lieu d’utiliser la classe PngFigureRenderer, nous utilisons la classe SvgFigureRenderer.
Voici le résultat :