Henri Menke
30. Januar 2018 um 21:12
On Tue, 2018-01-30 at 11:58 +0100, Hans Hagen wrote:
On 1/30/2018 11:34 AM, Henri Menke wrote:
On 01/30/2018 09:17 PM, Hans Hagen wrote:
On 1/30/2018 2:54 AM, Henri Menke wrote:
Dear list,

the title says it all.  Please add \ignorespaces in a place you deem
appropriate.  MWE is below.
sometimes you will also add \removeuwantedspaces in the stop
I'm confused.  Does that mean there is going to be a fix?
no, why should there be? spaces are never ignored after the last [...] 
that is checked for unless a command has an explicit \ignorespaces

I'm not convinced.  Both "before" and "commands" see a \relax and therefore
\ignorespaces is dropped.  I can put \removeunwantedspaces there but that
deletes the space before \start.  The \framed command correctly drops the space
after the options.

---

\definestartstop
  [spurious space a]
  [before=\ignorespaces,
   after=\removeunwantedspaces]

\definestartstop
  [spurious space b]
  [before=\removeunwantedspaces,
   after=\removeunwantedspaces]

\starttext

Hello Foo Bar World

Hello \start[spurious space a] Foo Bar \stop\ World
%   ^^^ neither space        ^^^ is skipped

Hello \start[spurious space b] Foo Bar \stop\ World
%   ^^^ skips this space     ^^^ instead of this

Hello \startframed[offset=overlay] Foo Bar \stopframed\ World
% That's the behaviour I'm looking for.

\stoptext

You assume \start[<...>] ... \stop is linked to \definestartstop but this isn’t the case,
what the environment does is to generate a start-command with the argument
but this works for every environment, e.g. \start[itemize] ... \stop does the same
as \startitemize ... \stopitemize.

Adding the \ignorespace is not an option in this case because it would effect
all environments which you use with the argument for \start.

Wolfgang