[texhax] A macro programming question

Paul Isambert zappathustra at free.fr
Sun Apr 11 10:30:05 CEST 2010

A little hack on Wolfgang's solution to allow space after the box 

{\def\:{\global\let\spacechar= }\: }
% There's already such an implicit space in all formats, I believe, but 
let's play safe.
% The previous line doesn't end with % on purpose!

Wolfgang's code for the box material is troublesome if \endR has to 
retrieve values locally set in that material; however I can't see 
another solution. We can't use a \toks to store the material, since it 
should be closed by an explicit "}", whereas  the box can be closed by 
\egroup. Looping over the material and adding it character by character 
in a macro or token list until we find an \egroup or "}" won't do if for 
instance we stumble upon "\def\foo{...}", because we won't be able to 
add the braces... unless we use e-TeX, whose "default-engine-ness" 
should probably be taken for granted now, but that's another matter.

I can't understand why you make everything happen inside a group, 
Wolfgang. Is that because you use \toks0 as a scratch? Then wouldn't it 
simpler to use our own token list and remove the group?


Wolfgang Schuster a écrit :
> Am 10.04.10 18:41, schrieb Vafa Khalighi:
>> Is not there a way that this \hboxR can accept \bgroup and \egroup? 
>> i.e. \hboxR\bgroup This is a test\egroup
> \def\beginR{B}
> \def\endR  {E}
> \def\hboxR{\bgroup\toks0={}\futurelet\next\dohboxR}
> \def\dohboxR
>   {\ifx\next\bgroup
>      \expandafter\dodohboxR
>    \else
>      \expandafter\nodohboxR
>    \fi}
> \def\dodohboxR
> {\hbox\the\toks0\bgroup\beginR\bgroup\aftergroup\endR\aftergroup\egroup\aftergroup\egroup\let\next=} 
> \def\nodohboxR#1%
>   {\toks0=\expandafter{\the\toks0 #1}%
>    \futurelet\next\dohboxR}
> \hboxR{a}
> \hboxR to 4cm{a}
> \hboxR spread 1cm{a}
> \hboxR\bgroup a\egroup
> \hboxR to 4cm\bgroup a\egroup
> \hboxR spread 1cm\bgroup a\egroup
> \bye
> Spaces after the value (e.g. \hboxR to 3cm {...}) are not allowed in 
> this solution.
> Wolfgang
> _______________________________________________
> TeX FAQ: http://www.tex.ac.uk/faq
> Mailing list archives: http://tug.org/pipermail/texhax/
> More links: http://tug.org/begin.html
> Automated subscription management: http://tug.org/mailman/listinfo/texhax
> Human mailing list managers: postmaster at tug.org

More information about the texhax mailing list