Rendering di figura in LaTeX | Aspose.TeX per .NET
A volte potresti voler estrarre alcuni contenuti da un file in LaTeX come pezzo reso separatamente, o una *figura " *, senza alcuna connessione al layout della pagina. Può essere un’illustrazione per la tua pubblicazione su Internet, per esempio. Puoi farlo con la nostra API. Per quanto riguarda i formati target, ci sono due opzioni: PNG e SVG. Come nel caso della funzione di rendering della formula matematica in LaTeX. Vale anche la pena notare che il rendering di figura in LaTeX è una generalizzazione del rendering di formula matematica in LaTeX.
Come rendere una figura in LaTeX a png
La sezione di riferimento API relativa a questo argomento è qui. E come per il rendering della formula, inizieremo con un esempio. Ecco qui:
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}
Prima di tutto, creiamo un’istanza opzioni di figura in LaTeX. Lo facciamo qui contemporaneamente specificando la risoluzione dell’immagine di output.
Successivamente, specifichiamo il preambolo. Non esiste un preambolo predefinito per il rendering delle figure in LaTeX, quindi se, ad esempio, stai per rendere una grafica tracciata utilizzando il pacchetto Pict2e
latex, devi specificarlo nel preambolo:
1\usepackage{pict2e}
Quindi istruiamo il rendering di ridimensionare l’output del 300%.
L’opzione successiva definisce il colore di sfondo. A differenza del rendering della formula matematica, non specifichiamo un colore in primo piano poiché supponiamo che i colori siano interamente sotto il controllo del codice LaTeX. In effetti, così è il colore di sfondo, quindi questa è solo un’opzione di convenienza.
La riga successiva dell’esempio non ha molto senso. Dimostra solo che è possibile indirizzare l’output del registro su un flusso.
E l’ultima opzione showterminal
consente di attivare la scrittura dell’output del terminale sulla console.
Il metodo che esegue effettivamente il rendering è figurerender.render(). Restituisce le dimensioni della figura in punti.
Il flusso in cui l’immagine deve essere scritta è accettato dal metodo come secondo argomento. Creiamo il flusso dopo.
E infine, chiamiamo il metodo figurerender.render()
, passando le opzioni come terzo argomento. Il codice in LaTeX della figura viene approvato come primo argomento.
Le ultime righe dell’esempio stampano due artefatti del rendering della figura: la dimensione della figura e il breve rapporto di errore (nel caso in cui vi siano errori).
Ecco il risultato del rendering.
Questo è il caso d’uso più generale per la funzione Latex Figure.
Come rendere una figura in LaTeX a SVG
Allo stesso modo, possiamo rendere una figura in LaTeX in formato SVG.
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}
Le differenze sono:
- Usiamo la classe svgfigurerendereroptions anziché pngfurererendereroptions.
- Non specifichiamo la risoluzione.
- Usiamo la classe svgfigurerender anziché pngfigurerender.
Ecco il risultato: