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:

 1# Create rendering options setting the image resolution to 150 dpi.
 2options = PngFigureRendererOptions() 
 3options.resolution = 150             # Specify the preamble.
 4options.preamble = r"\usepackage{pict2e}"
 5# Specify the scaling factor 300%.
 6options.scale = 3000
 7# Specify the background color.
 8options.background_color = Color.white
 9# Specify the output stream for the log file.
10options.log_stream = BytesIO()
11# Specify whether to show the terminal output on the console or not.
12options.show_terminal = True
13
14# Create the output stream for the figure image.
15with open(path.join(Util.output_directory, "text-and-formula.png"), "wb") as stream:
16    # Run rendering.
17    size = PngFigureRenderer().render(r"""\setlength{\unitlength}{0.8cm}
18\begin{picture}(6,5)
19\thicklines
20\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$}
21\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}$}
22\end{picture}""", stream, options)
23
24# Show other results.
25print(options.error_report)
26print()
27print(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.

Rendu de figure LaTeX au format PNG

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.

 1# Create rendering options.
 2options = SvgFigureRendererOptions()
 3# Specify the preamble.
 4options.preamble = r"\usepackage{pict2e}"
 5# Specify the scaling factor 300%.
 6options.scale = 3000
 7# Specify the background color.
 8options.background_color = Color.white
 9# Specify the output stream for the log file.
10options.log_stream = BytesIO()
11# Specify whether to show the terminal output on the console or not.
12options.show_terminal = True
13
14# Create the output stream for the figure image.
15with open(path.join(Util.output_directory, "text-and-formula.svg"), "wb") as stream:
16    # Run rendering.
17    size = SvgFigureRenderer().render(r"""\setlength{\unitlength}{0.8cm}
18\begin{picture}(6,5)
19\thicklines
20\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$}
21\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}$}
22\end{picture}""", stream, options)
23
24# Show other results.
25print(options.error_report)
26print()
27print(f"Size: {size.width}x{size.height}")

Les différences sont :

Voici le résultat :

Rendu de figures LaTeX en SVG

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.