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:
Como você pode ver, o pacote (mypkg)\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
\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!