Editer des mathématiques

Amaya

## Éditer des mathématiques

Amaya propose une interface Wysiwyg où les expressions mathématiques MathML sont traitées comme des composants structurés, de la même manière que les éléments (X)HTML. Vous pouvez donc manipuler les expressions mathématiques comme vous manipulez les autres parties des documents (X)HTML. Toutes les commandes d'édition fournies par Amaya pour traiter le texte sont également utilisables pour les mathématiques. Il y a quelques manipulations supplémentaires pour entrer des constructions mathématiques. Notez que les différents navigateurs ne se comportent pas de la même manière envers MathML : regardez la section sur la compatibilité des navigateurs pour plus d'informations.

### Créer une formule mathématique

#### Nouvelle formule

Généralement, les formules mathématiques ne sont pas isolées, mais incluses dans un document avec du texte, des tableaux, des images... pour cela vous devez créer un document XHTML. Sinon, vous pouvez créer un document MathML (mml) par exemple pour utiliser les formules dans d'autres logiciels. Pour cela, utilisez la commande Fichier / Nouveau / Nouvelle formule ou tapez `Ctrl-n Ctrl-m`.

Pour créer une expression mathématique dans un document, il suffit de placer le point d'insertion à l'endroit où vous voulez insérer l'expression, puis de cliquer sur le bouton Math (le premier bouton de la palette Math) ou de sélectionner l'entrée Insérer une formule du sous-menu Insertion/Math. Voici des exemples avec une formule insérée directement dans le document XHTML ou à l'intérieur d'une image SVG :

Γ ⁡ ( x ) = ∫ 0 + ∞ t x − 1 ⅇ − t ⅆ t

Γ ⁡ ( x ) = ∫ 0 + ∞ t x − 1 ⅇ − t ⅆ t

#### Le sous-menu Math

Le sous-menu Insertion/Math contient les éléments de présentation définis dans MathML.

- Les premiers éléments créent un nouvel élément d'un type donné à l'intérieur d'une expression mathématique : Texte (mtext), Identificateur (mi), Nombre (mn), Opérateur (mo). Ces commandes peuvent aussi changer le type d'un élément seul ou d'une séquence d'éléments.
- La commande suivante, Espace (mspace), vous permet d'ajouter un espace dans une formule. Pour changer sa taille, vous devez modifier l'attribut `width`. Voir la section sur l'espacement.
- La commande Caractère (`&xxx;`) vous permet d'entrer un caractère qui n'est pas disponible sur le clavier. Elle affiche une boîte de dialogue dans laquelle vous devez entrer le nom du caractère (par exemple `alpha` pour le caractère grec α).
  Notez que vous pouvez aussi utiliser l'outil Caractères spéciaux.
- Les deux commandes suivantes, InvisibleTimes and ApplyFunction, sont utilisés pour entrer les caractères invisibles correspondants. Voir la section sur les caractères spéciaux.

Les entrées suivantes du sous-menu Insertion/Math vous permettent de créer de nouvelles constructions à l'intérieur d'une formule. Si le point d'insertion n'est pas dans une formule, un élément `math` est d'abord créé pour accepter la nouvelle construction. Les constructions disponibles sont :

- Racine (`mroot` dans MathML) : x + 1 3
- Racine carrée ( `msqrt`) : x + 1
- Englobe (`menclose`) : 1234
- Fraction (`mfrac`) : 1 x + 1
- Indice et exposant Expression (`msubsup`) : x i + 1 n ou ∫ 0 ∞
- Indice (`msub`) : x i
- Exposant (`msup`) : x n
- Dessous et dessus (`munderover`) : ∑ i = 1 n
- Dessous (`munder`) : x -
- Dessus (`mover`) : x → maps to y
- Parenthèses (`mrow`) : ( a + b )
- Multi-scripts (`mmultiscripts`) : X i j k l
- Enfin, l'entrée Nouvelle matrice (mtable) vous permet de créer et éditer des tableaux MathML : a b c d

  Vous devez alors choisir le nombre de lignes et de colonnes désirées et un tableau vide est créée à la position courante. Il se manipule comme les tableaux HTML grâce aux commandes disponibles dans le sous-menu Outils/Editer la table.

#### La palette Math

Cliquer sur un bouton de la palette Math insère la construction mathématique représentée par son icône. Les parties en noir sont vraiment insérée, les parties en rouge représentent des cases à compléter, les parties en bleu sont demandées explicitement dans une boîte de dialogue. Les parties en vert sont simplement des informations supplémentaires qui ne sont pas insérées.

La palette contient toutes les constructions décrites dans le MathML de contenu (mais le code produit est un équivalent en MathML de présentation, voir la section sur les limites courantes) et même plus. Vous pouvez aussi enregistrer vos propres constructions dans un fichier mml pour les utiliser ultérieurement. Les 6 onglets sont :

1. - Constructions diverses
     - nouvelle formule
     - `mrow`: utilisé pour regrouper des éléments. Voir la section sur la construction row
     - `mphantom`: cache un fragment de la formule, utilisable pour l'alignement. Les parties cachées sont visibles si vous sélectionnez la formule :

       { + 5 x + 3 y + 0 z = + 0 − 2 x + 0 y + 7 z = + 11 − 3 x + 2 y − 6 z = − 7

     - parenthèses: ( x )
     - intervalle: On demande les symboles ouvrants/fermants et séparateurs. [ a ; b ]
     - fence: Idem, mais le nombre d'éléments est demandé. [ 1 , c , Y , ⅇ , ∏ }
     - `mtable`: a b c d
     - `menclose`: a or b
     - selector: On demande le nombre de coordonnées. a i ⁣ j
     - accolades avec disjonction de cas ou accolades : ∣ x ∣ = { x if x ≥ 0 − x otherwise
   - Constructions de MathML de présentation : msup, msub, msubsup, mover, munder, munderover, multiscripts.
   - Ensembles de nombres: naturels, entiers, rationnels, réels, complexes, quaternions, premiers.
   - Accents et script en dessous.
2. - relations d'équivalence et relations d'ordre
     - égalité, approx, congru, isomorphe
     - inégalités
     - inf, sup, max and min
   - logique
     - Vrai et Faux
     - Equivalence
     - Quantificateurs universels et existentiels
     - Non, Et, Ou, Ou exclusif, Implique, Equivalent à
3. - théorie des ensembles
     - ensemble/liste construit par extension/séparation, nuplet
     - élement, sous ensemble
     - ensemble vide, ensemble des parties
     - complément, différence, différence symétrique
     - intersection, union, produit cartésien
     - cardinal, omega, aleph, intersection diagonale
   - fonctions et applications
     - construction lambda
     - définition d'application, flèches
     - domaine, image, codomaine
     - identité, composition, application réciproque
4. - arithmétique
     - somme, produit
     - factoriel, combinaison, cardinal
     - divise
     - ppcm, pgcd
     - reste, quotient
   - opérations
     - opérations élémentaires: plus, moins, fois, division, fraction
     - puissance, racine
     - plancher, plafond
   - complexes
     - abs (module), arg, conjugué
     - cartesien, polaire
     - partie réelle et imaginaire
   - constantes: ⅇ , ⅈ , π , γ , NaN (non un nombre)
5. - analyse
     - differentielle, differentielle partielle
     - intégrales: simple/double/triple, normal/contour, msub/msupsub
     - équivalence
     - limite, tend vers
     - supminus ( 1 - ) ou supplus ( 0 + )
     - l'infini
     - petit et grand O
   - algèbre linéaire
     - somme direct
     - vecteur ligne/colonne, matrice
     - transposée, déterminant
     - rot, div, grad, laplacien
     - produit vectoriel, produit scalaire, produit externe
     - orthogonal, parallèle, complémentaire orthogonal, norme
   - statistique : moyenne, sdev, variance, médiane, mode, moment
6. fonctions élémentaires classiques (trigonométriques, réciproques...)

#### Entrer des constructions à partir du clavier

Vous n'êtes pas obligé d'utiliser le sous-menu Math ou la palette Math pour créer et éditer des expressions mathématiques. Vous pouvez entrer des constructions mathématiques directement à partir du clavier puisque que chaque entrée du menu a un équivalent sur le clavier (les raccourcis sont indiqués dans les menus). Voir les raccourcis clavier courant pour les versions Linux, Mac OS X, et Windows.

Vous pouvez aussi utiliser les touches directionelles (flèches) pour faire passer le point d'insertion d'une construction à une autre. En particulier, les deux flèches horizontales permettent de se déplacer selon la structure de l'expression mathématique. Par exemple, en fin de numérateur d'une fraction, la flèche droite fait passer au début du dénominateur. En outre, si vous utilisez la flèche vers la droite à l'intérieur d'une construction non encore complétée, le point d'insertion est directement placé dans la case vide la plus proche.

### Options d'éditions avancées

#### Entrer des caractères

Quand vous tapez une chaîne de caractères dans un élément MathML, Amaya analyse cette chaîne et engendre automatiquement des éléments `mo` (opérateur), `mn` (nombre), `mi` (identificateur), et `mtext`

Par exemple, pour entrer la formule x = 2 a + b

1. si vous n'êtes pas dans une expression mathématique, cliquer d'abord sur l'entrée Insérer une formule du sous-menu Insertion/Math.
2. taper cette séquence de 6 caractères : `x=2a+b`

Vous pouvez vérifier dans le vue structure ou source la structure générée par Amaya :

`<mi>x</mi><mo>=</mo><mn>2</mn><mi>a</mi><mo>+</mo><mi>b</mi>`

Si le résultat ne correspond pas exactement à ce que vous vouliez, il suffit de sélectionner les caractères mal interprétés et de changer leur type avec l'une des commandes Texte (mtext), Identificateur (mi), Nombre(mn), Opérateur (mo).

#### La construction row

La construction `row` de la palette est équivalente aux accolades en LaTeX : elle vous permet de donner des informations sur la façon dont les différentes parties d'une formule sont liées entre elles. Elle n'apparaît pas à l'écran mais peut avoir un effet indirect sur le rendu.

Par exemple, si vous créez des parenthèses, comme dans l'expression suivante :

f ( x ) = 1 x

taper la séquence de caractères `f(x)=` . . . donnerait :

f ( x ) = 1 x

Ici, le `(x)` doit être contenu dans un élément `mrow`. Vous pouvez corriger le problème en sélectionnant la partie de la formule puis en cliquant sur la construction row. Vous pouvez aussi directement obtenir le `mrow` souhaité en utilisant la commande Parenthèses du menu Insertion/Math ou le bouton de la palette.

#### Espacement

Amaya gère les espacements à l'intérieur des expressions mathématiques, mais vous avez parfois besoin d'ajouter d'autres espaces. Déplacez le curseur à l'endroit où vous voulez insérer un espace et choisissez Espace (mspace) dans le sous-menu Insertion/Math. Ceci créer un espace horizontal par défaut. Vous pouvez alors changer son attribut `width` pour ajuster sa taille ou ajouter d'autres attributs (`height`, `depth`, `linebreak`) pour changer l'espacement vertical. Voir la spécification MathML pour plus de détails.

#### Caractères spéciaux

Pour entrer les caractères et symboles mathématiques qui ne sont pas disponibles au clavier, vous pouvez utiliser la commande Caractères du sous-menu Insertion/Math. Tapez le nom du caractère (la liste des noms est disponible dans la spécification MathML). Au lieu du nom, vous pouvez entrer la valeur Unicode du caractère. Pour entrer cette valeur en décimal, commencez par '#'. Pour l'entrer en hexadécimal, commencez par '#x'. Pour accélérer la frappe, vous pouvez entrer directement une valeur hexadécimal, sans la faire précéder de '#x', mais cela peut donner une ambiguïté (comme 'af', par exemple). En cas d'ambiguïté, la chaîne saisie est interprétée comme un nom de caractère.

Vous pouvez aussi utiliser l'outil Caractères spéciaux qui se trouve dans la zone des outils. La partie supérieure de cet outil est un menu qui vous permet de choisir un groupe de caractères qui sont alors disponibles dans le tableau qui se trouve en-dessous. Cliquez sur le caractère voulu dans ce tableau pour l'insérer dans le document.

En outre, la spécification MathML recommande d'ajouter des caractères invisibles pour que la lecture de la formule soit plus facile pour les synthétiseurs vocaux. Ces caractères sont automatiquement insérés dans les constructions de la palette, mais parfois vous devez le faire vous-même. Vous pouvez utiliser le sous-menu Insertion/Math ou des raccourcis. Les trois caractères invisibles sont :

1. le produit invisible : a ⁢ b
2. l'application de fonction : f ⁡ ( x )
3. la virgule invisible : a i ⁣ j

#### Editer la structure

Si vous voulez changer la structure d'une expression existante, pour ajouter par exemple un exposant ou mettre des parenthèses autour d'une expression, il suffit de sélectionner dans le document l'expression à transformer et d'entrer la nouvelle expression avec la palette Math, le sous-menu Insertion/Math ou le clavier.

Vous pouvez également utiliser la commande Transformer du menu Outils. Sélectionnez l'expression que vous voulez transformer et la commande Transformer affichera un menu avec tous les changements possibles. Pour les constructions qui ne font pas parties du balisage de présentation MathMP (i.e. seulement disponibles à partir de la palette) cliquer sur le bouton mettra l'expression sélectionnée dans la case vide la plus naturelle.

Éditer la structure est utile pour garder une structure récursive même en rentrant une formule linéairement. Par exemple, pour rentrer x 2 ≤ 9 25 ⇒ x ≤ 3 5 vous pouvez,

- soir rentrer "récursivement" (plus rapide mais moins naturel pour les longues expressions) :
  - ⇒
  - ≤ ⇒
  - ≤ ⇒
  - x ≤ ⇒
  - x 2 ≤ ⇒
  - x 2 ≤ ⇒
  - x 2 ≤ 9 ⇒
  - ...
- soit rentrer linéairement (vous écrivez comme vous lisez, mais vous devez sélectionner plusieurs fois) :
  - x
  - x
  - x 2
  - x 2 ≤
  - x 2 ≤ 9
  - x 2 ≤ 9
  - ...

Généralement, vous combinerez les deux méthodes.

#### Vue structure

Toutes les fois qu'un document contient des éléments MathML, la sélection de l'article Montrer la structure du menu Affichage ouvre la vue Structure qui montre la structure principale du document HTML. Dans cette vue, les éléments MathML et leur contenu effectif sont affichés.

Vous pouvez éditer des expressions mathématiques aussi bien dans la vue principale que dans la vue Structure. La vue Structure est particulièrement utile pour éviter l'ambiguïté. Observez l'exemple suivant :

x = a + b + 1

Lorsque vous déplacez le point d'insertion après le caractère b, il n'est pas évident de distinguer si vous voulez ajouter quelque chose à l'intérieur de la racine carrée ou après elle. Sélectionner (ou vérifier ) dans la vue Structure évite toute ambiguïté. Vous pouvez également vérifier dans la ligne d'état, en bas de la fenêtre.

#### Les liens dans MathML

Vous pouvez créer et utiliser des liens hypertexte dans des expressions mathématiques. Ces liens sont représentés en utilisant le XML Linking Language (XLink). Seuls les liens simples unidirectionnels sont utilisables, mais vous pouvez associer un lien à n'importe quelle partie d'une formule. Par exemple, la fraction dans la formule ci-dessous est un lien vers la page d'accueil du W3C :

y = 1 x 2 + 1

Cliquer deux fois sur un des caractères à l'intérieur de la fraction fait apparaître la page d'accueil du W3C.

Pour créer un tel lien, il suffit de sélectionner une expression (la fraction dans l'exemple ci-dessus), de cliquer sur le bouton de l'outil Eléments, ou de sélectionner l'entrée Créer/changer lien du menu Liens, et de cliquer sur la cible désirée. Si la cible est une expression dans une formule, vous devez d'abord faire de cette expression une cible. Il suffit de sélectionner l'expression ainsi que l'entrée Créer cible du menu Liens. Ceci crée un attribut `id` pour l'expression cible.

### Un peu plus à propos de MathML

#### Compatibilité des navigateurs

Plusieurs navigateurs possèdent un support MathML :

- Internet Explorer avec le plugin MathPlayer
- Firefox et les autres navigateurs basés sur le moteur de rendu Gecko
- Opera depuis la version 9.5

Il faut utiliser le suffixe `.xml` pour être sûr que tous les navigateurs traitent les documents XHTML comme du XML et donc affichent correctement les documents incluant des formules mathématiques. Il est aussi recommandé d'utiliser le charset utf-8 pour les documents XML.

Par défaut Amaya ajoute le doctype `XHTML 1.1 plus MathML 2.0` en tête du document. Ce doctype n'est pas obligatoire mais il est utile :

- pour valider le document,
- pour engendrer des entités alphanumériques (&int; par exemple) pour les symboles mathématiques, dans le code source. Sinon les symboles mathématiques seront codés comme tout autre caractère unicode.

Malheureusement, ce doctype n'est pas supporté par beaucoup de navigateurs. Il peut donc être nécessaire de le supprimer avec la commande Outils/Changer le doctype/Supprimer le doctype.

IE utilise la feuille de transformation `pmathml.xsl` et un plugin pour afficher le code MathML inclus. Amaya ajoute automatiquement le lien vers la feuille de transformation, mais il faut penser à déposer une copie de cette feuille de transformation (pmathml.xsl) dans le répertoire local du document.

#### Limitations courantes

- Amaya implémente seulement les Balises de Présentation de MathML 2.0, et non le Balisage du Contenu.
- Certaines balises de présentation ne sont pas entièrement disponibles: `mglyph`, `maction`
- Tous les éléments de présentation et les attributs sont utilisables, mais seuls les attributs suivant sont pris en compte dans le formatage : `display, alttext`, `mathvariant, mathsize`, `mathcolor, mathbackground, fontsize, fontweight`, `fontstyle`, `fontfamily`, `color`, `linethickness`, `numalign`, `denomalign`, `bevelled`, `notation`, `lquote`, `rquote`, `lspace`, `rspace`, `largeop`, `movablelimits, subscriptshift`, `superscriptshift`, `form`, `width` (`mspace`), `height` (`mspace`), `depth` (`mspace`), `align`, `rowalign`, `columnalign`, `frame`, `framespacing`, `displaystyle,side`, `rowspan`, `columnspan, rowspacing, columnspacing, rowlines, columnlines`.
- Les attributs `class`, `id` et `style` sont utilisables, avec la même sémantique que dans HTML : vous pouvez associer du style CSS aux éléments MathML (attribut `class` et `style`) et un élément MathML peut être la cible d'un lien (attribut `id`).
- Amaya utilise les polices STIX pour afficher des symboles mathématiques, mais tous ne sont pas supportés.