[NTG-context] Bad interaction between new interpretation of underscore and modules

Aditya Mahajan adityam at umich.edu
Thu Jan 13 23:43:47 CET 2011


On Thu, 13 Jan 2011, Wolfgang Schuster wrote:

>
> Am 13.01.2011 um 17:18 schrieb Mathieu Boespflug:
>
>> Hi all,
>>
>> today's beta introduced a really strange problem. Consider two source files:
>>
>> definitions.tex:
>> \startmodule[definitions]
>> \def\lambdax{\lambda_x}
>> \stopmodule[definitions]
>>
>> main.tex:
>> \usemodule[definitions]
>> \starttext
>> blah $\lambdax$ blah.
>> \stoptext
>>
>> This results in the following compile error:
>>
>> ! Undefined control sequence.
>> \lambdax ->\lambda_x
>>
>> l.5 blah $\lambdax
>>                  $ blah.
>> ?
>>
>> However, if you change "\usemodule[definitions]" into "\input
>> definitions" instead, then there is no compile error! My understanding
>> is that the underscore is a valid character for macro names now
>> outside of math mode, which is what is causing the problem. But I
>> really don't understand what magic is going on in the modules code to
>> trigger this.
>>
>> I would be very interested in an explanation of what is going on.
>
> You need \normalsubscript in your module. You define a command and
> in this case it doesn’t matter that you plan to use it in math mode,
> the _ is now a normal letter like “a” and this won’t change when you
> call \lambdax in your document.
>
> Write
>
>  \def\lambdax{\lambda\normalsubscript x}
>
> and it will work again.

Untested:

\def\lambdax{\math{\lambda_x}}

should also work.

Aditya


More information about the ntg-context mailing list