## Editer des mathématiques

Amaya permet d'inclure des expressions mathématiques dans les pages web, suivant la spécification du langage MathML.

Les expressions mathématiques sont traitées comme des composants structurés, de la même manière que les éléments HTML. Vous pouvez donc manipuler les expressions mathématiques comme vous manipulez les autres parties des documents 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.

### Créer une expression mathématique

#### La palette Math et le menu XML

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 Nouvelle formule du menu XML. Ceci vous permet de créer une nouvelle formule lorsque le point d'insertion est dans un élément HTML ou SVG (mais le point d'insertion ne devrait pas être à l'intérieur d'un élément MathML).

Dans le menu XML/Eléments math de base, les éléments suivants vous donnent la possibilité de créer de nouveaux éléments mathématiques de base (non disponibles dans la palette) : Texte (`mtext`), Identificateur (`mi`), Nombre (`mn`), Opérateur (`mo`), Espace (`mspace`). Vous pouvez également utiliser ces commandes pour changer le type d'un élément seul ou d'une séquence d'éléments.

Ces items sont suivis de l'entrée Caractère (`&xxx;`). Cette commande 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 α). Les deux dernières entrées du menu XML/Eléments math de base permettent d'entrer rapidement deux de ces caractères spéciaux souvent utilisés : `InvisibleTimes` et `ApplyFunction`.

Les éléments suivants du menu XML/Constructions math (ou de la palette 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

La derniére construction proposée est la matrice :

- Matrice ou table (`mtable)`: a b c d

Vous pouvez créer une matrice soit à partir du menu XML, soit à partir de la palette Math. Vous devez alors choisir le nombre de lignes et de colonnes désirées et une matrice vide est créée à la position courante. Les matrices se manipulent comme les tableaux HTML. Une douzaine de commandes spécifiques sont disponibles dans le menu XML/Matrices.

#### Entrer des constructions à partir du clavier

Vous n'êtes pas obligé d'utiliser un menu 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éee de menu a un équivalent sur le clavier (les raccourcis sont indiqués dans les menus). Ceci vous permet de taper plus vite.

Si vous voulez taper encore plus vite, vous pouvez aussi utiliser les touches de direction du clavier (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 touche → fait passer au début du dénominateur.

Action | Raccourci
--- | ---
Nouvelle formule (math) | Ctrl-m Ctrl-m
Plein texte (mtext) | Ctrl-m Ctrl-x
Identificateur (mi) | Ctrl-m Ctrl-d
Nombre (mn) | Ctrl-m Ctrl-n
Operateur (mo) | Ctrl-m Ctrl-g
Espace (mspace) | Ctrl-m Ctrl-Space
Caractère (&xxx;) | Ctrl-m Ctrl-e
Séparateur invisible | Ctrl-m Ctrl-i
Application de fonction | Ctrl-m Ctrl-a
Racine (mroot) | Ctrl-m Ctrl-r
Racine carrée (msqrt) | Ctrl-m Ctrl-q
Englobement (menclose) | Ctrl-m Ctrl-c
Fraction (mfrac) | Ctrl-m Ctrl-f
Subscript et superscript (msubsup) | Ctrl-m Ctrl-b
Subscript (msub) | Ctrl-m Ctrl-v
Superscript (msup) | Ctrl-m Ctrl-6
Bas et haut (munderover) | Ctrl-m Ctrl-k
Bas (munder) | Ctrl-m Ctrl-u
Haut (mover) | Ctrl-m Ctrl-o
Parenthèses (mrow) | Ctrl-m Ctrl-p
Multiscripts (mmultiscripts) | Ctrl-m Ctrl-s
Matrice (mtable) | Ctrl-m Ctrl-t

### 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

x = 2 a + b

il suffit de taper cette séquence de 6 caractères : `x=2a+b` (n'oubliez pas de cliquer d'abord sur l'entrée Nouvelle formule du menu XML ou sur le bouton Math de la palette si vous n'êtes pas dans une expression mathématique), et vous obtiendrez la structure suivante (vous pouvez vérifier dans le vue Structure) :

    <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) du menu XML/Math.

Note: Si vous créez des parenthèses, comme dans l'expression::

f ( x ) = 1 x

ne tapez pas simplement la séquence de caractères `f(x)=` . Vous obtiendriez:

f ( x ) = 1 x

Utilisez plutôt la commande Parenthèses du menu XML/Math ou de la palette.

### 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 menu XML/Eléments math de base. 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 alpes saisie est interprétée comme un nom de caractère.

Vous pouvez aussi utiliser la palette Caractères spéciaux qui se trouve en-dessous de la palette Math. Les boutons de la partie supérieure de cette palette permettent de choisir un groupe de caractères qui sont alors disponibles dans le menu qui se trouve en-dessous. Choisissez le caractère voulu dans ce menu, puis insérez-le dans le document à l'aide du bouton voisin.

### 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 menu XML/Constructions math ou le clavier. Vous pouvez également utiliser la commande Transformer du menu Edition. Sélectionnez l'expression que vous voulez transformer et la commande Transformer affichera un menu avec tous les changements possibles.

### Vue Structure

Toutes les fois qu'un document contient des éléments MathML, la sélection de l'article Montrer la structure du menu Vues 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 Lien de la palette XHTML (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.

### Compatibilité avec Firefox et IE

Il faut utiliser le suffixe `.xml` pour être sûr que tous les browsers 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 browsers. Il peut donc être nécessaire de le supprimer avec la commande Fichier>Changer le type du document>Supprimer le doctype.

IE ne sait pas traiter le MathML. Il 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.

### Limites courantes

Amaya implémente seulement les Balises de Présentation de MathML 2.0, et non le Balisage du Contenu. 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`).