[Xy-pic] Delicate alignment problem.

Michael Abbott michael at araneidae.co.uk
Mon May 12 08:20:08 CEST 2003

On Mon, 12 May 2003, R.P.I. Lewis wrote:
> Michael Abbott <michael at araneidae.co.uk> writes:
> > \[\xygraph{
> > !{0;/r5cm/:/u1.5cm/::}
> > *{AAAA}="AA"
> > [] !{"AA"+R *!L{{}=BBBB},
> >     *+[F.]\frm{}="BB"}       % <--- ????
> > [] "AA"[r] *+{CCCC}="CC"
> > [] "BB" :^-f "CC"
> > [] !{"CC"+D *!U{\cong},
> >     +D *+!U{DDDD}="DD"}
> > "DD" :^-h[d] *+{EEEE}="EE"
> > :^k[l]{FFFF}="FF" []
> > !{"AA"*+\frm{}} :_g "FF"
> > }\]
> >
> > The defect is this: the arrow out of BBBB starts too far away from
> > BBBB. This is because the reference point when "BB" is defined is at
> > the left, so when I try to expand the enclosing box (with
> > *+[F.]\frm{}="BB") the expansion is incorrect.
> Perhaps i am missing the point, but if you move the "BB" to
>    *!L{{}=BBBB}="BB"
> Then the arrow starts next to the BBBB just as in your xymatrix below

Yes, but that's not what I want: the start of the arrow should leave a
small gap between itself and the BBBB.  In other words, it should look the
same as an arrow out of *+{BBBB}.

The problem is that I use the line
     *+[F.]\frm{}="BB"}       % <--- ????
to try and pick up the previously set BBBB (with \frm{}) and try to expand
it (with +), but its base point is in the wrong place (because I needed to
tuck it up against the AAAA), so the expansion is too much.  (The [F.] is
just so we can see what's happening.)

I still don't really understand positioning well enough.  Let's try and
see what's going on here in detail.

Basically I want to set two adjacent boxes (the AAAA and {}=BBBB texts)
touching side by side; after doing this, I want to pick up the two boxes
and create *+{} expanded versions of them.  If I can typeset the BBBB box
in place without having to disturb its origin, or if I can put the origin
back in the middle afterwards then I'm done.

> Here I tried +D*+!U{DDDD}="c"  which appears to work. I am not
> entirely sure what the !, bit does, but it doesn't seem necessary.

Ouch.  That's perfect.  Thanks very much for spotting that!

Oops.  I've completely forgotten what I was trying to do with the ! --
it's suppose to "restore the reference point of an object", so it must
have been a relic of some sort.

More information about the Xy-pic mailing list