Xuất công thức toán học từ bản trình bày trên Android
Giới thiệu
Aspose.Slides for Android thông qua Java cho phép bạn xuất các công thức toán học từ bản trình bày. Ví dụ, bạn có thể cần trích xuất các công thức toán học trên các slide (từ một bản trình bày cụ thể) và sử dụng chúng trong một chương trình hoặc nền tảng khác.
Xuất công thức toán học sang LaTeX
Aspose.Slides có thể chuyển đổi một công thức toán học PowerPoint trực tiếp sang LaTeX; không cần tệp MathML trung gian hay bộ chuyển đổi bên ngoài. Một công thức toán học được lưu trong một khung văn bản dưới dạng một IMathPortion. Sử dụng IMathPortion.getMathParagraph để lấy một IMathParagraph, sau đó gọi IMathParagraph.toLatex. Phương thức này trả về một chuỗi mà bạn có thể lưu, hiển thị, gửi tới ứng dụng khác, hoặc tiếp tục xử lý.
Ví dụ sau sẽ kiểm tra mọi khung văn bản trên từng slide, tìm tất cả các phần toán học, và ghi mỗi công thức vào một tệp .tex riêng:
Presentation presentation = new Presentation("equations.pptx");
try {
int slideCount = presentation.getSlides().size();
for (int slideIndex = 0; slideIndex < slideCount; slideIndex++) {
ISlide slide = presentation.getSlides().get_Item(slideIndex);
int slideNumber = slideIndex + 1;
int equationNumber = 1;
ITextFrame[] textFrames = SlideUtil.getAllTextBoxes(slide);
for (ITextFrame textFrame : textFrames) {
for (IParagraph paragraph : textFrame.getParagraphs()) {
for (IPortion portion : paragraph.getPortions()) {
if (!(portion instanceof IMathPortion))
continue;
IMathPortion mathPortion = (IMathPortion) portion;
IMathParagraph mathParagraph = mathPortion.getMathParagraph();
String latexFileName = "slide_" + slideNumber + "_equation_" + equationNumber + ".tex";
String latexText = mathParagraph.toLatex();
File latexFile = new File(latexFileName);
byte[] latexBytes = latexText.getBytes(StandardCharsets.UTF_8);
FileOutputStream outputStream = new FileOutputStream(latexFile);
try {
outputStream.write(latexBytes);
} finally {
outputStream.close();
}
equationNumber++;
}
}
}
}
} finally {
presentation.dispose();
}
SlideUtil.getAllTextBoxes trả về tất cả các khung văn bản được tìm thấy trên một slide. Kiểm tra kiểu IMathPortion tách biệt các công thức có thể chỉnh sửa thực sự khỏi văn bản và hình ảnh thông thường.
Các bộ máy LaTeX và mẫu tài liệu không phải đều hỗ trợ cùng một lệnh, gói hoặc ký tự Unicode. Hãy kiểm tra chuỗi trả về bằng bộ máy LaTeX mà ứng dụng của bạn sử dụng. Nếu một ký hiệu hoặc phần tử Office Math không có biểu diễn thích hợp trong môi trường đó, hãy thay thế nó trong chuỗi trả về bằng lệnh đặc thù cho dự án hoặc bỏ qua công thức và ghi lại vấn đề để xem xét.
Lưu công thức toán học dưới dạng MathML
Trong khi con người có thể dễ dàng viết mã cho một số định dạng công thức như LaTeX, họ gặp khó khăn khi viết mã cho MathML vì định dạng này được thiết kế để được tạo tự động bởi các ứng dụng. Các chương trình có thể đọc và phân tích MathML dễ dàng vì mã của nó ở dạng XML, do đó MathML thường được sử dụng làm định dạng đầu ra và in ấn trong nhiều lĩnh vực.
Đoạn mã mẫu này cho bạn thấy cách xuất một công thức toán học từ bản trình bày sang MathML:
Presentation pres = new Presentation();
try {
IAutoShape autoShape = pres.getSlides().get_Item(0).getShapes().addMathShape(0, 0, 500, 50);
IMathParagraph mathParagraph = ((MathPortion)autoShape.getTextFrame().getParagraphs().get_Item(0).
getPortions().get_Item(0)).getMathParagraph();
mathParagraph.add(new MathematicalText("a").
setSuperscript("2").
join("+").
join(new MathematicalText("b").setSuperscript("2")).
join("=").
join(new MathematicalText("c").setSuperscript("2")));
FileOutputStream stream = new FileOutputStream("mathml.xml");
mathParagraph.writeAsMathMl(stream);
} catch (IOException e) {
} finally {
if (pres != null) pres.dispose();
}
Câu hỏi thường gặp
Chính xác thì gì được xuất sang MathML—một đoạn hay một khối công thức riêng lẻ?
Bạn có thể xuất toàn bộ đoạn toán học (MathParagraph) hoặc một khối riêng lẻ (MathBlock) sang MathML. Cả hai loại đều cung cấp phương thức để ghi ra MathML.
Làm sao tôi biết một đối tượng trên slide là công thức toán học chứ không phải văn bản thông thường hay hình ảnh?
Một công thức nằm trong một MathPortion và có một MathParagraph. Các hình ảnh và phần văn bản thông thường không có MathParagraph không phải là công thức có thể xuất được.
MathML trong bản trình bày xuất phát từ đâu—có phải là đặc thù PowerPoint hay là một tiêu chuẩn?
Quá trình xuất hướng tới MathML tiêu chuẩn (XML). Aspose sử dụng Presentation MathML—phần trình bày của tiêu chuẩn—được sử dụng rộng rãi trong các ứng dụng và trên web.
Việc xuất công thức trong bảng, SmartArt, nhóm, v.v. có được hỗ trợ không?
Có, nếu các đối tượng đó chứa các phần văn bản có MathParagraph (tức là các công thức PowerPoint thực sự), chúng sẽ được xuất. Nếu công thức được nhúng dưới dạng hình ảnh, nó sẽ không được xuất.
Xuất sang MathML có làm thay đổi bản trình bày gốc không?
Không. Việc ghi MathML là quá trình tuần tự hóa nội dung của công thức; nó không làm thay đổi tệp bản trình bày.