Dans un fichier ePiX, les points sont marqués avec des glyphes LATEXiens (marques markers) ou des boites de texte (étiquettes labels). Une marque occupe une boite de taille nulle et est positionné à un emplacement cartésien déterminé. Lorsque la taille ou le format de l'image est ajusté, le corps de la police reste le même. Afin de garder l'alignement correct des étiquettes pour toutes sortes de tailles on attache un point d'alignement invariant par homothétie (agrandissement, réduction) à chaque étiquette et on utilise les coordonnées cartésiennes pour placer ce point d'alignement. Ce dernier est controllé par un déplacement donné en vrai-point et une option facultative d'alignement dans le style LATEXien.
Les marques d'ePiX sont appelées par leur nom :
spot(P pt); dot(P pt); ddot(P pt); box(P pt); bbox(P pt); ring(P pt); circ(P pt);
Les marques spot et (d)dot sont des points pleins qu'on ne peut pas colorier ; box et bbox sont des carrés pleins que l'on peut colorier. Une marque ring est coloriable et transparent tandis que circ est incoloriable et opaque. Les marques situées dans la même colonne sont de même taille et, dans chaque colonne, le diamètre est 1,5 fois le diamètre de la suivante. Le diamètre d'une dot – et donc de toutes les marques situées dessous – est fixé à dot_size(diam) dont l'argument, qui vaut 3 par défaut, est un nombre de pt. Les glyphes présentés dans le tableau 2.1 sont disponibles grâce à la commande
marker(P pt, <MARKER TYPE>);
On dispose aussi de ces types de marques lorsque l'on représente des données à partir d'un fichier.
Une étiquette est une boite typographique. Comme une boite LATEXienne occupe un rectangle sur la page imprimée, on n'a pas assez d'information avec une seule position pour placer une étiquette dans une figure ; on a besoin en plus d'un point d'alignement. Par défaut, le point d'alignement d'une boite de texte est le point de référence : le point d'intersection de l'arête gauche avec la ligne de base, celui que LATEX utilise pour placer la boite sur la page : On peut déplacer un point d'alignement à la main :
label(P(3,2), P(2,-1), "$\\rho=\\sin \\theta$");
compose l'équation ρ=sinθ et place la boite de texte produite au
point de coordonnées (3,2) mais la déplace vers la droite de 2pt et
vers le bas de 1pt. Remarquez que C++ traite « \\
» comme un
charactère d'échapement et qu'il faut donc doubler la barre oblique inverse dans
le source pour en obtenir un seul dans la sortie. Le commande d'étiquettes sont
:
label(P posn, P offset, <label text>); label(P posn, <label text>); label(P posn, P offset, <label text>, align);
La première commande imprime l'étiquette avec son point de référence LATEXien aux coordonnées cartésiennes posn en le déplaçant (sur la page) des nombres de vrais points donnés sous formes de coordonnées P offset. Des déplacements de 2, 4, 6, 12 ou 18 points conviennent bien à une police de corps 12.
La seconde commande imprime le texte de l'étiquette dans une boite LATEXienne centrée au point posn. Bien que ce soit peut-être la manière la plus évidente de placer une étiquette, ce ne peut être toujours la méthode correcte puisque les étiquettes marquent souvent un objet géométrique qui ne devrait pas être recouvert par son étiquette.
Dans la troisième forme de la commande, l'option align peut prendre une valeur – ou une paire convenable de valeurs – parmi t, b, r ou l – pour top (sommet), bottom (bas), right (droite), left (gauche) – ou le seul c (center, centre). Comme pour les offsetts, ces options d'alignement spécifient une position de l'étiquette relativement à l'emplacement cartésien de p et donc fonctionnent à l'opposé de la manière dont elles fonctionnent sous LATEX. Par exemple, l'option d'alignement br place l'étiquette dessous et à droite du point p.
Chaque commande d'étiquette possède une version « masque (mask)»correspondante qui place un rectangle blanc opaque sous le texte de l'étiquette. Il est utile de masquer lorsque le texte de l'étiquette apparait dans une partie de la figure déjà chargée. Un document contenant un fichier eepic faisant appel à la commande masklabel doit utiliser l'extension pstcol5.
On peut pivoter une étiquette, l'angle est donné dans l'unité d'angle courant par la commande label_angle(theta) . Une rotation de 90 imprime des étiquettes convenant à un axe vertical. Si un fichier eepic contient des étiquettes pivotées, le document qui le contient doit charger l'extension rotating. (elaps inclut automatiquement toutes les extensions LATEXiennes dont pourrait avoir besoin un fichier eepic.)
En construisant et positionnant une étiquette, gardez les points suivants à l'esprit :
Par défaut, la police dans une figure ePiX est celle du document qui la contient. Le corps de la police et son ½il sont changés par des commandes de «déclaration de style» comme
font_size("Large"); font_face("sc");
L'argument de font_size
est une taille LATEXienne valide dont la valeur
par défaut est normalsize ; font_face
accepte une chaine de
deux caractères qui concaténées à la chaine « text» donnent une
commande LATEXienne de déclaration de fonte, comme par exemple textsc
ci-dessus.
Un controle plus fin, sur la police et la taille pour une seule étiquette, est obtenu en codant en dur les commandes LATEXiennes nécessaires dans le texte de l'étiquette.
Les marques élémentaires – circ, ring, spot, (d)dot et (b)box – accepte des arguments d'étiquette. Par exemple :
dot(P(0,0), P(4,2), "The Origin", tr);
positionne et étiquette un point aux coordonnées (0,0).