<div dir="ltr"><div>A similar test</div><div><br></div><div><br></div><div><br>\def\xxx{\aftergroup X\global\let\xxx\relax}<br><br>\output{\xxx\plainoutput}<br><br>AAA<br><br>\break<br><br>BBB<br><br>\bye</div><div><br></div><div><br></div><div><br></div><div><br></div><div>previously X appeared on page 2, now X is lost and does not appear.</div><div><br></div><div>David</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, 24 Mar 2024 at 19:54, Frank Mittelbach <<a href="mailto:frank.mittelbach@latex-project.org">frank.mittelbach@latex-project.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Am 24.03.24 um 20:47 schrieb David Carlisle:<br>
> <br>
> It appears that the change<br>
> <br>
> <br>
> <a href="https://github.com/TeX-Live/texlive-source/commit/d17e5e0968269f781f3fe972b705fff43ea2e139" rel="noreferrer" target="_blank">https://github.com/TeX-Live/texlive-source/commit/d17e5e0968269f781f3fe972b705fff43ea2e139</a> <<a href="https://github.com/TeX-Live/texlive-source/commit/d17e5e0968269f781f3fe972b705fff43ea2e139" rel="noreferrer" target="_blank">https://github.com/TeX-Live/texlive-source/commit/d17e5e0968269f781f3fe972b705fff43ea2e139</a>><br>
> <br>
> avoid crashing on devious uses of \output and write braces, from DRF …<br>
> <br>
> breaks the afterpage package that has been part of the core latex2e <br>
> release since the start.<br>
> <br>
> see<br>
> <br>
> <a href="https://github.com/latex3/latex2e/issues/1311" rel="noreferrer" target="_blank">https://github.com/latex3/latex2e/issues/1311</a> <br>
> <<a href="https://github.com/latex3/latex2e/issues/1311" rel="noreferrer" target="_blank">https://github.com/latex3/latex2e/issues/1311</a>><br>
> <br>
> Can this be reverted/adjusted so the package still works?<br>
> <br>
> \documentclass{report}<br>
> \usepackage{afterpage}<br>
> \begin{document}<br>
> Page \thepage<br>
> \afterpage{Hi!}<br>
> \newpage<br>
> Page \thepage<br>
> \newpage<br>
> Page \thepage<br>
> \end{document}<br>
> <br>
> produces 3 pages  with Hi on page 2 in all previous releases, but <br>
> produces 4 pages with Hi on page 4 in tl2024<br>
<br>
<br>
Basically it seems that the change  stops \aftergroup working inside the <br>
OR, i.e., an \aftergroup in the output routine is simply lost instead of <br>
being executed after the output routine has ended.<br>
<br>
Example, based on the example given in the commit:<br>
<br>
\catcode`\{=1 \catcode`\}=2<br>
\def\makepage{<br>
  \hrule width 2in height 1in<br>
  \vskip 1in plus 10in<br>
  \hrule width 2in height 1in<br>
  \penalty-10000<br>
}<br>
\output{\global\advance\count0 by 1 \shipout\box255\extra}<br>
\let\lb={<br>
\let\rb=}<br>
\message{RELAX}<br>
\let\extra=\relax<br>
\makepage<br>
\message{DONE_RELAX}<br>
\message{AFTERGROUP}<br>
\def\extra{\aftergroup\foo}              % <--- this should produce a<br>
                                          %      undefined error later<br>
\makepage<br>
\message{DONE AFTERGROUP -- foo lost}    % <--- but it doesn't<br>
\message{AFTERGROUP 2}<br>
\def\extra{\aftergroup\foo}<br>
\def\foo{\aftergroup\foofoo}<br>
\makepage<br>
\message{DONE AFTERGROUP 2 -- foo lost}<br>
\message{EXTRA_RIGHT_BRACE}<br>
\let\extra=}<br>
\makepage<br>
\message{DONE_EXTRA_RIGHTBRACE}<br>
\message{EXTRA_LEFT_BRACE}<br>
\let\extra={<br>
\makepage<br>
<br>
<br>
--------<br>
<br>
frank<br>
</blockquote></div>