Mathematische Gleichungen zu PowerPoint‑Präsentationen in JavaScript hinzufügen

Übersicht

In PowerPoint ist es möglich, eine mathematische Gleichung oder Formel zu schreiben und in der Präsentation anzuzeigen. Dafür werden verschiedene mathematische Symbole in PowerPoint dargestellt und können dem Text oder der Gleichung hinzugefügt werden. Hierfür wird der mathematische Gleichungskonstruktor in PowerPoint verwendet, der beim Erstellen komplexer Formeln hilft, wie zum Beispiel:

  • Mathematischer Bruch
  • Mathematischer Radikal
  • Mathematische Funktion
  • Grenzen und Logarithmusfunktionen
  • N‑äre Operationen
  • Matrix
  • Große Operatoren
  • Sinus‑, Kosinus‑Funktionen

Um eine mathematische Gleichung in PowerPoint hinzuzufügen, wird das Einfügen -> Gleichung-Menü verwendet:

todo:image_alt_text

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

todo:image_alt_text

PowerPoint unterstützt zahlreiche mathematische Symbole zur Erstellung von Gleichungen. Das Erstellen komplizierter mathematischer Gleichungen in PowerPoint führt jedoch oft nicht zu einem professionellen Ergebnis. Benutzer, die häufig mathematische Präsentationen erstellen müssen, greifen daher auf Drittanbieter‑Lösungen zurück, um gut 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 vorhandene. Der Export mathematischer Strukturen in Bilder wird ebenfalls teilweise unterstützt.

Wie man eine mathematische Gleichung erstellt

Mathematische Elemente werden verwendet, um beliebige mathematische Konstruktionen mit beliebiger Verschachtelungstiefe 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 separater mathematischer Ausdruck, eine Formel oder Gleichung. MathPortion ist ein mathematischer Abschnitt, der mathematischen Text enthält (nicht zu verwechseln mit Portion). MathParagraph ermöglicht die Manipulation einer Menge von MathBlocks. Die genannten Klassen sind der Schlüssel zur Arbeit mit PowerPoint‑Mathegleichungen über die Aspose.Slides‑API.

Betrachten wir, wie wir die folgende mathematische Gleichung über die Aspose.Slides‑API erzeugen können:

todo:image_alt_text

Um einen mathematischen Ausdruck auf der Folie hinzuzufügen, fügen Sie zunächst eine Form hinzu, die den mathematischen Text enthalten wird:

var pres = new aspose.slides.Presentation();
try {
    var mathShape = pres.getSlides().get_Item(0).getShapes().addMathShape(0, 0, 720, 150);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

Nach dem Erzeugen 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 innerhalb der MathPortion zuzugreifen, beziehen Sie sich auf die MathParagraph-Variable:

var mathParagraph = mathShape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0).getMathParagraph();

Die MathParagraph-Klasse erlaubt das Lesen, Hinzufügen, Bearbeiten und Löschen von MathBlocks (MathBlock), die aus einer Kombination mathematischer Elemente bestehen. Beispiel: Erzeugen Sie einen Bruch und fügen ihn in die Präsentation ein:

var fraction = new aspose.slides.MathematicalText("x").divide("y");
mathParagraph.add(new aspose.slides.MathBlock(fraction));

Jedes mathematische Element wird durch eine Klasse repräsentiert, die die MathElement‑Klasse implementiert. Diese Klasse stellt viele Methoden zum einfachen Erzeugen mathematischer Ausdrücke bereit. Sie können mit einer einzigen Code‑Zeile einen recht komplexen Ausdruck erstellen. Beispiel: Der Satz des Pythagoras sieht so aus:

var mathBlock = new aspose.slides.MathematicalText("c").setSuperscript("2").join("=").join(new aspose.slides.MathematicalText("a").setSuperscript("2")).join("+").join(new aspose.slides.MathematicalText("b").setSuperscript("2"));

Operationen der Klasse MathElement werden in jeder Art von Element implementiert, einschließlich des MathBlock.

Der vollständige Quellcode‑Beispiel:

var pres = new aspose.slides.Presentation();
try {
    var mathShape = pres.getSlides().get_Item(0).getShapes().addMathShape(0, 0, 720, 150);
    var mathParagraph = mathShape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0).getMathParagraph();
    var fraction = new aspose.slides.MathematicalText("x").divide("y");
    mathParagraph.add(new aspose.slides.MathBlock(fraction));
    var mathBlock = new aspose.slides.MathematicalText("c").setSuperscript("2").join("=").join(new aspose.slides.MathematicalText("a").setSuperscript("2")).join("+").join(new aspose.slides.MathematicalText("b").setSuperscript("2"));
    mathParagraph.add(mathBlock);
    pres.save("math.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

Mathematische Elementtypen

Mathematische Ausdrücke werden aus Sequenzen mathematischer Elemente gebildet. Die Sequenz wird durch einen mathematischen Block repräsentiert, und die Argumente der Elemente formen eine baumartige Verschachtelung.

Es gibt zahlreiche mathematische Elementtypen, die zum Aufbau eines mathematischen Blocks verwendet werden können. Jeder dieser Typen kann in ein anderes Element eingebettet werden. Das bedeutet, dass Elemente eigentlich Container für andere sind und so eine baumartige Struktur bilden. Der einfachste Typ ist ein Element, das keine weiteren Elemente des mathematischen Textes enthält.

Jeder Typ implementiert die MathElement‑Klasse, sodass ein gemeinsamer Satz von mathematischen Operationen auf verschiedene Elementtypen angewendet werden kann.

MathematicalText‑Klasse

Die MathematicalText-Klasse stellt einen mathematischen Text dar – das Basiselement aller mathematischen Konstruktionen. Mathematischer Text kann Operanden, Operatoren, Variablen und beliebigen linearen Text enthalten.

Beispiel: 𝑎=𝑏+𝑐

MathFraction‑Klasse

Die MathFraction-Klasse beschreibt das Bruchobjekt, das aus Zähler und Nenner besteht, getrennt durch einen Bruchstrich. Der Bruchstrich kann horizontal oder diagonal sein, je nach Eigenschaften. Das Objekt wird außerdem für die Stack‑Funktion verwendet, bei der ein Element über einem anderen steht, ohne Bruchstrich.

Beispiel:

todo:image_alt_text

MathRadical‑Klasse

Die MathRadical-Klasse definiert die Radikal‑Funktion (mathematische Wurzel) mit Basis und optionalem Grad.

Beispiel:

todo:image_alt_text

MathFunction‑Klasse

Die MathFunction-Klasse gibt eine Funktionsdefinition mit einem Argument an. Enthält Eigenschaften: getName – Funktionsname und getBase – Funktionsargument.

Beispiel:

todo:image_alt_text

MathNaryOperator‑Klasse

Die MathNaryOperator-Klasse beschreibt ein N‑äres mathematisches Objekt, z. B. Summation oder Integral. Sie besteht aus einem Operator, einer Basis (oder Operand) und optionalen oberen und unteren Grenzen. Beispiele für N‑äre Operatoren sind Summation, Vereinigung, Schnittmenge, Integral.

Einfachere Operatoren wie Addition oder Subtraktion werden durch ein einzelnes Textelement – MathematicalText – dargestellt.

Beispiel:

todo:image_alt_text

MathLimit‑Klasse

Die MathLimit-Klasse erzeugt eine obere oder untere Grenze. Sie definiert das Grenze‑Objekt, das Text auf der Grundlinie und verkleinerten Text darüber oder darunter enthält. Das Element enthält nicht das Wort „lim“, erlaubt jedoch das Platzieren von Text oben oder unten im Ausdruck. So entsteht beispielsweise der Ausdruck

todo:image_alt_text

mit einer Kombination aus MathFunction und MathLimit so:

var funcName = new aspose.slides.MathLimit(new aspose.slides.MathematicalText("lim"), new aspose.slides.MathematicalText("𝑥→∞"));
var mathFunc = new aspose.slides.MathFunction(funcName, new aspose.slides.MathematicalText("𝑥"));

MathSubscriptElement, MathSuperscriptElement, MathRightSubSuperscriptElement, MathLeftSubSuperscriptElement‑Klassen

Diese Klassen definieren tiefe bzw. hohe Indizes. Sie können Sub‑ und Superskript gleichzeitig links oder rechts setzen; ein einfacher Sub‑ oder Superskript wird nur rechts unterstützt. Der MathSubscriptElement kann zudem den mathematischen Grad einer Zahl festlegen.

Beispiel:

todo:image_alt_text

MathMatrix‑Klasse

Die MathMatrix-Klasse definiert ein Matrix‑Objekt, das Kind‑Elemente in Zeilen und Spalten anordnet. Hinweis: Matrizen besitzen keine eingebauten Begrenzungszeichen. Um die Matrix in Klammern zu setzen, verwenden Sie das Begrenzungs‑Objekt – MathDelimiter. Null‑Argumente erzeugen Lücken in Matrizen.

Beispiel:

todo:image_alt_text

MathArray‑Klasse

Die MathArray-Klasse definiert ein vertikales Array von Gleichungen oder anderen mathematischen Objekten.

Beispiel:

todo:image_alt_text

Formatierung mathematischer Elemente

  • MathBorderBox-Klasse: zeichnet einen rechteckigen oder anderen Rahmen um das MathElement.
    Beispiel: todo:image_alt_text

  • MathBox-Klasse: definiert die logische Kapselung (Packaging) des mathematischen Elements. Beispielsweise kann ein gekapseltes Objekt als Operator‑Emulator mit oder ohne Ausrichtungspunkt dienen, Zeilenumbrüche verhindern oder gruppiert werden, sodass innerhalb keine Zeilenumbrüche auftreten. Der Operator „==“ sollte beispielsweise gekapselt werden, um Zeilenumbrüche zu verhindern.

  • MathDelimiter-Klasse: definiert das Begrenzungs‑Objekt mit öffnenden und schließenden Zeichen (Klammern, geschweiften Klammern, eckigen Klammern, senkrechten Strichen) und ein oder mehrere mathematische Elemente darin, getrennt durch ein festgelegtes Zeichen. Beispiele: (𝑥²); [𝑥²|𝑦²].
    Beispiel: todo:image_alt_text

  • MathAccent-Klasse: definiert die Akzent‑Funktion mit Basis und kombinierendem diakritischem Zeichen.
    Beispiel: 𝑎́.

  • MathBar-Klasse: definiert die Balken‑Funktion mit Basisargument und Über‑ oder Unterbalken.
    Beispiel: todo:image_alt_text

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

Mathematische Operationen

Jedes mathematische Element und jeder mathematische Ausdruck (via MathBlock) implementiert die MathElement‑Klasse. Sie ermöglicht Operationen auf der bestehenden Struktur und das Bilden komplexerer Ausdrücke. Alle Operationen haben zwei Parameter‑Sätze: MathElement oder Zeichenkette. Instanzen der MathematicalText-Klasse werden implizit aus angegebenen Zeichenketten erzeugt, wenn String‑Argumente verwendet werden. Mathematische Operationen in Aspose.Slides werden unten aufgeführt.

join‑Methode

  • join(String)
  • join(MathElement)

Verbindet ein mathematisches Element und bildet einen mathematischen Block. Beispiel:

var element1 = new aspose.slides.MathematicalText("x");
var element2 = new aspose.slides.MathematicalText("y");
var block = element1.join(element2);

divide‑Methode

  • divide(String)
  • divide(MathElement)
  • divide(String, MathFractionTypes)
  • divide(MathElement, MathFractionTypes)

Erzeugt einen Bruch des angegebenen Typs mit diesem Zähler und dem angegebenen Nenner. Beispiel:

var numerator = new aspose.slides.MathematicalText("x");
var fraction = numerator.divide("y", aspose.slides.MathFractionTypes.Linear);

enclose‑Methode

  • enclose()
  • enclose(Char, Char)

Setzt das Element in die angegebenen Zeichen, z. B. Klammern oder andere Begrenzungszeichen.

/**
 * <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:

var delimiter = new aspose.slides.MathematicalText("x").enclose('[', ']');
var delimiter2 = new aspose.slides.MathematicalText("elem1").join("elem2").enclose();

function‑Methode

  • function(String)
  • function(MathElement)

Erzeugt eine Funktion eines Arguments, wobei das aktuelle Objekt als Funktionsname verwendet wird.

/**
 * <p>
 * Takes a function of an argument using this instance as the function name
 * </p>
 */
public IMathFunction function(MathElement functionArgument);

/**
 * <p>
 * Takes a function of an argument using this instance as the function name
 * </p>
 */
public IMathFunction function(String functionArgument);

Beispiel:

var func = new aspose.slides.MathematicalText("sin").function("x");

asArgumentOfFunction‑Methode

  • asArgumentOfFunction(String)
  • asArgumentOfFunction(MathElement)
  • asArgumentOfFunction(MathFunctionsOfOneArgument)
  • asArgumentOfFunction(MathFunctionsOfTwoArguments, MathElement)
  • asArgumentOfFunction(MathFunctionsOfTwoArguments, String)

Nimmt die angegebene Funktion und verwendet die aktuelle Instanz als Argument. Sie können:

Beispiel:

var funcName = new aspose.slides.MathLimit(new aspose.slides.MathematicalText("lim"), new aspose.slides.MathematicalText("𝑛→∞"));
var func1 = new aspose.slides.MathematicalText("2x").asArgumentOfFunction(funcName);
var func2 = new aspose.slides.MathematicalText("x").asArgumentOfFunction("sin");
var func3 = new aspose.slides.MathematicalText("x").asArgumentOfFunction(aspose.slides.MathFunctionsOfOneArgument.Sin);
var func4 = new aspose.slides.MathematicalText("x").asArgumentOfFunction(aspose.slides.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 Sub‑ und Superskript. Man kann beide gleichzeitig links oder rechts setzen; ein einzelnes Sub‑ bzw. Superskript wird nur rechts unterstützt. Der Superscript kann zudem den mathematischen Grad einer Zahl darstellen.

Beispiel:

var script = new aspose.slides.MathematicalText("y").setSubSuperscriptOnTheLeft("2x", "3z");

radical‑Methode

  • radical(String)
  • radical(MathElement)

Bestimmt die mathematische Wurzel angegebenen Grades aus dem Argument.

Beispiel:

var radical = new aspose.slides.MathematicalText("x").radical("3");

setUpperLimit und setLowerLimit‑Methoden

  • setUpperLimit(String)
  • setUpperLimit(MathElement)
  • setLowerLimit(String)
  • setLowerLimit(MathElement)

Setzt obere bzw. untere Grenze. Hier geben obere bzw. untere Grenzen lediglich die Position des Arguments relativ zur Basis an.

Betrachten wir den Ausdruck:

todo:image_alt_text

Solche Ausdrücke können durch Kombination der Klassen MathFunction und MathLimit sowie der Operationen des MathElement wie folgt erstellt werden:

var mathExpression = new aspose.slides.MathematicalText("lim").setLowerLimit("x→∞").function("x");

nary‑ und integral‑Methoden

  • nary(MathNaryOperatorTypes, MathElement, MathElement)
  • nary(MathNaryOperatorTypes, String, String)
  • integral(MathIntegralTypes)
  • integral(MathIntegralTypes, MathElement, MathElement)
  • integral(MathIntegralTypes, String, String)
  • integral(MathIntegralTypes, MathElement, MathElement, MathLimitLocations)
  • integral(MathIntegralTypes, String, String, MathLimitLocations)

Beide Methoden erzeugen und geben einen N‑ary‑Operator zurück, der den Typ MathNaryOperator hat. Bei nary bestimmt die Aufzählung MathNaryOperatorTypes den Operator‑Typ (Summation, Union usw.), ohne Integrale. Die integral‑Methode bietet die spezialisierte Integral‑Operation mit der Aufzählung MathIntegralTypes.

Beispiel:

var baseArg = new aspose.slides.MathematicalText("x").join(new aspose.slides.MathematicalText("dx").toBox());
var integral = baseArg.integral(aspose.slides.MathIntegralTypes.Simple, "0", "1");

toMathArray‑Methode

toMathArray legt Elemente in ein vertikales Array. Wird diese Operation für eine Instanz von MathBlock aufgerufen, werden alle Kind‑Elemente in das zurückgegebene Array platziert.

Beispiel:

var arrayFunction = new aspose.slides.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 gruppiert mit einem Gruppierungszeichen, z. B. einer unteren geschweiften Klammer.
  • toBorderBox‑Methode legt in eine Rand‑Box.
  • toBox‑Methode legt in eine nicht‑visuelle Box (logische Gruppierung).

Beispiele:

var accent = new aspose.slides.MathematicalText("x").accent('̃');
var bar = new aspose.slides.MathematicalText("x").overbar();
var groupChr = new aspose.slides.MathematicalText("x").join("y").join("z").group('⏡', aspose.slides.MathTopBotPositions.Bottom, aspose.slides.MathTopBotPositions.Top);
var borderBox = new aspose.slides.MathematicalText("x+y+z").toBorderBox();
var boxedOperator = new aspose.slides.MathematicalText(":=").toBox();

FAQ

Wie kann ich einer PowerPoint‑Folie eine mathematische Gleichung hinzufügen?

Um eine mathematische Gleichung hinzuzufügen, müssen Sie ein MathShape‑Objekt erstellen, das automatisch einen mathematischen Abschnitt enthält. Dann holen Sie sich das MathParagraph aus der MathPortion und fügen MathBlock‑Objekte hinzu.

Ist es möglich, komplex verschachtelte mathematische Ausdrücke zu erzeugen?

Ja, Aspose.Slides ermöglicht das Erzeugen komplexer mathematischer Ausdrücke durch Verschachteln von MathBlocks. Jedes mathematische Element erbt von der MathElement‑Klasse, die Operationen (Join, Divide, Enclose usw.) zur Kombination zu komplexeren Strukturen bereitstellt.

Wie kann ich eine bestehende mathematische Gleichung aktualisieren oder ändern?

Um eine Gleichung zu ändern, greifen Sie über das MathParagraph auf die vorhandenen MathBlocks zu. Durch Methoden wie Join, Divide, Enclose usw. können Sie einzelne Elemente der Gleichung modifizieren. Nach der Bearbeitung speichern Sie die Präsentation, um die Änderungen zu übernehmen.