Matematika egyenletek exportálása prezentációkból Pythonban
Bevezetés
Az Aspose.Slides lehetővé teszi, hogy matematikai egyenleteket exportáljon a bemutatókból. Például előfordulhat, hogy ki szeretné nyerni a diákról (egy adott prezentációból) a matematikai egyenleteket, és egy másik programban vagy platformon használja őket.
Note
Egyenleteket közvetlenül exportálhat LaTeX-be vagy MathML-be, egy népszerű szabvány a weben és sok alkalmazásban használt matematikai tartalomra.Matematikai egyenletek exportálása LaTeX-be
Az Aspose.Slides képes a PowerPoint matematikai egyenletet közvetlenül LaTeX-be konvertálni; köztes MathML-fájlra és külső konverterre nincs szükség. A matematikai egyenlet egy szövegkeretben egy MathPortionként van tárolva. Az MathPortion.getMathParagraph segítségével kaphat egy MathParagraph-t, majd hívja meg a MathParagraph.toLatex metódust. A metódus egy karakterláncot ad vissza, amelyet elmenthet, megjeleníthet, egy másik alkalmazásnak elküldhet vagy tovább feldolgozhat.
A következő példa minden szövegkeretet vizsgál minden dián, megtalálja az összes matematikai részt, és minden egyenletet egy külön .tex fájlba ír:
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 visszaadja az egy dián található összes szövegkeretet. A MathPortion típusellenőrzés elválasztja a valódi szerkeszthető egyenleteket a szokásos szövegtől és képektől.
A LaTeX-motorok és dokumentumsablonok nem mind támogatják ugyanazokat a parancsokat, csomagokat vagy Unicode karaktereket. Tesztelje a visszaadott karakterláncot a alkalmazásában használt LaTeX-motorral. Ha egy szimbólumnak vagy Office Math elemnek nincs megfelelő ábrázolása az adott környezetben, cserélje le a visszaadott karakterláncban egy projekt‑specifikus parancsra, vagy hagyja ki az egyenletet, és rögzítse a problémát felülvizsgálatra.
Matematikai egyenletek mentése MathML-ként
Míg egyes egyenletformátumokhoz, például a LaTeX‑hez, könnyen lehet kézzel kódot írni, a MathML nehezebb kézzel megírni, mivel azt automatikusan generálni tervezték alkalmazások által. A programok könnyen beolvashatják és feldolgozhatják a MathML‑t, mivel XML‑alapú, ezért a MathML gyakran használt kimeneti és nyomtatási formátum sok területen.
Ez a mintakód megmutatja, hogyan exportálhat egy matematikai egyenletet egy prezentációból MathML‑be:
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()
GYIK
Mi pontosan exportálódik MathML‑be – egy bekezdés vagy egy egyedi képletblokk?
Exportálhatja az egész matematikai bekezdést (MathParagraph) vagy egy egyedi blokkot (MathBlock) MathML‑be. Mindkét típus rendelkezik egy metódussal a MathML‑be íráshoz.
Hogyan tudom megállapítani, hogy egy dián lévő objektum matematikai képlet‑e a szokásos szöveg vagy kép helyett?
Egy képlet egy MathPortion‑ben él, és rendelkezik egy MathParagraph‑vel. Képek és a szokásos szövegrészek, amelyek nem tartalmaznak [MathParagraph]‑t, nem exportálható képletek.
Honnan származik a MathML egy prezentációban – PowerPoint‑specifikus vagy szabványos?
Az export a szabványos MathML‑re (XML) irányul. Az Aspose a Presentation MathML‑t használja – a szabvány bemutató részhalmazát –, amelyet széles körben használnak alkalmazások és a web.
Támogatott‑e a képletek exportálása táblázatok, SmartArt, csoportok stb. belsejéből?
Igen, ha azok az objektumok szövegrészeket tartalmaznak egy [MathParagraph]‑val (azaz valódi PowerPoint képleteket), akkor exportálódnak. Ha egy képlet képként van beágyazva, akkor nem.
Módosítja az export MathML‑be az eredeti prezentációt?
Nem. A MathML írása a képlet tartalmának sorosítása; nem módosítja a prezentációfájlt.