diff options
Diffstat (limited to 'Master/texmf-dist/doc/eplain/base/arrow.texi')
-rw-r--r-- | Master/texmf-dist/doc/eplain/base/arrow.texi | 781 |
1 files changed, 781 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/eplain/base/arrow.texi b/Master/texmf-dist/doc/eplain/base/arrow.texi new file mode 100644 index 00000000000..c5d4786cef3 --- /dev/null +++ b/Master/texmf-dist/doc/eplain/base/arrow.texi @@ -0,0 +1,781 @@ +@c arrow.texi - documentation for Eplain's commutative diagrams. +@c Copyright (C) 1991, 1992 Steven Smith. +@c This is part of the Eplain manual. +@c +@c This file is free software; you can redistribute it and/or modify +@c it under the terms of the GNU General Public License as published by +@c the Free Software Foundation; either version 2, or (at your option) +@c any later version. +@c +@c This file is distributed in the hope that it will be useful, +@c but WITHOUT ANY WARRANTY; without even the implied warranty of +@c MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +@c GNU General Public License for more details. +@c +@c You should have received a copy of the GNU General Public License +@c along with this file; if not, write to the Free Software +@c Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +@c 02110-1301, USA. + +@comment \input texinfo +@comment setfilename arrow.info +@comment settitle Arrow Theoretic Diagrams + +@c Input arrow macros without altering texinfo's \catcodes. +@c Use the arrow macros in an `@iftex @tex ... @end iftex' environment. + +@iftex +@catcode`@$=3 @catcode`@%=14 @catcode`@&=4 @catcode`@#=6 +@catcode`@^=7 @catcode`@_=8 +@catcode`@"=@other @catcode`@<=@other @catcode`@>=@other +@catcode`@\=0 +\catcode`\@=\other +\input arrow +\catcode`\@=0 +@catcode`@\=@active +@catcode`@$=@other @catcode`@%=@other @catcode`@&=@other @catcode`@#=@other +@catcode`@^=@active @catcode`@_=@active +@catcode`@"=@active @catcode`@<=@active @catcode`@>=@active +@end iftex + + +@node Arrow theoretic diagrams +@chapter Arrow theoretic diagrams + +This chapter describes definitions for producing commutative diagrams. + +Steven Smith wrote this documentation (and the macros). + +@menu +* Slanted lines and vectors:: +* Commutative diagrams:: +@end menu + +@node Slanted lines and vectors +@section Slanted lines and vectors + +The macros @code{\drawline} +@findex drawline +and @code{\drawvector} +@findex drawvector +provide the capability found in @LaTeX{}'s +@cindex @LaTeX{} +@cindex picture mode +picture mode to draw slanted lines and vectors of certain directions. +Both of these macros take three arguments: two integer arguments to +specify the direction of the line or vector, and one argument to specify +its length. For example, @samp{\drawvector(-4,1)@{60pt@}} produces the +vector +@iftex +@tex +$$\vbox{\hbox{\drawvector(-4,1){60pt}}\smallskip + \hbox{$\mathop{\hbox to60pt{\leftarrowfill\hskip-5pt\rightarrowfill}} + \limits_{{\fam0 60\,pt}}$}}$$ +@end tex +@end iftex +@ifinfo + +@center (A vector in the 2d quadrant of length 60 pt appears here.) + +@end ifinfo +@cindex lines +@cindex vectors +which lies in the 2d quadrant, has a slope of minus 1/4, and a width of +60 pt. + +Note that if an @code{\hbox} is placed around @code{\drawline} or +@code{\drawvector}, then the width of the @code{\hbox} will be the +positive dimension specified in the third argument, except when a +vertical line or vector is specified, e.g., +@code{\drawline(0,1)@{1in@}}, which has zero width. If the specified +direction lies in the 1st or 2d quadrant (e.g., @code{(1,1)} or +@code{(-2,3)}), then the @code{\hbox} will have positive height and zero +depth. Conversely, if the specified direction lies in the 3d or 4th +quadrant (e.g., @code{(-1,-1)} or @code{(2,-3)}), then the @code{\hbox} +will have positive depth and zero height. + +There are a finite number of directions that can be specified. For +@code{\drawline}, the absolute value of each integer defining the +direction must be less than or equal to six, i.e., @code{(7,-1)} is +incorrect, but @code{(6,-1)} is acceptable. For @code{\drawvector}, the +absolute value of each integer must be less than or equal to four. +Furthermore, the two integers cannot have common divisors; therefore, if +a line with slope 2 is desired, say @code{(2,1)} instead of +@code{(4,2)}. Also, specify @code{(1,0)} instead of, say, @code{(3,0)} +for horizontal lines and likewise for vertical lines. + +Finally, these macros depend upon the @LaTeX{} font @code{line10}. If +your site doesn't have this font, ask your system administrator to get +it. Future enhancements will include macros to draw dotted lines and +dotted vectors of various directions. + + +@node Commutative diagrams +@section Commutative diagrams + +@cindex commutative diagrams + +The primitive commands @code{\drawline} and @code{\drawvector} can be +used to typeset arrow theoretic diagrams. This section describes (1) +macros to facilitate typesetting arrows and morphisms, and (2) macros to +facilitate the construction of commutative diagrams. All macros +described in this section must be used in math mode. + +@menu +* Arrows and morphisms:: +* Construction of commutative diagrams:: +* Commutative diagram parameters:: +@end menu + +@node Arrows and morphisms +@subsection Arrows and morphisms +@cindex arrows +@cindex morphisms + +The macros @code{\mapright} and @code{\mapleft} produce right and left +@findex mapright +@findex mapleft +pointing arrows, respectively. Use superscript (@code{^}) to place a +morphism above the arrow, e.g., @samp{\mapright^\alpha}; use subscript +(@code{_}) to place a morphism below the arrow, e.g., +@samp{\mapright_@{\tilde l@}}. Superscripts and subscripts may be used +simulataneously, e.g., @samp{\mapright^\pi_@{\rm epimor.@}}. + +Similarly, the macros @code{\mapup} and @code{\mapdown} produce up and +@findex mapup +@findex mapdown +down pointing arrows, respectively. Use @code{\rt} +@findex rt +to place a morphism to the right of the arrow, e.g., @samp{\mapup\rt@{\rm +id@}}; use @code{\lft} +@findex lft +to place a morphism to the left of the arrow, e.g., @samp{\mapup\lft\omega}. +@code{\lft} and @code{\rt} may be used simultaneously, e.g., +@samp{\mapdown\lft\pi\rt@{\rm monomor.@}}. + +Slanted arrows are produced by the macro @code{\arrow}, which takes +@findex arrow +a direction argument (e.g., @samp{\arrow(3,-4)}). Use @code{\rt} and +@code{\lft} to place morphisms to the right and left, respectively, of +the arrow. A slanted line (no arrowhead) is produced with the macro +@code{\sline}, +@findex sline +whose syntax is identical to that of @code{\arrow}. + +The length of these macros is predefined by the default @TeX{} +dimensions @code{\harrowlength}, +@findex harrowlength +for horizontal arrows (or lines), +@code{\varrowlength}, +@findex varrowlength +for vertical arrows (or lines), and +@code{\sarrowlength}, +@findex sarrowlength +for slanted arrows (or lines). To change any of these dimensions, say, +e.g., @samp{\harrowlength=40pt}. As with all other @TeX{} dimensions, +the change may be as global or as local as you like. Furthermore, the +placement of morphisms on the arrows is controlled by the dimensions +@code{\hmorphposn}, +@findex hmorphposn +@code{\vmorphposn}, +@findex vmorphposn +and @code{\morphdist}. +@findex morphdist +The first two dimensions control the horizontal and vertical position of +the morphism from its default position; the latter dimension controls +the distance of the morphism from the arrow. If you have more than one +morphism per arrow (i.e., a @code{^}/@code{_} or @code{\lft}/@code{\rt} +construction), use the parameters +@code{\hmorphposnup}, +@findex hmorphposnup +@code{\hmorphposndn}, +@findex hmorphposndn +@code{\vmorphposnup}, +@findex vmorphposnup +@code{\vmorphposndn}, +@findex vmorphposndn +@code{\hmorphposnrt}, +@findex hmorphposnrt +@code{\hmorphposnlft}, +@findex hmorphposnlft +@code{\vmorphposnrt}, +@findex vmorphposnrt +and @code{\vmorphposnlft}. +@findex vmorphposnlft +The default values of all these dimensions are provided in the section +on parameters that follows below. + +There is a family of macros to produce horizontal lines, arrows, and +adjoint arrows. The following macros produce horizontal maps and have +the same syntax as @code{\mapright}: + +@table @code + +@item \mapright +@findex mapright +@code{$X\mapright Y$} +@iftex +@tex +$\equiv$ $\harrowlength=20ptX\mapright Y$. +@end tex +@end iftex +@ifinfo += (a right arrow). +@end ifinfo + +@item \mapleft +@findex mapleft +@code{$X\mapleft Y$} +@iftex +@tex +$\equiv$ $\harrowlength=20ptX\mapleft Y$. +@end tex +@end iftex +@ifinfo += (a left arrow). +@end ifinfo + +@item \hline +@findex hline +@code{$X\hline Y$} +@iftex +@tex +$\equiv$ $\harrowlength=20ptX\hline Y$. +@end tex +@end iftex +@ifinfo += (horizontal line) +@end ifinfo + +@ignore +@item \dothline +@findex dothline +(dotted horizontal line) {@bf Unimplemented.} +@end ignore + +@item \bimapright +@findex bimapright +@code{$X\bimapright Y$} +@iftex +@tex +$\equiv$ $\harrowlength=20ptX\bimapright Y$. +@end tex +@end iftex +@ifinfo += (two right arrows). +@end ifinfo + +@item \bimapleft +@findex bimapleft +@code{$X\bimapleft Y$} +@iftex +@tex +$\equiv$ $\harrowlength=20ptX\bimapleft Y$. +@end tex +@end iftex +@ifinfo += (two left arrows) +@end ifinfo + +@item \adjmapright +@findex adjmapright +@code{$X\adjmapright Y$} +@iftex +@tex +$\equiv$ $\harrowlength=20ptX\adjmapright Y$. +@end tex +@end iftex +@ifinfo += (two adjoint arrows; left over right) +@end ifinfo + +@item \adjmapleft +@findex adjmapleft +@code{$X\adjmapleft Y$} +@iftex +@tex +$\equiv$ $\harrowlength=20ptX\adjmapleft Y$. +@end tex +@end iftex +@ifinfo += (two adjoint arrows; right over left) +@end ifinfo + +@item \bihline +@findex bihline +@code{$X\bihline Y$} +@iftex +@tex +$\equiv$ $\harrowlength=20ptX\bihline Y$. +@end tex +@end iftex +@ifinfo += (two horizontal lines) +@end ifinfo +@end table + +There is also a family of macros to produce vertical lines, arrows, and +adjoint arrows. The following macros produce vertical maps and have +the same syntax as @code{\mapdown}: + +@table @code + +@item \mapdown +@findex mapdown +(a down arrow) + +@item \mapup +@findex mapup +(an up arrow) + +@item \vline +@findex vline +(vertical line) + +@ignore +@item \dotvline +@findex dotvline +(dotted vertical line) {@bf Unimplemented.} +@end ignore + +@item \bimapdown +@findex bimapdown +(two down arrows) + +@item \bimapup +@findex bimapup +(two up arrows) + +@item \adjmapdown +@findex adjmapdown +(two adjoint arrows; down then up) + +@item \adjmapup +@findex adjmapup +(two adjoint arrows; up then down) + +@item \bivline +@findex bivline +(two vertical lines) +@end table + +Finally, there is a family of macros to produce slanted lines, arrows, +and adjoint arrows. The following macros produce slanted maps and have +the same syntax as @code{\arrow}: + +@table @code + +@item \arrow +@findex arrow +(a slanted arrow) + +@item \sline +@findex sline +(a slanted line) + +@item \biarrow +@findex biarrow +(two straight arrows) + +@item \adjarrow +@findex adjarrow +(two adjoint arrows) + +@item \bisline +@findex bisline +(two straight lines) + +@end table + +The width between double arrows is controlled by the parameter +@code{\channelwidth}. +@findex channelwidth +The parameters @code{\hchannel} and @code{\vchannel}, if nonzero, +override @code{\channelwidth} by controlling the horizontal and vertical +shifting from the first arrow to the second. + +There are no adornments on these arrows to distinguish inclusions from +epimorphisms from monomorphisms. Many texts, such as Lang's book +@cite{Algebra}, use as a tasteful alternative the symbol `inc' (in roman) next +to an arrow to denote inclusion. +@cindex Lang, Serge + +Future enhancements will include a mechanism to draw curved arrows +found in, e.g., the Snake Lemma, by employing a version of the +@code{\path} macros of Appendix D of @cite{The @TeX{}book}. +@cindex Snake Lemma + + +@node Construction of commutative diagrams +@subsection Construction of commutative diagrams + +There are two approaches to the construction of commutative diagrams +described here. The first approach, and the simplest, treats +commutative diagrams like fancy matrices, as Knuth does in Exercise +18.46 of @cite{The @TeX{}book}. This case is covered by the macro +@code{\commdiag}, +@findex commdiag +which is an altered version of the Plain @TeX{} macro @code{\matrix}. +@findex matrix +An example suffices to demonstrate this macro. The following +commutative diagram (illustrating the covering homotopy property; Bott +and Tu, @cite{Differential Forms in Algebraic Topology}) +@cindex Bott, Raoul +@cindex Tu, Loring W. +@cindex covering homotopy property +@iftex +@tex +$$\commdiag{Y&\mapright^f&E\cr \mapdown&\arrow(3,2)\lft{f_t}&\mapdown\cr +Y\times I&\mapright^{\bar f_t}&X}$$ +@end tex +@end iftex +@ifinfo + +@center (A commutative diagram appears here in the printed output.) + +@end ifinfo +is produced with the code + +@example +$$\commdiag@{Y&\mapright^f&E\cr \mapdown&\arrow(3,2)\lft@{f_t@}&\mapdown\cr +Y\times I&\mapright^@{\bar f_t@}&X@}$$ +@end example + +Of course, the parameters may be changed to produce a different effect. +The following commutative diagram (illustrating the universal mapping +property; Warner, @cite{Foundations of Differentiable Manifolds and Lie +Groups}) +@cindex Warner, Frank W. +@cindex universal mapping property +@iftex +@tex +$$\varrowlength=20pt +\commdiag{V\otimes W\cr \mapup\lft\phi&\arrow(3,-1)\rt{\tilde l}\cr +V\times W&\mapright^l&U\cr}$$ +@end tex +@end iftex +@ifinfo + +@center (A commutative diagram appears here in the printed output.) + +@end ifinfo +is produced with the code + +@example +$$\varrowlength=20pt +\commdiag@{V\otimes W\cr \mapup\lft\phi&\arrow(3,-1)\rt@{\tilde l@}\cr +V\times W&\mapright^l&U\cr@}$$ +@end example + +A diagram containing isosceles triangles is achieved by placing the apex +of the triangle in the center column, as shown in the example +(illustrating all constant minimal realizations of a linear system; +Brockett, @cite{Finite Dimensional Linear Systems}) +@cindex Brockett, Roger W. +@cindex minimal realizations +@cindex linear systems theory +@iftex +@tex +$$\sarrowlength=.42\harrowlength +\commdiag{&R^m\cr &\arrow(-1,-1)\lft{\fam6 B}\quad \arrow(1,-1)\rt{\fam6 G}\cr +R^n&\mapright^{\fam6 P}&R^n\cr +\mapdown\lft{e^{{\fam6 A}t}}&&\mapdown\rt{e^{{\fam6 F}t}}\cr +R^n&\mapright^{\fam6 P}&R^n\cr +&\arrow(1,-1)\lft{\fam6 C}\quad \arrow(-1,-1)\rt{\fam6 H}\cr +&R^q\cr}$$ +@end tex +@end iftex +@ifinfo + +@center (A commutative diagram appears here in the printed output.) + +@end ifinfo +which is produced with the code + +@example +$$\sarrowlength=.42\harrowlength +\commdiag@{&R^m\cr &\arrow(-1,-1)\lft@{\bf B@}\quad \arrow(1,-1)\rt@{\bf G@}\cr +R^n&\mapright^@{\bf P@}&R^n\cr +\mapdown\lft@{e^@{@{\bf A@}t@}@}&&\mapdown\rt@{e^@{@{\bf F@}t@}@}\cr +R^n&\mapright^@{\bf P@}&R^n\cr +&\arrow(1,-1)\lft@{\bf C@}\quad \arrow(-1,-1)\rt@{\bf H@}\cr +&R^q\cr@}$$ +@end example + +Other commutative diagram examples appear in the file +@code{commdiags.tex}, which is distributed with this package. + +In these examples the arrow lengths and line slopes were carefully +chosen to blend with each other. In the first example, the default +settings for the arrow lengths are used, but a direction for the arrow +must be chosen. The ratio of the default horizontal and vertical arrow +lengths is approximately the golden mean +@cindex golden mean +@iftex +@tex +$\gamma=1.618\ldots$; +@end tex +@end iftex +@ifinfo +gamma=1.618...; +@end ifinfo +@cindex golden mean +the arrow direction closest to this mean is @code{(3,2)}. In the second +example, a slope of +@iftex +@tex +$-1/3$ +@end tex +@end iftex +@ifinfo +-1/3 +@end ifinfo +is desired and the default horizontal arrow length is 60 pt; therefore, +choose a vertical arrow length of 20 pt. You may affect the interline +glue settings of @code{\commdiag} by redefining the macro +@code{\commdiagbaselines}. +@findex commdiagbaselines +(cf@. Exercise 18.46 of @cite{The @TeX{}book} and the section on +parameters below.) + +The width, height, and depth of all morphisms are hidden so that the +morphisms' size do not affect arrow positions. This can cause a large +morphism at the top or bottom of a diagram to impinge upon the text +surrounding the diagram. To overcome this problem, use @TeX{}'s +@code{\noalign} primitive to insert a @code{\vskip} immediately above or +below the offending line, e.g., +@samp{$$\commdiag@{\noalign@{\vskip6pt@}X&\mapright^\int&Y\cr ...@}}. + +The macro @code{\commdiag} is too simple to be used for more complicated +diagrams, which may have intersecting or overlapping arrows. A second +approach, borrowed from Francis Borceux's @cite{Diagram} macros for +@LaTeX{}, treats the commutative diagram like a grid of identically +shaped boxes. To compose the commutative diagram, first draw an equally +spaced grid, e.g., +@cindex grid +@cindex Borceux, Francis +@cindex Diagram, macros for LaTeX +@iftex +@tex +$$\def\grid{\cdot&\cdot&\cdot&\cdot&\cdot&\cdot\cr} +\matrix{\grid\grid\grid\grid}$$ +@end tex +@end iftex +@ifinfo + +@center . . . . . . +@center . . . . . . +@center . . . . . . +@center . . . . . . + +@end ifinfo +on a piece of scratch paper. Then draw each element (vertices and +arrows) of the commutative diagram on this grid, centered at each +grid point. Finally, use the macro @code{\gridcommdiag} +@findex gridcommdiag +to implement your design as a @TeX{} alignment. For example, the cubic +diagram +@cindex cube +@iftex +@tex +$$\harrowlength=48pt \varrowlength=48pt \sarrowlength=20pt +\def\cross#1#2{\setbox0=\hbox{$#1$}% + \hbox to\wd0{\hss\hbox{$#2$}\hss}\llap{\unhbox0}} +\gridcommdiag{&&B&&\mapright^b&&D\cr +&\arrow(1,1)\lft a&&&&\arrow(1,1)\lft d\cr +A&&\cross{\hmorphposn=12pt\mapright^c}{\vmorphposn=-12pt\mapdown\lft f} +&&C&&\mapdown\rt h\cr\cr +\mapdown\lft e&&F&&\cross{\hmorphposn=-12pt\mapright_j} +{\vmorphposn=12pt\mapdown\rt g}&&H\cr +&\arrow(1,1)\lft i&&&&\arrow(1,1)\rt l\cr +E&&\mapright_k&&G\cr}$$ +@end tex +@end iftex +@ifinfo + +@center (A commutative diagram appears here.) + +@end ifinfo +that appears in Francis Borceux's documentation can be implemented on +a 7 by 7 grid, and is achieved with the code + +@example +$$\harrowlength=48pt \varrowlength=48pt \sarrowlength=20pt +\def\cross#1#2@{\setbox0=\hbox@{$#1$@}% + \hbox to\wd0@{\hss\hbox@{$#2$@}\hss@}\llap@{\unhbox0@}@} +\gridcommdiag@{&&B&&\mapright^b&&D\cr +&\arrow(1,1)\lft a&&&&\arrow(1,1)\lft d\cr +A&&\cross@{\hmorphposn=12pt\mapright^c@}@{\vmorphposn=-12pt\mapdown\lft f@} +&&C&&\mapdown\rt h\cr\cr +\mapdown\lft e&&F&&\cross@{\hmorphposn=-12pt\mapright_j@} +@{\vmorphposn=12pt\mapdown\rt g@}&&H\cr +&\arrow(1,1)\lft i&&&&\arrow(1,1)\rt l\cr +E&&\mapright_k&&G\cr@}$$ +@end example + +The dimensions @code{\hgrid} and @code{\vgrid} +@findex hgrid +@findex vgrid +control the horizontal and vertical spacing of the grid used by +@code{\gridcommdiag}. The default setting for both of these dimensions +is 15 pt. Note that in the example of the cube the arrow lengths must +be adjusted so that the arrows overlap into neighboring boxes by the +desired amount. Hence, the @code{\gridcommdiag} method, albeit more +powerful, is less automatic than the simpler @code{\commdiag} method. +Furthermore, the ad hoc macro @code{\cross} is introduced to allow the +effect of overlapping arrows. Finally, note that the positions of four +of the morphisms are adjusted by setting @code{\hmorphposn} and +@code{\vmorphposn}. + +One is not restricted to a square grid. For example, the proof of +Zassenhaus's Butterfly Lemma can be illustrated by the diagram (appearing +in Lang's book @cite{Algebra}) +@cindex Zassenhaus, Hans +@cindex Lang, Serge +@cindex Butterfly Lemma +@iftex +@tex +$$\hgrid=16pt \vgrid=8pt \sarrowlength=32pt +\def\cross#1#2{\setbox0=\hbox{$#1$}% + \hbox to\wd0{\hss\hbox{$#2$}\hss}\llap{\unhbox0}} +\def\l#1{\llap{$#1$\hskip.5em}} +\def\r#1{\rlap{\hskip.5em$#1$}} +\gridcommdiag{&&U&&&&V\cr &&\bullet&&&&\bullet\cr +&&\sarrowlength=16pt\sline(0,1)&&&&\sarrowlength=16pt\sline(0,1)\cr +&&\l{u(U\cap V)}\bullet&&&&\bullet\r{(U\cap V)v}\cr +&&&\sline(2,-1)&&\sline(2,1)\cr +&&\cross{=}{\sline(0,1)}&&\bullet&&\cross{=}{\sline(0,1)}\cr\cr +&&\l{^{\textstyle u(U\cap v)}}\bullet&&\cross{=}{\sline(0,1)}&& + \bullet\r{^{\textstyle(u\cap V)v}}\cr +&\sline(2,1)&&\sline(2,-1)&&\sline(2,1)&&\sline(2,-1)\cr +\l{u}\bullet&&&&\bullet&&&&\bullet\r{v}\cr +&\sline(2,-1)&&\sline(2,1)&&\sline(2,-1)&&\sline(2,1)\cr +&&\bullet&&&&\bullet\cr &&u\cap V&&&&U\cap v\cr}$$ +@end tex +@end iftex +@ifinfo + +@center (A commutative diagram appears here.) + +@end ifinfo +This diagram may be implemented on a 9 by 12 grid with an aspect ratio +of 1/2, and is set with the code + +@example +$$\hgrid=16pt \vgrid=8pt \sarrowlength=32pt +\def\cross#1#2@{\setbox0=\hbox@{$#1$@}% + \hbox to\wd0@{\hss\hbox@{$#2$@}\hss@}\llap@{\unhbox0@}@} +\def\l#1@{\llap@{$#1$\hskip.5em@}@} +\def\r#1@{\rlap@{\hskip.5em$#1$@}@} +\gridcommdiag@{&&U&&&&V\cr &&\bullet&&&&\bullet\cr +&&\sarrowlength=16pt\sline(0,1)&&&&\sarrowlength=16pt\sline(0,1)\cr +&&\l@{u(U\cap V)@}\bullet&&&&\bullet\r@{(U\cap V)v@}\cr +&&&\sline(2,-1)&&\sline(2,1)\cr +&&\cross@{=@}@{\sline(0,1)@}&&\bullet&&\cross@{=@}@{\sline(0,1)@}\cr\cr +&&\l@{^@{\textstyle u(U\cap v)@}@}\bullet&&\cross@{=@}@{\sline(0,1)@}&& + \bullet\r@{^@{\textstyle(u\cap V)v@}@}\cr +&\sline(2,1)&&\sline(2,-1)&&\sline(2,1)&&\sline(2,-1)\cr +\l@{u@}\bullet&&&&\bullet&&&&\bullet\r@{v@}\cr +&\sline(2,-1)&&\sline(2,1)&&\sline(2,-1)&&\sline(2,1)\cr +&&\bullet&&&&\bullet\cr &&u\cap V&&&&U\cap v\cr@}$$ +@end example + +Again, the construction of this diagram requires careful choices for the +arrow lengths and is facilitated by the introduction of the ad hoc +macros @code{\cross}, @code{\r}, and @code{\l}. Note also that +superscripts were used to adjust the position of the vertices +@iftex +@tex +$u(U\cap v)$ and $(u\cap V)v$. +@end tex +@end iftex +@ifinfo +u(U intersection v) and (u intersection V)v. +@end ifinfo +Many diagrams may be typeset with the predefined macros that appear +here; however, ingenuity is often required to handle special cases. + +@node Commutative diagram parameters +@subsection Commutative diagram parameters + +The following is a list describing the parameters used in the +commutative diagram macros. These dimensions may be changed globally or +locally. + +@table @code +@item \harrowlength +@findex harrowlength +(Default: 60 pt) The length of right or left arrows. + +@item \varrowlength +@findex varrowlength +(Default: 0.618@code{\harrowlength}) The length of up or down +arrows. + +@item \sarrowlength +@findex sarrowlength +(Default: 60 pt) The horizontal length of slanted arrows. + +@item \hmorphposn +@findex hmorphposn +(Default: 0 pt) The horizontal position of the morphism with +respect to its default position. There are also the dimensions +@code{\hmorphposnup}, +@findex hmorphposnup +@code{\hmorphposndn}, +@findex hmorphposndn +@code{\hmorphposnrt}, +@findex hmorphposnrt +and @code{\hmorphposnlft} +@findex hmorphposnlft +for @code{^}/@code{_} or @code{\lft}/@code{\rt} constructions. + +@item \vmorphposn +@findex vmorphposn +(Default: 0 pt) The vertical position of the morphism with +respect to its default position. There are also the dimensions +@code{\vmorphposnup}, +@findex vmorphposnup +@code{\vmorphposndn}, +@findex vmorphposndn +@code{\vmorphposnrt}, +@findex vmorphposnrt +and @code{\vmorphposnlft} +@findex vmorphposnlft +for @code{^}/@code{_} or @code{\lft}/@code{\rt} constructions. + +@item \morphdist +@findex morphdist +(Default: 4 pt) The distance of morphisms from slanted lines +or arrows. + +@item \channelwidth +@findex channelwidth +(Default: 3 pt) The distance between double lines or arrows. + +@item \hchannel, \vchannel +@findex hchannel +@findex vchannel +(Defaults: 0 pt) Overrides @code{\channelwidth}. The +horizontal and vertical shifts between double lines or arrows. + +@item \commdiagbaselines +@findex commdiagbaselines +(Default: @code{\baselineskip=15pt +\lineskip=3pt +\lineskiplimit=3pt }) +The parameters used by @code{\commdiag} for setting interline glue. + +@item \hgrid +@findex hgrid +(Default: 15 pt) The horizontal spacing of the grid used by +@code{\gridcommdiag}. + +@item \vgrid +@findex vgrid +(Default: 15 pt) The vertical spacing of the grid used by +@code{\gridcommdiag}. + +@end table + +@comment bye |