LaTeX-Figurenrendering | Aspose.TeX für .NET

Manchmal möchten Sie vielleicht einige Inhalte aus einer LaTeX-Datei als separat gerendertes Stück oder als „Figur“ extrahieren, ohne irgendeine Verbindung zum Seitenlayout. Es kann beispielsweise eine Illustration für Ihre Veröffentlichung im Internet sein. Sie können dies mit unserer API tun. Was die Zielformate betrifft, gibt es zwei Optionen: PNG und SVG. Dies ist beispielsweise bei der LaTeX-Funktion zum Rendern mathematischer Formeln der Fall. Es ist auch erwähnenswert, dass LaTeX-Figuren-Rendering eine Verallgemeinerung von LaTeX-Mathe-Formel-Rendering ist.

So rendern Sie eine LaTeX-Figur in PNG

Der API-Referenzabschnitt zu diesem Thema ist hier. Und wie bei der Formeldarstellung beginnen wir mit einem Beispiel. Hier ist es:

 1// Create rendering options setting the image resolution to 150 dpi.
 2PngFigureRendererOptions options = new PngFigureRendererOptions();
 3options.Resolution = 150;
 4// Specify the preamble.
 5options.Preamble = "\\usepackage{pict2e}";
 6// Specify the scaling factor 300%.
 7options.Scale = 3000;
 8// Specify the background color.
 9options.BackgroundColor = System.Drawing.Color.White;
10// Specify the output stream for the log file.
11options.LogStream = new System.IO.MemoryStream();
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.
16using (System.IO.Stream stream = System.IO.File.Open(
17    System.IO.Path.Combine(RunExamples.OutputDirectory, "text-and-formula.png"), System.IO.FileMode.Create))
18{
19    // Run rendering.
20    System.Drawing.SizeF size = new PngFigureRenderer().Render(@"\setlength{\unitlength}{0.8cm}
21\begin{picture}(6,5)
22\thicklines
23\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$}
24\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}$}
25\end{picture}", stream, options);
26    
27    // Show other results.
28    System.Console.Out.WriteLine(options.ErrorReport);
29    System.Console.Out.WriteLine();
30    System.Console.Out.WriteLine("Size: " + size); // Dimensions of the resulting image.
31}

Zunächst erstellen wir eine LaTeX-Figurenoptionen-Instanz. Wir tun dies hier und geben gleichzeitig die Ausgabebildauflösung an.

Als nächstes spezifizieren wir die Präambel. Es gibt keine Standard-Präambel für das Rendern von LaTeX-Figuren. Wenn Sie also beispielsweise einige Grafiken rendern möchten, die mit dem LaTeX-Paket „pict2e“ geplottet wurden, müssen Sie dies in der Präambel angeben:

1\usepackage{pict2e}

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

Die nächste Option definiert die Hintergrundfarbe. Anders als beim Rendern mathematischer Formeln geben wir keine Vordergrundfarbe an, da wir davon ausgehen, dass die Farben vollständig vom LaTeX-Code gesteuert werden. Tatsächlich gilt dies auch für die Hintergrundfarbe, es handelt sich also lediglich um eine praktische Option.

Die nächste Zeile des Beispiels ergibt wenig Sinn. Es zeigt lediglich, dass Sie die Protokollausgabe an einen Stream weiterleiten können.

Und mit der letzten Option „ShowTerminal“ können Sie das Schreiben der Terminalausgabe in die Konsole umschalten.

Die Methode, die das Rendern tatsächlich durchführt, ist FigureRenderer.Render(). Es gibt die Größe der Figur in Punkten zurück.

Der Stream, in den das Bild geschrieben werden soll, wird von der Methode als zweites Argument akzeptiert. Als nächstes erstellen wir den Stream.

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

Die letzten Zeilen des Beispiels geben zwei Artefakte der Figurendarstellung aus – die Größe der Figur und den kurzen Fehlerbericht (falls Fehler vorliegen).

Hier ist das Ergebnis des Renderns.

LaTeX-Figuren-Rendering in PNG

Dies ist der allgemeinste Anwendungsfall für die Funktion LaTeX-Figurenrendering.

So rendern Sie eine LaTeX-Figur in SVG

Auf die gleiche Weise können wir eine LaTeX-Figur im SVG-Format rendern.

 1// Create rendering options.
 2FigureRendererOptions options = new SvgFigureRendererOptions();
 3// Specify the preamble.
 4options.Preamble = "\\usepackage{pict2e}";
 5// Specify the scaling factor 300%.
 6options.Scale = 3000;
 7// Specify the background color.
 8options.BackgroundColor = System.Drawing.Color.White;
 9// Specify the output stream for the log file.
10options.LogStream = new System.IO.MemoryStream();
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.
15using (System.IO.Stream stream = System.IO.File.Open(
16    System.IO.Path.Combine(RunExamples.OutputDirectory, "text-and-formula.svg"), System.IO.FileMode.Create))
17{
18    // Run rendering.
19    System.Drawing.SizeF size = new SvgFigureRenderer().Render(@"\setlength{\unitlength}{0.8cm}
20\begin{picture}(6,5)
21\thicklines
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$}
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}$}
24\end{picture}", stream, options);
25    
26    // Show other results.
27    System.Console.Out.WriteLine(options.ErrorReport);
28    System.Console.Out.WriteLine();
29    System.Console.Out.WriteLine("Size: " + size); // Dimensions of the resulting image.
30}

Die Unterschiede sind:

Hier ist das Ergebnis:

LaTeX-Figurenrendering in SVG

Have any questions about Aspose.TeX?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.