Математические Уравнения PowerPoint
Обзор
В PowerPoint возможно написать математическое уравнение или формулу и отобразить их в презентации. Для этого различными математическими символами, представленными в PowerPoint, можно дополнить текст или уравнение. Для этого используется конструктор математических уравнений в PowerPoint, который помогает создавать сложные формулы, такие как:
- Математическая дробь
- Математический радикал
- Математическая функция
- Пределы и логарифмические функции
- N-ичные операции
- Матрица
- Упрощенные операторы
- Функции синуса и косинуса
Чтобы добавить математическое уравнение в PowerPoint, используется меню Вставка -> Уравнение:
Это создаст математический текст в формате XML, который может быть отображен в PowerPoint следующим образом:
PowerPoint поддерживает множество математических символов для создания математических уравнений. Тем не менее, создание сложных математических уравнений в PowerPoint часто не дает хорошего и профессионального результата. Пользователи, которым часто нужно создавать математические презентации, прибегают к использованию сторонних решений для создания хорошо оформленных математических формул.
Используя Aspose.Slide API, вы можете программно работать с математическими уравнениями в PowerPoint-презентациях на C#. Создавайте новые математические выражения или редактируйте ранее созданные. Экспорт математических структур в изображения также частично поддерживается.
Как создать математическое уравнение
Математические элементы используются для построения любых математических конструкций с любым уровнем вложенности. Линейная коллекция математических элементов формирует математический блок, представленный классом MathBlock. Класс MathBlock фактически является отдельным математическим выражением, формулой или уравнением. MathPortion — это математическая порция, используемая для хранения математического текста (не путать с Portion). MathParagraph позволяет манипулировать набором математических блоков. Упомянутые классы являются ключом к работе с математическими уравнениями PowerPoint через Aspose.Slides API.
Давайте посмотрим, как мы можем создать следующее математическое уравнение с помощью Aspose.Slides API:
Чтобы добавить математическое выражение на слайд, сначала добавьте форму, которая будет содержать математический текст:
$pres = new Presentation();
try {
$mathShape = $pres->getSlides()->get_Item(0)->getShapes()->addMathShape(0, 0, 720, 150);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
После создания форма уже будет содержать один абзац с математической порцией по умолчанию. Класс MathPortion — это порция, которая содержит математический текст внутри. Чтобы получить доступ к математическому содержимому внутри MathPortion, обращайтесь к переменной MathParagraph:
$mathParagraph = $mathShape->getTextFrame()->getParagraphs()->get_Item(0)->getPortions()->get_Item(0)->getMathParagraph();
Класс MathParagraph позволяет читать, добавлять, редактировать и удалять математические блоки (MathBlock), которые состоят из комбинации математических элементов. Например, создайте дробь и поместите её в презентацию:
$fraction = new MathematicalText("x")->divide("y");
$mathParagraph->add(new MathBlock($fraction));
Каждый математический элемент представлен каким-то классом, который реализует интерфейс IMathElement. Этот интерфейс предоставляет множество методов для легкого создания математических выражений. Вы можете создать довольно сложное математическое выражение всего одной строкой кода. Например, теорема Пифагора будет выглядеть так:
$mathBlock = new MathematicalText("c")->setSuperscript("2")->join("=")->join(new MathematicalText("a")->setSuperscript("2"))->join("+")->join(new MathematicalText("b")->setSuperscript("2"));
Операции интерфейса IMathElement реализованы в любом типе элемента, включая MathBlock.
Полный образец исходного кода:
$pres = new Presentation();
try {
$mathShape = $pres->getSlides()->get_Item(0)->getShapes()->addMathShape(0, 0, 720, 150);
$mathParagraph = $mathShape->getTextFrame()->getParagraphs()->get_Item(0)->getPortions()->get_Item(0)->getMathParagraph();
$fraction = new MathematicalText("x")->divide("y");
$mathParagraph->add(new MathBlock($fraction));
$mathBlock = new MathematicalText("c")->setSuperscript("2")->join("=")->join(new MathematicalText("a")->setSuperscript("2"))->join("+")->join(new MathematicalText("b")->setSuperscript("2"));
$mathParagraph->add($mathBlock);
$pres->save("math.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Типы математических элементов
Математические выражения формируются из последовательностей математических элементов. Последовательность математических элементов представляется математическим блоком, а аргументы математических элементов формируют древовидную вложенность.
Существует множество типов математических элементов, которые могут быть использованы для построения математического блока. Каждый из этих элементов может быть включён (агрегирован) в другой элемент. То есть элементы фактически являются контейнерами для других, формируя древовидную структуру. Самый простой тип элемента не содержит других элементов математического текста.
Каждый тип математического элемента реализует интерфейс IMathElement, позволяя использовать общий набор математических операций на различных типах математических элементов.
Класс MathematicalText
Класс MathematicalText представляет математический текст - основной элемент всех математических конструкций. Математический текст может представлять операнды и операторы, переменные и любой другой линейный текст.
Пример: 𝑎=𝑏+𝑐
Класс MathFraction
Класс MathFraction задает фракционный объект, состоящий из числителя и знаменателя, разделенных дробной чертой. Дробная черта может быть горизонтальной или диагональной, в зависимости от свойств дроби. Объект дроби также используется для представления функции стека, которая помещает один элемент над другим без дробной черты.
Пример:
Класс MathRadical
Класс MathRadical задает радикальную функцию (математический корень), состоящую из основания и необязательной степени.
Пример:
Класс MathFunction
Класс MathFunction задает функцию аргумента. Содержит свойства: getName - имя функции и getBase - аргумент функции.
Пример:
Класс MathNaryOperator
Класс MathNaryOperator задает N-ичные математические объекты, такие как сумма и интеграл. Он состоит из оператора, базы (или операнда) и необязательных верхних и нижних пределов. Примеры N-ичных операторов включают сумму, объединение, пересечение, интеграл.
Этот класс не включает простые операторы, такие как сложение, вычитание и т. д. Они представлены одним текстовым элементом - MathematicalText.
Пример:
Класс MathLimit
Класс MathLimit создает верхний или нижний предел. Он задает объект предела, состоящий из текста на базовой линии и уменьшенного текста сразу выше или ниже него. Этот элемент не включает слово “lim", но позволяет разместить текст вверху или внизу выражения. Таким образом, выражение
создается с помощью сочетания элементов MathFunction и MathLimit следующим образом:
$funcName = new MathLimit(new MathematicalText("lim"), new MathematicalText("𝑥→∞"));
$mathFunc = new MathFunction($funcName, new MathematicalText("𝑥"));
Классы MathSubscriptElement, MathSuperscriptElement, MathRightSubSuperscriptElement, MathLeftSubSuperscriptElement
- MathSubscriptElement
- MathSuperscriptElement
- MathRightSubSuperscriptElement
- MathLeftSubSuperscriptElement
Следующие классы задают нижний индекс или верхний индекс. Вы можете установить подстрочный и надстрочный текст одновременно слева или справа от аргумента, однако поддерживается только одиночный подстрочный или надстрочный текст справа. Класс MathSubscriptElement также может использоваться для задания математической степени числа.
Пример:
Класс MathMatrix
Класс MathMatrix задает объект Матрицы, состоящий из дочерних элементов, расположенных в одном или нескольких рядах и столбцах. Важно отметить, что матрицы не имеют встроенных разделителей. Чтобы поместить матрицу в скобки, необходимо использовать объект разделителя - IMathDelimiter. Нулевые аргументы могут быть использованы для создания пробелов в матрицах.
Пример:
Класс MathArray
Класс MathArray задает вертикальный массив уравнений или любых математических объектов.
Пример:
Форматирование математических элементов
-
Класс MathBorderBox: рисует прямоугольную или другую рамку вокруг IMathElement.
Пример:
-
Класс MathBox: задает логическую упаковку (упаковку) математического элемента. Например, объект в боксе может служить эмулятором оператора с или без точки выравнивания, служить точкой разрыва линии или быть сгруппированным так, чтобы не допускать разрывов линий внутри. Например, оператор “==” должен быть помещен в бокс, чтобы предотвратить разрывы линии.
-
Класс MathDelimiter: задает объект разделителя, состоящий из открывающих и закрывающих символов (таких как скобки, фигурные скобки, квадратные скобки и вертикальные линии) и одного или нескольких математических элементов внутри, разделенных указанным символом. Примеры: (𝑥2); [𝑥2|𝑦2].
Пример:
-
Класс MathAccent: задает акцентирующую функцию, состоящую из основания и диакритического знака.
Пример: 𝑎́.
-
Класс MathBar: задает барную функцию, состоящую из базового аргумента и надчеркивающего или подчеркивающего знака.
Пример:
-
Класс MathGroupingCharacter: задает символ группировки над или под выражением, обычно для выделения взаимосвязей между элементами.
Пример:
Математические операции
Каждый математический элемент и математическое выражение (через MathBlock) реализует интерфейс IMathElement. Это позволяет использовать операции на существующей структуре и формировать более сложные математические выражения. Все операции имеют два набора параметров: либо IMathElement, либо строку в качестве аргумента. Экземпляры класса MathematicalText создаются неявно из указанных строк, когда используются строковые аргументы. Математические операции, доступные в Aspose.Slides, перечислены ниже.
Метод Join
Соединяет математический элемент и формирует математический блок. Например:
$element1 = new MathematicalText("x");
$element2 = new MathematicalText("y");
$block = $element1->join($element2);
Метод Divide
- divide(String)
- divide(IMathElement)
- divide(String, MathFractionTypes)
- divide(IMathElement, MathFractionTypes)
Создает дробь указанного типа с этим числителем и заданным знаменателем. Например:
$numerator = new MathematicalText("x");
$fraction = $numerator->divide("y", MathFractionTypes->Linear);
Метод Enclose
Заключает элемент в указанные символы, такие как круглые скобки или другой символ для оформления.
Например:
$delimiter = new MathematicalText("x")->enclose('[', ']');
$delimiter2 = new MathematicalText("elem1")->join("elem2")->enclose();
Метод Function
Принимает функцию аргумента, используя текущий объект в качестве имени функции.
Например:
$func = new MathematicalText("sin")->function("x");
Метод AsArgumentOfFunction
- asArgumentOfFunction(String)
- asArgumentOfFunction(IMathElement)
- asArgumentOfFunction(MathFunctionsOfOneArgument)
- asArgumentOfFunction(MathFunctionsOfTwoArguments, IMathElement)
- asArgumentOfFunction(MathFunctionsOfTwoArguments, String)
Принимает заданную функцию, используя текущий экземпляр в качестве аргумента. Вы можете:
- указать строку в качестве имени функции, например “cos”.
- выбрать одно из предопределенных значений перечисления MathFunctionsOfOneArgument или MathFunctionsOfTwoArguments, например MathFunctionsOfOneArgument.ArcSin.
- выбрать экземпляр IMathElement.
Например:
$funcName = new MathLimit(new MathematicalText("lim"), new MathematicalText("𝑛→∞"));
$func1 = new MathematicalText("2x")->asArgumentOfFunction($funcName);
$func2 = new MathematicalText("x")->asArgumentOfFunction("sin");
$func3 = new MathematicalText("x")->asArgumentOfFunction(MathFunctionsOfOneArgument->Sin);
$func4 = new MathematicalText("x")->asArgumentOfFunction(MathFunctionsOfTwoArguments->Log, "3");
Методы SetSubscript, SetSuperscript, SetSubSuperscriptOnTheRight, SetSubSuperscriptOnTheLeft
- setSubscript(String)
- setSubscript(IMathElement)
- setSuperscript(String)
- setSuperscript(IMathElement)
- setSubSuperscriptOnTheRight(String, String)
- setSubSuperscriptOnTheRight(IMathElement, IMathElement)
- setSubSuperscriptOnTheLeft(String, String)
- setSubSuperscriptOnTheLeft(IMathElement, IMathElement)
Устанавливает подстрочный и надстрочный текст. Вы можете установить подстрочный и надстрочный текст одновременно слева или справа от аргумента, однако поддерживается только одиночный подстрочный или надстрочный текст справа. Надстрочный текст также может использоваться для задания математической степени числа.
Пример:
$script = new MathematicalText("y")->setSubSuperscriptOnTheLeft("2x", "3z");
Метод Radical
Задает математический корень указанной степени от заданного аргумента.
Пример:
$radical = new MathematicalText("x")->radical("3");
Методы SetUpperLimit и SetLowerLimit
Принимает верхний или нижний предел. Здесь верхний и нижний обычно указывают местоположение аргумента относительно базы.
Рассмотрим выражение:
Такие выражения могут быть созданы через сочетание классов MathFunction и MathLimit, а также операций IMathElement следующим образом:
$mathExpression = new MathematicalText("lim")->setLowerLimit("x→∞")->function("x");
Методы Nary и Integral
- nary(MathNaryOperatorTypes, IMathElement, IMathElement)
- nary(MathNaryOperatorTypes, String, String)
- integral(MathIntegralTypes)
- integral(MathIntegralTypes, IMathElement, IMathElement)
- integral(MathIntegralTypes, String, String)
- integral(MathIntegralTypes, IMathElement, IMathElement, MathLimitLocations)
- integral(MathIntegralTypes, String, String, MathLimitLocations)
Методы nary и integral создают и возвращают N-ичный оператор, представленный типом IMathNaryOperator. В методе nary перечисление MathNaryOperatorTypes задает тип оператора: сумма, объединение и т. д., не включая интегралы. В методе Integral осуществляется специализированная операция интеграла с перечислением типов интеграла MathIntegralTypes.
Пример:
$baseArg = new MathematicalText("x")->join(new MathematicalText("dx")->toBox());
$integral = $baseArg->integral(MathIntegralTypes->Simple, "0", "1");
Метод ToMathArray
toMathArray помещает элементы в вертикальный массив. Если эта операция вызывается для экземпляра MathBlock, все дочерние элементы будут помещены в возвращаемый массив.
Пример:
$arrayFunction = new MathematicalText("x")->join("y")->toMathArray();
Операции форматирования: Accent, Overbar, Underbar, Group, ToBorderBox, ToBox
- Метод accent устанавливает акцентирующий знак (символ над верхней частью элемента).
- Методы overbar и underbar устанавливают бар сверху или снизу.
- Метод group размещает в группе с использованием символа группировки, такого как нижняя фигурная скобка или другой.
- Метод toBorderBox помещает в границу.
- Метод toBox помещает в невидимый бокс (логическая группировка).
Примеры:
$accent = new MathematicalText("x")->accent('̃');
$bar = new MathematicalText("x")->overbar();
$groupChr = new MathematicalText("x")->join("y")->join("z")->group('⏡', MathTopBotPositions::Bottom, MathTopBotPositions::Top);
$borderBox = new MathematicalText("x+y+z")->toBorderBox();
$boxedOperator = new MathematicalText(":=")->toBox();