dwww Home | Show directory contents | Find package

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

Generated by dwww version 1.15 on Thu May 23 19:10:54 CEST 2024.