É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 cela, 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, ce 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 sinus, cosinus

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

todo:image_alt_text

Cela créera 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 donne souvent pas un résultat bon et professionnel. Les utilisateurs qui ont fréquemment besoin de créer 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 déjà créées. 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 des constructions mathématiques avec n’importe quel niveau de nesting. 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, une formule ou une équation 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 ci-dessus sont la clé pour travailler avec les équations mathématiques PowerPoint via Aspose.Slides API.

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

todo:image_alt_text

Pour ajouter une expression mathématique sur la diapositive, vous devez d’abord ajouter une forme qui contiendra le texte mathématique :

Presentation pres = new Presentation();
try {
    IAutoShape mathShape = pres.getSlides().get_Item(0).getShapes().addMathShape(0, 0, 720, 150);
} finally {
    if (pres != null) pres.dispose();
}

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  :

IMathParagraph mathParagraph = ((MathPortion)mathShape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0)).getMathParagraph();

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

IMathFraction 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 pouvez créer une expression mathématique assez complexe avec une seule ligne de code. Par exemple, le théorème de Pythagore se présenterait comme suit :

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

Le code source complet :

Presentation pres = new Presentation();
try {
    IAutoShape mathShape = pres.getSlides().get_Item(0).getShapes().addMathShape(0, 0, 720, 150);

    IMathParagraph mathParagraph = ((MathPortion)mathShape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0)).getMathParagraph();
    
    IMathFraction fraction = new MathematicalText("x").divide("y");

    mathParagraph.add(new MathBlock(fraction));

    IMathBlock mathBlock = new MathematicalText("c")
            .setSuperscript("2")
            .join("=")
            .join(new MathematicalText("a").setSuperscript("2"))
            .join("+")
            .join(new MathematicalText("b").setSuperscript("2"));
    mathParagraph.add(mathBlock);

    pres.save("math.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

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 nesting de type 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 fait des conteneurs pour d’autres, formant une structure en arbre. Le type d’élément le plus simple qui ne contient pas d’autres éléments est le 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. Le 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, consistant en un numérateur et un dénominateur séparés par une barre fractionnaire. La barre fractionnaire peut être horizontale ou diagonale, en fonction des propriétés de la fraction. L’objet fraction est également utilisé pour représenter la fonction empilée, qui place un élément au-dessus d’un autre, sans barre fractionnaire.

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é optionnel.

Exemple :

todo:image_alt_text

Classe MathFunction

La classe MathFunction spécifie une fonction d’un argument. Contient les propriétés : getName - nom de la fonction et getBase - 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égral. Il se compose d’un opérateur, d’une base (ou opérande) et de limites supérieures et inférieures optionnelles. Des exemples d’opérateurs n-aires incluent la Somme, l’Union, l’Intersection, l’Intégral.

Cette classe n’inclut pas les opérateurs simples tels que l’addition, la soustraction, etc. Ils sont représentés par un seul élément de texte - 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, consistant en du texte sur la ligne de base et du texte de taille réduite immédiatement au-dessus ou en 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 à l’aide d’une combinaison des éléments MathFunction et MathLimit de cette manière :

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

MathFunction mathFunc = new MathFunction(funcName, new MathematicalText("𝑥"));

Classes MathSubscriptElement, MathSuperscriptElement, MathRightSubSuperscriptElement, MathLeftSubSuperscriptElement

Les classes suivantes spécifient un indice inférieur ou un indice supérieur. Vous pouvez définir un indice et un exposant en même temps à gauche ou à droite d’un argument, mais un seul sous-indice ou exposant est supporté uniquement sur le côté droit. L’élément 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, consistant en des é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 des parenthèses, 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 de tout objet mathématique.

Exemple :

todo:image_alt_text

Formatage des Éléments Mathématiques

  • La classe MathBorderBox : dessine une bordure rectangulaire ou une autre autour de l'IMathElement.

    Exemple : todo:image_alt_text

  • La classe MathBox : spécifie l’encapsulation logique (l’emballage) 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é de manière à ne pas permettre de ruptures de ligne à l’intérieur. Par exemple, l’opérateur “==” doit être encadré pour éviter les ruptures de ligne.

  • La classe MathDelimiter : spécifie l’objet délimiteur, consistant en des caractères d’ouverture et de fermeture (tels que des parenthèses, accolades, crochets et 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 d’accent, consistant en une base et un signe diacritique combinant.

    Exemple : 𝑎́.

  • La classe MathBar : spécifie la fonction de barre, consistant en un argument de base et 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 une chaîne comme arguments. Les instances de la classe MathematicalText sont implicitement créées à partir des chaînes spécifiées lorsque des arguments de chaîne sont utilisés. Les opérations mathématiques disponibles dans Aspose.Slides sont listées ci-dessous.

Méthode Join

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

IMathElement element1 = new MathematicalText("x");

IMathElement element2 = new MathematicalText("y");

IMathBlock 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 :

IMathElement numerator = new MathematicalText("x");

IMathFraction fraction = numerator.divide("y", MathFractionTypes.Linear);

Méthode Enclose

Enclôt l’élément dans les caractères spécifiés tels que des parenthèses ou un autre caractère comme cadre.

/**
 * <p>
 * Enclose a math element in parenthesis
 * </p>
 */
public IMathDelimiter enclose();

/**
 * <p>
 * Encloses this element in specified characters such as parenthesis or another characters as framing
 * </p>
 */
public IMathDelimiter enclose(char beginningCharacter, char endingCharacter);

Par exemple :

IMathDelimiter delimiter = new MathematicalText("x").enclose('[', ']');

IMathDelimiter delimiter2 = new MathematicalText("elem1").join("elem2").enclose();

Méthode Function

Prend une fonction d’un argument en utilisant l’objet actuel comme nom de fonction.

/**
 * <p>
 * Takes a function of an argument using this instance as the function name
 * </p>
 */
public IMathFunction function(IMathElement functionArgument);

/**
 * <p>
 * Takes a function of an argument using this instance as the function name
 * </p>
 */
public IMathFunction function(String functionArgument);

Par exemple :

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

Méthode AsArgumentOfFunction

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

Par exemple :

MathLimit funcName = new MathLimit(new MathematicalText("lim"), new MathematicalText("𝑛→∞"));

IMathFunction func1 = new MathematicalText("2x").asArgumentOfFunction(funcName);

IMathFunction func2 = new MathematicalText("x").asArgumentOfFunction("sin");

IMathFunction func3 = new MathematicalText("x").asArgumentOfFunction(MathFunctionsOfOneArgument.Sin);

IMathFunction func4 = new MathematicalText("x").asArgumentOfFunction(MathFunctionsOfTwoArguments.Log, "3");

Méthodes SetSubscript, SetSuperscript, SetSubSuperscriptOnTheRight, SetSubSuperscriptOnTheLeft

Définit l’indice inférieur et l’indice supérieur. Vous pouvez définir un indice et un exposant en même temps à gauche ou à droite de l’argument, mais un seul sous-indice ou exposant est supporté uniquement sur le côté droit. Le Superscript peut également être utilisé pour définir le degré mathématique d’un nombre.

Exemple :

IMathLeftSubSuperscriptElement script = new MathematicalText("y").setSubSuperscriptOnTheLeft("2x", "3z");

Méthode Radical

Spécifie la racine mathématique du degré donné à partir de l’argument spécifié.

Exemple :

IMathRadical radical = new MathematicalText("x").radical("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 à l’aide d’une combinaison des classes MathFunction et MathLimit, et des opérations de l'IMathElement comme suit :

IMathFunction mathExpression = new MathematicalText("lim").setLowerLimit("x→∞").function("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., n’incluant pas les intégrales. Dans la méthode Integral, il s’agit de l’opération spécialisée Intégral avec l’énumération des types d’intégrale MathIntegralTypes

Exemple :

IMathBlock baseArg = new MathematicalText("x").join(new MathematicalText("dx").toBox());

IMathNaryOperator integral = baseArg.integral(MathIntegralTypes.Simple, "0", "1");

Méthode ToMathArray

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 :

IMathArray arrayFunction = new MathematicalText("x").join("y").toMathArray();

Opérations de Formatage : Accent, Barre supérieure, Barre inférieure, Regroupement, ToBorderBox, ToBox

  • La méthode accent accent place un accent (un caractère au sommet de l’élément).
  • Les méthodes overbar overbar et underbar underbar placent une barre au-dessus ou en dessous.
  • La méthode group group place dans un groupe en utilisant un caractère de regroupement tel qu’une accolade inférieure ou autre.
  • La méthode toBorderBox toBorderBox place dans une border-box.
  • La méthode toBox toBox place dans une boîte non visualisée (groupement logique).

Exemples :

IMathAccent accent = new MathematicalText("x").accent('\u0303');

IMathBar bar = new MathematicalText("x").overbar();

IMathGroupingCharacter groupChr = new MathematicalText("x").join("y").join("z").group('\u23E1', MathTopBotPositions.Bottom, MathTopBotPositions.Top);

IMathBorderBox borderBox = new MathematicalText("x+y+z").toBorderBox();

IMathBox boxedOperator = new MathematicalText(":=").toBox();