Рендеринг математических формул и уравнений LaTeX в Java

Мы можем вставлять формулы и математические уравнения в файл TeX. LaTeX использует файл TeX как исходный документ, содержащий набор команд. Эти команды задают формат документа, включая текст, символы, математические выражения и графику. Мы можем программно писать и отображать любые уравнения и математические формулы без использования LaTeX. В этой статье вы узнаете, как отображать математические формулы и уравнения LaTeX в Java.

В этой статье должны быть раскрыты следующие темы:

Java API для рендеринга математических формул и уравнений LaTeX

Для рендеринга математических формул LaTeX мы будем использовать API Aspose.TeX for Java. Он предоставляет класс PngMathRendererOptions для указания параметров рендеринга для сохранения математической формулы в формате PNG. Точно так же он также предоставляет класс SvgMathRendererOptions для указания параметров рендеринга для сохранения математической формулы в виде SVG. Более того, для рендеринга математических формул он предоставляет классы PngMathRenderer и SvgMathRenderer, производные от класса MathRenderer. Метод render() этого класса отображает предоставленную математическую формулу. Кроме того, API также позволяет набирать файлы TeX в различные форматы файлов, такие как PDF, XPS или изображения.

Пожалуйста, либо скачайте JAR API, либо добавьте следующую конфигурацию pom.xml в приложение Java на основе Maven.

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-tex</artifactId>
    <version>22.4</version>
    <type>jar</type>
</dependency>

Рендеринг математических формул LaTeX в формате PNG с использованием Java

Мы можем визуализировать простые встроенные математические формулы или уравнения, выполнив следующие шаги:

  1. Во-первых, создайте экземпляр класса PngMathRendererOptions.
  2. Далее укажите изображение разрешение, например 150 DPI.
  3. Затем укажите преамбулу документа LaTeX.
  4. При желании установите различные свойства, такие как Scale, TextColor, BackgroundColor и т. д.
  5. После этого создайте поток вывода для изображения формулы.
  6. Наконец, вызовите метод render() для отображения формулы. В качестве аргументов он принимает строку формулы, поток, параметры рендеринга и размер выходного изображения.

В следующем примере кода показано, как программно отобразить математическую формулу в формате PNG с помощью Java.

// В этом примере кода показано, как отображать математические формулы и уравнения в формате PNG.
// Создание параметров рендеринга PNG
PngMathRendererOptions options = new PngMathRendererOptions();

// Укажите разрешение изображения 150 dpi
options.setResolution(150);

// Уточните преамбулу.
options.setPreamble("\\usepackage{amsmath}\n"
    + "\\usepackage{amsfonts}\n"
    + "\\usepackage{amssymb}\n"
    + "\\usepackage{color}");

// Укажите коэффициент масштабирования 300%.
options.setScale(3000);

// Укажите цвет переднего плана.
options.setTextColor(Color.BLACK);

// Укажите цвет фона.
options.setBackgroundColor(Color.WHITE);

// Укажите выходной поток для файла журнала.
options.setLogStream(new ByteArrayOutputStream());

// Укажите, показывать ли вывод терминала на консоли или нет.
options.showTerminal(true);

// Переменная, в которую будут записаны размеры результирующего изображения.
com.aspose.tex.Size2D size = new com.aspose.tex.Size2D.Float();

// Создайте выходной поток для изображения формулы.
final OutputStream stream = new FileOutputStream("D:\\Files\\Tex\\simple-formula.png");

// Рендеринг как PNG
PngMathRenderer mathRenderer = new PngMathRenderer();
mathRenderer.render("This is a sample formula $f(x) = x^2$ example.", stream, options, size);

// Показать другие результаты.
System.out.println(options.getErrorReport());
System.out.println();
System.out.println("Size: " + size.getWidth() + "x" + size.getHeight());
Рендеринг математических формул LaTeX в формате PNG с использованием Java.

Рендеринг математических формул LaTeX в формате PNG с использованием Java

Рендеринг сложных уравнений с использованием Java

Мы можем визуализировать любые сложные уравнения или формулы, выполнив шаги, упомянутые ранее. Однако нам просто нужно установить строку формулы на шаге № 5, как показано ниже:

mathRenderer.render("\\begin{equation*}"
		+ "(1+x)^n = 1 + nx + \\frac{n(n-1)}{2!}x^{\\color{red}2}"
		+ "+ \\frac{n(n-1)(n-2)}{3!}x^{\\color{red}3}"
                + "+ \\frac{n(n-1)(n-2)(n-3)}{4!}x^{\\color{red}4}" 
                + "+ \\cdots"
                + "\\end{equation*}", stream, options, size);
Рендеринг сложных уравнений с использованием Java

Рендеринг сложных уравнений с использованием Java

Отображение длинных уравнений с использованием Java

Мы можем отобразить длинные уравнения на нескольких строках, выполнив шаги, упомянутые ранее. Однако нам просто нужно установить строку формулы на шаге № 5, как показано ниже:

mathRenderer.render("\\begin{multline*}"
		+ "p(x) = 3x^6 + 14x^5y + 590x^4y^2 + 19x^3y^3\\\\"
		+ "- 12x^2y^4 - 12xy^5 + 2y^6 - a^3b^3"
		+ "\\end{multline*}", stream, options, size); 
Отображение длинных уравнений с помощью Java.

Отображение длинных уравнений с помощью Java.

Выровняйте несколько уравнений с помощью Java

Мы также можем выровнять и визуализировать несколько уравнений или формул одновременно, выполнив шаги, упомянутые ранее. Однако нам просто нужно установить строку формулы на шаге № 5, как показано ниже:

mathRenderer.render("\\begin{align}"
		+ "f(u) & =\\sum_{j=1}^{n} x_jf(u_j)\\\\"
		+ "& =\\sum_{j=1}^{n} x_j \\sum_{i=1}^{m} a_{ij}v_i\\\\"
		+ "& =\\sum_{j=1}^{n} \\sum_{i=1}^{m} a_{ij}x_jv_i"
		+ "\\end{align}", stream, options, size);
Выровняйте несколько уравнений с помощью Java.

Выровняйте несколько уравнений с помощью Java.

Групповые и центральные уравнения с использованием Java

Мы можем сгруппировать и центрировать несколько уравнений во время рендеринга, выполнив шаги, упомянутые ранее. Однако нам просто нужно установить строку формулы на шаге № 5, как показано ниже:

mathRenderer.render("\\begin{gather*}"
		+ "2x - 5y =  8 \\\\"
		+ "3x^2 + 9y =  3a + c\\\\"
		+ "(a-b) = a^2 + b^2 -2ab"
		+ "\\end{gather*}", stream, options, size);
Групповые и центральные уравнения с использованием Java.

Групповые и центральные уравнения с использованием Java.

Визуализация скобок и скобок с использованием Java

Мы также можем визуализировать круглые скобки и квадратные скобки, выполнив шаги, упомянутые ранее. Однако нам просто нужно установить строку формулы на шаге № 5, как показано ниже:

mathRenderer.render("\\begin{document}"
	     + "\["
	     + " \\left[  \\frac{ N } { \\left( \\frac{L}{p} \\right)  - (m+n) }  \\right]"
	     + "\]"
	     + "\\end{document}", stream, options, size);
Отображение скобок и квадратных скобок с использованием Java.

Отображение скобок и квадратных скобок с использованием Java.

Матрицы в LaTeX с использованием Java

Точно так же мы можем визуализировать матрицы, выполнив шаги, упомянутые ранее. Однако нам просто нужно установить строку формулы на шаге № 5, как показано ниже:

mathRenderer.render("\\begin{document}"
	            + "\["
	            + "\\left \\{"
	            + "\\begin{tabular}{ccc}"
	            + "  1 & 4 & 7 \\\\"
	            + "  2 & 5 & 8 \\\\"
	            + "  3 & 6 & 9 "
	            + "\\end{tabular}"
	            + "\\right \\}"
	            + "\]"
	            + "\\end{document}", stream, options, size);
Матрицы в LaTeX с использованием Java.

Матрицы в LaTeX с использованием Java.

Рендеринг дробей и биномов с использованием Java

Мы также можем отображать дроби и двучлены, следуя шагам, упомянутым ранее. Однако нам просто нужно установить строку формулы на шаге № 5, как показано ниже:

mathRenderer.render("\\begin{document}"
	            + "\["
	            + "\\binom{n}{k} = \\frac{n!}{k!(n-k)!}"
	            + "\]"
	            + "\\end{document}", stream, options, size);
Рендеринг дробей и биномов с использованием Java.

Рендеринг дробей и биномов с использованием Java.

Математические операторы в LaTeX с использованием Java

Символы математических операторов представляют различные математические функции, такие как log, cos, sin и т. д. Мы можем отображать тригонометрические функции и логарифмы в LaTeX, следуя шагам, упомянутым ранее. Однако нам просто нужно установить строку формулы на шаге № 5, как показано ниже:

mathRenderer.render("\\begin{document}"
	            + "\["
	            + "\\sin(a + b) = \\sin a \\cos b + \\cos b \\sin a"
	            + "\]"
	            + "\\end{document}", stream, options, size);
Математические операторы в LaTeX с использованием Java.

Математические операторы в LaTeX с использованием Java.

Рендеринг математических формул LaTeX в SVG с использованием Java

Мы также можем сохранить визуализированные математические формулы или уравнения в формате изображения SVG, выполнив следующие шаги:

  1. Во-первых, создайте экземпляр класса SvgMathRendererOptions.
  2. Затем укажите преамбулу документа LaTeX.
  3. При желании установите различные свойства, такие как Scale, TextColor, BackgroundColor и т. д.
  4. После этого создайте поток вывода для изображения формулы.
  5. Наконец, вызовите метод render() для отображения формулы. В качестве аргументов он принимает строку формулы, поток, параметры рендеринга и размер выходного изображения.

В следующем примере кода показано, как отобразить математическую формулу в изображении SVG с помощью Java.

// В этом примере кода показано, как отображать математические формулы и уравнения в формате SVG.
// Создайте параметры рендеринга SVG
SvgMathRendererOptions options = new SvgMathRendererOptions();

// Уточните преамбулу.
options.setPreamble("\\usepackage{amsmath}\n"
    + "\\usepackage{amsfonts}\n"
    + "\\usepackage{amssymb}\n"
    + "\\usepackage{color}");

// Укажите коэффициент масштабирования 300%.
options.setScale(3000);

// Укажите цвет переднего плана.
options.setTextColor(Color.BLACK);

// Укажите цвет фона.
options.setBackgroundColor(Color.WHITE);

// Укажите выходной поток для файла журнала.
options.setLogStream(new ByteArrayOutputStream());

// Укажите, показывать ли вывод терминала на консоли или нет.
options.showTerminal(true);

// Переменная, в которую будут записаны размеры результирующего изображения.
com.aspose.tex.Size2D size = new com.aspose.tex.Size2D.Float();

// Создайте выходной поток для изображения формулы.
final OutputStream stream = new FileOutputStream("D:\\Files\\Tex\\simple-math-rendering.svg");

// Отобразить как SVG
SvgMathRenderer mathRenderer = new SvgMathRenderer();
mathRenderer.render("\\begin{equation} \\label{eqn}"
    + "	E = {mc^2}"
    + "	\\end{equation}"
    + " The equation states mass equivalence relationship.", stream, options, size);

// Показать другие результаты.
System.out.println(options.getErrorReport());
System.out.println();
System.out.println("Size: " + size.getWidth() + "x" + size.getHeight());
Рендеринг математических формул LaTeX в SVG с использованием Java.

Рендеринг математических формул LaTeX в SVG с использованием Java.

Получить бесплатную лицензию

Вы можете получить бесплатную временную лицензию, чтобы попробовать библиотеку без ограничений пробной версии.

Вывод

В этой статье мы узнали, как:

  • отображать простые и сложные математические формулы и уравнения в Java;
  • программно выравнивать и группировать уравнения;
  • отображать матрицы, круглые скобки, скобки, дроби и двучлены;
  • сохраните визуализированные изображения формул в формате PNG или SVG с помощью Java.

Кроме того, вы можете узнать больше об Aspose.TeX for Java API, используя документацию. В случае возникновения каких-либо неясностей, пожалуйста, свяжитесь с нами на форуме.

Смотрите также