Principes et utilisation
La bibliothèque TeX permet d'afficher des formules mathématiques en deux temps. Prenons pour exemple une formule TeX simple :
\left(1+\frac{1}{n}\right)^n
La première étape est le parsing (ou analyse syntaxique) et consiste à
analyser le texte de la formule pour en construire une représentation
structurée. Cette étape lit la syntaxe TeX, les commandes comme \frac
, trouve
les arguments (qui sont peut-être aussi des commandes) et comprend comment les
objets sont inclus les uns dans les autres. Elle produit une structure de
données correspondant à la formule.
env:primary 33x21,12
flow 33x21,12
<left> subtype '(' 3x17,8 +0+0
"1+" 11x7,3 +4+0
<frac> 7x17,8 +16+0
flow 5x7,3
"1" 5x7,3 +0+0
flow 5x7,3
"n" 5x7,3 +0+0
<right> subtype ')' 3x17,8 +24+0
<\sup> 5x7,3 +28-9
flow 5x7,3
"n" 5x7,3 +0+0
Dans le code, il s'agit d'un objet de type struct TeX_Env
. On y trouve
différentes informations comme la taille de tous les éléments ; la formule
complète faire 33 pixels de large et 21 pixels de haut, tandis que la fraction
fait 7 par 17.
La deuxième étape est le rendu, où l'on dessine la formule à partir de la structures de données. Cela produit un visuel à l'écran.
Utilisation et fonctions principales
Les fonctions principales sont situées dans l'en-tête <TeX/TeX.h>
. Vous
n'avez besoin d'inclure que cet en-tête si vous ne faites pas un usage avancé
de la bibliothèque.
#include <TeX/TeX.h>
Configuration des fonctions d'interface
Avant de pouvoir parser et dessiner des formules, vous devez indiquer à la bibliothèque comment évaluer la taille du texte et faire le dessin. Voyez la page Fonctions d'interface pour voir comment lui indiquer les bonnes fonctions selon votre environnement de développement.
Parser une formule
Pour parser une formule, on utilisera TeX_parse()
en indiquant si l'on
utilise le mode large (display) ou en-ligne. Le mode large est utile pour les
formules qui sont toutes seules sur leurs lignes et peuvent donc être hautes.
Lorsqu'il est utilisé, les sommes et les produits ont leurs bornes placées
au-dessus et en-dessous d'eux. Le mode en-ligne réduit la hauteur des formules
et est préférable quand une formule fait partie d'un paragraphe pour ne pas
trop déformer les lignes.
L'image ci-dessous affiche la même formule en mode large (à gauche) et en-ligne (à droite).
TeX_parse()
renvoie un objet structuré de type TeX_Env
en cas de succès, et
NULL
en cas d'erreur. Cela peut être dû à une erreur de syntaxe dans la
formule, un manque de mémoire, ou une limitation de la bibliothèque.
struct TeX_Env *formula = TeX_parse("\\sum_{i=1}^{n}i!", 1);
Il faut faire attention à deux choses :
- La première est de ne pas mettre d'espaces superflus dans la formule, car ils seront rendus tels quels et donneront souvent une impression de vide.
- La seconde est d'échapper les backslashs puisqu'ils ont une signification particulière en C.
Dessiner
Une formule parsée peut être utilisée pour faire le rendu. La fonction
TeX_draw()
se charge de cela ; elle prend en paramètres la formule, la
position et la couleur du tracé. La couleur est transmise aux fonctions
d'interfaces fournies par l'utilisateur ; voyez la page
Fonctions d'interface.
TeX_draw(formula, 10, 10, BLACK);
Une formule peut être dessinée autant de fois que nécessaire.
Libérer une formule
Une fois qu'on n'a plus besoin d'une formule, il faut libérer la mémoire
qu'elle occupe. La fonction TeX_free()
sert à ça.
TeX_free(formula);
Une fois la formule libérée, elle ne peut plus être utilisée.
Raccourci
La fonction TeX_interpret()
est un raccourci pour les trois fonctions
précédentes. Elle parse une formule TeX, la dessine et la libère. Il ne faut
l'utiliser que lorsque la formule est à usage unique, sinon le parsing est
exécuté et la mémoire réallouée à chaque affichage !
Les exemples donnés ci-dessus sont équivalents à :
TeX_interpret("\\sum_{i=1}^{n}i!", 1, 10, 10, BLACK);