powerdot 的逐字叠加不符合 TeXlive 2020 latex 的要求,而 TeXlive 2019 中的 latex 则一切正常

powerdot 的逐字叠加不符合 TeXlive 2020 latex 的要求,而 TeXlive 2019 中的 latex 则一切正常

编辑:从 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 应该会修正其代码并使用正确的写入句柄。所以请报告此错误。

相关内容