diff options
Diffstat (limited to 'Master/texmf-dist/source/generic/xypic/xyguide.man')
-rw-r--r-- | Master/texmf-dist/source/generic/xypic/xyguide.man | 2285 |
1 files changed, 2285 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/generic/xypic/xyguide.man b/Master/texmf-dist/source/generic/xypic/xyguide.man new file mode 100644 index 00000000000..fa96c7b5c6c --- /dev/null +++ b/Master/texmf-dist/source/generic/xypic/xyguide.man @@ -0,0 +1,2285 @@ +%% $Id: xyguide.man,v 3.6 1998/03/06 01:28:05 krisrose Exp $ +%% +%% ``Xy-pic User's Guide''. +%% +%% This file is part of the Xy-pic package for graphs and diagrams in TeX. +%% See the companion README and INSTALL files for further information. +%% Copyright (c) 1991-1997 Kristoffer H. Rose <krisrose@ens-lyon.fr> +%% +%% The Xy-pic package is free software; you can redistribute it and/or modify +%% it under the terms of the GNU General Public License as published by the +%% Free Software Foundation; either version 2 of the License, or (at your +%% option) any later version. +%% +%% The Xy-pic package is distributed in the hope that it will be useful, but +%% WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +%% or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +%% for more details. +%% +%% You should have received a copy of the GNU General Public License along +%% with this package; if not, write to the Free Software Foundation, Inc., +%% 675 Mass Ave, Cambridge, MA 02139, USA. + +\documentclass{article} +%begin{latexonly} +\usepackage{xydoc} +%end{latexonly} +\begin{htmlonly} +\usepackage{xyhtmldoc} +\end{htmlonly} +\input{version} +\CompilePrefix{xygui-} +\makeindex +\begin{document} + +\title{ \Xy-pic User's Guide } +\author{ Kristoffer H. Rose\quad<krisrose@ens-lyon.fr>\thanks{% + Laboratoire de l'Informatique du Parall\'elisme, + Ecole Normale Sup\'erieure de Lyon; + 46, All\'ee d'Italie; F--69364 Lyon 7, France.}} +\date{Version \xyversion, \printdate{\xydate}} +\maketitle + +\begin{abstract} +% + \Xy-pic is a package for typesetting graphs and diagrams using + Knuth's \TeX\ typesetting system. \Xy-pic works with most of the + many formats available; \eg, plain \TeX, \LaTeX, and \AMS-\TeX. + Several styles of input for various diagram types are supported; they + all share a mnemonic notation based on the \emph{logical composition + of visual components}. This guide concentrates on how to typeset + ``matrix-like'' diagrams, such as ??w![commutative diagrams], in the + following style: +% +\begin{displaymath} +\begin{code} +\xymatrix{ + U \ar@/_/[ddr]_y \ar@/^/[drr]^x + \ar@{.>}[dr]|-{(x,y)} \\ + & X \times_Z Y \ar[d]^q \ar[r]_p + & X \ar[d]_f \\ + & Y \ar[r]^g & Z } +\end{code} +% +\docode +\end{displaymath} +% +was typeset by the \Xy-pic input lines +% +\displaycode\noindent +% +Such diagrams have the following characteristics: +% +\begin{itemize} + +\item + Specified as a matrix of entries that are automatically aligned in rows and + columns. + +\item + Any entry may be connected to any other entry using a variety of + arrow styles all rotated and stretched as required. + +\item + Arrows may be decorated with labels that are tied to a specified + point along the arrow and extend in a particular direction; and + arrows may be paired, cross, and visit/bend around other entries ``on + the way.'' + +\end{itemize} +% + Several other styles of input are supported; a short survey of the + possibilities is included last at the end along with information on + how \Xy-pic can be obtained. +% +\end{abstract} + +\tableofcontents + + + +\section*{Preface}\noindent +\addcontentsline{toc}{section}{Preface}% +% + This guide explains some features of \Xy-pic that are relevant to + typesetting of ``matrix-like diagrams'' as used in, for example, + category theory; please refer to the reference + manual~\cite{RM95:Xy-picRM} for complete information on the described + constructions. The guide assumes that you have some experience in + using \TeX\ for typesetting mathematics, \eg, have + studied~\cite[ch.~16--19]{K84:TeXbook}, \cite[sec.~3.3]{L94:LaTeX}, + or~\cite{S90:JoyT}, and that \Xy-pic is installed on your \TeX\ + system as described in the |INSTALL| file accompanying the + distribution. + + The first section describes what you need to get started, in + particular all that is needed to typeset the diagram in the abstract. + Section~??[arrows] and~??[entries] explain advanced use of arrows and + entries, respectively. Finally, section~??[avail] explains where and + under what conditions \Xy-pic is available, gives the relation of + version \xyversion\ to previous versions, and lists further sources + of information. + + Throughout we give exercises that you should be able to solve as you + go along; all exercises are answered at the end just prior to the + references and index. + + + +\section{Basics} +??=[basics] +% + This section explains the \Xy-diagram construction concepts needed to + get started with typesetting matrix-like diagrams. + + +\subsection{Loading} +??=[basics.loading] +% + The \Xy-pic setup used in this guide is loaded??w[loading] by + inserting the lines +% +\begin{defs1} + \cs{input} |xy| \cr + ??c![\xyoption]|{all}| +\end{defs1} +\noindent\unskip +% + in the definitions part of your + document.\footnote{??w![\LaTeXe]~\cite{L94:LaTeX} users can use + ??c![\usepackage]|[all]{xy}|.} If you wish to load only the + features you use, or you wish to use non-standard facilities like the + |v2| backwards compatibility mode\footnote{If you use the version~2 + loading command \cs{input} |xypic| (or the |xypic| document style + option) then the ??c![v2] option described in section ??[compat] will + be loaded automatically.} or the ??c![ps] \PS\ backend then this is + also possible as described in the reference + manual~\cite{RM95:Xy-picRM}. + + +\subsection{Entries} +??=[basics.entries] +% + A diagram is created by the command +% +\begin{defs1} + ??c![\xymatrix]|{|~\dots~|}| +\end{defs1} +\noindent\unskip +% + where the ``\dots'' should be replaced by \emph{entries}??w[entry] to + be aligned in \emph{??w![rows]} and \emph{??w![columns]} where +% +\begin{itemize} + +\item + entries in a row are separated by ??c![&],\footnote{Thus when using + \protect\Xy-constructions involving |&| inside other tabular + constructions then enclose the \protect\Xy-pic construction in an + extra pair of braces!} and + +\item + entire rows are separated by ??c![\\]. + +\end{itemize} +% + For example, +\begin{displaymath} +\begin{code} +\xymatrix{ + A &*+[F]{\sum_{i=n}^m {i^2}} \\ + & {\bullet} & D \ar[ul] } +\end{code} +\docode +\end{displaymath} +% + was typeset by +% +\displaycode\noindent +% + Notice the following: +% +\begin{itemize} + +\item + entries are typeset as mathematics (using ``??w![text style]''); + entries should not start with a macro (as illustrated by the use of + |{}| around |\bullet|\,. + +\item + all entries are centered and the separation between rows and columns + is usually quite large in a diagram, + +\item + empty entries at the end of rows may be omitted, + +\item + ``\Xy-decorations'' (here |\ar[ul]|) in entries allow drawing of + arrows and such relative to the entries without changing the overall + layout, and + +\item + ``\Xy-modifiers'' (here |*+[F]|) first in entries allow changing the + format and shape in many ways. + +\end{itemize} + + + +\subsection{Arrows} +??=[basics.arrows] +% + An ``??w![arrow]'' in an \Xy-pic diagram is a generic term for the + drawn decorations between the entries of the basic matrix structure. + In \Xy-pic all arrows must be specified along with the entry in which + they start; this is called their \emph{??w![base entry]}. Each + particular arrow command then refers explicitly to its + \emph{??w![target entry]}. This is obtained using the ??c![\ar] + command which accepts many options of which we will describe a few + here and some more in section~??[arrows]. In its simplest form an + arrow is entered as |\ar[|\emph{hop}|]| where \emph{??w![hop]} is + a sequence of single letters: ??c![u] for up, ??c![d] for down, + ??c![l] for left, and ??c![r] for right, \eg, the arrow |\ar[ur]| + reads ``typeset an arrow from the current entry to that one up and one + right.'' + +\begin{exercise} + Which entry does ??C![] refer to? +\answertext{The target |[]| is the current entry itself.} +\end{exercise} + +\vspace{\medskipamount}\noindent +% + The relative ??w![coordinates] specified in this way are purely + logical, \eg, if the diagram contains very wide entries then + ``diagonal'' arrows will be nearly horizontal. The constructed arrows + are aligned along the line between the centers of the base and target + entries; they will not automatically disappear under entries that + they cross (we discuss how this is achieved in + section~??[arrows.pass]). + + The ??w![arrow style] kan be changed by writing the command as + |\ar@|\emph{style}|[|\emph{hop}|]|. This will be described in + more detail in section~??[arrows.styles]; here we just list the most + common ??c![@]\emph{style}s (obvious variations also work): +% +\begin{displaymath} +\begin{code} + \DEF\st#1{\hbox{\lower1ex\rlap{\kern1pc % + \xy*{}+/r2pt/\ar@{#1},<1pc,-1.8pc>*{}\endxy}|@{#1}|}} + \st{=>}\quad\st{.>}\quad\st{:>}\quad\st{~>}\quad\st{-->}\quad\st{-}\quad\st{} +\end{code} +\begin{IMAGE} +\docode +\end{IMAGE} +\end{displaymath} + +\begin{exercise} +% + Typeset +% +\begin{displaymath} +\begin{code} +\xymatrix{ + {\bullet} \ar@{--}[d]\ar@{=}[dr]\ar@{-}[r] + & {\bullet} \ar@{.}[d] \\ + {\bullet} & {\bullet} \ar[l] } +\end{code} +\docode +\end{displaymath} +% +\answercode +\answertext{The author did } +\answerdisplaycode +\answertext{\noindent Notice how + $\bullet$ has been enclosed in |{}| since it is an ``expandable'' + entity, \ie, a defined macro: this is recommended.} +\end{exercise} + + +\subsection{Labels} +??=[basics.labels] + You can put ??w![label]s on arrows. Labels are conceptualized as + sub- and superscripts on arrows such that they are placed in the + usual positions (as ``limits''), \ie, ??c![^] reads ``above'' and + ??c![_] ``below'' on an arrow pointing right. Notice that the + positions depend \emph{only} on the direction of the arrow, the + absolute notions of ``up,'' ``down,'' etc. are not important. For + example, +% +\begin{code} +$\xymatrix@1{ + X\ar[r]^a_b & Y & Z\ar[l]^A_B }$ +\end{code} +\displaycode\noindent +% + will set \begin{IMAGE}\docode\end{IMAGE} (the ??c![@1] is a + special code that can be + used for ``one-line'' diagrams to improve the placement on the line; + more such spacing codes are described in section~??[entries.resizing]). + + It is possible to use labels that are not single letters, digits, or + control sequences: if a simple math formula in the default style + (script style) is desired then simply enclose in |{|\dots|}|. In + practice anything can be used as a label as described in + section~??[arrows.objects]. + + Each label is placed perpendicular to the arrow at the point halfway + between the centers of the base and target objects. This is usually + the most ęsthethic, however, in diagrams where the sizes of the + entries vary much it is sometimes nicer to place the label at the + center of the actual arrow??w[label centered on arrow]. This + behaviour is requested by inserting a ??c![-] (minus) right after the + |^| or~|_|: +% +\begin{code} +$\xymatrix@1{ + A\times B\times C\times D \ar[r]^-{+} &B +}$ +\end{code} +% +\begin{IMAGE} +\docode +\end{IMAGE} was typeset by +% +\displaycode\noindent +% + (it becomes +% +\begin{code} +$\xymatrix@1{ + A\times B\times C\times D \ar[r]^{+} &B +}$ +\end{code} +% +\begin{IMAGE} +\docode +\end{IMAGE}without the~|-|). In fact |-| is in just one of the may + possible placings of labels described in section~??[arrows.places]. + +\begin{exercise} +% + Typeset the second axiom of category theory as +% +\begin{displaymath} +\begin{code} +\xymatrix{ + A \ar[r]^f \ar[dr]_{f;g} + & B \ar[d]^g \ar[dr]^{g;h} \\ + & C \ar[r]_h & D } +\end{code} +\docode +\end{displaymath} +% +\answercode +\answertext{The author used } +\answerdisplaycode +\end{exercise} + + +\subsection{Breaks} +??=[basics.breaks] + It is also possible to ``??w![break]'' an arrow with a label using the + ??c![|] character: +% +\begin{code} +$\xymatrix@1{A\ar[r]|f&B}$ +\end{code} +% + \thecode\ will set +\begin{IMAGE} +\docode +\end{IMAGE}. + + If you just want an empty break you should use the special + ??c![\hole] break: +% +\begin{code} +$\xymatrix@1{ A\ar[r]|\hole & B }$ +\end{code} +% + the arrow \begin{IMAGE}\docode\end{IMAGE} was typeset by + including \thecode\ in the text. + + A different use of breaks is to place a label somewhere in a diagram + outside the normal matrix mesh??w[entry outside matrix]: this is + accomplished by ``breaking'' an ??w![invisible arrow] obtained using + the ??c![@{}] ??w![arrow style]: the square +% +\begin{displaymath} +\begin{code} +\xymatrix{\ar @{} [dr] |{=} + A \ar[d] \ar[r] & B \ar[d] \\ + B \ar[r] & C } +\end{code} +\docode +\end{displaymath} +% + was typeset by +% +\displaycode\noindent +% + There is more on breaks in section~??[arrows.pass]. + +\begin{exercise} +% + Typeset the first axiom of category theory as the display +% +\begin{displaymath} +\begin{code} +\xymatrix{ + A \ar[d]_f \ar[r]^f + & B \ar[dl]|{i_B} \ar[d]^g \\ + B \ar[r]_g & C } +\end{code} +\docode +\end{displaymath} +% +\answercode +\answertext{The author entered } +\answerdisplaycode +\end{exercise} + + +\subsection{Curving} +??=[basics.bends] +% + Arrows can be made to ??w![curve], for example to avoid going through + another entry, using the special style |@/|\emph{curving}|/|. The + simplest styles of \emph{curving} are the following, shown applied + to an arrow from $A$ to $B$: +% +\begin{displaymath} +\begin{code} +\DEF\a#1{*\hbox{\DEF\1{#1}\enspace\tt\codeof\1}& A \ar#1[r] & B} +\xymatrix @R-1.4pc{ + \a{@/^/} \\ + \a{@/_/} \\ + \a{@/_1pc/} } +\end{code} +\begin{IMAGE} +\docode +\end{IMAGE}??c[@/^/]??c[@/_/] +\end{displaymath} +% + As the last example shows a dimension can be inserted just after |^| + or |_| if more or less curving is desired. + + In case it is easier to specify the in- and out-going directions of + the curving then that is also possible: use +% +\begin{defs1} + ??c![@(]\emph{in}|,|\emph{out}|)| +\end{defs1} +\noindent\unskip +% + where \emph{in} and \emph{out} are one of the following + \emph{??w![direction]s}: +% +\begin{displaymath} +\begin{code} +\xy *=<2pc>[o][F]{}="c", + "c"; (-1,-1)**{},p+/3pc/ *+{|dl|} **@{-}?>*@{>}, + "c"; ( 0,-1)**{},p+/3pc/ *+{|d|} **@{-}?>*@{>}, + "c"; ( 1,-1)**{},p+/3pc/ *+{|dr|} **@{-}?>*@{>}, + "c"; ( 1, 0)**{},p+/3pc/ *+{|r|} **@{-}?>*@{>}, + "c"; ( 1, 1)**{},p+/3pc/ *+{|ur|} **@{-}?>*@{>}, + "c"; ( 0, 1)**{},p+/3pc/ *+{|u|} **@{-}?>*@{>}, + "c"; (-1, 1)**{},p+/3pc/ *+{|ul|} **@{-}?>*@{>}, + "c"; (-1, 0)**{},p+/3pc/ *+{|l|} **@{-}?>*@{>} +\endxy +\end{code} +\docode +\end{displaymath} +\noindent\unskip +% + In this case the curving is computed such that the curve begins at the + base entry in the \emph{in} direction and ends at the target entry + from the \emph{out} direction (this means that $|@(|d_1|,|d_2|)|$ + and $|@(|d_2|,|d_1|)|$ are mirror images. See + section~??[arrows.changing] for more directions). + +\begin{exercise} +% + Typeset +% +\begin{displaymath} +\begin{code} +\xymatrix{ + x \ar@(ul,dl)[]|{id} \ar@/^/[rr]|f + && f(x) \ar@/^/[ll]|{f^{-1}} } +\end{code} +\docode +\end{displaymath} +% +\answercode +\answertext{The author did } +\answerdisplaycode +\answertext{\noindent Note that both arrows are + curved ``above'' relative to their direction.} +\end{exercise} + + +\subsection{Speeding up typesetting} +??=[basics.speeding] +% + One thing that you will notice is that \Xy-pic is sometimes slow in + typesetting diagrams (this is to be expected considering the number + of drawing operations performed as reflected by the number last in + each |xymatrix| message). If you follow the rule of starting all + entries with a (nonexpandable) character or |{| then you can insert + the declaration +% +\begin{defs1} + ??c![\CompileMatrices] +\end{defs1} +\noindent\unskip +% + in the preamble of your document: this will create temporary + files\footnote{The temporary files are named the same as your + document but |.tex| is replaced by |-|$n$|.xyc| where $n$ is a + sequence number.} containing \emph{compiled} versions of each + matrix that can be loaded very quickly; they are automatically + recreated when a matrix is changed. + + If this causes some diagrams to not work, then such compilation can be + explicitly switched off by using ??c![\xymatrixnocompile] in place of + |\xymatrix|. Compilation can be switched off completely with + ??c![\NoCompileMatrices] (which respects \TeX\ grouping as does + ??c![\CompileMatrices], by the way). + + And if you are still not satisfied with the speed then you can add + the following: +% +\begin{defs1} + ??c![\OnlyOutlines] +\end{defs1} +\noindent\unskip +% + which will omit all compiled pictures; the additional command + ??c![\ShowOutlines] will add a dotted rectangle outlining the size of + the picture. + + + +\section{More Arrows and Labels} +??=[arrows] +% + In this section we explain a number of variations of the + ??w![arrow]??c[\ar] commands that are useful in ??w![commutative + diagrams]. + + +\subsection{Explicit label positioning} +??=[arrows.places] +% + The ??w![label]??w[explicit positioning] commands explained in + section~??[basics.labels] place the label text near the point along + the arrow halfway between the centers of the base and target entries. + This, however, may be changed by inserting a \emph{place} between + the ??c![^], ??c![_], or ??c![|], and the actual label (in fact |-| + is a \emph{place}). In general you may insert the following: +% +\begin{itemize} + +\item + ??c![<] will place the label at the point where the actual arrow + begins, \ie, ``appears from under'' the base, so +% +\begin{code} +$\xymatrix@1{A\ar[r]^<{+}&B}$ +\end{code} +% + \thecode\ will typeset \begin{IMAGE}\docode\end{IMAGE}. + +\item + Similarly, ??c![>] will place the label at the point where the actual + arrow ends, \ie, ``disappears below'' the target, so +% +\begin{code} +$\xymatrix@1{A\ar[r]^>{+}&B}$ +\end{code} +% + \thecode\ will typeset \begin{IMAGE}\docode\end{IMAGE}. + +\item + ??c![<<] and ??c![>>] will place the following label at a point just + a bit\footnote{``A bit'' is in fact a \TeX\ ??c![\jot] which is usually + 3pt.}\ further from the beginning and end of the arrow, so +% +\begin{code} +$\xymatrix@1{A\ar[r]^>>{+}&B}$ +\end{code} +% + \thecode\ will typeset \begin{IMAGE}\docode\end{IMAGE}. + Using more |<|s or |>|s will move the label further in. + +\item + A factor in ??c![()]s: $|(|a|)|$ indicates that the label should be + ``tied'' to the point $a$ of the way from the center of the base entry + (called ??c![(0)]) to the center of the target (called ??c![(1)]) + instead of in the middle, so +% +\begin{code} +$\xymatrix@1{A\ar[r]^(.3){+}&B}$ +\end{code} +% + \thecode\ will typeset \begin{IMAGE}\docode\end{IMAGE}. + +\item + A factor can be given \emph{after} some |<| or |>|s, in which case + the place is computed as if the base was specified by the + |<|s and target specified by the |>|s. Hence +% +\begin{code} +$\xymatrix@1{A\ar[r]^<(0){+}&B}$ +\end{code} +% + \thecode\ will typeset \begin{IMAGE}\docode\end{IMAGE}. + +\item + Finally, there is a simple way to denote the place on an arrow where + it ??w![intersects]??w[crossing arrows] with a straight line between + two points: the place |!{|$t_1$|;|$t_2$|}|??c[!{;}] places the label + relative to the point on the arrow where the line from the target + $t_1$ to the target $t_2$ crosses it. \BUG: Only works for straight + arrows at present. + +\end{itemize} +% + As usual more possibilities can be found in the reference + manual~\cite[fig. 2]{RM95:Xy-picRM}. + +\begin{exercise}??=[x.intercept] +% + Typeset +% +\begin{displaymath} +\begin{code} +\xymatrix{ + 1 \ar[rr] ^-{1000000x} + \ar[dr] _(.2){2000x} |!{[d];[rr]}\hole + && 1000000 \\ + 1000 \ar[r] _{2x} + \ar[urr] _>>>>{x^2} + & 2000 } +\end{code} +\docode +\end{displaymath} +% +\answercode +\answertext{The author used the display } +\answerdisplaycode +\answertext{\noindent In particular + notice how the break was specified to happen exactly where the two + arrows cross. For an easier but not so general method see + exercise~??[x.cube] last in section~??[arrows.pass].} +\end{exercise} + + +\subsection{Labeling with any object} +??=[arrows.objects] +% + \Xy-pic supports a general format for entering any \TeX\ + ??w![text]??w[text label] as labels (as well as entries to be + explained later). The character |*| is reserved for this: in its + simplest form |*{|\emph{math}|}| will typeset the \emph{math} + material as an object. This is like |{|\emph{math}|}| except that + the default style is ignored and there is no added blank margin. + + However, in general??w[label with any object] the following form of + ??c![*]\emph{object}??w[object] is available: +% +\begin{defs1} +|*|\emph{modifiers}|{|\emph{text}|}| +\end{defs1} +\noindent\unskip +% + where \emph{modifiers}??w[object modifier] can be used to change + the ??w![shape] and ??w![size] of the constructed object. The + following are the most common, the full list of possibilities can be + found in the reference manual~\cite[fig. 3]{RM95:Xy-picRM}: +% +\begin{defs} + ??c![+] & ??w![grow] \cr + |+<|\emph{dimen}|>| & grow by \emph{dimen} \cr + ??c![+=] & grow to enclosing ??w![square] \cr + ??c![-] & ??w![shrink] \cr + |-<|\emph{dimen}|>| & shrink by \emph{dimen} \cr + ??c![-=] & shrink to contained square \cr + ??c![!] & do not center \cr + ??C![o] & round??w[round shape] \cr + ??C![l] ??C![r] ??C![u] ??C![d] & adjust left, right,\dots??w[adjust] \cr + ??C![F] ??C![F=] & +\begin{IMAGE} +\xy*[F-]\hbox{\strut~frame~}\endxy +\end{IMAGE}??w[frame] +% +\begin{IMAGE} +\xy*[F=]\hbox{\strut~double~}\endxy +\end{IMAGE}??w[double frame]\cr + ??C![F.] ??C![F--] + & +\begin{IMAGE} +\xy*[F.]\hbox{\strut~dotted~}\endxy +\end{IMAGE}??w[dotted frame] +% +\begin{IMAGE} +\xy*[F--]\hbox{\strut~dashed~}\endxy +\end{IMAGE}??w[dashed frame]\cr + ??C![F-,] ??C![F-:<3pt>] + & +\begin{IMAGE} +\xy*[F-,]\hbox{\strut~shaded~}\endxy +\end{IMAGE}??w[shaded frame] +\begin{IMAGE} +\xy*[F-:<3pt>]\hbox{\strut~rounded~}\endxy +\end{IMAGE}??w[rounded frame] +\end{defs} +\noindent\unskip +% + Since objects specified this way start with no margin, a single |+| + is usually included to get the ??w![default spacing]. + +\begin{exercise} +% +\begin{code} +\xymatrix@1{ A \ar[r]^*+[o][F-]{x} & B } +\end{code} +% + Typeset $\smash{\docode}$~. +% +\answercode +\answertext{The author typed } +\answerdisplaycode +\end{exercise} +\vspace{3ex} + + There can only be one \emph{boxing}. This can be any box + generation command. The following are the most useful + \emph{boxing}|{|\emph{text}|}| combinations: +% +%\filbreak +\begin{defs} + ??c![@]\emph{variant}|{|\emph{tip}|}| & ??w![tip] (or ??w![shaft]) object \cr + ??c![\txt]|{|\dots|}| & ordinary \emph{??w![text]} \cr + ??c![\composite]|{|\dots??c![*]\dots|}| & ??w![combined objects] \cr + ??c![\frm]|{}| & ??w![repeat last object] +\end{defs} +\noindent\unskip +% + (the possibilities for \emph{variant} and \emph{tip} are given in the + following section). Finally, ??c![\hbox]|{|\dots|}|\footnote{The + plain \TeX\ command |\hbox| corresponds to |\mbox| in \LaTeX\ + and |\text| in the \AMS\ variants.} is a quick way to ensure + text-mode interpretation of a single object. However, ??c![\txt] + allows the use of ??c![\\] in \emph{text} to create a ??w![line + break], and the special form |\txt<6pc>{|\dots|}| will constrain the + text to a ??w![centered] 6pc wide column. By the way, |\txt| can be + used outside of \Xy-pic constructions. + + Finally, several objects can be combined using the last form; the + |*|s serve to separate the composed object. + +\begin{exercise} +% +\begin{code} +\xymatrix@1{ + A \ar @{/*\composite{{+}*{\times}}/} [rr] + ^*+\txt{High\\label} + && B} +\end{code} +% + Typeset $\docode$~. +% +\answercode +\answertext{The author did } +\answerdisplaycode +\end{exercise} + +\vskip-\baselineskip +\subsection{More arrow styles} +??=[arrows.styles] +% + The ??w![arrow style]s described in section~??[basics.arrows] are all + examples of the general \emph{??w![arrow style]} constructions +% +\begin{defs1} +??c![@]\emph{??w![variant]}|{|\emph{??w![tail]} \emph{??w![shaft]} + \emph{??w![head]}|}|\cr +??c![@]\emph{variant}|{|\emph{head}|}| +\end{defs1} +\noindent\unskip +% + that in describes arrows with the indicated \emph{tail}, + \emph{shaft}, and \emph{head} (on the first form the tail and + head can be omitted; the second style defaults to having no tail and + a standard shaft).??w[arrow head]??w[arrow shaft]??w[arrow tail] + + The following possibilities exist for \emph{head} and \emph{tail} + which we will denote \emph{tips} (here shown as heads): +% +\begin{unformatteddefs} +\begin{code} +{\DEF\DT#1#{\DTx{#1}} + \DEF\DTx#1#2{\Dx{#1}{#2}&\xy-(4,0)*{};(4,2)*+{}**{}?>*@#1{#2} **@#1{.}\endxy} + \DEF\Dx#1#2{\hbox{\DEF\1{#2}\enspace{\tt\codeof\1}\index code{#2}}} + \DEF\Darray#1{{\let\\=\cr \tabskip=2em plus 1fil minus.8em % + \halign to\hsize{&\hfil$##$\tabskip=1em&$##$\hfil\tabskip=2em plus 1fil \cr + #1\crcr}}} + % + \Darray{% + \DT{<} &\DT{>} &\DT{x} \\ + \DT{<<} &\DT{>>} &\DT{+} \\ + \DT{|<} &\DT{>|} &\DT{|} \\ + \DT{|<<} &\DT{>>|} &\DT{||} \\ + \DT{(} &\DT{)} &\DT{o} \\ + \DT{/} &\DT{//}}} +\end{code} +\begin{IMAGE} +\docode +\end{IMAGE} +\end{unformatteddefs} +% + and the \emph{shaft} should be one of the following:??w[dotted + arrow]??w[dashed arrow]??w[squiggly arrow] +% +\begin{unformatteddefs} +\begin{code} +{\DEF\DC#1#{\DCx{#1}} + \DEF\DCx#1#2{ \Dx{#1}{#2} & \xy *+{} ; (12,4)*+{} **@#1{#2}\endxy} + \DEF\Dx#1#2{\hbox{\DEF\1{#2}\enspace\tt\codeof\1\index code{#2}}} + \DEF\Darray#1{{\let\\=\cr \tabskip=2em plus 1fil % + \halign to\hsize{&\hfil$##$\tabskip=1em&$##$\hfil\tabskip=2em plus 1fil \\ + #1\crcr}}} + \Darray{% + \DC{-} &\DC{--} \\ + \DC{~} &\DC{~~} \\ + \DC{.} }}% +\end{code} +\begin{IMAGE} +\docode +\end{IMAGE} +\end{unformatteddefs} +\goodbreak +% + The \emph{variant} should be empty or one of the following: +% +\begin{defs} +??c![^] & ``above'' variant??w[half arrow] \cr +??c![_] & ``below'' variant \cr +|2| & ``double'' variant??w[double arrow] \cr +|3| & ``triple'' variant??w[triple arrow] +\end{defs} +\noindent\unskip +% + Here are some standard arrows in this notation, all from $A$ to $B$ + as usual: +% +\begin{displaymath} +\begin{code} +\DEF\a#1{*\hbox{\DEF\next{#1}\tt\codeof\next}& A \ar#1[rr] && B} +\xymatrix @R-1.8pc @C-1pc { + \a{@{<->}} \\ + \a{@^{<->}} \\ + \a{@_{<->}} \\ + \a{@2{<->}} \\ + \a{@3{<->}} } +\end{code} +\begin{IMAGE} +\docode +\end{IMAGE} +\end{displaymath} +% + As a special convenience |=| and |:| are provided as abbreviations + for |-| and |.| with variant forced to~|2|. + + As it can be seen, the variant will affect the \emph{entire} arrow. + Sometimes this is not what is wanted. In that case a \emph{local + variant} can be used by entering any of the \emph{tail}, + \emph{shaft}, and \emph{head}, on the following form: +% +\begin{defs1} +\emph{variant}|{|\emph{tip}|}|\cr +\emph{variant}|{|\emph{shaft}|}| +\end{defs1} +\noindent\unskip +% + Here are some arrows where this is required: +% +\begin{displaymath} +\begin{code} +\DEF\a#1{*\hbox{\DEF\next{#1}\tt\codeof\next}& A \ar#1[r] & B} +\xymatrix @R-1.8pc{ +\a{@{^{(}->}} \\ +\a{@{|-_{>}}} } +\end{code} +\begin{IMAGE} +\docode +\end{IMAGE} +\end{displaymath} +% + Notice that there is no distinction between shafts and tips using + this form, thus it is necessary to include all three of + \emph{tail}, \emph{shaft}, and \emph{head}, when using it. The + advantage is that it is possible then to ``fill with a tip.''??w[tip in + shaft]??w[shaft as tip] Furthermore, the following additional + possibilities are available when using this notation: +% +\begin{unformatteddefs} +\begin{code} +{\DEF\DT#1#{\DTx{#1}} + \DEF\DTx#1#2{\Dx{#1}{#2}&\xy-(4,0)*{};(4,2)*+{}**{}?>*@#1{#2} **@#1{.}\endxy} + \DEF\Dx#1#2{\hbox{\DEF\1{#1{#2}}\enspace{\tt\codeof\1}\index code{#1{#2}}}} + \DEF\Darray#1{{\let\\=\cr \tabskip=0pt plus 1fil % + \halign to\hsize{&\hfil$##$\tabskip=1em&$##$\hfil\tabskip=1em plus 1fil \cr + #1\crcr}\bigskip}} + \Darray{% + \DT{|-} &\DT^{|-} &\DT_{|-} \\ + &&\DT {|=} &\DT3{|-} \\ + \DT{*} &\DT^{`} &\DT_{`} \\ + &&\DT^{'} &\DT_{'} }}% +\end{code} +\begin{IMAGE} +\docode +\end{IMAGE} +\end{unformatteddefs} +\noindent\unskip +% + The even more general form |*|\emph{object} can be used, where + \emph{object} refers to any of the constructions described in + section~??[arrows.objects]. + +\begin{exercise} +% +\begin{code} +\xymatrix{ + A \ar @/^/ @{^{<}-_{>}} [r] + \ar @/_/ @{{*}{x}{*}} [r] & B } +\end{code} +% + Typeset $\docode$~. +% +\answercode +\answertext{The author entered } +\answerdisplaycode +\end{exercise} + + +\subsection{Sliding arrows sideways} +??=[arrows.sliding] +% + It is often desirable to have several ??w![parallel] arrows between + two objects. This can be done by ??w![sliding] either or both arrows + ??w![sideways] a distance given as a \TeX\ dimension enclosed in + ??c![@<>]s: it specifies how far ``sideways'' the arrow should be + moved, \eg, +% +\begin{code} +\xymatrix{ + A \ar@<1ex>[dr]^a_{.} \\ + & B \ar@<1ex>[ul]^b \ar@<1ex>[r]^c + & C \ar@<1ex>[l]^d_{.} } +\end{code} +\displaycode +% +\noindent will typeset +% +\begin{displaymath} +\docode +\end{displaymath} +% + A positive distance will slide the arrow in the ``|^|-direction,'' \eg, + the two arrows above are slid in the direction of the labels~$a$, + $b$, $c$, and $d$, respectively; a negative distance in the + ``|_|-direction.'' The distance |<@1ex>| is often appropriate since it + corresponds roughly to the height of letters like ``x,'' in the type size + being used. + +\begin{exercise} +% +\begin{code} +\xymatrix@1{ + A \ar@/^/[r] \ar@/^/@<-1ex>[r] & B } +\end{code} +% + Typeset $\docode$~. +% +\answercode +\answertext{The author typed } +\answerdisplaycode +\end{exercise} + + +\subsection{More targets} +??=[arrows.targets] +% + The ??w![target] address can be given in a large number of formats + called \emph{??w![position]s}. The full range of possibilities is + described in the reference manual~\cite[fig. 1]{RM95:Xy-picRM}; here + is a number of useful ones in addition to the \emph{hop} format + described in section~??[basics.arrows]: +% +\begin{itemize} + +\item + $|[|r|,|c|]|$??C[], where $r,c$ are integers, denotes the + \emph{??w![relative entry]} found $r$~??w![rows] below and + $c$~??w![columns] to the right of the current entry (the ??w![current + entry] itself is thus |[0,0]|). This always corresponds to a + |[|\emph{??w![hop]}|]|, \eg, |[1,2]| is the same as |[drr]| and + |[-2,0]| is the same as |[uu]|. + +\item + $|"|r|,|c|"|$, where $r,c$ are positive integers, denotes the + \emph{??w![absolute entry]} found in the $r$th row and $c$th column + of the diagram. The top left entry is |"1,1"|. + +\item + $t'??c![;]t$~, where $t'$ is any target, changes the ??w![base entry] + of the present arrow to $t'$ and then sets the target to $t$ relative + to the original base entry. For example, +% +\begin{code} +\xymatrix{ A \\ + B & C \ar@<1ex>[ul] + \ar@<1ex>[ul];[] } +\end{code} +\displaycode +% +\noindent\unskip typesets +% +\begin{displaymath} +\docode +\end{displaymath} +% + \ie, the second |\ar[ul]| arrow starts at the |[ul]| entry and ends + in the current entry. + +\end{itemize} +% + See section~??[entries.naming] for how to use a label as a target. + + +\subsection{Changing the target} +??=[arrows.changing] +% + It is possible to ??w![overwrite] a ??w![target] with another by + appending something of the form ??c![*]\emph{object} to it. This + has the effect of typesetting the \emph{object} at the current + position, thus effectively on top of the target, and then use what + was typeset as the target. + + A target may also have its ??w![position] changed??w[changing + position]??w[adjusting position]??w[moving target] by one of the + following constructions: +% +\begin{itemize} + +\item + ??c![+]\emph{vector} or ??c![-]\emph{vector} which changes the + target to be a zero-sized one at the position obtained by adding or + subtracting the \emph{vector} to its center, or + +\item + ??c![!]\emph{vector} which moves the center of the target by the + \emph{vector}; + +\end{itemize} +% + where a \emph{??w![vector]} should have the form +% +\begin{itemize} + +\item + $|<|D_x|,|D_y|>|$ , where $D_x,D_y$ are \TeX\ dimensions, is the + vector with those coordinates??w[vector coordinates], + + +\item + the following ``corner offsets'' of a target are vectors as shown: +% +\begin{displaymath} +\begin{code} +\DEF\corner#1{\POS"box"+0;"box"+#1 **@{-} ?>*@{>} +/1pc/ *\hbox{\tt#1}} +% +\xy 0.(-11,-6).(11,6)!C="box"*\frm{.},"box"; + "box"+L**@{.}, "box"+R**@{.}, "box"+D**@{.}, "box"+U**@{.} +% + \corner{L} \corner{R} \corner{D} \corner{U} + \corner{DL}\corner{DR}\corner{UL}\corner{UR} +\endxy +\end{code} +\begin{IMAGE} +\docode +\end{IMAGE} +\end{displaymath} +% + (they must be specified in upper case)??w[vector to corner], and + +\item + ??c![/]$d$ \emph{dimen}|/| is the \emph{vector} going + \emph{dimen} in the particular ??w![direction]??w[vector in + direction] $d$ which can be either the eight simple ones in + section~??[basics.bends], empty to denote that the + \emph{??w![current direction]} (the last direction of an arrow) + should be used, or one of the following: +% +\begin{defs} + |va(|$\alpha$|)|??c[va()] & ??w![absolute angle] \cr + $d$|:a(|$\alpha$|)|??c[:a()] & ??w![relative angle] in ??w![degrees] \cr + $d$|:(|$x$,$y$|)|??c[:()] & ??w![relative vector] \cr + $d$??c![^] / $d$??c![_] & short for |:a(90)| / |:a(-90)| +\end{defs} +\noindent\unskip +% + where the $d$ in the last four may be empty to denote the ``current + direction.'' + +\item + ??c![0] is the zero vector. + +\end{itemize} +% + Many, many more possibilities are described in the reference + manual~\cite{RM95:Xy-picRM}. + +\begin{exercise} + What is the difference between a target $t$ and the target $t$|+0|? +\answertext{The size: $t$|+0| always has zero size.} +\end{exercise} + + +\subsection{Arrows passing under} +??=[arrows.pass] +% + Arrows can pass under??w[arrow passing under] (or via) any other + entry: Just insert ??c![']$t$, \ie, a quote (apostrophe) character + followed by a target, for each entry that should be visited except + the last, ``ordinary \& final'' entry: +% +\begin{code} +\xymatrix{ + {\circ} + \ar@{|-->} '[dr] ^a + '[rr]+D*{\bullet} ^b + [drrr] ^c + & {\circ} & {\circ} & {\circ} \\ + {\circ} & {\circ} & {\circ} & {\circ} } +\end{code} +\displaycode +\noindent + typesets +% +\begin{displaymath} +\docode +\end{displaymath} +% + As you see, labels are set separately on each ??w![segment]. + +\begin{exercise}??=[x.cube] +% + Typeset the ``lambda ??w![cube]''??w[crossing arrows] +% +\begin{displaymath} +\begin{code} +\xymatrix@!0{ + & \lambda\omega \ar@{-}[rr]\ar@{-}'[d][dd] + & & \lambda C \ar@{-}[dd] +\\ + \lambda2 \ar@{-}[ur]\ar@{-}[rr]\ar@{-}[dd] + & & \lambda P2 \ar@{-}[ur]\ar@{-}[dd] +\\ + & \lambda\underline\omega \ar@{-}'[r][rr] + & & \lambda P\underline\omega +\\ + \lambda{\to} \ar@{-}[rr]\ar@{-}[ur] + & & \lambda P \ar@{-}[ur] +} +\end{code} +\docode +\end{displaymath} +% +\noindent\unskip +% + \emph{Hint}: ``going under'' an empty entry leaves a small gap at + that location.??w[crossing arrows] The compactness is achieved using + a trick described in section~??[entries.resizing]. +% +\answercode +\answertext{The author constructed } +\answerdisplaycode +\answertext{A special thing is added: |@!| forces rows and columns to be + equally spaced as discussed in section~??[entries.resizing]; |@!0| + furthermore makes the spacing ignore the entry sizes, giving a + completely fixed grid. The gaps could also be made with the + |!|\dots\ crossing notation of exercise~??[x.intercept] last in + section~??[arrows.places] but the above is shorter.} +\end{exercise} + + +\subsection{More bending arrows} +??=[arrows.bend] +% + Finally, arrows can ??w![bend] around entries: just insert + ??c![`]$d\,t$, \ie, a backquote and a ??w![direction] $d$ followed by + a target $t$, for each ``??w![turn]'' that starts out in the + $d$-direction and ends in a ??w![quarter turn] towards the + target~$t$. This is different from the curving??w[curve] described + earlier in that all turns consist of a straight part ending in a turn + which is a multiple of \slashedfrac18 ??w![circle segments], and each + segment allows separate ??w![label]s. + + The possible directions are those of section~??[basics.bends] and + ??[arrows.changing], and the possible targets include all those + discussed above. Actually the direction is only required for the + first in a series of turns since the final direction of one turn is + the obvious choice for the following turn. Furthermore, turns can be + changed from the default by adding either ??c![^]$d$ for + anticlockwise turn to $d$ or ??c![_]$d$ for clockwise turn to $d$, + where $d$ is the ``exit direction'' of the turn. + + Finally, the turns will have ??w![radius] 10pt by default, but this + can be changed to any dimension $R$ from a particular turn and + onwards by inserting ??c![/]$R$ immediately after the |``| of the + turn??w[changing turn radius]. Here is an example involving all of + these features: +% +\begin{code} +\xymatrix{ + {\circ} \ar `r[d] ^a + `[rr] ^b + `/4pt[rr] ^c + `[rrr] ^d + `_dl[drrr]^e + [drrr]^f + & {\circ} & {\circ} & {\circ} \\ + {\circ} & {\circ} & {\circ} & {\circ} } +\end{code} +\displaycode +\noindent +% + typesets +% +% +\begin{displaymath} +\docode +\end{displaymath} +% + The example illustrates the following points: +% +\begin{itemize} + +\item + If the segment can not be made as short as required then it will + point ``past'' the target. This is useful for ``??w![going around]'' + entries. + +\item + There is \emph{one |`| per turn} thus each target appears as many + times as there are turns towards it, except the last target that + appears one more time namely both with |`| for each turn towards it + \emph{and} once as an ``ordinary'' target to set the final stretch. + +\item + The sizes of the intermediate targets are ignored. + +\end{itemize} + +\begin{exercise} +% + Typeset +\begin{IMAGE}$% +% +\begin{code} +\xymatrix@1{ + A \ar@<-2pt> `d[r] `[r] [r] + \ar@<+2pt> `d[r] `[r] [r] & B } +\end{code} +% + \docode$ +\end{IMAGE}~. +% +\answercode +\answertext{The author typed } +\answerdisplaycode +\end{exercise} + + +\subsection{Defining new arrow types} +??=[arrows.defining] +% + Last in this treatment of arrows we will explain how ??w![new arrows] + can be defined??w[defining arrows]. The crucial fact is that the + characters used for \emph{??w![tip]s} and \emph{??w![shaft]s} are + restricted to the following: +% +\begin{defs} + |><||ox+/()[]|\verb*+ + &\quad \emph{tip} characters??w[tip characters]\cr + |-.~:=| &\quad \emph{shaft} characters??w[shaft characters] +\end{defs} +\noindent\unskip +% + When an arrow is interpreted by \Xy-pic it is first split into the + three components and then each component is looked up in a library of + so-called ``??w![directionals].'' It is possible to add new such + directionals using the command +% +\begin{defs1} + ??c![\newdir]|{| \emph{directional} |}{| \emph{composite} |}| +\end{defs1} +\noindent\unskip +% + where \emph{directional} should be a sequence either of tip + characters or of shaft characters, and \emph{composite} should be a + list of objects??w[combined objects] separated with ??c![*] just like + the argument to ??c![\composite] described in + section~??[arrows.objects]. If arrows of a particular + \emph{??w![variant]} (always one of the letters |^_23|) needs an + alternate definition then another declaration can be given with the + variant inserted between |\newdir| and the first |{|. + + There is one ??w![object modifier] which is very useful in this + context, in addition to those of section~??[arrows.objects]: +% +\begin{defs} + ??c![!]\emph{vector} &\quad shift object \emph{vector} +\end{defs} +\noindent\unskip +% + (where the possibilities for \emph{vector} are described in + section~??[arrows.changing]). Combined with the direction code this + is very powerful, for example, +% +\begin{code} +\newdir{|>}{% + !/4.5pt/@{|}*:(1,-.2)@^{>}*:(1,+.2)@_{>}} +\end{code} +\displaycode +\noindent\unskip +% + defines a new tip that makes +% +\begin{code} +\xymatrix{ A \ar @{=|>} [r] & B } +\end{code} +\displaycode +\noindent\unskip +% + typeset +% +\begin{code} +\newdir{|>}{!/4.5pt/@{|}*:(1,-.2)@^{>}*:(1,+.2)@_{>}} +\xymatrix{ A \ar @{=|>} [r] & B } +\end{code} +% + $\docode$~. Notice how the ``relative direction'' is used here to + rotate??w[rotation] some of the composed components. + +\begin{exercise}??=[arrows.def.ex] + Often tips used as ``tails'' have their ink on the wrong side of the + point where they are placed. Fortunately space (\verb*+ +) is also a + tip character so we can define the directional \verb*+ >+ to generate + a ``tail-spaced'' arrow. Do this such that +% +\begin{code} +\xymatrix{ A \ar @{>->} @< 2pt> [r] + \ar @{ >->} @<-2pt> [r] & B } +\end{code} +\displaycode +\noindent +% + typesets +% +\begin{displaymath} +\begin{code} +\newdir{ >}{{}*!/-5pt/@{>}} +\xymatrix{ A \ar @{>->} @< 2pt> [r] + \ar @{ >->} @<-2pt> [r] & B } +\end{code} +\docode +\begin{code} +\newdir{ >}{{}*!/-5pt/@{>}} +\end{code} +\end{displaymath} +% +\answercode +\answertext{The author used } +\answerdisplaycode +\end{exercise} + + Finally, when \Xy-pic diagrams are used in conjunction with Knuth's + \emph{??w![computer modern fonts]} then the declaration +% +\begin{defs1} + ??c![\SelectTips{cm}{}] +\end{defs1} +\noindent\unskip +% + will change the tips to some that look similar, \eg, +% +\begin{code} +$\SelectTips{cm}{} + \xymatrix@1{A\ar@{->>|}[r]&B}$ +\end{code} +\displaycode\noindent +% + typesets +\begin{IMAGE} +\docode +\end{IMAGE}. The second argument (here |{}|) can be used + to specify a point size |{10}|, |{11}|, or |{12}|, if desired (the + default is |{10}|\footnote{Except when \Xy-pic is loaded as a + \LaTeXe\ package where the default size is used.}); |{cm}| can be + replaced by |{eu}| and |{xy}| to get tips in ``Euler'' and the + default technical style, respectively. The declaration respects + \TeX\ grouping. + +\begin{exercise} +\begin{code} +\xymatrix@1{ + A \ar[r] |-{\SelectTips{cm}{}\object@{>>}} + |>{\SelectTips{eu}{}\object@{>}} + & B } +\end{code} +% + Typeset $\docode$~. \emph{Hint}: With the construction + ??c![\object]\emph{object} one can typeset an \Xy-pic \emph{object} + (anything that could follow a |*| in section~??[arrows.objects]) in + any context. +% +\answercode +\answertext{The author typed } +\answerdisplaycode +\end{exercise} + + + +\section{More Entries} +??=[entries] +% + This section explains what can go in an entry and how the general + form of the entries??w[entry] is changed. + + +\subsection{Manual entry formatting} +??=[entries.manual] +% + All the entries we have seen thus far have been simple math objects. + However, it is possible to change the ??w![format] of an individual + ??w![entry]??w[entry format] by using the form: +% +\begin{defs1} + ??c![*]\emph{object} \emph{arrows} +\end{defs1} +\noindent\unskip +% + This allows complete control over what object is placed in the entry, + overriding any spacing and other conventions for the entry. This was + how the frame was obtained in the figure in + section~??[basics.entries]. + + A simple use of this is to insert ??w![text in entries]??w[entries + with text]??w[labels with text] using ??c![\txt] objects just like + labels as described above in section~??[arrows.objects]: +% +\begin{code} +\xymatrix{ + *\txt{A very long and stupid\\program} + \ar[rr]^-{\txt{weird\\arrow}} + &&*\txt<2pc>{Com\-pli\-cated\\Code}} +\end{code} +\displaycode +% +\noindent will typeset +% +\begin{displaymath} +\docode +\end{displaymath} + +\begin{exercise} +% +\begin{code} +\xymatrix{ + *=0{\bullet} + \ar@/^/[dr]!U|1 + \ar@/^/[drr]!U|2 + \ar@/^/[drrr]!U|3 +\\ + &*+[F]\txt{x} + &*+[F]\txt{x\\x} + &*+[F]\txt{x\\x\\x} +} +\end{code} +% + Typeset +% +\begin{displaymath} +\docode +\end{displaymath} +% +\answercode +\answertext{The author typed} +\answerdisplaycode +\end{exercise} + + +\subsection{Extra entries outside the matrix} +??=[entries.extra] +% + It is possible to put ??w![extra entries]??w[entries outside matrix] + in your diagrams that are not part of any ``entry'' of the matrix + created by |&| and |\\|. This is done with the + \emph{??w![excursion]} command +% +\begin{defs1} + |\save|~$t$~|\restore| +\end{defs1} +\noindent\unskip +% + where $t$ should be a target in one of the formats described in + sections~??[arrows.targets]-??[arrows.changing]. $t$ can do + any kind of typesetting desired, for example, +% +\begin{code} +\xymatrix{ + A \ar@{-}[dr] + &{}\save[]+<3cm,0cm>*\txt<8pc>{% + This is a very big commentary + but it does not otherwise affect + the diagram.} + \ar[l] \ar[d] \restore \\ + & B \ar@{-}[r] & C \ar@{-}[r] & D +} +\end{code} +\displaycode +% +\noindent will typeset +% +\begin{displaymath} +\docode +\end{displaymath} +% + It illustrates how a ``down'' arrow does not necessarily have to point + particularly straight down -- in this case because it is based in the + displaced pseudo entry. + + +\subsection{Spacing and rotation} +??=[entries.resizing] +% + The |*|\emph{object} form described above can be used to space + individual objects differently, however, it is also possible to + change the overall ??w![spacing] of a matrix by inserting the + following codes \emph{between} |\xymatrix| and the following |{|: +% +\begin{defs} + ??c![@=]\emph{dimen} & set spacing \cr + ??c![@R=]\emph{dimen} & set row spacing \cr + ??c![@C=]\emph{dimen} & set column spacing \cr + ??c![@M=]\emph{dimen} & set entry default margin \cr + ??c![@W=]\emph{dimen} & set entry default width \cr + ??c![@H=]\emph{dimen} & set entry default height \cr + ??c![@L=]\emph{dimen} & set label margin +\end{defs} +\noindent\unskip +% + ??c![=] can be replaced by any of ??c![+], ??c![+=], ??c![-], + and ??c![-=] of section~??[arrows.objects] with the same meaning, + \ie, replace ``set'' with ``increase,'' ``increase to at most,'' + ``decrease,'' and ``decrease to at least,'' respectively. For example, +% +\begin{code} +$\xymatrix@1@=0pt@M=0pt{A&B\\C&D}$ +\end{code} +% + \thecode\ in the text typesets \begin{IMAGE}\docode\end{IMAGE}. + + In case \emph{??w![uniform spacing]} is desired, several alternative + forms exist. +% +\begin{defs} + ??c![@!] & force all spaces equal \cr + |@!0| & --- and ignore entry sizes \cr + |@!R| & force equal row spacing \cr + |@!C| & force equal column spacing +\end{defs} +\noindent\unskip +% + Finally a special notation allows \emph{??w![rotation]} of an + entire matrix: +% +\begin{defs} + ??c![@]\,$d$ & rotate towards $d$ +\end{defs} +\noindent\unskip +% + Only the matrix grid will rotate, however, not the actual contents. + +\begin{exercise} +\begin{code} +\xymatrix@dr@C=1pc{ + a \ar[r]\ar@{->>}[d] & a' \ar@{.>>}[d] \\ + b \ar@{.>>}[r] & b' } +\end{code} +% + Typeset the ``strip lemma'' $$\docode$$ +% +\answercode +\answertext{The author entered the display} +\answerdisplaycode +\end{exercise} + + +\subsection{Entry style} +??=[entries.style] +% + As mentioned above, the entries of a diagram are set in math mode in + text style. You may change this by redefinining the macro + ??c![\objectstyle]??w[entry style], and the label style by redefining + ??c![\labelstyle]??w[label style]. We can combine this with the + above to get ``small diagrams,'' \eg, typing +% +\begin{code} +$\left( + \def\objectstyle{\scriptstyle} + \def\labelstyle{\scriptstyle} + \vcenter{\xymatrix @-1.2pc @ur { + A \ar[r]^{a} & B \ar[d]^{b} \\ + A'\ar[u]^{a'} & B'\ar[l]^{b'} }} +\right)$ +\end{code} +\displaycode +% +\begin{code} +$\left( + \DEF\objectstyle{\scriptstyle} + \DEF\labelstyle{\scriptstyle} + \vcenter{\xymatrix @-1.2pc @ur { + A \ar[r]^{a} & B \ar[d]^{b} \\ + A'\ar[u]^{a'} & B'\ar[l]^{b'} }} +\right)$ +\end{code} +\noindent in a paragraph will typeset ``\begin{IMAGE}\docode\end{IMAGE}.'' + + You can even abandon the use of math mode entirely: the command + |\def| |\objectstyle| |{\hbox}|\ will change the format of entries to + plain text.??w[plain text entries] + + Similarly, all entries are rectangular by default, but it is possible + to change this to \emph{??w![round]??w[elliptical]??w[circular]} by + declaring the default \emph{modifiers}??w[object + modifier]??w[default modifier] to be applied to all entries that do + not override them (\cf\ section~??[arrows.objects]): +% +\begin{code} +\entrymodifiers={++[o][F-]} +\SelectTips{cm}{} +\xymatrix @-1pc { + *\txt{start} \ar[r] + & 0 \ar@(r,u)[]^b \ar[r]_a + & 1 \ar[r]^b \ar@(r,d)[]_a + & 2 \ar[r]^b + \ar `dr_l[l] `_ur[l] _a [l] + &*++[o][F=]{3} + \ar `ur^l[lll]`^dr[lll]^b [lll] + \ar `dr_l[ll] `_ur[ll] [ll] } +\end{code} +\displaycode +% +\noindent will typeset +% +\begin{displaymath} +\docode +\end{displaymath} +% + Notice how we obtain the double ring using the |*|\emph{object} + form which then has to include all the desired modifiers (and how the + use of computer modern tips is nice for diagrams as these). + + +\subsection{Naming for later use as targets} +??=[entries.naming] +% + If you build an entry with a long and complicated excursion then you + might wish to be able to refer to it later. \Xy-pic provides a + mechanism for this: there is a special ??w![target] form which we + haven't discussed yet: +% +\begin{defs1} + $t$ ??c![=]|"|\emph{name}|"| +\end{defs1} +\noindent\unskip +% + This will introduce the new target |"|\emph{name}|"| which will + refer to the target just before the |=|. This is particularly useful + inside excursions, of course, and can also be used after + labels??w[labels as targets]. + +\begin{exercise} +% +\begin{code} +\xymatrix{ + A \ar[r] ^a="a" & B \ar[r] ^b="b" & C + \ar @/^/ "a";"b" } +\end{code} +% + Typeset $\docode$. +% +\answercode +\answertext{The author typed } +\answerdisplaycode +\answertext{\noindent Notice the use + of both explicit base and target in the arrow between the labels.} +\end{exercise} + + +\subsection{Grouping objects} +??=[entries.grouping] +% + Sometimes you wish to frame or otherwise treat a rectangle of objects + as a single object??w[grouping]. This is possible with the last two + target position forms that we will mention: +% +\begin{defs} + $t$|.|$s$ & merge $t$ with simple $s$ \cr + |{|$t$|}| & make $t$ simple +\end{defs} +\noindent\unskip +% + The first will enlarge $t$ to also ``??w![cover]'' the ``simple'' $s$ + (simple means that it cannot have changes etc.\ attached unless + encapsulated in |{}|s). Here is an example where we ??w![merge] and + frame: +% +\begin{code} +\xymatrix @R=1pc { + 1,1 & 1,2 & 1,3 & 1,4 & 1,5 \\ + 2,1 & 2,2 & 2,3 & 2,4 & 2,5 + \save "1,2"."2,4"*[F.]\frm{} + \ar"1,1" \ar"2,1" \ar"1,5" \ar"2,5" + \restore } +\end{code} +\displaycode +\noindent will typeset +\begin{displaymath} +\docode +\end{displaymath} +% + As you can see, the center of the merged object is the same as the + one of the target \emph{before} the ``|.|.'' + + Finally a more advanced example where we create two merged objects + with center in their ``real'' center, ??w![name] them and then connect + to them. It also shows how macros can be used inside diagrams: they + should always expand to ``commands'' like |\ar|\dots, etc.: +% +\begin{displaymath} +\begin{code} +\def\g#1{\save + [].[dr]!C="g#1"*[F]\frm{}\restore}% +\xymatrix{ + \g1 A\ar[r]&B\ar[d]&\g2 A'\ar[r]&B'\ar[d]\\ + C\ar[u]&D\ar[l]& C'\ar[u]&D'\ar[l] + \ar @{.>} "g1" ;"1,4" + \ar @{-->} "2,1";"g2" } +\end{code} +\docode +\end{displaymath} +% + can be typeset by +% +\displaycode\noindent +% + Then we can make arrows from/to the two frames by using the two new + targets |"g1"| and |"g2"| as shown. + +\begin{exercise} +% + Change the lambda cube of exercise~??[x.cube] such it is enclosed in + a transparent (\ie, dotted) cube. +% +\answertext{The author added the \Xy-code} +\begin{code} +\save [].[dd].[ddrr].[rr]*[F.]\frm{}="back" + \restore +\end{code} +\answercode +\answerdisplaycode +\answertext{in the entry with $\lambda\omega$, and} +\begin{code} + \save [].[dd].[ddrr].[rr]*[F.]\frm{} + \ar@{.} +UL;"back"+UL \ar@{.} +UR;"back"+UR + \ar@{.} +DL;"back"+DL \ar@{.} +DR;"back"+DR + \restore +\end{code} +\answercode +\answerdisplaycode +\answertext{in the entry with $\lambda2$ to produce} +\begin{code} +\xymatrix @!0 { + & \lambda\omega \ar@{-}[rr]\ar@{-}'[d][dd] + \save [].[dd].[ddrr].[rr]*[F.]\frm{}="back"\restore + & & \lambda C \ar@{-}[dd] +\\ + \lambda2 \ar@{-}[ur]\ar@{-}[rr]\ar@{-}[dd] + \save [].[ddrr]*[F.]\frm{} + \ar@{.} +UL;"back"+UL \ar@{.} +UR;"back"+UR + \ar@{.} +DL;"back"+DL \ar@{.} +DR;"back"+DR \restore + & & \lambda P2 \ar@{-}[ur]\ar@{-}[dd] +\\ + & \lambda\underline\omega \ar@{-}'[r][rr] + & & \lambda P\underline\omega +\\ + \lambda{\to} \ar@{-}[rr]\ar@{-}[ur] + & & \lambda P \ar@{-}[ur] } +\end{code} +\answercode +\answertext{$$\begin{IMAGE}\docode\end{IMAGE}$$} +\end{exercise} + + + +\section{Availability and Further Information} +??=[avail] +% + Below we describe how to and the conditions for obtaining \Xy-pic + version~\xyversion, the compatibility with previous versions, and we + conclude with a few appetisers to lure the reader into reading more + about \Xy-pic. + + +\subsection{Getting \Xy-pic} +??=[avail.ftp] +% + The easiest way to retrieve??w[retrieving {\Xy}-pic] the latest version + of \Xy-pic is through the \Xy-pic home page~\cite{Xy-picHP} on the + ??w![World Wide Web]; it is also available by Internet ??w![ftp] from + \url{ftp://ftp.diku.dk/diku/users/kris/TeX/} as well as + \url{ftp://ftp.mpce.mq.edu.au/pub/maths/TeX/} in files starting with + |xy|. Finally, \Xy-pic has been contributed to the CTAN archives + where it is located in the directory \texttt{macros\slash generic\slash + diagrams\slash xypic}. + +\paragraph*{License:} +% + \Xy-pic is free software in the sense that it is available under the + following ??w![license]??w[copyright] conditions: +% +\begin{center}\ordinarybars +\begin{tabular}{|l|} + \hline + ~\Xy-pic: Graphs and Diagrams with \TeX~\\ + \quad\copyright~1991--1997\quad Kristoffer H. Rose\\ + \quad\copyright~1994--1997\quad Ross Moore\\ + \hline +\end{tabular} +\end{center} +% +\begin{quotation} +% + The \Xy-pic package is ??w![free software]; you can redistribute it + and/or modify it under the terms of the ??w![GNU General Public + License] as published by the Free Software Foundation; either version + 2 of the License, or (at your option) any later version. + + The \Xy-pic package is distributed in the hope that it will be + useful, but \emph{without any ??w![warranty]}; without even the + implied warranty of \emph{merchantability} or \emph{fitness for a + particular purpose}. See the GNU General Public License for more + details. + + You should have received a copy of the GNU General Public License + along with this package; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +% +\end{quotation} +% + In practice this means that you are free to use \Xy-pic for your + documents but if you distribute any part of \Xy-pic (including + modified versions) to someone then you are obliged to ensure that the + full source text of \Xy-pic is available to them (the full text of + the license in the file ??c![COPYING] explains this in somewhat more + detail~\smiley~). + + +\subsection{Backwards compatibility} +??=[compat] +% + The first widely distributed version of \Xy-pic was ??w![version 2] + (from release 1.40 to release 2.6). A special + \emph{??w![compatibility]} mode is used automatically if the + ??w![old style of loading] is used (using files named ??c![xypic.tex] + and ??c![xypic.sty]). You can also mix old and new diagrams in a + document if you load as described in section~??[basics.loading] and + add the declaration ??c![\xyoption]|{v2}|. This provides almost full + backwards compatibility: the following are the only known exceptions: +% +\begin{itemize} + +\item + Automatic ``shortening'' of arrow tails by ??c![|<<] break was a bug + and has been ``fixed'' so it does not work any more. \emph{Fix}: Put a + |||<\hole| break before it as described in section~??[arrows.styles]. + +\item + The release~2.6 ??c![*] position operator is not available. + \emph{Fix}: Use the |:| and |::| operators (described in detail in + the reference manual~\cite{RM95:Xy-picRM}). + +\item + Using $t_1|;|t_2|:(|x|,|y|)|$ as the target of an arrow command does + not work. \emph{Fix}: Enclose it in braces, \ie, write + $|{|t_1|;|t_2|:(|x|,|y|)}|$. + +\item + The old ??c![\pit], ??c![\apit], and ??c![\bpit] commands are not + defined. \emph{Fix}: Use |*@{>}| (or |\tip|) with variants and + rotation. + +\item + The even older notation where an argument in braces to |\rto| and the + others was automatically taken to be a ``tail'' is not supported. + \emph{Fix}: Use the supported |||<|\dots\ notation. + +\end{itemize} +% + Finally note that sometimes the spacing with version~\xyversion\ is + ``improved'' relative to earlier versions~\smiley~. Please report all + other things that do not work the same in version~2.6 and~\xyversion\ + to the author. + + +\subsection{Further reading} +??=[avail.further] +% + The reference manual~\cite{RM95:Xy-picRM} describes several more + input modes that are useful when the diagram is not organised as a + matrix. We'll give some examples of such diagrams but refer to the + reference manual for the details. +% +\begin{itemize} + +\item The ``??w![graph]'' feature allows input of data structured as + \emph{??w![directed graphs]} to make it easy to produce such + pictures as +% +\begin{displaymath} +% +% From xygraph.doc. +% +\begin{code} +\SelectTips{cm}{} +\objectmargin={1pt} +\xygraph{ !{0;(.77,-.77):0} + !~:{@{-}|@{>}} + w (:[r(.6)]{x_1} + ,:[d]z:[r]y:[u(.6)]{x_2}:@/_/"x_1" (:@/_/"x_2") :"z" + :@( {"w";"z"}, {"y";"z"})"z" :"x_2" ) } +\end{code} +\begin{IMAGE} +\docode +\end{IMAGE} +\end{displaymath} + +\item The ``??w![knot]'' feature allows drawing of mathematical \emph{knots + and ??w![links]} like +% +% From xyknot.doc: +% +\begin{displaymath} +% +\UseComputerModernTips +\vtop{\vbox{\xygraph{!{0;/r1.5pc/:} !{\vover}[u] + !{\hcap[-2]<<} [d] !{\vover-} [ruu] !{\hcap[2]><}}\smallskip} +\hbox{\qquad\ \small simple link}}\hfil +% +% Figure-eight +% +\vtop{\vbox{\xygraph{!{0;/r1.5pc/:} + [u] !{\vloop<(-.005)\khole||\vcrossneg \vunder- } + [] !{\ar @{-}@'{p-(1,0)@+}+(-1,1)} + [ul] !{\vcap[3]>\khole} + [rrr] !{\ar @{-}@'{p-(0,1)@+}-(1,1)} +}\smallskip}\hbox{\small figure-8 knot}}\hfil\quad +% +% cinque-foil +% +\vtop{\vbox{\xygraph{!{0;/r1.25pc/:} + !P5"a"{~>{}} !P10"b"{~:{(1.7487,0):}~>{}} + !P20"c"{~={-9}~:{(2.2,0):}~>{}} + !{\xunderv~{"b3"}{"b2"}{"a2"}{"a1"}} + !{\xunderv~{"b5"}{"b4"}{"a3"}{"a2"}} + !{\xunderv~{"b7"}{"b6"}{"a4"}{"a3"}} + !{\xunderv~{"b9"}{"b8"}{"a5"}{"a4"}} + !{\xunderv~{"b1"}{"b10"}{"a1"}{"a5"}} + !{\vloop~{"c3"}{"c2"}{"b2"}{"b1"}<<} + !{\vloop~{"c7"}{"c6"}{"b4"}{"b3"}<<} + !{\vloop~{"c11"}{"c10"}{"b6"}{"b5"}<<} + !{\vloop~{"c15"}{"c14"}{"b8"}{"b7"}<<} + !{\vloop~{"c19"}{"c18"}{"b10"}{"b9"}<<} +}\smallskip}\hbox{\quad\ \small cinquefoil}} +% +\vbox{\hbox to 2em{\hss}} +\end{displaymath} + +\item The ``??w![2cell]'' feature provides special support for + \emph{categorical ??w![twocells]} like +% +\begin{displaymath} +% +% From xy2cell.doc. +% +\begin{code} +\begin{xy} + *+{A}="A",+<1cm,1.5cm>*+{B}="B", + +<2cm,0pt>*+{C}="C", + +<1cm,-1.5cm>*+{D}="D", +"A";"B",{\uppertwocell^\alpha{}}, +"B";"C",{\twocell^\zeta_\xi{\gamma}}, +"C"; \afterPOS{\drop\compositemap{}}"D" +\POS "A"; + \afterPOS{\drop\lowertwocell{}}"D" +\end{xy} +\end{code} +\begin{IMAGE} +\docode +\end{IMAGE} +\end{displaymath} + +\item The ``??w![poly]'' feature allows \emph{??w![polygon-like]} + structures: +% +\begin{displaymath} +% +% From xypoly.doc: +% +\begin{code} +\begin{xy} +/r2pc/: ="A", +(.2,1.5)="B","A", +{\xypolygon6{~:{(1,-.1):(0,.33)::} + ~<>{;"B"**@{-}}}}\endxy +\qquad \xy /r2pc/: +{\xypolygon4"A"{~:{(0,.7)::}}},+(.7,1.1), +{\xypolygon4"B"{~:{(.8,0):(0,.75)::}}}, +"A1";"B1"**@{.},"A2";"B2"**@{.}, +"A3";"B3"**@{.},"A4";"B4"**@{.} +\endxy\qquad \xy /r2pc/: +{\xypolygon3"A"{~:{(0,.7)::}}},+(.7,1.1), +{\xypolygon3"B"{~:{(-.85,0):(-.15,.8)::}}} +,"A1"\PATH~={**@{.}}'"B2"'"A3"'"B1" +'"A2"'"B3"'"A1" +\end{xy} +\end{code} +\begin{IMAGE} +\docode +\end{IMAGE} +\end{displaymath} + +\item The ``??w![web]'' feature allows composition in lattices such as +% +\begin{displaymath} +% +% From xyweb.doc: +% +\begin{code} +\def\latticebody{\dimen0=\latticeX pt + \ifdim\dimen0>0pt \divide\dimen0 by 64 + \dimen0=\latticeY\dimen0 \relax + \ifdim 0pt>\dimen0 \dimen0=-\dimen0 \fi + \ifdim 2.5pt>\dimen0 \drop{\bullet}% + \else\drop{.}\fi \else\drop{.}\fi} +\begin{xy} +*\xybox{0;<1.5pc,1.28mm>:<.41pc,1.12pc>:: +,0,{\croplattice{-3}5{-5}5 + {-1.3}{4.5}{-3.4}{4.4}}}="L" +,{"L"+L \ar "L"+!R*+!L{\sigma^{(1)}}} +,{"L"+D \ar "L"+!U*+!D{\sigma^{(2)}}} +\end{xy} +\end{code} +\begin{IMAGE} +\docode +\end{IMAGE} +\end{displaymath} + +\item The ``??w![arc]'' feature is suitable for effects like +% +\begin{displaymath} +% +% From xyarc.doc: +% +\begin{code} +\begin{xy} +0;/r5pc/:*@{*}="p",*+!DR{p}; +p+(.5,-.5)*@{*}="c",*+!UL{c}**@{-} +,"c",{\ellipse<15pt>_,=:a(45){=}} + ,{\ellipse<>__,=:a(30){-}} +,{\ellipse(1,.4){.}} + ,{\ellipse(1,.4)_,=:a(120){--}} +,{\ellipse(,.75){.}} + ,{\ellipse(,.75)_,^,^{-}} +\end{xy} +\end{code} +\begin{IMAGE} +\docode +\end{IMAGE} +\end{displaymath} + +\end{itemize} +% + In each case the figure is produced with relatively few lines using + techniques documented in the respective sections of the reference + manual together with the details of the \Xy-pic kernel and + extensions, ``arrow,'' and ``matrix'' features as used in this guide; + further extensions provide support for use of colour, \PS\ effects, + and much more. + + Finally, the following documents might prove useful: \emph{How to + Typeset Pretty Diagram Arrows with {\TeX}}~\cite{R92:HowTPDAT} + presents some of the design decisions behind \Xy-pic, + \emph{{\Xy}-pic and Notation for Categorical + Diagrams}~\cite{R94:Xy-picNCD} explains how the modularity of \Xy-pic + can be used to obtain complex effects with commutative diagrams, and + \emph{Typesetting Neural Nets using + {\Xy}-pic}~\cite{M94:TypesettingNNX} explains how \emph{neural + networks} can be typeset using the package. Finally, a collection of + complex examples is maintained on the \Xy-pic home page and the ftp + servers discussed above. + + +\subsection{Credits} +??=[avail.credits] +% + \Xy-pic version 2 was a small package created by the author. The + present version \xyversion\ is the result of more than three years of + continued collaboration with Ross Moore,\footnote{Mathematics + Department, Macquarie University, Sydney, Australia 2109; + e-mail: ross@mpce.mq.edu.au.} and would never have been developed + without his support and \TeX-nical expertise.\footnote{Partial + funding for this collaboration has been provided by a Macquarie + University Research Grant (MURG), by the Australian Research Council + (ARC), and through a research agreement with the Digital Equipment + Corporation (DEC).} This includes many of the modes mentioned above + which were created for use within specialised branches of + mathematics, however, the notations are designed to fit quite + naturally within the framework of \Xy-pic and are useful more + generally. Finally, we are grateful to Y\&Y Inc.\ for making very + nicely done \PS\ versions of the \Xy-pic fonts available. + + +\appendix\section{Answers to all exercises} +\Answers + +\BIBLIOGRAPHY +\INDEX + +\end{document} + + +% $Log: xyguide.man,v $ +% Revision 3.6 1998/03/06 01:28:05 krisrose +% Releasing (with Y&Y fonts). +% +% Revision 3.5 1997/05/29 21:02:36 krisrose +% Fixed "missing breaks"...and tidied up documentation! +% +% Revision 3.4 1997/05/18 01:14:25 krisrose +% Essential bugfixes. +% +% Revision 3.3 1996/12/19 13:17:15 krisrose +% Maintenance release. +% +% Revision 3.2 1995/09/19 18:22:27 kris +% Bug fix release. +% +% Revision 3.1 1995/09/05 20:31:32 kris +% Releasing! +% +% Revision 3.0 1995/07/07 20:14:21 kris +% Major release w/new User's Guide! +% +% Revision 2.13 1995/07/04 15:11:17 kris +% Ready to release v3? +% +% Revision 2.12 1994/10/25 11:34:25 kris +% Interim release just before v3 [works with AMS-LaTeX 1.2]... +% +% Revision 2.10 1994/06/15 12:55:07 kris +% Second 3beta release: bug fixes. +% +% Revision 2.9 1994/06/09 14:59:19 kris +% Release 3beta. +% +% Revision 2.8 1994/04/08 04:30:00 kris +% Second (bug fix) 3alpha release. +% +% Revision 2.7 1994/03/08 02:06:01 kris +% Release 3alpha. +% +% Revision 2.6.9.1 1994/03/07 04:22:46 kris +% Last internal 3alpha and pre-2.7 release. +% +% Reformatted for LaTeX with companion xydoc.sty. +% Renamed from xypicman.doc to xyguide.man. +% +% Revision 2.6.1.1 1992/07/01 07:08:24 kris +% Send to EuroTeX '92... +% +% Revision 2.6 1992/06/24 01:23:34 kris +% Reorganised... +% Documented new features: hooks, triple lines, positions, and LaTeXdiagrams. +% +% Revision 2.5 1992/02/24 03:30:54 kris +% Documented changes in xypic.doc[2.5]. +% +% Revision 2.4 1992/01/22 02:15:10 kris +% Cosmetic changes; removed \pit and introduced \rotate. +% +% Revision 2.3 1992/01/13 01:51:02 kris +% Changed to use `pure' XPPT [1.20]. +% Several cosmetic changes, e.g., corrected definition of \ddtor in footnote. +% +% Revision 2.2 1992/01/09 04:05:40 kris +% Patched to fix problem with \text and support AMS-LaTeX. +% +% Revision 2.1 1992/01/02 14:54:07 kris +% Release version. +% +% Revision 1.7 1991/12/17 04:53:23 kris +% Version distributed as `final draft' on Usenet. +% Added bent arrows properly; support for double tips; proper \Text; +% fixed name clashes... +% This version is for bug fixes only!! +% +% Revision 1.6 1991/12/06 08:53:06 kris +% Draft ready for wider distribution... +% Fits xypic.doc[1.39]; still needs better examples. +% +% Revision 1.5 1991/12/03 07:53:28 kris +% Extended with the xypic.doc[1.37] possibility for exotic arrow +% tips; also added description of \merge. +% +% Revision 1.4 1991/12/02 06:08:42 kris +% Fixed various things; fits xypic.doc[1.36]. +% +% Revision 1.3 1991/12/01 07:40:07 kris +% Corresponds to xypic.doc[1.35]. +% +% Revision 1.2 1991/11/28 04:42:49 kris +% Corresponds to xypic.doc[1.34]. +% Cleaned up a lot; now only bending arrows are missing...and good examples. +% +% Revision 1.1 1991/11/27 06:48:17 kris +% Initial: \beta-test on DIKU. +% +% Based on version in DIKU student report 91-7-10. + + +% Tell Emacs that this is a LaTeX document and how it is formatted: +% Local Variables: +% mode:latex +% fill-prefix:"\t" +% fill-column:77 +% paragraph-separate:"^[ \t\f]*$\\|^[^\t]\\|\\\\\\\\\\|\\$\\$\\|[^\n\\\\][%&]" +% paragraph-start:"^[ \t\f]*$\\|^[^\t]\\|\\\\\\\\\\|\\$\\$\\|[^\n\\\\][%&]" +% End: |