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:

Establezca ASPOSE_TEX_OUTPUT_DIR en su directorio de salida o use la carpeta predeterminada output. Todo el código LaTeX está incluido en los ejemplos; no se necesitan archivos de entrada externos. Aplique primero una licencia. Licencias.

 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}")

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}

Se usa scale = 3000 para una escala del 300 % y margin = 5 para dejar espacio alrededor del fragmento. El ejemplo PNG utiliza resolution = 150 DPI.

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.

El ejemplo asigna un flujo de archivo binario a log_stream y guarda el registro como text-and-formula.png.log junto a text-and-formula.png. La instrucción with cierra ambos flujos automáticamente.

show_terminal controla la salida del terminal en la consola. Los ejemplos lo establecen en False; el registro sigue escribiéndose en el archivo.

El método responsable de renderizar la figura es FigureRenderer.render() . Devuelve el tamaño de la figura en puntos.

El segundo argumento es el flujo de salida binario abierto para la imagen. El tercero proporciona las opciones de renderizado.

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 muestran el informe de errores, o No rendering errors. si está vacío, seguido del ancho y la altura en puntos.

Aquí está el resultado del renderizado.

Representación de figuras LaTeX a PNG

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# 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}")

Este ejemplo crea text-and-formula.svg y su registro text-and-formula.svg.log en el mismo directorio de salida.

Las diferencias son:

Aquí está el resultado: Representación de figuras LaTeX a SVG