Экспорт математических уравнений из презентаций на Python
Введение
Aspose.Slides позволяет экспортировать математические уравнения из презентаций. Например, вам может потребоваться извлечь математические уравнения со слайдов (из конкретной презентации) и использовать их в другой программе или платформе.
Примечание
Вы можете экспортировать уравнения напрямую в LaTeX или в MathML — популярный стандарт для математического контента, используемый в интернете и во многих приложениях.Экспорт математических уравнений в LaTeX
Aspose.Slides может преобразовать математическое уравнение PowerPoint напрямую в LaTeX; промежуточный файл MathML и внешний конвертер не требуются. Уравнение хранится в текстовом кадре как MathPortion. Используйте MathPortion.getMathParagraph, чтобы получить MathParagraph, а затем вызовите MathParagraph.toLatex. Метод возвращает строку, которую можно сохранить, отобразить, отправить в другое приложение или дальше обработать.
В следующем примере рассматриваются все текстовые кадры на каждой презентации, находятся все математические части и каждое уравнение записывается в отдельный файл .tex:
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 возвращает все текстовые кадры, найденные на слайде. Проверка типа MathPortion отделяет подлинные редактируемые уравнения от обычного текста и изображений.
LaTeX‑движки и шаблоны документов не поддерживают одинаковый набор команд, пакетов и Unicode‑символов. Проверьте полученную строку с тем LaTeX‑движком, который используется в вашем приложении. Если символ или элемент Office Math не имеют подходящего представления в этой среде, замените его в строке командой проекта или пропустите уравнение, зафиксировав проблему для последующего обзора.
Сохранить математические уравнения как MathML
Хотя писать код для некоторых форматов уравнений, таких как LaTeX, достаточно просто, MathML сложнее писать вручную, поскольку он предназначен для автоматической генерации приложениями. Программы легко читают и разбирают MathML, потому что он основан на XML, и поэтому MathML широко используется как формат вывода и печати во многих областях.
Этот пример кода показывает, как экспортировать математическое уравнение из презентации в 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
Что именно экспортируется в MathML — абзац или отдельный блок формулы?
Можно экспортировать либо весь математический абзац (MathParagraph), либо отдельный блок (MathBlock) в MathML. Оба типа предоставляют метод записи в MathML.
Как определить, что объект на слайде является математической формулой, а не обычным текстом или изображением?
Формула находится в MathPortion и имеет MathParagraph. Изображения и обычные текстовые части без MathParagraph не экспортируются как формулы.
Откуда берётся MathML в презентации — это специфично для PowerPoint или это стандарт?
Экспорт ориентирован на стандартный MathML (XML). Aspose использует Presentation MathML — подмножество стандарта, которое широко применяется в приложениях и в интернете.
Поддерживается ли экспорт формул, находящихся в таблицах, SmartArt, группах и т.п.?
Да, если эти объекты содержат текстовые части с MathParagraph (т.е. подлинные формулы PowerPoint), они экспортируются. Если формула вложена как изображение, она не экспортируется.
Изменяется ли оригинальная презентация при экспорте в MathML?
Нет. Запись MathML представляет собой сериализацию содержимого формулы и не изменяет файл презентации.