Экспорт математических уравнений из презентаций в Python

Введение

Aspose.Slides for Python via .NET позволяет экспортировать математические уравнения из презентаций. Например, вам может потребоваться извлечь уравнения из определённых слайдов и использовать их в другой программе или платформе.

Экспорт математических уравнений в LaTeX

Aspose.Slides может преобразовать уравнение PowerPoint напрямую в LaTeX; промежуточный файл MathML и внешний конвертер не требуются. Уравнение хранится в текстовом фрейме как MathPortion. Используйте MathPortion.math_paragraph для получения MathParagraph, а затем вызовите MathParagraph.to_latex. Метод возвращает строку, которую можно сохранить, отобразить, отправить другому приложению или обработать дальше.

Следующий пример просматривает каждый текстовый фрейм на каждом слайде, находит все части MathPortion и записывает каждое уравнение в отдельный файл с расширением .tex:

import aspose.slides as slides

with slides.Presentation("equations.pptx") as presentation:
    for slide_number, slide in enumerate(presentation.slides, start=1):
        equation_number = 1
        text_frames = slides.util.SlideUtil.get_all_text_boxes(slide)

        for text_frame in text_frames:
            for paragraph in text_frame.paragraphs:
                for portion in paragraph.portions:
                    if not isinstance(portion, slides.mathtext.MathPortion):
                        continue

                    math_paragraph = portion.math_paragraph
                    latex_path = f"slide_{slide_number}_equation_{equation_number}.tex"

                    latex_text = math_paragraph.to_latex()
                    with open(latex_path, "w", encoding="utf-8") as latex_file:
                        latex_file.write(latex_text)
                    equation_number += 1

SlideUtil.get_all_text_boxes возвращает все текстовые фреймы, найденные на слайде. Проверка типа MathPortion отделяет подлинные редактируемые уравнения от обычного текста и изображений.

Движки LaTeX и шаблоны документов поддерживают не все одинаковые команды, пакеты или Unicode‑символы. Проверьте полученную строку с тем движком LaTeX, который используется в вашем приложении. Если символ или элемент Office Math не имеет подходящего представления в этой среде, замените его в полученной строке проектно‑специфической командой или пропустите уравнение, зафиксировав проблему для дальнейшего рассмотрения.

Сохранение математических уравнений в формате MathML

Хотя людям удобно писать LaTeX, MathML обычно генерируется автоматически приложениями. Поскольку MathML основан на XML, программы могут надёжно его читать и разбирать, поэтому он широко используется как формат вывода и печати во многих областях.

Ниже показан пример кода, демонстрирующий, как экспортировать математическое уравнение из презентации в MathML:

import aspose.slides as slides
import aspose.slides.mathtext as math

with slides.Presentation() as presentation:
    slide = presentation.slides[0]

    auto_shape = slide.shapes.add_math_shape(0, 0, 500, 50)
    math_paragraph = auto_shape.text_frame.paragraphs[0].portions[0].math_paragraph

    math_paragraph.add(
        math.MathematicalText("a").
            set_superscript("2").
            join("+").
            join(math.MathematicalText("b").set_superscript("2")).
            join("=").
            join(math.MathematicalText("c").set_superscript("2")))

    with open("mathml.xml", "wb") as file_stream:
        math_paragraph.write_as_math_ml(file_stream)

Часто задаваемые вопросы

Что именно экспортируется в MathML — абзац или отдельный блок формулы?

Можно экспортировать как целый математический абзац (MathParagraph), так и отдельный блок (MathBlock) в MathML. Оба типа предоставляют метод записи в MathML.

Как определить, что объект на слайде является математической формулой, а не обычным текстом или изображением?

Формула находится в MathPortion и имеет MathParagraph. Изображения и обычные текстовые части без MathParagraph не экспортируются как формулы.

Откуда берётся MathML в презентации — это специфично для PowerPoint или это стандарт?

Экспорт направлен на стандартный MathML (XML). Aspose использует Presentation MathML — подмножество стандарта, широко применяемое в приложениях и в Интернете.

Поддерживается ли экспорт формул, находящихся в таблицах, SmartArt, группах и т.п.?

Да, если эти объекты содержат текстовые части с MathParagraph (т.е. настоящие формулы PowerPoint), они экспортируются. Если формула внедрена как изображение, она не экспортируется.

Изменяет ли экспорт в MathML исходную презентацию?

Нет. Запись MathML представляет собой сериализацию содержимого формулы и не изменяет файл презентации.