ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* TeX capacity exceeded - in Lua block - why?
@ 2015-07-16  8:20 Procházka Lukáš Ing. - Pontex s. r. o.
  2015-07-16  8:27 ` Hans Hagen
  0 siblings, 1 reply; 9+ messages in thread
From: Procházka Lukáš Ing. - Pontex s. r. o. @ 2015-07-16  8:20 UTC (permalink / raw)
  To: ConTeXt

[-- Attachment #1: Type: text/plain, Size: 1437 bytes --]

Hello,

why this code:

----
\def\GG{\ifmmode G_G\else$\GG$\fi}

\starttext
   \GG $\GG$ % OK
   \startitemize[][]
     \sym{\GG} \GG % OK
   \stopitemize

   \startluacode
     context.startitemize()
       context.sym([[\GG]])
       context("Abc")
     context.stopitemize()
   \stopluacode
\stoptext
----

fails with:

"
...
tex error       > tex error on line 14 in file d://Lukas/Docs/Ull-Gra/Test/Abr.mkiv: ! TeX capacity exceeded, sorry [input stack size=10000]


\GG ->\ifmmode G_G\else $\GG
                              $\fi
\GG ->\ifmmode G_G\else $\GG
                              $\fi
\GG ->\ifmmode G_G\else $\GG
                              $\fi
\GG ->\ifmmode G_G\else $\GG
                              $\fi
\GG ->\ifmmode G_G\else $\GG
                              $\fi
\GG ->\ifmmode G_G\else $\GG
                              $\fi
...
l.14   \stopluacode
...
"

I need to call "\GG" from within Lua, and the real macro name is created run-time (contrary to this MNWE; so to be \GG, \HH, \Fik etc. - the name is obtained from a Lua table as a string).

I cannot understand why all TeX calls are OK but the problem appears in Lua block...

Best regards,

Lukas


-- 
Ing. Lukáš Procházka | mailto:LPr@pontex.cz
Pontex s. r. o.      | mailto:pontex@pontex.cz | http://www.pontex.cz
Bezová 1658
147 14 Praha 4

Tel: +420 241 096 751
Fax: +420 244 461 038

[-- Attachment #2: Abr.mkiv --]
[-- Type: application/octet-stream, Size: 270 bytes --]

\def\GG{\ifmmode G_G\else$\GG$\fi}

\starttext
  \GG $\GG$
  \startitemize[][]
    \sym{\GG} \GG
  \stopitemize

  \startluacode
    context.startitemize()
      context.sym([[\GG]])
      context("Abc")
    context.stopitemize()
  \stopluacode
\stoptext

[-- Attachment #3: Type: text/plain, Size: 485 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://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: TeX capacity exceeded - in Lua block - why?
  2015-07-16  8:20 TeX capacity exceeded - in Lua block - why? Procházka Lukáš Ing. - Pontex s. r. o.
@ 2015-07-16  8:27 ` Hans Hagen
  2015-07-16  8:55   ` Procházka Lukáš Ing. - Pontex s. r. o.
  0 siblings, 1 reply; 9+ messages in thread
From: Hans Hagen @ 2015-07-16  8:27 UTC (permalink / raw)
  To: mailing list for ConTeXt users

On 7/16/2015 10:20 AM, Procházka Lukáš Ing. - Pontex s. r. o. wrote:
> Hello,
>
> why this code:
>
> ----
> \def\GG{\ifmmode G_G\else$\GG$\fi}

because in math mode \GG expands \GG which expands \GG ....

maybe you mean:

\def\GG{\ifmmode G_G\else$GG$\fi}

> \starttext
>    \GG $\GG$ % OK
>    \startitemize[][]
>      \sym{\GG} \GG % OK
>    \stopitemize
>
>    \startluacode
>      context.startitemize()
>        context.sym([[\GG]])
>        context("Abc")
>      context.stopitemize()
>    \stopluacode
> \stoptext
> ----
>
> fails with:
>
> "
> ....
> tex error       > tex error on line 14 in file
> d://Lukas/Docs/Ull-Gra/Test/Abr.mkiv: ! TeX capacity exceeded, sorry
> [input stack size=10000]
>
>
> \GG ->\ifmmode G_G\else $\GG
>                               $\fi
> \GG ->\ifmmode G_G\else $\GG
>                               $\fi
> \GG ->\ifmmode G_G\else $\GG
>                               $\fi
> \GG ->\ifmmode G_G\else $\GG
>                               $\fi
> \GG ->\ifmmode G_G\else $\GG
>                               $\fi
> \GG ->\ifmmode G_G\else $\GG
>                               $\fi
> ....
> l.14   \stopluacode
> ....
> "
>
> I need to call "\GG" from within Lua, and the real macro name is created
> run-time (contrary to this MNWE; so to be \GG, \HH, \Fik etc. - the name
> is obtained from a Lua table as a string).
>
> I cannot understand why all TeX calls are OK but the problem appears in
> Lua block...
>
> Best regards,
>
> Lukas
>
>
>
>
> ___________________________________________________________________________________
> 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://tex.aanhet.net
> archive  : http://foundry.supelec.fr/projects/contextrev/
> wiki     : http://contextgarden.net
> ___________________________________________________________________________________
>


-- 

-----------------------------------------------------------------
                                           Hans Hagen | PRAGMA ADE
               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
     tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com
                                              | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
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://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: TeX capacity exceeded - in Lua block - why?
  2015-07-16  8:27 ` Hans Hagen
@ 2015-07-16  8:55   ` Procházka Lukáš Ing. - Pontex s. r. o.
  2015-07-16  9:03     ` luigi scarso
  2015-07-16  9:29     ` Hans Hagen
  0 siblings, 2 replies; 9+ messages in thread
From: Procházka Lukáš Ing. - Pontex s. r. o. @ 2015-07-16  8:55 UTC (permalink / raw)
  To: mailing list for ConTeXt users

Hello,

On Thu, 16 Jul 2015 10:27:48 +0200, Hans Hagen <pragma@wxs.nl> wrote:

> On 7/16/2015 10:20 AM, Procházka Lukáš Ing. - Pontex s. r. o. wrote:
>> Hello,
>>
>> why this code:
>>
>> ----
>> \def\GG{\ifmmode G_G\else$\GG$\fi}
>
> because in math mode \GG expands \GG which expands \GG ....

I want to just pass G_G in math mode, so it seems to me that "\ifmmode G_G..." does the check.

The macro should write G + "lower index G" for both math and non-math scope.

And, in non math scope, the macro should just enclose itself by $...$ (or \m{...})...

And, this works well in TeX code:

----
\def\GG{\ifmmode G_G\else$\GG$\fi}

\starttext
   \GG $\GG$
   \startitemize[][]
     \sym{\GG} \GG
     \sym{$\GG$} $\GG$
     \sym{\m{\GG}} \m{\GG}
     \item End
   \stopitemize
\stoptext
----

So how to rewrite the itemization into Lua?

> maybe you mean:
>
> \def\GG{\ifmmode G_G\else$GG$\fi}

... Could be \def\GG{\ifmmode G_G\else$G_G$\fi}, too, but why not \def\GG{\ifmmode G_G\else$\GG$\fi} (seems to me be simpler as the macro definition - which may be more complicated - appears only once)?

Lukas


>> \starttext
>>    \GG $\GG$ % OK
>>    \startitemize[][]
>>      \sym{\GG} \GG % OK
>>    \stopitemize
>>
>>    \startluacode
>>      context.startitemize()
>>        context.sym([[\GG]])
>>        context("Abc")
>>      context.stopitemize()
>>    \stopluacode
>> \stoptext
>> ----
>>
>> fails with:
>>
>> "
>> ....
>> tex error       > tex error on line 14 in file
>> d://Lukas/Docs/Ull-Gra/Test/Abr.mkiv: ! TeX capacity exceeded, sorry
>> [input stack size=10000]
>>
>>
>> \GG ->\ifmmode G_G\else $\GG
>>                               $\fi
>> \GG ->\ifmmode G_G\else $\GG
>>                               $\fi
>> \GG ->\ifmmode G_G\else $\GG
>>                               $\fi
>> \GG ->\ifmmode G_G\else $\GG
>>                               $\fi
>> \GG ->\ifmmode G_G\else $\GG
>>                               $\fi
>> \GG ->\ifmmode G_G\else $\GG
>>                               $\fi
>> ....
>> l.14   \stopluacode
>> ....
>> "
>>
>> I need to call "\GG" from within Lua, and the real macro name is created
>> run-time (contrary to this MNWE; so to be \GG, \HH, \Fik etc. - the name
>> is obtained from a Lua table as a string).
>>
>> I cannot understand why all TeX calls are OK but the problem appears in
>> Lua block...
>>
>> Best regards,
>>
>> Lukas
>>
>>
>>
>>
>> ___________________________________________________________________________________
>> 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://tex.aanhet.net
>> archive  : http://foundry.supelec.fr/projects/contextrev/
>> wiki     : http://contextgarden.net
>> ___________________________________________________________________________________
>>
>
>


-- 
Ing. Lukáš Procházka | mailto:LPr@pontex.cz
Pontex s. r. o.      | mailto:pontex@pontex.cz | http://www.pontex.cz
Bezová 1658
147 14 Praha 4

Tel: +420 241 096 751
Fax: +420 244 461 038

___________________________________________________________________________________
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://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: TeX capacity exceeded - in Lua block - why?
  2015-07-16  8:55   ` Procházka Lukáš Ing. - Pontex s. r. o.
@ 2015-07-16  9:03     ` luigi scarso
  2015-07-16 10:13       ` Procházka Lukáš Ing. - Pontex s. r. o.
  2015-07-16  9:29     ` Hans Hagen
  1 sibling, 1 reply; 9+ messages in thread
From: luigi scarso @ 2015-07-16  9:03 UTC (permalink / raw)
  To: mailing list for ConTeXt users


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

On Thu, Jul 16, 2015 at 10:55 AM, Procházka Lukáš Ing. - Pontex s. r. o. <
LPr@pontex.cz> wrote:

> Hello,
>
> On Thu, 16 Jul 2015 10:27:48 +0200, Hans Hagen <pragma@wxs.nl> wrote:
>
>  On 7/16/2015 10:20 AM, Procházka Lukáš Ing. - Pontex s. r. o. wrote:
>>
>>> Hello,
>>>
>>> why this code:
>>>
>>> ----
>>> \def\GG{\ifmmode G_G\else$\GG$\fi}
>>>
>>
>> because in math mode \GG expands \GG which expands \GG ....
>>
>
> I want to just pass G_G in math mode, so it seems to me that "\ifmmode
> G_G..." does the check.
>
> The macro should write G + "lower index G" for both math and non-math
> scope.
>
> And, in non math scope, the macro should just enclose itself by $...$ (or
> \m{...})...
>
> And, this works well in TeX code:
>
> ----
> \def\GG{\ifmmode G_G\else$\GG$\fi}
>
> \starttext
>   \GG $\GG$
>   \startitemize[][]
>     \sym{\GG} \GG
>     \sym{$\GG$} $\GG$
>     \sym{\m{\GG}} \m{\GG}
>     \item End
>   \stopitemize
> \stoptext
> ----
>
> So how to rewrite the itemization into Lua?
>
>  maybe you mean:
>>
>> \def\GG{\ifmmode G_G\else$GG$\fi}
>>
>
> ... Could be \def\GG{\ifmmode G_G\else$G_G$\fi}, too, but why not
> \def\GG{\ifmmode G_G\else$\GG$\fi} (seems to me be simpler as the macro
> definition - which may be more complicated - appears only once)?
>
>>
>>>

 \def\GG{\ifmmode G_G\else$\GG$\fi}
means "define the macro \GG as G_G if mmmod is true,
else as \GG "
It's clear that you  always are in a situation where mmod is true, then \GG
is replaced with  G_G
but as soon as you fall into "mmod not true" then you have infinite
recursion.

-- 
luigi

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

[-- Attachment #2: Type: text/plain, Size: 485 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://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: TeX capacity exceeded - in Lua block - why?
  2015-07-16  8:55   ` Procházka Lukáš Ing. - Pontex s. r. o.
  2015-07-16  9:03     ` luigi scarso
@ 2015-07-16  9:29     ` Hans Hagen
  1 sibling, 0 replies; 9+ messages in thread
From: Hans Hagen @ 2015-07-16  9:29 UTC (permalink / raw)
  To: mailing list for ConTeXt users

On 7/16/2015 10:55 AM, Procházka Lukáš Ing. - Pontex s. r. o. wrote:
> Hello,
>
> On Thu, 16 Jul 2015 10:27:48 +0200, Hans Hagen <pragma@wxs.nl> wrote:
>
>> On 7/16/2015 10:20 AM, Procházka Lukáš Ing. - Pontex s. r. o. wrote:
>>> Hello,
>>>
>>> why this code:
>>>
>>> ----
>>> \def\GG{\ifmmode G_G\else$\GG$\fi}
>>
>> because in math mode \GG expands \GG which expands \GG ....
>
> I want to just pass G_G in math mode, so it seems to me that "\ifmmode
> G_G..." does the check.
>
> The macro should write G + "lower index G" for both math and non-math
> scope.

so

\def\GG{\ifmmode G_G\else$G\low{G}$\fi}

or

\def\GG{\mathematics{G_G}}

now you do a check in \GG and then call for \GG again so \GG again does 
a check etc etc ... you just enforce endless recursion

> And, in non math scope, the macro should just enclose itself by $...$
> (or \m{...})...
>
> And, this works well in TeX code:
>
> ----
> \def\GG{\ifmmode G_G\else$\GG$\fi}
>
> \starttext
>    \GG $\GG$
>    \startitemize[][]
>      \sym{\GG} \GG
>      \sym{$\GG$} $\GG$
>      \sym{\m{\GG}} \m{\GG}
>      \item End
>    \stopitemize
> \stoptext
> ----
>
> So how to rewrite the itemization into Lua?
>
>> maybe you mean:
>>
>> \def\GG{\ifmmode G_G\else$GG$\fi}
>
> ... Could be \def\GG{\ifmmode G_G\else$G_G$\fi}, too, but why not
> \def\GG{\ifmmode G_G\else$\GG$\fi} (seems to me be simpler as the macro
> definition - which may be more complicated - appears only once)?
>
> Lukas
>
>
>>> \starttext
>>>    \GG $\GG$ % OK
>>>    \startitemize[][]
>>>      \sym{\GG} \GG % OK
>>>    \stopitemize
>>>
>>>    \startluacode
>>>      context.startitemize()
>>>        context.sym([[\GG]])
>>>        context("Abc")
>>>      context.stopitemize()
>>>    \stopluacode
>>> \stoptext
>>> ----
>>>
>>> fails with:
>>>
>>> "
>>> ....
>>> tex error       > tex error on line 14 in file
>>> d://Lukas/Docs/Ull-Gra/Test/Abr.mkiv: ! TeX capacity exceeded, sorry
>>> [input stack size=10000]
>>>
>>>
>>> \GG ->\ifmmode G_G\else $\GG
>>>                               $\fi
>>> \GG ->\ifmmode G_G\else $\GG
>>>                               $\fi
>>> \GG ->\ifmmode G_G\else $\GG
>>>                               $\fi
>>> \GG ->\ifmmode G_G\else $\GG
>>>                               $\fi
>>> \GG ->\ifmmode G_G\else $\GG
>>>                               $\fi
>>> \GG ->\ifmmode G_G\else $\GG
>>>                               $\fi
>>> ....
>>> l.14   \stopluacode
>>> ....
>>> "
>>>
>>> I need to call "\GG" from within Lua, and the real macro name is created
>>> run-time (contrary to this MNWE; so to be \GG, \HH, \Fik etc. - the name
>>> is obtained from a Lua table as a string).
>>>
>>> I cannot understand why all TeX calls are OK but the problem appears in
>>> Lua block...
>>>
>>> Best regards,
>>>
>>> Lukas
>>>
>>>
>>>
>>>
>>> ___________________________________________________________________________________
>>>
>>> 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://tex.aanhet.net
>>> archive  : http://foundry.supelec.fr/projects/contextrev/
>>> wiki     : http://contextgarden.net
>>> ___________________________________________________________________________________
>>>
>>>
>>
>>
>
>


-- 

-----------------------------------------------------------------
                                           Hans Hagen | PRAGMA ADE
               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
     tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com
                                              | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
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://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: TeX capacity exceeded - in Lua block - why?
  2015-07-16  9:03     ` luigi scarso
@ 2015-07-16 10:13       ` Procházka Lukáš Ing. - Pontex s. r. o.
  2015-07-16 10:45         ` Hans Hagen
                           ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Procházka Lukáš Ing. - Pontex s. r. o. @ 2015-07-16 10:13 UTC (permalink / raw)
  To: mailing list for ConTeXt users

Hello,

On Thu, 16 Jul 2015 11:03:05 +0200, luigi scarso <luigi.scarso@gmail.com> wrote:

>  \def\GG{\ifmmode G_G\else$\GG$\fi}
> means "define the macro \GG as G_G if mmmod is true,
> else as \GG "
> It's clear that you  always are in a situation where mmod is true, then \GG
> is replaced with  G_G

Well, I intended "replaced with $G_G$",
              not "replaced with  G_G";
so I thought this would force/ensure math mode and thus prevent infinite recursion.

> but as soon as you fall into "mmod not true" then you have infinite
> recursion.

Also, my observation was that my original macro worked well when called for TeX code (at various places of use:
   \GG $\GG$
   \startitemize[][]
     \sym{\GG} \GG
     \sym{$\GG$} $\GG$
     \sym{\m{\GG}} \m{\GG}
     \item End
   \stopitemize
)
but stopped working when called from Lua (?!).

@Hans:

This seems to be best solution - exactly what I wanted to achieve: \def\GG{\mathematics{G_G}}.

Thanks both for your help.

Best ragrds,

Lukas


-- 
Ing. Lukáš Procházka | mailto:LPr@pontex.cz
Pontex s. r. o.      | mailto:pontex@pontex.cz | http://www.pontex.cz
Bezová 1658
147 14 Praha 4

Tel: +420 241 096 751
Fax: +420 244 461 038

___________________________________________________________________________________
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://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: TeX capacity exceeded - in Lua block - why?
  2015-07-16 10:13       ` Procházka Lukáš Ing. - Pontex s. r. o.
@ 2015-07-16 10:45         ` Hans Hagen
  2015-07-16 10:52         ` Hans Hagen
  2015-07-16 13:29         ` luigi scarso
  2 siblings, 0 replies; 9+ messages in thread
From: Hans Hagen @ 2015-07-16 10:45 UTC (permalink / raw)
  To: mailing list for ConTeXt users

On 7/16/2015 12:13 PM, Procházka Lukáš Ing. - Pontex s. r. o. wrote:
> Hello,
>
> On Thu, 16 Jul 2015 11:03:05 +0200, luigi scarso
> <luigi.scarso@gmail.com> wrote:
>
>>  \def\GG{\ifmmode G_G\else$\GG$\fi}
>> means "define the macro \GG as G_G if mmmod is true,
>> else as \GG "
>> It's clear that you  always are in a situation where mmod is true,
>> then \GG
>> is replaced with  G_G
>
> Well, I intended "replaced with $G_G$",
>               not "replaced with  G_G";
> so I thought this would force/ensure math mode and thus prevent infinite
> recursion.
>
>> but as soon as you fall into "mmod not true" then you have infinite
>> recursion.
>
> Also, my observation was that my original macro worked well when called
> for TeX code (at various places of use:
>    \GG $\GG$
>    \startitemize[][]
>      \sym{\GG} \GG
>      \sym{$\GG$} $\GG$
>      \sym{\m{\GG}} \m{\GG}
>      \item End
>    \stopitemize
> )
> but stopped working when called from Lua (?!).

it all depends ... if you pass it in a way that it gets expanded you get 
already expansion at the write

you could try \unexpanded\def\GG then

it's hard to say what happens unless one sees the whole application (for 
which i have no time anyway)


> @Hans:
>
> This seems to be best solution - exactly what I wanted to achieve:
> \def\GG{\mathematics{G_G}}.
>
> Thanks both for your help.
>
> Best ragrds,
>
> Lukas
>
>


-- 

-----------------------------------------------------------------
                                           Hans Hagen | PRAGMA ADE
               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
     tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com
                                              | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
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://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: TeX capacity exceeded - in Lua block - why?
  2015-07-16 10:13       ` Procházka Lukáš Ing. - Pontex s. r. o.
  2015-07-16 10:45         ` Hans Hagen
@ 2015-07-16 10:52         ` Hans Hagen
  2015-07-16 13:29         ` luigi scarso
  2 siblings, 0 replies; 9+ messages in thread
From: Hans Hagen @ 2015-07-16 10:52 UTC (permalink / raw)
  To: mailing list for ConTeXt users

On 7/16/2015 12:13 PM, Procházka Lukáš Ing. - Pontex s. r. o. wrote:
> This seems to be best solution - exactly what I wanted to achieve:
> \def\GG{\mathematics{G_G}}.

compare these two:

\def\GG{\ifmmode G_G\else$\GG$\fi}

\starttext
     \edef\x{\GG}
\stoptext

and

\unexpanded\def\GG{\ifmmode G_G\else$\GG$\fi}

\starttext
     \edef\x{\GG}
\stoptext

so it all depends on usage

-----------------------------------------------------------------
                                           Hans Hagen | PRAGMA ADE
               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
     tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com
                                              | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
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://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: TeX capacity exceeded - in Lua block - why?
  2015-07-16 10:13       ` Procházka Lukáš Ing. - Pontex s. r. o.
  2015-07-16 10:45         ` Hans Hagen
  2015-07-16 10:52         ` Hans Hagen
@ 2015-07-16 13:29         ` luigi scarso
  2 siblings, 0 replies; 9+ messages in thread
From: luigi scarso @ 2015-07-16 13:29 UTC (permalink / raw)
  To: mailing list for ConTeXt users


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

On Thu, Jul 16, 2015 at 12:13 PM, Procházka Lukáš Ing. - Pontex s. r. o. <
LPr@pontex.cz> wrote:

> Hello,
>
> On Thu, 16 Jul 2015 11:03:05 +0200, luigi scarso <luigi.scarso@gmail.com>
> wrote:
>
>   \def\GG{\ifmmode G_G\else$\GG$\fi}
>> means "define the macro \GG as G_G if mmmod is true,
>> else as \GG "
>> It's clear that you  always are in a situation where mmod is true, then
>> \GG
>> is replaced with  G_G
>>
>
> Well, I intended "replaced with $G_G$",
>              not "replaced with  G_G";
> so I thought this would force/ensure math mode and thus prevent infinite
> recursion.
>
>  but as soon as you fall into "mmod not true" then you have infinite
>> recursion.
>>
>
> Also, my observation was that my original macro worked well when called
> for TeX code (at various places of use:
>   \GG $\GG$
>   \startitemize[][]
>     \sym{\GG} \GG
>     \sym{$\GG$} $\GG$
>     \sym{\m{\GG}} \m{\GG}
>     \item End
>   \stopitemize
> )
> but stopped working when called from Lua (?!).
>
>




\def\GG{\ifmmode G_G\else$\GG$\fi}
define a macro \GG with replacement text
\ifmmode G_G\else$\GG$\fi

In your use in TeX, \if is expanded:
if we  are in mmode then we have the expansion of G ,then  _  and then G.
If we are not in mmode, then we have the expansion of $ , so we enter in
mmode and then we have the expansion of \GG again.
In this second level of expansion, we are in mmod for sure and  so we end
again with G, _  and G.

We cannot know what happen in other situations.

For example, in
\edef\x{\GG} as shown by Hans,

at definition time the replacement text is expanded until possible.

If at definition time we are not in mmode,
this gives the endless sequence

\GG ->\ifmmode G_G\else $\GG $\fi
{\ifmmode: (level 1) entered on line 9}
{false}
{\else: \ifmmode (level 1) entered on line 9}

\GG ->\ifmmode G_G\else $\GG $\fi
{\ifmmode: (level 2) entered on line 9}
{false}
{\else: \ifmmode (level 2) entered on line 9}

\GG ->\ifmmode G_G\else $\GG $\fi
{\ifmmode: (level 3) entered on line 9}
{false}
{\else: \ifmmode (level 3) entered on line 9}

\GG ->\ifmmode G_G\else $\GG $\fi ....

because in this case the first $ is just accumulated, not interpretated ---
i.e. doesn't trig the change of state to math mode.
To avoid expansion we can say
\edef\x{\noexpand\GG}
which means that the replacement text of \x  is \GG .


Perhaps we can see better here:
\def\HH{\ifmmode H_H\else$H_H$\fi}

\edef\x{\HH}
means,
if we are not in mmode when \x is defined,

\HH ->\ifmmode H_H\else $H_H$\fi
{\ifmmode: (level 1) entered on line 10}
{false}
{\else: \ifmmode (level 1) entered on line 10}
{\fi: \ifmmode (level 1) entered on line 10}
{changing \x=undefined}
{into \x=macro:->$H_H$}

so the replacement text of \x is $H_H$





-- 
luigi

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

[-- Attachment #2: Type: text/plain, Size: 485 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://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2015-07-16 13:29 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-07-16  8:20 TeX capacity exceeded - in Lua block - why? Procházka Lukáš Ing. - Pontex s. r. o.
2015-07-16  8:27 ` Hans Hagen
2015-07-16  8:55   ` Procházka Lukáš Ing. - Pontex s. r. o.
2015-07-16  9:03     ` luigi scarso
2015-07-16 10:13       ` Procházka Lukáš Ing. - Pontex s. r. o.
2015-07-16 10:45         ` Hans Hagen
2015-07-16 10:52         ` Hans Hagen
2015-07-16 13:29         ` luigi scarso
2015-07-16  9:29     ` Hans Hagen

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).