Відтворення математичних формул LaTeX | Aspose.TeX для Java
Як відобразити математичну формулу LaTeX у форматі PNG
Фактично, найпростіший спосіб продемонструвати функцію візуалізації LaTeX math formula — це почати з прикладу. Ось воно:
Задайте outputFile як java.nio.file.Path у наявній папці: наприклад, Paths.get(outputDirectory, "math-formula.png") для PNG або Paths.get(outputDirectory, "math-formula.svg") для SVG. Імпортуйте використані класи рендерерів, параметрів і Size2D з Aspose.TeX, а також java.awt.Color, java.io.ByteArrayOutputStream, java.io.OutputStream, java.nio.file.Files, java.nio.file.Path, java.nio.file.Paths. Метод, що викликає цей код, має обробляти або оголошувати винятки. Застосуйте ліцензію згідно з
посібником із ліцензування, щоб уникнути обмежень ознайомлювальної версії.
1// Render a highlighted LaTeX math formula to PNG.
2// outputFile is a java.nio.file.Path in an existing output folder.
3PngMathRendererOptions options = new PngMathRendererOptions();
4options.setResolution(150);
5options.setPreamble("\\usepackage{amsmath}\n\\usepackage{amsfonts}\n"
6 + "\\usepackage{amssymb}\n\\usepackage{color}");
7options.setScale(3000); // 300%.
8options.setTextColor(Color.BLACK);
9options.setBackgroundColor(Color.WHITE);
10options.showTerminal(false);
11
12Size2D size;
13try (ByteArrayOutputStream log = new ByteArrayOutputStream();
14 OutputStream stream = Files.newOutputStream(outputFile)) {
15 options.setLogStream(log);
16 size = new PngMathRenderer().render("\\begin{equation*}\n"
17 + "e^x = x^{\\color{red}0} + x^{\\color{red}1} + \\frac{x^{\\color{red}2}}{2}"
18 + " + \\frac{x^{\\color{red}3}}{6} + \\cdots = \\sum_{n\\geq 0} \\frac{x^{\\color{red}n}}{n!}\n"
19 + "\\end{equation*}", stream, options);
20 System.out.println(options.getErrorReport());
21 System.out.println("Size: " + size.getWidth() + "x" + size.getHeight());
22}Перейдемо до деталей. Перш за все, ми створюємо екземпляр параметри візуалізації, подібний до набору тексту TeX/LaTeX. Ми робимо це тут, одночасно вказуючи роздільну здатність вихідного зображення.
Далі уточнюємо преамбулу. Типова преамбула:
1\usepackage{amsmath}
2\usepackage{amsfonts}
3\usepackage{amssymb}який забезпечує трохи розширенішу підтримку математичних формул, ніж базовий LaTeX. Ви можете, наприклад, додати пакет color, якщо хочете використовувати власне виділення у формулі, як ми показали у прикладі коду.
Потім ми наказуємо рендереру масштабувати вихід на 300%.
Два параметри задають кольори переднього плану та фону. Частини формули без спеціального виділення відображаються кольором, заданим через setTextColor().
Приклад спрямовує журнал рендерингу в ByteArrayOutputStream за допомогою setLogStream(). Потоки журналу й зображення автоматично закриваються після рендерингу.
showTerminal() керує виводом термінала в консоль. У прикладах задано false; установіть true, щоб показувати вивід.
MathRenderer.render() викликається на екземплярі PngMathRenderer або SvgMathRenderer і повертає розміри формули в пунктах як Size2D.
Метод приймає потік виводу зображення другим аргументом. Приклад відкриває його в блоці try-with-resources, який закриває потік після рендерингу.
Далі викликається render() на екземплярі рендерера: перший аргумент — формула LaTeX, другий — потік виводу зображення, третій — параметри рендерингу.
Останні рядки прикладу друкують два артефакти відтворення математичної формули - розмір формули та короткий звіт про помилку (якщо помилки були).
Ось результат візуалізації.
Це найзагальніший варіант використання відтворення математичної формули LaTeX.
Ви також можете переглянути безкоштовну веб-програму, створену на основі функції, реалізованої в Aspose.TeX для .NET API. Тут – сторінка версії Java.
Як відобразити математичну формулу LaTeX у SVG
Приблизно так само ми можемо відобразити математичну формулу LaTeX у форматі SVG.
1// Render a highlighted LaTeX math formula to SVG.
2// outputFile is a java.nio.file.Path in an existing output folder.
3SvgMathRendererOptions options = new SvgMathRendererOptions();
4options.setPreamble("\\usepackage{amsmath}\n\\usepackage{amsfonts}\n"
5 + "\\usepackage{amssymb}\n\\usepackage{color}");
6options.setScale(3000); // 300%.
7options.setTextColor(Color.BLACK);
8options.setBackgroundColor(Color.WHITE);
9options.showTerminal(false);
10
11Size2D size;
12try (ByteArrayOutputStream log = new ByteArrayOutputStream();
13 OutputStream stream = Files.newOutputStream(outputFile)) {
14 options.setLogStream(log);
15 size = new SvgMathRenderer().render("\\begin{equation*}\n"
16 + "e^x = x^{\\color{red}0} + x^{\\color{red}1} + \\frac{x^{\\color{red}2}}{2}"
17 + " + \\frac{x^{\\color{red}3}}{6} + \\cdots = \\sum_{n\\geq 0} \\frac{x^{\\color{red}n}}{n!}\n"
18 + "\\end{equation*}", stream, options);
19 System.out.println(options.getErrorReport());
20 System.out.println("Size: " + size.getWidth() + "x" + size.getHeight());
21}Відмінності:
- Ми використовуємо клас SvgMathRendererOptions замість PngMathRendererOptions.
- Ми не вказуємо роздільну здатність.
- Ми використовуємо клас SvgMathRenderer замість PngMathRenderer.
Ось результат:
Ви також можете переглянути безкоштовну веб-програму, створену на основі функції, реалізованої в Aspose.TeX для .NET API.
