To which atoms correspond \left and \right in \showlists?
You wrote,
[The status of
\left|
] cannot beOpen
..., because according to the table on p.170 of TeXbookOpen
cannot be followed byBin
(the table entry is*
)
This interpretation of the table on p. 170 of the TeXbook is not entirely correct. See, e.g., @egreg's [who else?!] follow-up comment to me below his answer to the question What's the right space to right the alignment of a right aligned align environment?.
The better way to interpret the meaning of *
in the table on p. 170 of the TeXbook is this: If TeX encounters an "impossible combination" -- such as open
followed by bin
-- then the status of the bin
atom is changed to ord
.
Let's apply this to \left|-\infty\right|
:
\left|
has statusmathopen
.-
has statusmathbin
by default. However, becauseopen/bin
is an "impossible" combination, the status of-
is changed toord
. Observe that the end result is exactly as it should be, since-
is a unary operator, not a binary operator, in the formula at hand.\infty
has statusord
. No problem either, since no extra space is inserted between-
and\infty
-- as is appropriate for a unary operator.\right|
has statusmathclose
; still no problem.
If you modify your example into
\tracingonline=1 \showboxdepth=\maxdimen \showboxbreadth=\maxdimen
$\mathopen|-\infty\mathclose| \left|-\infty\right|\showlists$\showlists
\end
you get on the terminal
### math mode entered at line 3
\mathopen
.\fam2 j
\mathbin
.\fam2 ^^@
\mathord
.\fam2 1
\mathclose
.\fam2 j
\mathinner
.\left"26A30C
.\mathbin
..\fam2 ^^@
.\mathord
..\fam2 1
.\right"26A30C
which should answer your question: the “change” of the \mathbin
atom happens later, when spaces are being inserted during the conversion of the math list to a horizontal list. Indeed, the second \showlists
yields
### horizontal mode entered at line 3
\hbox(0.0+0.0)x20.0
\mathon
\tensy j
\tensy ^^@
\tensy 1
\tensy j
\glue(\thinmuskip) 1.66663
\hbox(7.5+2.5)x23.33339
.\hbox(7.5+2.5)x2.77779
..\tensy j
.\tensy ^^@
.\tensy 1
.\hbox(7.5+2.5)x2.77779
..\tensy j
\mathoff
Note that the ASCII code of j
is "6A
, so in all cases the same glyph is used to realize the vertical bar.