Denis Maier via ntg-context schrieb am 15.01.2022 um 13:04:

Hi all,

 

I have sources that look like this:

 

%%%%%%%%%%%%%%%%%%%%%

<?xml version="1.0" encoding="UTF-8"?>

<article>

   <p>Bla Bla Bla</p>

   <p>

      <underline>

         <italic>Bla</italic>

      </underline>, Bla Bla.</p>

</article>

%%%%%%%%%%%%%%%%%%%%%

 

Typesetting this with context gives me a spurious space after the underlined Bla in italics.


There is no spurious space, the line break is just converted to a space and I see no reason why this shouldn't happen. To remove space before or after certain parts of text within a paragraph you can use the \removeunwantedspace and \ignorespaces commands.

%%%% begin example
\starttexdefinition RemovePreceding #1
    \removeunwantedspaces
    #1
\stoptexdefinition

\starttexdefinition RemoveFollowing #1
    #1
    \ignorespaces
\stoptexdefinition

\starttext

Bla \RemovePreceding{Bla} Bla

Bla \RemoveFollowing{Bla} Bla

\stoptext
%%%% end example

When only  following spaces are a problem a better alternative to \ignorespace is \autoinsertnextspace which checks the following token which ensures there is space when the next character is punctuation.

%%%% begin example
\starttexdefinition Italic #1
    \emphasized{#1}
    \autoinsertnextspace
\stoptexdefinition

\starttexdefinition Underbar #1
    \underbar{#1}
\stoptexdefinition

\starttext

Bla Bla Bla

\Underbar{\Italic{Bla} , Bla Bla.}

\stoptext
%%%% end example

Wolfgang