Mathematische Gleichungen zu PowerPoint-Präsentationen in .NET 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
  • Mathematischer Radikal
  • Mathematische Funktion
  • Grenzen und Log‑Funktionen
  • N‑äre Operationen
  • Matrix
  • Große Operatoren
  • Sin‑, Cos‑Funktionen

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

todo:image_alt_text

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

todo:image_alt_text

PowerPoint unterstützt eine breite Palette mathematischer Symbole zum Erstellen von Gleichungen. Das Erzeugen komplexer mathematischer Gleichungen in PowerPoint liefert jedoch oft kein gepflegtes, professionelles Ergebnis. Daher greifen Nutzer, die häufig mathematische Präsentationen erstellen, häufig zu Drittanbieter‑Lösungen für besser aussehende Formeln.

Mit der Aspose.Slides API können Sie programmgesteuert in C# mit mathematischen Gleichungen in PowerPoint‑Präsentationen arbeiten. Sie können neue mathematische Ausdrücke erstellen oder zuvor erstellte bearbeiten. Teilweise wird das Exportieren mathematischer Strukturen als Bilder unterstützt.

So erstellen Sie eine mathematische Gleichung

Mathematische Elemente werden verwendet, um jede mathematische Konstruktion aufzubauen, unabhängig von der Verschachtelungstiefe. Eine lineare Sammlung dieser Elemente bildet einen mathematischen Block, dargestellt durch die Klasse MathBlock. Die Klasse MathBlock repräsentiert einen eigenständigen mathematischen Ausdruck, eine Formel oder Gleichung. 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 für die Arbeit mit PowerPoint‑Mathe‑Gleichungen über die Aspose.Slides‑API unverzichtbar.

Sehen wir uns an, 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 zunächst 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 einer mathematischen Portion. Die Klasse MathPortion repräsentiert eine Portion, die mathematischen Text enthält. Um auf den mathematischen Inhalt einer MathPortion zuzugreifen, verwenden Sie 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 stellt zahlreiche Methoden bereit, um mathematische Ausdrücke leicht zu erzeugen, sodass Sie mit nur einer einzigen Code‑Zeile recht komplexe Gleichungen zusammenstellen können. Beispiel: Der Satz des Pythagoras sieht so aus:

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, einschließlich der Klasse MathBlock, implementiert.

Unten finden Sie das vollständige Beispiel‑Quellcode:

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

Mathematische Elementtypen

Mathematische Ausdrücke setzen sich aus Sequenzen mathematischer Elemente zusammen. Ein mathematischer Block repräsentiert eine solche Sequenz, 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. Jeder dieser Typen kann in einem anderen aggregiert werden, wodurch eine baumartige Struktur entsteht. Der einfachste Elementtyp ist einer, der keine weiteren mathematischen Textelemente enthält.

Jeder Elementtyp implementiert das Interface IMathElement, sodass Sie einen gemeinsamen Satz von mathematischen Operationen auf unterschiedliche Elementtypen anwenden können.

Klasse MathematicalText

Die Klasse MathematicalText stellt einen mathematischen Text dar – das grundlegende Element aller mathematischen Konstruktionen. Mathematischer Text kann Operanden und Operatoren, Variablen oder beliebigen linearen Text darstellen.

Beispiel: 𝑎=𝑏+𝑐

Klasse MathFraction

Die Klasse MathFraction definiert ein Bruch‑Objekt bestehend aus Zähler und Nenner, getrennt durch einen Bruchstrich. Der Bruchstrich kann horizontal oder diagonal sein, abhängig von den Bruch‑Eigenschaften. Das Bruch‑Objekt wird auch für die Stapelfunktion verwendet, bei der ein Element über ein anderes ohne Bruchstrich gesetzt wird.

Beispiel:

todo:image_alt_text

Klasse MathRadical

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

Beispiel:

todo:image_alt_text

Klasse MathFunction

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

Beispiel:

todo:image_alt_text

Klasse MathNaryOperator

Die Klasse MathNaryOperator definiert ein N‑äres mathematisches Objekt, wie Summation oder 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 schließt einfache Operatoren wie Addition, Subtraktion usw. nicht ein. Diese werden durch ein einzelnes Text‑MathematicalText dargestellt.

Beispiel:

todo:image_alt_text

Klasse MathLimit

Die Klasse MathLimit erzeugt obere oder untere Grenzen. Sie definiert das Grenzen‑Objekt, das Text auf der Grundlinie und verkleinerten Text unmittelbar darüber bzw. darunter enthält. Dieses Element beinhaltet nicht das Wort „lim“, ermöglicht aber das Platzieren von Text oben oder unten im Ausdruck. Der Ausdruck

todo:image_alt_text

wird mithilfe einer Kombination der Elemente MathFunction und MathLimit wie folgt erstellt:

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

Klassen MathSubscriptElement, MathSuperscriptElement, MathRightSubSuperscriptElement, MathLeftSubSuperscriptElement

Diese Klassen definieren einen tiefen bzw. hohen Index. Sie können sowohl Tief‑ als auch Hochindex gleichzeitig auf der linken oder rechten Seite eines Arguments setzen, wobei ein einzelner Tief‑ oder Hochindex nur auf der rechten Seite unterstützt wird. Der MathSubscriptElement kann zudem verwendet werden, um den mathematischen Grad einer Zahl festzulegen.

Beispiel:

todo:image_alt_text

Klasse MathMatrix

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

Beispiel:

todo:image_alt_text

Klasse MathArray

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

  • Klasse MathBox: Definiert die logische Box‑Umhüllung eines mathematischen Elements. Ein „geboxtes“ Objekt kann als Operator‑Emulator dienen – mit oder ohne Ausrichtungspunkt – als Zeilenumbruch‑Marker oder gruppiert werden, um Zeilenumbrüche innerhalb zu verhindern. Beispiel: Der Operator „==“ sollte ge‑boxed werden, um Zeilenumbrüche zu vermeiden.

  • Klasse MathDelimiter: Definiert das Begrenzungs‑Objekt, das Öffnungs‑ und Schließzeichen (z. B. Klammern, geschweifte Klammern, eckige Klammern oder senkrechte Striche) sowie ein oder mehrere mathematische Elemente darin enthält, getrennt durch ein angegebenes Zeichen. Beispiele: (𝑥2); [𝑥2|𝑦2].

Beispiel:

todo:image_alt_text

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

Beispiel: 𝑎́.

  • Klasse MathBar: Definiert die Balken‑Funktion, die aus einem Basis‑Argument und einem Über‑ oder Unterbalken besteht.

Beispiel:

todo:image_alt_text

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

Beispiel:

todo:image_alt_text

Mathematische Operationen

Jedes mathematische Element und jeder mathematische Ausdruck (via MathBlock) implementiert das Interface IMathElement. Damit können Sie Operationen auf der bestehenden Struktur ausführen und komplexere Ausdrücke bilden. Alle Operationen besitzen zwei Parameter‑Varianten: entweder [IMathElement]‑ oder String‑Argumente. Instanzen der Klasse MathematicalText werden implizit aus angegebenen Strings erzeugt, wenn String‑Argumente verwendet werden. Die in Aspose.Slides verfügbaren mathematischen Operationen sind nachfolgend aufgelistet.

Methode Join

Diese Methoden verknüpfen ein mathematisches Element und bilden einen mathematischen Block. Beispiel:

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

IMathBlock block = element1.Join(element2);

Methode Divide

Diese Methoden erzeugen einen Bruch des angegebenen Typs mit Zähler und angegebenem Nenner. Beispiel:

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

Methode Enclose

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

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

Methode Function

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

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

Methode AsArgumentOfFunction

Diese Methoden verwenden das aktuelle Objekt als Argument einer angegebenen Funktion. Sie können:

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")

Methoden SetSubscript, SetSuperscript, SetSubSuperscriptOnTheRight, SetSubSuperscriptOnTheLeft

Diese Methoden setzen Tief‑ bzw. Hochindizes. Sie können beide gleichzeitig auf der linken oder rechten Seite des Arguments setzen; ein einzelner Tief‑ oder Hochindex wird jedoch nur auf der rechten Seite unterstützt. Der Superscript kann zudem verwendet werden, um den mathematischen Grad einer Zahl festzulegen.

Beispiel:

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

Methode Radical

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

Beispiel:

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

Methoden SetUpperLimit und SetLowerLimit

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

Betrachten wir den Ausdruck:

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

Methoden Nary und Integral

Beide Methoden, Nary und Integral, erzeugen und geben den N‑ary‑Operator zurück, der vom Typ INaryOperator ist. In der Nary‑Methode gibt die Enumeration MathNaryOperatorTypes den Operator‑Typ an – z. B. Summation oder Union – jedoch keine Integrale. In der Integral‑Methode wird ein spezialisierter Vorgang für Integrale bereitgestellt, wobei die Enumeration MathIntegralTypes verwendet wird.

Beispiel:

IMathBlock baseArg = new MathematicalText("x").Join(new MathematicalText("dx").ToBox());
IMathNaryOperator integral = baseArg.Integral(MathIntegralTypes.Simple, "0", "1");

Methode ToMathArray

ToMathArray legt Elemente in ein vertikales Array. Wird diese Operation an einer MathBlock-Instanz aufgerufen, werden alle Kind‑Elemente in das zurückgegebene Array eingefügt.

Beispiel:

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

Formatierungsoperationen: Accent, Overbar, Underbar, Group, ToBorderBox, ToBox

  • Methode Accent (Accent) setzt ein Akzentzeichen (ein Zeichen oben am Element).
  • Methoden Overbar (Overbar) und Underbar (Underbar) setzen einen Balken oben bzw. unten.
  • Methode Group (Group) legt das Element in einer Gruppe mithilfe eines Gruppierungszeichens, z. B. einer unteren geschweiften Klammer, ab.
  • Methode ToBorderBox (ToBorderBox) legt das Element in einer Rand‑Box ab.
  • Methode ToBox (ToBox) legt das Element in einer nicht‑visuellen Box (logische Gruppierung) ab.

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 füge ich einer PowerPoint‑Folie eine mathematische Gleichung hinzu?

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

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

Ja, Aspose.Slides erlaubt das Erstellen komplexer mathematischer Ausdrücke durch Verschachteln von MathBlocks. Jedes mathematische Element implementiert das Interface IMathElement, mit dem Sie Operationen (Join, Divide, Enclose usw.) anwenden können, um Elemente zu komplexeren Strukturen zu kombinieren.

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. Dann können Sie Methoden wie Join, Divide, Enclose usw. verwenden, um einzelne Elemente der Gleichung zu verändern. Nach der Bearbeitung speichern Sie die Präsentation, um die Änderungen zu übernehmen.