LaTeX-Figurenrendering | Aspose.TeX für Python

In bestimmten Situationen müssen Sie möglicherweise bestimmte Inhalte aus einer LaTeX-Datei als eigenständiges gerendertes Stück extrahieren, das üblicherweise als Abbildung bezeichnet wird, ohne Verbindung zum Seitenlayout. Dies könnte beispielsweise beim Erstellen von Illustrationen für eine Online-Publikation nützlich sein. Unsere API ermöglicht Ihnen dies. Die Zielformate für die Darstellung von Zahlen sind PNG und SVG, genau wie bei der LaTeX-Funktion zur Darstellung mathematischer Formeln. Es ist erwähnenswert, dass LaTeX-Figurenrendering eine allgemeinere Funktion im Vergleich zu LaTeX-Rendering von mathematischen Formeln ist.

Rendern einer LaTeX-Figur in PNG

Werfen Sie bei Bedarf zunächst einen Blick auf den API-Referenzabschnitt für dieses Thema. Ähnlich wie bei der Formeldarstellung beginnen wir mit einem Beispiel. Hier ist es:

Setzen Sie ASPOSE_TEX_OUTPUT_DIR auf Ihr Ausgabeverzeichnis oder verwenden Sie den Standardordner output. Der LaTeX-Code ist vollständig in den Beispielen enthalten; externe Eingabedateien sind nicht erforderlich. Wenden Sie zuerst eine Lizenz an. Lizenzierung.

 1# Render a LaTeX figure with a triangle and formulas to PNG.
 2import os
 3from pathlib import Path
 4from aspose.pydrawing import Color
 5from aspose.tex.features import PngFigureRenderer, PngFigureRendererOptions
 6
 7# Set an output directory, or use the default output folder.
 8output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
 9output_dir.mkdir(parents=True, exist_ok=True)
10
11# Create rendering options setting the image resolution to 150 dpi.
12options = PngFigureRendererOptions()
13options.resolution = 150
14# Specify the preamble.
15options.preamble = r"\usepackage{pict2e}"
16# Specify the scaling factor 300%.
17options.scale = 3000
18# Leave space around the rendered fragment.
19options.margin = 5
20# Specify the background color.
21options.background_color = Color.white
22# Specify whether to show the terminal output on the console or not.
23options.show_terminal = False
24
25# Create binary streams for the rendering log and figure image.
26with (output_dir / "text-and-formula.png.log").open("wb") as log_stream, \
27        (output_dir / "text-and-formula.png").open("wb") as stream:
28    options.log_stream = log_stream
29    # Run rendering.
30    size = PngFigureRenderer().render(r"""\setlength{\unitlength}{0.8cm}
31\begin{picture}(6,5)
32\thicklines
33\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$}
34\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}$}
35\end{picture}""", stream, options)
36
37# Show other results.
38print(options.error_report or "No rendering errors.")
39print()
40print(f"Size: {size.width}x{size.height}")

Zunächst erstellen wir eine Instanz der Klasse LaTeX Figure Renderer Options, in der wir gleichzeitig die Ausgabebildauflösung angeben.

Als nächstes müssen wir die Präambel angeben. Im Gegensatz zum Rendern mathematischer Formeln in LaTeX gibt es für das Rendern von Zahlen in LaTeX keine Standardpräambel. Wenn Sie also planen, Grafiken zu rendern, die beispielsweise mit dem LaTeX-Paket „pict2e“ erstellt wurden, müssen Sie dies in der Präambel angeben:

1\usepackage{pict2e}

Mit scale = 3000 wird die Ausgabe auf 300 % skaliert; margin = 5 lässt Platz um das Fragment. Das PNG-Beispiel verwendet resolution = 150 DPI.

Die nächste Option bestimmt die Hintergrundfarbe. Anders als beim Rendern mathematischer Formeln müssen wir keine Vordergrundfarbe angeben, da wir davon ausgehen, dass die Farben vollständig vom LaTeX-Code gesteuert werden. Ebenso wird die Hintergrundfarbe ebenfalls durch den LaTeX-Code gesteuert, sodass diese Option lediglich der Einfachheit halber bereitgestellt wird.

Das Beispiel weist log_stream einen binären Dateistream zu und speichert das Protokoll als text-and-formula.png.log neben text-and-formula.png. Die with-Anweisung schließt beide Streams automatisch.

show_terminal steuert die Terminalausgabe in der Konsole. Die Beispiele setzen diese Option auf False; das Protokoll wird weiterhin in die Datei geschrieben.

Die für das Rendern der Figur verantwortliche Methode ist FigureRenderer.render() . Es gibt die Größe der Figur in Punkten zurück.

Das zweite Argument ist der binäre Ausgabestream für das Bild. Das dritte Argument enthält die Rendering-Optionen.

Schließlich rufen wir die Methode „FigureRenderer.render()“ selbst auf und übergeben die Optionen als drittes Argument. Als erstes Argument wird der LaTeX-Code der Abbildung bereitgestellt.

Die letzten Zeilen geben den Fehlerbericht oder bei leerem Bericht No rendering errors. aus, gefolgt von Breite und Höhe in Punkten.

Hier ist das Ergebnis des Renderns.

LaTeX-Figuren-Rendering in PNG

Dies stellt den allgemeinsten Anwendungsfall für die Funktion LaTeX-Figurenrendering dar.

Rendern einer LaTeX-Figur in SVG

Ebenso können wir eine LaTeX-Figur im SVG-Format rendern.

 1# Render a LaTeX figure with a triangle and formulas to SVG.
 2import os
 3from pathlib import Path
 4from aspose.pydrawing import Color
 5from aspose.tex.features import SvgFigureRenderer, SvgFigureRendererOptions
 6
 7# Set an output directory, or use the default output folder.
 8output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
 9output_dir.mkdir(parents=True, exist_ok=True)
10
11# Create rendering options.
12options = SvgFigureRendererOptions()
13# Specify the preamble.
14options.preamble = r"\usepackage{pict2e}"
15# Specify the scaling factor 300%.
16options.scale = 3000
17# Leave space around the rendered fragment.
18options.margin = 5
19# Specify the background color.
20options.background_color = Color.white
21# Specify whether to show the terminal output on the console or not.
22options.show_terminal = False
23
24# Create binary streams for the rendering log and figure image.
25with (output_dir / "text-and-formula.svg.log").open("wb") as log_stream, \
26        (output_dir / "text-and-formula.svg").open("wb") as stream:
27    options.log_stream = log_stream
28    # Run rendering.
29    size = SvgFigureRenderer().render(r"""\setlength{\unitlength}{0.8cm}
30\begin{picture}(6,5)
31\thicklines
32\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$}
33\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}$}
34\end{picture}""", stream, options)
35
36# Show other results.
37print(options.error_report or "No rendering errors.")
38print()
39print(f"Size: {size.width}x{size.height}")

Dieses Beispiel erstellt text-and-formula.svg und das Protokoll text-and-formula.svg.log im selben Ausgabeverzeichnis.

Die Unterschiede sind:

Hier ist das Ergebnis:

LaTeX-Figurenrendering in SVG