LaTeX数学公式渲染 | Aspose.TeX for Java

如何将 LaTeX 数学公式渲染为 PNG

事实上,演示 LaTeX数学公式 渲染功能的最简单方法是从示例开始。如下所示:

将 outputFile 设置为现有文件夹中的 java.nio.file.Path,例如 PNG 使用 Paths.get(outputDirectory, "math-formula.png"),SVG 使用 Paths.get(outputDirectory, "math-formula.svg")。导入使用的 Aspose.TeX 渲染器、选项和 Size2D 类,以及 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() 设置的颜色。

示例通过 setLogStream() 将渲染日志写入 ByteArrayOutputStream。日志和图像输出流在渲染后自动关闭。

showTerminal() 控制是否将终端输出写入控制台。示例设置为 false;设置为 true 即可显示输出。

MathRenderer.render() 在 PngMathRenderer 或 SvgMathRenderer 实例上调用,并以 Size2D 返回以点为单位的公式尺寸。

方法的第二个参数是图像输出流。示例在 try-with-resources 块中打开它,并在渲染后关闭。

最后在渲染器实例上调用 render():第一个参数是 LaTeX 公式,第二个参数是图像输出流,第三个参数是渲染选项。

示例的最后几行打印了两个渲染产物——公式的大小以及简要的错误报告(如果有错误的话)。

以下是渲染结果。

LaTeX Figure rendering to PNG

这是 LaTeX数学公式 渲染的最通用使用场景。

您也可以查看基于 Aspose.TeX for .NET API 实现的免费 Web 应用。 这里 是 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 Math Formula rendering to SVG

您也可以查看基于 Aspose.TeX for .NET API 实现的免费 Web 应用。