Mathematische Gleichungen zu PowerPoint-Präsentationen in PHP hinzufügen
Übersicht
In PowerPoint ist es möglich, eine mathematische Gleichung oder Formel zu schreiben und in der Präsentation anzuzeigen. Dazu sind verschiedene mathematische Symbole in PowerPoint dargestellt und können dem Text oder der Gleichung hinzugefügt werden. Hierzu wird der Mathe‑Gleichungs‑Konstruktor in PowerPoint verwendet, der das Erstellen komplexer Formeln wie:
- Mathematischer Bruch
- Mathematischer Radikand
- Mathematische Funktion
- Grenzen und Log‑Funktionen
- N‑stellige Operationen
- Matrix
- Große Operatoren
- Sinus‑, Kosinus‑Funktionen
ermöglicht.
Um eine mathematische Gleichung in PowerPoint hinzuzufügen, wird das Einfügen → Gleichung‑Menü verwendet:

Damit wird ein mathematischer Text in XML erzeugt, der in PowerPoint wie folgt angezeigt wird:

PowerPoint unterstützt zahlreiche mathematische Symbole zum Erstellen von Gleichungen. Das Erstellen komplizierter Gleichungen in PowerPoint führt jedoch häufig nicht zu einem professionellen Ergebnis. Anwender, die häufig mathematische Präsentationen erstellen müssen, greifen auf Drittanbieter‑Lösungen zurück, um ansprechende Formeln zu erzeugen.
Mit Aspose.Slide API können Sie programmgesteuert in C# mit mathematischen Gleichungen in PowerPoint‑Präsentationen arbeiten. Erstellen Sie neue mathematische Ausdrücke oder bearbeiten Sie bereits vorhandene. Der Export mathematischer Strukturen in Bilder wird ebenfalls zum Teil unterstützt.
Wie man eine mathematische Gleichung erstellt
Mathematische Elemente werden verwendet, um beliebige mathematische Konstruktionen mit beliebiger Verschachtelung zu bauen. Eine lineare Sammlung mathematischer Elemente bildet einen mathematischen Block, der durch die MathBlock‑Klasse repräsentiert wird. Die MathBlock‑Klasse ist im Wesentlichen ein abgegrenzter mathematischer Ausdruck, eine Formel oder Gleichung. MathPortion ist ein mathematischer Teil, der mathematischen Text enthält (nicht zu verwechseln mit Portion). MathParagraph ermöglicht die Manipulation einer Menge von MathBlocks. Die genannten Klassen sind entscheidend für die Arbeit mit PowerPoint‑Mathe‑Gleichungen über die Aspose.Slides‑API.
Sehen wir uns an, wie wir die folgende mathematische Gleichung über die Aspose.Slides‑API erstellen:

Um einen mathematischen Ausdruck auf der Folie hinzuzufügen, fügen Sie zunächst eine Form hinzu, die den mathematischen Text enthalten soll:
$pres = new Presentation();
try {
$mathShape = $pres->getSlides()->get_Item(0)->getShapes()->addMathShape(0, 0, 720, 150);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Nach dem Erstellen enthält die Form standardmäßig einen Absatz mit einer mathematischen Portion. Die MathPortion‑Klasse ist eine Portion, die mathematischen Text beinhaltet. Um auf den mathematischen Inhalt innerhalb der MathPortion zuzugreifen, verweisen Sie auf die MathParagraph‑Variable:
$mathParagraph = $mathShape->getTextFrame()->getParagraphs()->get_Item(0)->getPortions()->get_Item(0)->getMathParagraph();
The MathParagraph class allows to read, add, edit and delete math blocks (MathBlock), that consist of a combination of mathematical elements. For example, create a fraction and place it in the presentation:
$fraction = new MathematicalText("x")->divide("y");
$mathParagraph->add(new MathBlock($fraction));
Each mathematical element is represented by some class that implements the MathElement class. This class provides a lot of methods for easily creating mathematical expressions. You can create a fairly complex mathematical expression with a single line of code. For example, the Pythagorean theorem would look like this:
$mathBlock = new MathematicalText("c")->setSuperscript("2")->join("=")->join(new MathematicalText("a")->setSuperscript("2"))->join("+")->join(new MathematicalText("b")->setSuperscript("2"));
Operations of the class MathElement are implemented in any type of element, including the MathBlock.
The full source code sample:
$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();
}
}
Typen mathematischer Elemente
Mathematische Ausdrücke entstehen aus Sequenzen mathematischer Elemente. Die Sequenz wird durch einen mathematischen Block dargestellt, und die Argumente der Elemente bilden eine baumartige Verschachtelung.
Es gibt zahlreiche Typen mathematischer Elemente, die zum Aufbau eines mathematischen Blocks verwendet werden können. Jeder dieser Typen kann in einem anderen Element aggregiert werden. Elemente dienen also als Container für weitere Elemente und bilden eine baumartige Struktur. Der einfachste Typ ist ein Element, das keine weiteren Elemente des mathematischen Textes enthält.
Jeder Mathe‑Elementtyp implementiert die MathElement‑Klasse, sodass ein gemeinsamer Satz von Operationen auf unterschiedliche Mathe‑Elemente angewendet werden kann.
MathematicalText‑Klasse
Die MathematicalText‑Klasse stellt mathematischen Text dar – das Grundelement aller mathematischen Konstruktionen. Mathematischer Text kann Operanden, Operatoren, Variablen und beliebigen linearen Text repräsentieren.
Beispiel: 𝑎=𝑏+𝑐
MathFraction‑Klasse
Die MathFraction‑Klasse definiert ein Bruchobjekt, bestehend aus Zähler und Nenner, getrennt durch einen Bruchstrich. Der Bruchstrich kann horizontal oder diagonal sein, je nach Eigenschaften des Bruchs. Das Bruchobjekt wird außerdem für die Stack‑Funktion verwendet, die ein Element über ein anderes legt, ohne Bruchstrich.
Beispiel:

MathRadical‑Klasse
Die MathRadical‑Klasse definiert die Wurzelfunktion, bestehend aus einer Basis und einem optionalen Exponenten.
Beispiel:

MathFunction‑Klasse
Die MathFunction‑Klasse definiert eine Funktion eines Arguments. Sie enthält die Eigenschaften: getName – Funktionsname und getBase – Funktionsargument.
Beispiel:

MathNaryOperator‑Klasse
Die MathNaryOperator‑Klasse definiert ein n‑stelliges mathematisches Objekt, wie Summation oder Integral. Sie besteht aus einem Operator, einer Basis (oder einem Operand) und optionalen oberen und unteren Grenzen. Beispiele für n‑stellige Operatoren sind Summation, Vereinigung, Schnittmenge, Integral.
Einfachere Operatoren wie Addition oder Subtraktion werden nicht über diese Klasse, sondern über MathematicalText dargestellt.
Beispiel:

MathLimit‑Klasse
Die MathLimit‑Klasse erzeugt eine obere oder untere Grenze. Sie besteht aus Text auf der Grundlinie und verkleinertem Text direkt darüber bzw. darunter. Das Wort „lim“ ist nicht Bestandteil dieses Elements; Sie können Text beliebig über oder unter dem Ausdruck platzieren. So entsteht beispielsweise:

Durch die Kombination von MathFunction und MathLimit wird das folgendermaßen umgesetzt:
$funcName = new MathLimit(new MathematicalText("lim"), new MathematicalText("𝑥→∞"));
$mathFunc = new MathFunction($funcName, new MathematicalText("𝑥"));
MathSubscriptElement, MathSuperscriptElement, MathRightSubSuperscriptElement, MathLeftSubSuperscriptElement
- MathSubscriptElement
- MathSuperscriptElement
- MathRightSubSuperscriptElement
- MathLeftSubSuperscriptElement
Die Klassen definieren einen tiefen bzw. hohen Index. Sie ermöglichen das gleichzeitige Setzen von Tief- und Hochstellung links oder rechts eines Arguments; ein einzelner Index ist nur rechts zulässig. [MathSubscriptElement] kann zudem den mathematischen Grad einer Zahl festlegen.
Beispiel:

MathMatrix‑Klasse
Die MathMatrix‑Klasse definiert ein Matrixobjekt, das Kind‑Elemente in Zeilen und Spalten anordnet. Matrizen besitzen keine integrierten Begrenzungszeichen; zum Einrahmen verwendet man das MathDelimiter. Null‑Argumente erzeugen Lücken in Matrizen.
Beispiel:

MathArray‑Klasse
Die MathArray‑Klasse definiert ein vertikales Array von Gleichungen oder beliebigen mathematischen Objekten.
Beispiel:

Formatierung mathematischer Elemente
-
MathBorderBox: zeichnet einen rechteckigen oder anderen Rahmen um das
MathElement.Beispiel:

-
MathBox: definiert eine logische Box‑Umhüllung des mathematischen Elements (z. B. ein Operator‑Emulator, der Zeilenumbrüche verhindert).
-
MathDelimiter: definiert ein Begrenzungszeichen aus öffnenden und schließenden Zeichen (Klammern, geschweiften Klammern, eckigen Klammern, Strichen) mit einem oder mehreren enthaltenen
MathElements.Beispiel:

-
MathAccent: definiert ein Akzentzeichen, bestehend aus einer Basis und einem kombinierenden diakritischen Zeichen.
Beispiel: 𝑎́.
-
MathBar: definiert einen Balken (über‑ oder unterhalb) über einer Basis.
Beispiel:

-
MathGroupingCharacter: definiert ein Gruppierungssymbol über oder unter einem Ausdruck, um Beziehungen hervorzuheben.
Beispiel:

Mathematische Operationen
Jedes mathematische Element und jeder mathematische Ausdruck (via MathBlock) erbt von der MathElement‑Klasse. Damit können Sie Operationen auf der bestehenden Struktur ausführen und komplexere Ausdrücke bilden. Alle Operationen akzeptieren entweder ein MathElement oder einen String als Parameter. Instanzen der MathematicalText‑Klasse werden implizit aus übergebenen Strings erzeugt.
Join‑Methode
join(String)join(MathElement)
Vereint ein mathematisches Element zu einem Block.
$element1 = new MathematicalText("x");
$element2 = new MathematicalText("y");
$block = $element1->join($element2);
Divide‑Methode
divide(String)divide(MathElement)divide(String, MathFractionTypes)divide(MathElement, MathFractionTypes)
Erzeugt einen Bruch des angegebenen Typs.
$numerator = new MathematicalText("x");
$fraction = $numerator->divide("y", MathFractionTypes->Linear);
Enclose‑Methode
enclose()enclose(Char, Char)
Umfasst das Element mit angegebenen Zeichen (z. B. Klammern).
$delimiter = new MathematicalText("x")->enclose('[', ']');
$delimiter2 = new MathematicalText("elem1")->join("elem2")->enclose();
Function‑Methode
function(String)function(MathElement)
Wendet eine Funktion auf das aktuelle Objekt an.
$func = new MathematicalText("sin")->function("x");
AsArgumentOfFunction‑Methode
asArgumentOfFunction(String)asArgumentOfFunction(MathElement)asArgumentOfFunction(MathFunctionsOfOneArgument)asArgumentOfFunction(MathFunctionsOfTwoArguments, MathElement)asArgumentOfFunction(MathFunctionsOfTwoArguments, String)
Verwendet das aktuelle Element als Argument einer Funktion.
$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‑Methoden
setSubscript(String)setSubscript(MathElement)setSuperscript(String)setSuperscript(MathElement)setSubSuperscriptOnTheRight(String, String)setSubSuperscriptOnTheRight(MathElement, MathElement)setSubSuperscriptOnTheLeft(String, String)setSubSuperscriptOnTheLeft(MathElement, MathElement)
Setzt Tief‑ bzw. Hochstellung. Einzelne Tief‑ oder Hochstellung ist nur rechts zulässig; beide können gleichzeitig links gesetzt werden. Der Hochstellungen‑Modus kann zudem den mathematischen Grad einer Zahl festlegen.
$script = new MathematicalText("y")->setSubSuperscriptOnTheLeft("2x", "3z");
Radical‑Methode
radical(String)radical(MathElement)
Definiert die mathematische Wurzel des angegebenen Grades.
$radical = new MathematicalText("x")->radical("3");
SetUpperLimit und SetLowerLimit‑Methoden
setUpperLimit(String)setUpperLimit(MathElement)setLowerLimit(String)setLowerLimit(MathElement)
Erzeugt obere bzw. untere Grenzen.
$mathExpression = new MathematicalText("lim")->setLowerLimit("x→∞")->function("x");
Nary‑ und Integral‑Methoden
nary(MathNaryOperatorTypes, MathElement, MathElementnary(MathNaryOperatorTypes, String, String)integral(MathIntegralTypes)integral(MathIntegralTypes, MathElement, MathElement)integral(MathIntegralTypes, String, String)integral(MathIntegralTypes, MathElement, MathElement, MathLimitLocations)integral(MathIntegralTypes, String, String, MathLimitLocations)
Beide erzeugen einen n‑stelliges Operator‑Typ bzw. ein Integral.
$baseArg = new MathematicalText("x")->join(new MathematicalText("dx")->toBox());
$integral = $baseArg->integral(MathIntegralTypes->Simple, "0", "1");
ToMathArray‑Methode
MathElement.toMathArray bildet Elemente zu einem vertikalen Array um.
$arrayFunction = new MathematicalText("x")->join("y")->toMathArray();
Formatierungs‑Operationen: Accent, Overbar, Underbar, Group, ToBorderBox, ToBox
accentfügt ein Akzentzeichen hinzu.overbar/underbarsetzt einen Balken oben bzw. unten.groupgruppiert mit einem Gruppierungszeichen.toBorderBoxumschließt mit einem Rahmen.toBoxerzeugt eine logische Box.
$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();
FAQ
Wie kann ich einer PowerPoint‑Folien ein mathematisches Gleichungs‑Objekt hinzufügen?
Erzeugen Sie ein MathShape‑Objekt, das automatisch eine MathPortion enthält. Dann rufen Sie das MathParagraph aus der MathPortion ab und fügen dort MathBlock‑Objekte hinzu.
Ist es möglich, komplex verschachtelte mathematische Ausdrücke zu erstellen?
Ja. Aspose.Slides ermöglicht das Erzeugen komplexer Ausdrücke durch Verschachtelung von MathBlocks. Jeder Mathe‑Element‑Typ unterstützt Operationen wie Join, Divide, Enclose usw., um komplexe Strukturen zu bauen.
Wie kann ich eine bereits vorhandene mathematische Gleichung aktualisieren oder ändern?
Greifen Sie über das MathParagraph auf die bestehenden MathBlocks zu und verwenden Sie Methoden wie Join, Divide, Enclose usw., um einzelne Elemente zu ändern. Nach der Bearbeitung speichern Sie die Präsentation, um die Änderungen zu übernehmen.