编辑:从 powerdot 1.6 版开始,这个问题已经修复。更新已经在 CTAN 上。感谢您的想法。
我意识到 powerdot 中的逐字叠加不适用于 TexLive 2020。更准确地说;
- LaTeX2e <2020-02-02> 补丁级别 5(在 TeXLive 2019 中)编译了 MWE 正确,而
- LaTeX2e <2020-10-01> 补丁级别 4(在 TeXLive 2020 中)不能。
有趣的是,应该写入 .aux 文件的输出被打印在命令行上。(可能由于某种原因被定向到 stdout 而不是 .aux 文件)当然,在路径、版本等方面有很多变化,但输出的重要部分如下:
对于 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)
对于 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)
因此,无法处理参考文献(以及引文,如果有的话)。考虑到 MWE,无法将最后一张幻灯片的交叉引用插入 .aux 文件中。因此,无法正确呈现总页数。
MWE如下:
\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}
我想了解如何在 TeXlive 2020 中使用最新版本的 LaTeX 正确编译 mwe?
答案1
powerdot 在这里有一个明显的错误:它使用\@inputcheck
,这是一个读注册,写入逐字文件并在最后关闭文件句柄:
\immediate\openout\@inputcheck\jobname.vrb\relax
...
\immediate\closeout\@inputcheck
在 texlive 2019 中\@inputcheck
值为0
,在 texlive 2020 中这是1
由于 LaTeX 代码的变化,因此现在\closeout
突然关闭了 aux 文件的写入句柄。
下一个 LaTeX 版本可能会改\@inputcheck
回零,但 powerdot 应该会修正其代码并使用正确的写入句柄。所以请报告此错误。