summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/generic/borceux/Diagram_Mode_d_Emploi
blob: 4e28d199befc63b38f6ff777444e4a3af6bd1097 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
\documentstyle{article}

\textheight532pt
\textwidth355pt
\footskip15pt

\hoffset-35mm
\voffset-35mm

\language=1
\hyphenation{dia-gram-me}
\diagramlabel{Diagramme}

\title{Mode d'emploi de {\em Diagram 3}\thanks{Par rapport aux versions~1 et
~2, le dessin des flches a t amlior, la varit de directions et de
flches disponibles a t plus que double, toutes les flches pour diagrammes
admettent un argument optionnel de longueur, la frappe des diagrammes a t
simplifie, des messages d'erreur et d'aide ont t introduits. Pour compiler
avec {\em Diagram~3}, des documents prpars avec les versions~1 ou~2, lire le
fichier {\em OldDiagram} aprs le fichier {\em Diagram}.}}   
\author{Francis Borceux, Louvain-la-Neuve} 

\font\bldfc=cmmib10
\def\boldface#1{\mbox{\bldfc#1}}

\newcommand{\XA}%
{\truex{300}%
\begin{picture}(0,0)%
\put(0,0){\circle{\value{x}}}%
\end{picture}}

\newcommand{\XB}%
{\truex{500}%
\begin{picture}(0,0)%
\put(0,0){\circle*{\value{x}}}%
\end{picture}}

\newcommand{\V}[3]{\cross{\XB}{\movevertex(#1,#2){\scriptstyle#3}}}

\begin{document}

\maketitle

\section{A propos de {\em Diagram}}

Le fichier {\em Diagram} ralise la construction de diagrammes du type de ceux
apparaissant dans les textes de thorie des catgories. L'utilisateur donne la
liste des objets et des flches constituant le diagramme, comme s'il composait
une matrice, et le programme prend soin de calculer les dimensions des flches
et de raliser la mise en page. Tout ce que l'utilisateur doit faire en ce qui
concerne les flches est prciser leur type (monomorphisme, paire de flches,
\ldots) et leur direction (nord, sud-est,\ldots): 12 types de flches et 32
directions sont disponibles; voir figures~1 et~3 pour des listes exhaustives.

Un fichier {\em MultipleArrows} existe galement: il produit des flches
triples, quadruples et quintuples, parallles ou adjointes. La taille de ces
lments est telle que de svres restrictions s'appliquent  ceux-ci.

{\em Diagram} fait un usage abondant des commandes \LaTeX\ et ne peut donc
fonctionner sans \LaTeX.

Certaines implmentations de \TeX, surtout celles limites  $2^{16}$ mots de
m\-moi\-re, sont incapables de manipuler {\em Diagram}. Pour ces situations,
deux fichiers rduits de macros ont t crs; la restriction s'applique
uniquement aux types de flches disponibles.
\begin{itemize}
\item {\em MicroDiagram} ne dessine que des flches simples;
\item {\em MiniDiagram} dessine des flches simples, des paires de flches et
des flches adjointes.
\end{itemize}
La restriction est d'ailleurs plus subtile, car les flches sont produites ici
d'une manire plus conomique.

Compiler de grands diagrammes requiert beaucoup de mmoire \TeX; si vous tes
fortement limit  cet gard, esssayez de produire ces diagrammes commes
documents spars. Pour conomiser de la mmoire, vous pouvez aussi supprimer
du fichier les macros que vous n'envisagez pas d'utiliser. Ne copiez pas des
macros de {\em Diagram} vers {\em MiniDiagram} ou {\em MicroDiagram}: cela ne
fonctionnerait pas.

{\em Diagram} a t conu pour fournir des rsultats optimaux sur les
imprimantes avec une rsolution allant jusque 300dpi. Dans le cas d'imprimantes
 plus haute rsolution, il convient d'adapter en consquence le paramtre {\em
printerresolution} donn comme premire instruction du fichier {\em Diagram}.
Notez en passant que diminuer ce paramtre est une autre manire d'conomiser
de la mmoire.

\section{Les flches dans les formules}

Des flches peuvent tre introduites dans les formules, donc dans une ligne de
texte entre simples dollars ou dans une formule hors-texte, entre doubles
dollars. La commande est la mme dans les deux cas, mais l'effet produit est
diffrent. La varit de flches disponibles est donne  la figure~1.
\begin{figure}
\settextarrowlength{45}
\begin{center}
\begin{tabular}{|l|c|l|}
\hline
{\bf Nom}&{\bf Flche}&{\bf Code}\\
\hline\hline
flche simple&$\ar$&ar\\
flche pointille&$\dotar$&dotar\\
distributeur&$\dist$&dist\\
monomorphisme&$\mono$&mono\\
pimorphisme&$\epi$&epi\\
bimorphisme&$\bimo$&bimo\\
isomorphisme&$\iso$&iso\\
galit&$\eql$&eql\\ & & \\
paire de flches&$\biar$&biar\\ & & \\
flches adjointes&$\adjar$&adjar\\ & & \\
paire de distributeurs&$\bidist$&bidist\\ & & \\
distributeurs adjoints&$\adjdist$&adjdist\\
\hline
\end{tabular}
\hspace{5mm}
\begin{minipage}{30mm}
Les codes {\em iso, dist, bidist, adjdist} sont g\-n\-ri\-ques:
les mar\-ques $\cong$, $\circ$ peu\-vent tre chan\-ges a tout mo\-ment
par les ins\-truc\-tions \verb+\isomark{...}+, \verb+\distmark{...}+
o \verb+...+ sont les nou\-vel\-les mar\-ques. Les mar\-ques par d\-faut sont
\verb+\cong+ et \verb+\distcircle+.
\end{minipage}
\end{center}
\caption{Les divers types de flches.}
\settextarrowlength{20}
\end{figure}
\begin{itemize}
\item Pour produire un type donn de flche dans le sens direct (comme  la
figure~1), il suffit de frapper un {\em backslash} suivi du code pour ce type
de flche: donc
\verb+$f \colon A \mono B$+ produit $f \colon A \mono B$.
\item Pour produire un type donn de flche dans le sens oppos, frappez une
commande commenant par \verb+\bk+ et se terminant par le code pour ce type de
flche: donc
\verb+$g \colon B \bkepi C$+ produit $g \colon B \bkepi C$.
\item Pour donner un nom  l'une des flches prcdentes, il suffit de frapper
en majuscule la premire lettre de la commande et de donner le nom comme
argument: donc
\verb+$C \Dist h D$+ produit $C \Dist h D$. 
Bien entendu, dans le cas de doubles flches, il faut donner deux noms:
d'abord celui de la flche suprieure puis celui de la flche infrieure:
par exemple 
\verb+$D \Bkadjar ij E$+ produit $D \Bkadjar ij E$. Comme d'habitude, quand les
noms ne sont pas des caractres uniques, utilisez des accolades pour les
dlimiter. 
\end{itemize}
Pour vous permettre de juger la diffrence entre les flches 
dans le texte et les flches hors-texte, voici les flches prcdentes
produites hors-texte
$$ A \Mono f B \Bkepi g C \Dist h D \Bkadjar ij E $$
via les commandes
\begin{verbatim}
$$ A \Mono f B \Bkepi g C \Dist h D \Bkadjar ij E $$
\end{verbatim}

La longueur par dfaut d'une flche dans le texte est 20pt et son nom ventuel
est produit en taille {\em scriptstyle}; la longueur par dfaut d'une flche
hors-texte est 30pt et son nom ventuel est produit en taille {\em textstyle}.
Ces longueurs par dfaut peuvent tre modifies  tout moment via des
instructions
\begin{verbatim}
\settextarrowlength{25}
\setdisplayarrowlength{40}
\end{verbatim}
o 25 et 40 expriment les nouvelles longueurs en points.

\section{Construire un diagramme}

Pour construire un diagramme bi-dimensionnel, imaginez un rseau de points,
visualis par des cercles et des ``boulets'' dans la figure~2:
\begin{figure}
\begin{diagram} 
\XB\XA\XB\XA\XB\XA\XB 
\XA\cross{\XA}{\sear}\cross{\XA}{\esear}\cross{\XA}{\eesear}\XA\XA\XA
\XB\cross{\XA}{\ssear}\XB\cross{\XA}{\ear}\XB\cross{\XA}{\ear}\XB       
\XA\XA\cross{\XA}{\sar}\XA\cross{\XA}{\sar}\XA\cross{\XA}{\sar}
\XB\XA\XB\cross{\XA}{\ear}\XB\cross{\XA}{\ear}\XB 
\end{diagram} 
\caption{Conception d'un diagramme bi-dimensionnel.} 
\end{figure}
les boulets indiquent les points du rseau o l'on peut s'attendre  trouver un
objet. Chaque objet et chaque flche est attach par son centre en un point du
rseau. Il suffit maintenant d'numrer les lments, ligne par ligne et
colonne par colonne, comme pour une matrice; en particulier quand tous les
lments non vides d'une ligne ont t numrs, on peut passer directement 
la ligne suivante. Tous les lments sont traits automatiquement en mode
mathmatique. Le programme prend soin de choisir correctement la longueur de
chaque flche.

Un objet se frappe comme n'importe quelle formule mathmatique. Les rgles pour
introduire une flche sont compltement analogues  celles de la section~2: les
divers types de flches sont de nouveau ceux de la figure ~1 tandis que les
directions possibles et leur code sont donnes  la figure~3.
\begin{figure}
\begin{diagram}[60]
\XB\XA\V{0}{10}{nwnnw}\XA\V{0}{10}{nnnw}\XA\XB\XA\V{0}{10}{nnne}
\XA\V{0}{10}{nenne}\XA\XB
\XA\XA\XA\XA\XA\XA\XA\XA\XA\XA\XA\XA\XA
\V{-10}{0}{\makebox[0pt][r]{$\scriptstyle nwwnw$}}\XA\XB\XA
\V{-5}{10}{\boldface{nnw}}\XA\XB\XA\V{5}{10}{\boldface{nne}}\XA\XB\XA
\V{10}{0}{\makebox[0pt][l]{$\scriptstyle
neene$}}
\XA\XA\XA\XA\cross{\XA}{\nwnnwar}\cross{\XA}{\nnnwar}\XA\cross{\XA}{\nnnear}
\cross{\XA}{\nennear}\XA\XA\XA\XA
\V{-10}{0}{\makebox[0pt][r]{$\scriptstyle
wwnw$}}\XA\V{-10}{10}{\boldface{wnw}}\cross{\XA}{\nwwnwar}
\V{-5}{10}{\boldface{nw}}\cross{\XA}{\bold\nnwar}\V{0}{10}{\boldface{n}}
\cross{\XA}{\bold\nnear}\V{5}{10}{\boldface{ne}}\cross{\XA}{\neenear}
\V{10}{10}{\boldface{ene}}\XA\V{10}{0}{\makebox[0pt][l]{$\scriptstyle
eene$}}
\XA\XA\XA\cross{\XA}{\wwnwar}\cross{\XA}{\bold\wnwar}\cross{\XA}{\bold\nwar}
\cross{\XA}{\bold\nar}\cross{\XA}{\bold\near}\cross{\XA}{\bold\enear}
\cross{\XA}{\eenear}\XA\XA\XA
\XB\XA\XB\XA\V{-10}{0}{\boldface{w}}\cross{\XA}{\bold\war}\XB
\cross{\XA}{\bold\ear}\V{10}{0}{\boldface{e}}\XA\XB\XA\XB
\XA\XA\XA\cross{\XA}{\wwswar}\cross{\XA}{\bold\wswar}\cross{\XA}{\bold\swar}
\cross{\XA}{\bold\sar}\cross{\XA}{\bold\sear}\cross{\XA}{\bold\esear}
\cross{\XA}{\eesear}\XA\XA\XA
\V{-10}{0}{\makebox[0pt][r]{$\scriptstyle
wwsw$}}\XA\V{-10}{-10}{\boldface{wsw}}\cross{\XA}{\swwswar}
\V{-5}{-10}{\boldface{sw}}\cross{\XA}{\bold\sswar}\V{0}{-10}{\boldface{s}}
\cross{\XA}{\bold\ssear}\V{5}{-10}{\boldface{se}}\cross{\XA}{\seesear}
\V{10}{-10}{\boldface{ese}}\XA\V{10}{0}{\makebox[0pt][l]{$\scriptstyle
eese$}}
\XA\XA\XA\XA\cross{\XA}{\swsswar}\cross{\XA}{\ssswar}\XA\cross{\XA}{\sssear}
\cross{\XA}{\sessear}\XA\XA\XA\XA
\V{-10}{0}{\makebox[0pt][r]{$\scriptstyle
swwsw$}}\XA\XB\XA\V{-5}{-10}{\boldface{ssw}}\XA\XB\XA
\V{5}{-10}{\boldface{sse}}\XA\XB\XA
\V{10}{0}{\makebox[0pt][l]{$\scriptstyle seese$}}
\XA\XA\XA\XA\XA\XA\XA\XA\XA\XA\XA\XA\XA
\XB\XA\V{0}{-10}{swssw}\XA\V{0}{-10}{sssw}\XA\XB\XA\V{0}{-10}{ssse}
\XA\V{0}{-10}{sesse}\XA\XB
\end{diagram} 
\caption{Les 32 directions de flches dans un diagramme.}
\end{figure} 
Prenant une certaine libert avec la gographie et la trigonomtrie,
les 32 directions considres ont reu les noms habituels dans
la rose des vents.
\begin{itemize}
\item Pour produire un type de flche dans une direction donne, frappez un
{\em backslash} suivi du code de la direction et du code de la flche.
Par exemple
\verb+\nemono+ founit un monomorphisme orient au nord-est.
\item Pour mettre un nom au-dessus d'une flche, frappez la premire lettre de
la commande en majuscule et donnez le nom comme argument. Par exemple
\verb+\Ssedist f+ fournit un distributeur $f$ orient au sud-sud-est. Bien
entendu dans le cas de doubles flches il faut donner deux noms: d'abord celui
de la flche suprieure puis celui de la flche infrieure. Dans le cas de
flches verticales, le nom apparat  gauche de la flche. 
\item La procdure pour mettre un nom en-dessous d'une flche est analogue:
frappez cette fois la dernire lettre de la commande en majuscule et donnez le
nom comme argument. Donc \verb+\wbimO f+ produit un bimorphisme $f$ orient 
l'ouest. Dans le cas de flches verticales, le nom apparat cette fois 
droite. Pour les doubles flches, les deux procdures pour insrer les noms
sont quivalentes.
\end{itemize}
Les 12 types de flches de la figure~1 existent dans les 16 directions
principales, imprimes en gras  la figure~3; dans les 16 autres directions,
seules les flches simples existent.

Il reste  expliquer la syntaxe pour frapper un diagramme. C'est simplement
\begingroup%
\catcode`\=\active\def{{\S}}%       
\begin{verbatim}
\begin{diagram}
.........
............
............
\end{diagram}
\end{verbatim}%
\endgroup%
\noindent o \verb+...+ indiquent les lments successifs. Donc un simple \S\
est le dlimiteur entre deux lments d'une mme ligne, tandis qu'un double
\S\S\ indique la fin d'une ligne\footnote{Si l'utilisation du symbole \S\ vous
cause un problme, remplacez-le par n'importe quel symbole que vous ne risquez
gure d'utiliser dans un diagramme, par exemple ?; vous pouvez effectuer ce
changement de manire globale et automatique dans le fichier {\em Diagram}.}. Il
est impratif de frapper le double \S\S\  la fin de la dernire ligne et rien ne
peut se trouver entre ce double \S\S\ et l'instruction \verb+\end{diagram}+ (il
y a une seule exception, expose dans la section~6). N'oubliez pas un espace
blanc pour indiquer un lment vide, car deux \S\S\ conscutifs seraient
interprts comme la fin de la ligne. Plusieurs blancs sont, comme toujours,
quivalents  un seul.


Donc le diagramme~1, 
\begin{floatingdiagram}
A
 \Sedotar x\eseaR y  \Eesear z
 \sseaR u  A         \Eepi a  B         \Emono bC         
           \saR c             \Sadjar de        \seqL{1_C}  
           D         \waR g   D\oplus E \eaR h  C         
\end{floatingdiagram}
qui a exactement la forme voque par la figure ~2, est produit
par les instructions suivantes:
\begingroup%
\catcode`\=\active\def{{\S}}%      
\begin{verbatim}
\begin{diagram}
A
 \Sedotar x\eseaR y  \Eesear z
 \sseaR u  A         \Eepi a  B         \Emono bC         
           \saR c             \Sadjar de        \seqL{1_C}  
           D         \waR g   D\oplus E \eaR h  C         
\end{diagram}
\end{verbatim}%
\endgroup%

Il existe un second environnement, parfaitement analogue, pour produire des
diagrammes; il prend la forme
\begingroup%
\catcode`\=\active\def{{\S}}%       
\begin{verbatim}
\begin{floatingdiagram}
.........
............
............
\end{floatingdiagram}
\end{verbatim}%
\endgroup%
\noindent Comme son nom l'indique, le diagramme est cette fois introduit comme
corps flottant et se trouve numrot automatiquement (cf.~diagrammes~1 ~3). Le
choix par dfaut est de numroter successivement les diagrammes  travers tout
le document. Vous pouvez prfrer un numro 3.12 pour, par exemple, le douzime
diagramme du chapitre~3 (dans un style avec des chapitres!). Ceci s'obtient par
l'instruction
\begin{verbatim}
\setdiagramcounter{chapter}
\end{verbatim}
o bien entendu {\em chapter} peut tre remplac par tout autre niveau de
sectionnement: {\em part, section,\ldots} Pour des textes rdigs dans une
autre langue que l'anglais, vous pouvez traduire le mot {\em Diagram}
prcdant le numro en donnant, par exemple, l'instruction
\begin{verbatim}
\diagramlabel{Diagramme}
\end{verbatim}
n'importe o dans le texte, mais pas  l'intrieur d'un diagramme.

Chaque diagramme, flottant ou non, peut en outre recevoir une lgende.
Cela se fait via une instruction
\begin{verbatim}
\diagramcaption{...}
\end{verbatim}
qui peut se donner n'importe o dans le diagramme, mais avant les derniers
\S\S. Dans le cas d'un diagramme flottant, cette lgende complte la
numrotation automatique, comme au diagramme~4.

\section{Modifications de tailles}

Le pas du rseau formel de points sous-tendant un diagramme est de 40 units,
o l'unit par dfaut est le point. Un facteur d'chelle peut tre 
appliqu  cette valeur par dfaut, via une instruction
\begin{verbatim}
\setdefaultscale{75}
\end{verbatim}
(facteur d'chelle 75\%); cette instruction s'applique  tous les diagrammes
ul\-t\-rieurs et doit tre donne en dehors de tout environnement {\em
diagram} ou {\em floatingdiagram}. Si vous souhaitez appliquer un facteur
d'chelle  un seul diagramme, donnez ce facteur d'chelle comme argument
optionnel de l'environnement correspondant; par exemple
\begin{verbatim}
\begin{diagram}[125]
........
\end{diagram}
\end{verbatim}
pour un agrandissement de 125\%, et de manire analogue pour les diagrammes
flottants. Le facteur d'chelle donn ainsi pour un diagramme spcifique se
subsitue  la valeur par dfaut en vigueur, juste le temps du digramme
concern. Par exemple le digramme~1 est  l'chelle 100\% et le diagramme~2 
l'chelle 75\%. Observez l'effet prcis d'un tel facteur d'chelle, qui n'est
en rien une homthtie brutale.
\begin{floatingdiagram}[75]
A
 \Sedotar x\eseaR y  \Eesear z
 \sseaR u  A         \Eepi a  B         \Emono bC         
           \saR c             \Sadjar de        \seqL{1_C}  
           D         \waR g   D\oplus E \eaR h  C         
\end{floatingdiagram}

Pour motiver les notions suivantes, considrons la conception d'un diagramme
tri-dimensionnel, comme  la figure~4. Comparez tout d'abord la dispositon
des ``boulets'' par rapport  celle de la figure~2.
\begin{figure}
\begin{diagram}[50]
\XB\XA\cross{\XA}{\ear[130]}\XA\XB\XA\cross{\XA}{\ear[130]}\XA\XB\XA\XA
\XA\cross{\XA}{\sear}\XA\XA\XA\cross{\XA}{\sear}\XA\XA\XA\cross{\XA}{\sear}\XA
\cross{\XA}{\sar[130]}\XA\XB\XA\cross{\XA}{\cross{\ear[130]}{\sar[130]}}\XA 
   \XB\XA\cross{\XA}{\cross{\ear[130]}{\sar[130]}}\XA\XB 
\XA\XA\XA\XA\XA\XA\XA\XA\XA\XA\XA
\XB\XA\cross{\XA}{\cross{\ear[130]}{\sar[130]}}\XA\XB 
   \cross{\XA}{\cross{\ear[130]}{\sar[130]}}\XA\XB\XA\cross{\XA}{\sar[130]}
\XA\cross{\XA}{\sear}\XA\XA\XA\cross{\XA}{\sear}\XA\XA\XA\cross{\XA}{\sear}\XA 
\XA\XA\XB\XA\cross{\XA}{\ear[130]}\XA\XB\XA\cross{\XA}{\ear[130]}\XA\XB
\end{diagram}
\caption{Conception d'un diagramme tri-dimensionnel}
\end{figure}
Dans ce cas non seulement il faut ``croiser'' des flches en un mme point du
rseau formel, mais il faut aussi considrer des flches traversant plusieurs
points du rseau avant d'atteindre les objets qu'elles relient. En fait {\em
Diagram} suppose toujours qu'une flche relie les deux points adjacents du
rseau dans la direction de la flche. Si ce n'est pas le cas, c'est  vous de
dterminer la longueur de la flche correspondante.

Pour imposer une longueur spcifique  une flche d'un diagramme, donnez
l'tendue correspondante de la flche comme argument optionnel\footnote{Cet
argument doit imprativement tre un nombre entier positif; toute autre chose, y
compris la valeur d'un compteur, troublerait profondment \TeX. Les flches 
inclure dans le texte (section~2) n'admettent pas cet argument optionnel.}:
l'tendue d'une flche horizontale ou verticale est sa longueur; l'tendue des
autres flches est la longueur de leur projection horizontale (voir le manuel
\LaTeX, {\em Picture environment}, pour de plus amples dtails). Donc
\verb+\Near[60]f+ dessine une flche $f$ d'tendue 60 units, oriente au
nord-est. Voici les valeurs par dfaut des tendues des diverses flches: 50
dans les directions n, s, e, w; 59 dans les directions ne, nw, se, sw; 133 dans
les directions ene, ese, wnw, wsw; 67 dans les directions nne, sse, nnw, ssw;
211 dans les directions eene, eese, wwnw, wwsw; 71 dans les directions nnne,
ssse, nnnw, sssw; 215 dans les direction neene, seese, nwwnw, swwsw; 143 dans
les directions nenne, sesse, nwnnw, swssw. Dans la plupart des cas, vous
obtiendrez l'tendue requise en augmentant la valeur par dfaut d'autant de fois
40 que la flche traverse de points supplmentaires du rseau.

En ce qui concerne les flches ``croises'', la commande 
\begin{verbatim}
\cross{element 1}{element 2}
\end{verbatim}
vous permet d'introduire simultanment {\em element 1} et {\em element 2}
en un mme point du rseau, sans perturber la construction gnrale
du diagramme; ces deux {\em elements} peuvent tre indiffremment des
objets ou des flches.
Le diagramme~3, conu  la figure~4, peut donc s'obtenir comme
\begingroup
\catcode`\=\active\def{{\S}}       
\begin{verbatim}
\begin{floatingdiagram}[50]
A \ear[130] B \ear[130] C
\sear   \sear   \sear  
\sar[130] D \cross{\ear[130]}{\sar[130]} 
           E \cross{\ear[130]}{\sar[130]} F 
G \cross{\ear[130]}{\sar[130]} H 
   \cross{\ear[130]}{\sar[130]} I \sar[130]
\sear   \sear   \sear 
 J \ear[130] K \ear[130] L
\end{floatingdiagram}
\end{verbatim}
\endgroup
\begin{floatingdiagram}[50]
A \ear[130] B \ear[130] C
\sear   \sear   \sear  
\sar[130] D \cross{\ear[130]}{\sar[130]} 
           E \cross{\ear[130]}{\sar[130]} F 
G \cross{\ear[130]}{\sar[130]} H 
   \cross{\ear[130]}{\sar[130]} I \sar[130]
\sear   \sear   \sear 
 J \ear[130] K \ear[130] L
\end{floatingdiagram}

Enfin vous pouvez modifier l'paisseur du trait d'une flche en frappant
d'abord la commande \verb+\bold+; donc \verb+\bold\nar+ produit une flche
grasse oriente au nord. Cette option \verb+\bold+ est supprime
automatiquement par le symbole \S\ suivant; vous pouvez aussi l'annuler plus
tt (par exemple dans une commande \verb+\cross+) par l'instruction
\verb+\unbold+. Voyez la figure~3 pour des exemples de flches grasses.


\section{Les flches courbes}

{\em Diagram} fournit galement huit flches courbes pouvant tre utilises
pour relier des points distants le long d'un bord d'un diagramme;
le code pour une flche courbe est {\em curvar}. Ces flches sont prsentes 
la figure ~5,  l'chelle 50\%, 
\begin{figure}
\begin{diagram}[50]
\cdot\ear\cross{\XB}{\Necurvar{ne}}\ear\cdot    
\cdot\ear\cross{\XB}{\Nwcurvar{nw}}\ear\cdot
\sar \sar \sar    \sar \sar \sar
\cross{\XB}{\Wncurvar{wn}}\ear\cdot\ear\cross{\XB}{\Escurvar{es}}    
\cross{\XB}{\Wscurvar{ws}}\ear\cdot\ear\cross{\XB}{\Encurvar{en}}
\sar \sar \sar    \sar \sar \sar
\cdot\ear\cross{\XB}{\Swcurvar{sw}}\ear\cdot    
\cdot\ear\cross{\XB}{\Securvar{se}}\ear\cdot
\spacing(15,0,15)
\end{diagram}
\caption{Les huit flches courbes.}
\end{figure}
avec les codes de direction correspondants. La premire lettre du code de
direction indique la position de la flche par rapport au diagramme; la seconde
lettre prcise l'orientation globale de la flche. Ainsi \verb+\wscurvar+
dessine une flche courbe,  l'ouest du diagramme, oriente au sud. Comme pour
les autres flches, une premire (ou dernire) lettre majuscule permet
d'affubler la flche d'un nom.

Les flches courbes sont des exemples typiques d'lments qui sont
g\-n\-ra\-le\-ment introduits via la commande \verb+\cross+ de la section~4, en
un point du rseau partag avec un objet ou une autre flche. Dans la figure~5,
les ``boulets'' indiquent le centre formel des flches courbes, c'est--dire le
point du rseau en lequel elles sont attaches.

La longueur par dfaut des flches courbes est 160 units, fournissant la
situation de la figure~5. Comme les autres flches introduites dans un
diagramme, une longueur arbitraire peut tre impose comme premier argument
optionnel.

Les flches courbes sont galement incluses dans {\em MiniDiagram} et {\em
MicroDiagram}.


\section{Corrections d'espacements}

{\em Diagram} dtermine les dimensions d'un diagramme en comptant le nombre de
lignes et de colonnes. Quand les dimensions relles diffrent sensiblement de
celles estimes par ce procd, par exemple quand vous introduisez des flches
courbes le long d'un diagramme, une correction d'espacement peut tre
ncessaire. Elle se ralise via l'instruction \verb+\spacing(t,b,l)+ qui doit
im\-p\-ra\-ti\-ve\-ment tre donne entre les derniers \S\S\ et l'instruction
\verb+\end{diagram}+ (ou \verb+\end{floatingdiagram}+). Cette
commande\footnote{N'abbrviez pas cette commande, cela troublerait profondment
\TeX.} ajoute un espacement de $t$ points au dessus du diagramme, $l$ points 
gauche et $b$ points en dessous. $t$, $l$, $b$ sont des entiers positifs ou
ngatifs.

\begingroup%
\catcode`\=\active\def{{\S}}%       
\begin{verbatim}
\begin{diagram}[80]
\diagramcaption{What a nice diagram!}
.........
............
............
\spacing(10,-15,10)
\end{diagram}
\end{verbatim}%
\endgroup%

L'usage de la commande \verb+\cross+ peut provoquer des collisons
entre une flche et le nom d'une autre flche. Ceci et d'autres situations
inhabituelles peuvent tre corriges par les instructions suivantes,
qui ne perturbent pas la construction gnrale du diagramme.
\begin{itemize}
\item \verb+\movename(n,m){f}+ dplace le nom $f$ d'une flche $n$ points vers
la droite et  $m$ points vers le haut. 
\item \verb+\movearrow(n,m){\arrow}+ dplace la flche \verb+\arrow+ (et son
nom ventuel) $n$ points vers la droite et $m$ points vers le haut. 
\item
\verb+\movevertex(n,m){XXX}+ dplace l'objet $XXX$ $n$ points vers la droite et
$m$ points vers le haut. 
\item \verb+\movevertexleft{XXX}+ dplace un trop long objet $XXX$ situ 
gauche d'un diagramme de sorte que la flche horizontale suivante garde une
longueur maximale. 
\item \verb+\movevertexright{XXX}+ dplace un trop long objet $XXX$
situ  droite d'un diagramme de sorte que la flche horizontale
prcdente garde une longueur maximale.
\end{itemize}

Par exemple, le diagramme~4 
\begin{floatingdiagram}
(A\oplus B)\otimes(C\oplus D)  \Ear f X\oplus V 
\Sar g  \saR h
Y\oplus W  \eaR i (E\oplus F)\otimes(G\oplus H)  
\movevertexleft{(A\oplus B)\otimes(C\oplus D)}  \Ear f X\oplus V 
\Sar g  \saR h
Y\oplus W  \eaR i \movevertexright{(E\oplus F)\otimes(G\oplus H)} 
\diagramcaption{Ajustements automatiques et manuels.} 
\end{floatingdiagram}
a t obtenu en frappant
\begingroup
\catcode`\=\active\def{{\S}}       
\begin{verbatim}
\begin{floatingdiagram}
(A\oplus B)\otimes(C\oplus D)\Ear fX\oplus V
\Sar g \saR h
Y\oplus W\eaR i(E\oplus F)\otimes(G\oplus H) 
\movevertexleft{(A\oplus B)\otimes(C\oplus D)}\Ear fX\oplus V
\Sar g \saR h
Y\oplus W\eaR i\movevertexright{(E\oplus F)\otimes(G\oplus H)} 
\diagramcaption{Ajustements automatiques et manuels.}
\end{floatingdiagram}
\end{verbatim}
\endgroup
Le carr suprieur est donc produit automatiquement par {\em Diagram}
tandis que le carr infrieur a t ajust par l'utilisateur. A vous de
choisir.\vfill

\mbox{}\hfill{\footnotesize An English version of this user's guide is also
available.}


\end{document}