Rendu de figures LaTeX | Aspose.TeX pour Java

Il peut arriver que vous souhaitiez extraire du contenu (un dessin, une écriture, un tracé, etc.) d’un fichier LaTeX sous la forme d’un élément rendu séparément, ou d’une “figure”, quelle que soit sa place sur la page du document de sortie. . Une illustration pour votre publication sur Internet, par exemple, est le cas. Notre API peut vous aider dans cette tâche. Il existe deux formats cibles disponibles : PNG et SVG. Tout comme dans le rendu des formules mathématiques LaTeX. Nous devons également noter que le rendu de figures LaTeX est une généralisation du rendu de formules mathématiques LaTeX.

Comment rendre une figure LaTeX en PNG

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.setResolution(150);
 4// Specify the preamble.
 5options.setPreamble("\\usepackage{pict2e}");
 6// Specify the scaling factor 300%.
 7options.setScale(3000);
 8// Specify the background color.
 9options.setBackgroundColor(Color.WHITE);
10// Specify the output stream for the log file.
11options.setLogStream(new ByteArrayOutputStream());
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.
16final OutputStream stream = new FileOutputStream(Utils.getOutputDirectory() + "text-and-formula.png");
17try {
18    // Run rendering.
19    com.aspose.tex.Size2D size = new PngFigureRenderer().render("\\setlength{\\unitlength}{0.8cm}\r\n" +
20    "\\begin{picture}(6,5)\r\n" +
21    "\\thicklines\r\n" +
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$}\r\n" +
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}$}\r\n" +
24    "\\end{picture}", stream, options);
25    
26    // Show other results.
27    System.out.println(options.getErrorReport());
28    System.out.println();
29    System.out.println("Size: " + size.getWidth() + "x" + size.getHeight()); // Dimensions of the resulting image.
30} finally {
31    if (stream != null)
32        stream.close();
33}

Tout d’abord, nous créons une instance options de rendu. Nous le faisons ici 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 certains 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 la figure LaTeX en 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.
 2SvgFigureRendererOptions options = new SvgFigureRendererOptions();
 3// Specify the preamble.
 4options.setPreamble("\\usepackage{pict2e}");
 5// Specify the scaling factor 300%.
 6options.setScale(3000);
 7// Specify the background color.
 8options.setBackgroundColor(Color.WHITE);
 9// Specify the output stream for the log file.
10options.setLogStream(new ByteArrayOutputStream());
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.
15final OutputStream stream = new FileOutputStream(Utils.getOutputDirectory() + "text-and-formula.svg");
16try {
17    // Run rendering.
18    com.aspose.tex.Size2D size = new SvgFigureRenderer().render("\\setlength{\\unitlength}{0.8cm}\r\n" +
19    "\\begin{picture}(6,5)\r\n" +
20    "\\thicklines\r\n" +
21    "\\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$}\r\n" +
22    "\\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}$}\r\n" +
23    "\\end{picture}", stream, options);
24    
25    // Show other results.
26    System.out.println(options.getErrorReport());
27    System.out.println();
28    System.out.println("Size: " + size.getWidth() + "x" + size.getHeight()); // Dimensions of the resulting image.
29} finally {
30    if (stream != null)
31        stream.close();
32}

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.