Here is what I think of Michael's proposal. I use XY-pic myself, and I am very satisfied by it. Therefore I am heavily biased in favour of XY-pic. | % TT-------------\>T | % |\ \ | % | \ \ | % | \ \ | % | \ \ | % | \ \ | % | \ \ | % | \ \ | % | \ 1 \ | % | TT\eta'\ T\eta'\ | % | \ \ | % | \ \ | % | \ \ | % | \ \ | % | \lr \mu%T' \lr | % | TTT'===========\>TT' | % T\eta'T| 2 | T\sigma | \ | % | | | \ | % | | | \ | % | | | \ | % | T\eta'TT'| 3 T\eta'T'| 6 \\$id$\l | % (6) | | | \ | % | | | \ | % \v TT'T\eta' \v TT'\sigma \v T\mu' \lr\l | % TT'T---------\>TT'TT'-------\>TT'T'----\>TT' | % | | | | | % | | | | | % | | | | | % | | | | | % \sigma%T| 4 \sigma%TT'| 5 \sigma%T'| 7 |\sigma\l | % | | | | | % | | | | | % \v \v \v \v | % T'T---------\>T'TT'---------\>T'T'-----\>T' | % T'T\eta' T'\sigma \mu' | % \efig | | What I am thinking of would have the following syntax: | | \diagram(4,4) % make a diagram on a 4 x 4 grid Why should I specify the size of the grid? The macros shoul do that for me. (Yes, XY-pic does that). | \object(1,1){TT} % object at pos (1,1) on the grid is TT I don't like to say \object every time. This can be inferred by the macros themselves, by letting everything be an object, except when it is a sub/superscript of an arrow. Also, I like the TeX alignment style of diagram specification, with & as a column separator, and \\ as a row separator better. This makes the code more position-independent, and less wysiwyg,ab-like. | \arrow(1,1)(2,2)_{TT\eta'} % draw an arrow with a subscript TT\eta The same goes for arrows. I like to specify a relative direction, instead of giving the exact co-ordinates. Co-ordinates are like goto's in programming languages: they make writing unreadable code very easy. The XY-pic syntax defines some standard arrows like \uto (up arrow), \drdashed (down-right dashed) or \drrto (one cell down, two to the right arrow). All these arrows can be made from more primitive commands, which specify relative, or absolute co-ordinates. This is extremely flexible, and allows the user to define her own arrows withoout much effort. | \enddiagram Yeah, I really like this. :-) | For example, sometimes you want a triangle to be | isoceles and there should be a way of specifying that. The basic Special things like triangles etc. and even whole diagrams can be made into macros in XY-pic. The relative addressing means that this is completely position-independent (the origin of the diagram is local). | there should be more shapes. For example the names \ptriangle, | \Vtriangle,... that I used in my package. I think those names are It can be done easily in XY-pic. What is even better is that the arrows and the grid will be modified according to the object/arrow labels if you pass them as parameters. | Could this be implemented? It has been implemented. One of the BIG advantages of XY-pic is that it is not just a package for drawing category theoretical diagrams. In the new version (of which I am a beta-tester), diagrams are an option, which you can put on top of the XY core language. This is really a complete graphics drawing language, programmed in TeX. It is incredibly clever, and still small, and fast. There are other options for drawing flow charts, general graphs, etcetera. | One possibility | is that someone will write an extension to TeX (analogous to Michael | Ferguson's multi-lingual tex XY-pic is completely programmed in TeX, and compatible with LaTeX, AMS (La)TeX, (e)plain TeX. One of the big pro's is that it does not depend on any non-TeX features. All you need apart from TeX is MetaFont (for the beautiful arrowtips and circle-pieces), and even that is not needed if you have a standard 300dpi laser printer. At home, I use it on a slow Atari 1040ST with a Canon BJ10 inkjet printer, and it works perfectly well. In summary, I am strongly in favour of XY-pic. If you want to try it out for yourself, you can ftp it from ftp.diku.dk, or mail to the writer of this incredibly versatile, and free (!), package, Kristoffer Rose (kris@diku.dk). -- Nico Verwer | nico@cs.ruu.nl Dept. of Computer Science, University of Utrecht | phone: +31 30 533921 p.o. box 80.089, 3508 TB Utrecht, The Netherlands | fax: +31 30 513791