乳胶图渲染| Aspose.TeX for Python

在某些情况下,您可能需要从 LaTeX 文件中提取特定内容作为独立的渲染片段,通常称为“图形”,而无需与页面布局建立任何关联。例如,在为在线出版物创建插图时,这可能很有用。我们的 API 允许您实现这一点。图形渲染的目标格式是 PNG 和 SVG,就像 LaTeX 数学公式渲染功能一样。值得注意的是,与 LaTeX 数学公式渲染 相比,LaTeX 图形渲染 是一项更通用的功能。

将乳胶图形呈现到png

如果需要,请首先查看 此主题的API参考部分。与公式渲染类似,我们将以一个示例开始。这里是:

 1from aspose.tex.features import *
 2from aspose.pydrawing import Color
 3from aspose.tex.io import *
 4from aspose.tex.presentation.xps import *
 5from util import Util
 6from io import BytesIO
 7from os import path
 8###############################################
 9###### Class and Method declaration here ######
10###############################################
11
12# Create rendering options setting the image resolution to 150 dpi.
13options = PngFigureRendererOptions() 
14options.resolution = 150             # Specify the preamble.
15options.preamble = r"\usepackage{pict2e}"
16# Specify the scaling factor 300%.
17options.scale = 3000
18# Specify the background color.
19options.background_color = Color.white
20# Specify the output stream for the log file.
21options.log_stream = BytesIO()
22# Specify whether to show the terminal output on the console or not.
23options.show_terminal = True
24
25# Create the output stream for the figure image.
26with open(path.join(Util.output_directory, "text-and-formula.png"), "wb") as stream:
27    # Run rendering.
28    size = PngFigureRenderer().render(r"""\setlength{\unitlength}{0.8cm}
29\begin{picture}(6,5)
30\thicklines
31\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$}
32\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}$}
33\end{picture}""", stream, options)
34
35# Show other results.
36print(options.error_report)
37print()
38print(f"Size: {size.width}x{size.height}")

首先,我们创建一个 乳胶图渲染器选项类的实例,我们同时指定输出图像分辨率。

接下来,我们需要指定序言。与乳胶数学公式渲染不同,乳胶图渲染没有默认的序言。因此,如果您打算使用“ Pict2e”乳胶软件包创建图形,则需要在序言中指定它:

1\usepackage{pict2e}

然后,我们指示渲染器将输出扩展300%。

下一个选项确定背景颜色。与数学公式渲染不同,我们不需要指定前景颜色,因为我们假设颜色完全由乳胶代码控制。同样,背景颜色也由乳胶代码控制,因此为方便起见提供此选项。

示例中的以下行可能不是特别有意义。只是旨在证明您可以选择将日志输出引导到特定流。

最终选项“ Show -Terminal”使您可以控制终端输出是否应显示在控制台中。

负责渲染该图的方法是 figurerenderer.render()。它返回点的大小。

该方法接受流作为第二个参数,这是图像写的流。我们在下一行中创建流。

最后,我们调用figurerender.render()方法本身,将选项作为第三个参数传递。该图的乳胶代码作为第一个参数提供。

该示例的最后几行显示了与图形渲染相关的两个信息 - 图的大小和简短的错误报告(如果有任何错误)。

这是渲染的结果。

乳胶图渲染到PNG

这代表了乳胶图渲染功能最通用的用例。

将乳胶数字渲染为SVG

同样,我们也可以以SVG格式渲染乳胶图。

 1from aspose.tex.features import *
 2from aspose.pydrawing import Color
 3from util import Util
 4from io import BytesIO
 5from os import path
 6###############################################
 7###### Class and Method declaration here ######
 8###############################################
 9
10# Create rendering options.
11options = SvgFigureRendererOptions()
12# Specify the preamble.
13options.preamble = r"\usepackage{pict2e}"
14# Specify the scaling factor 300%.
15options.scale = 3000
16# Specify the background color.
17options.background_color = Color.white
18# Specify the output stream for the log file.
19options.log_stream = BytesIO()
20# Specify whether to show the terminal output on the console or not.
21options.show_terminal = True
22
23# Create the output stream for the figure image.
24with open(path.join(Util.output_directory, "text-and-formula.svg"), "wb") as stream:
25    # Run rendering.
26    size = SvgFigureRenderer().render(r"""\setlength{\unitlength}{0.8cm}
27\begin{picture}(6,5)
28\thicklines
29\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$}
30\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}$}
31\end{picture}""", stream, options)
32
33# Show other results.
34print(options.error_report)
35print()
36print(f"Size: {size.width}x{size.height}")

差异是:

这是结果:

乳胶图渲染到SVG

Have any questions about Aspose.TeX?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.