[metapost] aligning boxes

Alan Bram alan.bram at oracle.com
Sat Nov 15 02:32:19 CET 2008


Hi,

How can I control the spacing and alignment of a series of boxes?

I would like all boxes to be the same width, with padding if
necessary.  Here's my attempt:


input boxes
prologues:=3;
verbatimtex
\font\myfont=cmr10 scaled\magstep4\myfont
etex

beginfig(2);
  u=2in;

  boxjoin(ypart a.s = ypart b.n + .5u;
    xpart a.e=xpart b.e; xpart a.w=xpart b.w);

  boxit.a(btex medium length etex);
  boxit.b(btex short etex);
  boxit.c(btex a very long string indeed etex);

  drawboxed(a,b,c);

endfig;
end


What seems to happen is that box "a" gets drawn at its natural width,
and then the other boxes match that width.  The result is that box "b"
has padding, and box "c" is too narrow: the long text spills out over
each side.

If I change the order, saying drawboxed(c,a,b), then I get the result
that I want.  But I of course don't want to have to adjust the
drawboxed command arguments each time the text content changes.

Is there anyway to do this?

Hmm, do I have to do something like write code to find the maximum,
then draw that one first, and then draw the others?  I thought the
"meta" way was to be able to declare linear equations in any order.


Cheers,
 - arb


More information about the metapost mailing list