LaTeX Рендеринг фигур | Python через .NET
В определенных ситуациях вам может потребоваться извлечь определенное содержимое из файла LaTeX в виде отдельной визуализированной части, обычно называемой фигурой, без какой-либо связи с макетом страницы. Это может быть полезно, например, при создании иллюстраций для интернет-издания. Наш API позволяет вам это сделать. Целевыми форматами для рендеринга фигур являются PNG и SVG, как и в случае с функцией рендеринга математических формул LaTeX. Стоит отметить, что рендеринг фигур LaTeX является более общей функцией по сравнению с рендерингом математических формул LaTeX.
Рендеринг фигуры LaTeX в PNG
При необходимости сначала просмотрите справочный раздел API для этой темы. Как и в случае с рендерингом формул, мы начнем с примера. Вот:
Укажите выходной каталог в ASPOSE_TEX_OUTPUT_DIR либо используйте папку output по умолчанию. Весь код LaTeX включён в примеры; внешние входные файлы не требуются. Предварительно примените лицензию.
Лицензирование.
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}")Для начала мы создаем экземпляр класса Параметры рендеринга фигур LaTeX, где одновременно указываем разрешение выходного изображения.
Далее нам нужно указать преамбулу. В отличие от рендеринга математических формул LaTeX, для рендеринга фигур LaTeX нет преамбулы по умолчанию. Поэтому, если вы планируете визуализировать графику, созданную, например, с помощью пакета LaTeX pict2e, вам нужно будет указать это в преамбуле:
1\usepackage{pict2e}Задаём scale = 3000 для масштаба 300% и margin = 5, чтобы оставить поля вокруг фрагмента. Пример PNG использует resolution = 150 DPI.
Следующая опция определяет цвет фона. В отличие от рендеринга математических формул, нам не нужно указывать цвет переднего плана, поскольку мы предполагаем, что цвета полностью контролируются кодом LaTeX. Аналогичным образом, цвет фона также контролируется кодом LaTeX, поэтому эта опция предусмотрена просто для удобства.
Пример присваивает двоичный файловый поток свойству log_stream и сохраняет журнал в text-and-formula.png.log рядом с text-and-formula.png. Конструкция with автоматически закрывает оба потока.
Параметр show_terminal управляет выводом терминала в консоль. В примерах он равен False; журнал при этом записывается в файл.
Метод, отвечающий за рендеринг фигуры, — FigureRenderer.render() . Возвращает размер фигуры в пунктах.
Второй аргумент — двоичный выходной поток, открытый для изображения. Третий аргумент содержит параметры рендеринга.
Наконец, мы вызываем сам метод «FigureRenderer.render()», передавая параметры в качестве третьего аргумента. Код LaTeX рисунка предоставляется в качестве первого аргумента.
Последние строки выводят отчёт об ошибках либо No rendering errors., если отчёт пуст, а затем ширину и высоту в пунктах.
Вот результат рендеринга.
Это наиболее общий вариант использования функции рендеринга фигур LaTeX.
Рендеринг фигуры LaTeX в SVG
Точно так же мы можем визуализировать фигуру LaTeX в формате 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}")Этот пример создаёт text-and-formula.svg и журнал text-and-formula.svg.log в том же выходном каталоге.
Отличия заключаются в следующем:
- Вместо использования класса PngFigureRendererOptions мы используем класс SvgFigureRendererOptions.
- Нам не нужно указывать разрешение.
- Вместо использования класса PngFigureRenderer мы используем класс SvgFigureRenderer.
Вот результат:
