\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 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 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 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 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 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, 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 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 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}
Generated by dwww version 1.15 on Thu May 23 19:10:54 CEST 2024.