Рендеринг математических формул LaTeX | Python через .NET
Преобразование математической формулы LaTeX в PNG
При необходимости ознакомьтесь с разделом ссылок на API для этой темы. Фактически, лучший способ продемонстрировать функцию рендеринга математической формулы LaTeX — начать с примера. Вот:
Укажите выходной каталог в ASPOSE_TEX_OUTPUT_DIR либо используйте папку output по умолчанию. Весь код LaTeX включён в примеры; внешние входные файлы не требуются. Предварительно примените лицензию.
Лицензирование.
1# Render a highlighted LaTeX math formula to PNG.
2import os
3from pathlib import Path
4from aspose.pydrawing import Color
5from aspose.tex.features import PngMathRenderer, PngMathRendererOptions
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 = PngMathRendererOptions()
13options.resolution = 150
14# Specify the preamble.
15options.preamble = r"""\usepackage{amsmath}
16\usepackage{amsfonts}
17\usepackage{amssymb}
18\usepackage{color}"""
19# Specify the scaling factor 300%.
20options.scale = 3000
21# Leave space around the rendered fragment.
22options.margin = 5
23# Specify the foreground color.
24options.text_color = Color.black
25# Specify the background color.
26options.background_color = Color.white
27# Specify whether to show the terminal output on the console or not.
28options.show_terminal = False
29
30# Create binary streams for the rendering log and formula image.
31with (output_dir / "math-formula.png.log").open("wb") as log_stream, \
32 (output_dir / "math-formula.png").open("wb") as stream:
33 options.log_stream = log_stream
34 # Run rendering.
35 size = PngMathRenderer().render(r"""\begin{equation*}
36e^x = x^{\color{red}0} + x^{\color{red}1} + \frac{x^{\color{red}2}}{2} + \frac{x^{\color{red}3}}{6} + \cdots = \sum_{n\geq 0} \frac{x^{\color{red}n}}{n!}
37\end{equation*}""", stream, options)
38
39# Show other results.
40print(options.error_report or "No rendering errors.")
41print()
42print(f"Size: {size.width}x{size.height}")Давайте перейдем к деталям. Во-первых, мы инициируем объект параметры рендеринга, аналогичный набору текста TeX/LaTeX, который включает в себя спецификацию желаемого разрешения выходного изображения.
Далее уточняем преамбулу. Преамбула по умолчанию:
1\usepackage{amsmath}
2\usepackage{amsfonts}
3\usepackage{amssymb}который предлагает расширенную поддержку математических формул по сравнению со стандартным LaTeX. Например, вы можете включить пакет «color», чтобы настроить выделение в формуле, как показано в приведенном примере кода.
Задаём scale = 3000 для масштаба 300% и margin = 5, чтобы оставить поля вокруг фрагмента. Пример PNG использует resolution = 150 DPI.
Следующие два параметра определяют цвета переднего плана и фона. Любые части формулы, на которые не влияет пользовательское выделение, будут отображаться цветом text_color.
Пример присваивает двоичный файловый поток свойству log_stream и сохраняет журнал в math-formula.png.log рядом с math-formula.png. Конструкция with автоматически закрывает оба потока.
Параметр show_terminal управляет выводом терминала в консоль. В примерах он равен False; журнал при этом записывается в файл.
Сам процесс рендеринга осуществляется методом MathRenderer.render(), который возвращает размер формулы в пунктах.
Второй аргумент — двоичный выходной поток, открытый для изображения. Третий аргумент содержит параметры рендеринга.
И, наконец, вызывается метод MathRenderer.render(), параметры которого передаются в качестве третьего аргумента. Код формулы LaTeX предоставляется в качестве первого аргумента.
Последние строки выводят отчёт об ошибках либо No rendering errors., если отчёт пуст, а затем ширину и высоту в пунктах.
Вот результат рендеринга.
Это наиболее распространенное и широкое применение функции рендеринга математических формул LaTeX.
Вы также можете изучить бесплатное веб-приложение, в котором используется реализованная функция Aspose.TeX for .NET API.
Преобразование математической формулы LaTeX в SVG
Точно так же мы можем преобразовать математическую формулу LaTeX в формат SVG, используя тот же подход.
1# Render a highlighted LaTeX math formula to SVG.
2import os
3from pathlib import Path
4from aspose.pydrawing import Color
5from aspose.tex.features import SvgMathRenderer, SvgMathRendererOptions
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 = SvgMathRendererOptions()
13# Specify the preamble.
14options.preamble = r"""\usepackage{amsmath}
15\usepackage{amsfonts}
16\usepackage{amssymb}
17\usepackage{color}"""
18# Specify the scaling factor 300%.
19options.scale = 3000
20# Leave space around the rendered fragment.
21options.margin = 5
22# Specify the foreground color.
23options.text_color = Color.black
24# Specify the background color.
25options.background_color = Color.white
26# Specify whether to show the terminal output on the console or not.
27options.show_terminal = False
28
29# Create binary streams for the rendering log and formula image.
30with (output_dir / "math-formula.svg.log").open("wb") as log_stream, \
31 (output_dir / "math-formula.svg").open("wb") as stream:
32 options.log_stream = log_stream
33 # Run rendering.
34 size = SvgMathRenderer().render(r"""\begin{equation*}
35e^x = x^{\color{red}0} + x^{\color{red}1} + \frac{x^{\color{red}2}}{2} + \frac{x^{\color{red}3}}{6} + \cdots = \sum_{n\geq 0} \frac{x^{\color{red}n}}{n!}
36\end{equation*}""", stream, options)
37
38# Show other results.
39print(options.error_report or "No rendering errors.")
40print()
41print(f"Size: {size.width}x{size.height}")Этот пример создаёт math-formula.svg и журнал math-formula.svg.log в том же выходном каталоге.
Отличия заключаются в следующем:
- Вместо использования класса PngMathRendererOptions мы используем класс SvgMathRendererOptions.
- Мы не указываем разрешение.
- Вместо использования класса PngMathRenderer мы используем класс SvgMathRenderer.
Вот результат:
Вы также можете изучить бесплатное веб-приложение, в котором используется реализованная функция Aspose.TeX for .NET API.
