Welcome to the UK List of
TeX Frequently Asked Questions
on the Web

Searching

The index of Frequently Asked Questions about TeX is searchable.

Please enter your keyword here:   then press here: ,    or:
Google

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:

\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)

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.


Go to previous question, or next question

Go to FAQ home.

URL for this question: http://www.tex.ac.uk/cgi-bin/texfaq2html?label=subverttoks

Comments, suggestions, or error reports? - see “how to improve the FAQ”.

This is FAQ version 3.27, released on 2013-06-07.