Vous êtes sur la page 1sur 10

Cahiers

GUTenberg
m DE LA CONSTRUCTION DE DIAGRAMMES
P Francis Borceux
Cahiers GUTenberg, n 5 (1990), p. 41-48.

<http://cahiers.gutenberg.eu.org/fitem?id=CG_1990___5_41_0>

© Association GUTenberg, 1990, tous droits réservés.


L’accès aux articles des Cahiers GUTenberg
(http://cahiers.gutenberg.eu.org/),
implique l’accord avec les conditions générales
d’utilisation (http://cahiers.gutenberg.eu.org/legal.html).
Toute utilisation commerciale ou impression systématique
est constitutive d’une infraction pénale. Toute copie ou impression
de ce fichier doit contenir la présente mention de copyright.
Cahiers G U T e n b e r g n " 5 — Mai 1990 - spécial congrès G U T e n b e r g ' 9 0

De la construction de diagrammes
Francis BORCEUX
Département de mathématiques UCL, S chemin du Cyciotron, 1848 Louvain-la-Neuvt, Belgique
e-mail : FB0RCEUX8BUCLLN11. bitnet

R é s u m é L ' ensemble diagram d e macros réalise Les choses deviennent déjà moins évi-
l a m i s e e n p a g e a u t o m a t i q u e d e d i a g r a m m e s cons-
t i t u é s d e flèches d e t y p e s divers j o i g n a n t des "som-
dentes lorqu'il s'agit de dessiner des
m e t s " p r e n a n t la f o r m e d'expressions m a t h é m a t i q u e s . flèches obliques, comme dans le diagram-
Le p r o g r a m m e calcule a u t o m a t i q u e m e n t la l o n g u e u r
et l a p o s i t i o n d e c h a q u e é l é m e n t . L ' u t i l i s a t e u r p e u t
me 1, et elles se compliquent franche-
i m p o s e r p o u r c h a q u e d i a g r a m m e u n f a c t e u r d'échelle ment lorsque pour déterminer la longueur
k sa c o n v e n a n c e .
d'une flèche, il faut tout d'abord estimer
la taille qu'occuperont à l'impression les
1. Introduction sommets du diagramme qu'elle est censée
joindre:
Diverses disciplines des mathématiques
font un abondant usage de "diagrammes 0 / B 0
commutatifs" constitués d'expressions a ß
mathématiques reliées par des flèches;
c'est le cas notamment de l'algèbre ho- 0 'A © D—*B'—-r-C © D- 0
/ 9
mologique, de la théorie des catégories, Et l'histoire ne s'arrête pas là! D est
de la topologie algébrique, etc... fréquent que les sommets soient joints
Réaliser un diagramme simple tel que par des doubles, triples, . . . voire n-
uples flèches ou encore que les flèches
0 -i— b — c 0
en question soient affublées de marques
a ß conventionnelles indiquant qu'il s'agit
d'une inclusion (H—•-), d'un quotient
0 •B'-
•A'- - C - 0
r s- (—*-) ou d'un isomorphisme ( ~ » ). Par
ne pose en soi guère de problèmes. D suffit exemple
de s'armer d'un peu de patience et de
programmer tout cela dans le jargon de
l'environnement picture de JATjrX.

Lorsqu'un document contient de nom-


breux diagrammes cumulant les diverses
difficultés évoquées ci-dessus, le recours
direct à l'environnement picture de MjrX
devient rapidement fastidieux et le fait
d'arriver finalement à un résultat esthé-
Diagramme 1 tiquement satisfaisant est souvent le fruit

41
F. Borceux

d'approximations successives. La consti- les macros indique à suffisance que des


tution d'un fichier de macros réalisant la diagrammes un peu complexes requiè-
composition automatique de diagrammes rent rapidement de nombreuses manipu-
s'est donc avérée impérative aux yeux de lations élémentaires de géométrie analy-
plusieurs auteurs. tique plane. Michael BARR a annoncé
De nombreuses personnes ont créé leurs l'existence de sa liste catmac de macros
propres macros pour composer rapide- au début '89, via un message à TfiKhax.
ment un triangle ou un rectangle en énu- Des versions préliminaires de ce fichier
mérant simplement comme arguments les existaient depuis quelque temps.
noms des sommets et des flèches qui le Le présent article décrit le fichier dia-
composent. Mais la vraie difficulté réside gram qui est une collection de macros per-
bien sûr dans la mise au point d'un vé- mettant de composer des diagrammes sur
ritable programme capable de traiter des un principe radicalement différent. L'idée
diagrammes de taille et de complexité ar- fondamentale est que chaque sommet ou
bitraires. Comme, par exemple, un "cu- chaque flèche n'est ni plus ni moins qu'un
be" du genre élément du diagramme, sans qu'aucune
distinction ne soit faite entre ces divers
B D éléments. L'utilisateur énonce les divers
a/ éléments constituant le diagramme com-
c me il le ferait dans le cas d'une matrice
C
et c'est le programme qui se charge d'ef-
f
fectuer les divers calculs de mise en page.
H La version actuelle de diagram est
opérationnelle depuis le début '89 mais
aucune annonce publique à ce propos
G n'avait jamais été faite; le fichier se
transmettait simplement "de bouche à
Diagramme 2 oreille", si j'ose me permettre cette
A ma connaissance, la priorité dans la expression d'un autre âge à l'heure où les
mise au point de fichiers élaborés de ma- bouches et les oreilles prennent surtout
cros traitant ce genre de problèmes re- la forme de terminaux reliés au courrier
vient à Michael BARR, professeur au dé- électronique. Le succès de ces macros
partement de mathématiques de l'univer- dans le cercle toujours grandissant de
sité Mac Gill à Montréal. Partant de ma- ses utilisateurs fit germer l'idée que
cros simples permettant de dessiner des GUTenberg'90pourrait être l'occasion de
carrés et des triangles, il regarde un dia- les rendre publics. En fait un utilisateur
gramme complexe comme une juxtapo- enthousiaste a fait paraître à leur propos
sition de carrés et de triangles qu'il at- un avis dans T^Khax en janvier '90, ce qui
tache en divers points d'un environne- à mon grand regret prive GUTenberg'90
ment picture; certains macros facilitent de la primeur de l'annonce.
cette mise en page, notamment grâce Parmi les autres fichiers de Macros
à l'introduction d'éléments "fantômes" pour dessiner des diagrammes, je citerai
qui n'apparaissent pas à l'impression. Le celui de Paul TAYLOR (Impérial College,
principe même sur lequel sont construits Londres) opérationnel depuis janvier '90.

42
De la construction de diagrammes

2. Les éléments d'un Pour insérer une flèche dans un dia-


gramme, il faut bien entendu préciser au
diagramme
programme dans quelle direction il doit
Un diagramme est donc constitué de la tracer: horizontale, verticale, oblique,
sommets et de flèches, traités sur le même vers le haut, vers la gauche, e t c . . . L'op-
pied et considérés simplement comme les tion choisie a été de retenir comme direc-
éléments du diagramme. tions fondamentales les seize directions
Un sommet est généralement une ex- principales de la rose des vents, encodées
pression mathématique qu'il suffit de via l'abbréviation anglaise correspondan-
composer selon les règles habituelles. te. Les quatre abbréviations fondamen-
Dans l'usage du fichier diagram, chaque tales sont donc
élément d'un diagramme est traité
n (Nord) s (Sud)
comme une formule mathématique, ce qui
e (Est) w (Ouest)
évite la frappe de symboles $.
Pour ce qui est des flèches, voici les à partir desquelles on peut considérer les
divers types disponibles et l'abbréviation seize directions suivantes:
(anglaise) correspondante sous laquelle le
programme les reconnaît. n
nnw nne
flèche ar
flèche pointillée dotar
monomorphisme mono
epimorphisme epi
bimorphisme bimo
isomorphisme iso
double flèche biar
égalité eql
ad jeu:
flèches adjointes
La commande décrivant une flèche est
trieur alors obtenue en faisant précéder le nom
triple flèche de la flèche de sa direction:
\ndotar une flèche pointillée
triadjar
3 fl. adjointes orientée vers le nord
\swbiar une double flèche
quadriar orientée vers le sud-ouest
quadruple flèche \enear une flèche
orientée vers l'est-nord-est
quadriadjar
4 fl. adjointes e t c . . . En fait toutes les variétés de
flèches existent dans les huit directions
quintiar principales de la rose des vents, mais
quintuple flèche seules les flèches ordinaires ont été
programmées dans les huit directions
5 fl. adjointes q u i n t iad jeu: tertiaires.

43
F. Borceux

Le lecteur observateur aura constaté En fait, il n'y a pas grand chose à dire
que notre rose des vents ferait dresser sur la définition des diverses commandes
les cheveux sur la tête au plus piètre qui viennent d'être décrites. Relevons
des géographes. En fait les directions quand même quelques points qui auront
tertiaires de notre rose des vents sont leur importance dans la suite:
celles de coéfficient angulaire ± 1 et ±2,
c'est-à-dire les diagonales de rectangles 1. Chacune des commandes ci-dessus
de côtés 2 et 1. Ce sont en effet ces réalise le dessin escompté dans un en-
directions, et non celles du type ^ + k \ vironnement picture autonome de di-
qui s'imposent lors d'un pavage du plan mensions formelles (0,0); le dessin est
au moyen de cellules carrées. Or ce sera centré par rapport à l'origine de la
précisément là l'un de nos principes de figure;
base pour la construction de diagrammes. 2. la longueur d'une flèche est laissée
Avant de commenter la manière dont sous forme d'un paramètre que le
les commandes ci-dessus ont été construi- programme calculera en temps utile
tes, précisons encore qu'il est possible de en fonction des autres éléments du
donner un nom à une flèche. Pour ce faire diagramme
il suffit de donner comme argument à la
commande le nom de la flèche en question Notons encore que les noms des flèches
en ayant pris soin sont automatiquement traités en mode
mathématique.
• de frapper en majuscule la première
lettre de la commande si l'on veut
imprimer le nom au-dessus de la
3. La conception d'un
flèche (à gauche dans le cas d'une diagramme
flèche verticale);
Un diagramme doit donc être pensé
• de frapper en majuscule la dernière comme une matrice dont les divers élé-
lettre de la commande si l'on veut ments sont soit un sommet, soit une
imprimer le nom en-dessous de la flèche,... soit le vide! En fait la construc-
flèche (à droite dans le cas d'une tion d'un diagramme ne se fait pas au
flèche verticale). moyen d'un environnement array, mais
bien au moyen d'un environnement pic-
Des règles analogues existent pour les ture, plus adapté aux calculs un peu fins
doubles ou triples flèches, avec cette fois de mise en page. C'est particulièrement
deux ou trois arguments. Par exemple vrai lors d'agrandissements ou de réduc-
\Nwepi{f> trace un epimorphisme dans tions automatiques des diagrammes. D y
la direction Nord-Ouest; cette flèche a cependant un prix à payer: les symboles
porte le nom / , imprimé au-dessus de & et \ \ de tabulation doivent être rem-
la flèche. De même \semonO{g} trace un placés par des commandes . . . d'où la né-
monomorphisme dans la direction Sud- cessité d'inclure entre accolades les argu-
Est; cette flèche porte le nom g im- ments de celles-ci!
primé en dessous de la flèche. Enfin Un diagramme est dès lors construit à
\ E a d j a r { f K g } trace deux flèches ad- partir d'un réseau carré formel de points,
jointes horizontales nommées / et g. deux lignes du réseau étant séparées

44
De la construction de diagrammes

par une distance laissée au choix de particulier il n'est pas nécessaire que
l'utilisateur (la valeur par défaut est 40 toutes les lignes aient le même nombre
points). Chaque élément du diagramme d'éléments: quand une ligne ne contient
est alors "attaché" en un point du plus que des éléments vides, on peut
réseau et centré par rapport à celui-ci. directement passer à la ligne suivante. Le
L'exemple suivant montre le diagramme 1 compteur des colonnes retient le nombre
et le réseau de points correspondant. maximum d'éléments qu'il a rencontrés
dans une même ligne. Le diagramme
précédent peut donc se frapper
• N»" « • \DIAG
{X} \nn
0 \ n { \ S e d o t a r { z » \ n { \ E s e a r { y » \nn
0 \ n { \ s s e a R { x } } \n{P>
\n{\Eepi{k» \ n {B> \nn
{}\n{} \n{\Smono-[h}}
\n{> \ n -C\smonO{g}}\nn
La frappe de ce diagramme en taille
0\n{> \n{A>
par défaut se fait (par exemple) selon le
\n-C\eepI-Cf» \ n {C>
schéma suivant
\diag
\DIAG
L'instruction \DIAG, entre bien d'au-
{..} \nn
tres choses, ouvre un environnement cen-
{..}\n{..}\n{..> \nn
ter puis un environnement picture de
{..}\n{..}\n{..}\n{..}\n{..}\nn
dimensions formelles (0,0). C'est dans
{..}\n{..}\n{..}\n{..}\n{..}\nn
cet environnement picture que le dia-
{..}\n{..}\n{..}\n{..}\n{..}
gramme est construit, le coin supérieur
\diag
gauche du diagramme coincidant avec
où les accolades successives contiennent l'origine du dessin. L'instruction \ d i a g ,
les divers éléments du diagramme. La entre autres choses, clôture l'environne-
commande \ n ("next") joue donc le ment picture, introduit un espacement
rôle du symbole & dans l'environnement horizontal et un espacement vertical cal-
array tandis que la commande \nn joue culés en fonction des nombres de colonnes
le rôle du double backslash. Les deux et de lignes, puis ferme l'environnement
commandes \DIAG et \ d i a g indiquent center. C'est donc l'instruction \ d i a g
le début et la fin de la définition du qui positionne le diagramme sur la page;
diagramme. Pour varier la taille d'un elle peut être remplacée par l'instruction
diagramme, il suffit de remplacer la \ d i a g v { t > { l > { b } qui ajoute des espace-
première instruction par \DIAGV{n} et la ments respectifs de t points en haut du
taille globale sera multipliée par n%. diagramme, / points à gauche et b points
On notera que les nombres de lignes et à droite.
de colonnes du diagramme ne sont pas La procédure précédednte de mise en
précisés. En fait les instructions \ n et \nn page d'un diagramme implique notam-
implémentent deux compteurs comptant ment que pour insérer plusieurs petits
le nombre de lignes et de colonnes. En diagrammes côte-à-côte sur une même

45
F. Borceux

ligne, il convient de les considérer comme direction et de l'écartement entre les


un seul grand diagramme . . . dans le- mailles du réseau.
quel certaines "colonnes" sont entière- Le cas des flèches horizontales est beau-
ment vides. coup plus délicat: la longueur d'une telle
flèche dépend bien sûr de l'écartement
4. Les calculs de mise en entre les points du réseau formel, mais
elle doit éventuellement être adaptée en
page fonction des longueurs des noms des deux
sommets adjacents. L'option par défaut
Lorsqu'ils sont introduits dans un dia-
est que toutes les flèches tracées autour
gramme, les divers éléments le consti-
d'un sommet ont leur extrémité sur un
tuant sont soit des formules mathéma-
cercle de rayon 15 points autour de celui-
tiques représentant un sommet, soit des
ci. Ceci laisse 30 points pour écrire le nom
flèches, soit le vide. Certains de ces
d'un sommet; si un tel nom dépasse 28
éléments ont des dimensions formelles
points, le programme réduira la longueur
nulles: le vide, bien sûr, mais aussi les
des flèches horizontales adjacentes pour
flèches; d'autres ont des dimensions non
laisser un écart de 1 point entre le som-
nulles, tels les sommets. Le programme
met et la flèche.
ignore ces différences et même les sup-
Une difficulté inhérente à la procédure
prime en centrant chaque élément dans
exposée ci-avant est que la longueur à
une boîte de dimensions formelles (0,0)
donner à une flèche ne pourra être déter-
qu'il positionne au point voulu du réseau
minée qu'après avoir pris connaissance de
de référence.
l'élément suivant du diagramme. C'est la
Pour réaliser valablement le dia-
raison pour laquelle, au moment où un
gramme, il reste au programme à calculer
nouvel élément est introduit dans le dia-
la longueur la plus adéquate à donner à
gramme,
chacune des flèches. Ces calculs sont réa-
lisés à partir de certaines hypothèses de 1. cet élément est tout d'abord me-
travail: suré au moyen de la commande
\settovidth;
• une flèche insérée en un sommet du
réseau joint les deux points adjacents 2. fort de cette information, le pro-
du réseau dans la direction où la gramme calcule la longueur à donner
flèche est tracée; à l'élément précédent du diagramme
au cas où il s'agirait d'une flèche, puis
• un sommet du diagramme possède
il "imprime" cet élément;
un nom pouvant s'étendre horizonta-
lement d'une longueur indéfinie, mais 3. enfin la définition du nouvel élément
ayant verticalement la hauteur nor- est mémorisée grâce à une instruction
male d'une lettre, éventuellement af- \renewcommand,en vue de son "im-
fublée d'indices ou d'exposants. pression" ultérieure.

Ces hypothèses de travail impliquent en Ces divers calculs requièrent l'usage de


particulier que la longueur d'une flèche trois compteurs contenant les dimensions
verticale ou oblique peut être déterminée de l'élément précédent, de l'élément à
à partir des seules connaissances de sa imprimer et de l'élément suivant. Ces

46
De la construction de diagrammes

diverses valeurs "glissent" d'un compteur qui déplace le nom / de la flèche de


à l'autre lors de chaque impression d'un 4 points vers la droite et 3 points
élément. Le programme ne faisant pas la vers le haut. Des commandes analogues
différence entre les divers éléments d'un \movevertex et \movearrow permettent
diagramme, ces calculs sont effectués à de déplacer les sommets et les flèches
chaque étape, mais le résultat final n'est d'une manière compatible avec les proces-
finalement utilisé que lors de l'impression sus de calcul, mais il ne m'est jamais ar-
d'une flèche horizontale. rivé d'avoir à les utiliser. Les commandes
Ajoutons encore que 1' agrandissement \ c r o s s et \movename ont été utilisées
ou réduction d'un diagramme via l'ins- dans le dessin du "cube" présenté au dia-
truction \DIAGV{n> est obtenu en modi- gramme 2.
fiant l'unité de longueur des environne- A côté de la commande \ c r o s s , une
ments picture; dans le cas de flèches mul- autre option parfois utile est la possibilité
tiples, il faut effectuer à certains endroits d'imposer au programme la longueur
le changement d'échelle inverse pour évi- d'une flèche. Cela se fait en faisant suivre
ter d'altérer l'écartement entre les flèches. la commande du suffixe v et en donnant
Des remarques analogues concernent la la longueur de la flèche comme argument.
taille des marques indiquant les inclu- Par exemple
sions et les quotients, ou encore l'écar-
tement entre une flèche et son nom. \Earv{fHl30>

trace une flèche de longueur 130 uni-


5. Quelques options tés. Pour rappel, l'unité par défaut est
le point, éventuellement multiplié par
Citons en vrac quelques options permet- un facteur d'échelle via l'instruction
tant de réaliser des effets spéciaux dans \DIAG{n}. L'usage d'une telle option est
un diagramme. Ces options ne sont en gé- impératif lorsque une flèche, fixée en un
néral que semi-automatisées et requièrent point du réseau, est appelée à joindre
une certaine interaction de l'utilisateur. deux points non adjacents dans la direc-
H arrive que l'on souhaite superposer tion où elle est tracée. Pour une flèche ho-
deux éléments distincts en un même rizontale ou verticale, la longueur à impo-
sommet du réseau: par exemple deux ser dans ce cas est donnée par la formule
flèches, ou bien un sommet et une flèche.
Cela doit se faire au moyen de la 50 + n • 40
commande \ c r o s s qui veillera à ce que
ceci ne perturbe pas les calculs de mise en où n est le nombre de points "vides" du
page. H faut donc frapper (par exemple) réseau que la flèche doit traverser. Dans le
cas d'une flèche tracée dans une direction
\n{\cross{...}{...}} secondaire de la rose des vents, la formule
Notez que cela risque d'avoir pour effet devient
que, par exemple, le nom d'une flèche 58 + n • 40
se trouve traversé par une autre flèche.
Le lecteur remarquera que cette option
Un tel défaut peut se corriger par une
a été utilisée pour introduire les flèches
instruction du genre
horizontales et verticales dans le dessin
\Ear{\movename{f>{4>{3» du "cube" présenté au diagramme 2; la

47
F. Boreetix

longueur imposée à ces flèches était donc \mono pour h—-, \Mono{f > pour t 1 » .
de 50 + 2 • 40 = 130 points. On obtient une flèche dirigée vers la
Signalons encore l'existence de flèches gauche en faisant précéder le radical
"courbes" introduites par une instruction du préfixe bk: Ybkbiar pour Ces
du genre commandes peuvent indifféremment se
\necurve{80> donner en mode texte ou en mode
mathématique.
ou encore D'autres options sont décrites dans le
mode d'emploi des diagram macros (cf.
\Wscurve{fHl60>
[2])-
dans le cas d'une courbe nommée / . La
première flèche ci dessus prend la forme
6. Mise en garde
suivante, où le point indique le "centre
formel" de la flèche. Les diagram macros nécessitent la mise
en mémoire de 28.295 mots et 736
( \ commandes. Combinant cela avec lATgX
et le style article, on atteint 53.971 mots
De telles flèches sont généralement tra- et 2816 commandes. Ceci peut amener à
cées horizontalement ou verticalement le des dépassement de capacité sur certains
long d'un diagramme. Le radical curve ordinateurs personnels. Pour se tirer
est précédé de deux lettres: d'affaire, il faut donc réduire le fichier
• la première indique la position de la diagram; par exemple supprimer toutes
flèche par rapport au diagramme; les commandes contenant un radical peu
utile à l'utilisateur: tri, quadri, quinti,
• la seconde indique la direction géné- mono, epi, bimo, ...
rale de la flèche.
La longueur de la flèche doit être don- Références bibliographiques
née comme dernier argument: ce sera (gé-
[1] Francis Borceux, Latex, la perfection dans
néralement) un multiple de 40. De telles
le traitement de texte, ARTEL, Bruxelles,
flèches sont normalement introduites via (1989)
une instruction \ c r o s s , sans qu'aucune
[2] Francis Borceux, User's guide for the Dia-
ligne ou colonne supplémentaire ne soit gram Macros, Département de mathémati-
ajoutée au diagramme. Le programme ques, Louvain-la-Neuve.
ne tient pas compte de leur présence
[3] Donald Knuth, The TjfiXbook, Addison-
dans le positionnement du diagramme sur Wesley.
la page; l'usage de l'instruction \diagv
[4] Leslie Lamport, lATjrX: user's guide and
peut donc s'avérer nécessaire pour corri-
reference manual, Addison-Wesley.
ger l'espacement autour du diagramme.
Enfin tous les types de flèches utilisés
dans les diagrammes peuvent également
être insérés dans une ligne de texte,
dans les deux directions horizontales. La
commande pour une flèche vers la droite
est simplement le radical correspondant:

48

Vous aimerez peut-être aussi