Rendu de figures LaTeX | Aspose.TeX pour .NET

Parfois, vous souhaiterez peut-être extraire du contenu d’un fichier LaTeX sous la forme d’un élément rendu séparément, ou d’une “figure”, sans aucune connexion avec la mise en page. Il peut s’agir d’une illustration pour votre publication sur Internet par exemple. Vous pouvez le faire avec notre API. Quant aux formats cibles, il existe deux options : PNG et SVG. Comme c’est le cas avec la fonctionnalité de rendu de formules mathématiques LaTeX. Il convient également de noter que le rendu de figures LaTeX est une généralisation du rendu de formule mathématique LaTeX.

Comment rendre une figure LaTeX en PNG

La section de référence de l’API liée à ce sujet est ici. Et comme pour le rendu de formule, nous commencerons par un exemple. C’est ici:

 1// Create rendering options setting the image resolution to 150 dpi.
 2PngFigureRendererOptions options = new PngFigureRendererOptions();
 3options.Resolution = 150;
 4// Specify the preamble.
 5options.Preamble = "\\usepackage{pict2e}";
 6// Specify the scaling factor 300%.
 7options.Scale = 3000;
 8// Specify the background color.
 9options.BackgroundColor = System.Drawing.Color.White;
10// Specify the output stream for the log file.
11options.LogStream = new System.IO.MemoryStream();
12// Specify whether to show the terminal output on the console or not.
13options.ShowTerminal = true;
14
15// Create the output stream for the figure image.
16using (System.IO.Stream stream = System.IO.File.Open(
17    System.IO.Path.Combine(RunExamples.OutputDirectory, "text-and-formula.png"), System.IO.FileMode.Create))
18{
19    // Run rendering.
20    System.Drawing.SizeF size = new PngFigureRenderer().Render(@"\setlength{\unitlength}{0.8cm}
21\begin{picture}(6,5)
22\thicklines
23\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$}
24\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}$}
25\end{picture}", stream, options);
26    
27    // Show other results.
28    System.Console.Out.WriteLine(options.ErrorReport);
29    System.Console.Out.WriteLine();
30    System.Console.Out.WriteLine("Size: " + size); // Dimensions of the resulting image.
31}

Tout d’abord, nous créons une instance LaTeX figure options. Nous le faisons ici simultanément en spécifiant la résolution de l’image de sortie.

Ensuite, nous précisons le préambule. Il n’y a pas de préambule par défaut pour le rendu des figures LaTeX, donc si vous souhaitez, par exemple, restituer des graphiques tracés à l’aide du package LaTeX pict2e, vous devez 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éfinit la couleur d’arrière-plan. Contrairement au rendu de formules mathématiques, nous ne spécifions pas de couleur de premier plan puisque nous supposons que les couleurs sont entièrement sous le contrôle du code LaTeX. En fait, la couleur d’arrière-plan l’est également, ce n’est donc qu’une option pratique.

La ligne suivante de l’exemple n’a pas beaucoup de sens. Cela démontre simplement que vous pouvez diriger la sortie du journal vers un flux.

Et la dernière option « ShowTerminal » vous permet d’écrire la sortie du terminal sur la console.

La méthode qui effectue réellement le rendu est FigureRenderer.Render(). Il renvoie la taille de la figure en points.

Le flux dans lequel l’image doit être écrite est accepté par la méthode comme deuxième argument. Nous créons ensuite le flux.

Et enfin, nous appelons la méthode FigureRenderer.Render() elle-même, en passant les options comme troisième argument. Le code LaTeX de la figure est passé en premier argument.

Les dernières lignes de l’exemple impriment deux artefacts de rendu de figure : la taille de la figure et le bref rapport d’erreur (en cas d’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.

Comment rendre une figure LaTeX en SVG

De la même manière, nous pouvons restituer une figure LaTeX au format SVG.

 1// Create rendering options.
 2FigureRendererOptions options = new SvgFigureRendererOptions();
 3// Specify the preamble.
 4options.Preamble = "\\usepackage{pict2e}";
 5// Specify the scaling factor 300%.
 6options.Scale = 3000;
 7// Specify the background color.
 8options.BackgroundColor = System.Drawing.Color.White;
 9// Specify the output stream for the log file.
10options.LogStream = new System.IO.MemoryStream();
11// Specify whether to show the terminal output on the console or not.
12options.ShowTerminal = true;
13
14// Create the output stream for the figure image.
15using (System.IO.Stream stream = System.IO.File.Open(
16    System.IO.Path.Combine(RunExamples.OutputDirectory, "text-and-formula.svg"), System.IO.FileMode.Create))
17{
18    // Run rendering.
19    System.Drawing.SizeF size = new SvgFigureRenderer().Render(@"\setlength{\unitlength}{0.8cm}
20\begin{picture}(6,5)
21\thicklines
22\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$}
23\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}$}
24\end{picture}", stream, options);
25    
26    // Show other results.
27    System.Console.Out.WriteLine(options.ErrorReport);
28    System.Console.Out.WriteLine();
29    System.Console.Out.WriteLine("Size: " + size); // Dimensions of the resulting image.
30}

Les différences sont :

Voici le résultat :

Rendu de figure LaTeX en SVG

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.