Экспорт математических уравнений из презентаций в .NET
Введение
Aspose.Slides for .NET позволяет экспортировать математические уравнения из презентаций. Например, вам может понадобиться извлечь математические уравнения со слайдов (из конкретной презентации) и использовать их в другой программе или платформе.
Экспорт математических уравнений в LaTeX
Aspose.Slides может преобразовать уравнение PowerPoint напрямую в LaTeX; промежуточный файл MathML и внешний конвертер не требуются. Уравнение хранится в текстовом кадре как MathPortion. Используйте MathPortion.MathParagraph чтобы получить IMathParagraph, а затем вызовите IMathParagraph.ToLatex. Метод возвращает строку, которую можно сохранить, отобразить, отправить в другое приложение или дальше обработать.
В следующем примере рассматриваются все текстовые кадры на каждом слайде, находятся все математические порции и каждая формула записывается в отдельный файл .tex:
using var presentation = new Presentation("equations.pptx");
for (var slideIndex = 0; slideIndex < presentation.Slides.Count; slideIndex++)
{
var slide = presentation.Slides[slideIndex];
var slideNumber = slideIndex + 1;
var equationNumber = 1;
var textFrames = SlideUtil.GetAllTextBoxes(slide);
foreach (var textFrame in textFrames)
{
foreach (var paragraph in textFrame.Paragraphs)
{
foreach (var portion in paragraph.Portions)
{
if (portion is not MathPortion mathPortion)
continue;
IMathParagraph mathParagraph = mathPortion.MathParagraph;
var latexPath = $"slide_{slideNumber}_equation_{equationNumber}.tex";
var latexText = mathParagraph.ToLatex();
File.WriteAllText(latexPath, latexText);
equationNumber++;
}
}
}
}
SlideUtil.GetAllTextBoxes возвращает все текстовые кадры, найденные на слайде. Проверка типа MathPortion отделяет подлинные редактируемые уравнения от обычного текста и изображений.
LaTeX‑движки и шаблоны документов поддерживают не одинаковый набор команд, пакетов и Unicode‑символов. Проверьте возвращённую строку с помощью LaTeX‑движка, используемого в вашем приложении. Если символ или элемент Office Math не имеет подходящего представления в этой среде, замените его в возвращённой строке командой, специфичной для проекта, либо пропустите уравнение и зафиксируйте проблему для последующего рассмотрения.
Сохранение математических уравнений в MathML
В то время как человеку легко писать код для некоторых форматов уравнений, таких как LaTeX, писать код для MathML сложнее, поскольку он предназначен для автоматической генерации приложениями. Программы легко читают и разбирают MathML, потому что его код находится в XML, поэтому MathML часто используется как формат вывода и печати во многих областях.
В этом примере кода показано, как экспортировать математическое уравнение из презентации в MathML:
using (Presentation pres = new Presentation())
{
var autoShape = pres.Slides[0].Shapes.AddMathShape(0, 0, 500, 50);
var mathParagraph = ((MathPortion)autoShape.TextFrame.Paragraphs[0].Portions[0]).MathParagraph;
mathParagraph.Add(new MathematicalText("a").SetSuperscript("2").Join("+").Join(new MathematicalText("b").SetSuperscript("2")).Join("=").Join(new MathematicalText("c").SetSuperscript("2")));
using (Stream stream = new FileStream("mathml.xml", FileMode.Create))
mathParagraph.WriteAsMathMl(stream);
}
FAQ
Что именно экспортируется в MathML — абзац или отдельный блок формулы?
Вы можете экспортировать либо весь математический абзац (MathParagraph), либо отдельный блок (MathBlock) в MathML. Оба типа предоставляют метод записи в MathML.
Как определить, что объект на слайде является формулой, а не обычным текстом или изображением?
Формула находится в MathPortion и имеет MathParagraph. Изображения и обычные текстовые порции без MathParagraph не экспортируемы как формулы.
Откуда берётся MathML в презентации — это специфично для PowerPoint или это стандарт?
Экспортируется стандартный MathML (XML). Aspose использует Presentation MathML — подмножество стандарта, широко применяемое в приложениях и в вебе.
Поддерживается ли экспорт формул, находящихся в таблицах, SmartArt, группах и т.п.?
Да, если эти объекты содержат текстовые порции с MathParagraph (то есть подлинные формулы PowerPoint), они экспортируются. Если формула вложена как изображение, она не экспортируется.
Изменяется ли оригинальная презентация при экспорте в MathML?
Нет. Запись MathML представляет собой сериализацию содержимого формулы; оригинальный файл презентации не изменяется.