El dom, 23 de may. de 2021 a la(s) 04:51, Hans Hagen (j.hagen@xs4all.nl) escribió: > On 5/22/2021 11:34 PM, Jairo A. del Rio wrote: > > Hi. Is \thewithproperty documented elsewhere? Is this a new primitive? > > It looks interesting. > In the case of the \sin trick particular case \let\computer\the would > also work; i added the \thewithproperty feature just because i > expect that users can come up with variants (like \drawme\sin ...) which > then would adapt behaviour (via \dowithproperty2). > Having flags for computing and drawing would be awesome. I think it would nicely extend ConTeXt's drawing features... So, indeed it's a new primitive but (for now) only used with these lua > hacks. Actually it's no big deal to reimplement \thewithoutunit as > So, is this Lua-specific? \thewithoutunit{\dowithproperty1\the} > > and then > > \thewithcmunit{\dowithproperty2\the} > > to serialize the dimension in cm but normally i need to "wonder for a > while if it makes sense". > > Btw, adding primitives (related to the token related bits and pieces of > the engine) only makes sense if the gain is in > > -- avoiding clumsy code: although that can hurt someones pride and joy > over a nice and complex macro doing the same ... don't worry, i threw > away plenty of code by now > > -- significant performance gain: which is seldom the case (there really > is not much to gain, at least not in context which is rather optimized > already) > > -- giving way less noise in tracing: which for me is a good reason > (tracing changed a bit anyway) > > -- not adding much code to the engine or the need to refactor: although > for some luametatex extensions some internals had to change fundamentally > > a good example is the extended macro argument handling: less clumsy tex > code, a bit of performance gain and easier full expansion, way less > tracing, but it violates the last argument because it did lead to some > refactoring (i also had to make sure the extra overhead didn't slow down > macro definitions and expansion) > > Hans > > > ----------------------------------------------------------------- > Hans Hagen | PRAGMA ADE > Ridderstraat 27 | 8061 GH Hasselt | The Netherlands > tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl > ----------------------------------------------------------------- > I did the following and I have two questions: 1. What if I want to have more than one property? Say \plusone for computation and \plustwo for drawing. 2. What does 'usage="value"' mean in the implement function (looks new, but I'm prolly wrong)? \permanent\protected\def\drawme{\thewithproperty\plussix} %better than 666 \startluacode local interfaces = interfaces local implement = interfaces.implement local context = context local drawme_code = 6 local drawing = [==[ draw fullcircle scaled 10mm; draw fullcircle shifted up scaled 5mm; draw fulltriangle shifted (up+1/2right) scaled 5mm; ]==] local function chicken(value) if value == "value" or value == drawme_code then context.metafun.start() context.metafun(drawing); context.metafun.stop() --elseif then ... else context("Chicken!") end end implement{ name = "chicken", public = true, usage = "value", --What does it do? overload = true, actions = chicken } \stopluacode \starttext\chicken\ and \drawme\chicken\stoptext Thank you in advance. Jairo