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