ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
From: "Jairo A. del Rio" <jairoadelrio6@gmail.com>
To: Hans Hagen <j.hagen@xs4all.nl>,
	mailing list for ConTeXt users <ntg-context@ntg.nl>
Subject: Re: mathfun
Date: Sun, 23 May 2021 08:45:44 -0500	[thread overview]
Message-ID: <CAKyqqab53burZsshMQqFAkmzcAGxk84FPHNh06d=MZYonXxrTg@mail.gmail.com> (raw)
In-Reply-To: <13f095c1-791d-86c4-35b9-2ee2b069b631@xs4all.nl>


[-- Attachment #1.1: Type: text/plain, Size: 3592 bytes --]

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<number> 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<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

[-- Attachment #1.2: Type: text/html, Size: 7089 bytes --]

[-- Attachment #2: Type: text/plain, Size: 493 bytes --]

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

  reply	other threads:[~2021-05-23 13:45 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-21 13:15 mathfun Hans Hagen
2021-05-21 14:37 ` mathfun Aditya Mahajan
2021-05-21 15:06   ` mathfun Hans Hagen
2021-05-21 15:24     ` mathfun Otared Kavian
2021-05-21 16:07       ` mathfun Hans Hagen
2021-05-21 20:41       ` mathfun Aditya Mahajan
2021-05-21 21:01 ` mathfun Henning Hraban Ramm
2021-05-22  6:51   ` mathfun Hans Hagen
2021-05-22 21:34 ` mathfun Jairo A. del Rio
2021-05-23  9:51   ` mathfun Hans Hagen
2021-05-23 13:45     ` Jairo A. del Rio [this message]
2021-05-23 14:35       ` mathfun Hans Hagen
2021-05-23 15:33         ` mathfun Jairo A. del Rio
2021-05-23 21:29           ` mathfun Hans Hagen
2021-05-23 14:40       ` mathfun Hans Hagen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAKyqqab53burZsshMQqFAkmzcAGxk84FPHNh06d=MZYonXxrTg@mail.gmail.com' \
    --to=jairoadelrio6@gmail.com \
    --cc=j.hagen@xs4all.nl \
    --cc=ntg-context@ntg.nl \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).