% mangletex (24 Nov 1995) run at 11:41 GMT Sunday 30 December 2007 \message{==================================================================}% \message{}% %% %% %% This code runs the LaTeX \ProvidesPackage command iff it is defined. %% included at the request of Michael Downes March 2002. %% Put \listfiles in your LaTeX preamble to see what this is for. \expandafter\ifx\csname ProvidesPackage\endcsname\relax\toks0=\expandafter{% \fi\ProvidesPackage{diagrams}[2007/12/31 v3.92 Paul Taylor's commutative diagrams]%% \toks0=\bgroup}%% %%======================================================================% %% TeX macros for drawing category-theoretic diagrams % %% % %% Paul Taylor % %% % %% www.PaulTaylor.EU/diagrams % %% www.ctan.org/tex-archive/macros/generic/diagrams/taylor/ % %% % %% PLEASE READ THE MANUAL! % %% % %% Please ensure that you are registered with me as a user so that % %% you can be informed of future releases. Any electronic mail % %% message with "commutative" or "diagram" in the subject line % %% (such as your request for the package, a question about it, or % %% even an otherwise blank message) automatically registers you. % %% % %% % %% CONTENTS: % %% (O) corruption-sensitive hacks (to approx line 327) % %% Arrow components & commands - starts approx line 1248 % %% (22) auxillary macros for adjustment of components % %% (23) bits of arrows (\rhvee etc) % %% (24) arrow commands (\rTo etc) % %% (25) miscellaneous % %% Apart from these five sections, the rest is intended to be totally % %% meaningless in the undocumented version, which is approximately % %% 1918 lines long. Please do not waste trees by printing it out. % %% % %% COPYRIGHT NOTICE: % %% This package may be copied and used freely for any academic % %% (not commercial or military) purpose, on condition that it % %% is not altered in any way, and that an acknowledgement is % %% included in any published work making substantial use of it. % %% % %% IT IS SUPPLIED "AS IS", WITHOUT WARRANTY, EXPRESS OR IMPLIED. % %% % %% If you are doing something where mistakes cost money (or where % %% success brings financial profit) then you must use commercial % %% software, not this package. In any case, please remember to % %% keep several backup copies of all files, and check everything % %% visually before sending final copy to the publishers. % %% % %% You may use this package as a (substantial) aid to writing an % %% academic research or text book on condition that % %% (i) you contact me at a suitable time to ensure that you have % %% an up-to-date version (and any infelicities can be fixed), % %% (ii) you send me a copy of the book when it's published. % %% % %% HISTORY % %% 3.92 Released 31 December 2007 % %% 3.91 Released 31 August 2006 % %% Renamed "noPostScript" option as "UglyObsolete". % %% 3.90 Released 11 April 2004 % %% use PostScript=Rokicki not pure DVI by default % %% 3.89 Released 7 July 2002 % %% Added support for pdftex, which is recognised automatically. % %% 3.88 Released 1 September 2000 % %% Square hook tail: \newarrow{SquareInto}{sqhook}---> % %% 3.87 Released 1 September 1999 % %% This version was used for the final 1200dpi PS copy of my book % %% ``Practical Foundations of Mathematics'' (Cambridge Univ Press) % %% see http://www.PaulTaylor.EU/Practical_Foundations % %% 3.86 Released 1 September 1998 % %% New options hug and nohug in PostScript mode: [PS,nohug] uses % %% PS for the arrows without rotating the labels, but the way of % %% calculating the actual position of these horizontal labels on % %% will remain subject to alteration for some period of time --- % %% please send me examples if you feel that adjustment is needed. % %% % %% Suppress indentation of following text (due to LaTeX change) % %% Mangle address@hidden and address@hidden (conflict with Elsevier). % %% midvshaft and snake for vertical arrows % %% New option [gap=width] (default=shortfall) to use instead of % %% ~{\;} on horizontals and PS diagonals, as this caused ^ and _ % %% labels to be moved too far away from the shaft. % %% Added >-> and <-< heads and tails, same as >> and << but the % %% shaft goes *through* the extra arrowhead. % %% 3.85 Released 20 August 1997 % %% New option [crab=distance] shifts horizontals and PS diagonals % %% transversally by the specified distance (positive=upward). % %% New option [snake=distance] shifts midshaft horizontals and % %% PS diagonals longitudinally by the specified distance. % %% New option [leftflush], like [flushleft] but reckons alignment % %% from multiple verticals, or from text if there's no vertical. % %% Most of the history has been suppressed from the user version. % %% 3.83 Released 18 May 1995 % %% "dotted" option (set dot filler on maps) % %% Parallel maps (\pile) outside diagrams stretch correctly. % %% Option "LaTeXeqno" uses LaTeX's equation number and style % %% for "eqno"; LaTeX's \label command picks this up. % %% Suppress warnings & 2nd pass errors with "silent" option. % %% 3.81 Second alpha release 18 July 1994 % %% \overprint{text} sets text in maths and overprints it in the % %% current cell, centered in the column irrespective of other stuff% %% "repositionpullbacks" option uses this for \SEpbk etc % %% \newdiagramgrid declaration, grid option and pentagon grid. % %% 3.80 Alpha release for adjusted diagonals 15 July 1994. % %% Introduced landscape and portrait options. % %% Diagonals adjusted to meet their endpoints, at last!!!! % %% 3.28 Released 30 November 1993 % %% Peter Freyd's \puncture symbol provided. % %% 3.25 Released 30 January 1993 % %% LaTeX heads made default (unless \tenln undefined, when vee) % %% Circle, cross, little vee, little black triangle heads. % %% First-use warning when defaulted diagonal components are used. % %% AMSTEX emulation - works at least when amstex not present. % %% 3.24 Release 7 Sept 1992 advertised to users. % %% PostScript option introduced: % %% LaTeX, vee, curlyvee, triangle & blacktriangle heads & tails % %% TPIC option introduced as an alternative to address@hidden@line. % %% Postscript arrows (basic code). % %% Implemented \newarrow \newarrowhead etc. % %% Horizontal arrows outside diagram can stretch by wordspacing. % %% Added < and > for labels on left and right of arrow; % %% 3.16 (20.7.90) as mass mailed; only have mangled version % %% -- all following version numbers are post-facto -- % %% 3 (Jan 90) stretching vertical arrows % %% 2 (Sept 89) horizontals stretch to objects; "superscript" labels % %% 1 (1987) horizontal arrows stretch to edge of cell % %% 0 (1986) implementation of Knuth's TeXercise 18.46 for my thesis % %%======================================================================% %%======================================================================% %% % %% (1) CORRUPTION-SENSITIVE HACKS % %% % %%======================================================================% %% CORRUPTION & \catcode WARNING %% BITNET (IBM) machines may corrupt certain important characters %% in transmission by electronic mail: %% 0123456789=digits, abcdefghijklmnopqrstuvwxyz=lowers, %% ABCDEFGHIJKLMNOPQRSTUVWXYZ=uppers, @=at (internal names), %% {}=curly braces (grouping), \=backslash (keywords), %% %=percent (comment), #=hash/sharp (argument), +=plus, -=minus, %% <>=angle brackets (relations \ifnum,\ifdim), ==equals, %% ,=comma, .=dot, :=colon, ;=semicolon, =space %% $=dollar (maths) is only used in the "bits of maps" section %% The following characters are marked by a comment including the word "ASCII", %% except in comments and messages: %% &=and (alignment), ~=tilde, |=vertical, []=square brackets, %% ^=caret (superscript), _=underline (subscript), %% `=grave/backquote (catcodes), '=acute/single quote (octal), %% "=double quote (hex), ()=round brackets, %% /=slash, ?=query, !=pling/bang, %% The \catcode's marked * are assumed for reading this file: %% \=0* {=1* }=2* $=3 &=4 return=5* #=6 ^=7 _=8 ignored=9* %% space=10* letter=11* other=12 active=13 %=14* invalid=15 %% If you want to load this package inside Stallman's "texinfo", you must do %%% @address@hidden \catcode`\%=14 \input diagrams \catcode`\%=12 \catcode`\\=13 %% and then use @diagram @rTo @\ @enddiagram etc. (braces {} stay the same). %% Also need @catcode`@&=4. %%*** You *MUST NOT* use the internal commands (with names beginning \CD@)**** %% don't load me twice! address@hidden: the \string\diagram\space command is already defined and will not be loaded again}\expandafter\endinput\fi %% make @ letter, saving its old code to restore at the end of this file %%% look for this on the last line of the file if you think something's missing! %% the other \catcode assignments are to make it work with texinfo. \edef\cdrestoreat{%% address@hidden@%% \noexpand\catcode\lq\noexpand\#=\the\catcode\lq\#%% \noexpand\catcode\lq\noexpand\$=\the\catcode\lq\$%% \noexpand\catcode\lq\noexpand\<=\the\catcode\lq\<%% \noexpand\catcode\lq\noexpand\>=\the\catcode\lq\>%% \noexpand\catcode\lq\noexpand\:=\the\catcode\lq\:%% Johannes L. Braams's \noexpand\catcode\lq\noexpand\;=\the\catcode\lq\;%% Babel languages package \noexpand\catcode\lq\noexpand\!=\the\catcode\lq\!%% makes these \active. \noexpand\catcode\lq\noexpand\?=\the\catcode\lq\?%% \noexpand\catcode\lq\noexpand\+=\the\catcode\rq53% %% texinfo @+ is @address@hidden address@hidden \catcode\lq\#=6 \catcode\lq\<=12 \catcode\lq\>=12 \catcode \rq53=12 \catcode\lq\:=12 \catcode\lq\;=12 \catcode\lq\!=12 \catcode\lq\?=12 %% Change y to n if pool_size in your implementation of TeX is small. %% This is reasonable if you have a small ("personal") computer, but if you %%% have a sun, dec, hp, ... workstation or a mainframe, complain to your local %% system manager and get him/her to install a version of TeX with bigger %% parameters. The "hash size" (number of command names) gets you next. address@hidden@address@hidden@address@hidden y\fi %% The following macro is used to include literal PostScript commands in the %% DVI file for rotation, etc. Since this goes beyond standard TeX, it is %%% dependent on the convention used by your local DVI-to-PostScript translator. %% Choose whichever line applies to the program used at your site, or, if %% yours is not listed, consult the manual, experiment with this macro and %% (please) tell me what is needed to make it work. %% %% %%% dvips (Tomas Rokicki, Radical Eye) labrea.stanford.edu /pub/dvips9999.tar.Z %% CTAN: dviware/dvips address@hidden:address@hidden@Rokicki\let address@hidden@address@hidden@address@hidden@Rokicki address@hidden@Rokicki%% %% I'm not sure that the rest work. %% %% dvitps (Stephan Bechtolsheim, Integrated Computer Systems) %% arthur.cs.purdue.edu /pub/TeXPS-9.99.tar.Z address@hidden: Literal "#1"}}% %% ASCII two dbl quotes address@hidden@address@hidden address@hidden %% dvitops (James Clark) %% CTAN: dviware/dvitops address@hidden: inline #1}}%% address@hidden@Clark%% %% OzTeX (Andrew Trevorrow) cannot be used address@hidden@address@hidden %% dvi3ps (Kevin Coombes) %% CTAN: dviware/dvi2ps/dvi3ps address@hidden #1}}%% %% psprint (Trevorrow) CTAN: dviware/psprint %% dvi2ps (Senn) CTAN: dviware/dvi2ps %% psdvi (Elwell) CTAN: dviware/dvi2ps/psdvi address@hidden@12 address@hidden \ifnum\count@>24120 %% (December 2009) \message{***********************************************************}%%ascii \message{! YOU HAVE AN OUT OF DATE VERSION OF COMMUTATIVE DIAGRAMS! *}%% \message{! it expired in December 2009 and is time-bombed for April *}%% \message{! You may get an up to date version of this package from *}%%ascii \message{! either www.ctan.org or www.PaulTaylor.EU/diagrams/ *}%% \message{***********************************************************}%%ascii \ifnum\count@>24123 %% (March 2010) \errhelp{You may press RETURN and carry on for the time being.}\message{! It is embarrassing to see papers in conference proceedings}\message{! and journals containing bugs which I had fixed years before.}\message{! It is easy to obtain and install a new version, which will}\errmessage{! remain compatible with your files. Please get it NOW.}\fi\fi address@hidden@RH{\outer\def} %% safe names for braces, tab (&) and maths ($), as commands and for messages address@hidden@address@hidden %% %% three ASCII ampersands (ands) (&&&) appear on the next line \catcode\lq\&=4 address@hidden@Q=&address@hidden&}%%ascii three ands %% %% ASCII ^ and _ each appear twice on next line %% six ASCII dollars ($$$$$$) appear on the next two lines. \catcode\lq\$=3 address@hidden@address@hidden@ND=$%%ascii three dollars address@hidden@LG{$$}%%ascii three dollars %% %% two ASCII underlines (__) appear on the next line. \catcode\lq\_=8 address@hidden@lJ=_%%ascii two underlines %% %% eight ASCII carets (^^^^^^^^) appear on the next three lines. \obeylines\catcode\lq\^=7 address@hidden@super=^%%ascii two carets \ifnum\newlinechar=10 address@hidden two carets \else\ifnum\newlinechar=13 address@hidden two carets \else\ifnum\newlinechar=-1 address@hidden two carets address@hidden@uG\space\expandafter\message{! input error: \noexpand \newlinechar\space is ASCII \the\newlinechar, not LF=10 or CR=13.}%% \fi\fi\fi}%% %% avoid using <> (because I personally re-define them to mean \langle\rangle) \mathchardef\lessthan=\rq30474 \mathchardef\greaterthan=\rq30476 %% LaTeX line and arrowhead font %% the "hit return" comments show up if the font is missing. address@hidden \font\tenln=line10\relax%% Hit return - who needs diagonals? address@hidden \font\tenlnw=linew10\relax%% Hit return - who needs diagonals? \fi\fi%% %% report line numbers in TeX3 only address@hidden address@hidden \message{***************************************************}\message{! Obsolete TeX (version 2). You should upgrade to *}\message{! version 3, which has been available since 1990. *}\message{***********************************% ****************}\fi address@hidden@KB{* THIS (#1) SHOULD NEVER HAPPEN! *}} %% turn round- and square-bracketed arguments into curly-bracketed address@hidden@pair#1(#2,#3){#1{#2}{#3}}%%ascii round brackets () address@hidden@arg#1[#2]{#1{#2}}%%ascii square brackets [] address@hidden@address@hidden@@E\CD@@E#1,],}%%ascii sq brackets address@hidden@RD{]}\def\commdiag#1{{\let\enddiagram\relax\diagram[]#1% \enddiagram}} %% ASCII open square bracket occurs on next line address@hidden@address@hidden@address@hidden address@hidden address@hidden@address@hidden@address@hidden %% ASCII vertical bar (|) occurs on the next line address@hidden|} address@hidden arguments to maps inside diagrams address@hidden:address@hidden@args;address@hidden:address@hidden;address@hidden:% address@hidden;\tokcase{~}:address@hidden;%%ascii tilde \tokcase<:address@hidden;%%ascii less-than \tokcase>:address@hidden;%%ascii greater-than \tokcase(:address@hidden;%%)%ascii open round bracket \tokcase[:\optional@;%%]%ascii open square bracket \tokcase.:address@hidden;%%ascii dot 12.7.94 \catcase\space:address@hidden;\catcase\bgroup:\positional@;\default:\CD@@A address@hidden;\endswitch} address@hidden arguments to horizontal maps outside diagrams address@hidden:address@hidden;address@hidden:address@hidden;\tokcase[:\optional@ ;%%]%ascii open square bracket \tokcase.:address@hidden;%%ascii dot 12.7.94 % ; was : before 15.6.97 \catcase\space:address@hidden;\catcase\bgroup:\positional@;\tokcase{~}:% address@hidden;%%ascii tilde (questionable!) \default:address@hidden@args;\endswitch} %% That's as much as you get to read "in clear" - the rest is private! address@hidden@qK\let\protect\relax\fi\ifx\AtEndDocument address@hidden@address@hidden@address@hidden@CH{#1}% address@hidden@address@hidden@address@hidden address@hidden: address@hidden@ZA#1#2{% address@hidden@address@hidden@address@hidden@p{#1}% address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@tF#1% address@hidden@address@hidden@address@hidden address@hidden y% address@hidden@address@hidden newtoks\endcsname#1#1=% \expandafter{\csname#2\endcsname}}\else\csname address@hidden@help address@hidden@help{See the address@hidden@address@hidden@lF =1 address@hidden address@hidden address@hidden address@hidden address@hidden address@hidden address@hidden address@hidden address@hidden address@hidden address@hidden address@hidden address@hidden address@hidden address@hidden address@hidden \skipdef address@hidden address@hidden address@hidden address@hidden address@hidden address@hidden address@hidden address@hidden \def\sdef#1#2{\def#1{#2}% address@hidden@RC#1{% address@hidden address@hidden@nF#1#2{% address@hidden address@hidden address@hidden@XJ#1{\expandafter\show\csname#1% address@hidden@WJ#1{% address@hidden Diagram}\edef address@hidden@address@hidden address@hidden@address@hidden@qK\expandafter address@hidden address@hidden@address@hidden@ignoretrue{% address@hidden@address@hidden address@hidden@wC{\ifnum0=\lq{\fi}}\def\catcase#1:{\ifcat address@hidden@address@hidden@dJ\fi}\def \tokcase#1:address@hidden@address@hidden@dJ\fi}% address@hidden;address@hidden;{}\let\endswitch\relax\def\default:% #1;address@hidden@address@hidden@address@hidden@o address@hidden address@hidden@P>}#1>#2>address@hidden@address@hidden@P<}#1<#2{##2}% address@hidden@address@hidden@P V}##1V##2V{\dTo<{##1}>address@hidden@address@hidden@P=}{% address@hidden@address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden@address@hidden address@hidden address@hidden@CH\else\ifcat\relax address@hidden@address@hidden@address@hidden address@hidden@z{}\begingroup address@hidden@% \active\aftergroup @address@hidden@address@hidden address@hidden@address@hidden@address@hidden address@hidden@gE\CD@@address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden@V#1#2{\ifdim#1<#2\relax#1=#2% address@hidden>address@hidden@XH =1sp address@hidden@address@hidden@address@hidden@nJ\fi}\def address@hidden@address@hidden }\CD@@address@hidden address@hidden@address@hidden address@hidden address@hidden \unskip\unpenalty\setbox1=\lastbox}}}\newdimen\CD@@I\CD@@I=1true in \divide \CD@@I300 address@hidden@\advance#1\ifnum#1address@hidden@V address@hidden@@address@hidden@address@hidden@\CD@@I#1\ifnum\count@>\z@ \divide\CD@@address@hidden@address@hidden@address@hidden@address@hidden@ address@hidden@\CD@@address@hidden@address@hidden@QJ address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden@address@hidden@ address@hidden@address@hidden@address@hidden@address@hidden@tI address@hidden@tI address@hidden address@hidden@axisheight{\fontdimen22\the address@hidden@address@hidden address@hidden@address@hidden@UK{\fontdimen3% address@hidden@address@hidden@address@hidden address@hidden address@hidden address@hidden address@hidden address@hidden@address@hidden@iA address@hidden@address@hidden@address@hidden@ZB\expandafter\ifx\expandafter\iftrue\csname address@hidden@address@hidden address@hidden@aB address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden@address@hidden address@hidden@n\empty\global address@hidden@mG address@hidden@GG>}\def\newarrowtail{% address@hidden address@hidden@GG>address@hidden address@hidden@maths\empty}% address@hidden address@hidden@address@hidden@RC {r#1:address@hidden:address@hidden:address@hidden:#5}{#3% address@hidden:#5}{\expandafter\noexpand\csname-#1:#4\endcsname\noexpand address@hidden@vC{+#1:#5}{\expandafter\noexpand\csname+#1:#4\endcsname\noexpand address@hidden@address@hidden@eF\space diagonals are used unless PostScript is set% address@hidden@@J}\def\CD@@address@hidden@sJ<>ht% address@hidden@sJ<>address@hidden@HJ{r#4}{#3}{l#5}{#2}{r#4:address@hidden r#5}{#2}{l#4}{#3}{l#4:address@hidden:address@hidden {#3}{u#4:address@hidden@address@hidden:#2}% address@hidden:address@hidden:address@hidden@GJ#1#2#3#4{\csname newbox% address@hidden@sJ{}% \CD@@address@hidden@sJ{vee}\else address@hidden@address@hidden@address@hidden:#3% address@hidden:address@hidden@L{#1#2:address@hidden:#3}\endgroup}% address@hidden@address@hidden address@hidden@address@hidden lh>address@hidden rt>address@hidden rh<% address@hidden rtaddress@hidden lhaddress@hidden lt% address@hidden dt>address@hidden dhaddress@hidden ut>address@hidden uh<% address@hidden ut24127 \message{because this one expired in July 2010!}\expandafter\endinput\fi\def address@hidden@nB{horizontal address@hidden@address@hidden@address@hidden 9999 address@hidden@address@hidden@ plus 1.5% address@hidden minus address@hidden address@hidden@address@hidden@dot}{rf:% address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@NI address@hidden@address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@aD\else address@hidden@bD\fi\ifvoid6 \ifvoid7 address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden@YD\fi}\def address@hidden@RG\dimen5=\MapShortFall address@hidden@address@hidden@pD address@hidden@ plus1fill minus 1000pt\skip4\skip2 address@hidden@tG address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden@pB433{vertical address@hidden@LC address@hidden address@hidden@address@hidden@dot}{df:address@hidden@args{% address@hidden@address@hidden@address@hidden@oJ address@hidden address@hidden@QG\fi\fi\CD@@G2% address@hidden@@address@hidden@address@hidden@oF address@hidden@address@hidden 1\fi} address@hidden@\prevdepth address@hidden@address@hidden@@G address@hidden@x\else\setbox#1=#2\def#2{\xleaders\box#% address@hidden@BK{\string\HorizontalMap, \string\VerticalMap\space and address@hidden are obsolete - use address@hidden to pre-define maps}% address@hidden@nB{old horizontal address@hidden@TJ\def address@hidden@address@hidden@address@hidden@address@hidden@jD{#4}\def address@hidden@address@hidden@address@hidden address@hidden@address@hidden address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden@tD}% address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden@iD{% address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden@EG#1#2#3#4#5{\def address@hidden@address@hidden@CH address@hidden@address@hidden@ address@hidden@address@hidden@AD\else address@hidden@address@hidden@yD#1#2{\setbox#1=% address@hidden()address@hidden ASCII round brackets \setbox1=\null\ht1\ht0\dp1\dp0\box1 address@hidden@k\bgroup\labelstyle address@hidden@address@hidden@address@hidden@tD}\def address@hidden@address@hidden@mJ{%% qualifiers on label arguments \catcase\bgroup:address@hidden;\catcase\egroup:address@hidden;\catcase\space:address@hidden;% \tokcase[:address@hidden;%%]%ascii close square bracket \default:address@hidden;address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden@ZH address@hidden@address@hidden@VF#1% address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden@label address@hidden address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden text which has just been read is not allowed within map address@hidden@YA{missing address@hidden \space inserted after address@hidden@address@hidden@yD6}\def address@hidden@{\CD@@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden address@hidden@label\else\expandafter address@hidden@address@hidden as positional arguments are address@hidden@address@hidden@label\fi address@hidden@address@hidden@space{\afterassignment address@hidden@EH= address@hidden@address@hidden address@hidden address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden address@hidden@MI{}\def\CD@@E#1,address@hidden,address@hidden@RD address@hidden@address@hidden address@hidden@address@hidden@address@hidden address@hidden@address@hidden@name address@hidden @address@hidden address@hidden@gB{\string\relax\space inserted before address@hidden'}\message{(I was trying to read this as a address@hidden option.)address@hidden address@hidden@address@hidden@address@hidden@address@hidden address@hidden@H#1],{%% ASCII close square bracket address@hidden@address@hidden@address@hidden %% ASCII open and close square bracket address@hidden@GE,#1]}%% ASCII open and close square bracket address@hidden@address@hidden@address@hidden address@hidden' address@hidden@address@hidden@QK\fi\fi address@hidden@address@hidden@address@hidden@nH#1,address@hidden@address@hidden@e\else address@hidden@GK,#1,(,),(,)[]% %%ASCII 5commas two pairs round, pair square address@hidden@mH#1==,address@hidden@gB{option address@hidden' needs (x,y) address@hidden@address@hidden,address@hidden@GK{#2}% address@hidden@address@hidden@qK\fi}% %% ASCII 2commas 2pair round, pair square on next line address@hidden(#2,#3)#4,(#5,#6)address@hidden@RF{#1#4#5#6}% address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden address@hidden ' needs a address@hidden@address@hidden@qK#1#2% address@hidden@@showpair#1#2{\message{x=#1,y=#2}}\def \cds@@address@hidden@address@hidden@CH address@hidden@address@hidden@address@hidden@CH{cannot be used}\else\ifx address@hidden@address@hidden@address@hidden@address@hidden {PostScript translator `#1' address@hidden@address@hidden@PH{% address@hidden@name\space ignored within address@hidden address@hidden@address@hidden@address@hidden@sE address@hidden@address@hidden@address@hidden@address@hidden@address@hidden@address@hidden@iE address@hidden@address@hidden@address@hidden@address@hidden@address@hidden@address@hidden@tG address@hidden@address@hidden@address@hidden@address@hidden@address@hidden@address@hidden@tG address@hidden@address@hidden@address@hidden@address@hidden@RC{cds@ address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@3em}{% address@hidden@address@hidden@address@hidden@4em}{% address@hidden@address@hidden@address@hidden@5em}{% address@hidden@address@hidden@address@hidden@7em}{\CellSize7% address@hidden@address@hidden@address@hidden@ address@hidden@address@hidden@address@hidden address@hidden square brackets [] address@hidden@address@hidden@address@hidden@balance{% address@hidden@address@hidden@address@hidden@vcentre address@hidden@address@hidden@address@hidden@PJ address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@sC\def address@hidden@address@hidden@address@hidden@qK\def address@hidden@address@hidden@address@hidden@address@hidden@fE address@hidden@address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@BE{\wd3=}% \MapShortFall} address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden@address@hidden address@hidden grid address@hidden'address@hidden@grid\relax\let address@hidden@address@hidden@address@hidden@CH address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden@hcentre address@hidden@address@hidden@address@hidden@@address@hidden address@hidden@address@hidden@address@hidden@hmiddle address@hidden@address@hidden \DiagramCellHeight\DiagramCellWidth1.73205\DiagramCellHeight}\def address@hidden@BE\DiagramCellWidth\DiagramCellWidth address@hidden@address@hidden@address@hidden address@hidden@eE} address@hidden@address@hidden address@hidden@address@hidden@l>address@hidden@address@hidden address@hidden@address@hidden@kA}\def address@hidden@address@hidden@FJ{\refstepcounter{% address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden address@hidden@zD{\dimen1 address@hidden address@hidden@rightshortfall\fi}\def address@hidden@address@hidden@address@hidden@JA}\def address@hidden@address@hidden@@address@hidden address@hidden@address@hidden@address@hidden \def address@hidden@address@hidden@address@hidden address@hidden@@address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden `#1% ' renamed as `UglyObsolete'address@hidden@rK{noPostScript}}\def address@hidden@address@hidden@address@hidden address@hidden@address@hidden@origin{\let address@hidden@address@hidden@address@hidden@p\def address@hidden@zD\CD@@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@PS{% address@hidden@address@hidden@address@hidden: try the PostScript option for better address@hidden@address@hidden address@hidden@address@hidden@address@hidden@zD{% \dimen5 address@hidden@address@hidden@GG address@hidden@address@hidden@address@hidden address@hidden address@hidden@zD\MapShortFall\dimen1\MapShortFall\dimen5\MapShortFall}% address@hidden@address@hidden@address@hidden@KB##1{}% address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden@textflow{% address@hidden@address@hidden@address@hidden@address@hidden address@hidden@@address@hidden@address@hidden@NC}\CD@@J}% address@hidden@address@hidden@address@hidden@DK}\def address@hidden@rightshortfall\else address@hidden@address@hidden@address@hidden address@hidden@address@hidden \DiagramCellHeight\DiagramCellWidth.577035\DiagramCellHeight}\def address@hidden@BE\DiagramCellWidth\DiagramCellWidth address@hidden@address@hidden address@hidden@address@hidden@w\def\diagram{\relax address@hidden@address@hidden@address@hidden address@hidden@address@hidden@\boxmaxdepth\maxdimen address@hidden \relax\else\ifnum\pdfoutput>address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden@aC\else address@hidden@address@hidden@address@hidden@hK\else address@hidden ignored without address@hidden@EJ\setbox2=% address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden \global address@hidden@address@hidden@address@hidden@address@hidden@kF\else address@hidden@address@hidden@nE\setbox2=\hbox to\dp2{\vrule height% \wd2 address@hidden address@hidden@address@hidden@address@hidden@hK \pdfliteral{q 0 1 -1 0 0 0 address@hidden@IK{0 1 bturn}\fi\box2% address@hidden@address@hidden address@hidden@address@hidden address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@mC address@hidden@address@hidden address@hidden@address@hidden address@hidden@address@hidden@address@hidden@pI2 address@hidden address@hidden@address@hidden@address@hidden>% address@hidden@kF\dimen2 address@hidden@kI\dimen0 address@hidden \fi address@hidden@\relax\loop\skip1\lastskip\ifdim\skip1>address@hidden \advance\skip0\skip1 \repeat\vadjust{\prevdepth\dp\strutbox\penalty address@hidden address@hidden address@hidden address@hidden@address@hidden@address@hidden address@hidden address@hidden@address@hidden@address@hidden address@hidden@address@hidden@k address@hidden@address@hidden@address@hidden address@hidden \fi\dimen 0\wd2 \advance\dimen0\wd1 \advance\dimen0-\hsize\ifdim\dimen0>address@hidden@HA address@hidden>address@hidden@KB{wider than the page by \the \dimen0 address@hidden@address@hidden@address@hidden@GI\hss\kern-\wd1\box 1 address@hidden@AF\CD@@address@hidden@address@hidden }% address@hidden@address@hidden@address@hidden@cJ\ifdim\DiagramCellHeight=-\maxdimen address@hidden address@hidden@address@hidden@address@hidden@Q address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden address@hidden@address@hidden@ address@hidden@VD{\penalty-123 address@hidden@K\halign address@hidden address@hidden@address@hidden@j#% address@hidden@address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden address@hidden@i address@hidden@address@hidden@tJ\hskip1sp plus 1fil address@hidden address@hidden@address@hidden@address@hidden@MD\relax address@hidden@address@hidden@iA\penalty-9993 address@hidden@QA address@hidden \global\advance address@hidden@address@hidden@sF\ifnum\mscount>2 address@hidden address@hidden@address@hidden address@hidden@address@hidden@fillh\ifdim\dimen3>address@hidden \dimen2>93\CD@@I\ifdim\dimen2>address@hidden@LF>address@hidden@address@hidden address@hidden@ne\ifnum\count@address@hidden@address@hidden@V address@hidden@Y{\begingroup address@hidden address@hidden \else\dimen5% \dimen6 \dimen6\dimen9 address@hidden address@hidden \dimen7\dimen8 address@hidden@iC{\dimen2}\ifdim\dimen2<\dimen4 \kern\dimen2 \else \kern\dimen4 address@hidden@address@hidden \axisheight\hbox address@hidden@MH\dimen9% address@hidden \dimen9\dimen1 \fi\else\dimen8 \ifPositiveGradient address@hidden address@hidden@address@hidden \dimen8\dp3 \dimen9\dimen0 address@hidden@mF\fi\else\dimen8 address@hidden \dimen8 address@hidden@bD{\dimen6 address@hidden address@hidden@jJ address@hidden address@hidden address@hidden@address@hidden \setbox0=\rlap{\kern-\dimen7 address@hidden@address@hidden \axisheight\box0 address@hidden@address@hidden@address@hidden@address@hidden@hK \expandafter\pdfliteral{q address@hidden@address@hidden@eK\space0 0 address@hidden@address@hidden address@hidden address@hidden@address@hidden@address@hidden@wJ address@hidden@address@hidden@address@hidden4 address@hidden@address@hidden address@hidden@address@hidden@address@hidden@lI\ifnum address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@wA address@hidden@VA\dimen1 address@hidden@address@hidden@address@hidden@zI{% address@hiddenaddress@hidden@KB{The diagram has too many rows! It can't be address@hidden@address@hidden@NG{% address@hidden@address@hidden@NBaddress@hidden@address@hidden address@hidden@shouldnt D% address@hidden@address@hidden@address@hidden@VJ address@hidden@address@hidden@address@hidden@address@hidden@LJ address@hidden@address@hidden@address@hidden@address@hidden@KE{% address@hidden@address@hidden@vA\lastpenalty address@hidden@address@hidden \advance\skip0\skip1 address@hidden@address@hidden address@hidden address@hidden@address@hidden@address@hidden address@hidden@address@hidden>address@hidden@address@hidden@NF\advance address@hidden@address@hidden address@hidden@address@hidden@NB address@hidden@address@hidden@address@hidden address@hidden address@hiddenaddress@hidden address@hidden address@hidden@address@hidden@address@hidden@ address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden address@hidden address@hidden f% address@hidden@address@hidden@address@hidden@address@hidden@address@hidden@address@hidden@address@hidden@uB\z@ address@hidden@NB>address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@ZE address@hidden@address@hidden@LB address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden@kI\advance \dimen2-\dimen0 address@hidden@address@hidden@address@hidden address@hidden address@hidden@>24134 \loop\iftrue \message{gone February address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden@address@hidden@lA address@hidden@address@hidden@address@hidden@address@hidden@address@hidden@sF address@hidden>address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden@pI}% address@hidden>address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden cell #% 3 to \the\count@ address@hidden@address@hidden \noindent\unhbox address@hidden@sF\unskip\setbox0=\lastbox\ifhbox0 address@hidden@address@hidden \hbox address@hidden@FA\advance address@hidden@address@hidden@address@hiddenaddress@hidden@vA address@hidden address@hidden address@hidden@address@hidden address@hidden@address@hiddenaddress@hidden@address@hidden address@hidden@address@hidden@address@hidden@NF address@hidden@address@hidden@OA\dimen0 address@hidden address@hidden>address@hidden drawn diagonals (see manual)address@hidden@address@hidden@address@hidden address@hidden@VAaddress@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden@mF address@hidden@address@hidden@address@hidden@address@hidden address@hidden@\rightskip\z@ plus1fil address@hidden 9000 \looseness0 \hfuzz\maxdimen\hbadness10000 \clubpenalty0 \widowpenalty0 \displaywidowpenalty0 \interlinepenalty0 \predisplaypenalty0 \postdisplaypenalty0 \interdisplaylinepenalty0 \interfootnotelinepenalty0 \floatingpenalty0 \brokenpenalty0 address@hidden@ address@hidden \tolerance10000 \hyphenpenalty10000 \exhyphenpenalty10000 \binoppenalty10000 \relpenalty10000 \adjdemerits0 \doublehyphendemerits0 \finalhyphendemerits0 address@hidden@}\newbox address@hidden@address@hidden@address@hidden@IG}\def address@hidden@PI{\penalty5 \noindent\setbox address@hidden@address@hidden@address@hidden@FAaddress@hidden@address@hidden address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden \expandafter\message{% prevgraf=\the\prevgraf at (address@hidden,address@hidden)address@hidden@CE\setbox address@hidden@address@hidden address@hidden>address@hidden@address@hidden@lI>\dp address@hidden@address@hidden@address@hidden@mF.5\wd address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden@A>0 \advance address@hidden@iA-.5\dimen0 address@hidden@address@hidden address@hidden@\fi\setbox address@hidden@address@hidden address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden@tI\dp address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden address@hidden address@hidden address@hidden@address@hidden@address@hidden address@hidden@address@hidden@yA address@hidden address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden address@hidden \lastpenalty=8 address@hidden@address@hidden@lF\unskip address@hidden@address@hidden@xH\fi address@hidden@address@hidden@KB{extra material in \string\pile \space cell (lost)address@hidden@address@hidden@KB{Clashing horizontal address@hidden@address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden>address@hidden@address@hidden address@hidden<1 address@hidden address@hidden@A1 address@hidden@LF}}% address@hidden@address@hidden address@hidden@address@hidden@GB-999#2 address@hidden address@hidden@address@hidden@CF address@hidden@address@hidden@address@hidden address@hidden \ht0 address@hidden address@hidden@address@hidden@sI\wd0=% \dimen0 address@hidden address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden@DA=\lastbox}\ht address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden address@hidden@address@hidden/address@hidden@ND\fi}% address@hidden@address@hidden@address@hidden@char#1{% address@hidden@64 address@hidden address@hidden@address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@gF\or address@hidden@address@hidden@address@hidden@address@hidden \else address@hidden@address@hidden@@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@TC address@hidden address@hidden@TC66\or27\or25\or67\or22\fi\fi address@hidden@address@hidden \else\raise.3\ht0\fi\copy0 \kern-.7\wd0 \ifPositiveGradient\raise.3\ht0\fi address@hidden \vbox to.25\ht0{% \ifPositiveGradient\else\vss\fi\box0 address@hidden 1{\hbox{\setbox0=#1\dimen0=\wd0 \vbox to.25\ht0{\ifPositiveGradient\vss\fi \box0 \ifPositiveGradient\else\vss\fi}\kern-.75\dimen0 address@hidden:>}{% address@hidden@address@hidden@RC{-h:>address@hidden@address@hidden@nF{+t:<}{-h:>}% address@hidden:<}{+h:>address@hidden:>address@hidden@address@hidden@address@hidden:>}{% address@hidden@address@hidden@address@hidden:<}{-t:>address@hidden:<}{+t:>address@hidden:>>% address@hidden@address@hidden:>>address@hidden@address@hidden:<<}{-h:>>address@hidden:<<}{+% h:>>address@hidden:>->}{+h:>>address@hidden:>->}{-h:>>address@hidden:<-<}{-h:>>address@hidden :<-<}{+h:>>address@hidden:>>address@hidden@address@hidden@RC{-t:>>address@hidden@uC address@hidden@nF{+h:<<}{-t:>>address@hidden:<<}{+t:>>address@hidden:>->}{+t:>>address@hidden t:>->}{-t:>>address@hidden:<-<}{-t:>>address@hidden:<-<}{+t:>>address@hidden:address@hidden address@hidden@nF{-f:-}{+f:address@hidden to#1{\vss\hbox to#% address@hidden %% % .7em until 29.7.98 address@hidden@}%% % 1.46ex until 29.7.98 address@hidden@zC\dimen1\dimen0 address@hidden>address@hidden@iC{% address@hidden@tC{\dimen0}{\dimen1}}}\newarrowfiller{.}% address@hidden@address@hidden:address@hidden :.}{\dfdot}\def\CD@@address@hidden address@hidden address@hidden@@address@hidden \CD@@address@hidden to.3\wd2{\hss.\hss }\dimen0=\ht0 \advance\dimen0-\dp0 \dimen1=.3\ht2 \advance\dimen1-\dimen0 \dp 0=.5\dimen1 \dimen1=.3\ht2 \advance\dimen1\dimen0 \ht0=.5\dimen1 \raise\dp0% \box0}\def\lahh{\CD@@K\xlahh}\def\lat{\CD@@K\xlat}\def\xlat{\setbox0=\hbox{% address@hidden \setbox1=\hbox to.25\wd0{\ifcase\DiagonalChoice\box0\hss \or\hss\box0 \or\hss\box0 \or\box0\hss\fi}\vbox to.25\dimen0{\ifClimbing\box1% address@hidden@qF}% address@hidden \kern-.7\wd0 \mv.3\ht0\box0 \else\ifClimbing address@hidden \kern-.7\wd0 \mv.3\ht0\box0 \else\mv-.3\ht0\copy0 \kern-.7\wd0 \box0 address@hidden \setbox8=\box#1 \dimen1\wd8 address@hidden address@hidden address@hidden \box8 \ifdim \dimen5<.95\dimen1 address@hidden line too short}\fi\else\dimen3=\dimen5 \advance\dimen3-\dimen1 address@hidden address@hidden address@hidden \advance\dimen6-% \dimen3 address@hidden \ifnum\count@>0 \kern-\dimen6 \advance address@hidden@address@hidden@address@hidden@dF{#1}\fi}\def address@hidden \newdimen\objectwidth \objectwidth1em address@hidden@address@hidden address@hidden@LH>0 address@hidden>0 address@hidden address@hidden@address@hidden@YA{diagonal map is nearly address@hidden@address@hidden map is nearly address@hidden address@hidden@NA{Use an orthogonal map address@hidden@MJ\dimen3\dimen7% address@hidden address@hidden@LH>% address@hidden address@hidden@iC{% address@hidden \dimen6-\dimen0 \fi\dimen2.5\dimen7\advance\dimen2-\dimen1 \dimen4.5\dimen7% \advance\dimen4-\dimen5 \ifPositiveGradient\dimen0\dimen5 \advance\dimen1-% address@hidden address@hidden \unhbox6\kern.1\ht2}\setbox7=\rlap{\kern.1\ht2\unhbox7}\else\dimen0\dimen1 address@hidden \setbox6=\rlap{\kern.1\ht2\unhbox6}\fi\setbox6=\vbox{\box6\kern.1\wd2}\setbox address@hidden address@hidden \advance\dimen0\dimen6 \advance\dimen1.5\dimen3 \ifdim\wd3>address@hidden>address@hidden \dimen2 \dimen7\dimen2\advance\dimen7\dimen4 \ifvoid3 address@hidden address@hidden@X{\dimen8}{.5\wd3}\dimen9% address@hidden@X{\dimen9}{.5\wd3}% \ifPositiveGradient\advance\dimen2-\dimen9\advance\dimen4-\dimen8 \else \advance\dimen4-\dimen9\advance\dimen2-\dimen8 \fi\fi\advance\dimen3-.5\wd3 address@hidden@tE \advance\dimen2\dimen4 address@hidden \else address@hidden@CG{4}\ifPositiveGradient\dimen2-\dimen0\advance\dimen2\dp2 \dimen 4\dimen5\advance\dimen4-\ht4 \else\dimen4-\dimen0\advance\dimen4\dp4 \dimen2% \dimen5\advance\dimen2-\ht2 \fi\fi\setbox0=\hbox address@hidden \ifvoid1 \else\ifPositiveGradient\advance\dimen0-\dp1 \lower\dimen0 \else\advance \dimen5-\ht1 \raise\dimen5 \fi\rlap{\unhbox1}\fi\raise\dimen2\rlap{\unhbox2}% \ifvoid3 \else\lower.5\dimen9\rlap{\kern\dimen3\unhbox3}\fi\kern.5\dimen7 \lower.5\dimen9\box6 \lower.5\dimen9\box7 \kern.5\dimen7 address@hidden \dimen4\llap{\unhbox4}\fi\ifvoid5 \else\ifPositiveGradient\advance\dimen5-\ht 5 \raise\dimen5 \else\advance\dimen0-\dp5 \lower\dimen0 \fi\llap{\unhbox5}\fi \hss}\ht0=\axisheight\dp0=-\ht0\box0 address@hidden@rB \DiagonalChoice0 address@hidden@rB\DiagonalChoice1 }\def\SouthWest address@hidden@qB\DiagonalChoice3 address@hidden@qB\DiagonalChoice2 }% address@hidden@address@hidden@uA\ifPositiveGradient\else-\fi address@hidden@address@hidden@address@hidden@uA address@hidden@address@hidden address@hidden address@hidden \box7 address@hidden@address@hidden@uA address@hidden@address@hidden address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden address@hidden@address@hidden address@hidden address@hiddenaddress@hidden address@hidden@address@hidden@address@hidden 1\dimen6\wd1\dimen7 \dimen7\dimen2 \dimen6\wd1 address@hidden@address@hidden@address@hidden \dimen6\ht1 address@hidden@address@hidden@eG{% \dimen2}\wd2\dimen2 \dimen0.5\dimen7 \advance\dimen0\ifPositiveGradient\else-% address@hidden@dG{\dimen0}\advance\dimen0-\axisheight\ht2\dimen0 address@hidden address@hidden \dimen0\ifPositiveGradient-\fi address@hidden@dG{\dimen0}\advance\dimen0\wd2\wd2\dimen0 \setbox4\null\dimen0 .6% address@hidden@eG{\dimen0}\ht4\dimen0 \dimen0 address@hidden@dG{\dimen0}\wd4\dimen0 \dimen0\wd2 \ifvoid6\else\dimen1\ht4 \advance\dimen1\ht2 address@hidden \dimen1\rlap{\ifPositiveGradient\advance\dimen0-\wd6\advance\dimen0-\wd4 \else \advance\dimen0\wd4 \fi\kern\dimen0\box6}\fi\dimen0\wd2 \ifvoid7\else\dimen1% \ht4 \advance\dimen1-\ht2 address@hidden \advance\dimen0\wd4 \else\advance\dimen0-\wd7\advance\dimen0-\wd4 \fi\kern address@hidden@address@hidden@address@hidden@}{% address@hidden \ifdim\dimen4>.25\dimen7\dimen4=% .25\dimen7\fi\ifdim\dimen4>address@hidden address@hidden address@hidden@dG{\dimen5}\advance\dimen4-\dimen5 \dimen address@hidden address@hidden } address@hidden@IK{#1}}% address@hidden@EK{output is PostScript address@hidden@IK{/bturn {gsave currentpoint currentpoint translate 4 2 roll neg exch atan rotate neg exch neg exch translate } def /eturn {currentpoint grestore moveto} address@hidden address@hidden@IK{eturn}\fi} address@hidden@#1\relax address@hidden@address@hidden address@hidden \expandafter\special{#1}} address@hidden@dG{% address@hidden@address@hidden \dimen0 \else\dp0\dimen0 \fi\box0 address@hidden@address@hidden@address@hidden \the address@hidden@fD{pa 0 address@hidden@fD{pa address@hidden@uA}% address@hidden@address@hidden<\dimen6 \dimen2=\dimen6 \dimen6=\dimen7 \dimen7=\dimen2 address@hidden@address@hidden@TC address@hidden@\else\dimen2=\dimen7 \fi\ifdim\dimen6>address@hidden@address@hidden \dimen0 address@hidden address@hidden@address@hidden address@hidden@kK{\ifPositiveGradient-\fi address@hidden@address@hidden@hJ\ifdim\dimen7>1.73\dimen6 \divide\dimen2 4 address@hidden \else\dimen2=0.353553\dimen2 address@hidden address@hidden@TC4 \fi\dimen0=4\dimen2 address@hidden@address@hidden@ZG{-2% address@hidden@\dimen0 \dimen2 45pt address@hidden \ifdim\dimen0\dimen8 \CD@@address@hidden>% address@hidden \dimen6\dimen7 \dimen7\dimen9 \expandafter\expandafter address@hidden@@address@hidden<2\dimen8 \dimen0\dimen8 \fi\else\advance\dimen8-\dimen4 \divide\dimen8\dimen0 \ifdim address@hidden@XH<2\dimen8 address@hidden \dimen9\dimen4 \advance\dimen9\count@ \dimen0 address@hidden@AC{\dimen4\dimen0 \dimen0\dimen9 \advance\dimen2% address@hidden \dimen9\dimen2 \dimen2\dimen3 \dimen3\dimen9 address@hidden address@hidden #1\dimen2 address@hidden@TC address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@iK#1#2{% address@hidden<.4\maxdimen\multiply\dimen2\tw@ address@hidden@address@hidden@\dimen2\relax address@hidden@address@hidden@address@hidden \catcode\lq p=12 \catcode\lq0=12 \catcode\lq.=12 \catcode\lq t=12 address@hidden address@hidden@address@hidden@GH\relax\else address@hidden@ne}\fi\ifnum\inputlineno<0 address@hidden address@hidden@address@hidden@address@hidden \relax\message{! Why not upgrade to TeX version 3? (available since 1990)}% address@hidden at line address@hidden - first occurred}\def address@hidden@address@hidden@address@hidden address@hidden@address@hidden@address@hidden@h<% address@hidden at lines address@hidden address@hidden@address@hidden@address@hidden address@hidden: address@hidden \message{! address@hidden: address@hidden@XB>address@hidden@CA>address@hidden address@hidden>address@hidden@LB>address@hidden@address@hidden@FA-% address@hidden@FA1\relax\expandafter\message{! (error detected at row \the address@hidden, column address@hidden, but probably caused elsewhere)}\fi\fi\fi\fi address@hidden@tA\space Warning: address@hidden address@hidden@gB{#1 \string#2 is address@hidden@address@hidden address@hidden@address@hidden@address@hidden@@address@hidden address@hidden@address@hidden@address@hidden address@hidden@AB\VerticalMapHeight}% address@hidden address@hidden@AB \VerticalMapExtraDepth}\def\DiagonalLineSegments{\CD@@B\DiagonalLineSegments}% address@hidden@address@hidden diagonal line and arrow font not address@hidden@aG#1#2<#3:#4:address@hidden address@hidden} as {xxx} where xxx %% has been defined by \newarrowhead{xxx} and \newarrowtail{xxx} %% vee head \def\rhvee{\mkern-10mu\greaterthan}%% \def\lhvee{\lessthan\mkern-10mu}%% \def\dhvee{\vboxtoz{\vss\hbox{$\vee$}\kern0pt}}%% \def\uhvee{\vboxtoz{\hbox{$\wedge$}\vss}}%% \newarrowhead{vee}\rhvee\lhvee\dhvee\uhvee %% little vee head \def\dhlvee{\vboxtoz{\vss\hbox{$\scriptstyle\vee$}\kern0pt}}%% \def\uhlvee{\vboxtoz{\hbox{$\scriptstyle\wedge$}\vss}}%% \newarrowhead{littlevee}{\mkern1mu\scriptaxis\rhvee}{\scriptaxis\lhvee}% address@hidden \newarrowhead{boldlittlevee}{\mkern1mu\scriptaxis\rhvee}{\scriptaxis\lhvee}% \dhlvee\uhlvee\else%% \def\dhblvee{\vboxtoz{\vss\boldscript\vee\kern0pt}}%% \def\uhblvee{\vboxtoz{\boldscript\wedge\vss}}%% \newarrowhead{boldlittlevee}{\mkern1mu\boldscriptaxis\rhvee}{\boldscriptaxis \lhvee}\dhblvee\uhblvee%% \fi %% curly vee head (uses AMS symbols fonts) \def\rhcvee{\mkern-10mu\succ}%% \def\lhcvee{\prec\mkern-10mu}%% \def\dhcvee{\vboxtoz{\vss\hbox{$\curlyvee$}\kern0pt}}%% \def\uhcvee{\vboxtoz{\hbox{$\curlywedge$}\vss}}%% \newarrowhead{curlyvee}\rhcvee\lhcvee\dhcvee\uhcvee %% double vee head %% will probably be withdrawn later \def\rhvvee{\mkern-13mu\gg}%% 24.8.92 changed 10mu to 13mu \def\lhvvee{\ll\mkern-13mu}%% to make rule go through \def\dhvvee{\vboxtoz{\vss\hbox{$\vee$}\kern-.6ex\hbox{$\vee$}\kern0pt}}%% \def\uhvvee{\vboxtoz{\hbox{$\wedge$}\kern-.6ex \hbox{$\wedge$}\vss}}%% \newarrowhead{doublevee}\rhvvee\lhvvee\dhvvee\uhvvee %% open and closed triangles (uses AMS symbols fonts) \def\triangleup{{\scriptscriptstyle\bigtriangleup}}%% \def\littletriangledown{{\scriptscriptstyle\triangledown}}%% AMS \def\rhtriangle{\triangleright\mkern1.2mu}%% 29.1.93 \def\lhtriangle{\triangleleft\mkern.8mu}%% \def\uhtriangle{\vbox{\kern-.2ex \hbox{$\scriptscriptstyle\bigtriangleup$}% \kern-.25ex}}%% %% Changed \scriptstyle\triangledown to \scriptscriptstyle\bigtriangledown %% at the suggestion of Martin Hofmann (25.11.92) to avoid using AMS symbols %% and also for compatibility with upward arrow. \def\dhtriangle{\vbox{\kern-.28ex \hbox{$\scriptscriptstyle\bigtriangledown$}% \kern-.1ex}}%% 15.1.93 from -.25ex \def\dhblack{\vbox{\kern-.25ex\nointerlineskip\hbox{$\blacktriangledown$}}}% %% AMS \def\uhblack{\vbox{\kern-.25ex\nointerlineskip\hbox{$\blacktriangle$}}}% %% AMS \def\dhlblack{\vbox{\kern-.25ex\nointerlineskip\hbox{$\scriptstyle \blacktriangledown$}}}%% AMS \def\uhlblack{\vbox{\kern-.25ex\nointerlineskip\hbox{$\scriptstyle \blacktriangle$}}}%% AMS \newarrowhead{triangle}\rhtriangle\lhtriangle\dhtriangle\uhtriangle \newarrowhead{blacktriangle}{\mkern-1mu\blacktriangleright\mkern.4mu}{% \blacktriangleleft}\dhblack\uhblack\newarrowhead{littleblack}{\mkern-1mu% \scriptaxis\blacktriangleright}{\scriptaxis\blacktriangleleft\mkern-2mu}% \dhlblack\uhlblack %% LaTeX arrowheads address@hidden \axisheight\box0\kern.1\dimen0}}%% address@hidden \axisheight\box0\kern-.5\dimen0}}%% \def\dhla{\vboxtoz{\vss\rlap{\lnchar77}}}%% \def\uhla{\vboxtoz{\setbox0=\lnchar66 address@hidden 1/93 \newarrowhead{LaTeX}\rhla\lhla\dhla\uhla %% double LaTeX arrowheads %% will probably be withdrawn later \def\lhlala{\lhla\kern.3em\lhla}%% \def\rhlala{\rhla\kern.3em\rhla}%% \def\uhlala{\hbox{\uhla\raise-.6ex\uhla}}%% \def\dhlala{\hbox{\dhla\lower-.6ex\dhla}}%% \newarrowhead{doubleLaTeX}\rhlala\lhlala\dhlala\uhlala %% circles % \rho is a Greek letter! \def\hhO{\scriptaxis\bigcirc\mkern.4mu} \def\hho{{\circ}\mkern1.2mu}% \newarrowhead{o}\hho\hho\circ\circ%% \newarrowhead{O}\hhO\hhO{\scriptstyle\bigcirc}{\scriptstyle\bigcirc}%% %% crosses \def\rhtimes{\mkern-5mu{\times}\mkern-.8mu}\def\lhtimes{\mkern-.8mu{\times}% \mkern-5mu}\def\uhtimes{\setbox0=\hbox{$\times$}\ht0\axisheight\dp0-\ht0% \lower\ht0\box0 }\def\dhtimes{\setbox0=\hbox{$\times$}\ht0\axisheight\box0 }% \newarrowhead{X}\rhtimes\lhtimes\dhtimes\uhtimes\newarrowhead+++++ %% empty head {} is also available %% Y from stmaryrd (vertical ones still need large adjustment) \newarrowhead{Y}{\mkern-3mu\Yright}{\Yleft\mkern-3mu}\Ydown\Yup %% ********** H E A D S with S H A F T S *********** %% little arrow with shaft \newarrowhead{->}\rightarrow\leftarrow\downarrow\uparrow %% arrow with double shaft %%\newarrowhead{=>}\Rightarrow\Leftarrow\Downarrow\Uparrow \newarrowhead{=>address@hidden@cmex7E} %% harpoon with shaft (trailing up/left can be changed to down/right) \newarrowhead{harpoon}\rightharpoonup\leftharpoonup\downharpoonleft \upharpoonleft %% little double-headed arrow with shaft (uses AMS symbols fonts) \def\twoheaddownarrow{\rlap{$\downarrow$}\raise-.5ex\hbox{$\downarrow$}}%% \def\twoheaduparrow{\rlap{$\uparrow$}\raise.5ex\hbox{$\uparrow$}}%% \newarrowhead{->>}\twoheadrightarrow\twoheadleftarrow\twoheaddownarrow \twoheaduparrow %% ********** T A I L S *********** %% vee tail \def\rtvee{\greaterthan}%% \def\ltvee{\mkern-1mu{\lessthan}\mkern.4mu}%% \mkern added 15.1.93 \def\dtvee{\vee}%% \def\utvee{\wedge}%% \newarrowtail{vee}\greaterthan\ltvee\vee\wedge %% little vee tail \newarrowtail{littlevee}{\scriptaxis\greaterthan}{\mkern-1mu\scriptaxis address@hidden \newarrowtail{boldlittlevee}{\scriptaxis\greaterthan}{\mkern-1mu\scriptaxis \lessthan}{\scriptstyle\vee}{\scriptstyle\wedge}\else\newarrowtail{% boldlittlevee}{\boldscriptaxis\greaterthan}{\mkern-1mu\boldscriptaxis \lessthan}{\boldscript\vee}{\boldscript\wedge}\fi %% curly vee tail (uses AMS symbols fonts) \newarrowtail{curlyvee}\succ{\mkern-1mu{\prec}\mkern.4mu}\curlyvee\curlywedge %% open and closed triangle tails (uses AMS symbols fonts) \def\rttriangle{\mkern1.2mu\triangleright}%% 29.1.93 \newarrowtail{triangle}\rttriangle\lhtriangle\dhtriangle\uhtriangle \newarrowtail{blacktriangle}\blacktriangleright{\mkern-1mu\blacktriangleleft \mkern.4mu}\dhblack\uhblack\newarrowtail{littleblack}{\scriptaxis \blacktriangleright\mkern-2mu}{\mkern-1mu\scriptaxis\blacktriangleleft}% \dhlblack\uhlblack %% LaTeX tails address@hidden \axisheight\box0\kern-.2\dimen0}}%% address@hidden \axisheight\box0\kern-.5\dimen0}}%% \def\dtla{\vbox{\setbox0=\rlap{\lnchar77}\dimen0=\ht0\kern-.7\dimen0\box0% \kern-.1\dimen0}}%% 15.1.93 from -.6 \def\utla{\vbox{\setbox0=\rlap{\lnchar66}\dimen0=\ht0\kern-.1\dimen0\box0% \kern-.6\dimen0}}%% \newarrowtail{LaTeX}\rtla\ltla\dtla\utla %% double vee tail %% will probably be withdrawn later \def\rtvvee{\gg\mkern-3mu}%% \def\ltvvee{\mkern-3mu\ll}%% \def\dtvvee{\vbox{\hbox{$\vee$}\kern-.6ex \hbox{$\vee$}\vss}}%% \def\utvvee{\vbox{\vss\hbox{$\wedge$}\kern-.6ex address@hidden \newarrowtail{doublevee}\rtvvee\ltvvee\dtvvee\utvvee %% double LaTeX tails %% will probably be withdrawn later \def\ltlala{\ltla\kern.3em\ltla}%% \def\rtlala{\rtla\kern.3em\rtla}%% \def\utlala{\hbox{\utla\raise-.6ex\utla}}%% \def\dtlala{\hbox{\dtla\lower-.6ex\dtla}}%% \newarrowtail{doubleLaTeX}\rtlala\ltlala\dtlala\utlala %% bar (as in \mapsto) \def\utbar{\vrule height 0.093ex depth0pt width 0.4em}%% \let\dtbar\utbar%% \def\rtbar{\mkern1.5mu\vrule height 1.1ex depth.06ex width .04em\mkern1.5mu}% %% \let\ltbar\rtbar%% \newarrowtail{mapsto}\rtbar\ltbar\dtbar\utbar%% \newarrowtail{|}\rtbar\ltbar\dtbar\utbar%%ascii vertical bar (|) %% hooks (as in \into): choice of after/above and before/below \def\rthooka{\raisehook{}+\subset\mkern-1mu}%% \def\lthooka{\mkern-1mu\raisehook{}+\supset}%% \def\rthookb{\raisehook{}-\subset\mkern-2mu}%% \def\lthookb{\mkern-1mu\raisehook{}-\supset}%% \def\dthooka{\shifthook{}+\cap}%% \def\dthookb{\shifthook{}-\cap}%% \def\uthooka{\shifthook{}+\cup}%% \def\uthookb{\shifthook{}-\cup}%% \newarrowtail{hooka}\rthooka\lthooka\dthooka\uthooka\newarrowtail{hookb}% \rthookb\lthookb\dthookb\uthookb address@hidden \newarrowtail{boldhookb}\rthookb\lthookb\dthookb\uthookb\newarrowtail{% boldhook}\rthooka\lthooka\dthookb\uthooka\else\def\rtbhooka{\raisehook \boldmath+\subset\mkern-1mu}%% \def\ltbhooka{\mkern-1mu\raisehook\boldmath+\supset}%% \def\rtbhookb{\raisehook\boldmath-\subset\mkern-2mu}%% \def\ltbhookb{\mkern-1mu\raisehook\boldmath-\supset}%% \def\dtbhooka{\shifthook\boldmath+\cap}%% \def\dtbhookb{\shifthook\boldmath-\cap}%% \def\utbhooka{\shifthook\boldmath+\cup}%% \def\utbhookb{\shifthook\boldmath-\cup}%% \newarrowtail{boldhooka}\rtbhooka\ltbhooka\dtbhooka\utbhooka\newarrowtail{% boldhookb}\rtbhookb\ltbhookb\dtbhookb\utbhookb\newarrowtail{boldhook}% \rtbhooka\ltbhooka\dtbhooka\utbhooka\fi %% square-ended hooks (used for closed subsets in ``lifting and gluing'') \def\dtsqhooka{\shifthook{}+\sqcap}%% \def\dtsqhookb{\shifthook{}-\sqcap}%% \def\ltsqhooka{\mkern-1mu\raisehook{}+\sqsupset}%% \def\ltsqhookb{\mkern-1mu\raisehook{}-\sqsupset}%% \def\rtsqhooka{\raisehook{}+\sqsubset\mkern-1mu}%% \def\rtsqhookb{\raisehook{}-\sqsubset\mkern-2mu}%% \def\utsqhooka{\shifthook{}+\sqcup}%% \def\utsqhookb{\shifthook{}-\sqcup}%% \newarrowtail{sqhook}\rtsqhooka\ltsqhooka\dtsqhooka\utsqhooka %% the following seem the better choices at 10pt & 300dpi \newarrowtail{hook}\rthooka\lthookb\dthooka\uthooka\newarrowtail{C}\rthooka \lthookb\dthooka\uthooka %% circles \newarrowtail{o}\hho\hho\circ\circ%% \newarrowtail{O}\hhO\hhO{\scriptstyle\bigcirc}{\scriptstyle\bigcirc}%% %% crosses \newarrowtail{X}\lhtimes\rhtimes\uhtimes\dhtimes\newarrowtail+++++ %% empty tail {} is also available %% Y from stmaryrd (vertical ones still need adjustment) \newarrowtail{Y}\Yright\Yleft\Ydown\Yup %% harpoon with shaft (trailing up/left can be changed to down/right) \newarrowtail{harpoon}\leftharpoondown\rightharpoondown\upharpoonright \downharpoonright %% ********** F I L L E R S *********** %% shortening is up to 0.15em=2.7mu horiz and 0.35ex vertically at each end. %% dot {.}, single rule {-} and empty {} fillers are also available %% double and triple lines %%\newarrowfiller{=}==\Vert\Vert%% address@hidden@cmex77}%% 16.1.93 \def\vfthree{\mid\!\!\!\mid\!\!\!\mid}%%ascii \newarrowfiller{3}\equiv\equiv\vfthree\vfthree %% dashed line \def\vfdashstrut{\vrule width0pt height1.3ex depth0.7ex}%% \def\vfthedash{\vrule address@hidden height0.6ex depth 0pt}%% address@hidden width 0.26em}%% \def\hfdash{\mkern5.5mu\hfthedash\mkern5.5mu}%% \def\vfdash{\vfdashstrut\vfthedash}%% \newarrowfiller{dash}\hfdash\hfdash\vfdash\vfdash %% ************* M I D D L E S ************ %% plus \newarrowmiddle+++++ %% ************* D I A G O N A L S ************ %% simple arrow heads %%\def\nwhTO{\nwarrow\mkern-1mu}%% %%\def\nehTO{\mkern-.1mu\nearrow}%% %%\def\sehTO{\searrow\mkern-.02mu}%% %%\def\swhTO{\mkern-.8mu\swarrow}%% %%======================================================================% %% % %% (24) ARROW COMMANDS % %% % %%======================================================================% %% change to \iftrue to get mixed heads \iffalse%% \newarrow{To}----{vee}%% \newarrow{Arr}----{LaTeX}%% \newarrow{Dotsto}....{vee}%% \newarrow{Dotsarr}....{LaTeX}%% \newarrow{Dashto}{}{dash}{}{dash}{vee}%% \newarrow{Dasharr}{}{dash}{}{dash}{LaTeX}%% \newarrow{Mapsto}{mapsto}---{vee}%% \newarrow{Mapsarr}{mapsto}---{LaTeX}%% \newarrow{IntoA}{hooka}---{vee}%% \newarrow{IntoB}{hookb}---{vee}%% \newarrow{Embed}{vee}---{vee}%% \newarrow{Emarr}{LaTeX}---{LaTeX}%% \newarrow{Onto}----{doublevee}%% \newarrow{Dotsonarr}....{doubleLaTeX}%% \newarrow{Dotsonto}....{doublevee}%% \newarrow{Dotsonarr}....{doubleLaTeX}%% \else%% \newarrow{To}---->%% \newarrow{Arr}---->%% \newarrow{Dotsto}....>%% \newarrow{Dotsarr}....>%% \newarrow{Dashto}{}{dash}{}{dash}>%% \newarrow{Dasharr}{}{dash}{}{dash}>%% \newarrow{Mapsto}{mapsto}--->%% \newarrow{Mapsarr}{mapsto}--->%% \newarrow{IntoA}{hooka}--->%% \newarrow{IntoB}{hookb}--->%% \newarrow{Embed}>--->%% \newarrow{Emarr}>--->%% \newarrow{Onto}----{>>}%% \newarrow{Dotsonarr}....{>>}%% \newarrow{Dotsonto}....{>>}%% \newarrow{Dotsonarr}....{>>}%% \fi%% \newarrow{Implies}===={=>}%% minimum cell height 9.5pt \newarrow{Project}----{triangle}%% \newarrow{Pto}----{harpoon}%% partial function \newarrow{Relto}{harpoon}---{harpoon}%% binary relation \newarrow{Eq}=====%% \newarrow{Line}-----%% \newarrow{Dots}.....%% \newarrow{Dashes}{}{dash}{}{dash}{}%% %% square hooked arrow (used in my ``gluing and lifting'' paper) \newarrow{SquareInto}{sqhook}---> %% braces and parentheses %% \newarrow gives inappropriate directions, so we change the names %% the vertical filler is too far to the right; horizontal too high %% the vertical middles are too low with midvshaft %% maybe we'll add square brackets and the integral sign one day address@hidden@address@hidden@cmex38}%% address@hidden@address@hidden@cmex3A}%% \newarrowmiddle{cmexbra}{\braceru\bracelu}{\bracerd\braceld}{\vcenter{% address@hidden@cmex3D\mkern-2mu}}}%% right address@hidden@cmex3C}}}%% left address@hidden braces address@hidden straight parentheses address@hidden,cmex]}%%ASCII square brackets [] address@hidden,cmex]}%%ASCII square brackets [] address@hidden,cmex]}%%ASCII square brackets [] address@hidden,cmex]}%%ASCII square brackets [] address@hidden,cmex]}%%ASCII square brackets [] address@hidden,cmex]}%%ASCII square brackets [] address@hidden,cmex]}%%ASCII square brackets [] address@hidden,cmex]}%%ASCII square brackets [] %% synonyms for reverse compatibility \let\uFrom\uTo%% \let\lFrom\lTo%% \let\uDotsfrom\uDotsto%% \let\lDotsfrom\lDotsto%% \let\uDashfrom\uDashto%% \let\lDashfrom\lDashto%% \let\uImpliedby\uImplies%% \let\lImpliedby\lImplies%% \let\uMapsfrom\uMapsto%% \let\lMapsfrom\lMapsto%% \let\lOnfrom\lOnto%% \let\uOnfrom\uOnto%% \let\lPfrom\lPto%% \let\uPfrom\uPto%% \let\uInfromA\uIntoA%% \let\uInfromB\uIntoB%% \let\lInfromA\lIntoA%% \let\lInfromB\lIntoB%% \let\rInto\rIntoA%% \let\lInto\lIntoA%% \let\dInto\dIntoB%% \let\uInto\uIntoA%% \let\ruInto\ruIntoA%% \let\luInto\luIntoA%% \let\rdInto\rdIntoA%% \let\ldInto\ldIntoA%% %% \let\hEq\rEq%% \let\vEq\uEq%% \let\hLine\rLine%% \let\vLine\uLine%% \let\hDots\rDots%% \let\vDots\uDots%% \let\hDashes\rDashes%% \let\vDashes\uDashes%% %%=========================================================================% %% The following are included for reverse compatibility only. %%=========================================================================% \let\NW\luTo\let\NE\ruTo\let\SW\ldTo\let\SE\rdTo\def\nNW{\luTo(2,3)}\def\nNE{% \ruTo(2,3)}%%ascii \def\sSW{\ldTo(2,3)}\def\sSE{\rdTo(2,3)}%%ascii \def\wNW{\luTo(3,2)}\def\eNE{\ruTo(3,2)}%%ascii \def\wSW{\ldTo(3,2)}\def\eSE{\rdTo(3,2)}%%ascii \def\NNW{\luTo(2,4)}\def\NNE{\ruTo(2,4)}%%ascii \def\SSW{\ldTo(2,4)}\def\SSE{\rdTo(2,4)}%%ascii \def\WNW{\luTo(4,2)}\def\ENE{\ruTo(4,2)}%%ascii \def\WSW{\ldTo(4,2)}\def\ESE{\rdTo(4,2)}%%ascii \def\NNNW{\luTo(2,6)}\def\NNNE{\ruTo(2,6)}%%ascii \def\SSSW{\ldTo(2,6)}\def\SSSE{\rdTo(2,6)}%%ascii \def\WWNW{\luTo(6,2)}\def\EENE{\ruTo(6,2)}%%ascii \def\WWSW{\ldTo(6,2)}\def\EESE{\rdTo(6,2)}%%ascii \let\NWd\luDotsto\let\NEd\ruDotsto\let\SWd\ldDotsto\let\SEd\rdDotsto\def\nNWd {\luDotsto(2,3)}\def\nNEd{\ruDotsto(2,3)}%%ascii \def\sSWd{\ldDotsto(2,3)}\def\sSEd{\rdDotsto(2,3)}%%ascii \def\wNWd{\luDotsto(3,2)}\def\eNEd{\ruDotsto(3,2)}%%ascii \def\wSWd{\ldDotsto(3,2)}\def\eSEd{\rdDotsto(3,2)}%%ascii \def\NNWd{\luDotsto(2,4)}\def\NNEd{\ruDotsto(2,4)}%%ascii \def\SSWd{\ldDotsto(2,4)}\def\SSEd{\rdDotsto(2,4)}%%ascii \def\WNWd{\luDotsto(4,2)}\def\ENEd{\ruDotsto(4,2)}%%ascii \def\WSWd{\ldDotsto(4,2)}\def\ESEd{\rdDotsto(4,2)}%%ascii \def\NNNWd{\luDotsto(2,6)}\def\NNNEd{\ruDotsto(2,6)}%%ascii \def\SSSWd{\ldDotsto(2,6)}\def\SSSEd{\rdDotsto(2,6)}%%ascii \def\WWNWd{\luDotsto(6,2)}\def\EENEd{\ruDotsto(6,2)}%%ascii \def\WWSWd{\ldDotsto(6,2)}\def\EESEd{\rdDotsto(6,2)}%%ascii \let\NWl\luLine\let\NEl\ruLine\let\SWl\ldLine\let\SEl\rdLine\def\nNWl{\luLine (2,3)}\def\nNEl{\ruLine(2,3)}%%ascii \def\sSWl{\ldLine(2,3)}\def\sSEl{\rdLine(2,3)}%%ascii \def\wNWl{\luLine(3,2)}\def\eNEl{\ruLine(3,2)}%%ascii \def\wSWl{\ldLine(3,2)}\def\eSEl{\rdLine(3,2)}%%ascii \def\NNWl{\luLine(2,4)}\def\NNEl{\ruLine(2,4)}%%ascii \def\SSWl{\ldLine(2,4)}\def\SSEl{\rdLine(2,4)}%%ascii \def\WNWl{\luLine(4,2)}\def\ENEl{\ruLine(4,2)}%%ascii \def\WSWl{\ldLine(4,2)}\def\ESEl{\rdLine(4,2)}%%ascii \def\NNNWl{\luLine(2,6)}\def\NNNEl{\ruLine(2,6)}%%ascii \def\SSSWl{\ldLine(2,6)}\def\SSSEl{\rdLine(2,6)}%%ascii \def\WWNWl{\luLine(6,2)}\def\EENEl{\ruLine(6,2)}%%ascii \def\WWSWl{\ldLine(6,2)}\def\EESEl{\rdLine(6,2)}%%ascii \let\NWld\luDots\let\NEld\ruDots\let\SWld\ldDots\let\SEld\rdDots\def\nNWld{% \luDots(2,3)}\def\nNEld{\ruDots(2,3)}%%ascii \def\sSWld{\ldDots(2,3)}\def\sSEld{\rdDots(2,3)}%%ascii \def\wNWld{\luDots(3,2)}\def\eNEld{\ruDots(3,2)}%%ascii \def\wSWld{\ldDots(3,2)}\def\eSEld{\rdDots(3,2)}%%ascii \def\NNWld{\luDots(2,4)}\def\NNEld{\ruDots(2,4)}%%ascii \def\SSWld{\ldDots(2,4)}\def\SSEld{\rdDots(2,4)}%%ascii \def\WNWld{\luDots(4,2)}\def\ENEld{\ruDots(4,2)}%%ascii \def\WSWld{\ldDots(4,2)}\def\ESEld{\rdDots(4,2)}%%ascii \def\NNNWld{\luDots(2,6)}\def\NNNEld{\ruDots(2,6)}%%ascii \def\SSSWld{\ldDots(2,6)}\def\SSSEld{\rdDots(2,6)}%%ascii \def\WWNWld{\luDots(6,2)}\def\EENEld{\ruDots(6,2)}%%ascii \def\WWSWld{\ldDots(6,2)}\def\EESEld{\rdDots(6,2)}%%ascii \let\NWe\luEmbed\let\NEe\ruEmbed\let\SWe\ldEmbed\let\SEe\rdEmbed\def\nNWe{% \luEmbed(2,3)}\def\nNEe{\ruEmbed(2,3)}%%ascii \def\sSWe{\ldEmbed(2,3)}\def\sSEe{\rdEmbed(2,3)}%%ascii \def\wNWe{\luEmbed(3,2)}\def\eNEe{\ruEmbed(3,2)}%%ascii \def\wSWe{\ldEmbed(3,2)}\def\eSEe{\rdEmbed(3,2)}%%ascii \def\NNWe{\luEmbed(2,4)}\def\NNEe{\ruEmbed(2,4)}%%ascii \def\SSWe{\ldEmbed(2,4)}\def\SSEe{\rdEmbed(2,4)}%%ascii \def\WNWe{\luEmbed(4,2)}\def\ENEe{\ruEmbed(4,2)}%%ascii \def\WSWe{\ldEmbed(4,2)}\def\ESEe{\rdEmbed(4,2)}%%ascii \def\NNNWe{\luEmbed(2,6)}\def\NNNEe{\ruEmbed(2,6)}%%ascii \def\SSSWe{\ldEmbed(2,6)}\def\SSSEe{\rdEmbed(2,6)}%%ascii \def\WWNWe{\luEmbed(6,2)}\def\EENEe{\ruEmbed(6,2)}%%ascii \def\WWSWe{\ldEmbed(6,2)}\def\EESEe{\rdEmbed(6,2)}%%ascii \let\NWo\luOnto\let\NEo\ruOnto\let\SWo\ldOnto\let\SEo\rdOnto\def\nNWo{\luOnto (2,3)}\def\nNEo{\ruOnto(2,3)}%%ascii \def\sSWo{\ldOnto(2,3)}\def\sSEo{\rdOnto(2,3)}%%ascii \def\wNWo{\luOnto(3,2)}\def\eNEo{\ruOnto(3,2)}%%ascii \def\wSWo{\ldOnto(3,2)}\def\eSEo{\rdOnto(3,2)}%%ascii \def\NNWo{\luOnto(2,4)}\def\NNEo{\ruOnto(2,4)}%%ascii \def\SSWo{\ldOnto(2,4)}\def\SSEo{\rdOnto(2,4)}%%ascii \def\WNWo{\luOnto(4,2)}\def\ENEo{\ruOnto(4,2)}%%ascii \def\WSWo{\ldOnto(4,2)}\def\ESEo{\rdOnto(4,2)}%%ascii \def\NNNWo{\luOnto(2,6)}\def\NNNEo{\ruOnto(2,6)}%%ascii \def\SSSWo{\ldOnto(2,6)}\def\SSSEo{\rdOnto(2,6)}%%ascii \def\WWNWo{\luOnto(6,2)}\def\EENEo{\ruOnto(6,2)}%%ascii \def\WWSWo{\ldOnto(6,2)}\def\EESEo{\rdOnto(6,2)}%%ascii \let\NWod\luDotsonto\let\NEod\ruDotsonto\let\SWod\ldDotsonto\let\SEod \rdDotsonto\def\nNWod{\luDotsonto(2,3)}\def\nNEod{\ruDotsonto(2,3)}%%ascii \def\sSWod{\ldDotsonto(2,3)}\def\sSEod{\rdDotsonto(2,3)}%%ascii \def\wNWod{\luDotsonto(3,2)}\def\eNEod{\ruDotsonto(3,2)}%%ascii \def\wSWod{\ldDotsonto(3,2)}\def\eSEod{\rdDotsonto(3,2)}%%ascii \def\NNWod{\luDotsonto(2,4)}\def\NNEod{\ruDotsonto(2,4)}%%ascii \def\SSWod{\ldDotsonto(2,4)}\def\SSEod{\rdDotsonto(2,4)}%%ascii \def\WNWod{\luDotsonto(4,2)}\def\ENEod{\ruDotsonto(4,2)}%%ascii \def\WSWod{\ldDotsonto(4,2)}\def\ESEod{\rdDotsonto(4,2)}%%ascii \def\NNNWod{\luDotsonto(2,6)}\def\NNNEod{\ruDotsonto(2,6)}%%ascii \def\SSSWod{\ldDotsonto(2,6)}\def\SSSEod{\rdDotsonto(2,6)}%%ascii \def\WWNWod{\luDotsonto(6,2)}\def\EENEod{\ruDotsonto(6,2)}%%ascii \def\WWSWod{\ldDotsonto(6,2)}\def\EESEod{\rdDotsonto(6,2)}%%ascii %%======================================================================% %% % %% (25) MISCELLANEOUS % %% % %%======================================================================% \def\labelstyle{%% \ifincommdiag%% \textstyle%% \else%% \scriptstyle%% \fi}%% \let\objectstyle\displaystyle \newdiagramgrid{pentagon}{0.618034,0.618034,1,1,1,1,0.618034,0.618034}{1.% 17557,1.17557,1.902113,1.902113} \newdiagramgrid{perspective}{0.75,0.75,1.1,1.1,0.9,0.9,0.95,0.95,0.75,0.75}{0% .75,0.75,1.1,1.1,0.9,0.9} \diagramstyle[%%ascii open square bracket dpi=300,%% office laserwriters are usually 300 dots per inch vmiddle,nobalance,%% vertical and horizontal positioning loose,%% allow rows and columns to stretch thin,%% line10 arrows; default rule thickness (TeXbook p447) pilespacing=10pt,% %% parallel vertical separation (horizontals: half this) shortfall=4pt,%% distance between arrowheads and their targets %% The following are defaulted on entry to the diagram itself. %% l>=2em minimum length of horizontal arrow shafts in text %% l>=1em ditto in diagrams %% size=3em cell size %% heads=LaTeX arrowheads ]%%ascii close square bracket %% process options to LaTeX2e's \usepackage[options]{diagrams} address@hidden@address@hidden@e\fi\fi %%============================== THE END ==================================== address@hidden| >>>>>>>> POSTSCRIPT MODE (DVIPS) IS NOW THE DEFAULT <<<<<<<<% <<<<|}\message{|(DVI mode has not been supported since 1992 and produces inferior|}\message{|results which are completely unsuitable for publication. However,|}\message{|if you really still need it, you can still get it by loading the |}\message{|package using ``\string\usepackage[UglyObsolete]{% diagrams}'' instead. ) |}\else\message{| >>>>>>>> USING UGLY OBSOLETE DVI CODE - PLEASE STOP <<<<<<<<<<<<|}\message{|(DVI mode has not been supported since 1992 and produces inferior|}\message{|results which are completely unsuitable for publication - Please |}\message{|use the PostScript or PDF mode instead, for much better results.)|}\fi\cdrestoreat %% restore old category code for @ etc \message{===================================================================}% %% This is the end of Paul Taylor's commutative diagrams package.