\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 flches a t amlior, la varit de directions et de
flches disponibles a t plus que double, toutes les flches pour diagrammes
admettent un argument optionnel de longueur, la frappe des diagrammes a t
simplifie, des messages d'erreur et d'aide ont t introduits. Pour compiler
avec {\em Diagram~3}, des documents prpars avec les versions~1 ou~2, lire le
fichier {\em OldDiagram} aprs 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} ralise la construction de diagrammes du type de ceux
apparaissant dans les textes de thorie des catgories. L'utilisateur donne la
liste des objets et des flches constituant le diagramme, comme s'il composait
une matrice, et le programme prend soin de calculer les dimensions des flches
et de raliser la mise en page. Tout ce que l'utilisateur doit faire en ce qui
concerne les flches est prciser leur type (monomorphisme, paire de flches,
\ldots) et leur direction (nord, sud-est,\ldots): 12 types de flches et 32
directions sont disponibles; voir figures~1 et~3 pour des listes exhaustives.

Un fichier {\em MultipleArrows} existe galement: il produit des flches
triples, quadruples et quintuples, parallles ou adjointes. La taille de ces
lments est telle que de svres restrictions s'appliquent  ceux-ci.

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

Certaines implmentations de \TeX, surtout celles limites  $2^{16}$ mots de
m\-moi\-re, sont incapables de manipuler {\em Diagram}. Pour ces situations,
deux fichiers rduits de macros ont t crs; la restriction s'applique
uniquement aux types de flches disponibles.
\begin{itemize}
\item {\em MicroDiagram} ne dessine que des flches simples;
\item {\em MiniDiagram} dessine des flches simples, des paires de flches et
des flches adjointes.
\end{itemize}
La restriction est d'ailleurs plus subtile, car les flches sont produites ici
d'une manire plus conomique.

Compiler de grands diagrammes requiert beaucoup de mmoire \TeX; si vous tes
fortement limit  cet gard, esssayez de produire ces diagrammes commes
documents spars. Pour conomiser de la mmoire, 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 conu pour fournir des rsultats optimaux sur les
imprimantes avec une rsolution allant jusque 300dpi. Dans le cas d'imprimantes
 plus haute rsolution, il convient d'adapter en consquence le paramtre {\em
printerresolution} donn comme premire instruction du fichier {\em Diagram}.
Notez en passant que diminuer ce paramtre est une autre manire d'conomiser
de la mmoire.

\section{Les flches dans les formules}

Des flches 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 mme dans les deux cas, mais l'effet produit est
diffrent. La varit de flches disponibles est donne  la figure~1.
\begin{figure}
\settextarrowlength{45}
\begin{center}
\begin{tabular}{|l|c|l|}
\hline
{\bf Nom}&{\bf Flche}&{\bf Code}\\
\hline\hline
flche simple&$\ar$&ar\\
flche pointille&$\dotar$&dotar\\
distributeur&$\dist$&dist\\
monomorphisme&$\mono$&mono\\
pimorphisme&$\epi$&epi\\
bimorphisme&$\bimo$&bimo\\
isomorphisme&$\iso$&iso\\
galit&$\eql$&eql\\ & & \\
paire de flches&$\biar$&biar\\ & & \\
flches 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\-ges 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 flches.}
\settextarrowlength{20}
\end{figure}
\begin{itemize}
\item Pour produire un type donn de flche dans le sens direct (comme  la
figure~1), il suffit de frapper un {\em backslash} suivi du code pour ce type
de flche: donc
\verb+$f \colon A \mono B$+ produit $f \colon A \mono B$.
\item Pour produire un type donn de flche dans le sens oppos, frappez une
commande commenant par \verb+\bk+ et se terminant par le code pour ce type de
flche: donc
\verb+$g \colon B \bkepi C$+ produit $g \colon B \bkepi C$.
\item Pour donner un nom  l'une des flches prcdentes, il suffit de frapper
en majuscule la premire 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 flches, il faut donner deux noms:
d'abord celui de la flche suprieure puis celui de la flche infrieure:
par exemple 
\verb+$D \Bkadjar ij E$+ produit $D \Bkadjar ij E$. Comme d'habitude, quand les
noms ne sont pas des caractres uniques, utilisez des accolades pour les
dlimiter. 
\end{itemize}
Pour vous permettre de juger la diffrence entre les flches 
dans le texte et les flches hors-texte, voici les flches prcdentes
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 dfaut d'une flche dans le texte est 20pt et son nom ventuel
est produit en taille {\em scriptstyle}; la longueur par dfaut d'une flche
hors-texte est 30pt et son nom ventuel est produit en taille {\em textstyle}.
Ces longueurs par dfaut peuvent tre modifies  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 rseau 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 rseau o l'on peut s'attendre  trouver un
objet. Chaque objet et chaque flche est attach par son centre en un point du
rseau. Il suffit maintenant d'numrer les lments, ligne par ligne et
colonne par colonne, comme pour une matrice; en particulier quand tous les
lments non vides d'une ligne ont t numrs, on peut passer directement 
la ligne suivante. Tous les lments sont traits automatiquement en mode
mathmatique. Le programme prend soin de choisir correctement la longueur de
chaque flche.

Un objet se frappe comme n'importe quelle formule mathmatique. Les rgles pour
introduire une flche sont compltement analogues  celles de la section~2: les
divers types de flches sont de nouveau ceux de la figure ~1 tandis que les
directions possibles et leur code sont donnes  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 flches dans un diagramme.}
\end{figure} 
Prenant une certaine libert avec la gographie et la trigonomtrie,
les 32 directions considres ont reu les noms habituels dans
la rose des vents.
\begin{itemize}
\item Pour produire un type de flche dans une direction donne, frappez un
{\em backslash} suivi du code de la direction et du code de la flche.
Par exemple
\verb+\nemono+ founit un monomorphisme orient au nord-est.
\item Pour mettre un nom au-dessus d'une flche, frappez la premire 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 flches il faut donner deux noms: d'abord celui
de la flche suprieure puis celui de la flche infrieure. Dans le cas de
flches verticales, le nom apparat  gauche de la flche. 
\item La procdure pour mettre un nom en-dessous d'une flche est analogue:
frappez cette fois la dernire 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 flches verticales, le nom apparat cette fois 
droite. Pour les doubles flches, les deux procdures pour insrer les noms
sont quivalentes.
\end{itemize}
Les 12 types de flches de la figure~1 existent dans les 16 directions
principales, imprimes en gras  la figure~3; dans les 16 autres directions,
seules les flches 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 lments successifs. Donc un simple \S\
est le dlimiteur entre deux lments d'une mme ligne, tandis qu'un double
\S\S\ indique la fin d'une ligne\footnote{Si l'utilisation du symbole \S\ vous
cause un problme, remplacez-le par n'importe quel symbole que vous ne risquez
gure d'utiliser dans un diagramme, par exemple ?; vous pouvez effectuer ce
changement de manire globale et automatique dans le fichier {\em Diagram}.}. Il
est impratif de frapper le double \S\S\  la fin de la dernire ligne et rien ne
peut se trouver entre ce double \S\S\ et l'instruction \verb+\end{diagram}+ (il
y a une seule exception, expose dans la section~6). N'oubliez pas un espace
blanc pour indiquer un lment vide, car deux \S\S\ conscutifs seraient
interprts 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 b¤C         ¤¤
 ¤          ¤\saR c    ¤         ¤\Sadjar de¤        ¤\seqL{1_C}¤¤  
 ¤          ¤D         ¤\waR g   ¤D\oplus E ¤\eaR h  ¤C         ¤¤
\end{floatingdiagram}
qui a exactement la forme voque 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 b¤C         ¤¤
 ¤          ¤\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 numrot automatiquement (cf.~diagrammes~1 ~3). Le
choix par dfaut est de numroter successivement les diagrammes  travers tout
le document. Vous pouvez prfrer un numro 3.12 pour, par exemple, le douzime
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 rdigs dans une
autre langue que l'anglais, vous pouvez traduire le mot {\em Diagram}
prcdant le numro en donnant, par exemple, l'instruction
\begin{verbatim}
\diagramlabel{Diagramme}
\end{verbatim}
n'importe o dans le texte, mais pas  l'intrieur d'un diagramme.

Chaque diagramme, flottant ou non, peut en outre recevoir une lgende.
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 lgende complte la
numrotation automatique, comme au diagramme~4.

\section{Modifications de tailles}

Le pas du rseau formel de points sous-tendant un diagramme est de 40 units,
o l'unit par dfaut est le point. Un facteur d'chelle peut tre 
appliqu  cette valeur par dfaut, 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 donne 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 manire analogue pour les diagrammes
flottants. Le facteur d'chelle donn ainsi pour un diagramme spcifique se
subsitue  la valeur par dfaut 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 prcis d'un tel facteur d'chelle, qui n'est
en rien une homthtie brutale.
\begin{floatingdiagram}[75]
A¤¤
 ¤\Sedotar x¤\eseaR y  ¤\Eesear z¤¤
 ¤\sseaR u  ¤A         ¤\Eepi a  ¤B         ¤\Emono b¤C         ¤¤
 ¤          ¤\saR c    ¤         ¤\Sadjar de¤        ¤\seqL{1_C}¤¤  
 ¤          ¤D         ¤\waR g   ¤D\oplus E ¤\eaR h  ¤C         ¤¤
\end{floatingdiagram}

Pour motiver les notions suivantes, considrons 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 flches en un mme point du
rseau formel, mais il faut aussi considrer des flches traversant plusieurs
points du rseau avant d'atteindre les objets qu'elles relient. En fait {\em
Diagram} suppose toujours qu'une flche relie les deux points adjacents du
rseau dans la direction de la flche. Si ce n'est pas le cas, c'est  vous de
dterminer la longueur de la flche correspondante.

Pour imposer une longueur spcifique  une flche d'un diagramme, donnez
l'tendue correspondante de la flche comme argument optionnel\footnote{Cet
argument doit imprativement tre un nombre entier positif; toute autre chose, y
compris la valeur d'un compteur, troublerait profondment \TeX. Les flches 
inclure dans le texte (section~2) n'admettent pas cet argument optionnel.}:
l'tendue d'une flche horizontale ou verticale est sa longueur; l'tendue des
autres flches est la longueur de leur projection horizontale (voir le manuel
\LaTeX, {\em Picture environment}, pour de plus amples dtails). Donc
\verb+\Near[60]f+ dessine une flche $f$ d'tendue 60 units, oriente au
nord-est. Voici les valeurs par dfaut des tendues des diverses flches: 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 dfaut d'autant de fois
40 que la flche traverse de points supplmentaires du rseau.

En ce qui concerne les flches ``croises'', la commande 
\begin{verbatim}
\cross{element 1}{element 2}
\end{verbatim}
vous permet d'introduire simultanment {\em element 1} et {\em element 2}
en un mme point du rseau, sans perturber la construction gnrale
du diagramme; ces deux {\em elements} peuvent tre indiffremment des
objets ou des flches.
Le diagramme~3, conu  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 flche en frappant
d'abord la commande \verb+\bold+; donc \verb+\bold\nar+ produit une flche
grasse oriente au nord. Cette option \verb+\bold+ est supprime
automatiquement par le symbole \S\ suivant; vous pouvez aussi l'annuler plus
tt (par exemple dans une commande \verb+\cross+) par l'instruction
\verb+\unbold+. Voyez la figure~3 pour des exemples de flches grasses.


\section{Les flches courbes}

{\em Diagram} fournit galement huit flches courbes pouvant tre utilises
pour relier des points distants le long d'un bord d'un diagramme;
le code pour une flche courbe est {\em curvar}. Ces flches sont prsentes 
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 flches courbes.}
\end{figure}
avec les codes de direction correspondants. La premire lettre du code de
direction indique la position de la flche par rapport au diagramme; la seconde
lettre prcise l'orientation globale de la flche. Ainsi \verb+\wscurvar+
dessine une flche courbe,  l'ouest du diagramme, oriente au sud. Comme pour
les autres flches, une premire (ou dernire) lettre majuscule permet
d'affubler la flche d'un nom.

Les flches courbes sont des exemples typiques d'lments qui sont
g\-n\-ra\-le\-ment introduits via la commande \verb+\cross+ de la section~4, en
un point du rseau partag avec un objet ou une autre flche. Dans la figure~5,
les ``boulets'' indiquent le centre formel des flches courbes, c'est--dire le
point du rseau en lequel elles sont attaches.

La longueur par dfaut des flches courbes est 160 units, fournissant la
situation de la figure~5. Comme les autres flches introduites dans un
diagramme, une longueur arbitraire peut tre impose comme premier argument
optionnel.

Les flches courbes sont galement incluses dans {\em MiniDiagram} et {\em
MicroDiagram}.


\section{Corrections d'espacements}

{\em Diagram} dtermine les dimensions d'un diagramme en comptant le nombre de
lignes et de colonnes. Quand les dimensions relles diffrent sensiblement de
celles estimes par ce procd, par exemple quand vous introduisez des flches
courbes le long d'un diagramme, une correction d'espacement peut tre
ncessaire. Elle se ralise via l'instruction \verb+\spacing(t,b,l)+ qui doit
im\-p\-ra\-ti\-ve\-ment tre donne entre les derniers \S\S\ et l'instruction
\verb+\end{diagram}+ (ou \verb+\end{floatingdiagram}+). Cette
commande\footnote{N'abbrviez pas cette commande, cela troublerait profondment
\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
ngatifs.

\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 flche et le nom d'une autre flche. Ceci et d'autres situations
inhabituelles peuvent tre corriges par les instructions suivantes,
qui ne perturbent pas la construction gnrale du diagramme.
\begin{itemize}
\item \verb+\movename(n,m){f}+ dplace le nom $f$ d'une flche $n$ points vers
la droite et  $m$ points vers le haut. 
\item \verb+\movearrow(n,m){\arrow}+ dplace la flche \verb+\arrow+ (et son
nom ventuel) $n$ points vers la droite et $m$ points vers le haut. 
\item
\verb+\movevertex(n,m){XXX}+ dplace l'objet $XXX$ $n$ points vers la droite et
$m$ points vers le haut. 
\item \verb+\movevertexleft{XXX}+ dplace un trop long objet $XXX$ situ 
gauche d'un diagramme de sorte que la flche horizontale suivante garde une
longueur maximale. 
\item \verb+\movevertexright{XXX}+ dplace un trop long objet $XXX$
situ  droite d'un diagramme de sorte que la flche horizontale
prcdente 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 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}
\end{verbatim}
\endgroup
Le carr suprieur est donc produit automatiquement par {\em Diagram}
tandis que le carr infrieur 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}
