[NTG-context] A few questions about eating spaces in macros

Tue Jan 24 14:45:26 CET 2006

Hans Hagen wrote:
>
>> Hello!
>>
>> I have a few questions about ignoring unnecessary spaces and blank
>> lines. The following example illustrates my problem. In the first
>> start/stop pair text after \startcommand is not bold as it should be,
>> in the second it is bold but blank line is before. I've tried to fix
>> this with various manipulations with \noindent with moderate success.
>>
>> Another problem is necessity to explicitly add % character before
>> \stopcommand to ignore newline. How to do this inside macro with this
>> combination of lines and sidebar?
>>
>> Thanks in advance for any suggestions.
>>
>> ---------
>>
>> \setuplines[before=,after=]
>>
>> \def\startcommand{\dosingleargument\dostartcommand}
>>
>> \def\dostartcommand[#1]%
>>   {\bgroup\defineshortcut[style=bold]#1\startlines\startsidebar}
>>
>> \def\stopcommand{\stopsidebar\stoplines\egroup}
>>
>> \starttext
>>
>> \startcommand
>> <this must be bold>
>> \input knuth
>> <this is bold>%
>> \stopcommand
>>
>> some text
>>
>> \startcommand[arg]
>> <this is bold indeed but with a blank line before>
>> \input knuth
>> \stopcommand
>>
>> \stoptext
>>
>>
> \ignorespaces ....
>
> .... \removeunwantedspaces
>
> Hans
>

After some fiddling I've found that it is not spaces that interfere --
it's newlines. Is there a mechanism to ignore last newline as:

text text
\commandhere

to automatically become

text text\commandhere

and some mechanism to ignore future newline

\somecommand
text here

to become

\somecommand text here

??

Also I've found that for the very first example to work there is a need
to manually add \leavevmode or something like this:

\startcommand
\leavevmode<this must be bold>

Maybe if there was an \ignorespaces after argument eating it would solve
problems.

--