MetaPost - substituce promenne mezi btex a etex

Jaromir Kuben kuben at scova.vabo.cz
Fri Jul 7 10:57:26 CEST 2000



Alexandr Malusek píše:
> 
> Alexandr Malusek <malusek at hroch.ujf.cas.cz> writes:
> 
> > Mam zacatecnicky dotaz: Potreboval bych, aby se v nasledujicim cyklu
> > za promennou "i" ve vyrazu "x_{i}" dosadila jeji ciselna hodnota.
> >
> > for i=0 upto nx:
> >   zz := (i,0);
> >   label.bot(btex x_{i} etex, u*zz);
> > endfor
> 
> Nakonec jsem pouzil workaround, ve kterem napred vygeneruji soubor
> inp_labX.mp obsahujici definici pole "picture" elementu. Tento soubor
> pak nactu a v cyklu vykresluji picture promenne labX[i]:
> 
>   % Define X-labels
>   write "picture labX[];" to "inp_labX.mp";
>   for k=0 upto nx:
>     write "labX[" & decimal(k) & "] := btex $x_{" & decimal(k) & "}$ etex;"
>       to "inp_labX.mp";
>   endfor;
>   write EOF to "inp_labX.mp";
>   input inp_labX.mp
> 
>   % Plot X-labels
>   for i=0 upto nx:
>     zz := (i,0);
>     label.bot(labX[i], u*zz);
>   endfor
> 
> --
> A. Malusek  (malusek at ujf.cas.cz)
> UJF AV CR

Ono to ani v podstate jinak nejde, uz tady byla pred casem o tom rec.
Metapost nejprve "vysbira" okoli btex etex (bez jakehokoli interpretace,
nebere v uvahu, ze obsahuji nejake symbolicke promenne cyklu, symbolicke
parametry maker a pod.) a da to zpracovat texu (plus dalsim programum). 
Takze dostanete naprosty nesmysl. To okoli tam da jen jednou, ne
tolikrat,
kolikrat se vola pozdeji cyklus, zato s nesmyslnymi parametry. Podobne
je to s pouzitim btex etex v definicich.
Nazpet dostane promenne typu picture, ktere pak umistuje misto btex etex 
tak, jak jste to vlastne udelal. Pouzit tedy primo btex etex v cyklu
nejde. 
Trik, jak to udelat, najdete v souboru tex.mp (je zalozen na write a 
scantokens). Znamena to ale, ze je pokazde volan znovu tex, coz je 
u dlouheho cyklu (na pocet opakovani) neunosne. To Vase je vlastne neco 
podobneho a vola tex jen jednou, tedy je lepsi.
Zdravi
        Jaromir Kuben




More information about the csTeX mailing list