Hiển thị các công thức và phương trình toán học LaTeX trong Java

Chúng tôi có thể nhúng các công thức và phương trình toán học vào tệp TeX. LaTeX sử dụng tệp TeX làm tài liệu nguồn chứa một tập hợp các lệnh. Các lệnh này chỉ định định dạng của tài liệu, bao gồm văn bản, ký hiệu, biểu thức toán học và đồ họa. Chúng tôi có thể viết và hiển thị bất kỳ loại phương trình và công thức toán học nào theo lập trình mà không cần sử dụng LaTeX. Trong bài này, chúng ta sẽ học cách hiển thị các công thức và phương trình toán học LaTeX trong Java.

Các chủ đề sau sẽ được đề cập trong bài viết này:

API Java để hiển thị các công thức và phương trình toán học LaTeX

Để hiển thị các công thức toán học LaTeX, chúng tôi sẽ sử dụng API Aspose.TeX for Java. Nó cung cấp lớp PngMathRendererOptions để chỉ định các tùy chọn kết xuất để lưu công thức Toán học dưới dạng PNG. Tương tự, nó cũng cung cấp lớp SvgMathRendererOptions để chỉ định các tùy chọn kết xuất để lưu công thức Toán học dưới dạng SVG. Hơn nữa, để hiển thị các công thức toán học, nó cung cấp các lớp PngMathRenderer và SvgMathRenderer bắt nguồn từ lớp MathRenderer. Phương thức render() của lớp này hiển thị công thức toán học đã cung cấp. Hơn nữa, API cũng cho phép sắp chữ các tệp TeX sang các định dạng tệp khác nhau như PDF, XPS hoặc hình ảnh.

Vui lòng tải xuống JAR của API hoặc thêm cấu hình pom.xml sau vào ứng dụng Java dựa trên Maven.

<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>

Hiển thị Công thức Toán học LaTeX dưới dạng PNG bằng Java

Chúng tôi có thể hiển thị các công thức hoặc phương trình toán học nội tuyến đơn giản bằng cách làm theo các bước dưới đây:

  1. Đầu tiên, tạo một thể hiện của lớp PngMathRendererOptions.
  2. Tiếp theo, chỉ định hình ảnh độ phân giải, chẳng hạn như 150 DPI.
  3. Sau đó, chỉ định phần mở đầu của tài liệu LaTeX.
  4. Tùy chọn, đặt các thuộc tính khác nhau như Scale, TextColor, BackgroundColor, v.v.
  5. Sau đó, tạo luồng đầu ra cho hình ảnh công thức.
  6. Cuối cùng, gọi phương thức render() để hiển thị công thức. Nó lấy chuỗi công thức, luồng, các tùy chọn kết xuất và kích thước hình ảnh đầu ra làm đối số.

Mẫu mã sau đây cho thấy cách hiển thị một công thức toán học dưới dạng PNG theo cách lập trình bằng Java.

// Ví dụ mã này trình bày cách hiển thị các công thức và phương trình toán học dưới dạng PNG
// Tạo các tùy chọn kết xuất PNG
PngMathRendererOptions options = new PngMathRendererOptions();

// Chỉ định độ phân giải hình ảnh 150 dpi
options.setResolution(150);

// Chỉ định phần mở đầu.
options.setPreamble("\\usepackage{amsmath}\n"
    + "\\usepackage{amsfonts}\n"
    + "\\usepackage{amssymb}\n"
    + "\\usepackage{color}");

// Chỉ định hệ số tỷ lệ 300%.
options.setScale(3000);

// Chỉ định màu nền trước.
options.setTextColor(Color.BLACK);

// Chỉ định màu nền.
options.setBackgroundColor(Color.WHITE);

// Chỉ định luồng đầu ra cho tệp nhật ký.
options.setLogStream(new ByteArrayOutputStream());

// Chỉ định có hiển thị đầu ra đầu cuối trên bảng điều khiển hay không.
options.showTerminal(true);

// Biến trong đó kích thước của hình ảnh kết quả sẽ được ghi.
com.aspose.tex.Size2D size = new com.aspose.tex.Size2D.Float();

// Tạo luồng đầu ra cho hình ảnh công thức.
final OutputStream stream = new FileOutputStream("D:\\Files\\Tex\\simple-formula.png");

// Kết xuất dưới dạng PNG
PngMathRenderer mathRenderer = new PngMathRenderer();
mathRenderer.render("This is a sample formula $f(x) = x^2$ example.", stream, options, size);

// Hiển thị các kết quả khác.
System.out.println(options.getErrorReport());
System.out.println();
System.out.println("Size: " + size.getWidth() + "x" + size.getHeight());
Hiển thị Công thức Toán học LaTeX dưới dạng PNG bằng Java.

Hiển thị Công thức Toán học LaTeX dưới dạng PNG bằng Java

Hiển thị các phương trình phức tạp bằng Java

Chúng tôi có thể hiển thị bất kỳ phương trình hoặc công thức phức tạp nào bằng cách làm theo các bước đã đề cập trước đó. Tuy nhiên, chúng ta chỉ cần đặt chuỗi công thức ở bước # 5 như hình dưới đây:

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);
Hiển thị các phương trình phức tạp bằng Java

Hiển thị các phương trình phức tạp bằng Java

Hiển thị các phương trình dài bằng Java

Chúng ta có thể hiển thị các phương trình dài trên nhiều dòng bằng cách làm theo các bước đã đề cập trước đó. Tuy nhiên, chúng ta chỉ cần đặt chuỗi công thức ở bước # 5 như hình dưới đây:

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); 
Hiển thị các phương trình dài bằng Java.

Hiển thị các phương trình dài bằng Java.

Căn chỉnh một số phương trình bằng Java

Chúng tôi cũng có thể căn chỉnh và hiển thị một số phương trình hoặc công thức cùng một lúc bằng cách làm theo các bước đã đề cập trước đó. Tuy nhiên, chúng ta chỉ cần đặt chuỗi công thức ở bước # 5 như hình dưới đây:

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);
Căn chỉnh một số phương trình bằng Java.

Căn chỉnh một số phương trình bằng Java.

Phương trình nhóm và trung tâm sử dụng Java

Chúng ta có thể nhóm và căn giữa nhiều phương trình trong khi hiển thị bằng cách làm theo các bước đã đề cập trước đó. Tuy nhiên, chúng ta chỉ cần đặt chuỗi công thức ở bước # 5 như hình dưới đây:

mathRenderer.render("\\begin{gather*}"
		+ "2x - 5y =  8 \\\\"
		+ "3x^2 + 9y =  3a + c\\\\"
		+ "(a-b) = a^2 + b^2 -2ab"
		+ "\\end{gather*}", stream, options, size);
Phương trình nhóm và trung tâm sử dụng Java.

Phương trình nhóm và trung tâm sử dụng Java.

Kết xuất dấu ngoặc đơn và dấu ngoặc đơn bằng Java

Chúng ta cũng có thể kết xuất dấu ngoặc đơn và dấu ngoặc đơn bằng cách làm theo các bước đã đề cập trước đó. Tuy nhiên, chúng ta chỉ cần đặt chuỗi công thức ở bước # 5 như hình dưới đây:

mathRenderer.render("\\begin{document}"
	     + "\["
	     + " \\left[  \\frac{ N } { \\left( \\frac{L}{p} \\right)  - (m+n) }  \\right]"
	     + "\]"
	     + "\\end{document}", stream, options, size);
Kết xuất Dấu ngoặc đơn và Dấu ngoặc bằng Java.

Kết xuất Dấu ngoặc đơn và Dấu ngoặc bằng Java.

Ma trận trong LaTeX sử dụng Java

Tương tự, chúng ta có thể kết xuất ma trận bằng cách làm theo các bước đã đề cập trước đó. Tuy nhiên, chúng ta chỉ cần đặt chuỗi công thức ở bước # 5 như hình dưới đây:

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);
Ma trận trong LaTeX sử dụng Java.

Ma trận trong LaTeX sử dụng Java.

Hiển thị phân số và nhị thức bằng Java

Chúng ta cũng có thể hiển thị phân số và nhị thức bằng cách làm theo các bước đã đề cập trước đó. Tuy nhiên, chúng ta chỉ cần đặt chuỗi công thức ở bước # 5 như hình dưới đây:

mathRenderer.render("\\begin{document}"
	            + "\["
	            + "\\binom{n}{k} = \\frac{n!}{k!(n-k)!}"
	            + "\]"
	            + "\\end{document}", stream, options, size);
Hiển thị phân số và nhị thức bằng Java.

Hiển thị phân số và nhị thức bằng Java.

Toán tử toán học trong LaTeX sử dụng Java

Các ký hiệu toán học đại diện cho các hàm toán học khác nhau như log, cos, sin, v.v. Chúng ta có thể hiển thị các hàm lượng giác và logarit trong LaTeX bằng cách làm theo các bước đã đề cập trước đó. Tuy nhiên, chúng ta chỉ cần đặt chuỗi công thức ở bước # 5 như hình dưới đây:

mathRenderer.render("\\begin{document}"
	            + "\["
	            + "\\sin(a + b) = \\sin a \\cos b + \\cos b \\sin a"
	            + "\]"
	            + "\\end{document}", stream, options, size);
Các toán tử toán học trong LaTeX sử dụng Java.

Các toán tử toán học trong LaTeX sử dụng Java.

Hiển thị Công thức Toán học LaTeX trong SVG bằng Java

Chúng tôi cũng có thể lưu các công thức hoặc phương trình toán học được hiển thị ở định dạng hình ảnh SVG bằng cách làm theo các bước được đưa ra bên dưới:

  1. Đầu tiên, tạo một thể hiện của lớp SvgMathRendererOptions.
  2. Tiếp theo, chỉ định phần mở đầu tài liệu LaTeX.
  3. Tùy chọn, đặt các thuộc tính khác nhau như Scale, TextColor, BackgroundColor, v.v.
  4. Sau đó, tạo luồng đầu ra cho hình ảnh công thức.
  5. Cuối cùng, gọi phương thức render() để hiển thị công thức. Nó lấy chuỗi công thức, luồng, các tùy chọn kết xuất và kích thước hình ảnh đầu ra làm đối số.

Mẫu mã sau đây cho thấy cách hiển thị một công thức toán học trong một hình ảnh SVG bằng cách sử dụng Java.

// Ví dụ mã này trình bày cách hiển thị các công thức và phương trình toán học dưới dạng SVG
// Tạo các tùy chọn kết xuất SVG
SvgMathRendererOptions options = new SvgMathRendererOptions();

// Chỉ định phần mở đầu.
options.setPreamble("\\usepackage{amsmath}\n"
    + "\\usepackage{amsfonts}\n"
    + "\\usepackage{amssymb}\n"
    + "\\usepackage{color}");

// Chỉ định hệ số tỷ lệ 300%.
options.setScale(3000);

// Chỉ định màu nền trước.
options.setTextColor(Color.BLACK);

// Chỉ định màu nền.
options.setBackgroundColor(Color.WHITE);

// Chỉ định luồng đầu ra cho tệp nhật ký.
options.setLogStream(new ByteArrayOutputStream());

// Chỉ định có hiển thị đầu ra đầu cuối trên bảng điều khiển hay không.
options.showTerminal(true);

// Biến trong đó kích thước của hình ảnh kết quả sẽ được ghi.
com.aspose.tex.Size2D size = new com.aspose.tex.Size2D.Float();

// Tạo luồng đầu ra cho hình ảnh công thức.
final OutputStream stream = new FileOutputStream("D:\\Files\\Tex\\simple-math-rendering.svg");

// Kết xuất dưới dạng 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);

// Hiển thị các kết quả khác.
System.out.println(options.getErrorReport());
System.out.println();
System.out.println("Size: " + size.getWidth() + "x" + size.getHeight());
Hiển thị Công thức Toán học LaTeX trong SVG bằng Java.

Hiển thị Công thức Toán học LaTeX trong SVG bằng Java.

Nhận giấy phép miễn phí

Bạn có thể nhận giấy phép tạm thời miễn phí để dùng thử thư viện mà không có giới hạn đánh giá.

Sự kết luận

Trong bài viết này, chúng tôi đã học cách:

  • hiển thị các công thức và phương trình toán học đơn giản và phức tạp trong Java;
  • sắp xếp và nhóm các phương trình theo chương trình;
  • hiển thị Ma trận, Dấu ngoặc đơn, Dấu ngoặc vuông, Phân số và Nhị thức;
  • lưu các hình ảnh công thức được hiển thị trong PNG hoặc SVG bằng Java.

Ngoài ra, bạn có thể tìm hiểu thêm về Aspose.TeX for Java API bằng cách sử dụng tài liệu. Trong trường hợp có bất kỳ sự mơ hồ nào, vui lòng liên hệ với chúng tôi trên diễn đàn.

Xem thêm