[NTG-context] How can I remove a blank leading line from a buffer

Henri Menke henrimenke at gmail.com
Mon Aug 13 05:46:50 CEST 2018



On 13/08/18 15:18, Rik Kabel wrote:
> %% How can one remove blank lines at the start of a buffer so that
> %%   commands that grab a buffer can be used in the same way as, for
> %%   example, \startparagraph...\stopparagraph, which allow blank
> %%   lines around the content?
> %%
> %% The problem appears when an optional argument is allowed but none
> %%   is provided. Adding \relax does not help; adding empty brackets
> %%   does. I see no way to distinguish between a buffer without
> %%   leading blank lines and a buffer that was created when brackets
> %%   are provided.
> %%
> %% \inlinebuffer handles the leading blank lines when there is
> %%   nothing prepended, but I need to prepend. (It also handles the
> %%   unwanted trailing line, but that is not an issue here).
> %%
> %% How can I unpack the buffer, apply the equivalent functions of
> %%   ignorespaspaces and removeunwantedspaces to it, and repack it?
> %%   The buffer may contain internal blank lines and macros, and
> %%   those should be retained. Or, is there already a function to
> %%   strip a buffer in the manner that string.strip does a string?
> 
> \setupwhitespace[none]
> \setupindenting[none]
> \define\Mark{\color[middlegray]{\itb¿\ }}
> \define\First{nothing yet}
> \define\Arg{nothing yet}
> \setuplanguage[en][spacing=packed]
> 
> \starttexdefinition unexpanded startBufTest
>    \bgroup
>    \dosingleempty\dostartBufTest
> \stoptexdefinition
> 
> \starttexdefinition dostartBufTest [#SETUPS]
>    \doifsomethingelse{#{SETUPS}}
>                      {\define\Arg{yes}}
>                      {\define\Arg{no}}
>    \iffirstargument
>      \define\First{yes}
>    \else
>      \define\First{no}
>    \fi
>    \relax
>    \getrawparameters[BufTest][xx=yy,#SETUPS]
>    \grabbufferdata[TestBuffer][startBufTest][stopBufTest]
> \stoptexdefinition
> 
> \starttexdefinition stopBufTest
> 
>    \startparagraph
> 

% Ignore first \par
\def\par{\let\par\normalpar}

>      \dontleavehmode\llap{\Mark}\inlinebuffer[TestBuffer]
>      \ (first: \First, arg: \Arg)
> 
>    \stopparagraph
> 
>    \egroup
> \stoptexdefinition
> 
> \starttext
> 
> \startparagraph
> 
>    A starting paragraph.
> 
> \stopparagraph
> 
> \startBufTest
>    Buffer without blank lines.
> \stopBufTest
> 
> \startparagraph
> 
>    An intervening paragraph.
> 
> \stopparagraph
> 
> \startBufTest
> 
>    Buffer with blank lines.
> 
> \stopBufTest
> 
> \startparagraph
> 
>    An intervening paragraph.
> 
> \stopparagraph
> 
> \startBufTest\relax
> 
>    Buffer with \tex{relax}.
> 
> \stopBufTest
> 
> \startparagraph
> 
>    An intervening paragraph.
> 
> \stopparagraph
> 
> \startBufTest[]
> 
>    Buffer with \type{[]}.
> 
> \stopBufTest
> 
> \startparagraph
> 
>    An intervening paragraph.
> 
> \stopparagraph
> 
> \startBufTest[key=value]
> 
>    Buffer with \type{[key=value]}.
> 
> \stopBufTest
> 
> \startparagraph
> 
>    A closing paragraph.
> 
> \stopparagraph
> 
> \stoptext
> 
> \stopmode
> 
> %% --
> %% Rik Kabel
> 
> ___________________________________________________________________________________ 
> 
> If your question is of interest to others as well, please add an entry 
> to the Wiki!
> 
> maillist : ntg-context at ntg.nl / 
> http://www.ntg.nl/mailman/listinfo/ntg-context
> webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
> archive  : https://bitbucket.org/phg/context-mirror/commits/
> wiki     : http://contextgarden.net
> ___________________________________________________________________________________


More information about the ntg-context mailing list