Animate 和 hyperref(表单)包与 LuaLaTeX 不兼容?

Animate 和 hyperref(表单)包与 LuaLaTeX 不兼容?

使用该包编译表单hyperref并在存在该animate包的情况下,LuaLaTeX 有一半会失败,但使用 PDFLaTeX 时始终可以正常工作。

此外,由于未知的原因(Okular 或hyperref包的 JavaScript 实现?),它仅适用于 Adob​​e Reader DC(在 Linux 上通过 Wine/Snapd),而不适用于 Okular。

我是否遗漏了什么?

\documentclass{article}

\usepackage{animate}
\usepackage{hyperref}


\begin{document}

\begin{Form}
  \PushButton[name=myButton,
    borderwidth=1px,bordercolor={0 0 0},
    onclick={
      this.getField("myTextBox").value += 1;
    }
  ]{CLICK ME}
  \TextField[name=myTextBox,
    borderwidth=1px,bordercolor={0 0 0},readonly=true]{Counter}
\end{Form}

\end{document}

答案1

这是 pdfbase 中的一个错误。它给 \pdfpageref 提供了一个错误的定义。(这也是 hyperref 中的一个错误,它不应该将 \pdfpageref 与 lualatex 一起使用,而应该直接使用 luatex 原语)

\documentclass{article}

\usepackage{animate}
\def\pdfpageref{\pdffeedback pageref}
\usepackage{hyperref}

\begin{document}


\begin{Form}
\tracingmacros=1
  \PushButton[name=myButton,
    borderwidth=1px,bordercolor={0 0 0},
    onclick={
      this.getField("myTextBox").value += 1;
    }
  ]{CLICK ME}
  \TextField[name=myTextBox,
    borderwidth=1px,bordercolor={0 0 0},readonly=true]{Counter}
\end{Form}

\end{document}

答案2

如果涉及 PDF 表单,hyperref并且animate想要同时在多个全局 PDF 对象上写入。

其他实现交互式 PDF 内容的 LaTeX 软件包之间可能也存在类似的冲突。为了解决这个问题,LaTeX3 团队正在为软件包作者开发一个通用接口,使他们能够编写兼容的 PDF 相关代码:pdfmanagement-testphase。它尚未包含在默认的 LaTeX 内核中,必须明确启用:

\RequirePackage{pdfmanagement-testphase} % load the package
\DeclareDocumentMetadata{} % activates the PDF management interface
\documentclass{article}

\usepackage{animate}
\usepackage{hyperref}

\begin{document}

\begin{Form}
  \PushButton[name=myButton,
    borderwidth=1px,bordercolor={0 0 0},
    onclick={
      this.getField("myTextBox").value += 1;
    }
  ]{CLICK ME}
  \TextField[name=myTextBox,
    borderwidth=1px,bordercolor={0 0 0},readonly=true]{Counter}
\end{Form}

\end{document}

相关内容