PowerPoint Math-Gleichungen

Überblick

In PowerPoint ist es möglich, eine mathematische Gleichung oder Formel zu schreiben und sie in der Präsentation darzustellen. Dazu werden verschiedene mathematische Symbole in PowerPoint repräsentiert und können dem Text oder der Gleichung hinzugefügt werden. Dafür wird der Konstruktor für mathematische Gleichungen in PowerPoint verwendet, der hilft, komplexe Formeln wie:

  • Mathematische Brüche
  • Mathematische Wurzeln
  • Mathematische Funktionen
  • Grenzwerte und logarithmische Funktionen
  • N-äre Operationen
  • Matrizen
  • Große Operatoren
  • Sinus-, Cosinusfunktionen

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

todo:image_alt_text

Dies erstellt einen matematischen Text in XML, der in PowerPoint wie folgt angezeigt werden kann:

todo:image_alt_text

PowerPoint unterstützt zahlreiche mathematische Symbole zur Erstellung von mathematischen Gleichungen. Das Erstellen komplizierter mathematischer Gleichungen in PowerPoint führt jedoch oft nicht zu einem guten und professionell aussehenden Ergebnis. Benutzer, die häufig mathematische Präsentationen erstellen müssen, greifen auf Drittanbieter-Lösungen zurück, um ansprechend aussehende mathematische Formeln zu erstellen.

Mit der 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 zuvor erstellte. Der Export mathematischer Strukturen in Bilder wird ebenfalls teilweise unterstützt.

So erstellen Sie eine mathematische Gleichung

Mathematische Elemente werden zum Erstellen beliebiger mathematischer Konstruktionen mit jeder Verschachtelungsebene verwendet. Eine lineare Sammlung mathematischer Elemente bildet einen mathematischen Block, der durch die MathBlock-Klasse repräsentiert wird. Die MathBlock-Klasse ist im Wesentlichen ein separates mathematisches Ausdruck, Formel oder Gleichung. MathPortion ist ein mathematischer Anteil, der dazu verwendet wird, mathematischen Text zu halten (nicht zu verwechseln mit Portion). Die MathParagraph-Klasse ermöglicht die Manipulation einer Menge von Mathematikblöcken. Die oben genannten Klassen sind der Schlüssel zur Arbeit mit mathematischen Gleichungen in PowerPoint über die Aspose.Slides API.

Sehen wir uns an, wie wir die folgende mathematische Gleichung über die Aspose.Slides API erstellen können:

todo:image_alt_text

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

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 der Erstellung wird die Form standardmäßig bereits einen Absatz mit einem mathematischen Anteil enthalten. Die MathPortion-Klasse ist ein Anteil, der einen mathematischen Text enthält. Um auf den mathematischen Inhalt in der MathPortion zuzugreifen, verweisen Sie 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 Mathematikblöcken (MathBlock), die aus einer Kombination von mathematischen Elementen bestehen. Erstellen Sie beispielsweise 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 bietet viele Methoden zum einfachen Erstellen mathematischer Ausdrücke. Sie können mit einer einzigen Zeile Code einen ziemlich komplexen mathematischen Ausdruck erstellen. Zum Beispiel würde der Satz des Pythagoras so aussehen:

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

Die Operationen des IMathElement-Interfaces sind in jedem Elementtyp implementiert, einschließlich des MathBlock.

Das 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 werden aus Sequenzen mathematischer Elemente gebildet. Die Sequenz mathematischer Elemente wird durch einen mathematischen Block dargestellt, und die Argumente der mathematischen Elemente bilden eine baumartige Verschachtelung.

Es gibt viele Arten von mathematischen Elementen, die zur Konstruktion eines mathematischen Blocks verwendet werden können. Jedes dieser Elemente kann in ein anderes Element aufgenommen (aggregiert) werden. Das heißt, Elemente sind tatsächlich Container für andere und bilden eine baumartige Struktur. Der einfachste Elementtyp enthält keine anderen Elemente des mathematischen Textes.

Jeder Typ eines mathematischen Elements implementiert das IMathElement-Interface, das die Verwendung eines gemeinsamen Satzes von mathematischen Operationen auf verschiedenen Typen von mathematischen Elementen ermöglicht.

MathematicalText-Klasse

Die MathematicalText-Klasse repräsentiert einen mathematischen Text - das zugrunde liegende Element aller mathematischen Konstruktionen. Mathematischer Text kann Operanden und Operatoren, Variablen und jeden anderen linearen Text darstellen.

Beispiel: 𝑎=𝑏+𝑐

MathFraction-Klasse

Die MathFraction-Klasse spezifiziert das Bruchobjekt, das aus einem Zähler und einem Nenner besteht, die durch eine Bruchlinie getrennt sind. Die Bruchlinie kann horizontal oder schräg sein, je nach Bruchteilen. Das Bruchobjekt wird auch verwendet, um die Stapel-Funktion darzustellen, die ein Element über einem anderen anordnet, ohne Bruchlinie.

Beispiel:

todo:image_alt_text

MathRadical-Klasse

Die MathRadical-Klasse spezifiziert die radikale Funktion (mathematische Wurzel), bestehend aus einer Basis und einem optionalen Grad.

Beispiel:

todo:image_alt_text

MathFunction-Klasse

Die MathFunction-Klasse spezifiziert eine Funktion eines Arguments. Enthält Eigenschaften: getName - Funktionsname und getBase - Funktion Argument.

Beispiel:

todo:image_alt_text

MathNaryOperator-Klasse

Die MathNaryOperator-Klasse spezifiziert ein N-äres mathematisches Objekt, wie Summation und Integral. Es 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.

Diese Klasse enthält keine einfachen Operatoren wie Addition, Subtraktion usw. Sie werden durch ein einzelnes Textelement - MathematicalText dargestellt.

Beispiel:

todo:image_alt_text

MathLimit-Klasse

Die MathLimit-Klasse erstellt die obere oder untere Grenze. Sie spezifiziert das Grenzwertobjekt, das aus Text auf der Basislinie und sofort darüber oder darunter reduziertem Text besteht. Dieses Element beinhaltet nicht das Wort „lim“, erlaubt jedoch die Platzierung von Text an der Ober- oder Unterseite des Ausdrucks. So wird der Ausdruck

todo:image_alt_text

mit einer Kombination aus MathFunction und MathLimit-Elementen so erstellt:

MathLimit funcName = new MathLimit(new MathematicalText("lim"), new MathematicalText("𝑥→∞"));

MathFunction mathFunc = new MathFunction(funcName, new MathematicalText("𝑥"));

MathSubscriptElement, MathSuperscriptElement, MathRightSubSuperscriptElement, MathLeftSubSuperscriptElement-Klassen

Die folgenden Klassen spezifizieren einen tiefen Index oder einen oberen Index. Sie können gleichzeitig Subscript und Superscript auf der linken oder rechten Seite eines Arguments setzen, aber ein einzelnes Subscript oder Superscript wird nur auf der rechten Seite unterstützt. Der MathSubscriptElement kann auch verwendet werden, um den mathematischen Grad einer Zahl zu setzen.

Beispiel:

todo:image_alt_text

MathMatrix-Klasse

Die MathMatrix-Klasse spezifiziert das Matrixobjekt, das aus untergeordneten Elementen besteht, die in einer oder mehreren Zeilen und Spalten angeordnet sind. Es ist wichtig zu beachten, dass Matrizen keine eingebauten Trennsymbole haben. Um die Matrix in Klammern zu setzen, sollten Sie das Trennzeichenobjekt - IMathDelimiter - verwenden. Null-Argumente können verwendet werden, um Lücken in Matrizen zu erstellen.

Beispiel:

todo:image_alt_text

MathArray-Klasse

Die MathArray-Klasse spezifiziert ein vertikales Array von Gleichungen oder beliebigen mathematischen Objekten.

Beispiel:

todo:image_alt_text

Formatierung mathematischer Elemente

  • Die MathBorderBox-Klasse: Zeichnet einen rechteckigen oder einen anderen Rahmen um das IMathElement.

    Beispiel: todo:image_alt_text

  • Die MathBox-Klasse: Spezifiziert das logische Boxen (Verpacken) des mathematischen Elements. Beispielsweise kann ein eingekästetes Objekt als Operator-Emulator mit oder ohne Ausrichtungspunkt dienen, als Zeilenumbruch dienen oder so gruppiert werden, dass Zeilenumbrüche innerhalb nicht erlaubt sind. Beispielsweise sollte der “==” Operator eingekästet werden, um Zeilenumbrüche zu verhindern.

  • Die MathDelimiter-Klasse: Spezifiziert das Trennobjekt, das aus öffnenden und schließenden Zeichen (wie Klammern, geschweifte Klammern, eckige Klammern und senkrechte Striche) besteht und ein oder mehrere mathematische Elemente innerhalb enthält, die durch ein angegebenes Zeichen getrennt sind. Beispiele: (𝑥2); [𝑥2|𝑦2].

    Beispiel: todo:image_alt_text

  • Die MathAccent-Klasse: Spezifiziert die Akzentfunktion, die aus einer Basis und einem kombinierten diakritischen Zeichen besteht.

    Beispiel: 𝑎́.

  • Die MathBar-Klasse: Spezifiziert die Linienfunktion, die aus einem Basisargument und einem Über- oder Unterstrich besteht.

    Beispiel: todo:image_alt_text

  • Die MathGroupingCharacter-Klasse: Spezifiziert ein Gruppierungssymbol über oder unter einem Ausdruck, um normalerweise die Beziehungen zwischen den Elementen hervorzuheben.

    Beispiel: todo:image_alt_text

Mathematische Operationen

Jedes mathematische Element und jede mathematische Ausdruck (via MathBlock) implementiert das IMathElement-Interface. Es ermöglicht Ihnen, Operationen auf der vorhandenen Struktur zu verwenden und komplexere mathematische Ausdrücke zu bilden. Alle Operationen haben zwei Parametersätze: entweder IMathElement oder string als Argumente. Instanzen der MathematicalText-Klasse werden implizit aus angegebenen Zeichenfolgen erstellt, wenn Zeichenfolgenargumente verwendet werden. Die in Aspose.Slides verfügbaren mathematischen Operationen sind unten aufgeführt.

Join-Methode

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

IMathElement element1 = new MathematicalText("x");

IMathElement element2 = new MathematicalText("y");

IMathBlock block = element1.join(element2);

Divide-Methode

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

IMathElement numerator = new MathematicalText("x");

IMathFraction fraction = numerator.divide("y", MathFractionTypes.Linear);

Enclose-Methode

Schließt das Element in angegebenen Zeichen wie Klammern oder einem anderen Zeichen als Rahmen ein.

/**
 * <p>
 * Schließt ein mathe Element in Klammern ein
 * </p>
 */
public IMathDelimiter enclose();

/**
 * <p>
 * Schließt dieses Element in angegebenen Zeichen wie Klammern oder anderen Zeichen als Rahmen ein
 * </p>
 */
public IMathDelimiter enclose(char beginningCharacter, char endingCharacter);

Zum 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>
 * Nimmt eine Funktion eines Arguments und verwendet diese Instanz als Funktionsnamen
 * </p>
 */
public IMathFunction function(IMathElement functionArgument);

/**
 * <p>
 * Nimmt eine Funktion eines Arguments und verwendet diese Instanz als Funktionsnamen
 * </p>
 */
public IMathFunction function(String functionArgument);

Zum Beispiel:

IMathFunction func = new MathematicalText("sin").function("x");

AsArgumentOfFunction-Methode

Nimmt die angegebene Funktion, indem die aktuelle Instanz als Argument verwendet wird. Sie können:

Zum 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

Setzt Subscript und Superscript. Sie können Subscript und Superscript gleichzeitig auf der linken oder rechten Seite des Arguments setzen, aber ein einzelnes Subscript oder Superscript wird nur auf der rechten Seite unterstützt. Das Superscript kann auch verwendet werden, um den mathematischen Grad einer Zahl zu setzen.

Beispiel:

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

Radical-Methode

Spezifiziert die mathematische Wurzel des gegebenen Grades des angegebenen Arguments.

Beispiel:

IMathRadical radical = new MathematicalText("x").radical("3");

SetUpperLimit und SetLowerLimit-Methoden

Nimmt die obere oder untere Grenze. Hier zeigen der obere und der untere Wert einfach die Position des Arguments relativ zur Basis an.

Betrachten wir einen Ausdruck: 

todo:image_alt_text

Solche Ausdrücke können durch eine Kombination aus den Klassen MathFunction und MathLimit sowie den Operationen des IMathElement wie folgt erstellt werden:

IMathFunction mathExpression = new MathematicalText("lim").setLowerLimit("x→∞").function("x");

Nary- und Integral-Methoden

Sowohl die nary- als auch die integral-Methoden erstellen und geben den N-ären Operator vom Typ IMathNaryOperator zurück. In der nary-Methode spezifiziert die Enumeration MathNaryOperatorTypes den Typ des Operators: Summation, Vereinigung usw., jedoch nicht Integrale. In der Integral-Methode gibt es den spezialisierten Integral-Operator mit der Enumeration von Integraltypen MathIntegralTypes

Beispiel:

IMathBlock baseArg = new MathematicalText("x").join(new MathematicalText("dx").toBox());

IMathNaryOperator integral = baseArg.integral(MathIntegralTypes.Simple, "0", "1");

ToMathArray-Methode

Die toMathArray platziert Elemente in einem vertikalen Array. Wenn diese Operation für eine Instanz von MathBlock aufgerufen wird, werden alle untergeordneten Elemente im zurückgegebenen Array platziert.

Beispiel:

IMathArray arrayFunction = new MathematicalText("x").join("y").toMathArray();

Formatierungsvorgänge: Akzent, Überstreichen, Unterstreichen, Gruppieren, InBorderBox, InBox

  • Die accent Methode setzt ein Akzentzeichen (ein Zeichen oben auf dem Element).
  • Die overbar und underbar Methoden setzen eine Linie oben oder unten.
  • Die group Methode platziert in einer Gruppe mithilfe eines Gruppierungszeichens wie einer unteren geschweiften Klammer oder einem anderen.
  • Die toBorderBox Methode platziert in einem Randkasten.
  • Die toBox Methode platziert in einer nicht sichtbaren Box (logische Gruppierung).

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();