I see. Thanks for the explanation. So the following works: ------------------------------- \unprotect \setvalue{startNotes}% {\global\settrue\c_page_comment_enabled \grabbufferdatadirect{pagecomment}{startpagecomment}{stopNotes}} \protect \def\stopNotes{} ------------------------------ What does the second argument to \grabbufferdatadirect mean? Nothing changes when I modify that. The point of redefining the pagecomment environment for me was to style it a bit: add \righttoleft at the beginning, and surround the content in startstopnarrower. How can I inject prepend/append to a buffer's content? The solution I can think of is to use a different buffer "pagecomment_internal" in the above definition, and then build buffer "pagecomment" using that. Thanks, ~MHB On Sat, Apr 27, 2019 at 1:24 AM Wolfgang Schuster < wolfgang.schuster.lists@gmail.com> wrote: > Mohammad Hossein Bateni schrieb am 27.04.2019 um 05:16: > > Hi, > > > > Look at the following MWE: > > > > > > \setuppagecomment[state=start,location=right] > > %\definestartstop[Notes] > > %[before=\startpagecomment,after=\stoppagecomment] > > \def\startNotes{\startpagecomment} > > \def\stopNotes{\stoppagecomment} > > > > \starttext > > \input knuth > > \startpagecomment > > Hello > > \stoppagecomment > > \page > > \input tufte > > \startNotes > > Testing > > \stopNotes > > \stoptext > > > > > > This snippet does not compile. Page comments work when I use the > > commands \startpagecomment and \stoppagecomment directly (like in the > > first page), but when I invoke via macros (as in the second page), > > ConTeXt produces errors. > > > > What is wrong there? > > The pagecomment environment uses the buffer mechanism to store the content > of the environment but a limitation of buffers is that you can't put > them into other > commands because the scan for a certain delimiter, e.g. \stoppagecomment. > > Wolfgang > >