Metapost labels

Jaromir Kuben kuben at scova.vabo.cz
Mon Apr 19 10:37:10 CEST 1999


> >potreboval by som v Metaposte oznacit niektore body nasledujucim sposobom:
> >for j=1 upto 5:
> >  for i=j upto 5:
> >    dotlabel(i,z[i]);
> >    <cosi sa vykona z bodmi z[i]>
> >  endfor;
> >endfor;
> >
> >tato konstrukcia bohuzial nie je prelozitelna. Vie niekto ako na to?
> >
> Podle manualu za dotlabel chybi suffix, tj. neco jako dotlabel.top,
> dotlabel. ulft a prvnim argumentem je bud picture nebo string, kdezto i je
> nejspise numericka promenna. Mozna ze by vasim potrebam vyhovovalo makro
> dotlabels.
>
> calabek
>

Ten suffix je nepovinny, kdyz neni zadan, je popis vertikalne i horizontalne
centrovan. Problem je ale v jine veci, na niz jsem v minulosti rovnez
narazil. Experimentovanim jsem zjistil, ze mp nejprve vysbira do pomocneho
souboru vsechny label (dotlabel je pomoci nej definovan), a na nej zavola
tex. Tedy nedojde k dosazeni hodnot za i a z[i], takze tex zpracovava
nesmysl. Presne vysvetleni, jak to presne dela, by podal clovek schopny
nahlednout fundovane do zdrojoveho kodu metapostu, coz ja nejsem. V dokumentaci
jsem zadne vetsi detaily k teto veci nenasel. S cykly, definicemi a pod.
obsahujicimi v sobe label je tedy potiz.

Trik, jak to udelat, jsem nasel v souboru mpinputs/tex.mp. Je zalozen na tom,
ze metapost umi ulozit do pomocneho souboru retezce (obsahujici napr. label),
ten vzapeti nacte (inputovane soubory nejsou pri prohledavani hlavniho souboru
na label prochazeny), spusti na nej tex a vse probehne, jak ma. Potiz je,
ze tex se spousti na kazdy pruchod cyklu, tj, ve Vasem pripade 25krat a je
to proto pomale. O nicem jinem ale nevim, a vzhledem k tomu, jak metapost
pracuje, to asi ani neni moc mozne.

To vse plati, pokud je v label (dotlabel) opravdu pouzito btex ... etex.
Pokud ne, snad by mohl cykl fungovat bez problemu.

Zdravi
       Jaromir Kuben



More information about the csTeX mailing list