Representación de figuras LaTeX | Aspose.TeX para Python
En determinadas situaciones, es posible que necesites extraer contenido específico de un archivo LaTeX como una pieza renderizada independiente, comúnmente denominada figura, sin ninguna conexión con el diseño de la página. Esto podría resultar útil, por ejemplo, al crear ilustraciones para una publicación en línea. Nuestra API le permite lograr esto. Los formatos de destino para representar figuras son PNG y SVG, al igual que con la función de representación de fórmulas matemáticas de LaTeX. Vale la pena señalar que la representación de figuras LaTeX es una característica más general en comparación con la representación de fórmulas matemáticas LaTeX.
Renderizar una figura de LaTeX a PNG
Si es necesario, primero eche un vistazo a la sección de referencia de API para este tema. De manera similar a la representación de fórmulas, comenzaremos con un ejemplo. Aquí lo tienes:
1# Create rendering options setting the image resolution to 150 dpi.
2options = PngFigureRendererOptions()
3options.resolution = 150 # Specify the preamble.
4options.preamble = r"\usepackage{pict2e}"
5# Specify the scaling factor 300%.
6options.scale = 3000
7# Specify the background color.
8options.background_color = Color.white
9# Specify the output stream for the log file.
10options.log_stream = BytesIO()
11# Specify whether to show the terminal output on the console or not.
12options.show_terminal = True
13
14# Create the output stream for the figure image.
15with open(path.join(Util.output_directory, "text-and-formula.png"), "wb") as stream:
16 # Run rendering.
17 size = PngFigureRenderer().render(r"""\setlength{\unitlength}{0.8cm}
18\begin{picture}(6,5)
19\thicklines
20\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$}
21\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}$}
22\end{picture}""", stream, options)
23
24# Show other results.
25print(options.error_report)
26print()
27print(f"Size: {size.width}x{size.height}")
Para comenzar, creamos una instancia de la clase opciones de renderizado de figuras LaTeX, donde especificamos simultáneamente la resolución de la imagen de salida.
A continuación, debemos especificar el preámbulo. A diferencia de la representación de fórmulas matemáticas de LaTeX, no existe un preámbulo predeterminado para la representación de figuras de LaTeX. Por lo tanto, si planea renderizar gráficos creados usando el paquete LaTeX pict2e
, por ejemplo, necesitará especificarlo en el preámbulo:
1\usepackage{pict2e}
Luego le indicamos al renderizador que escale la salida en un 300%.
La siguiente opción determina el color de fondo. A diferencia de la representación de fórmulas matemáticas, no necesitamos especificar un color de primer plano, ya que asumimos que los colores están completamente controlados por el código LaTeX. De manera similar, el color de fondo también está controlado por el código LaTeX, por lo que esta opción se proporciona simplemente por conveniencia.
Es posible que la siguiente línea del ejemplo no sea particularmente significativa. Simplemente pretende demostrar que tiene la opción de dirigir la salida del registro a una secuencia específica.
La última opción, ShowTerminal
, le permite controlar si la salida del terminal debe mostrarse en la consola.
El método responsable de renderizar la figura es FigureRenderer.render(). Devuelve el tamaño de la figura en puntos.
El método acepta una secuencia como segundo argumento, que es la secuencia donde se escribirá la imagen. Creamos la secuencia en la siguiente línea.
Finalmente, invocamos el método FigureRenderer.render()
, pasando las opciones como tercer argumento. El código LaTeX de la figura se proporciona como primer argumento.
Las últimas líneas del ejemplo muestran dos datos relacionados con la representación de la figura: el tamaño de la figura y un breve informe de errores (si hay algún error).
Aquí está el resultado del renderizado.
Este representa el caso de uso más general para la función Representación de figuras LaTeX.
Representar una figura de LaTeX a SVG
De manera similar, también podemos renderizar una figura LaTeX en formato SVG.
1# Create rendering options.
2options = SvgFigureRendererOptions()
3# Specify the preamble.
4options.preamble = r"\usepackage{pict2e}"
5# Specify the scaling factor 300%.
6options.scale = 3000
7# Specify the background color.
8options.background_color = Color.white
9# Specify the output stream for the log file.
10options.log_stream = BytesIO()
11# Specify whether to show the terminal output on the console or not.
12options.show_terminal = True
13
14# Create the output stream for the figure image.
15with open(path.join(Util.output_directory, "text-and-formula.svg"), "wb") as stream:
16 # Run rendering.
17 size = SvgFigureRenderer().render(r"""\setlength{\unitlength}{0.8cm}
18\begin{picture}(6,5)
19\thicklines
20\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$}
21\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}$}
22\end{picture}""", stream, options)
23
24# Show other results.
25print(options.error_report)
26print()
27print(f"Size: {size.width}x{size.height}")
Las diferencias son:
- En lugar de utilizar la clase PngFigureRendererOptions, utilizamos la clase SvgFigureRendererOptions.
- No es necesario especificar la resolución.
- En lugar de utilizar la clase PngFigureRenderer, utilizamos la clase SvgFigureRenderer.