Representación de figuras LaTeX | Aspose.TeX para .NET
A veces es posible que desees extraer algún contenido de un archivo LaTeX como una pieza renderizada por separado, o una “figura”, sin ninguna conexión con el diseño de la página. Puede ser una ilustración para tu publicación en Internet, por ejemplo. Puedes hacerlo con nuestra API. En cuanto a los formatos de destino, hay dos opciones: PNG y SVG. Como es el caso de la función de representación de fórmulas matemáticas de LaTeX. También vale la pena señalar que representación de figuras LaTeX es una generalización de representación de fórmulas matemáticas LaTeX.
Cómo renderizar una figura de LaTeX a PNG
La sección de referencia de API relacionada con este tema está aquí. Y al igual que con la representación de fórmulas, comenzaremos con un ejemplo. Aquí lo tienes:
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}
En primer lugar, creamos una instancia de opciones de figura LaTeX. Lo hacemos aquí especificando simultáneamente la resolución de la imagen de salida.
A continuación, especificamos el preámbulo. No hay un preámbulo predeterminado para la representación de figuras en LaTeX, por lo que si, por ejemplo, va a representar algunos gráficos trazados usando el paquete LaTeX pict2e
, debe especificarlo en el preámbulo:
1\usepackage{pict2e}
Luego le indicamos al renderizador que escale la salida en un 300%.
La siguiente opción define el color de fondo. A diferencia de la representación de fórmulas matemáticas, no especificamos un color de primer plano ya que asumimos que los colores están completamente bajo el control del código LaTeX. De hecho, también lo es el color de fondo, por lo que esta es solo una opción conveniente.
La siguiente línea del ejemplo no tiene mucho sentido. Simplemente demuestra que puede dirigir la salida del registro a alguna secuencia.
Y la última opción ShowTerminal
le permite alternar la escritura de la salida del terminal en la consola.
El método que realmente realiza el renderizado es FigureRenderer.Render(). Devuelve el tamaño de la figura en puntos.
El método acepta la secuencia donde se escribirá la imagen como segundo argumento. Creamos la secuencia a continuación.
Y finalmente, llamamos al método FigureRenderer.Render()
, pasando opciones como tercer argumento. El código LaTeX de la figura se pasa como primer argumento.
Las últimas líneas del ejemplo imprimen dos artefactos de la representación de la figura: el tamaño de la figura y el breve informe de errores (en caso de que haya errores).
Aquí está el resultado del renderizado.
Este es el caso de uso más general para la función Representación de figuras LaTeX.
Cómo renderizar una figura de LaTeX a SVG
De la misma manera, podemos representar una figura de LaTeX en 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}
Las diferencias son:
- Usamos la clase SvgFigureRendererOptions en lugar de PngFigureRendererOptions.
- No especificamos la resolución.
- Usamos la clase SvgFigureRenderer en lugar de PngFigureRenderer.
Aquí está el resultado: