Équations Mathématiques PowerPoint

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 ce faire, divers symboles mathématiques sont représentés dans PowerPoint et peuvent être ajoutés au texte ou à l’équation. Pour cela, le constructeur d’équations mathématiques est utilisé dans PowerPoint, qui aide à 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
  • Grands opérateurs
  • Fonctions sin, cos

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

todo:image_alt_text

Ceci va créer un texte mathématique en XML qui peut être affiché dans PowerPoint comme suit :

todo:image_alt_text

PowerPoint prend en charge de nombreux symboles mathématiques pour créer des équations mathématiques. Cependant, créer des équations mathématiques compliquées dans PowerPoint ne produit souvent pas un résultat bon et professionnel. Les utilisateurs, qui ont besoin de créer fréquemment des présentations mathématiques, recourent à des solutions tierces pour créer de bonnes formules mathématiques.

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 qui ont été précédemment créées. L’exportation de structures mathématiques en images est également partiellement supportée.

Comment Créer une Équation Mathématique

Les éléments mathématiques sont utilisés pour construire des constructions mathématiques de tout niveau de nestage. Une collection linéaire d’éléments mathématiques forme un bloc mathématique représenté par la classe MathBlock. La classe MathBlock est essentiellement une expression mathématique, formule ou équation séparée. MathPortion est une portion mathématique, utilisée pour contenir du texte mathématique (ne pas confondre avec Portion). La classe MathParagraph permet de manipuler un ensemble de blocs mathématiques. Les classes susmentionnées sont la clé pour travailler avec les équations mathématiques PowerPoint via l’API Aspose.Slides.

Voyons comment nous pouvons créer l’équation mathématique suivante via l’API Aspose.Slides :

todo:image_alt_text

Pour ajouter une expression mathématique sur la diapositive, d’abord, ajoutez 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 est une portion qui contient un texte mathématique à l’intérieur. Pour accéder au contenu mathématique à l’intérieur de MathPortion, référez-vous à 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, éditer 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 :

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 certaine classe qui implémente l’interface IMathElement. Cette interface fournit de nombreuses méthodes pour créer facilement des expressions mathématiques. Vous pouvez créer une expression mathématique complexe avec une seule ligne de code. Par exemple, le théorème de Pythagore aurait l’apparence suivante :

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 mises en œuvre dans n’importe quel type d’élément, y compris le MathBlock.

Le code source 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 formées à partir de séquences d’éléments mathématiques. La séquence d’éléments mathématiques est représentée par un bloc mathématique, et les arguments des éléments mathématiques forment un nestage 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 inclus (agrégé) dans un autre élément. C’est-à-dire que les éléments sont en réalité des conteneurs pour d’autres, formant une structure en forme d’arbre. Le type d’élément le plus simple ne contient pas d’autres éléments du texte mathématique.

Chaque type d’élément mathématique implémente l’interface IMathElement, permettant l’utilisation d’un ensemble commun d’opérations mathématiques sur différents types d’éléments mathématiques.

Classe MathematicalText

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

Exemple: 𝑎=𝑏+𝑐

Classe MathFraction

La classe MathFraction spécifie l’objet fraction, constitué d’un numérateur et d’un dénominateur séparés par une barre de fraction. La barre de fraction peut être horizontale ou diagonale, selon les propriétés de la fraction. L’objet fraction est également utilisé pour représenter la fonction de pile, 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 radicale (racine mathématique), consistant en une base et un degré facultatif.

Exemple :

todo:image_alt_text

Classe MathFunction

La classe MathFunction spécifie une fonction d’un argument. Elle contient des méthodes : get_Name() - nom de la fonction et get_Base() - argument de la fonction.

Exemple :

todo:image_alt_text

Classe MathNaryOperator

La classe MathNaryOperator spécifie un objet mathématique N-aire, tel que Somme et Intégrale. Il se compose d’un opérateur, d’une base (ou opérande), et de limites supérieures et inférieures facultatives. Les exemples d’opérateurs N-aires sont Somme, Union, Intersection, Intégrale.

Cette classe n’inclut pas les opérateurs simples tels que l’addition, la soustraction, etc. Ils sont représentés par un élément de texte unique - MathematicalText.

Exemple :

todo:image_alt_text

Classe MathLimit

La classe MathLimit crée la limite supérieure ou inférieure. Elle spécifie l’objet limite, constitué de texte sur la ligne de base et d’un texte de taille réduite immédiatement au-dessus ou au-dessous. Cet élément n’inclut 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 en utilisant une combinaison des éléments MathFunction et MathLimit de cette manière :

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

Les classes suivantes spécifient un index inférieur ou un index supérieur. Vous pouvez définir un exposant et un indice à la fois à gauche ou à droite d’un argument, mais un seul exposant ou indice est pris en charge du côté droit seulement. Le 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, constitué 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 placer la matrice dans les crochets, vous devez utiliser 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 d’objets mathématiques.

Exemple :

todo:image_alt_text

Formatage des Éléments Mathématiques

  • La classe MathBorderBox : dessine une bordure rectangulaire ou d’une autre forme autour de IMathElement.

    Exemple : todo:image_alt_text

  • La classe MathBox : spécifie l’encadrement logique (packaging) de l’élément mathématique. Par exemple, un objet encadré peut servir d’émulateur d’opérateur avec ou sans point d’alignement, servir de point de rupture de ligne, ou être groupé pour ne pas permettre des interruptions de ligne à l’intérieur. Par exemple, l’opérateur “==” doit être encadré pour empêcher les ruptures de ligne.

  • La classe MathDelimiter : spécifie l’objet délimiteur, constitué de caractères d’ouverture et de fermeture (comme des parenthèses, des accolades, des crochets et des barres verticales), et 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

  • La classe MathAccent : spécifie la fonction accent, constituée d’une base et d’une marque diacritique combinante.

    Exemple : 𝑎́.

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

    Exemple : todo:image_alt_text

  • La classe MathGroupingCharacter : spécifie 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 : 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’utiliser des opérations sur la structure existante et de former des expressions mathématiques plus complexes. Toutes les opérations ont deux ensembles de paramètres : soit IMathElement soit chaîne comme arguments. Des instances de la classe MathematicalText sont créées implicitement à partir de chaînes spécifiées lorsque les arguments de chaîne sont utilisés. Les opérations mathématiques disponibles dans Aspose.Slides sont énumérées ci-dessous.

Méthode Join

Joint un élément mathématique et forme un bloc mathématique. Par exemple :

auto element1 = System::MakeObject<MathematicalText>(u"x");
    
auto element2 = System::MakeObject<MathematicalText>(u"y");

auto block = element1->Join(element2);

Méthode Divide

Crée une fraction du type spécifié avec ce numérateur et le dénominateur spécifié. Par exemple :

auto numerator = System::MakeObject<MathematicalText>(u"x");
auto fraction = numerator->Divide(u"y", MathFractionTypes::Linear);

Méthode Enclose

Enferme l’élément dans des caractères spécifiés tels que des parenthèses ou un autre caractère comme encadrement.

/// <summary>
/// Enferme un élément mathématique dans des parenthèses
/// </summary>
virtual System::SharedPtr<IMathDelimiter> Enclose() = 0;

/// <summary>
/// Enferme cet élément dans des caractères spécifiés tels que des parenthèses ou d'autres caractères comme encadrement
/// </summary>
virtual System::SharedPtr<IMathDelimiter> Enclose(char16_t beginningCharacter, char16_t endingCharacter) = 0;

Par 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 la fonction.

/// <summary>
/// Prend une fonction d'un argument en utilisant cette instance comme nom de la fonction
/// </summary>
/// <param name="functionArgument">Un argument de la fonction</param>

virtual System::SharedPtr<IMathFunction> Function(System::SharedPtr<IMathElement> functionArgument) = 0;

virtual System::SharedPtr<IMathFunction> Function(System::String functionArgument) = 0;

Par exemple :

auto func = System::MakeObject<MathematicalText>(u"sin")->Function(u"x");

Méthode AsArgumentOfFunction

Prend la fonction spécifiée en utilisant l’instance actuelle comme argument. Vous pouvez :

Par 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

Définit l’indice et l’exposant. Vous pouvez définir un exposant et un indice à la fois à gauche ou à droite de l’argument, mais un seul exposant ou indice est pris en charge uniquement du côté droit. Le Superscript peut également être utilisé pour définir le degré mathématique 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é donné à partir de l’argument spécifié.

Exemple :

auto radical = System::MakeObject<MathematicalText>(u"x")->Radical(u"3");

Méthodes SetUpperLimit et SetLowerLimit

Prend la limite supérieure ou inférieure. Ici, le haut et le bas indiquent simplement la position de l’argument par rapport à la base.

Considérons une expression :

todo:image_alt_text

De telles expressions peuvent être créées grâce à une combinaison des classes MathFunction et MathLimit, et des opérations de IMathElement comme suit :

auto mathExpression = System::MakeObject<MathematicalText>(u"lim")->SetLowerLimit(u"x→∞")->Function(u"x");

Méthodes Nary et Integral

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 spécifie le type d’opérateur : somme, union, etc., sans inclure les intégrales. Dans la méthode Integral, il y a l’opération spécialisée Intégrale avec l’énumération des types d’intégrales MathIntegralTypes.

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

La méthode ToMathArray place des éléments dans un tableau vertical. Si cette opération est appelée pour 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 formatage : Accent, Overbar, Underbar, Group, ToBorderBox, ToBox

  • La méthode Accent définit une marque d’accent (un caractère sur le dessus de l’élément).
  • Les méthodes Overbar et Underbar définissent une barre au-dessus ou en dessous.
  • La méthode Group place dans un groupe en utilisant un caractère de regroupement tel qu’une accolade inférieure ou autre.
  • La méthode ToBorderBox place dans une boîte à bord.
  • La méthode ToBox place dans une boîte non visible (regroupement logique).

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