diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-09 00:56:57 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-09 00:56:57 +0000 |
commit | f07bb53970ee2ecc53f81a206a3d3a67ef665e4a (patch) | |
tree | 6f57a1d62971db79e5ff023bdfd83b22cb971dc9 /Master/texmf-dist/doc/generic/borceux | |
parent | 007f67a693e4d031fd3d792df8e4d5f43e2cb2e7 (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_Emploi | 589 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/borceux/Diagram_Read_Me | 580 |
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 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} +\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} 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}
\ 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 |