Рендеринг математических формул LaTeX | .NET
Как преобразовать математическую формулу LaTeX в PNG
Справочный раздел API, связанный с этой темой, находится здесь. Фактически, самый простой способ продемонстрировать функцию рендеринга математических формул LaTeX — начать с примера. Вот:
1 // Render LaTeX math formula to PNG image
2
3 // Create rendering options setting the image resolution to 150 dpi.
4 PngMathRendererOptions options = new PngMathRendererOptions();
5 options.Resolution = 150;
6
7 // Specify the preamble.
8 options.Preamble = @"\usepackage{amsmath}
9 \usepackage{amsfonts}
10 \usepackage{amssymb}
11 \usepackage{color}";
12
13 // Specify the scaling factor 300%.
14 options.Scale = 3000;
15
16 // Specify the foreground color.
17 options.TextColor = System.Drawing.Color.Black;
18
19 // Specify the background color.
20 options.BackgroundColor = System.Drawing.Color.White;
21
22 // Specify the output stream for the log file.
23 options.LogStream = new System.IO.MemoryStream();
24
25 // Specify whether to show the terminal output on the console or not.
26 options.ShowTerminal = true;
27
28 // Create the output stream for the formula image.
29 using (System.IO.Stream stream = System.IO.File.Open(
30 System.IO.Path.Combine(OutputDir, "math-formula.png"), System.IO.FileMode.Create))
31 {
32 // Run rendering.
33 System.Drawing.SizeF size = new PngMathRenderer().Render(@"\begin{equation*}
34e^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!}
35\end{equation*}", stream, options);
36
37 // Show other results.
38 System.Console.Out.WriteLine(options.ErrorReport);
39 System.Console.Out.WriteLine();
40 System.Console.Out.WriteLine($"Size: {size}"); // Dimensions of the resulting image.
41 }Давайте перейдем к деталям. Прежде всего, мы создаем экземпляр параметры рендеринга, аналогичный набору текста TeX/LaTeX. Мы делаем это здесь, одновременно указывая разрешение выходного изображения.
Далее уточняем преамбулу. Преамбула по умолчанию:
1\usepackage{amsmath}
2\usepackage{amsfonts}
3\usepackage{amssymb}который обеспечивает немного более продвинутую поддержку математических формул, чем базовый LaTeX. Например, вы можете добавить пакет «color», если хотите использовать в формуле собственную подсветку, как мы показали в примере кода.
Затем мы указываем рендереру масштабировать результат на 300%.
Следующие два параметра определяют цвета переднего плана и фона. Те части формулы, которые не покрыты («окрашены») пользовательской подсветкой, будут отображаться цветом TextColor.
Следующая строка примера не имеет особого смысла. Это просто демонстрирует, что вы можете направить вывод журнала в какой-то поток.
И последняя опция «ShowTerminal» позволяет вам переключать запись вывода терминала на консоль.
Метод, который фактически выполняет рендеринг, — это MathRenderer.Render(). Возвращает размер формулы в пунктах.
Поток, в который должно быть записано изображение, принимается методом в качестве второго аргумента. Далее мы создаем поток.
И, наконец, мы вызываем сам метод MathRenderer.Render(), передавая параметры в качестве третьего аргумента. Код LaTeX формулы передается в качестве первого аргумента.
В последних строках примера выводятся два артефакта отрисовки математической формулы — размер формулы и краткий отчет об ошибках (в случае их наличия).
Вот результат рендеринга.
Это наиболее общий вариант использования функции отрисовки математических формул LaTeX.
Вы также можете ознакомиться с бесплатным веб-приложением, созданным на основе функции, реализованной в Aspose.TeX for .NET API.
Как преобразовать математическую формулу LaTeX в SVG
Практически таким же образом мы можем преобразовать математическую формулу LaTeX в формат SVG.
1 // Render LaTeX math formula to SVG image
2
3 // Create rendering options.
4 MathRendererOptions options = new SvgMathRendererOptions();
5
6 // Specify the preamble.
7 options.Preamble = @"\usepackage{amsmath}
8 \usepackage{amsfonts}
9 \usepackage{amssymb}
10 \usepackage{color}";
11
12 // Specify the scaling factor 300%.
13 options.Scale = 3000;
14
15 // Specify the foreground color.
16 options.TextColor = System.Drawing.Color.Black;
17
18 // Specify the background color.
19 options.BackgroundColor = System.Drawing.Color.White;
20
21 // Specify the output stream for the log file.
22 options.LogStream = new System.IO.MemoryStream();
23
24 // Specify whether to show the terminal output on the console or not.
25 options.ShowTerminal = true;
26
27 // Create the output stream for the formula image.
28 using (System.IO.Stream stream = System.IO.File.Open(
29 System.IO.Path.Combine(OutputDir, "math-formula.svg"), System.IO.FileMode.Create))
30 {
31 // Run rendering.
32 System.Drawing.SizeF size = new SvgMathRenderer().Render(@"\begin{equation*}
33e^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!}
34\end{equation*}", stream, options);
35
36 // Show other results.
37 System.Console.Out.WriteLine(options.ErrorReport);
38 System.Console.Out.WriteLine();
39 System.Console.Out.WriteLine($"Size: {size}"); // Dimensions of the resulting image.
40 }Отличия заключаются в следующем:
- Мы используем класс SvgMathRendererOptions вместо PngMathRendererOptions.
- Мы не указываем разрешение.
- Мы используем класс SvgMathRenderer вместо PngMathRenderer.
Вот результат:
Вы также можете ознакомиться с бесплатным веб-приложением, созданным на основе функции, реализованной в Aspose.TeX for .NET API.
