我们可以在 TeX 文件中嵌入公式和数学方程。 LaTeX 使用 TeX 文件作为包含一组命令的源文档。这些命令指定文档的格式,包括文本、符号、数学表达式和图形。我们可以在不使用 LaTeX 的情况下以编程方式编写和渲染任何类型的方程和数学公式。在本文中,将学习如何在 Java 中渲染 LaTeX 数学公式和方程式。
本文将涵盖以下主题:
- 用于渲染 LaTeX 数学公式和方程式的 Java API
- 将 LaTeX 数学公式渲染为 PNG
- 渲染复杂方程
- 显示长方程
- 对齐几个方程
- 群和中心方程
- 渲染括号和括号
- LaTeX 中的矩阵
- 渲染分数和二项式
- LaTeX 中的数学运算符
- 将 LaTeX 数学公式渲染为 SVG
用于渲染 LaTeX 数学公式和方程式的 Java API
为了渲染 LaTeX 数学公式,我们将使用 Aspose.TeX for Java API。它提供了 PngMathRendererOptions 类,用于指定渲染选项以将数学公式保存为 PNG。同样,它还提供了 SvgMathRendererOptions 类,用于指定渲染选项以将 Math 公式保存为 SVG。此外,对于数学公式的渲染,它提供了从 MathRenderer 类派生的 PngMathRenderer 和 SvgMathRenderer 类。此类的 render() 方法呈现提供的数学公式。此外,API 还允许将 TeX 文件排版为不同的文件格式,如 PDF、XPS 或图像。
请下载 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
我们可以按照以下步骤呈现简单的内联数学公式或方程式:
- 首先,创建一个 PngMathRendererOptions 类的实例。
- 接下来,指定图像分辨率,例如150 DPI。
- 然后,指定 LaTeX 文档序言。
- (可选)设置各种属性,例如 Scale、TextColor、BackgroundColor 等。
- 之后,为公式图像创建输出流。
- 最后调用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 渲染复杂方程
我们可以按照前面提到的步骤来渲染任何复杂的方程或公式。但是,我们只需要在步骤#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 显示长方程
我们可以按照前面提到的步骤在多行上显示长方程。但是,我们只需要在步骤#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 对齐几个方程
我们还可以按照前面提到的步骤一次对齐和渲染多个方程或公式。但是,我们只需要在步骤#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 对方程组和中心方程
我们可以按照前面提到的步骤在渲染时对多个方程进行分组和居中。但是,我们只需要在步骤#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 渲染括号和括号
我们也可以按照前面提到的步骤来渲染括号和方括号。但是,我们只需要在步骤#5中设置公式字符串,如下所示:
mathRenderer.render("\\begin{document}"
+ "\["
+ " \\left[ \\frac{ N } { \\left( \\frac{L}{p} \\right) - (m+n) } \\right]"
+ "\]"
+ "\\end{document}", stream, options, size);
使用 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 渲染分数和二项式
我们也可以按照前面提到的步骤渲染分数和二项式。但是,我们只需要在步骤#5中设置公式字符串,如下所示:
mathRenderer.render("\\begin{document}"
+ "\["
+ "\\binom{n}{k} = \\frac{n!}{k!(n-k)!}"
+ "\]"
+ "\\end{document}", stream, options, size);
使用 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 在 SVG 中渲染 LaTeX 数学公式
我们还可以按照以下步骤将渲染的数学公式或方程式保存为 SVG 图像格式:
- 首先,创建一个 SvgMathRendererOptions 类的实例。
- 接下来,指定 LaTeX 文档序言。
- (可选)设置各种属性,例如 Scale、TextColor、BackgroundColor 等。
- 之后,为公式图像创建输出流。
- 最后调用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 渲染简单和复杂的数学公式和方程式;
- 以编程方式对齐和分组方程;
- 渲染矩阵、括号、括号、分数和二项式;
- 使用 Java 将渲染的公式图像保存为 PNG 或 SVG。
此外,您可以使用 documentation 了解有关 Aspose.TeX for Java API 的更多信息。如有任何歧义,请随时在 论坛 上与我们联系。