[Therion] Metapost and user attributes

Martin Budaj m.budaj at gmail.com
Sun Dec 23 11:53:21 CET 2007


On Dec 22, 2007 7:59 PM, Xavier Pennec <Xavier.Pennec at sophia.inria.fr> wrote:
> As I want to be able not to display the section lines AND the their
> numbers when I inlcude that survey into the larger map, I thought that
> adding a user attribute to the section line would be the right way.
>
> Thus, I used a user attribute called label in my th2 file:
>    line section -reverse on -direction both -attr label "one"
>      312.0 327.0
>      334.09 327.0 396.0 327.0 425.0 327.0
>    endline
>
> and I redefined the section line metapost command into in my layout:
> The file NaduelRD5_plan.pdf is an example on what it gives. With that
> solution, I have two problems:
> - the first one is that is I change     -attr label "one"    with
> -attr label "1"     then metapost crashes because ATTR_label is
> intrepreted in that case as a known numeric and not as a string.

Yes, that is intended behaviour. You sometimes need to evaluate
numerical attibutes.

Try the following:

     if known ATTR_label:
       old_lo := labeloffset;
       labeloffset := 2 mm;
       push_label_fill_color(0.7,0.7,0.7);
       p_label.bot(if numeric ATTR_label: decimal ATTR_label else:
ATTR_label fi, (point pnt of Q), angle(thdir(Q,pnt)), 8);
       labeloffset := old_lo;
       pop_label_fill_color;
     fi;

The conversion of numeric to string argument is "decimal ATTR_label"

The example also shows how to change alignment, offset and rotation of
the label.

Unfortunately the rotation (currently) does not work for circled
labels (type 5 in your example) so i used type 8 for a label with
coloured background.

Martin



More information about the Therion mailing list