[texhax] making LaTeX-environment from existing command

Morten Høgholm morten.hoegholm at gmail.com
Thu Aug 16 12:42:53 CEST 2007

On Thu, 16 Aug 2007 11:37:48 +0200, Alexander Grahn wrote:

>> Unfortunately, I cannot put unbalanced {'s and }'s into the begdef and
>> enddef parameters of \newenvironment.
> I must correct myself, the begdef and enddef parameters tolerate opening
> and closing braces. The following code seems to work as expected:
> \newenvironment{storetoks}{\global\mytoks{}{}}

This executes
at the beginning of the environment. What happes afterwards depends on  
what follows in your definition, if its a blank line it merely inserts a  
\par token.

\setbox works differently as it keeps typesetting while looking for a  
token with meaning }, this is why \egroup is used and it works. toks  
registers on the other hand need balanced text from the input and so can't  
use a } buried in some macro definition.

Look for amsmath's way of grabbing the contents of an environment:


\newenvironment{testing}{\collect at body\testfunc}{}
\newcommand\testfunc[1]{Here is the contents: ``#1''}


``\the\mytoks'' %oops, it's empty.

   Hello World.

More information about the texhax mailing list