% $Id: manDCPiC.tex 12 2013-04-21 15:22:57Z pedro $ \documentclass[11pt]{article} \usepackage{dcpic,pictex} \usepackage{verbatim} \usepackage{url} \usepackage{svn-multi} \usepackage{listings} \usepackage{a4wide} \svnidlong {$HeadURL: svn+ssh://gentzen.mat.uc.pt/var/lib/svn/DCPiC/CTAN5.0/manDCPiC.tex $} {$LastChangedDate: 2013-05-01 19:49:49 +0100 (Qua, 01 Mai 2013) $} {$LastChangedRevision: 15 $} {$LastChangedBy: pedro $} \svnid{$Id: manDCPiC.tex 12 2013-04-21 15:22:57Z pedro $} \newcommand{\docversion}{\svnyear/\svnmonth/\svnday\ (v\svnrev)} \def\dcpicversion{v5.0.0} \lstset{language=TeX, frame = single, morekeywords={begindc,enddc,cmor,pup,commdiag,undigraph,digraph,cdigraph,cundigraph,obj,mor,pleft,pup,pdown,pright,north,northeast,east,southeast,south,southwest,west,northwest,atright,atleft,solidarrow,dashArrow,dotArrow,solidline,dashline,dotline,injectionarrow,aplicationarrow,surjectivearrow,equalline,doublearrow,doubleopposite,nullarrow}, basicstyle=\scriptsize} \begin{document} \title{DCpic \dcpicversion\\ \docversion} \author{Pedro Quaresma\\ CISUC/Mathematics Department, University of Coimbra\\ 3001-454 COIMBRA, PORTUGAL\\ {\tt pedro@mat.uc.pt}\quad phone: +351-239~791~170\quad fax: +351-239~832~568} \date{2013/05/01} % Esta defini\c c\~ao \'e \'util para a convers\~ao LaTeX2HTML %\def\PiCTeX{PiC\TeX} \maketitle \vfill \begin{quotation} This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3 of this license or (at your option) any later version. The latest version of this license is in http://www.latex-project.org/lppl.txt and version 1.3 or later is part of all distributions of LaTeX version 2005/12/01 or later. This work has the LPPL maintenance status `maintained'. The Current Maintainer of this work is Pedro Quaresma (pedro@mat.uc.pt). This work consists of the files dcpic.sty, examples.tex, manDCPiC.tex, manDCPiCpt.tex \end{quotation} \vspace*{2cm} \noindent Coimbra, 2013/05/01\\ Pedro Quaresma \pagebreak \section{History} \begin{description} \item[11/1990 - Version 1.0] \item[10/1991 - Version 1.1] \item[9/1993 - Version 1.2:] the distance from the arrow end points and the objects became a fixed number (10units), the distance arguments became optional. A new option for the arrows was introduced. \item[3/1995 - Version 1.3:] the distance from the arrow to its label became fixed in 10units. A new option for the arrows was introduced. \item[7/1996 - Version 2.1:] a new syntax for the ``{\tt mor}'' command was introduced. \item[5/2001 - Version 3.0:] implementation of the command {\tt cmor} for curved arrows. \item[11/2001 - Version{\~a}o 3.1:] the arrow's tips became more \TeX-like. \item[1/2002 - Version 3.2:] introduction of the ``Logical specification of diagrams'', the commands ``{\tt obj}'' and ``{\tt mor}'' were modified accordingly. \item[5/2002 - Version 4.0:] {\bf new syntax, non-compatible with past versions}. The commands {\tt begindc}, {\tt obj}, and {\tt mor} were modified. \item[3/2003 - Version 4.1:] new kind of arrows, ``surjective arrows'', was added. The drawing of the double tip only works well in the vertical, or horizontal case. \item[12/2004 - Version 4.1.1:] new version for the drawing of surjective arrows, it solves the previous problem with it. \item[3/2007 - version 4.2:] adds the ``providespackage'' directive that was missing. Adds dashed lines, and dotted lines. \item[5/2008 - version 4.2.1:] deleting some counters, trying to avoid the problem ``running out of counters'', that occurs because of the use of PiCTeX and DCpic (only two...) \item[8/2008 - version 4.3:] thanks to Ruben Debeerst (\url{debeerst@mathematik.uni-kassel.de}), he added a new arrow ``equalline''. After that I decided to add: the doublearrow; the doublearrow with opposite directions; the null arrow. This last can be used as a simple form of adding new labels. \item[12/2008 - version 4.3.1:] the comand ``id'' is internalised (``!id''), it should be that way from the begining because it is not to be used from the outside. The comand ``dasharrow'' was changed to ``dashArrow'' to avoid a clash with the AMS command with the same name. \item[12/2009 - version 4.3.2:] there was a conflict between dcpic.sty and hyperref in current texlive-2009 due to the one letter macro ``$\backslash$d'' (thanks to Thorsten S \url{}). The ``d'' changed to ``deuc'' (Euclidian Distance). The ``x'' and ``y'' changed to ``xO'' ``yO'' \item[4/2013 - version 4.4.0:] thanks to Xingliang Liang \url{}. He added a new arrow ``dotarrow''. \item[5/2013 - version 5.0:] {\bf new unit for the coordinate system}, 1/10th of the previous one. This allow a better implementation of the double line arrows and also a more fine specification of the diagrams/graphs (Thanks to Antonio de Nicola \url{}). \end{description} \section{Introduction} DCpic is a package of \TeX~\cite{Knuth86} macros for graph modelling in a (La)\TeX~\cite{Lamport94} or Con\TeX t~\cite{Otten99} document. Its distinguishing features are: the use of \PiCTeX~\cite{Wichura92} a powerful graphical engine, and a simple specification syntax. A graph is described in terms of its objects and its edges. The objects are textual elements and the edges can have various straight or curved forms. A graph~\cite{Harary72} in DCpic is a ``picture'' in \PiCTeX, in which we place our {\em objects} and {\em morphisms} (edges). The user's commands in DCpic are: {\tt begindc} and {\tt enddc} which establish the coordinate system where the objects will by placed; {\tt obj}, the command which defines the place and the contents of each object; {\tt mor}, and {\tt cmor}, the commands which define the morphisms, linear and curved edges, and its labels. Until version 3.2 DCpic ``Commutative Diagrams in \PiCTeX'' was dedicated to commutative diagrams~\cite{Pierce98} (``{\bf D}iagramas {\bf C}omutativos'' in Portuguese) drawing, that is the reason for the name ``obj'' (objects) and ``mor'' (morphism) for the nodes and edges. %\pagebreak[3] Example: \begin{lstlisting} \begindc{\commdiag} \obj(10,10){$A$} \obj(30,10){$B$} \obj(30,30){$C$} \mor{$A$}{$B$}{$f$}[\atright,\solidarrow] \mor{$B$}{$C$}{$g$}[\atright,\solidarrow] \mor{$A$}{$C$}{$h$} \enddc \end{lstlisting} $$ \begindc{\commdiag} \obj(10,10){$A$} \obj(30,10){$B$} \obj(30,30){$C$} \mor{$A$}{$B$}{$f$}[\atright,\solidarrow] \mor{$B$}{$C$}{$g$}[\atright,\solidarrow] \mor{$A$}{$C$}{$h$} \enddc $$ {\bf Note:} all the numeric values should be integer values. \section{Description} \subsection{Available Commands} \begin{description} \item[The environment:] {\ } \begin{verbatim} \begindc{#1}[#2] #1 - Graph type 0 = "commdiag", commutative diagram 1 = "digraph", direct graph 2 = "undigraph", undirect graph 3 = "cdigraph", direct graph with incircled objects 4 = "cundigraph", undirect graph with incircled objects (optional) #2 - magnification factor (default value, 300) \enddc \end{verbatim} \item[Objects:] {\ } \begin{verbatim} \obj(#1,#2)[#3]{#4}[#5] #1 and #2 - coordinates (optional) #3 - Label, to be used in the morphims command, if not present the #4 will be used for that purpose #4 - Object contents (optional) #5 - placement of the object (default value \north) 0="\pcent", center 1="\north", north 2="\northeast", northeast 3="\east", east 4="\southeast", southeast 5="\south", south 6="\southwest", southwest 7="\west", west 8="\northwest", northwest \end{verbatim} {\bf Note:} if you omit the \#3 argument (label), and the \#4 argument is a complex (and long) \LaTeX\ command, then this command can crash. In this case you must specify a label (the empty label [], if you do not intend to use the label). \item[Morphism (linear edges).] This commando has two major variants: \begin{enumerate} \item Starting and Ending objects specification \begin{verbatim} \mor{#1}{#2}[#5,#6]{#7}[#8,#9] \end{verbatim} As you can see this first form is (intentionally) badly formed, the arguments \#3 and \#4 are missing (the actual command is correctly formed). \#1 - The starting object reference \#2 - The ending object reference from this two we will obtain the objects coordinates, and also the dimensions of the enclosing box. The objects box dimensions are used to do an automatic adjustment of the edge width. from \#1 we obtain $(x,y)$, (\#1,\#2) in the second form from \#2 we obtain $(x^\prime,y^\prime)$, (\#3,\#4) in the second form this values will be passed to the command second form \item Two points coordinates specification \begin{verbatim} \mor(#1,#2)(#3,#4)[#5,#6]{#7}[#8,#9] \end{verbatim} \end{enumerate} Now we can describe all the arguments \begin{verbatim} #1 and #2 - coordinates (beginning) #3 and #4 - coordinates (ending) (optional)#5,#6 - correction factors (defaul values, 10 and 10) #5 - actual beginning of the edge #6 - actual ending of the edge #7 - text (morphism label) (optional)#8,#9 #8 - label placement 1 = \atright, at right, default value -1 = \atleft, at left #9 - edge type 0 = "\solidarrow", default value 1 = "\dashArrow" 2 = "\dotArrow 3 = "\solidline" 4 = "\dashline" 5 = "\dotline" 6 = "\injectionarrow" 7 = "\aplicationarrow" 8 = "\surjectivearrow" 9 = "\equalline" 10 = "\doublearrow" 11 = "\doubleopposite" 12 = "\nullarrow" (to allow adding labels to existing arrows) \end{verbatim} {\bf Note:} insert a space after the command. \item[Curved Morphisms (quadratic edges):] {\ }\\ \begin{verbatim} \cmor(#1) #2(#3,#4){#5}[#6] #1 - list of points (odd number) #2 - tip direction 0 = "\pup", pointing up 1 = "\pdown", pointing down 2 = "\pright", pointing right 3 = "\pleft", pointing left #3 and #4 - coordenates of the label #5 - morphism label (optional) #6 - edge type 0 ="\solidarrow", default value 1 = "\dashArrow" 2 = "\solidline" \end{verbatim} {\bf Notes:} Insert a space after the command. The space after the list of points is mandatory. \end{description} \section{Examples} \subsection{Different Types of Lines/Arrows} \begin{lstlisting} \begindc{\commdiag}[250] \obj(10,10)[A]{$OOOOOO$} \obj(15,10)[A0]{$A_0$} \obj(14,11)[A1]{$A_1$} \obj(13,12)[A2]{$A_2$} \obj(12,13)[A3]{$A_3$} \obj(10,14)[A4]{$A_4$} \obj(9,13)[A5]{$A_5$} \obj(8,12)[A6]{$A_6$} \obj(7,11)[A7]{$A_7$} \obj(6,10)[A8]{$A_8$} \obj(7,9)[A9]{$A_9$} \obj(9,8)[A10]{$A_{10}$} \obj(12,8)[A11]{$A_{11}$} \mor{A}{A0}{$a_0$}[\atright,\solidarrow] \mor{A}{A1}{$a_1$}[\atright,\dashArrow] \mor{A}{A2}{$a_2$}[\atright,\dotArrow] \mor{A}{A3}{$a_3$}[\atright,\solidline] \mor{A}{A4}{$a_4$}[\atright,\dashline] \mor{A}{A5}{$a_5$}[\atleft,\dotline] \mor{A}{A6}{$a_6$}[\atleft,\injectionarrow] \mor{A}{A7}{$a_7$}[\atleft,\aplicationarrow] \mor{A}{A8}{$a_8$}[\atleft,\surjectivearrow] \mor{A}{A9}{$a_9$}[\atleft,\equalline] \mor{A}{A10}{$a_{10}$}[\atleft,\doublearrow] \mor{A}{A11}{$a_{11}$}[\atleft,\doubleopposite] \mor{A}{A11}{$a_{12}$}[\atright,\nullarrow] \enddc \end{lstlisting} $$ \begindc{\commdiag}[250] \obj(10,10)[A]{$OOOOOO$} \obj(15,10)[A0]{$A_0$} \obj(14,11)[A1]{$A_1$} \obj(13,12)[A2]{$A_2$} \obj(12,13)[A3]{$A_3$} \obj(10,14)[A4]{$A_4$} \obj(9,13)[A5]{$A_5$} \obj(8,12)[A6]{$A_6$} \obj(7,11)[A7]{$A_7$} \obj(6,10)[A8]{$A_8$} \obj(7,9)[A9]{$A_9$} \obj(9,8)[A10]{$A_{10}$} \obj(12,8)[A11]{$A_{11}$} \mor{A}{A0}{$a_0$}[\atright,\solidarrow] \mor{A}{A1}{$a_1$}[\atright,\dashArrow] \mor{A}{A2}{$a_2$}[\atright,\dotArrow] \mor{A}{A3}{$a_3$}[\atright,\solidline] \mor{A}{A4}{$a_4$}[\atright,\dashline] \mor{A}{A5}{$a_5$}[\atleft,\dotline] \mor{A}{A6}{$a_6$}[\atleft,\injectionarrow] \mor{A}{A7}{$a_7$}[\atleft,\aplicationarrow] \mor{A}{A8}{$a_8$}[\atleft,\surjectivearrow] \mor{A}{A9}{$a_9$}[\atleft,\equalline] \mor{A}{A10}{$a_{10}$}[\atleft,\doublearrow] \mor{A}{A11}{$a_{11}$}[\atleft,\doubleopposite] \mor{A}{A11}{$a_{12}$}[\atright,\nullarrow] \enddc $$ \subsection{Diagrams with Curved Edges, Double Arrows, \ldots } \paragraph{Curved edges} {\ } \begin{lstlisting} \begindc{0} \obj(14,11){$A$} \obj(39,11){$B$} \mor(14,12)(39,12){$f$} \mor(39,10)(14,10){$g$} \cmor((10,10)(6,11)(5,15)(6,19)(10,20)(14,19)(15,15)) \pdown(2,20){$id_A$} \cmor((40,7)(41,3)(45,2)(49,3)(50,7)(49,11)(45,12)) \pleft(54,3){$id_B$} \enddc \begindc{\commdiag} \obj(10,15)[A]{$A$} \obj(40,15)[Aa]{$A$} \obj(25,15)[B]{$B$} \mor{A}{B}{$f$} \mor{B}{Aa}{$g$} \cmor((10,11)(11,7)(15,6)(25,6)(35,6)(39,7)(40,11)) \pup(25,3){$id_A$} \enddc \end{lstlisting} $$ \begindc{0} \obj(14,11){$A$} \obj(39,11){$B$} \mor(14,12)(39,12){$f$}%[\atright,\solidarrow] \mor(39,10)(14,10){$g$}%[\atright,\solidarrow] \cmor((10,10)(6,11)(5,15)(6,19)(10,20)(14,19)(15,15)) \pdown(2,20){$id_A$} \cmor((40,7)(41,3)(45,2)(49,3)(50,7)(49,11)(45,12)) \pleft(54,3){$id_B$} \enddc \qquad \begindc{\commdiag} \obj(10,15)[A]{$A$} \obj(40,15)[Aa]{$A$} \obj(25,15)[B]{$B$} \mor{A}{B}{$f$}%[\atright,\solidarrow] \mor{B}{Aa}{$g$}%[\atright,\solidarrow] \cmor((10,11)(11,7)(15,6)(25,6)(35,6)(39,7)(40,11)) \pup(25,3){$id_A$} \enddc $$ \paragraph{Double Arrows and Natural Transformations} {\ } \begin{lstlisting} \begindc{\commdiag} \obj(5,5){$A$} \obj(20,5){$B$} \mor(5,4)(20,4){$f$}[\atright,\solidarrow] \mor(5,6)(20,6){$g$} \enddc \begindc{\commdiag} \obj(5,5){$A$} \obj(9,5){$B$} \mor(5,6)(9,6){$\downarrow\sigma$}[\atright,\solidarrow] \mor{$A$}{$B$}{} \mor(5,4)(9,4){$\downarrow\tau$} \enddc \end{lstlisting} $$ \begindc{\commdiag} \obj(5,5){$A$} \obj(20,5){$B$} \mor(5,4)(20,4){$f$}[\atright,\solidarrow] \mor(5,6)(20,6){$g$} \enddc \qquad\qquad\qquad \begindc{\commdiag}[140] \obj(5,5){$A$} \obj(9,5){$B$} \mor(5,6)(9,6){$\downarrow\sigma$}[\atright,\solidarrow] \mor{$A$}{$B$}{} \mor(5,4)(9,4){$\downarrow\tau$} \enddc $$ \subsection{A Complex Diagram} The following diagram is one of the test-diagrams used by Feruglio~\cite{Feruglio94}, as we can see DCpic performs very well, drawing the complete diagram based on a very simple specification. \begin{lstlisting} \newcommand{\barraA}{\vrule height2em width0em depth0em} \newcommand{\barraB}{\vrule height1.6em width0em depth0em} \begindc{\commdiag}[350] \obj(1,1)[Gr]{$G$} \obj(3,1)[Grstar]{$G_{r^*}$} \obj(5,1)[H]{$H$} \obj(2,2)[SigmaG]{$\Sigma^G$} \obj(6,2)[SigmaH]{$\Sigma^H$} \obj(1,3)[Lm]{$L_m$} \obj(3,3)[Krm]{$K_{r,m}$} \obj(5,3)[Rmstar]{$R_{m^*}$} \obj(1,5)[L]{$L$} \obj(3,5)[Lr]{$L_r$} \obj(5,5)[R]{$R$} \obj(2,6)[SigmaL]{$\Sigma^L$} \obj(6,6)[SigmaR]{$\Sigma^R$} \mor{Gr}{SigmaG}{$\lambda^G$} \mor{Grstar}{Gr}{$i_5$}[\atleft,\aplicationarrow] \mor{Grstar}{H}{$r^*$}[\atright,\solidarrow] \mor{H}{SigmaH}{$\lambda^H$}[\atright,\dashArrow] \mor{SigmaG}{SigmaH}{$\varphi^{r^*}$}[\atleft,\solidarrow] \mor{Lm}{Gr}{$m$}[\atright,\solidarrow] \mor{Lm}{L}{$i_2$}[\atleft,\aplicationarrow] \mor{Krm}{Lm}{$i_3\quad$}[\atright,\aplicationarrow] \mor{Krm}{Rmstar}{$r$} \mor{Krm}{Lr}{$i_4$}[\atright,\aplicationarrow] \mor{Krm}{Grstar}{\barraA$m$} \mor{Rmstar}{R}{$i_6$}[\atright,\aplicationarrow] \mor{Rmstar}{H}{\barraB$m^*$} \mor{L}{SigmaL}{$\lambda^L$} \mor{Lr}{L}{$i_1\quad$}[\atright,\aplicationarrow] \mor{Lr}{R}{$r$} \mor{R}{SigmaR}{$\lambda^R$}[\atright,\solidarrow] \mor{SigmaL}{SigmaG}{$\varphi^m$}[\atright,\solidarrow] \mor{SigmaL}{SigmaR}{$\varphi^r$} \mor{SigmaR}{SigmaH}{$\varphi^{m^*}$} \enddc \end{lstlisting} \newcommand{\barraA}{\vrule height2em width0em depth0em} \newcommand{\barraB}{\vrule height1.6em width0em depth0em} $$\begindc{\commdiag}[350] \obj(1,1)[Gr]{$G$} \obj(3,1)[Grstar]{$G_{r^*}$} \obj(5,1)[H]{$H$} \obj(2,2)[SigmaG]{$\Sigma^G$} \obj(6,2)[SigmaH]{$\Sigma^H$} \obj(1,3)[Lm]{$L_m$} \obj(3,3)[Krm]{$K_{r,m}$} \obj(5,3)[Rmstar]{$R_{m^*}$} \obj(1,5)[L]{$L$} \obj(3,5)[Lr]{$L_r$} \obj(5,5)[R]{$R$} \obj(2,6)[SigmaL]{$\Sigma^L$} \obj(6,6)[SigmaR]{$\Sigma^R$} \mor{Gr}{SigmaG}{$\lambda^G$} \mor{Grstar}{Gr}{$i_5$}[\atleft,\aplicationarrow] \mor{Grstar}{H}{$r^*$}[\atright,\solidarrow] \mor{H}{SigmaH}{$\lambda^H$}[\atright,\dashArrow] \mor{SigmaG}{SigmaH}{$\varphi^{r^*}$}[\atleft,\solidarrow] \mor{Lm}{Gr}{$m$}[\atright,\solidarrow] \mor{Lm}{L}{$i_2$}[\atleft,\aplicationarrow] \mor{Krm}{Lm}{$i_3\quad$}[\atright,\aplicationarrow] \mor{Krm}{Rmstar}{$r$} \mor{Krm}{Lr}{$i_4$}[\atright,\aplicationarrow] \mor{Krm}{Grstar}{\barraA$m$} \mor{Rmstar}{R}{$i_6$}[\atright,\aplicationarrow] \mor{Rmstar}{H}{\barraB$m^*$} \mor{L}{SigmaL}{$\lambda^L$} \mor{Lr}{L}{$i_1\quad$}[\atright,\aplicationarrow] \mor{Lr}{R}{$r$} \mor{R}{SigmaR}{$\lambda^R$}[\atright,\solidarrow] \mor{SigmaL}{SigmaG}{$\varphi^m$}[\atright,\solidarrow] \mor{SigmaL}{SigmaR}{$\varphi^r$} \mor{SigmaR}{SigmaH}{$\varphi^{m^*}$} \enddc $$ \subsection{``Around the Word''~\cite{Harary72}} \begin{lstlisting} \begindc{\undigraph}[70] \obj(6,4){18}[\south] \obj(18,4){17}[\south] \obj(8,7){11}[\west] \obj(12,8){12}[\south] \obj(16,7){13}[\east] \obj(8,11){10}[\west] \obj(10,12){6}[\northwest] \obj(12,10){5} \obj(14,12){4}[\northeast] \obj(16,11){14}[\east] \obj(2,16){19} \obj(6,15){9} \obj(9,16){8} \obj(11,14){7} \obj(13,14){3} \obj(15,16){2} \obj(18,15){15} \obj(22,16){16} \obj(12,19){1}[\northeast] \obj(12,22){20} \mor{18}{17}{}\mor{18}{11}{}\mor{18}{19}{} \mor{11}{12}{}\mor{11}{10}{}\mor{12}{13}{} \mor{12}{5}{}\mor{10}{6}{}\mor{10}{9}{} \mor{5}{6}{}\mor{5}{4}{}\mor{13}{17}{} \mor{13}{14}{}\mor{9}{19}{}\mor{9}{8}{} \mor{6}{7}{}\mor{4}{3}{}\mor{4}{14}{} \mor{19}{20}{}\mor{8}{1}{}\mor{8}{7}{} \mor{7}{3}{}\mor{3}{2}{}\mor{2}{1}{} \mor{2}{15}{}\mor{14}{15}{}\mor{17}{16}{} \mor{16}{20}{}\mor{1}{20}{}\mor{15}{16}{} \enddc \end{lstlisting} $$ \begindc{\undigraph}[70] \obj(6,4){18}[\south] \obj(18,4){17}[\south] \obj(8,7){11}[\west] \obj(12,8){12}[\south] \obj(16,7){13}[\east] \obj(8,11){10}[\west] \obj(10,12){6}[\northwest] \obj(12,10){5} \obj(14,12){4}[\northeast] \obj(16,11){14}[\east] \obj(2,16){19} \obj(6,15){9} \obj(9,16){8} \obj(11,14){7} \obj(13,14){3} \obj(15,16){2} \obj(18,15){15} \obj(22,16){16} \obj(12,19){1}[\northeast] \obj(12,22){20} \mor{18}{17}{}\mor{18}{11}{}\mor{18}{19}{} \mor{11}{12}{}\mor{11}{10}{}\mor{12}{13}{} \mor{12}{5}{}\mor{10}{6}{}\mor{10}{9}{} \mor{5}{6}{}\mor{5}{4}{}\mor{13}{17}{} \mor{13}{14}{}\mor{9}{19}{}\mor{9}{8}{} \mor{6}{7}{}\mor{4}{3}{}\mor{4}{14}{} \mor{19}{20}{}\mor{8}{1}{}\mor{8}{7}{} \mor{7}{3}{}\mor{3}{2}{}\mor{2}{1}{} \mor{2}{15}{}\mor{14}{15}{}\mor{17}{16}{} \mor{16}{20}{}\mor{1}{20}{}\mor{15}{16}{} \enddc $$ \subsection{Incircled Objects} \begin{lstlisting} \begindc{\cdigraph}[250] \obj(1,5){A} \obj(1,4){B} \obj(1,1){C} \obj(5,5){E} \obj(5,3){F} \obj(5,1){G} \mor{A}{E}[80,80]{5} \mor{A}{F}[80,80]{3} \mor{B}{F}[80,80]{6}[\atright,\solidarrow] \mor{B}{E}[80,80]{1} \mor{C}{F}[80,80]{5} \mor{C}{G}[80,80]{7} \enddc \end{lstlisting} $$ \begindc{\cdigraph}[250] \obj(1,5){A} \obj(1,4){B} \obj(1,1){C} \obj(5,5){E} \obj(5,3){F} \obj(5,1){G} \mor{A}{E}[80,80]{5} \mor{A}{F}[80,80]{3} \mor{B}{F}[80,80]{6}[\atright,\solidarrow] \mor{B}{E}[80,80]{1} \mor{C}{F}[80,80]{5} \mor{C}{G}[80,80]{7} \enddc $$ \newcommand{\noopsort}[1]{} \newcommand{\singleletter}[1]{#1} \begin{thebibliography}{10} \bibitem{Feruglio94} Feruglio, {Gabriel Valiente}. \newblock Typesetting commutative diagrams. \newblock {\em TUGboat}, 15(4):466--484, 1994. \bibitem{Harary72} Harary, Frank. 1972. \newblock {\em Graph Theory}. \newblock Reading, Massachusetts: Addison-Wesley. \bibitem{Knuth86} Knuth, Donald~E. \newblock {\em The TeXbook}. \newblock Addison-Wesley Publishing Company, Reading,Massachusetts, 1986. \bibitem{Lamport94} Lamport, Leslie. \newblock {\em {\LaTeX}: A Document Preparation System}. \newblock Addison-Wesley Publishing Company, Reading, Massachusetts, 2nd edition, 1994. \bibitem{Otten99} Otten, Ton and Hagen, Hans . \newblock {\em Con\TeX t an excursion}. \newblock Pragma ADE, Hasselt, 1999. \bibitem{Pierce98} Pierce, Benjamin. \newblock {\em Basic Category Theory for Computer Scientists}. \newblock Foundations of Computing. The MIT Press, London, England, 1998. \bibitem{Wichura92} Wichura, Michael. \newblock {\em The {\PiCTeX} Manual}. \newblock Personal \TeX\ Inc, 12 Madrona Avenue, Mill Valley, CA 94941 - USA, 3rd edition, March 1992 \end{thebibliography} \section{The Code} {\scriptsize \verbatiminput{dcpic.sty} } \end{document} %%% Local Variables: %%% mode: latex %%% TeX-master: t %%% End: