Mathgleichungen zu PowerPoint-Präsentationen in Java hinzufügen
Übersicht
In PowerPoint ist es möglich, eine mathematische Gleichung oder Formel zu schreiben und in der Präsentation anzuzeigen. Dazu werden verschiedene mathematische Symbole in PowerPoint dargestellt und können dem Text oder der Gleichung hinzugefügt werden. Hierfür wird der Formelkonstruktor für mathematische Gleichungen in PowerPoint verwendet, der beim Erstellen komplexer Formeln unterstützt, wie zum Beispiel:
- Mathematischer Bruch
- Mathematischer Radikal
- Mathematische Funktion
- Grenzen und Logarithmusfunktionen
- N-äre Operationen
- Matrix
- Große Operatoren
- Sinus‑ und Kosinusfunktionen
Um eine mathematische Gleichung in PowerPoint hinzuzufügen, wird das Menü Insert -> Equation verwendet:

Dadurch wird ein mathematischer Text in XML erzeugt, der in PowerPoint wie folgt angezeigt werden kann:

PowerPoint unterstützt zahlreiche mathematische Symbole zum Erstellen von Gleichungen. Das Erstellen komplizierter mathematischer Gleichungen in PowerPoint liefert jedoch oft kein gutes und professionell aussehendes Ergebnis. Anwender, die häufig mathematische Präsentationen erstellen müssen, greifen auf Lösungen von Drittanbietern zurück, um ansprechend aussehende 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 erstellte. Der Export mathematischer Strukturen in Bilder wird ebenfalls teilweise unterstützt.
Wie man eine mathematische Gleichung erstellt
Mathematische Elemente werden zum Aufbau beliebiger mathematischer Konstruktionen auf beliebiger Verschachtelungsebene verwendet. Eine lineare Sammlung mathematischer Elemente bildet einen mathematischen Block, der durch die MathBlock Klasse dargestellt wird. MathBlock Klasse ist im Wesentlichen ein separater mathematischer Ausdruck, Formel oder Gleichung. MathPortion ist ein mathematischer Abschnitt, der mathematischen Text enthält (nicht verwechseln mit Portion). MathParagraph ermöglicht die Manipulation einer Menge von MathBlocks. Die oben genannten Klassen sind der Schlüssel zur Arbeit mit PowerPoint‑Mathegleichungen über die Aspose.Slides‑API.
Sehen wir uns an, wie wir die folgende mathematische Gleichung mit der Aspose.Slides‑API erstellen können:

Um einen mathematischen Ausdruck auf der Folie hinzuzufügen, fügen Sie zunächst eine Form hinzu, die den mathematischen Text enthält:
Presentation pres = new Presentation();
try {
IAutoShape mathShape = pres.getSlides().get_Item(0).getShapes().addMathShape(0, 0, 720, 150);
} finally {
if (pres != null) pres.dispose();
}
Nach dem Erstellen enthält die Form standardmäßig bereits einen Absatz mit einem mathematischen Abschnitt. Die MathPortion Klasse ist ein Abschnitt, der mathematischen Text enthält. Um auf den mathematischen Inhalt in MathPortion zuzugreifen, beziehen Sie sich auf die MathParagraph variable:
IMathParagraph mathParagraph = ((MathPortion)mathShape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0)).getMathParagraph();
Die MathParagraph Klasse ermöglicht das Lesen, Hinzufügen, Bearbeiten und Löschen von MathBlocks (MathBlock), die aus einer Kombination mathematischer Elemente bestehen. Beispiel: Erstellen Sie einen Bruch und platzieren Sie ihn in der Präsentation:
IMathFraction fraction = new MathematicalText("x").divide("y");
mathParagraph.add(new MathBlock(fraction));
Jedes mathematische Element wird durch eine Klasse dargestellt, die das IMathElement Interface implementiert. Dieses Interface stellt viele Methoden zum einfachen Erstellen mathematischer Ausdrücke bereit. Sie können einen recht komplexen mathematischen Ausdruck mit einer einzigen Codezeile erstellen. Beispiel: Der Satz des Pythagoras würde so aussehen:
IMathBlock mathBlock = new MathematicalText("c")
.setSuperscript("2")
.join("=")
.join(new MathematicalText("a").setSuperscript("2"))
.join("+")
.join(new MathematicalText("b").setSuperscript("2"));
Operationen des Interfaces IMathElement werden in jeder Art von Element implementiert, einschließlich des MathBlock.
Der vollständige Quellcode‑Beispiel:
Presentation pres = new Presentation();
try {
IAutoShape mathShape = pres.getSlides().get_Item(0).getShapes().addMathShape(0, 0, 720, 150);
IMathParagraph mathParagraph = ((MathPortion)mathShape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0)).getMathParagraph();
IMathFraction fraction = new MathematicalText("x").divide("y");
mathParagraph.add(new MathBlock(fraction));
IMathBlock 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 (pres != null) pres.dispose();
}
Typen mathematischer Elemente
Mathematische Ausdrücke entstehen aus Folgen mathematischer Elemente. Die Folge mathematischer Elemente wird durch einen mathematischen Block dargestellt, und die Argumente mathematischer Elemente bilden eine baumartige Verschachtelung.
Es gibt viele Typen mathematischer Elemente, die zum Aufbau eines mathematischen Blocks verwendet werden können. Jedes dieser Elemente kann in ein anderes Element eingebettet (aggregiert) werden. Elemente fungieren somit als Container für andere und bilden eine baumartige Struktur. Der einfachste Typ von Elementen enthält keine weiteren Elemente des mathematischen Textes.
Jeder Typ von Mathe‑Element implementiert das IMathElement Interface, wodurch ein gemeinsamer Satz von mathematischen Operationen auf verschiedene Elementtypen anwendbar ist.
Klasse MathematicalText
Die MathematicalText Klasse repräsentiert einen mathematischen Text – das zugrunde liegende Element aller mathematischen Konstruktionen. Der mathematische Text kann Operanden und Operatoren, Variablen sowie jeden anderen linearen Text darstellen.
Beispiel: 𝑎=𝑏+𝑐
Klasse MathFraction
MathFraction Klasse definiert das Bruchobjekt, das aus einem Zähler und einem Nenner besteht, getrennt durch einen Bruchstrich. Der Bruchstrich kann horizontal oder diagonal sein, abhängig von den Bruch‑Eigenschaften. Das Bruchobjekt wird auch verwendet, um die Stack‑Funktion darzustellen, bei der ein Element über einem anderen liegt, ohne Bruchstrich.
Beispiel:

Klasse MathRadical
MathRadical Klasse definiert die Radikal‑Funktion (mathematische Wurzel), bestehend aus einer Basis und einem optionalen Grad.
Beispiel:

Klasse MathFunction
MathFunction Klasse definiert eine Funktion eines Arguments. Enthält Eigenschaften: getName – Funktionsname und getBase – Funktionsargument.
Beispiel:

Klasse MathNaryOperator
MathNaryOperator Klasse definiert ein N‑äres mathematisches Objekt, wie Summation oder Integral. Es besteht aus einem Operator, einer Basis (oder einem Operanden) und optionalen oberen und unteren Grenzen. Beispiele für N‑äre Operatoren sind Summation, Vereinigung, Schnittmenge, Integral.
Diese Klasse schließt einfache Operatoren wie Addition, Subtraktion usw. nicht ein. Sie werden durch ein einzelnes Textelement – MathematicalText – dargestellt.
Beispiel:

Klasse MathLimit
MathLimit Klasse erzeugt die obere oder untere Grenze. Sie definiert das Grenz‑Objekt, das Text auf der Grundlinie sowie verkleinerten Text direkt darüber oder darunter enthält. Dieses Element enthält nicht das Wort „lim“, ermöglicht aber das Platzieren von Text oben oder unten im Ausdruck. So wird der Ausdruck

mittels einer Kombination von MathFunction und MathLimit wie folgt erstellt:
MathLimit funcName = new MathLimit(new MathematicalText("lim"), new MathematicalText("𝑥→∞"));
MathFunction mathFunc = new MathFunction(funcName, new MathematicalText("𝑥"));
Klassen MathSubscriptElement, MathSuperscriptElement, MathRightSubSuperscriptElement, MathLeftSubSuperscriptElement
- MathSubscriptElement
- MathSuperscriptElement
- MathRightSubSuperscriptElement
- MathLeftSubSuperscriptElement
Die folgenden Klassen definieren einen unteren bzw. oberen Index. Sie können Subscript und Superscript gleichzeitig auf der linken oder rechten Seite eines Arguments setzen, wobei ein einzelner Subscript oder Superscript nur auf der rechten Seite unterstützt wird. Der MathSubscriptElement kann auch verwendet werden, um den mathematischen Grad einer Zahl festzulegen.
Beispiel:

Klasse MathMatrix
MathMatrix Klasse definiert das Matrix‑Objekt, das aus Kindelementen besteht, die in einer oder mehreren Zeilen und Spalten angeordnet sind. Wichtig: Matrizen haben keine eingebauten Trennzeichen. Um die Matrix in Klammern zu setzen, verwenden Sie das Trennzeichen‑Objekt – IMathDelimiter. Null‑Argumente können verwendet werden, um Lücken in Matrizen zu erzeugen.
Beispiel:

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

Formatierung mathematischer Elemente
-
MathBorderBox Klasse: zeichnet ein Rechteck oder eine andere Umrandung um das IMathElement.
Beispiel:

-
MathBox Klasse: definiert die logische Box‑Darstellung (Verpackung) des mathematischen Elements. Beispielsweise kann ein in eine Box verpacktes Objekt als Operator‑Emulator mit oder ohne Ausrichtungspunkt dienen, als Zeilenumbruch‑Punkt oder gruppiert werden, sodass innerhalb keine Zeilenumbrüche erlaubt sind. Zum Beispiel sollte der Operator „==“ in eine Box gesetzt werden, um Zeilenumbrüche zu verhindern.
-
MathDelimiter Klasse: definiert das Trennzeichen‑Objekt, bestehend aus öffnenden und schließenden Zeichen (wie Klammern, geschweiften Klammern, eckigen Klammern und senkrechten Strichen) und einem oder mehreren mathematischen Elementen darin, getrennt durch ein angegebenes Zeichen. Beispiele: (𝑥2); [𝑥2|𝑦2].
Beispiel:

-
MathAccent Klasse: definiert die Akzent‑Funktion, bestehend aus einer Basis und einem kombinierenden diakritischen Zeichen.
Beispiel: 𝑎́.
-
MathBar Klasse: definiert die Balken‑Funktion, bestehend aus einem Basis‑Argument und einem Über‑ oder Unterbalken.
Beispiel:

-
MathGroupingCharacter Klasse: definiert ein Gruppierungszeichen über oder unter einem Ausdruck, üblicherweise zur Hervorhebung von Beziehungen zwischen Elementen.
Beispiel:

Mathematische Operationen
Jedes mathematische Element und jeder mathematische Ausdruck (via MathBlock) implementiert das IMathElement Interface. Es ermöglicht die Anwendung von Operationen auf die bestehende Struktur und die Bildung komplexerer mathematischer Ausdrücke. Alle Operationen haben zwei Parametersätze: entweder [IMathElement] oder String als Argumente. Instanzen der MathematicalText Klasse werden implizit aus angegebenen Strings erstellt, wenn String‑Argumente verwendet werden. Mathematische Operationen, die in Aspose.Slides verfügbar sind, werden unten aufgeführt.
Join‑Methode
Verbindet ein mathematisches Element und bildet einen mathematischen Block. Beispiel:
IMathElement element1 = new MathematicalText("x");
IMathElement element2 = new MathematicalText("y");
IMathBlock block = element1.join(element2);
Divide‑Methode
- divide(String)
- divide(IMathElement)
- divide(String, MathFractionTypes)
- divide(IMathElement, MathFractionTypes)
Erstellt einen Bruch des angegebenen Typs mit diesem Zähler und dem angegebenen Nenner. Beispiel:
IMathElement numerator = new MathematicalText("x");
IMathFraction fraction = numerator.divide("y", MathFractionTypes.Linear);
Enclose‑Methode
Umgibt das Element mit angegebenen Zeichen, z. B. Klammern oder anderen Rahmenzeichen.
/**
* <p>
* Enclose a math element in parenthesis
* </p>
*/
public IMathDelimiter enclose();
/**
* <p>
* Encloses this element in specified characters such as parenthesis or another characters as framing
* </p>
*/
public IMathDelimiter enclose(char beginningCharacter, char endingCharacter);
Beispiel:
IMathDelimiter delimiter = new MathematicalText("x").enclose('[', ']');
IMathDelimiter delimiter2 = new MathematicalText("elem1").join("elem2").enclose();
Function‑Methode
Nimmt eine Funktion eines Arguments unter Verwendung des aktuellen Objekts als Funktionsnamen.
/**
* <p>
* Takes a function of an argument using this instance as the function name
* </p>
*/
public IMathFunction function(IMathElement functionArgument);
/**
* <p>
* Takes a function of an argument using this instance as the function name
* </p>
*/
public IMathFunction function(String functionArgument);
Beispiel:
IMathFunction func = new MathematicalText("sin").function("x");
AsArgumentOfFunction‑Methode
- asArgumentOfFunction(String)
- asArgumentOfFunction(IMathElement)
- asArgumentOfFunction(MathFunctionsOfOneArgument)
- asArgumentOfFunction(MathFunctionsOfTwoArguments, IMathElement)
- asArgumentOfFunction(MathFunctionsOfTwoArguments, String)
Verwendet die angegebene Funktion, wobei die aktuelle Instanz als Argument dient. Sie können:
- Einen String als Funktionsnamen angeben, z. B. „cos“.
- Einen der vordefinierten Werte der Aufzählungen MathFunctionsOfOneArgument oder MathFunctionsOfTwoArguments wählen, z. B. MathFunctionsOfOneArgument.ArcSin.
- Die Instanz des IMathElement angeben.
Beispiel:
MathLimit funcName = new MathLimit(new MathematicalText("lim"), new MathematicalText("𝑛→∞"));
IMathFunction func1 = new MathematicalText("2x").asArgumentOfFunction(funcName);
IMathFunction func2 = new MathematicalText("x").asArgumentOfFunction("sin");
IMathFunction func3 = new MathematicalText("x").asArgumentOfFunction(MathFunctionsOfOneArgument.Sin);
IMathFunction func4 = new MathematicalText("x").asArgumentOfFunction(MathFunctionsOfTwoArguments.Log, "3");
SetSubscript, SetSuperscript, SetSubSuperscriptOnTheRight, SetSubSuperscriptOnTheLeft‑Methoden
- setSubscript(String)
- setSubscript(IMathElement)
- setSuperscript(String)
- setSuperscript(IMathElement)
- setSubSuperscriptOnTheRight(String, String)
- setSubSuperscriptOnTheRight(IMathElement, IMathElement)
- setSubSuperscriptOnTheLeft(String, String)
- setSubSuperscriptOnTheLeft(IMathElement, IMathElement)
Setzt Subscript und Superscript. Sie können Subscript und Superscript gleichzeitig auf der linken oder rechten Seite des Arguments setzen, wobei ein einzelner Subscript oder Superscript nur auf der rechten Seite unterstützt wird. Der Superscript kann auch verwendet werden, um den mathematischen Grad einer Zahl festzulegen.
Beispiel:
IMathLeftSubSuperscriptElement script = new MathematicalText("y").setSubSuperscriptOnTheLeft("2x", "3z");
Radical‑Methode
Definiert die mathematische Wurzel des angegebenen Grades aus dem angegebenen Argument.
Beispiel:
IMathRadical radical = new MathematicalText("x").radical("3");
SetUpperLimit und SetLowerLimit‑Methoden
Setzt die obere bzw. untere Grenze. Hier geben oben und unten lediglich die Position des Arguments relativ zur Basis an.
Betrachten wir den Ausdruck:

Solche Ausdrücke können durch eine Kombination der Klassen MathFunction und MathLimit sowie durch Operationen des IMathElement wie folgt erstellt werden:
IMathFunction mathExpression = new MathematicalText("lim").setLowerLimit("x→∞").function("x");
Nary‑ und Integral‑Methoden
- 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)
Beide nary‑ und integral‑Methoden erzeugen und geben den N‑ären Operator zurück, der durch den Typ IMathNaryOperator repräsentiert wird. In der nary‑Methode gibt die Aufzählung MathNaryOperatorTypes den Operator‑Typ an: Summation, Union usw., jedoch nicht Integrale. In der Integral‑Methode gibt die Aufzählung MathIntegralTypes die Art des Integrals an.
Beispiel:
IMathBlock baseArg = new MathematicalText("x").join(new MathematicalText("dx").toBox());
IMathNaryOperator integral = baseArg.integral(MathIntegralTypes.Simple, "0", "1");
ToMathArray‑Methode
toMathArray legt Elemente in ein vertikales Array. Wird diese Operation für ein MathBlock‑Objekt aufgerufen, werden alle Kindelemente in das zurückgegebene Array platziert.
Beispiel:
IMathArray arrayFunction = new MathematicalText("x").join("y").toMathArray();
Formatierungsoperationen: Accent, Overbar, Underbar, Group, ToBorderBox, ToBox
- accent Methode setzt ein Akzentzeichen (ein Zeichen über dem Element).
- overbar und underbar Methoden setzen einen Balken oben bzw. unten.
- group Methode legt ein Gruppierungszeichen wie eine geschweifte Klammer unten oder ein anderes Zeichen an.
- toBorderBox Methode legt ein Rand‑Box‑Element an.
- toBox Methode legt ein nicht‑visuelles Box‑Element (logische Gruppierung) an.
Beispiele:
IMathAccent accent = new MathematicalText("x").accent('\u0303');
IMathBar bar = new MathematicalText("x").overbar();
IMathGroupingCharacter groupChr = new MathematicalText("x").join("y").join("z").group('\u23E1', MathTopBotPositions.Bottom, MathTopBotPositions.Top);
IMathBorderBox borderBox = new MathematicalText("x+y+z").toBorderBox();
IMathBox boxedOperator = new MathematicalText(":=").toBox();
FAQ
Wie kann ich eine mathematische Gleichung zu einer PowerPoint‑Folie hinzufügen?
Um eine mathematische Gleichung hinzuzufügen, müssen Sie ein Math‑Shape‑Objekt erstellen, das automatisch einen mathematischen Abschnitt enthält. Dann rufen Sie das MathParagraph vom MathPortion ab und fügen MathBlock‑Objekte hinzu.
Ist es möglich, komplex verschachtelte mathematische Ausdrücke zu erstellen?
Ja, Aspose.Slides ermöglicht das Erstellen komplexer mathematischer Ausdrücke durch Verschachteln von MathBlocks. Jedes mathematische Element implementiert das IMathElement‑Interface, das die Anwendung von Operationen (Join, Divide, Enclose usw.) zur Kombination von Elementen zu komplexeren Strukturen erlaubt.
Wie kann ich eine vorhandene mathematische Gleichung aktualisieren oder ändern?
Um eine Gleichung zu aktualisieren, greifen Sie über das MathParagraph auf die bestehenden MathBlocks zu. Durch die Verwendung von Methoden wie Join, Divide, Enclose usw. können Sie einzelne Elemente der Gleichung ändern. Nach der Bearbeitung speichern Sie die Präsentation, um die Änderungen zu übernehmen.