
LPCA seminar, April 13, 1996.
Based on invited talk for ECCT, Tours, July 25, 1994
see also the
paper
and
Xy-pic home page
Divided into logical and physical.

See the dicussion of conceptual diagram notation later.
References:
\point Knuth 84.
catmac Reynolds 87.
catmac Reynolds
87) with

\def\Lab#1{{\scriptstyle #1}}
\def\Arr#1#2{\POS**\dir{-}
?>*\dir{>} ?+/#1 1ex/*{\Lab{#2}}\POS}
\xy<0.3pc,0pc>:
(0,20)*+{U}="u" ,
(15,10)*+{X \times_Z Y}="xy" ,
(30,10)*+{X}="x" ,
(15,0) *+{Y}="y" ,
(30,0) *+{Z}="z" ,
"u";"xy" **{}?*{\Lab{(x,y)}}="u-xy" ,
"u";"u-xy" **\dir{-}, "u-xy";"xy" **\dir{-} ?>*\dir{>},
"u";"x" \save **{}?+/^1pc/="c" \restore \curve{"c"}\POS
?>*\dir{>} ?+/^1ex/*{\Lab{x}} ,
"u";"y" \save **{}?+/_1pc/="c" \restore \curve{"c"}\POS
?>*\dir{>} ?+/_1ex/*{\Lab{y}} ,
"xy";"x" \Arr_p ,
"xy";"y" \Arr^q ,
"x";"z" \Arr_f ,
"y";"z" \Arr^g \endxy
*{_}.
Logical markup: Naming of entries with
="_", special objects *_{_}.
Physical markup: The rest: (_,_) for
cartesian coordinates, <_,_> for absolute vectors,
/_/ for directional vectors, : to set the
coordinate system, ; to swap current/previous object,
** for connections, ? to locate point on
last connection, . . .
Note: lower level than LaTeX picture mode.
\CD...\endCD Spivak 82.
Diagram Borceux 88 (sample).
diagrams Taylor 90 (sample).

\xy\xymatrix{
U \arrow @/^.5pc/ [drr] ^x
\arrow @{-->} [dr] |-{(x,y)}
\arrow @/_.5pc/ [ddr] _y \\
& X\times_Z Y \arrow[d]^q \arrow[r]_p & X \arrow[d]_f\\
& Y \arrow[r]^g & Z }
\endxy
Logical markup: & and
\\ delimiting entries; @{-->} for dashed
arrows, ^/_/| for labels in
super/sub/break position.
Physical markup: @/^ and
@/_ for arrow `curvature'; - for
centering label on arrow rather than entries.
Ideas as present in pullback development (w/source).

\xy\xygraph{!{0;<5em,0pc>:<0pc,4em>::0}
[] Z ( [u]X :_f ? , [l]Y :^g ? )
[ul] {X \times_Z Y}="xy" ( ? :_p "X" , ? :^q "Y" )
[ul] U ( ? :@/^.5pc/ ^x "X" , ? :@/_.5pc/ _y "Y" ,
? :@{-->} |-{(x,y)} "xy" ) }
\endxy
{_}s are nodes with ordinary
(TeX) math.Logical markup:
[_] for relative moves.
"_" for move to previously typeset _.
(_,...,_) means map current node
over the sequence of `subgraph abstractions' (wherein
? refers to it).
@{-->} for dashed arrows,
^/_/| for
labels in super/sub/break position (as matrices).
@/^ and
@/_ for arrow `curvature'; grid dimensions.
Also allows different interpretations of diagram: Check out the animation of the above diagram (w/source) !!
Example: independence of direction.
Considerations when adding a new feature:

\xy\xygraph{
!M{ X \times_Z Y \="xy" \:[r]_p \:[d]^q
& X \="X" \:[d]_f \\
Y \="Y" \:[r]^g & Z }
[ul]U ( ? :@/^1ex/ ^x "X" ,
? :@{-->} |-{(x,y)} "xy" ,
? :@/_1ex/ _y "Y" )
}\endxy
using !M{_} to first build the
matrix as a unit and then `ordinary' graph construction to add
the pullback.
Note: the combination is more than the sum of the components, for
example the base used for [_] by graphs is set by the
last matrix. . .
and many others. Consistency is best achieved by defining things on the lowest possible level:^means `superscript label' (as TeX).
_means `subscript label' (as TeX).
|means `break label'.
@means `variation'.
+means `add' or `increase'.
What needs to be done:
Xy-pic is available (as `free software') for anonymous ftp along with
my other TeX-related stuff on
ftp.diku.dk in
/diku/users/kris/TeX,
or through my W3 link below.