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