Εξαγωγή Μαθηματικών Εξισώσεων από Παρουσιάσεις σε Python
Εισαγωγή
Το Aspose.Slides σας επιτρέπει να εξάγετε μαθηματικές εξισώσεις από παρουσιάσεις. Για παράδειγμα, μπορεί να χρειαστεί να εξάγετε τις μαθηματικές εξισώσεις από διαφάνειες (από μια συγκεκριμένη παρουσίαση) και να τις χρησιμοποιήσετε σε άλλο πρόγραμμα ή πλατφόρμα.
Note
Μπορείτε να εξάγετε εξισώσεις απευθείας σε LaTeX ή σε MathML, ένα δημοφιλές πρότυπο για μαθηματικό περιεχόμενο που χρησιμοποιείται στον ιστό και σε πολλές εφαρμογές.Εξαγωγή Μαθηματικών Εξισώσεων σε LaTeX
Το Aspose.Slides μπορεί να μετατρέψει μια μαθηματική εξίσωση PowerPoint απευθείας σε LaTeX· δεν απαιτείται ενδιάμεσο αρχείο MathML ή εξωτερικός μετατροπέας. Μια μαθηματική εξίσωση αποθηκεύεται σε ένα πλαίσιο κειμένου ως MathPortion. Χρησιμοποιήστε το MathPortion.getMathParagraph για να πάρετε ένα MathParagraph, και στη συνέχεια καλέστε το MathParagraph.toLatex. Η μέθοδος επιστρέφει μια συμβολοσειρά που μπορείτε να αποθηκεύσετε, να εμφανίσετε, να στείλετε σε άλλη εφαρμογή ή να επεξεργαστείτε περαιτέρω.
Το παρακάτω παράδειγμα εξετάζει κάθε πλαίσιο κειμένου σε κάθε διαφάνεια, βρίσκει όλες τις μαθηματικές περιοχές και γράφει κάθε εξίσωση σε ξεχωριστό αρχείο .tex:
from pathlib import Path
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import MathPortion, Presentation, SlideUtil
presentation = Presentation("equations.pptx")
try:
slide_count = presentation.getSlides().size()
for slide_index in range(slide_count):
slide = presentation.getSlides().get_Item(slide_index)
slide_number = slide_index + 1
equation_number = 1
text_frames = SlideUtil.getAllTextBoxes(slide)
for text_frame in text_frames:
for paragraph in text_frame.getParagraphs():
for portion in paragraph.getPortions():
if not isinstance(portion, MathPortion):
continue
math_paragraph = portion.getMathParagraph()
latex_file_name = f"slide_{slide_number}_equation_{equation_number}.tex"
latex_text = math_paragraph.toLatex()
latex_path = Path(latex_file_name)
latex_path.write_text(str(latex_text), encoding="utf-8")
equation_number += 1
finally:
presentation.dispose()
SlideUtil.getAllTextBoxes επιστρέφει όλα τα πλαίσια κειμένου που βρέθηκαν σε μια διαφάνεια. Ο έλεγχος τύπου MathPortion διαχωρίζει τις πραγματικές επεξεργάσιμες εξισώσεις από συνηθισμένο κείμενο και εικόνες.
Οι μηχανές LaTeX και τα πρότυπα εγγράφων δεν υποστηρίζουν όλες τις ίδιες εντολές, πακέτα ή χαρακτήρες Unicode. Δοκιμάστε τη συμβολοσειρά που επιστρέφεται με τη μηχανή LaTeX που χρησιμοποιεί η εφαρμογή σας. Εάν ένα σύμβολο ή στοιχείο Office Math δεν έχει κατάλληλη αναπαράσταση σε αυτό το περιβάλλον, αντικαταστήστε το στη συμβολοσειρά με μια εντολή ειδική για το έργο ή παραλείψτε την εξίσωση και καταγράψτε το ζήτημα για επανεξέταση.
Αποθήκευση Μαθηματικών Εξισώσεων ως MathML
Ενώ οι προγραμματιστές μπορούν εύκολα να γράψουν κώδικα για ορισμένες μορφές εξισώσεων, όπως LaTeX, το MathML είναι πιο δύσκολο να γραφτεί με το χέρι επειδή έχει σχεδιαστεί να δημιουργείται αυτόματα από εφαρμογές. Τα προγράμματα μπορούν εύκολα να διαβάσουν και να αναλύσουν το MathML επειδή βασίζεται στο XML, έτσι το MathML χρησιμοποιείται συχνά ως μορφή εξόδου και εκτύπωσης σε πολλούς τομείς.
Αυτό το παράδειγμα κώδικα δείχνει πώς να εξάγετε μια μαθηματική εξίσωση από μια παρουσίαση σε MathML:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import MathematicalText, Presentation
from java.io import FileOutputStream
presentation = Presentation()
try:
math_shape = presentation.getSlides().get_Item(0).getShapes().addMathShape(0, 0, 500, 50)
math_portion = math_shape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0)
math_paragraph = math_portion.getMathParagraph()
a_squared = MathematicalText("a").setSuperscript("2")
b_squared = MathematicalText("b").setSuperscript("2")
c_squared = MathematicalText("c").setSuperscript("2")
equation = a_squared.join("+").join(b_squared).join("=").join(c_squared)
math_paragraph.add(equation)
stream = FileOutputStream("mathml.xml")
try:
math_paragraph.writeAsMathMl(stream)
finally:
stream.close()
finally:
presentation.dispose()
Συχνές Ερωτήσεις
Τι εξάγεται ακριβώς σε MathML—μια παράγραφος ή ένα μεμονωμένο μπλοκ τύπου;
Μπορείτε να εξάγετε είτε ολόκληρη την μαθηματική παράγραφο (MathParagraph) είτε ένα μεμονωμένο μπλοκ (MathBlock) σε MathML. Και οι δύο τύποι παρέχουν μια μέθοδο για τη συγγραφή σε MathML.
Πώς μπορώ να διακρίνω ότι ένα αντικείμενο σε μια διαφάνεια είναι μαθηματικός τύπος και όχι απλό κείμενο ή εικόνα;
Ένας τύπος κατοικεί σε ένα MathPortion και έχει ένα MathParagraph. Οι εικόνες και τα κανονικά τμήματα κειμένου χωρίς MathParagraph δεν είναι εξαγώγιμοι τύποι.
Από πού προέρχεται το MathML σε μια παρουσίαση—είναι ειδικό για το PowerPoint ή πρότυπο;
Η εξαγωγή στοχεύει στο πρότυπο MathML (XML). Το Aspose χρησιμοποιεί το Presentation MathML—το υποσύνολο παρουσίασης του προτύπου—που χρησιμοποιείται ευρέως σε εφαρμογές και στον ιστό.
Υποστηρίζεται η εξαγωγή τύπων μέσα σε πίνακες, SmartArt, ομάδες κλπ;
Ναι, εάν αυτά τα αντικείμενα περιέχουν τμήματα κειμένου με MathParagraph (δηλαδή πραγματικούς τύπους PowerPoint), εξάγονται. Εάν ένας τύπος είναι ενσωματωμένος ως εικόνα, δεν εξάγεται.
Τροποποιεί η εξαγωγή σε MathML την αρχική παρουσίαση;
Όχι. Η δημιουργία MathML είναι μια σειριοποίηση του περιεχομένου του τύπου· δεν τροποποιεί το αρχείο παρουσίασης.