---
myst:
html_meta:
keywords: LaTeX,programming"
---
# Subverting a token register
A common requirement is to "subvert" a token register that other macros may use. The requirement arises when you want to add something to a system token register (`\output` or `\every*`), but know that other macros use the token register, too. (A common requirement is to work on `\everypar`, but LaTeX changes `\everypar` at every touch and turn.)
The following technique, due to David Kastrup, does what you need, and allows an independent package to play the exact same game :
```{noedit}
\let\mypkg@@everypar\everypar
\newtoks\mypkg@everypar
\mypkg@everypar\expandafter{\the\everypar}
\mypkg@@everypar{\mypkgs@ownstuff\the\mypkg@everypar}
\def\mypkgs@ownstuff{%
⟨stuff to do at the start of the token register⟩%
}
\let\everypar\mypkg@everypar
```
As you can see, the package (`mypkg`)
- creates an alias for the existing "system" `\everypar` (which is frozen into any surrounding environment, which will carry on using the original);
- creates a token register to subvert `\everypar` and initialises it with the current contents of `\everypar`;
- sets the "old `\everypar` to execute its own extra code, as well as the contents of its own token register;
- defines the macro for the extra code; and
- points the token `\everypar` at the new token register;
and away we go.
The form `\mypkg@...` is (sort of) blessed for LaTeX package internal names, which is why this example uses macros of that form.
:::{sources}
[Subverting a token register](faquk:FAQ-subverttoks)
:::