Mathematische Gleichungen zu PowerPoint-Präsentationen in C# hinzufügen

Übersicht

In PowerPoint können Sie eine mathematische Gleichung oder Formel schreiben und in Ihrer Präsentation anzeigen. Verschiedene mathematische Symbole stehen zur Verfügung und können zu Text oder Gleichungen hinzugefügt werden. Der Konstruktor für mathematische Gleichungen wird verwendet, um komplexe Formeln zu erstellen, wie zum Beispiel:

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

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

todo:image_alt_text

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

todo:image_alt_text

PowerPoint unterstützt eine breite Palette mathematischer Symbole zum Erstellen von Gleichungen. Das Generieren komplexer mathematischer Gleichungen in PowerPoint liefert jedoch häufig kein poliertes, professionelles Ergebnis. Deshalb greifen Benutzer, die häufig mathematische Präsentationen erstellen, oft auf Drittanbieterlösungen zurück, um besser aussehende Formeln zu erhalten.

Mit der Aspose.Slides‑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. Teilweise wird die Unterstützung zum Exportieren mathematischer Strukturen als Bilder bereitgestellt.

Wie man eine mathematische Gleichung erstellt

Mathematische Elemente werden verwendet, um jede mathematische Konstruktion aufzubauen, unabhängig vom Verschachtelungsgrad. Eine lineare Sammlung dieser Elemente bildet einen mathematischen Block, dargestellt durch die Klasse MathBlock. Die Klasse MathBlock stellt einen eigenständigen mathematischen Ausdruck, eine Formel oder Gleichung dar. MathPortion wird verwendet, um mathematischen Text zu halten (unterscheidet sich von der regulären Klasse Portion), während MathParagraph es Ihnen ermöglicht, eine Menge von MathBlock-Objekten zu manipulieren. Diese Klassen sind wesentlich für die Arbeit mit PowerPoint‑Mathe‑Gleichungen über die Aspose.Slides‑API.

Sehen wir, wie wir die folgende mathematische Gleichung mit der Aspose.Slides‑API erstellen können:

todo:image_alt_text

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

using (var presentation = new Presentation())
{
    var mathShape = presentation.Slides[0].Shapes.AddMathShape(0, 0, 720, 150);
}

Nach dem Erstellen der Form enthält sie standardmäßig bereits einen Absatz mit einem mathematischen Teil. Die Klasse MathPortion stellt einen Teil dar, der mathematischen Text enthält. Um auf den mathematischen Inhalt innerhalb einer MathPortion zuzugreifen, beziehen Sie sich auf die Variable MathParagraph:

var mathParagraph = (mathShape.TextFrame.Paragraphs[0].Portions[0] as MathPortion).MathParagraph;

Die Klasse MathParagraph ermöglicht das Lesen, Hinzufügen, Bearbeiten und Löschen von Math‑Blöcken (MathBlock), die aus einer Kombination mathematischer Elemente bestehen. Beispiel: Erstellen Sie einen Bruch und platzieren Sie ihn in der Präsentation:

var fraction = new MathematicalText("x").Divide("y");

mathParagraph.Add(new MathBlock(fraction));

Jedes mathematische Element wird durch eine Klasse repräsentiert, die das Interface IMathElement implementiert. Dieses Interface bietet zahlreiche Methoden, um mathematische Ausdrücke einfach zu erstellen, sodass Sie ziemlich komplexe Gleichungen mit nur einer Code‑Zeile konstruieren können. Beispielsweise würde der Satz des Pythagoras folgendermaßen aussehen:

var mathBlock = new MathematicalText("c")
    .SetSuperscript("2")
    .Join("=")
    .Join(new MathematicalText("a").SetSuperscript("2"))
    .Join("+")
    .Join(new MathematicalText("b").SetSuperscript("2"));

Operationen des Interfaces IMathElement sind in jedem Elementtyp implementiert, einschließlich der Klasse MathBlock.

Unten finden Sie das vollständige Quellcodebeispiel:

using (var presentation = new Presentation())
{
    var mathShape = presentation.Slides[0].Shapes.AddMathShape(0, 0, 720, 150);
    var mathParagraph = (mathShape.TextFrame.Paragraphs[0].Portions[0] as MathPortion).MathParagraph;

    var fraction = new MathematicalText("x").Divide("y");

    mathParagraph.Add(new MathBlock(fraction));

    var mathBlock = new MathematicalText("c")
        .SetSuperscript("2")
        .Join("=")
        .Join(new MathematicalText("a").SetSuperscript("2"))
        .Join("+")
        .Join(new MathematicalText("b").SetSuperscript("2"));

    mathParagraph.Add(mathBlock);

    presentation.Save("math.pptx", SaveFormat.Pptx);
}

Typen mathematischer Elemente

Mathematische Ausdrücke bestehen aus Sequenzen mathematischer Elemente. Ein mathematischer Block stellt eine solche Sequenz dar, und die Argumente dieser Elemente bilden eine verschachtelte, baumartige Struktur.

Es gibt viele Typen mathematischer Elemente, die zum Aufbau eines mathematischen Blocks verwendet werden können. Jedes dieser Elemente kann innerhalb eines anderen aggregiert werden, wodurch eine baumartige Struktur entsteht. Der einfachste Elementtyp ist einer, der keine anderen mathematischen Textelemente enthält.

Jeder Typ eines Mathe‑Elements implementiert das Interface IMathElement, wodurch Sie einen gemeinsamen Satz von mathematischen Operationen auf verschiedene Mathe‑Elementtypen anwenden können.

MathematicalText‑Klasse

Die Klasse MathematicalText stellt einen mathematischen Text dar – das zugrunde liegende Element aller mathematischen Konstruktionen. Mathematischer Text kann Operanden und Operatoren, Variablen oder beliebigen linearen Text repräsentieren.

Beispiel: 𝑎=𝑏+𝑐

MathFraction‑Klasse

Die Klasse MathFraction definiert ein Bruchobjekt, das aus Zähler und Nenner besteht, getrennt durch einen Bruchstrich. Der Bruchstrich kann horizontal oder diagonal sein, abhängig von den Eigenschaften des Bruchs. Das Bruchobjekt wird auch verwendet, um die Stapelfunktion darzustellen, bei der ein Element über einem anderen ohne Bruchstrich platziert wird.

Beispiel:

todo:image_alt_text

MathRadical‑Klasse

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

Beispiel:

todo:image_alt_text

MathFunction‑Klasse

Die Klasse MathFunction definiert eine Funktion eines Arguments. Sie enthält Eigenschaften wie Name, die den Funktionsnamen darstellt, und Base, die das Funktionsargument repräsentiert.

Beispiel:

todo:image_alt_text

MathNaryOperator‑Klasse

Die Klasse MathNaryOperator definiert ein N‑äres mathematisches Objekt, wie z. B. eine Summation oder ein Integral. Sie 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 und Integral.

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

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

Beispiel:

todo:image_alt_text

MathLimit‑Klasse

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

todo:image_alt_text

erstellt mittels einer Kombination der Elemente MathFunction und MathLimit wie folgt:

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

MathSubscriptElement, MathSuperscriptElement, MathRightSubSuperscriptElement, MathLeftSubSuperscriptElement‑Klassen

Diese Klassen definieren einen tiefgestellten Index bzw. einen hochgestellten Index. Sie können sowohl Tief- als auch Hochstellung gleichzeitig auf der linken oder rechten Seite eines Arguments festlegen, jedoch wird ein einzelner Tief- oder Hochstellung nur auf der rechten Seite unterstützt. Die MathSubscriptElement kann außerdem verwendet werden, um den mathematischen Grad einer Zahl festzulegen.

Beispiel:

todo:image_alt_text

MathMatrix‑Klasse

Die Klasse MathMatrix definiert das Matrix‑Objekt, das aus Kindelementen besteht, die in einer oder mehreren Zeilen und Spalten angeordnet sind. Es ist wichtig zu beachten, dass Matrizen keine eingebauten Begrenzungszeichen besitzen. Um die Matrix in Klammern zu setzen, verwenden Sie das Begrenzungszeichen‑Objekt IMathDelimiter. Null‑Argumente können verwendet werden, um Lücken in Matrizen zu erzeugen.

Beispiel:

todo:image_alt_text

MathArray‑Klasse

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

Beispiel:

todo:image_alt_text

Formatierung mathematischer Elemente

Beispiel:

todo:image_alt_text

  • Die Klasse MathBox gibt das logische Einrahmen (Verpacken) eines mathematischen Elements an. Ein eingekapseltes Objekt kann als Operator‑Emulator mit oder ohne Ausrichtungspunkt fungieren, als Zeilenumbruch‑Trigger dienen oder gruppiert werden, um Zeilenumbrüche innerhalb zu verhindern. Zum Beispiel sollte der Operator „==“ eingekapselt werden, um Zeilenumbrüche zu verhindern.

  • Die Klasse MathDelimiter definiert das Begrenzungszeichen‑Objekt, das aus öffnenden und schließenden Zeichen (wie Klammern, geschweiften Klammern, eckigen Klammern oder senkrechten Strichen) und einem oder mehreren mathematischen Elementen darin besteht, getrennt durch ein angegebenes Zeichen. Beispiele: (𝑥2); [𝑥2|𝑦2].

Beispiel:

todo:image_alt_text

  • Die Klasse MathAccent definiert die Akzent‑Funktion, die aus einer Basis und einem kombinierenden diakritischen Zeichen besteht.

Beispiel: 𝑎́.

  • Die Klasse MathBar definiert die Balken‑Funktion, die aus einem Basisargument und einem Über‑ oder Unterbalken besteht.

Beispiel:

todo:image_alt_text

  • Die Klasse MathGroupingCharacter definiert ein Gruppierungszeichen, das über oder unter einem Ausdruck platziert wird, typischerweise um die Beziehungen zwischen Elementen hervorzuheben.

Beispiel:

todo:image_alt_text

Mathematische Operationen

Jedes mathematische Element und jeder mathematische Ausdruck (über MathBlock) implementiert das Interface IMathElement. Dies ermöglicht es, Operationen an der bestehenden Struktur durchzuführen und komplexere mathematische Ausdrücke zu bilden. Alle Operationen besitzen zwei Parameter‑Sätze: entweder [IMathElement]‑ oder Zeichenketten‑Argumente. Instanzen der Klasse MathematicalText werden implizit aus angegebenen Zeichenketten erstellt, wenn Zeichenketten‑Argumente verwendet werden. Die in Aspose.Slides verfügbaren mathematischen Operationen sind nachfolgend aufgeführt.

Join‑Methode

Diese Methoden verbinden ein mathematisches Element und bilden einen mathematischen Block. Zum Beispiel:

IMathElement element1 = new MathematicalText("x");
IMathElement element2 = new MathematicalText("y");

IMathBlock block = element1.Join(element2);

Divide‑Methode

Diese Methoden erstellen einen Bruch des angegebenen Typs mit einem Zähler und einem angegebenen Nenner. Zum Beispiel:

IMathElement numerator = new MathematicalText("x");
IMathFraction fraction = numerator.Divide("y", MathFractionTypes.Linear);

Enclose‑Methode

Diese Methoden umschließen das Element mit angegebenen Zeichen, wie Klammern oder anderen Rahmenzeichen. Zum Beispiel:

IMathDelimiter delimiter = new MathematicalText("x"). Enclose('[', ']');
IMathDelimiter delimiter2 = new MathematicalText("elem1").Join("elem2").Enclose();

Function‑Methode

Diese Methoden erzeugen eine Funktion eines Arguments, wobei das aktuelle Objekt als Funktionsname verwendet wird. Zum Beispiel:

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

AsArgumentOfFunction‑Methode

Diese Methoden nehmen die angegebene Funktion unter Verwendung der aktuellen Instanz als Argument. Sie können:

Zum Beispiel:

var funcName = new MathLimit(new MathematicalText("lim"), new MathematicalText("𝑛→∞"));
var func1 = new MathematicalText("2x").AsArgumentOfFunction(funcName);
var func2 = new MathematicalText("x").AsArgumentOfFunction("sin");
var func3 = new MathematicalText("x").AsArgumentOfFunction(MathFunctionsOfOneArgument.Sin);
var func4 = new MathematicalText("x").AsArgumentOfFunction(MathFunctionsOfTwoArguments.Log, "3")

SetSubscript-, SetSuperscript‑, SetSubSuperscriptOnTheRight‑ und SetSubSuperscriptOnTheLeft‑Methoden

Diese Methoden setzen Tief- und Hochstellung. Sie können beide gleichzeitig auf der linken oder rechten Seite eines Arguments festlegen; ein einzelner Tief‑ oder Hochstellung ist jedoch nur auf der rechten Seite unterstützt. Der Superscript kann auch verwendet werden, um den mathematischen Grad einer Zahl festzulegen.

Beispiel:

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

Radical‑Methode

Diese Methoden geben die mathematische Wurzel des angegebenen Grades basierend auf dem angegebenen Argument an.

Beispiel:

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

SetUpperLimit‑ und SetLowerLimit‑Methoden

Diese Methoden nehmen eine obere bzw. untere Grenze, wobei „upper“ und „lower“ die Position des Arguments relativ zur Basis angeben.

Beispiel:

todo:image_alt_text

Solche Ausdrücke können durch eine Kombination der Klassen MathFunction und MathLimit zusammen mit Operationen des Interfaces IMathElement wie folgt erstellt werden:

var mathExpression = MathText.Create("lim").SetLowerLimit("x→∞").Function("x");

Nary‑ und Integral‑Methoden

Beide Nary‑ und Integral‑Methoden erzeugen und geben den N‑ary‑Operator zurück, der durch den Typ INaryOperator dargestellt wird. In der Nary‑Methode gibt die Aufzählung MathNaryOperatorTypes den Operator‑Typ an – z. B. Summation oder Union – wobei Integrale ausgeschlossen sind. In der Integral‑Methode wird eine spezialisierte Operation für Integrale bereitgestellt, wobei die Aufzählung MathIntegralTypes verwendet wird.

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 dieser Vorgang an einer MathBlock-Instanz aufgerufen, werden alle Kind‑Elemente in das zurückgegebene Array platziert.

Beispiel:

var arrayFunction = new MathematicalText("x").Join("y").ToMathArray();

Formatierungs‑Operationen: Accent, Overbar, Underbar, Group, ToBorderBox, ToBox

  • Accent legt ein Akzentzeichen (ein Zeichen oben am Element) fest.
  • Overbar und Underbar legen einen Balken oben bzw. unten fest.
  • Group legt in einer Gruppe ein Gruppierungszeichen wie eine geschweifte Klammer unten oder ein anderes Zeichen fest.
  • ToBorderBox legt ein Border‑Box‑Element fest.
  • ToBox legt ein nicht‑visuelles Box‑Element (logische Gruppierung) fest.

Beispiele:

var accent = new MathematicalText("x").Accent('\u0303');
var bar = new MathematicalText("x").Overbar();
var groupChr = new MathematicalText("x").Join("y").Join("z").Group('\u23E1', MathTopBotPositions.Bottom, MathTopBotPositions.Top);
var borderBox = new MathematicalText("x+y+z").ToBorderBox();
var boxedOperator = new MathematicalText(":=").ToBox();

FAQ

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

Um eine mathematische Gleichung hinzuzufügen, müssen Sie ein MathShape‑Objekt erstellen, das automatisch einen mathematischen Teil enthält. Anschließend rufen Sie das MathParagraph aus dem MathPortion ab und fügen MathBlock‑Objekte hinzu.

Ist es möglich, komplexe 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 Interface IMathElement, das die Anwendung von Operationen (Join, Divide, Enclose usw.) erlaubt, um Elemente zu komplexeren Strukturen zu kombinieren.

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

Um eine Gleichung zu aktualisieren, müssen Sie über das MathParagraph auf die bestehenden MathBlocks zugreifen. Anschließend können Sie mithilfe von Methoden wie Join, Divide, Enclose und anderen einzelne Elemente der Gleichung bearbeiten. Nach der Bearbeitung speichern Sie die Präsentation, um die Änderungen anzuwenden.