El dom, 23 de may. de 2021 a la(s) 04:51, Hans Hagen (j.hagen@xs4all.nl) escribió:
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<number> feature just because i expect that users can come up with variants (like \drawme\sin ...) which
On 5/22/2021 11:34 PM, Jairo A. del Rio wrote: 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<dim> 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