Babel 和 hyperref 导致 ngerman 选项的 pdf 表单错误

Babel 和 hyperref 导致 ngerman 选项的 pdf 表单错误

我想测试Form提供的环境hyperref,尤其是\CheckBox和,并且在与语言选项一起使用\PushButton时遇到行为错误。babelngerman

其目的是一次\PushButton提供一个复选框并使用一些代码,但我并不是这方面的专家。activate allJavaScriptJavaScript

只要ngerman不用作语言选项,代码就会按预期工作,我Adobe Acrobat DC 11在 Windows 10 和PdfStudio Pro 2019Linux 上进行了测试。

单击ngerman激活的按钮没有任何反应,即JavaScript代码失败,但我怀疑所需的标签名称存在问题hyperref

我在 Linux 上使用 pdflatex 和 TeXLive 2020,最新更新于今天。

这个问题有解决办法吗?我想保留它,babel因为我的许多文档都依赖于它ngerman,而且在我的一些旧文档中,如果能有“交互”功能Form就好了,当然是在更改了一些其他代码之后。

我认为以下代码非常简单,并且展示了该功能。附带的屏幕截图显示了所需的功能,目前只能通过删除ngerman选项来实现。

\documentclass[11pt,ngerman]{article}

\usepackage{babel}
\usepackage{hyperref}
\begin{document}
\parindent=0em
\begin{Form}
  \begin{tabular}{l}
    \CheckBox[name=abox]{A} \tabularnewline    \tabularnewline
    \CheckBox[name=bbox]{B} \tabularnewline    \tabularnewline
    \CheckBox[name=cbox]{C} \tabularnewline    \tabularnewline
    \CheckBox[name=dbox]{D} \tabularnewline    \tabularnewline
  \end{tabular}
\bigskip

\PushButton[name=activateall,onclick={%
  this.getField("abox").value="Yes";
  this.getField("bbox").value="Yes";
  this.getField("cbox").value="Yes";
  this.getField("dbox").value="Yes";
}]{Activate all}
\end{Form}

\end{document}

在此处输入图片描述

答案1

本地停用速记:

\documentclass[11pt,ngerman]{article}

\usepackage{babel}
\usepackage{hyperref}
\begin{document}
\parindent=0em
\begin{Form}
  \begin{tabular}{l}
    \CheckBox[name=abox]{A} \tabularnewline    \tabularnewline
    \CheckBox[name=bbox]{B} \tabularnewline    \tabularnewline
    \CheckBox[name=cbox]{C} \tabularnewline    \tabularnewline
    \CheckBox[name=dbox]{D} \tabularnewline    \tabularnewline
  \end{tabular}
\bigskip

\shorthandoff{"}
\PushButton[name=activateall,onclick={%
  this.getField("abox").value="Yes";
  this.getField("bbox").value="Yes";
  this.getField("cbox").value="Yes";
  this.getField("dbox").value="Yes";
}]{Activate all}
\end{Form}

\end{document}

相关内容