On 8/13/2018 5:18 AM, 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
\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
\startparagraph
% \dontleavehmode\llap{\Mark}\inlinebuffer[TestBuffer]
% \ (first: \First, arg: \Arg)
\margintext{\Mark}
\setupparagraphintro[first][(first: \First, arg: \Arg)]
%\setupparagraphintro[next][(first: \First, arg: \Arg)]
\getbuffer[TestBuffer]
\stopparagraph
-----------------------------------------------------------------
Hans Hagen | PRAGMA ADE
Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the
Wiki!
maillist : ntg-context@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
___________________________________________________________________________________