Экспорт математических уравнений из презентаций в 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 представляет собой сериализацию содержимого формулы и не изменяет файл презентации.