Renderização de figuras de LaTeX | Aspose.TeX para Python

Em determinadas situações, pode ser necessário extrair conteúdo específico de um arquivo de LaTeX como uma peça renderizada independente, comumente referida como uma figura, sem nenhuma conexão com o layout da página. Isso pode ser útil, por exemplo, ao criar ilustrações para uma publicação on -line. Nossa API permite que você faça isso. Os formatos de destino para renderizar os números são PNG e SVG, assim como com o recurso de renderização de fórmula matemática do LATEX. Vale a pena notar que Renderização de figuras de LaTeX é um recurso mais geral em comparação com renderização de fórmula matemática do LATEX.

Renderizando uma figura de LaTeX para png

Se necessário, primeiro dê uma olhada na seção de referência da API para este tópico. Semelhante à renderização da fórmula, começaremos com um exemplo. Aqui está:

 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 começar, criamos uma instância da classe Opções do renderizador de figuras do LATEX, onde especificamos simultaneamente a resolução da imagem de saída.

Em seguida, precisamos especificar o preâmbulo. Ao contrário da renderização de fórmula matemática do LATEX, não há preâmbulo padrão para renderização de figuras de LaTeX. Portanto, se você está planejando renderizar gráficos criados usando o pacote pict2e LATEX, por exemplo, precisará especificá -lo no preâmbulo:

1\usepackage{pict2e}

Em seguida, instruímos o renderizador a escalar a saída em 300%.

A próxima opção determina a cor do fundo. Ao contrário da renderização da fórmula matemática, não precisamos especificar uma cor de primeiro plano, pois assumimos que as cores são totalmente controladas pelo código do LATEX. Da mesma forma, a cor do plano de fundo também é controlada pelo código do LATEX; portanto, essa opção é simplesmente fornecida por conveniência.

A linha a seguir no exemplo pode não ser particularmente significativa. É simplesmente destinado a demonstrar que você tem a opção de direcionar a saída de log para um fluxo específico.

A opção final, showMerminal, permite controlar se a saída do terminal deve ser exibida no console.

O método responsável por renderizar a figura é FiguureRender.render(). Ele retorna o tamanho da figura em pontos.

O método aceita um fluxo como o segundo argumento, que é o fluxo em que a imagem será gravada. Criamos o fluxo na próxima linha.

Por fim, invocamos o próprio método figuureRender.render(), passando as opções como o terceiro argumento. O código do LATEX da figura é fornecido como o primeiro argumento.

As últimas linhas do exemplo exibem duas informações relacionadas à renderização de figuras - o tamanho da figura e um breve relatório de erro (se houver algum erro).

Aqui está o resultado da renderização.

Figura de LaTeX renderização para png

Isso representa o caso de uso mais geral para o recurso de renderização de figuras **.

Renderizando uma figura de LaTeX para SVG

Da mesma forma, também podemos renderizar uma figura de LaTeX no 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}")

As diferenças são:

Aqui está o resultado:

Figura de LaTeX renderização para SVG

Have any questions about Aspose.TeX?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.