Uma necessidade comum é “subverter” um registro de token que outras macros possam usar. O necessidade surge quando você quer adicionar algo a um registro de token do sistema (\output ou \every*), mas sabe que outras macros também usam o registro de token. (Um requisito comum é trabalhar no \everypar, mas o LaTeX altera o \everypar constantemente.)
A técnica a seguir, de David Kastrup, faz o que você precisa, e permite que um pacote independente jogue exatamente o mesmo jogo:
\let\mypkg@@everypar\everypar
\newtoks\mypkg@everypar
\mypkg@everypar\expandafter{\the\everypar}
\mypkg@@everypar{\mypkgs@ownstuff\the\mypkg@everypar}
\def\mypkgs@ownstuff{%
%
}
\let\everypar\mypkg@everypar
Como você pode ver, o pacote (mypkg)
\everypar
existente (que é congelado em qualquer ambiente circundante, que continuará usando o original);
\everypar e o inicializa com o atual conteúdo do \everypar;
\everypar para executar seu próprio código extra, bem como o conteúdo de seu próprio registro de token;
\everypar para o novo registro de token.
O formato \mypkg@... é (mais ou menos) abençoado para nomes internos do pacote LaTeX , e é por isso que este exemplo usa macros desse formato.
This question on the Web: http://latex.net.br/faq/FAQ-subverttoks.html
Do you have any question? Ask on: latex.net.br - we love qood questions!