在 Java 中渲染 LaTeX 数学公式和方程式

我们可以在 TeX 文件中嵌入公式和数学方程。 LaTeX 使用 TeX 文件作为包含一组命令的源文档。这些命令指定文档的格式,包括文本、符号、数学表达式和图形。我们可以在不使用 LaTeX 的情况下以编程方式编写和渲染任何类型的方程和数学公式。在本文中,将学习如何在 Java 中渲染 LaTeX 数学公式和方程式。

本文将涵盖以下主题:

用于渲染 LaTeX 数学公式和方程式的 Java API

为了渲染 LaTeX 数学公式,我们将使用 Aspose.TeX for Java API。它提供了 PngMathRendererOptions 类,用于指定渲染选项以将数学公式保存为 PNG。同样,它还提供了 SvgMathRendererOptions 类,用于指定渲染选项以将 Math 公式保存为 SVG。此外,对于数学公式的渲染,它提供了从 MathRenderer 类派生的 PngMathRenderer 和 SvgMathRenderer 类。此类的 render() 方法呈现提供的数学公式。此外,API 还允许将 TeX 文件排版为不同的文件格式,如 PDFXPS 或图像。

下载 API 的 JAR 或在基于 Maven 的 Java 应用程序中添加以下 pom.xml 配置。

<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>

使用 Java 将 LaTeX 数学公式渲染为 PNG

我们可以按照以下步骤呈现简单的内联数学公式或方程式:

  1. 首先,创建一个 PngMathRendererOptions 类的实例。
  2. 接下来,指定图像分辨率,例如150 DPI。
  3. 然后,指定 LaTeX 文档序言。
  4. (可选)设置各种属性,例如 Scale、TextColor、BackgroundColor 等。
  5. 之后,为公式图像创建输出流。
  6. 最后调用render()方法渲染公式。它将公式字符串、流、渲染选项和输出图像大小作为参数。

以下代码示例展示了如何使用 Java 以编程方式将数学公式呈现为 PNG。

// 此代码示例演示如何将数学公式和方程呈现为 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());
使用 Java 将 LaTeX 数学公式渲染为 PNG。

使用 Java 将 LaTeX 数学公式渲染为 PNG

使用 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 渲染括号和括号。

使用 Java 的 LaTeX 中的矩阵

同样,我们可以按照前面提到的步骤来渲染矩阵。但是,我们只需要在步骤#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);
使用 Java 的 LaTeX 中的矩阵。

使用 Java 的 LaTeX 中的矩阵。

使用 Java 渲染分数和二项式

我们也可以按照前面提到的步骤渲染分数和二项式。但是,我们只需要在步骤#5中设置公式字符串,如下所示:

mathRenderer.render("\\begin{document}"
	            + "\["
	            + "\\binom{n}{k} = \\frac{n!}{k!(n-k)!}"
	            + "\]"
	            + "\\end{document}", stream, options, size);
使用 Java 渲染分数和二项式。

使用 Java 渲染分数和二项式。

使用 Java 的 LaTeX 中的数学运算符

数学运算符符号代表各种数学函数,例如 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);
使用 Java 的 LaTeX 中的数学运算符。

使用 Java 的 LaTeX 中的数学运算符。

使用 Java 在 SVG 中渲染 LaTeX 数学公式

我们还可以按照以下步骤将渲染的数学公式或方程式保存为 SVG 图像格式:

  1. 首先,创建一个 SvgMathRendererOptions 类的实例。
  2. 接下来,指定 LaTeX 文档序言。
  3. (可选)设置各种属性,例如 Scale、TextColor、BackgroundColor 等。
  4. 之后,为公式图像创建输出流。
  5. 最后调用render()方法渲染公式。它将公式字符串、流、渲染选项和输出图像大小作为参数。

以下代码示例展示了如何使用 Java 在 SVG 图像中呈现数学公式。

// 此代码示例演示如何将数学公式和方程式呈现为 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());
使用 Java 在 SVG 中渲染 LaTeX 数学公式。

使用 Java 在 SVG 中渲染 LaTeX 数学公式。

获得免费许可证

您可以获得免费的临时许可证 试用该库而不受评估限制。

结论

在本文中,我们学习了如何:

  • 用 Java 渲染简单和复杂的数学公式和方程式;
  • 以编程方式对齐和分组方程;
  • 渲染矩阵、括号、括号、分数和二项式;
  • 使用 Java 将渲染的公式图像保存为 PNG 或 SVG。

此外,您可以使用 documentation 了解有关 Aspose.TeX for Java API 的更多信息。如有任何歧义,请随时在 论坛 上与我们联系。

也可以看看