Esporta equazioni matematiche dalle presentazioni in Python

Introduzione

Aspose.Slides consente di esportare equazioni matematiche dalle presentazioni. Ad esempio, potresti dover estrarre le equazioni matematiche dalle slide (da una presentazione specifica) e usarle in un altro programma o piattaforma.

Esporta equazioni matematiche in LaTeX

Aspose.Slides può convertire un’equazione matematica di PowerPoint direttamente in LaTeX; non è necessario un file intermedio MathML né un convertitore esterno. Un’equazione matematica è memorizzata in una casella di testo come un MathPortion. Usa MathPortion.getMathParagraph per ottenere un MathParagraph, e poi chiama MathParagraph.toLatex. Il metodo restituisce una stringa che puoi salvare, visualizzare, inviare a un’altra applicazione o elaborare ulteriormente.

L’esempio seguente esamina ogni casella di testo in ogni slide, individua tutte le porzioni matematiche e scrive ciascuna equazione in un file .tex separato:

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 restituisce tutte le caselle di testo trovate in una slide. Il controllo di tipo MathPortion separa le vere equazioni modificabili dal testo e dalle immagini ordinari.

I motori LaTeX e i modelli di documento non supportano tutti gli stessi comandi, pacchetti o caratteri Unicode. Verifica la stringa restituita con il motore LaTeX usato dalla tua applicazione. Se un simbolo o un elemento Office Math non ha una rappresentazione adeguata in quell’ambiente, sostituiscilo nella stringa restituita con un comando specifico del progetto oppure ignora l’equazione e registra il problema per una revisione.

Salva le equazioni matematiche come MathML

Mentre è facile per le persone scrivere codice per alcuni formati di equazioni, come LaTeX, MathML è più difficile da scrivere a mano perché è progettato per essere generato automaticamente dalle applicazioni. I programmi possono leggere e analizzare facilmente MathML poiché è basato su XML, perciò MathML è comunemente usato come formato di output e di stampa in molti settori.

Questo esempio di codice mostra come esportare un’equazione matematica da una presentazione a 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()

FAQ

Che cosa viene esportato esattamente in MathML—un paragrafo o un blocco di formula individuale?

Puoi esportare sia un intero paragrafo matematico (MathParagraph) sia un blocco individuale (MathBlock) in MathML. Entrambi i tipi forniscono un metodo per scrivere in MathML.

Come posso capire se un oggetto su una slide è una formula matematica anziché testo o immagine normale?

Una formula si trova in un MathPortion e dispone di un MathParagraph. Le immagini e le porzioni di testo normale senza un MathParagraph non sono formule esportabili.

Da dove proviene il MathML in una presentazione—è specifico di PowerPoint o è uno standard?

L’esportazione punta al MathML standard (XML). Aspose utilizza Presentation MathML—il sottoinsieme di presentazione dello standard—che è ampiamente usato in molte applicazioni e sul web.

L’esportazione di formule all’interno di tabelle, SmartArt, gruppi, ecc. è supportata?

Sì, se quegli oggetti contengono porzioni di testo con un MathParagraph (cioè vere formule PowerPoint), vengono esportate. Se una formula è incorporata come immagine, non lo è.

L’esportazione in MathML modifica la presentazione originale?

No. Scrivere MathML è una serializzazione del contenuto della formula; non modifica il file della presentazione.