Ajouter des équations mathématiques aux présentations PowerPoint en Java

Vue d’ensemble

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 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ée 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. Toutefois, la création d’équations complexes dans PowerPoint ne donne souvent pas un résultat professionnel. Les utilisateurs qui créent fréquemment des présentations mathématiques ont recours à des solutions tierces pour obtenir des formules esthétiques.

En utilisant Aspose.Slide API, vous pouvez travailler avec les é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à existantes. L’exportation des structures mathématiques vers des 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, quel que soit le niveau d’imbrication. Une collection linéaire d’éléments forme un bloc mathématique représenté par la classe MathBlock. La classe MathBlock représente essentiellement une expression, une formule ou une équation distincte. 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 :

todo:image_alt_text

Pour ajouter une expression mathématique sur la diapositive, ajoutez d’abord 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 création, la forme contient déjà par défaut un paragraphe avec une portion mathématique. La classe MathPortion représente une portion contenant du texte mathématique. Pour accéder au contenu mathématique de la 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 sont composés d’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 assez complexe en une seule ligne de code. Par exemple, le théorème de Pythagore s’écrirait ainsi :

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 implémentées dans chaque type d’élément, y compris la MathBlock.

Exemple 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 constituées de suites d’éléments mathématiques. La suite d’éléments forme un bloc mathématique, et les arguments des éléments créent une imbrication en forme d’arbre.

De nombreux types d’éléments 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 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 ou 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 :

todo:image_alt_text

Classe MathRadical

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

Exemple :

todo:image_alt_text

Classe MathFunction

La classe MathFunction définit une fonction d’un argument. Elle possède 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 définit un objet mathématique n‑aire, tel que la sommation ou l’intégrale. Il se compose d’un opérateur, d’une base (ou opérande) et de limites supérieure et inférieure optionnelles. Les opérateurs n‑aires comprennent la sommation, l’union, l’intersection, l’intégrale, etc.

Cette classe n’inclut pas les opérateurs simples comme l’addition ou la soustraction, qui sont représentés par un élément 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 un objet limite composé d’un texte sur la ligne de base et d’un texte réduit placé immédiatement au-dessus ou au-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 générée en combinant les éléments MathFunction et MathLimit ainsi :

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

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

Classes MathSubscriptElement, MathSuperscriptElement, MathRightSubSuperscriptElement, MathLeftSubSuperscriptElement

Ces classes définissent un indice inférieur ou un indice supérieur. Vous pouvez définir simultanément indice inférieur et supérieur 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 servir à indiquer le degré mathématique d’un nombre.

Exemple :

todo:image_alt_text

Classe MathMatrix

La classe MathMatrix définit l’objet matrice, composé d’éléments enfants disposés en une ou plusieurs lignes et colonnes. Les matrices ne possèdent pas de délimiteurs intégrés. Pour entourer la matrice de crochets, utilisez l’objet délimiteur — IMathDelimiter. Des arguments nuls peuvent être employés pour créer des espaces vides dans les matrices.

Exemple :

todo:image_alt_text

Classe MathArray

La classe MathArray définit un tableau vertical d’équations ou tout autre objet mathématique.

Exemple :

todo:image_alt_text

Mise en forme des éléments mathématiques

  • Classe MathBorderBox : trace un rectangle ou tout autre contour autour de l’IMathElement.
    Exemple : todo:image_alt_text

  • Classe MathBox : spécifie un encadrement 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, de point de pause de ligne ou être groupé pour empêcher les retours à la ligne à l’intérieur.

  • Classe MathDelimiter : définit l’objet délimiteur, composé de caractères d’ouverture et de fermeture (parenthèses, accolades, crochets, barres verticales, etc.) et d’un ou plusieurs éléments mathématiques à l’intérieur, séparés par un caractère spécifié.
    Exemple : todo:image_alt_text

  • Classe MathAccent : définit la fonction accent, composée d’une base et d’un signe diacritique combiné.
    Exemple : 𝑎́.

  • Classe MathBar : définit 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 : définit un symbole de regroupement 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 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 former 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 fournies. 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. 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 ce dénominateur. Exemple :

IMathElement numerator = new MathematicalText("x");

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

Méthode Enclose

Encadre l’élément avec les caractères spécifiés (parenthèses ou autre 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);

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

Exemple :

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

Méthode AsArgumentOfFunction

Utilise l’instance actuelle comme argument de la fonction spécifiée. Vous pouvez :

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 les indices et exposants. Vous pouvez définir simultanément indice et exposant du côté gauche ou droit d’un argument, mais un seul indice simple n’est pris en charge que du côté droit. L’exposant peut également être utilisé pour indiquer 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é indiqué à partir de l’argument donné.

Exemple :

IMathRadical radical = new MathematicalText("x").radical("3");

Méthodes SetUpperLimit et SetLowerLimit

Définit la limite supérieure ou inférieure. Ici, les limites indiquent simplement la position de l’argument par rapport à la base.

Considérons l’expression :

todo:image_alt_text

Ces expressions peuvent être créées en combinant les classes MathFunction et MathLimit, ainsi que les opérations de IMathElement :

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. La méthode nary utilise l’énumération MathNaryOperatorTypes pour spécifier le type d’opérateur (sommation, union, etc.), sans les intégrales. La méthode integral utilise l’énumération MathIntegralTypes pour les intégrales.

Exemple :

IMathBlock 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 l’opération est appelée sur 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 mise en forme : Accent, Overbar, Underbar, Group, ToBorderBox, ToBox

  • Méthode accent : ajoute un signe d’accent (un caractère au-dessus de l’élément).
  • Méthodes overbar et underbar : ajoutent respectivement une barre au-dessus ou en dessous.
  • Méthode group : place les éléments dans un groupe à l’aide d’un caractère de groupement tel qu’une accolade inférieure ou autre.
  • Méthode toBorderBox : place les éléments dans une boîte avec bordure.
  • Méthode toBox : place les éléments dans une boîte logique non visuelle (groupement).

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

FAQ

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

Pour ajouter une équation, créez d’abord un objet forme mathématique, qui contient automatiquement une portion mathématique. Ensuite, récupérez le MathParagraph à partir de la 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 complexes en imbriquant des MathBlocks. Chaque élément mathématique implémente l’interface IMathElement, ce qui vous autorise à 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 MathBlocks existants via le MathParagraph. Ensuite, en utilisant des méthodes telles que Join, Divide, Enclose, etc., vous pouvez modifier les éléments individuels de l’équation. Après la modification, enregistrez la présentation pour appliquer les changements.