# verbatim overlays of powerdot do not comply with TeXlive 2020 latex, whereas everything's fine with latex in TeXlive 2019

Edit: As of version 1.6 of powerdot, this problem has been fixed. The update is already on CTAN. Thanks for the ideas.

I have realized that verbatim overlays in powerdot does not work with TexLive 2020. More precisely;

• LaTeX2e <2020-02-02> patch level 5 (in TeXLive 2019) compiles the MWE fine, whereas
• LaTeX2e <2020-10-01> patch level 4 (in TeXLive 2020) cannot.

Interestingly, the output that should be written to the .aux file is printed on the command line. (Possibly, directed to stdout for some reason instead of the .aux file) Of course there are many changes regarding paths, version and such, but the important parts of the outputs are as follows:

For TeXlive 2019:

LaTeX Warning: Reference lastslide' on page 1 undefined on input line 12.

(./mwe.vrb) [1]

LaTeX Warning: Reference lastslide' on page 2 undefined on input line 12.

(./mwe.vrb) [2] (./mwe.aux)


For TeXlive 2020:

LaTeX Warning: Reference lastslide' on page 1 undefined on input line 12.

(./mwe.vrb)
\HyPL@Entry{0<</S/D>>}
[1]

LaTeX Warning: Reference lastslide' on page 2 undefined on input line 12.

(./mwe.vrb)
\newlabel{lastslide}{{}{1}{\relax }{}{}}
[2]
\gdef \@abspage@last{2}
(./mwe.aux)


As a result, the references (and citations if there are any) cannot be handled. Considering MWE, the cross reference for the lastslide cannot be inserted in the .aux file. As a result, total number of pages cannot be rendered correctly.

The MWE is as follows:

\documentclass{powerdot}
\begin{document}
\begin{slide}[method=file]{MWE}
Lorem ipsum...
\pause
\begin{verbatim}
\def\a[#1]{A's argument is #1'}
\def\args{[FOO]}
\a\args
\expandafter\a\args
\end{verbatim}
\end{slide}
\end{document}


I would like to learn how can I compile the mwe correctly with the latest version of LaTeX in TeXlive 2020?

• hm, powerdot uses \@inputcheck to write its verbatim files, and this looks rather fishy. Mar 24 at 20:54
• @UlrikeFischer, I was currently checking that on powerdot.cls but I am not really an expert in TeX programming. It seems like the auxout content is printed on the screen. Mar 24 at 21:06
• well yes, \@inputcheck is a read handle, but powerdot is using the number to write a file and when closing it actually closes the handle for the auxfile. Imho it is sheer luck that this worked before (if it worked before, which I can't test). Mar 24 at 21:11
• @MTSan: the reason that the auxout is printed on the screen is that the code in powerdot closes the output stream (by mistake) for the \@auxout, and latex's \write command when writing to a stream that is not tied to a file, by default dumps it both to the log file and to terminal. Mar 25 at 13:01
• @MTSan: to file a bug report, you should go to freelists.org/list/powerdot and subscribe to the mailling list, and then email to the list your problem and a link to this TeX.SE question. (I'd do it for you but I don't keep PSTricks installed and so cannot run any tests if asked for by the maintainers.) Mar 25 at 13:07

powerdot has a clear bug here: It use \@inputcheck, which is the number of a read register, to write verbatim files and at the end then closes the file handle:

\immediate\openout\@inputcheck\jobname.vrb\relax
...
\immediate\closeout\@inputcheck


In texlive 2019 \@inputcheck had the value 0, in texlive 2020 it is 1 due to changes in the LaTeX code, and so now the \closeout suddenly closes the write handle for the aux file.

The next LaTeX version will perhaps change \@inputcheck back to zero, but powerdot should nevertheless correct its code and use a proper write handle. So please report this bug.

• Would it be possible to use etoolbox to work around this? Or not, since this doesn't occur in a command definition? In that case, would it work to \let\@inputcheck=0 and then start the MWE? Mar 25 at 13:14
• @Teepeemm it is in a command definition, and one can adapt it. \chardef\@inputcheck0 would probably work too. But it is a bug, it should be reported so that other users don't run into this problem too. Mar 25 at 13:30
• @UlrikeFischer I confirm that \chardef\@inputcheck0 (of course in between \makeatletter and \makeatother`) produces valid output. Mar 25 at 14:40