Ajouter des équations mathématiques aux présentations PowerPoint en C#

Aperçu

Dans PowerPoint, vous pouvez écrire une équation ou une formule mathématique et l’afficher dans votre présentation. Divers symboles mathématiques sont disponibles et peuvent être ajoutés au texte ou aux équations. Le constructeur d’équations mathématiques est utilisé pour créer des formules complexes comme :

  • Fraction mathématique
  • Racine mathématique
  • Fonction mathématique
  • Limites et fonctions logarithmiques
  • Opérations n-aires
  • Matrice
  • Opérateurs larges
  • Fonctions sin, cos

Pour ajouter une équation mathématique dans PowerPoint, le menu Insertion -> Équation est utilisé :

todo:image_alt_text

Cela créera un texte mathématique en XML qui pourra être affiché dans PowerPoint comme suit :

todo:image_alt_text

PowerPoint prend en charge un large éventail de symboles mathématiques pour créer des équations. Cependant, générer des équations mathématiques complexes dans PowerPoint ne donne souvent pas un résultat poli et professionnel. En conséquence, les utilisateurs qui créent fréquemment des présentations mathématiques se tournent souvent vers des solutions tierces pour obtenir des formules plus esthétiques.

En utilisant l’API Aspose.Slides, vous pouvez travailler avec des équations mathématiques dans les présentations PowerPoint de façon programmatique en C#. Créez de nouvelles expressions mathématiques ou modifiez celles déjà créées. Un support partiel est disponible pour l’exportation des structures mathématiques sous forme d’images.

Comment créer une équation mathématique

Les éléments mathématiques sont utilisés pour construire toute construction mathématique, quel que soit le niveau d’imbrication. Une collection linéaire de ces éléments forme un bloc mathématique, représenté par la classe MathBlock. La classe MathBlock représente une expression, une formule ou une équation mathématique autonome. MathPortion sert à contenir du texte mathématique (distinct de la classe Portion ordinaire), tandis que MathParagraph vous permet de manipuler un ensemble d’objets MathBlock. Ces classes sont essentielles pour travailler avec les équations mathématiques PowerPoint via l’API Aspose.Slides.

Voyons comment créer l’équation mathématique suivante à l’aide de l’API Aspose.Slides :

todo:image_alt_text

Pour ajouter une expression mathématique à la diapositive, ajoutez d’abord une forme qui contiendra le texte mathématique :

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

Après la création de la forme, elle contient déjà un paragraphe avec une portion mathématique par défaut. La classe MathPortion représente une portion qui contient du texte mathématique. Pour accéder au contenu mathématique à l’intérieur d’une MathPortion, référez‑vous à la variable MathParagraph :

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

La classe MathParagraph vous permet de lire, ajouter, modifier et supprimer des blocs mathématiques (MathBlock), qui se composent d’une combinaison d’éléments mathématiques. Par exemple, créez une fraction et placez‑la dans la présentation :

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

mathParagraph.Add(new MathBlock(fraction));

Chaque élément mathématique est représenté par une classe qui implémente l’interface IMathElement. Cette interface fournit de nombreuses méthodes pour créer facilement des expressions mathématiques, vous permettant de construire des équations assez complexes en une seule ligne de code. Par exemple, le théorème de Pythagore s’écrirait ainsi :

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

Les opérations de l’interface IMathElement sont implémentées dans chaque type d’élément, y compris la classe MathBlock.

Voici le code complet d’exemple :

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

Types d’éléments mathématiques

Les expressions mathématiques sont composées de séquences d’éléments mathématiques. Un bloc mathématique représente une telle séquence, et les arguments de ces éléments forment une structure imbriquée en forme d’arbre.

Il existe de nombreux types d’éléments mathématiques qui peuvent être utilisés pour construire un bloc mathématique. Chacun de ces éléments peut être agrégé à l’intérieur d’un autre, formant ainsi une structure arborescente. Le type d’élément le plus simple est celui qui ne contient aucun autre élément de texte mathématique.

Chaque type d’élément mathématique implémente l’interface IMathElement, ce qui vous permet d’utiliser un ensemble commun d’opérations mathématiques sur différents types d’éléments.

Classe MathematicalText

La classe MathematicalText représente un texte mathématique — l’élément sous‑jacent de toutes les constructions mathématiques. Le texte mathématique peut représenter des opérandes et opérateurs, des variables ou tout autre texte linéaire.

Exemple : 𝑎=𝑏+𝑐

Classe MathFraction

La classe MathFraction spécifie un objet fraction composé d’un numérateur et d’un dénominateur séparés par une barre de fraction. La barre peut être horizontale ou diagonale, selon les propriétés de la fraction. L’objet fraction sert également à représenter la fonction « stack », qui place un élément au-dessus d’un autre sans barre de fraction.

Exemple :

todo:image_alt_text

Classe MathRadical

La classe MathRadical spécifie la fonction radicande (racine mathématique), composée d’une base et d’un degré optionnel.

Exemple :

todo:image_alt_text

Classe MathFunction

La classe MathFunction spécifie une fonction d’un argument. Elle possède des propriétés telles que Name, qui représente le nom de la fonction, et Base, qui représente l’argument de la fonction.

Exemple :

todo:image_alt_text

Classe MathNaryOperator

La classe MathNaryOperator spécifie un objet mathématique N‑aire, tel qu’une sommation ou une intégrale. Elle comprend un opérateur, une base (ou opérande) et des limites supérieures et inférieures optionnelles. Parmi les opérateurs N‑aires figurent la sommation, l’union, l’intersection et l’intégrale.

Cette classe n’inclut pas les opérateurs simples comme l’addition ou la soustraction ; ceux‑ci sont représentés par un texte unique MathematicalText.

Exemple :

todo:image_alt_text

Classe MathLimit

La classe MathLimit crée une limite supérieure ou inférieure. Elle spécifie l’objet limite, composé de texte sur la ligne de base et de texte réduit placé immédiatement au-dessus ou en dessous. Cet élément ne comprend pas le mot « lim », mais permet de placer du texte en haut ou en bas de l’expression. Ainsi, l’expression

todo:image_alt_text

est créée à l’aide d’une combinaison des éléments MathFunction et MathLimit comme suit :

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

Classes MathSubscriptElement, MathSuperscriptElement, MathRightSubSuperscriptElement, MathLeftSubSuperscriptElement

Ces classes spécifient un indice inférieur ou supérieur. Vous pouvez définir à la fois l’indice inférieur et supérieur simultanément du côté gauche ou droit d’un argument, mais un indice simple n’est supporté que du côté droit. L’MathSubscriptElement peut également être utilisé pour définir le degré mathématique d’un nombre.

Exemple :

todo:image_alt_text

Classe MathMatrix

La classe MathMatrix spécifie l’objet Matrice, composé d’éléments enfants disposés en une ou plusieurs lignes et colonnes. Il est important de noter que les matrices n’ont pas de délimiteurs intégrés. Pour entourer la matrice de crochets, utilisez l’objet délimiteur IMathDelimiter. Des arguments nuls peuvent être utilisés pour créer des espaces dans les matrices.

Exemple :

todo:image_alt_text

Classe MathArray

La classe MathArray spécifie un tableau vertical d’équations ou de tout objet mathématique.

Exemple :

todo:image_alt_text

Mise en forme des éléments mathématiques

Exemple :

todo:image_alt_text

  • Classe MathBox : spécifie l’encapsulation logique d’un élément mathématique. Un objet encadré peut servir d’émulateur d’opérateur — avec ou sans point d’ancrage — fonctionner comme un point de rupture de ligne, ou être groupé pour empêcher les coupures de ligne à l’intérieur. Par exemple, l’opérateur « == » doit être encadré pour éviter les coupures.

  • Classe MathDelimiter : spécifie l’objet délimiteur, composé de caractères d’ouverture et de fermeture (parenthèses, accolades, crochets ou barres verticales) et d’un ou plusieurs éléments mathématiques à l’intérieur, séparés par un caractère spécifié. Exemples : (𝑥2) ; [𝑥2|𝑦2].

Exemple :

todo:image_alt_text

  • Classe MathAccent : spécifie la fonction accent, composée d’une base et d’une marque diacritique combinée.

Exemple : 𝑎́.

  • Classe MathBar : spécifie la fonction barre, composée d’un argument de base et d’une barre supérieure ou inférieure.

Exemple :

todo:image_alt_text

  • Classe MathGroupingCharacter : spécifie un symbole de groupement placé au-dessus ou au-dessous d’une expression, généralement pour mettre en évidence les relations entre éléments.

Exemple :

todo:image_alt_text

Opérations mathématiques

Chaque élément mathématique et chaque expression mathématique (via MathBlock) implémente l’interface IMathElement. Cela vous permet d’effectuer des opérations sur la structure existante et de former des expressions plus complexes. Toutes les opérations disposent de deux jeux de paramètres : soit des arguments [IMathElement], soit des chaînes de caractères. Les instances de la classe MathematicalText sont créées implicitement à partir des chaînes spécifiées lorsqu’on utilise des arguments de type string. Les opérations mathématiques disponibles dans Aspose.Slides sont listées ci‑dessous.

Méthode Join

Ces méthodes joignent un élément mathématique et forment un bloc mathématique. Exemple :

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

IMathBlock block = element1.Join(element2);

Méthode Divide

Ces méthodes créent une fraction du type spécifié avec un numérateur et le dénominateur indiqué. Exemple :

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

Méthode Enclose

Ces méthodes entourent l’élément de caractères spécifiés, tels que des parenthèses ou d’autres caractères de cadrage. Exemple :

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

Méthode Function

Ces méthodes prennent une fonction d’un argument en utilisant l’objet actuel comme nom de fonction. Exemple :

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

Méthode AsArgumentOfFunction

Ces méthodes utilisent la fonction spécifiée en prenant l’instance actuelle comme argument. Vous pouvez :

Exemple :

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

Méthodes SetSubscript, SetSuperscript, SetSubSuperscriptOnTheRight, SetSubSuperscriptOnTheLeft

Ces méthodes définissent l’indice inférieur et supérieur. Vous pouvez les définir simultanément du côté gauche ou droit de l’argument ; cependant, un seul indice est supporté uniquement du côté droit. Le Superscript peut également être utilisé pour définir le degré mathématique d’un nombre.

Exemple :

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

Méthode Radical

Ces méthodes spécifient la racine mathématique du degré donné à partir de l’argument indiqué.

Exemple :

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

Méthodes SetUpperLimit et SetLowerLimit

Ces méthodes définissent une limite supérieure ou inférieure, où « upper » et « lower » indiquent la position de l’argument par rapport à la base.

Considérons l’expression :

todo:image_alt_text

De telles expressions peuvent être créées à l’aide d’une combinaison des classes MathFunction et MathLimit, ainsi que des opérations de l’interface IMathElement, comme suit :

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

Méthodes Nary et Integral

Les deux méthodes Nary et Integral créent et renvoient l’opérateur N‑aire représenté par le type INaryOperator. Dans la méthode Nary, l’énumération MathNaryOperatorTypes spécifie le type d’opérateur — comme la sommation ou l’union — excluant les intégrales. Dans la méthode Integral, une opération spécialisée pour les intégrales est fournie, utilisant l’énumération MathIntegralTypes.

Exemple :

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

Méthode ToMathArray

ToMathArray place les éléments dans un tableau vertical. Si cette opération est appelée sur une instance de MathBlock, tous ses éléments enfants seront placés dans le tableau retourné.

Exemple :

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

Opérations de mise en forme : Accent, Overbar, Underbar, Group, ToBorderBox, ToBox

  • Méthode Accent : définit une marque d’accent (un caractère au-dessus de l’élément).
  • Méthodes Overbar et Underbar : définissent une barre au-dessus ou en dessous.
  • Méthode Group : place dans un groupe à l’aide d’un caractère de groupement tel qu’une accolade inférieure ou autre.
  • Méthode ToBorderBox : place dans une bordure‑boîte.
  • Méthode ToBox : place dans une boîte non visuelle (groupement logique).

Exemples :

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

Comment ajouter une équation mathématique à une diapositive PowerPoint ?

Pour ajouter une équation mathématique, créez un objet MathShape, qui contient automatiquement une portion mathématique. Ensuite, récupérez le MathParagraph à partir du MathPortion et ajoutez‑y des objets MathBlock.

Est‑il possible de créer des expressions mathématiques imbriquées complexes ?

Oui, Aspose.Slides vous permet de créer des expressions mathématiques complexes en imbriquant des MathBlock. Chaque élément mathématique implémente l’interface IMathElement, ce qui vous permet d’appliquer des opérations (Join, Divide, Enclose, etc.) pour combiner les éléments en structures plus complexes.

Comment mettre à jour ou modifier une équation mathématique existante ?

Pour mettre à jour une équation, accédez aux MathBlock existants via le MathParagraph. Puis, en utilisant des méthodes telles que Join, Divide, Enclose, etc., modifiez les éléments individuels de l’équation. Après modification, enregistrez la présentation pour appliquer les changements.