[OS X TeX] A problem with catcodes

Morten Høgholm morten.hoegholm at gmail.com
Thu Apr 12 12:20:45 EDT 2007


On 4/12/07, Ross Moore <ross at ics.mq.edu.au> wrote:

> > \def\bbb #1{#1}
>
>   ... the argument is read-in when \bbb is encountered ...
>
> >
> > \begin{document}
> >
> > $\aaa .$
> >
> > \bbb{$\aaa .$}
>
>    ... so this cannot work as you want it to.

Yes it can, one just have to unlock the catcodes again.

\documentclass{article}

{
  \catcode`.=\active
  \gdef\aaa {\catcode`.=\active\let.=\times}
}

\def\ReactivateChars#1{%
  \begingroup
  \endlinechar=-1\relax% otherwise \endlinechar is inserted
  % can also be prevented by \noexpand at the end but requires
  % \endlinechar to be -1, 13 or 32 and \everyoef to be empty.
  \everyeof{}% clear it, just to be safe
  \scantokens{\endgroup#1}%
}

\def\bbb #1{\ReactivateChars{#1}}


\begin{document}

$\aaa .$

\bbb{$\aaa .$}no space added I hope

\bbb{$\aaa .$} normal space added I hope

\end{document}


The problem here of course being that then it only works for commands
being augmented with \ReactivateChars. I could do something like that
for xparse though since there I have control over all arguments being
parsed at the document level.
-- 
Morten

------------------------- Helpful Info -------------------------
Mac-TeX Website: http://www.esm.psu.edu/mac-tex/
TeX FAQ: http://www.tex.ac.uk/faq
List Archive: http://tug.org/pipermail/macostex-archives/
List Reminders & Etiquette: http://www.esm.psu.edu/mac-tex/list/





More information about the MacOSX-TeX mailing list