Відтворення математичних формул 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 у PNG

Це найзагальніший варіант використання відтворення математичної формули 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}

Відмінності:

Ось результат:

Відтворення математичної формули LaTeX у SVG

Ви також можете переглянути безкоштовну веб-програму, створену на основі функції, реалізованої в Aspose.TeX для .NET API.