在 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 渲染圓括號和方括號。

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);
使用 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。

此外,您可以使用 文檔 了解更多關於 Aspose.TeX for Java API 的信息。如有任何歧義,請隨時在論壇上與我們聯繫。

也可以看看