Oliver Buerschaper schrieb:
>> The bounding box of the graphic is set on the base line. So you have  
>> to
>> add some artificial depth to the graphic.
>>
>>
>> \starttext
>>
>> \startreusableMPgraphic{tetrahedral}
>>         begingroup

        save u;

>>      u := 10pt;
>>      draw (0,0)--(2u,0)--(u,sqrt(3)*u)--cycle;
>>         draw boundingbox currentpicture withpen pensquare scaled .1;
>>         endgroup;
>> \stopreusableMPgraphic
>>
>> \def\Tetrahedral{\lower5pt\hbox{\reuseMPgraphic{tetrahedral}}}% needs
>> some fiddling :)
>>
>> \startformula
>> \Phi(\Tetrahedral)=F_{kln}^{ijm}\,v_iv_jv_kv_l\,
>> \delta_{j^*nk^*}\,\delta_{l^*n^*i^*}\,\Phi(\emptyset)
>> \stopformula
>>
>> \stoptext
> 
> That's exactly what I was looking for … thanks very much!
> 
> Out of curiosity just a few questions … why do you use grouping in the  
> MetaPost code and why do you draw the bounding box explicitly? When I  
> was experimenting with your suggestion a bit I tried leaving out those  
> two commands at some point and surprisingly things still looked fine …  
> And what's the difference between \startreusableMPgraphic and  
> \startuseMPgraphic? Does caching play a role?
>

I do grouping just by habit (btw: a 'save u;' is missing). Without 
grouping your variables simply overwrite prior defined ones. With 
grouping all saved(!) variables are restored after endgroup (attention: 
don't ever forget the simicolon after endgroup). And you are right, 
grouping is not really needed in a simple context.

Coming to the bounding box; it's just for debugging. My first try was to 
'reduce' the height of the bounding box (all stuff beneath the base line 
is then drawn outside the final bounding box). But when I thought about 
subscript this was no longer an option. Anyhow, here is the code:

\startreusableMPgraphic{tetrahedral}
         begingroup
         save bb,d,u;

        u := 10pt;
        draw ((0,0)--(2u,0)--(u,sqrt(3)*u)--cycle) ;

         d := 0.25u; % depth
         path bb; bb:= boundingbox currentpicture;
         setbounds currentpicture to unitsquare
         xyscaled(xpart point 2 of bb,ypart point 2 of bb -d)
         yshifted d;
         draw boundingbox currentpicture withpen pensquare scaled .1;
         endgroup;
\stopreusableMPgraphic

3-------2
|       |  bounding box
|       |  and it's points
0-------1

The extreme points of the complete graphic determine the size of the 
bounding box. The relative position of the complete graphic (where it is 
drawn) has no influence on that. This is why a single fullcircle gives 
you the same graphic as a single unitcircle.

All your questions about the different graphic types are aswered in the 
'Metafun' manual, 'Integrated graphics' on pages 111-114.

Best wishes, Peter

> Thanks again,
> Oliver
> ___________________________________________________________________________________
> If your question is of interest to others as well, please add an entry to the 
> Wiki!
> 
> maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
> webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
> archive  : https://foundry.supelec.fr/projects/contextrev/
> wiki     : http://contextgarden.net
> ___________________________________________________________________________________
> 

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : https://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to