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