# \let\newtoks=\relax % this allows plain.tex to be read in twice

``````\let\newtoks=\relax % this allows plain.tex to be read in twice
...
\let\+=\relax % in case this file is being read in twice
``````

I came across this when I was studying `plain.tex`. I have some questions:

(1) Under what circumstances do we need to read `plain.tex` twice?

(2) The purpose of these `\let` commands, as far as I can see, is to cancel the previous `\outer` definition of `\newtoks` and `\+`, so that they can be used to define other macros (`\newhelp` and `\sett@b`, respectively). Are there any other purposes?

(3) Are there any more such lines in `plain.tex`?

You see similar in this answer

Is there any software that converts latex file to tex file?

Note that isn't exactly inputting `plain.tex` twice but it is inputting code derived from plain tex into plain, so the same issues arise.

1. The most likely case of inputting putting plain twice is a file for a custom format that has

``````\input plain
``````

so that it can be run from initex/virtex to initialise a format, but might also be input in a document in a normal plain tex command so input to a format already built with plain.

2. yes

3. no

• `\outer` is the most useless, annoying, "feature" in the whole TeX language. Sep 12 '18 at 8:27
• I guess back in the day it was extremely useful because you didn't have to wait for half an hour for TeX to realize that there is a missing `}` somewhere. Nevertheless, I would have appreciated a `\noouter` primitive which lets you use a control sequence defined `\outer` in a non-`\outer` context. Or if it would have at least been allowed to use `\outer` control sequences within outer `\outer` control sequences. This would facilitate the definition of monadic constructs. Sep 12 '18 at 8:49