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:
Définissez outputFile comme un java.nio.file.Path dans un dossier existant, par exemple Paths.get(outputDirectory, "math-formula.png") pour PNG ou Paths.get(outputDirectory, "math-formula.svg") pour SVG. Importez les classes de moteur de rendu, d’options et Size2D d’Aspose.TeX utilisées, ainsi que java.awt.Color, java.io.ByteArrayOutputStream, java.io.OutputStream, java.nio.file.Files, java.nio.file.Path, java.nio.file.Paths. La méthode appelante doit gérer ou déclarer les exceptions. Appliquez une licence selon le
guide des licences pour éviter les restrictions d’évaluation.
1// Render a highlighted LaTeX math formula to PNG.
2// outputFile is a java.nio.file.Path in an existing output folder.
3PngMathRendererOptions options = new PngMathRendererOptions();
4options.setResolution(150);
5options.setPreamble("\\usepackage{amsmath}\n\\usepackage{amsfonts}\n"
6 + "\\usepackage{amssymb}\n\\usepackage{color}");
7options.setScale(3000); // 300%.
8options.setTextColor(Color.BLACK);
9options.setBackgroundColor(Color.WHITE);
10options.showTerminal(false);
11
12Size2D size;
13try (ByteArrayOutputStream log = new ByteArrayOutputStream();
14 OutputStream stream = Files.newOutputStream(outputFile)) {
15 options.setLogStream(log);
16 size = new PngMathRenderer().render("\\begin{equation*}\n"
17 + "e^x = x^{\\color{red}0} + x^{\\color{red}1} + \\frac{x^{\\color{red}2}}{2}"
18 + " + \\frac{x^{\\color{red}3}}{6} + \\cdots = \\sum_{n\\geq 0} \\frac{x^{\\color{red}n}}{n!}\n"
19 + "\\end{equation*}", stream, options);
20 System.out.println(options.getErrorReport());
21 System.out.println("Size: " + size.getWidth() + "x" + size.getHeight());
22}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 définissent les couleurs de premier plan et d’arrière-plan. Les parties de la formule sans surbrillance personnalisée utilisent la couleur définie par setTextColor().
L’exemple dirige les journaux de rendu vers un ByteArrayOutputStream avec setLogStream(). Les flux du journal et de l’image sont fermés automatiquement après le rendu.
showTerminal() contrôle la sortie du terminal sur la console. Les exemples utilisent false ; définissez true pour l’afficher.
MathRenderer.render() est appelé sur une instance de PngMathRenderer ou SvgMathRenderer et renvoie les dimensions de la formule en points sous forme de Size2D.
La méthode accepte le flux de sortie de l’image comme deuxième argument. L’exemple l’ouvre dans un bloc try-with-resources, qui le ferme après le rendu.
Enfin, nous appelons render() sur l’instance du moteur de rendu : la formule LaTeX est le premier argument, le flux de l’image le deuxième et les options de rendu le troisième.
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.
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// Render a highlighted LaTeX math formula to SVG.
2// outputFile is a java.nio.file.Path in an existing output folder.
3SvgMathRendererOptions options = new SvgMathRendererOptions();
4options.setPreamble("\\usepackage{amsmath}\n\\usepackage{amsfonts}\n"
5 + "\\usepackage{amssymb}\n\\usepackage{color}");
6options.setScale(3000); // 300%.
7options.setTextColor(Color.BLACK);
8options.setBackgroundColor(Color.WHITE);
9options.showTerminal(false);
10
11Size2D size;
12try (ByteArrayOutputStream log = new ByteArrayOutputStream();
13 OutputStream stream = Files.newOutputStream(outputFile)) {
14 options.setLogStream(log);
15 size = new SvgMathRenderer().render("\\begin{equation*}\n"
16 + "e^x = x^{\\color{red}0} + x^{\\color{red}1} + \\frac{x^{\\color{red}2}}{2}"
17 + " + \\frac{x^{\\color{red}3}}{6} + \\cdots = \\sum_{n\\geq 0} \\frac{x^{\\color{red}n}}{n!}\n"
18 + "\\end{equation*}", stream, options);
19 System.out.println(options.getErrorReport());
20 System.out.println("Size: " + size.getWidth() + "x" + size.getHeight());
21}Les différences sont :
- Nous utilisons la classe SvgMathRendererOptions au lieu de PngMathRendererOptions.
- Nous ne précisons pas la résolution.
- Nous utilisons la classe SvgMathRenderer au lieu de PngMathRenderer.
Voici le résultat :
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.
