[NTG-context] Re: unprotecting when defining in Lua

2024-04-29 Thread Pablo Rodriguez via ntg-context
On 4/29/24 19:32, Wolfgang Schuster wrote:
> Pablo Rodriguez via ntg-context schrieb am 29.04.2024 um 18:21:
>> Is \protected the same as \unexpanded?
>
> Yes they are the same (\protected is the primitive and \unexpanded is a
> copy) but this wasn't always the case.
>
> Original TeX didn't provide a mechanism to create protected commands
> and creators of macro packages had to create their own mechanism for
> this, the ConTeXt solution was \unexpanded. With the etex extensions
> the \protected primitive was added and \unexpanded uses the new
> primitive when you used a engine which supported it.

Many thanks for your fast reply and your explanation, Wolfgang.

Pablo

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

maillist : ntg-context@ntg.nl / 
https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl
webpage  : https://www.pragma-ade.nl / https://context.aanhet.net (mirror)
archive  : https://github.com/contextgarden/context
wiki : https://wiki.contextgarden.net
___


[NTG-context] Re: unprotecting when defining in Lua

2024-04-29 Thread Wolfgang Schuster

Pablo Rodriguez via ntg-context schrieb am 29.04.2024 um 18:21:

On 4/29/24 18:04, Wolfgang Schuster wrote:

Pablo Rodriguez via ntg-context schrieb am 29.04.2024 um 17:22:

[...]
Which is the right way to use "interfaces.definecommand" to get a simple
command as in standard TeX?

I mean, no a non \permanent or non \protected command.

You can't create unprotected command with interfaces.definecommand
but this not a problem because you can just use interfaces.implement
to create your command which is then unprotected by default. Using
implement instead of definecommand doesn't matter because
definecommand is just a wrapper for the implement function with the
option to create a environment.

Many thanks for your fast reply, Wolfgang.

I’m reading it now in cld-mkiv.pdf.

Is \protected the same as \unexpanded?


Yes they are the same (\protected is the primitive and \unexpanded is a 
copy) but this wasn't always the case.


Original TeX didn't provide a mechanism to create protected commands and 
creators of macro packages
had to create their own mechanism for this, the ConTeXt solution was 
\unexpanded. With the etex extensions
the \protected primitive was added and \unexpanded uses the new 
primitive when you used a engine

which supported it.

Wolfgang

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

maillist : ntg-context@ntg.nl / 
https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl
webpage  : https://www.pragma-ade.nl / https://context.aanhet.net (mirror)
archive  : https://github.com/contextgarden/context
wiki : https://wiki.contextgarden.net
___


[NTG-context] Re: unprotecting when defining in Lua

2024-04-29 Thread Pablo Rodriguez via ntg-context
On 4/29/24 18:04, Wolfgang Schuster wrote:
> Pablo Rodriguez via ntg-context schrieb am 29.04.2024 um 17:22:
>> [...]
>> Which is the right way to use "interfaces.definecommand" to get a simple
>> command as in standard TeX?
>>
>> I mean, no a non \permanent or non \protected command.
>
> You can't create unprotected command with interfaces.definecommand
> but this not a problem because you can just use interfaces.implement
> to create your command which is then unprotected by default. Using
> implement instead of definecommand doesn't matter because
> definecommand is just a wrapper for the implement function with the
> option to create a environment.

Many thanks for your fast reply, Wolfgang.

I’m reading it now in cld-mkiv.pdf.

Is \protected the same as \unexpanded?

Many thanks for your help again,

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

maillist : ntg-context@ntg.nl / 
https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl
webpage  : https://www.pragma-ade.nl / https://context.aanhet.net (mirror)
archive  : https://github.com/contextgarden/context
wiki : https://wiki.contextgarden.net
___


[NTG-context] Re: unprotecting when defining in Lua

2024-04-29 Thread Wolfgang Schuster

Pablo Rodriguez via ntg-context schrieb am 29.04.2024 um 17:22:

Dear list,

I have the following sample:

   \starttext
   \startluacode
 function document.test(str)
   context(str)
 end

 interfaces.definecommand {
   name = "testing",
   protected = false,
   macro = document.test,
 }
   \stopluacode

   \meaningfull\testing

   \def\test#1{#1}

   \meaningfull\test
   \stoptext

Which is the right way to use "interfaces.definecommand" to get a simple
command as in standard TeX?

I mean, no a non \permanent or non \protected command.


You can't create unprotected command with interfaces.definecommand but 
this not a problem
because you can just use interfaces.implement to create your command 
which is then unprotected
by default. Using implement instead of definecommand doesn't matter 
because definecommand
is just a wrapper for the implement function with the option to create a 
environment.


Wolfgang

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

maillist : ntg-context@ntg.nl / 
https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl
webpage  : https://www.pragma-ade.nl / https://context.aanhet.net (mirror)
archive  : https://github.com/contextgarden/context
wiki : https://wiki.contextgarden.net
___