This trick spares on tokens and avoids problems with termination of constants.
For instance, LaTeX has \chardef\@ne=1
and \mathchardef\@M=10000
; memory is less cluttered if \penalty\@M
is stored instead of
\def\nobreak{\penalty10000 }
(note the extra space, see How to use active character properly? for an example of where this space is important).
Note also that \penalty\@M
is already finished and TeX will not look for a space token to remove, because \@M
is unexpandable.
In your case, it would be the same doing
\edef\myh@us@catcode{\the\catcode`\_ }
...
\catcode`\_=\myh@us@catcode
Also \def\active{13 }
would be a substitute of \chardef\active=13
, but using the latter avoids expansion problems.
However, the first line of the code you show should better be
\chardef\myh@us@catcode=\catcode`\_
because the \the
serves no purpose: when TeX is looking for a <number>
, primitives such as \catcode
, \lccode
and similar are allowed and will return the value, without the extra step of converting it into its decimal representation.
And, yes: I'm the author of hyplain
. :-) A slip. ;-)