plain always has character 12 (form feed) and 126 (tilde) as active which is not surprising.
In LaTeX the situation depends on the engine used. With pdflatex characters 128-225 are active for encoding support; in xelatex and lualatex character 173 (U+00AD "soft hyphen") is declared active and given the meaning \- (discretionary hyphen).
In table form:
| format / engine |
tex |
pdftex |
xetex |
luatex |
| plain |
12 126 |
12 126 |
12 126 |
12 126 |
| LaTeX |
/ |
1-8 11 12 14-31 126 128-255 |
12 126 173 |
12 126 173 |
| conTeXt |
/ |
/ |
/ |
124 126 |
| AmS-TeX |
/ |
12 64 126 |
/ |
/ |
| OpTeX |
/ |
/ |
/ |
126 160 |
Overall only ~ seems to be universal.
The following test file is used:
\ifx\documentclass\undefined \else
\documentclass{article}
\begin{document}
\fi
\csname starttext\endcsname
\newcount\curr
\newcount\upper
\ifx\numexpr\undefined
\upper="100
\def\n{^^J}
\else
\ifx\pdftexbanner\undefined
\upper="10000
\edef\n{\Uchar"000A}
\else
\upper="100
\def\n{^^J}
\fi
\fi
\newlinechar=10
\message{\n\n}
\count0=0
\loop
\ifnum\catcode\curr=\active
\message{ \the\curr}
\fi
\advance\curr 1
\ifnum\curr<\upper \repeat
\message{\n\n}
\csname stoptext\endcsname \end{document}
~is the only one usable in latex. In pdftex all characters above 127 are active but if you mess with them you will break the encoding support. – David Carlisle May 20 '22 at 23:21~can be changed on a whim. – Steven B. Segletes May 20 '22 at 23:26