summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/generic/borceux
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-09 00:56:57 +0000
committerKarl Berry <karl@freefriends.org>2006-01-09 00:56:57 +0000
commitf07bb53970ee2ecc53f81a206a3d3a67ef665e4a (patch)
tree6f57a1d62971db79e5ff023bdfd83b22cb971dc9 /Master/texmf-dist/doc/generic/borceux
parent007f67a693e4d031fd3d792df8e4d5f43e2cb2e7 (diff)
doc 6
git-svn-id: svn://tug.org/texlive/trunk@85 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/generic/borceux')
-rw-r--r--Master/texmf-dist/doc/generic/borceux/Diagram_Mode_d_Emploi589
-rw-r--r--Master/texmf-dist/doc/generic/borceux/Diagram_Read_Me580
2 files changed, 1169 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/generic/borceux/Diagram_Mode_d_Emploi b/Master/texmf-dist/doc/generic/borceux/Diagram_Mode_d_Emploi
new file mode 100644
index 00000000000..437dd80e812
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/borceux/Diagram_Mode_d_Emploi
@@ -0,0 +1,589 @@
+\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}
+\date{borceux@agel.ucl.ac.be}
+
+\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} \ No newline at end of file
diff --git a/Master/texmf-dist/doc/generic/borceux/Diagram_Read_Me b/Master/texmf-dist/doc/generic/borceux/Diagram_Read_Me
new file mode 100644
index 00000000000..e811bd0fe9d
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/borceux/Diagram_Read_Me
@@ -0,0 +1,580 @@
+\documentstyle{article}
+
+\textheight520pt
+\textwidth349pt
+\footskip15pt
+
+\hoffset-35mm
+\voffset-35mm
+
+\title{User's guide for {\em Diagram 3}\thanks{With respect
+to versions 1 and 2, the shape of arrows has been improved, the variety of
+directions and arrows available has been more than doubled, all diagram arrows
+admit an optional length argument, the typing of diagrams has been shortened, error
+and help messages have been introduced. To typeset with {\em Diagram~3}, diagrams
+prepared with versions~1 or~2, read the file {\em OldDiagram} after the file {\em
+Diagram}.}}
+\author{Francis Borceux, Louvain-la-Neuve}
+\date{borceux@agel.ucl.ac.be}
+
+\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{The {\em Diagram} macros}
+
+The {\em Diagram macros} realize the construction of diagrams as
+those appearing in category theory texts. The user gives the list
+of vertices and arrows to be included, just as when composing a
+matrix, and the program takes care of computing the dimensions of
+the arrows and realizing the pagesetting. All the user has to do
+about the arrows is precising their type (monomorphism, pair of
+adjoint arrows,\ldots) and their direction (north,
+south-east,\ldots): 12 types and 32 directions are available; see
+figures~1 and~3 for exhaustive lists.
+
+A file {\em MultipleArrows} exists, producing additional
+triple, quadruple and quintuple arrows, parallel or adjoint, but
+the size of those pictures is so big that severe restrictions apply
+to them.
+
+The {\em Diagram macros} make a big use of \LaTeX\ commands and
+cannot work without \LaTeX\ being loaded.
+
+Some small implementations of \TeX, essentially those limited to
+$2^{16}$ words of memory, are unable to handle the {\em Diagram
+macros}. For those cases, two levels of restricted files have been
+created, where the restriction applies just to the number of types
+of arrows:
+\begin{itemize}
+\item {\em MicroDiagram} is only able to design plain arrows;
+\item {\em MiniDiagram} designs plain arrows, pairs of
+plain arrows and adjoint pairs of plain arrows.
+\end{itemize}
+The restriction is even more subtle, since arrows are produced
+here in a more economical way.
+
+Big diagrams require much \TeX\ memory when typesetting; if you are
+badly limited, try to produce them as separate one-page documents. To save
+memory, you can also cancel from a file those macros you are not intending to
+use. Do not copy macros from {\em Diagram} to {\em MiniDiagram} or {\em
+MicroDiagram}\/: this would not work.
+
+The {\em Diagram macros} have been designed to give optimal results
+on printers with resolutions up to 300dpi. In the case of printers
+with higher resolutions, the parameter {\em printerresolution}
+given as a first instruction of the file {\em Diagram} must be changed
+accordingly. Notice that reducing this parameter is another way of
+saving \TeX\ memory. This parameter does not exist in the files
+{\em MicroDiagram} and {\em Minidiagram}.
+
+\section{Arrows in formulas}
+
+Arrows can be introduced in formulas, thus in a line of
+text between single dollars or in a displayed formula, between
+double dollars. While the command to be given is the same, the
+effect which is produced is different in the text and in a
+displayed formula. The variety of arrows available is described in
+figure~1.
+\begin{figure}
+\settextarrowlength{45}
+\begin{center}
+\begin{tabular}{|l|c|l|}
+\hline
+{\bf Name}&{\bf Arrow}&{\bf Code}\\
+\hline\hline
+plain arrow&$\ar$&ar\\
+dotted arrow&$\dotar$&dotar\\
+distributor&$\dist$&dist\\
+monomorphism&$\mono$&mono\\
+epimorphism&$\epi$&epi\\
+bimorphism&$\bimo$&bimo\\
+isomorphism&$\iso$&iso\\
+equality&$\eql$&eql\\ & & \\
+pair of arrows&$\biar$&biar\\ & & \\
+adjoint arrows&$\adjar$&adjar\\ & & \\
+pair of distributors&$\bidist$&bidist\\ & & \\
+adjoint distributors&$\adjdist$&adjdist\\
+\hline
+\end{tabular}
+\hspace{5mm}
+\begin{minipage}{30mm}
+The codes {\em iso, dist, bidist, adjdist} are generic:
+the marks $\cong$, $\circ$ can be changed anywhere in the document via the
+instructions \verb+\isomark{...}+, \verb+\distmark{...}+,
+where \verb+...+ are the new marks. The default marks are \verb+\cong+ and
+\verb+\distcircle+.
+\end{minipage}
+\end{center}
+\caption{The various types of arrows.}
+\settextarrowlength{20}
+\end{figure}
+\begin{itemize}
+\item To produce a given type of formula arrow
+in the forward direction (as in figure~1), just type a {\em
+backslash} followed by the code for this type of arrow: thus
+\verb+$f \colon A \mono B$+ will produce $f \colon A \mono B$.
+\item To produce a given type of formula arrow in the ``backward'' direction, type a
+command starting with \verb+\bk+ and ending with the code for the type of
+arrow: thus \verb+$g \colon B \bkepi C$+ produces $g \colon B \bkepi C$.
+\item To give an upper name to one of the previous arrows, just use
+a first uppercase letter and give the name as an argument: thus
+\verb+$C \Dist h D$+ will produce $C \Dist h D$. Of course, when
+the picture consists of two arrows, two names must be given, first
+the top one and next the bottom one; for example
+\verb+$D \Bkadjar ij E$+ to produce $D \Bkadjar ij E$. As usual, when
+the names are not single tokens, use curly brackets to delimit them.
+\end{itemize}
+To let you appreciate the difference between {\em textstyle} and
+{\em displaystyle}, here are the previous arrows in {\em display
+style}
+$$ A \Mono f B \Bkepi g C \Dist h D \Bkadjar ij E $$
+introduced via the commands
+\begin{verbatim}
+$$ A \Mono f B \Bkepi g C \Dist h D \Bkadjar ij E $$
+\end{verbatim}
+
+The default length of a {\em text arrow} is 20pt while the names
+are processed in {\em scriptstyle}; the default length of a {\em display
+arrow} is 30 pt and the names are processed in {\em textstyle}. The
+default lengthes can be changed at any time in the document via
+instructions of the form
+\begin{verbatim}
+\settextarrowlength{25}
+\setdisplayarrowlength{40}
+\end{verbatim}
+where 25 and 40 express the new lengthes in points.
+
+\section{Constructing a diagram}
+
+To construct a 2-dimensional diagram, imagine a pattern of
+points, visualized by circles and bullets as in 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{Conceiving a 2-dimensional diagram.}
+\end{figure}
+the bullets indicate the points of this pattern where vertices
+could be expected. Each vertex and each arrow is attached by its center at a
+point of the pattern. It suffices now to enumerate the items, line by line and
+column by column, like for a matrix; in particular when all actual items of a
+line have been enumerated, you can pass directly to the next line. All items are
+processed in math mode. The program will take care of choosing correctly the
+length of each arrow.
+
+A vertex is typed as any mathematical formula. The rules for typing
+an arrow are completely analogous to those of section~2:
+the various types of arrows are again those of figure~1 while
+the possible directions and their codes are given in 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{The 32 directions for {\em Diagram} arrows.}
+\end{figure}
+Taking some
+liberty with geography and trigonometry, the 32 directions considered
+by the {\em Diagram macros} are named after those of the compass card.
+\begin{itemize}
+\item To produce a type of arrow in a given direction, type a {\em
+backslash} followed by the code of the direction and the code of
+the arrow. For example \verb+\nemono+ draws a north-east
+monomorphism.
+\item To give an upper name to a diagram arrow, use a first upper case
+letter and give the name as an argument. For example
+\verb+\Ssedist f+ draws a south-sout-east distributor with upper
+name $f$. Of course, when the picture consists in two arrows,
+two names must be given: first the upper one and next the lower one.
+In the case of vertical arrows, read {\em left} instead of {\em
+upper}.
+\item The procedure for giving a lower name is analogous, but uses
+a last uppercase letter. Thus \verb+\wbimO f+ produces a west
+bimorphism with lower name $f$. In the case of vertical arrows,
+read {\em right} instead of {\em lower}. For two-arrow pictures,
+both naming procedures are equivalent.
+\end{itemize}
+All 12 types of arrows exist in all 16 principal directions printed in bold
+in figure~3; just plain arrows are provided in the 16 other
+directions.
+
+It remains to explain the syntax\footnote{This syntax uses the character \S. If
+this is a problem for you, just replace \S\ by any character you are unlikely to
+use in a digram, for example ?; you can safely make this change globally and
+automatically in the file {\em Diagram}.} for typing diagrams. This is just
+\begingroup%
+\catcode`\¤=\active\def¤{{\S}}%
+\begin{verbatim}
+\begin{diagram}
+...¤...¤...¤¤
+...¤...¤...¤...¤¤
+...¤...¤...¤...¤¤
+\end{diagram}
+\end{verbatim}%
+\endgroup%
+\noindent where \verb+...+ denote the various items of the diagram. So a
+single \S\ is the delimiter between two items of a same line, while
+a double \S\S\ indicate the end of a line. Typing the double \S\S\ at the end of the last line is
+compulsory and nothing should stand between this double \S\S\ and the
+\verb+\end{diagram}+ instruction (well, there is a single exception to this rule,
+explained in section~6). Do not forget a blank space to indicate an empty item,
+since two consecutive \S\S\ would be interpreted as an {\em end of line} symbol; of
+course several blank spaces are always equivalent to a single one.
+
+So diagram~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}
+which has the precise shape of the diagram conceived in figure~2, is produced by
+the following commands:
+\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%
+
+There is a second, completely analogous environment for producing
+diagrams; it has the form
+\begingroup%
+\catcode`\¤=\active\def¤{{\S}}%
+\begin{verbatim}
+\begin{floatingdiagram}
+...¤...¤...¤¤
+...¤...¤...¤...¤¤
+...¤...¤...¤...¤¤
+\end{floatingdiagram}
+\end{verbatim}%
+\endgroup%
+\noindent As the name indicates, the diagram is then introduced as
+a floating body and will automatically receive a numbered label
+(cf.~diagrams~1~to~3). The default is to number successively the
+diagrams through all the document. You can prefer
+a number 3.12 for, let us say, the twelfth diagram of chapter~3
+(in a style which contains chapters!). This is forced
+by the instruction
+\begin{verbatim}
+\setdiagramcounter{chapter}
+\end{verbatim}
+where, of course, {\em chapter} can be replaced by any sectioning
+level, for example {\em part, section,\ldots} For non-English texts, you
+will also want to ``translate'' the word {\em Diagram} in the label: this
+is achieved by an instruction like
+\begin{verbatim}
+\diagramlabel{Diagramme}
+\end{verbatim}
+given anywhere in the text, but not inside a diagram.
+
+Every diagram, floating or not, can be given a caption. This is done
+by the instruction
+\begin{verbatim}
+\diagramcaption{...}
+\end{verbatim}
+which can be introduced anywhere in the diagram, but before the last two
+\S\S. In the case of a floating diagram, this caption completes the automatic
+label, as in diagram~4.
+
+\section{Changing the sizes}
+
+The step of the pattern
+underlying a diagram is 40~units, where the default value of the unit is 1pt.
+This default value can be ``scaled'' at any time in the document by giving an
+instruction like
+\begin{verbatim}
+\setdefaultscale{75}
+\end{verbatim}
+(scaling factor of 75\%); this instruction applies to all subsequent diagrams
+and must be given outside a diagram environment.
+If you want to apply a scaling factor to just one specific diagram, give the
+scaling factor as an optional argument of the corresponding environment; thus
+type
+\begin{verbatim}
+\begin{diagram}[125]
+........
+\end{diagram}
+\end{verbatim}
+for an enlargement of 125\%, and correspondingly for floating diagrams. The
+scaling factor given for a specific diagram overrides the {\em defaultscale}
+value just for this specific diagram. For example, diagram~1 is not scaled and
+diagram~2 is the same diagram, scaled at 75\%. Observe the precise
+effect of the scaling option: this is by no way a brute homothetic process.
+\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}
+
+To motivate the next features, consider the conception of a
+3-dimensional diagram, as in figure~4. Compare first the subpattern of bullets
+with that of 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{Conceiving a 3-dimensional diagram}
+\end{figure}
+In this case, not only you must
+``cross'' different arrows at a same point of the pattern,
+but you must also consider arrows which cross several points
+of the pattern before reaching the objects they connect. In fact, the {\em
+Diagram macros} assume that an arrow attached at some point of the
+pattern connects the two adjacent points of the pattern, in the direction of the
+arrow. When this is not the case, it is left on you to determine the length of
+the corresponding arrow.
+
+To impose a specific length to a diagram arrow, just give the corresponding extent as
+an optional argument\footnote{This argument should be an actual positive
+integer; anything else, including the value of a counter, could put \TeX\ in
+deep trouble. The formula arrows (section~2) do not admit this optional
+argument.}:the extent of vertical and horizontal arrows is their length; the extent
+of other arrows is the length of their horizontal projection (see \LaTeX\ manual,
+{\em Picture environment}, for further explanations). Thus \verb+\Near[60]f+ draws a
+north-east arrow of horizontal extent 60 units with upper name $f$. Here are
+the basic default extents of diagram arrows: 50 in the directions n, s, e, w;
+59 in the directions ne, nw, se, sw; 133 in the directions ene, ese, wnw,
+wsw; 67 in the directions nne, sse, nnw, ssw; 211 in the directions
+eene, eese, wwnw, wwsw; 71 in the directions nnne, ssse, nnnw,
+sssw; 215 in the direction neene, seese, nwwnw, swwsw; 143 in the
+directions nenne, sesse, nwnnw, swssw. In most circumstances, you will obtain
+the required extent by augmenting the basic default extent by 40 for
+each additional point of the formal pattern crossed by the arrow.
+
+As far as ``crossing arrows'' is concerned, the command
+\begin{verbatim}
+\cross{item 1}{item 2}
+\end{verbatim}
+allows you to introduce at the same time {\em item~1} and {\em
+item~2} at the same point of the pattern; those two items can be
+indifferently vertices or arrows. Diagram~3,
+conceived in figure~4, must thus be typed as
+\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}
+
+Finally you can change the thickness of a diagram arrow by typing first the command
+\verb+\bold+; thus \verb+\bold\nar+ produces a bold north arrow. This
+\verb+\bold+ option will be cancelled by the next \S\ sign; you can cancel its
+effects earlier (for example during a \verb+\cross+ command) by the
+instruction \verb+\unbold+. See figure~3 for examples of bold arrows.
+
+\section{Curved arrows}
+
+The {\em Diagram macros} provide also eight curved arrows which can be used
+for connecting two rather distant points lying on a same edge of a diagram;
+the code for curved arrows is {\em curvar}.
+These arrows are presented in figure~5, scaled at 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{The eight curved arrows}
+\end{figure}
+together with the
+corresponding direction codes. The first
+letter of the direction code indicates the position of the arrow with respect to the
+diagram; the second letter indicates the global direction of the arrow. So
+\verb+\wscurvar+ draws a curved arrow, on the west side of the diagram, oriented
+to the south. As for the other arrows, a first (or last) upper case letter allows you
+to name the curved arrows.
+
+Curved arrows are a typical example of items which are generally introduced
+via the \verb+\cross+ command of section~4, at a formal point of the pattern
+which they share with a vertex or another arrow. In figure~5, the bullets
+indicate the formal ``center'' of the curved arrows; i.e.~the point of the
+pattern where to attach them.
+
+The default extent of curved arrows is 160 units, yielding the situation of
+figure~5. As for other diagram arrows, an arbitary extent can be imposed as a
+first optional argument (again an actual positive integer!).
+
+Curved arrows are also part of the {\em MicroDiagram} and {\em Minidiagram}
+packages.
+
+\section{Spacing adjustments}
+
+The {\em Diagram macros} determine the dimensions of a diagram by counting the
+number of rows and columns in the formal pattern. When the actual dimensions
+are rather different from those estimated in this way, for example when you
+introduce curved arrows along a diagram, a spacing correction can be needed.
+This is realized via the command \verb+\spacing(t,l,b)+
+which must imperatively be given between the \S\S\ of the last line and the
+instruction \verb+\end{diagram}+ (or \verb+\end{floatingdiagram}+). This
+command\footnote{Do not
+abbreviate that command, this would put \TeX\ in deep trouble.}
+adds $t$ points space at the top of the diagram, $l$ points space at the left and
+$b$ points space at the bottom. $t$, $l$, $b$ should be positive or negative
+integers.
+\begingroup%
+\catcode`\¤=\active\def¤{{\S}}%
+\begin{verbatim}
+\begin{diagram}[80]
+\diagramcaption{What a nice diagram!}
+...¤...¤...¤¤
+...¤...¤...¤...¤¤
+...¤...¤...¤...¤¤
+\spacing(10,-15,10)
+\end{diagram}
+\end{verbatim}%
+\endgroup%
+
+When using the \verb+\cross+ command, it can also happen that an arrow
+collides with the name of another arrow. To take care of this and other
+unusual situations, commands exist to move elements of a diagram without
+disturbing the general construction.
+\begin{itemize}
+\item \verb+\movename(n,m){f}+ moves the name $f$ of an arrow $n$ points right
+and $m$ points up.
+\item \verb+\movearrow(n,m){\arrow}+ moves the arrow \verb+\arrow+ (and its
+name when there is one) $n$ points right and $m$ points up.
+\item \verb+\movevertex(n,m){XXX}+ moves the vertex $XXX$ $n$ points right and
+$m$ points up.
+\item \verb+\movevertexleft{XXX}+ moves a too long vertex $XXX$
+positioned on the left edge of a diagram,
+so that the next horizontal arrow keeps maximal length.
+\item \verb+\movevertexright{XXX}+ moves a too long vertex $XXX$
+positioned on the right edge of a diagram,
+so that the previous horizontal arrow keeps a maximal length.
+\end{itemize}
+
+For example, diagram~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{Automatic and manual adjustments} ¤¤
+\end{floatingdiagram}
+has been obtained by just typing
+\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{Automatic and manual adjustments}¤¤
+\end{floatingdiagram}
+\end{verbatim}
+\endgroup
+The upper square is thus produced automatically by the {\em Diagram macros},
+while the lower square has been adjusted by the user. Make your choice.
+\vfill
+
+\mbox{}\hfill{\footnotesize Une version fran\c caise de ce mode d'emploi est
+\'egalement disponible.}
+
+
+\end{document} \ No newline at end of file