Metafun's utflen not working in certain contexts
Hi, list. The following works for MkIV, but not LMTX (adapted from here: https://tex.stackexchange.com/questions/617597/how-can-i-use-luas-string-len... ): \startMPinclusions vardef MotMystere(expr taille, speciale, index) = save avant,apres,case; numeric avant,apres; path case; case := fullsquare scaled 13; avant := speciale-1; %For Unicode, use "utflen" instead apres := utflen(taille) - speciale; if avant >= 1: for j=1 upto avant: draw (case rotated 180 cutafter point 3 of case rotated 180) shifted (-13j,-13*index); endfor; fi; label.lft (index,point 3.5 of case shifted (-13*avant,-13*index)); draw case yshifted (-13*index); fill case yshifted (-13*index) withcolor \MPcolor{gray-8}; if apres > 0: for j=1 upto apres: draw (case cutafter point 3 of case) shifted (13j,-13*index); endfor; fi; enddef; \stopMPinclusions \starttext An example with "enigma" \startMPcode MotMystere("enigma",4,1) \stopMPcode \stoptext
On 10/3/2021 9:28 PM, Jairo A. del Rio via ntg-context wrote:
Hi, list. The following works for MkIV, but not LMTX (adapted from here: https://tex.stackexchange.com/questions/617597/how-can-i-use-luas-string-len... https://tex.stackexchange.com/questions/617597/how-can-i-use-luas-string-len...):
\startMPinclusions
vardef MotMystere(expr taille, speciale, index) =
save avant,apres,case;
numeric avant,apres;
path case;
case := fullsquare scaled 13;
avant := speciale-1;
%For Unicode, use "utflen" instead
apres := utflen(taille) - speciale;
if avant >= 1:
for j=1 upto avant:
draw (case rotated 180
cutafter point 3 of case rotated 180)
shifted (-13j,-13*index);
endfor;
fi;
label.lft (index,point 3.5 of
case shifted (-13*avant,-13*index));
draw case yshifted (-13*index);
fill case yshifted (-13*index)
withcolor \MPcolor{gray-8};
if apres > 0:
for j=1 upto apres:
draw (case cutafter point 3 of case)
shifted (13j,-13*index);
endfor;
fi;
enddef;
\stopMPinclusions
\starttext
An example with "enigma"
\startMPcode
MotMystere("enigma",4,1)
\stopMPcode
\stoptext for the moment use ()
apres := (utflen(taille)) - speciale; ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------
Nice, thanks. Jairo El lun, 4 de oct. de 2021 a la(s) 13:23, Hans Hagen (j.hagen@xs4all.nl) escribió:
On 10/3/2021 9:28 PM, Jairo A. del Rio via ntg-context wrote:
Hi, list. The following works for MkIV, but not LMTX (adapted from here:
https://tex.stackexchange.com/questions/617597/how-can-i-use-luas-string-len...
< https://tex.stackexchange.com/questions/617597/how-can-i-use-luas-string-len... ):
\startMPinclusions
vardef MotMystere(expr taille, speciale, index) =
save avant,apres,case;
numeric avant,apres;
path case;
case := fullsquare scaled 13;
avant := speciale-1;
%For Unicode, use "utflen" instead
apres := utflen(taille) - speciale;
if avant >= 1:
for j=1 upto avant:
draw (case rotated 180
cutafter point 3 of case rotated 180)
shifted (-13j,-13*index);
endfor;
fi;
label.lft (index,point 3.5 of
case shifted (-13*avant,-13*index));
draw case yshifted (-13*index);
fill case yshifted (-13*index)
withcolor \MPcolor{gray-8};
if apres > 0:
for j=1 upto apres:
draw (case cutafter point 3 of case)
shifted (13j,-13*index);
endfor;
fi;
enddef;
\stopMPinclusions
\starttext
An example with "enigma"
\startMPcode
MotMystere("enigma",4,1)
\stopMPcode
\stoptext for the moment use ()
apres := (utflen(taille)) - speciale;
----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------
participants (2)
-
Hans Hagen
-
Jairo A. del Rio