Rendern von LaTeX-Matheformeln | Aspose.TeX für Java

So rendern Sie eine LaTeX-Matheformel in PNG

Tatsächlich lässt sich die Renderfunktion für LaTeX-Matheformeln am einfachsten demonstrieren, indem man mit dem Beispiel beginnt. Hier ist es:

Setzen Sie outputFile auf einen java.nio.file.Path in einem vorhandenen Ordner, beispielsweise Paths.get(outputDirectory, "math-formula.png") für PNG oder Paths.get(outputDirectory, "math-formula.svg") für SVG. Importieren Sie die verwendeten Aspose.TeX-Renderer-, Options- und Size2D-Klassen sowie java.awt.Color, java.io.ByteArrayOutputStream, java.io.OutputStream, java.nio.file.Files, java.nio.file.Path, java.nio.file.Paths. Die aufrufende Methode muss Ausnahmen behandeln oder deklarieren. Wenden Sie gemäß der Lizenzierungsanleitung eine Lizenz an, um Evaluierungseinschränkungen zu vermeiden.

 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}

Kommen wir zu den Details. Zunächst erstellen wir eine rendering options-Instanz, ähnlich dem TeX/LaTeX-Schriftsatz. Wir tun dies hier und geben gleichzeitig die Ausgabebildauflösung an.

Als nächstes spezifizieren wir die Präambel. Die Standardpräambel lautet:

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

Dies bietet etwas erweiterte Unterstützung für mathematische Formeln als einfaches LaTeX. Sie können beispielsweise das Paket color hinzufügen, wenn Sie Ihre eigene Hervorhebung in der Formel verwenden möchten, wie wir im Codebeispiel gezeigt haben.

Dann weisen wir den Renderer an, die Ausgabe um 300 % zu skalieren.

Die beiden Optionen definieren Vordergrund- und Hintergrundfarben. Ohne benutzerdefinierte Hervorhebung verwendet die Formel die mit setTextColor() festgelegte Farbe.

Das Beispiel leitet Rendering-Protokolle mit setLogStream() an einen ByteArrayOutputStream weiter. Protokoll- und Bildausgabestream werden nach dem Rendern automatisch geschlossen.

showTerminal() steuert die Terminalausgabe in der Konsole. Die Beispiele verwenden false; setzen Sie true, um die Ausgabe anzuzeigen.

MathRenderer.render() wird auf einer PngMathRenderer- oder SvgMathRenderer-Instanz aufgerufen und gibt die Formelgröße in Punkten als Size2D zurück.

Die Methode akzeptiert den Bildausgabestream als zweites Argument. Das Beispiel öffnet ihn in einem try-with-resources-Block, der ihn nach dem Rendern schließt.

Schließlich rufen wir render() auf der Renderer-Instanz auf: Die LaTeX-Formel ist das erste Argument, der Bildausgabestream das zweite und die Rendering-Optionen das dritte.

Die letzten Zeilen des Beispiels geben zwei Artefakte der mathematischen Formeldarstellung aus – die Größe der Formel und den kurzen Fehlerbericht (für den Fall, dass Fehler aufgetreten sind).

Hier ist das Ergebnis des Renderns.

LaTeX-Figuren-Rendering in PNG

Dies ist der allgemeinste Anwendungsfall für das Rendern von LaTeX-Matheformeln.

Sie können sich auch die kostenlose Web-App ansehen, die auf der in der Aspose.TeX for .NET-API implementierten Funktion basiert. Hier ist die Java-Versionsseite.

So rendern Sie eine LaTeX-Matheformel in SVG

Auf die gleiche Weise können wir eine LaTeX-Matheformel in das SVG-Format rendern.

 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}

Die Unterschiede sind:

Hier ist das Ergebnis:

LaTeX-Mathe-Formel-Rendering in SVG

Sie können sich auch die kostenlose Web-App ansehen, die auf der in Aspose.TeX for .NET API implementierten Funktion basiert.