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数学公式 渲染的最通用使用场景。
您也可以查看基于 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}区别如下:
- 我们使用 SvgMathRendererOptions 类,而不是 PngMathRendererOptions。
- 我们不指定分辨率。
- 我们使用 SvgMathRenderer 类,而不是 PngMathRenderer。
以下是结果:
您也可以查看基于 Aspose.TeX for .NET API 实现的免费 Web 应用。
