Exportera matematiska ekvationer från presentationer i Python

Introduktion

Aspose.Slides låter dig exportera matematiska ekvationer från presentationer. Till exempel kan du behöva extrahera de matematiska ekvationerna på bildspel (från en specifik presentation) och använda dem i ett annat program eller en annan plattform.

Exportera matematiska ekvationer till LaTeX

Aspose.Slides kan konvertera en PowerPoint‑matematikekvation direkt till LaTeX; en mellanliggande MathML‑fil och en extern konverterare krävs inte. En matematikekvation lagras i en textruta som en MathPortion. Använd MathPortion.getMathParagraph för att få ett MathParagraph, och anropa sedan MathParagraph.toLatex. Metoden returnerar en sträng som du kan spara, visa, skicka till ett annat program eller bearbeta vidare.

Följande exempel granskar varje textruta på varje bild, hittar alla matematikdelar och skriver varje ekvation till en separat .tex‑fil:

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 returnerar alla textrutor som hittas på en bild. Typkontrollen för MathPortion skiljer äkta redigerbara ekvationer från vanlig text och bilder.

LaTeX‑motorer och dokumentsmallar stödjer inte alla samma kommandon, paket eller Unicode‑tecken. Testa den returnerade strängen med den LaTeX‑motor som din applikation använder. Om en symbol eller Office Math‑element saknar lämplig representation i den miljön, ersätt den i den returnerade strängen med ett projektspecifikt kommando eller hoppa över ekvationen och registrera problemet för granskning.

Spara matematiska ekvationer som MathML

Medan personer enkelt kan skriva kod för vissa ekvationsformat, såsom LaTeX, är MathML svårare att skriva för hand eftersom det är designat för att genereras automatiskt av applikationer. Program kan enkelt läsa och tolka MathML eftersom det är XML‑baserat, så MathML används ofta som ett utdata‑ och utskriftsformat inom många områden.

Detta exempel visar hur du exporterar en matematikekvation från en presentation till 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()

Vanliga frågor

Vad exakt exporteras till MathML – ett stycke eller ett enskilt formelblock?

Du kan exportera antingen ett helt matematikstycke (MathParagraph) eller ett enskilt block (MathBlock) till MathML. Båda typerna erbjuder en metod för att skriva till MathML.

Hur kan jag avgöra att ett objekt på en bild är en matematikformel snarare än vanlig text eller en bild?

En formel finns i en MathPortion och har ett MathParagraph. Bilder och vanlig text utan ett MathParagraph är inte exporterbara formler.

Varifrån kommer MathML i en presentation – är det PowerPoint‑specifikt eller en standard?

Exporten använder standard‑MathML (XML). Aspose använder Presentation MathML – presentationsdelmängden av standarden – som är brett adopterad i applikationer och på webben.

Stöds export av formler inuti tabeller, SmartArt, grupper osv.?

Ja, om dessa objekt innehåller textrutor med ett MathParagraph (dvs. äkta PowerPoint‑formler) så exporteras de. Om en formel är inbäddad som en bild exporteras den inte.

Modifierar export till MathML den ursprungliga presentationen?

Nej. Att skriva MathML är en serialisering av formelns innehåll; den ändrar inte presentationsfilen.