\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}
