แสดงผลสูตรคณิตศาสตร์และสมการ LaTeX ใน Java

เราสามารถฝังสูตรและสมการทางคณิตศาสตร์ในไฟล์ TeX LaTeX ใช้ไฟล์ TeX เป็นเอกสารต้นทางที่มีชุดคำสั่ง คำสั่งเหล่านี้ระบุรูปแบบของเอกสาร รวมถึงข้อความ สัญลักษณ์ นิพจน์ทางคณิตศาสตร์ และกราฟิก เราสามารถเขียนและแสดงผลสมการและสูตรทางคณิตศาสตร์ประเภทใดก็ได้โดยทางโปรแกรมโดยไม่ต้องใช้ LaTeX ในบทความนี้จะได้เรียนรู้วิธีการเรนเดอร์สูตรและสมการคณิตศาสตร์ LaTeX ในภาษาจาวา

หัวข้อต่อไปนี้จะครอบคลุมในบทความนี้:

Java API เพื่อแสดงสูตรและสมการทางคณิตศาสตร์ของ LaTeX

สำหรับการแสดงสูตรคณิตศาสตร์ LaTeX เราจะใช้ API Aspose.TeX for Java มีคลาส PngMathRendererOptions สำหรับระบุตัวเลือกการแสดงผลเพื่อบันทึกสูตรคณิตศาสตร์เป็น PNG ในทำนองเดียวกัน ยังมีคลาส SvgMathRendererOptions สำหรับการระบุตัวเลือกการแสดงผลเพื่อบันทึกสูตรคณิตศาสตร์เป็น SVG ยิ่งไปกว่านั้น สำหรับการเรนเดอร์สูตรทางคณิตศาสตร์ จะมีคลาส PngMathRenderer และ SvgMathRenderer ที่ได้มาจากคลาส MathRenderer เมธอด render() ของคลาสนี้แสดงสูตรทางคณิตศาสตร์ที่ให้มา นอกจากนี้ API ยังอนุญาตให้เรียงไฟล์ TeX เป็นรูปแบบไฟล์ต่างๆ เช่น PDF, XPS หรือรูปภาพ

โปรด ดาวน์โหลด JAR ของ API หรือเพิ่มการกำหนดค่า pom.xml ต่อไปนี้ในแอปพลิเคชัน Java ที่ใช้ 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>

แสดงผลสูตรคณิตศาสตร์ LaTeX เป็น PNG โดยใช้ Java

เราสามารถแสดงสูตรหรือสมการทางคณิตศาสตร์แบบอินไลน์อย่างง่ายโดยทำตามขั้นตอนด้านล่าง:

  1. ขั้นแรก สร้างอินสแตนซ์ของคลาส PngMathRendererOptions
  2. จากนั้น ระบุภาพ ความละเอียด เช่น 150 DPI
  3. จากนั้นระบุคำนำหน้าเอกสาร LaTeX
  4. เลือกตั้งค่าคุณสมบัติต่างๆ เช่น Scale, TextColor, BackgroundColor เป็นต้น
  5. หลังจากนั้น ให้สร้างเอาต์พุตสตรีมสำหรับอิมเมจสูตร
  6. สุดท้าย เรียกใช้เมธอด render() เพื่อแสดงสูตร ใช้สตริงสูตร สตรีม ตัวเลือกการแสดงผล และขนาดภาพที่ส่งออกเป็นอาร์กิวเมนต์

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีแสดงสูตรทางคณิตศาสตร์เป็น PNG โดยทางโปรแกรมโดยใช้ Java

// ตัวอย่างโค้ดนี้สาธิตวิธีแสดงสูตรและสมการทางคณิตศาสตร์เป็น 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());
แสดงผลสูตรคณิตศาสตร์ LaTeX เป็น PNG โดยใช้ Java

แสดงผลสูตรคณิตศาสตร์ LaTeX เป็น PNG โดยใช้ Java

แสดงสมการที่ซับซ้อนโดยใช้ 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);
เมทริกซ์ใน LaTeX โดยใช้ Java

เมทริกซ์ใน LaTeX โดยใช้ Java

แสดงเศษส่วนและทวินามโดยใช้ Java

เราสามารถแสดงเศษส่วนและทวินามได้เช่นกันโดยทำตามขั้นตอนที่กล่าวถึงก่อนหน้านี้ อย่างไรก็ตาม เราต้องตั้งค่าสตริงสูตรในขั้นตอนที่ # 5 ดังที่แสดงด้านล่าง:

mathRenderer.render("\\begin{document}"
	            + "\["
	            + "\\binom{n}{k} = \\frac{n!}{k!(n-k)!}"
	            + "\]"
	            + "\\end{document}", stream, options, size);
แสดงเศษส่วนและทวินามโดยใช้ Java

แสดงเศษส่วนและทวินามโดยใช้ Java

ตัวดำเนินการทางคณิตศาสตร์ใน LaTeX โดยใช้ Java

สัญลักษณ์ตัวดำเนินการทางคณิตศาสตร์แสดงถึงฟังก์ชันทางคณิตศาสตร์ต่างๆ เช่น 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);
ตัวดำเนินการทางคณิตศาสตร์ใน LaTeX โดยใช้ Java

ตัวดำเนินการทางคณิตศาสตร์ใน LaTeX โดยใช้ Java

แสดงผลสูตรคณิตศาสตร์ LaTeX ใน SVG โดยใช้ Java

เรายังสามารถบันทึกสูตรหรือสมการทางคณิตศาสตร์ที่แสดงในรูปแบบภาพ SVG ได้โดยทำตามขั้นตอนด้านล่าง:

  1. ขั้นแรก สร้างอินสแตนซ์ของคลาส SvgMathRendererOptions
  2. ถัดไป ระบุคำนำหน้าเอกสาร LaTeX
  3. เลือกตั้งค่าคุณสมบัติต่างๆ เช่น Scale, TextColor, BackgroundColor เป็นต้น
  4. หลังจากนั้น ให้สร้างเอาต์พุตสตรีมสำหรับอิมเมจสูตร
  5. สุดท้าย เรียกใช้เมธอด render() เพื่อแสดงสูตร ใช้สตริงสูตร สตรีม ตัวเลือกการแสดงผล และขนาดภาพที่ส่งออกเป็นอาร์กิวเมนต์

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการแสดงสูตรทางคณิตศาสตร์ในรูปภาพ SVG โดยใช้ Java

// ตัวอย่างโค้ดนี้สาธิตวิธีแสดงสูตรและสมการทางคณิตศาสตร์ในรูปแบบ 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());
แสดงผลสูตรคณิตศาสตร์ LaTeX ใน SVG โดยใช้ Java

แสดงผลสูตรคณิตศาสตร์ LaTeX ใน SVG โดยใช้ Java

รับใบอนุญาตฟรี

คุณสามารถ รับใบอนุญาตชั่วคราวได้ฟรี เพื่อทดลองใช้ห้องสมุดโดยไม่มีข้อจำกัดในการประเมิน

บทสรุป

ในบทความนี้ เราได้เรียนรู้วิธีการ:

  • แสดงสูตรและสมการทางคณิตศาสตร์ที่ง่ายและซับซ้อนใน Java;
  • จัดตำแหน่งและจัดกลุ่มสมการโดยทางโปรแกรม
  • แสดงเมทริกซ์ วงเล็บ วงเล็บ เศษส่วน และทวินาม
  • บันทึกภาพสูตรที่แสดงผลใน PNG หรือ SVG โดยใช้ Java

นอกจากนี้ คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ Aspose.TeX for Java API โดยใช้ เอกสารประกอบ ในกรณีที่มีความคลุมเครือ โปรดติดต่อเราได้ที่ ฟอรัม

ดูสิ่งนี้ด้วย