Ajouter des équations mathématiques aux présentations PowerPoint en C++
Aperçu
Dans PowerPoint, il est possible d’écrire une équation ou une formule mathématique et de l’afficher dans la présentation. Pour cela, divers symboles mathématiques sont représentés dans PowerPoint et peuvent être ajoutés au texte ou à l’équation. Le constructeur d’équations mathématiques de PowerPoint permet de créer des formules complexes telles que :
- Fraction mathématique
- Radical mathématique
- Fonction mathématique
- Limites et fonctions logarithmiques
- Opérations N‑aires
- Matrice
- Opérateurs extensifs
- Fonctions sin, cos
Pour ajouter une équation mathématique dans PowerPoint, le menu Insertion → Équation est utilisé :

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

PowerPoint prend en charge de nombreux symboles mathématiques pour créer des équations. Cependant, la création d’équations complexes dans PowerPoint ne donne pas toujours un résultat professionnel. Les utilisateurs qui doivent créer fréquemment des présentations mathématiques se tournent souvent vers des solutions tierces pour obtenir de belles formules.
En utilisant Aspose.Slide API, vous pouvez travailler avec des équations mathématiques dans les présentations PowerPoint de manière programmatique en C++. Créez de nouvelles expressions mathématiques ou modifiez celles déjà présentes. L’exportation de structures mathématiques sous forme d’images est également partiellement prise en charge.
Comment créer une équation mathématique
Les éléments mathématiques sont utilisés pour construire n’importe quelle construction mathématique avec n’importe quel niveau d’imbrication. Une collection linéaire d’éléments mathématiques forme un bloc mathématique représenté par la classe MathBlock. La classe MathBlock correspond essentiellement à une expression, une formule ou une équation mathématique séparée. MathPortion est une portion mathématique, utilisée pour contenir du texte mathématique (à ne pas confondre avec Portion). MathParagraph permet de manipuler un ensemble de blocs mathématiques. Les classes mentionnées sont la clé pour travailler avec les équations mathématiques PowerPoint via l’API Aspose.Slides.
Voyons comment créer l’équation mathématique suivante via l’API Aspose.Slides :

Pour ajouter une expression mathématique sur la diapositive, ajoutez d’abord une forme qui contiendra le texte mathématique :
auto pres = System::MakeObject<Presentation>();
auto mathShape = pres->get_Slides()->idx_get(0)->get_Shapes()->AddMathShape(0.0f, 0.0f, 720.0f, 150.0f);
Après la création, la forme contiendra déjà un paragraphe avec une portion mathématique par défaut. La classe MathPortion représente une portion contenant du texte mathématique. Pour accéder au contenu mathématique à l’intérieur de MathPortion, utilisez la variable MathParagraph :
auto mathParagraph = (System::AsCast<MathPortion>(mathShape->get_TextFrame()->get_Paragraphs()->idx_get(0)->get_Portions()->idx_get(0)))->get_MathParagraph();
La classe MathParagraph permet de lire, ajouter, modifier et supprimer des blocs mathématiques (MathBlock), qui peuvent être composés d’une combinaison d’éléments mathématiques. Par exemple, créez une fraction et placez‑la dans la présentation :
auto fraction = System::MakeObject<MathematicalText>(u"x")->Divide(u"y");
mathParagraph->Add(System::MakeObject<MathBlock>(fraction));
Chaque élément mathématique est représenté par une classe qui implémente l’interface IMathElement. Cette interface propose de nombreuses méthodes pour créer facilement des expressions mathématiques. Vous pouvez créer une expression assez complexe en une seule ligne de code. Par exemple, le théorème de Pythagore s’écrit ainsi :
auto mathBlock = System::MakeObject<MathematicalText>(u"c")
->SetSuperscript(u"2")
->Join(u"=")
->Join(System::MakeObject<MathematicalText>(u"a")->SetSuperscript(u"2"))
->Join(u"+")
->Join(System::MakeObject<MathematicalText>(u"b")->SetSuperscript(u"2"));
Les opérations de l’interface IMathElement sont implémentées dans tout type d’élément, y compris le MathBlock.
Exemple complet :
auto pres = System::MakeObject<Presentation>();
auto mathShape = pres->get_Slides()->idx_get(0)->get_Shapes()->AddMathShape(0.0f, 0.0f, 720.0f, 150.0f);
auto mathParagraph = (System::AsCast<MathPortion>(mathShape->get_TextFrame()->get_Paragraphs()->idx_get(0)->get_Portions()->idx_get(0)))->get_MathParagraph();
auto fraction = System::MakeObject<MathematicalText>(u"x")->Divide(u"y");
mathParagraph->Add(System::MakeObject<MathBlock>(fraction));
auto mathBlock = System::MakeObject<MathematicalText>(u"c")
->SetSuperscript(u"2")
->Join(u"=")
->Join(System::MakeObject<MathematicalText>(u"a")->SetSuperscript(u"2"))
->Join(u"+")->Join(System::MakeObject<MathematicalText>(u"b")->SetSuperscript(u"2"));
mathParagraph->Add(mathBlock);
pres->Save(u"math.pptx", SaveFormat::Pptx);
Types d’éléments mathématiques
Les expressions mathématiques sont constituées de séquences d’éléments mathématiques. La séquence est représentée par un bloc mathématique, et les arguments des éléments forment une imbrication en forme d’arbre.
Il existe de nombreux types d’éléments qui peuvent être utilisés pour construire un bloc mathématique. Chaque élément peut être inclus (agrégé) dans un autre élément, formant ainsi une structure arborescente. Le type le plus simple d’élément ne contient aucun autre élément du texte mathématique.
Chaque type d’élément implémente l’interface IMathElement, ce qui permet d’utiliser le même ensemble 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 de base de toutes les constructions mathématiques. Le texte mathématique peut représenter des opérandes, des opérateurs, des variables et tout autre texte linéaire.
Exemple : 𝑎=𝑏+𝑐
Classe MathFraction
La classe MathFraction définit l’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 pile, qui place un élément au-dessus d’un autre sans barre de fraction.
Exemple :

Classe MathRadical
La classe MathRadical définit la fonction radicale (racine mathématique), composée d’une base et d’un degré optionnel.
Exemple :

Classe MathFunction
La classe MathFunction définit une fonction d’un argument. Contient les méthodes : get_Name() – nom de la fonction et get_Base() – argument de la fonction.
Exemple :

Classe MathNaryOperator
La classe MathNaryOperator définit un objet mathématique N‑aire, tel que la sommation ou l’intégrale. Elle comprend un opérateur, une base (ou opérande) et des limites supérieures et inférieures optionnelles. Les opérateurs N‑aires incluent la sommation, l’union, l’intersection, l’intégrale, etc.
Cette classe ne couvre pas les opérateurs simples comme l’addition ou la soustraction, qui sont représentés par un seul élément texte – MathematicalText.
Exemple :

Classe MathLimit
La classe MathLimit crée une limite supérieure ou inférieure. Elle spécifie un objet limite composé d’un texte sur la ligne de base et d’un texte de taille réduite 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 :

est créée à l’aide d’une combinaison d’éléments MathFunction et MathLimit :
auto funcName = System::MakeObject<MathLimit>(System::MakeObject<MathematicalText>(u"lim"), System::MakeObject<MathematicalText>(u"𝑥→∞"));
auto mathFunc = System::MakeObject<MathFunction>(funcName, System::MakeObject<MathematicalText>(u"𝑥"));
Classes MathSubscriptElement, MathSuperscriptElement, MathRightSubSuperscriptElement, MathLeftSubSuperscriptElement
- MathSubscriptElement
- MathSuperscriptElement
- MathRightSubSuperscriptElement
- MathLeftSubSuperscriptElement
Ces classes définissent un indice inférieur ou supérieur. Vous pouvez définir simultanément indice et exposant à gauche ou à droite d’un argument, mais un indice ou un exposant seul n’est pris en charge qu’à droite. Le MathSubscriptElement peut également servir à indiquer le degré d’un nombre.
Exemple :

Classe MathMatrix
La classe MathMatrix définit l’objet Matrice, composé d’éléments enfants disposés en une ou plusieurs lignes et colonnes. Notez que les matrices ne possèdent pas de délimiteurs intégrés. Pour placer la matrice entre crochets, utilisez l’objet délimiteur : IMathDelimiter. Des arguments nuls peuvent être utilisés pour créer des espaces dans les matrices.
Exemple :

Classe MathArray
La classe MathArray représente un tableau vertical d’équations ou de tout autre objet mathématique.
Exemple :

Mise en forme des éléments mathématiques
-
MathBorderBox : dessine un rectangle ou une autre bordure autour du IMathElement.
Exemple :
-
MathBox : spécifie l’encapsulation logique de l’élément mathématique. Par exemple, un objet encadré peut servir d’émulateur d’opérateur avec ou sans point d’alignement, ou empêcher les sauts de ligne à l’intérieur.
-
MathDelimiter : définit l’objet délimiteur, composé de caractères ouvrants et fermants (parenthèses, accolades, crochets, barres verticales) et d’un ou plusieurs éléments mathématiques séparés par un caractère spécifié.
Exemple :
-
MathAccent : définit la fonction accent, composée d’une base et d’un signe diacritique combiné.
Exemple : 𝑎́. -
MathBar : définit la fonction barre, composée d’un argument de base et d’une barre supérieure ou inférieure.
Exemple :
-
MathGroupingCharacter : définit un symbole de regroupement au-dessus ou en dessous d’une expression, généralement pour mettre en évidence les relations entre les éléments.
Exemple :
Opérations mathématiques
Chaque élément et chaque expression mathématique (via MathBlock) implémente l’interface IMathElement. Elle permet d’appliquer des opérations sur la structure existante et de créer des expressions plus complexes. Toutes les opérations acceptent deux ensembles de paramètres : soit un IMathElement, soit une chaîne de caractères. Les instances de la classe MathematicalText sont créées implicitement à partir des chaînes lorsqu’elles sont utilisées comme arguments. Les opérations disponibles dans Aspose.Slides sont répertoriées ci‑dessous.
Méthode Join
Joint un élément mathématique et crée un bloc mathématique. Exemple :
auto element1 = System::MakeObject<MathematicalText>(u"x");
auto element2 = System::MakeObject<MathematicalText>(u"y");
auto block = element1->Join(element2);
Méthode Divide
- Divide(String)
- Divide(IMathElement)
- Divide(String, MathFractionTypes)
- Divide(IMathElement, MathFractionTypes)
Crée une fraction du type spécifié avec ce numérateur et le dénominateur indiqué. Exemple :
auto numerator = System::MakeObject<MathematicalText>(u"x");
auto fraction = numerator->Divide(u"y", MathFractionTypes::Linear);
Méthode Enclose
Encadre l’élément dans les caractères spécifiés, comme des parenthèses ou tout autre caractère.
/// <summary>
/// Encloses a math element in parenthesis
/// </summary>
virtual System::SharedPtr<IMathDelimiter> Enclose() = 0;
/// <summary>
/// Encloses this element in specified characters such as parenthesis or another characters as framing
/// </summary>
virtual System::SharedPtr<IMathDelimiter> Enclose(char16_t beginningCharacter, char16_t endingCharacter) = 0;
Exemple :
auto delimiter = System::MakeObject<MathematicalText>(u"x")->Enclose(u'[', u']');
auto delimiter2 = System::ExplicitCast<IMathElement>(System::MakeObject<MathematicalText>(u"elem1")->Join(u"elem2"))->Enclose();
Méthode Function
Prend une fonction d’un argument en utilisant l’objet actuel comme nom de fonction.
/// <summary>
/// Takes a function of an argument using this instance as the function name
/// </summary>
/// <param name="functionArgument">An argument of the function</param>
virtual System::SharedPtr<IMathFunction> Function(System::SharedPtr<IMathElement> functionArgument) = 0;
virtual System::SharedPtr<IMathFunction> Function(System::String functionArgument) = 0;
Exemple :
auto func = System::MakeObject<MathematicalText>(u"sin")->Function(u"x");
Méthode AsArgumentOfFunction
- AsArgumentOfFunction(String)
- AsArgumentOfFunction(IMathElement)
- AsArgumentOfFunction(MathFunctionsOfOneArgument)
- AsArgumentOfFunction(MathFunctionsOfTwoArguments, IMathElement)
- AsArgumentOfFunction(MathFunctionsOfTwoArguments, String)
Utilise l’instance actuelle comme argument de la fonction spécifiée. Vous pouvez :
- spécifier une chaîne comme nom de fonction, par ex. “cos”.
- choisir une des valeurs prédéfinies des énumérations MathFunctionsOfOneArgument ou MathFunctionsOfTwoArguments, par ex. MathFunctionsOfOneArgument.ArcSin.
- fournir une instance de IMathElement.
Exemple :
auto funcName = System::MakeObject<MathLimit>(System::MakeObject<MathematicalText>(u"lim"), System::MakeObject<MathematicalText>(u"𝑛→∞"));
auto func1 = System::MakeObject<MathematicalText>(u"2x")->AsArgumentOfFunction(funcName);
auto func2 = System::MakeObject<MathematicalText>(u"x")->AsArgumentOfFunction(u"sin");
auto func3 = System::MakeObject<MathematicalText>(u"x")->AsArgumentOfFunction(MathFunctionsOfOneArgument::Sin);
auto func4 = System::MakeObject<MathematicalText>(u"x")->AsArgumentOfFunction(MathFunctionsOfTwoArguments::Log, u"3");
Méthodes SetSubscript, SetSuperscript, SetSubSuperscriptOnTheRight, SetSubSuperscriptOnTheLeft
- SetSubscript(String)
- SetSubscript(IMathElement)
- SetSuperscript(String)
- SetSuperscript(IMathElement)
- SetSubSuperscriptOnTheRight(String, String)
- SetSubSuperscriptOnTheRight(IMathElement, IMathElement)
- SetSubSuperscriptOnTheLeft(String, String)
- SetSubSuperscriptOnTheLeft(IMathElement, IMathElement)
Définit les indices et les exposants. Vous pouvez définir simultanément indice et exposant à gauche ou à droite d’un argument, mais un indice ou un exposant seul n’est pris en charge qu’à droite. L’exposant peut également servir à indiquer le degré d’un nombre.
Exemple :
auto script = System::MakeObject<MathematicalText>(u"y")->SetSubSuperscriptOnTheLeft(u"2x", u"3z");
Méthode Radical
Spécifie la racine mathématique du degré indiqué à partir de l’argument fourni.
Exemple :
auto radical = System::MakeObject<MathematicalText>(u"x")->Radical(u"3");
Méthodes SetUpperLimit et SetLowerLimit
Définit une limite supérieure ou inférieure. Ici, les limites indiquent simplement la position de l’argument par rapport à la base.
Considérons l’expression :

Cette expression peut être créée grâce à une combinaison des classes MathFunction et MathLimit, ainsi que les opérations de l’IMathElement :
auto mathExpression = System::MakeObject<MathematicalText>(u"lim")->SetLowerLimit(u"x→∞")->Function(u"x");
Méthodes Nary et Integral
- Nary(MathNaryOperatorTypes, IMathElement, IMathElement)
- Nary(MathNaryOperatorTypes, String, String)
- Integral(MathIntegralTypes)
- Integral(MathIntegralTypes, IMathElement, IMathElement)
- Integral(MathIntegralTypes, String, String)
- Integral(MathIntegralTypes, IMathElement, IMathElement, MathLimitLocations)
- Integral(MathIntegralTypes, String, String, MathLimitLocations)
Les méthodes Nary et Integral créent et renvoient l’opérateur N‑aire représenté par le type IMathNaryOperator. Dans la méthode Nary, l’énumération MathNaryOperatorTypes précise le type d’opérateur : sommation, union, etc., sans les intégrales. La méthode Integral utilise l’énumération MathIntegralTypes pour spécifier le type d’intégrale.
Exemple :
auto baseArg = System::MakeObject<MathematicalText>(u"x")->Join(System::MakeObject<MathematicalText>(u"dx")->ToBox());
auto integral = baseArg->Integral(MathIntegralTypes::Simple, u"0", u"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 les éléments enfants seront placés dans le tableau retourné.
Exemple :
auto arrayFunction = System::MakeObject<MathematicalText>(u"x")->Join(u"y")->ToMathArray();
Opérations de mise en forme : Accent, Overbar, Underbar, Group, ToBorderBox, ToBox
- Accent : applique un accent (caractère placé au-dessus de l’élément).
- Overbar et Underbar : ajoutent une barre au-dessus ou en dessous.
- Group : regroupe à l’aide d’un caractère de regroupement tel qu’une accolade inférieure ou autre.
- ToBorderBox : place l’élément dans une bordure.
- ToBox : place l’élément dans une boîte logique non visuelle.
Exemples :
auto accent = System::MakeObject<MathematicalText>(u"x")->Accent(u'\u0303');
auto bar = System::MakeObject<MathematicalText>(u"x")->Overbar();
auto groupChr = System::MakeObject<MathematicalText>(u"x")->Join(u"y")->Join(u"z")->Group(u'\u23E1', MathTopBotPositions::Bottom, MathTopBotPositions::Top);
auto borderBox = System::MakeObject<MathematicalText>(u"x+y+z")->ToBorderBox();
auto boxedOperator = System::MakeObject<MathematicalText>(u":=")->ToBox();
FAQ
Comment ajouter une équation mathématique à une diapositive PowerPoint ?
Pour ajouter une équation, créez un objet forme mathématique, 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 permet de créer des expressions complexes en imbriquant des MathBlocks. Chaque élément mathématique implémente l’interface IMathElement, qui autorise l’application d’opérations (Join, Divide, Enclose, etc.) pour combiner les éléments en structures plus élaborées.
Comment mettre à jour ou modifier une équation mathématique existante ?
Pour mettre à jour une équation, accédez aux MathBlocks existants via le MathParagraph. Ensuite, en utilisant des méthodes telles que Join, Divide, Enclose, etc., modifiez les éléments de l’équation. Après la modification, enregistrez la présentation pour appliquer les changements.