我們可以在 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);
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 渲染分數和二項式
我們也可以按照前面提到的步驟渲染分數和二項式。但是,我們只需要在步驟 # 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。
此外,您可以使用 文檔 了解更多關於 Aspose.TeX for Java API 的信息。如有任何歧義,請隨時在論壇上與我們聯繫。