Rendu des formules mathématiques LaTeX | Java

Comment restituer une formule mathématique LaTeX au format PNG

En fait, le moyen le plus simple de démontrer la fonctionnalité de rendu de la formule mathématique LaTeX est de commencer par l’exemple. C’est ici:

 1// Create rendering options setting the image resolution 150 dpi.
 2PngMathRendererOptions options = new PngMathRendererOptions();
 3options.setResolution(150);
 4// Specify the preamble.
 5options.setPreamble("\\usepackage{amsmath}\r\n\\usepackage{amsfonts}\r\n\\usepackage{amssymb}\r\n\\usepackage{color}");
 6// Specify the scaling factor 300%.
 7options.setScale(3000);
 8// Specify the foreground color.
 9options.setTextColor(Color.BLACK);
10// Specify the background color.
11options.setBackgroundColor(Color.WHITE);
12// Specify the output stream for the log file.
13options.setLogStream(new ByteArrayOutputStream());
14// Specify whether to show the terminal output on the console or not.
15options.showTerminal(true);
16
17// Create the output stream for the formula image.
18final OutputStream stream = new FileOutputStream(Utils.getOutputDirectory() + "math-formula.png");
19try {
20    // Run rendering.
21    com.aspose.tex.Size2D size = MathRenderer.render("\\begin{equation*}\r\n" +
22       "e^x = x^{\\color{red}0} + x^{\\color{red}1} + \\frac{x^{\\color{red}2}}{2} + \\frac{x^{\\color{red}3}}{6} + \\cdots = \\sum_{n\\geq 0} \\frac{x^{\\color{red}n}}{n!}\r\n" +
23       "\\end{equation*}", 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}

Passons aux détails. Tout d’abord, nous créons une instance options de rendu, similaire à la composition TeX/LaTeX. Nous le faisons ici simultanément en spécifiant la résolution de l’image de sortie.

Ensuite, nous précisons le préambule. Le préambule par défaut est :

1\usepackage{amsmath}
2\usepackage{amsfonts}
3\usepackage{amssymb}

qui fournit une prise en charge des formules mathématiques légèrement plus avancée que LaTeX de base. Vous pouvez, par exemple, ajouter le package color si vous souhaitez utiliser votre propre surlignage dans la formule, comme nous l’avons montré dans l’exemple de code.

Ensuite, nous demandons au moteur de rendu de mettre à l’échelle la sortie de 300 %.

Les deux options suivantes définissent les couleurs de premier plan et d’arrière-plan. Les parties de la formule qui ne sont pas couvertes (« colorées ») par la surbrillance personnalisée seront affichées dans la couleur « TextColor ».

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 MathRenderer.render(). Il renvoie la taille de la formule 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 MathRenderer.render() elle-même, en passant les options comme troisième argument. Le code LaTeX de la formule est passé en premier argument.

Les dernières lignes de l’exemple impriment deux artefacts de rendu de formule mathématique : la taille de la formule et le bref rapport d’erreur (au cas où il y aurait des erreurs).

Voici le résultat du rendu.

Rendu de la figure LaTeX au format PNG

Il s’agit du cas d’utilisation le plus général du rendu de formule mathématique LaTeX.

Vous pouvez également consulter l’ application Web gratuite construite sur la base de la fonctionnalité implémentée dans l’API Aspose.TeX for .NET. Ici est la page de la version Java.

Comment rendre une formule mathématique LaTeX en SVG

De la même manière, nous pouvons restituer une formule mathématique LaTeX au format SVG.

 1// Create rendering options.
 2MathRendererOptions options = new SvgMathRendererOptions();
 3// Specify the preamble.
 4options.setPreamble("\\usepackage{amsmath}\r\n\\usepackage{amsfonts}\r\n\\usepackage{amssymb}\r\n\\usepackage{color}");
 5// Specify the scaling factor 300%.
 6options.setScale(3000);
 7// Specify the foreground color.
 8options.setTextColor(Color.BLACK);
 9// Specify the background color.
10options.setBackgroundColor(Color.WHITE);
11// Specify the output stream for the log file.
12options.setLogStream(new ByteArrayOutputStream());
13// Specify whether to show the terminal output on the console or not.
14options.showTerminal(true);
15
16// Create the output stream for the formula image.
17final OutputStream stream = new FileOutputStream(Utils.getOutputDirectory() + "math-formula.svg");
18try {
19    // Run rendering.
20    com.aspose.tex.Size2D size = new SvgMathRenderer().render("\\begin{equation*}\r\n" +
21        "e^x = x^{\\color{red}0} + x^{\\color{red}1} + \\frac{x^{\\color{red}2}}{2} + \\frac{x^{\\color{red}3}}{6} + \\cdots = \\sum_{n\\geq 0} \\frac{x^{\\color{red}n}}{n!}\r\n" +
22        "\\end{equation*}", stream, options, size);
23    
24    // Show other results.
25    System.out.println(options.getErrorReport());
26    System.out.println();
27    System.out.println("Size: " + size.getWidth() + "x" + size.getHeight()); // Dimensions of the resulting image.
28} finally {
29    if (stream != null)
30        stream.close();
31}

Les différences sont :

Voici le résultat :

Rendu de formule mathématique LaTeX en SVG

Vous pouvez également consulter l’ application Web gratuite construite sur la base de la fonctionnalité implémentée dans Aspose.TeX pour l’API .NET.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.