我一直在考虑将工作中的一些表单转换为交互式表单。我尝试了一些韋斯特,但它们似乎有点过时了。这个想法非常吸引人。我正在寻找更新的信息、链接和指针。Beamer 使用 JavaScript 吗?
答案1
最近,德国新闻组 de.comp.text.tex 上也发布了类似的问题。
使用 pdfLaTeX 可以轻松在文档级别添加 JavaScript。用户定义的 JavaScript 函数可以作为 Action 字典(简单的 pdf 对象)添加到文档中。然后,必须使用 pdfTeX 原语 \pdfnames 将它们的名称映射到 PDF 目录中 /Names 字典的 /JavaScript 名称树中相应的 PDF 对象编号。最后,可以在任何接受 Action 字典的 PDF 对象(链接、小部件、页面等)中使用这些函数。所有这些都记录在 PDF 参考和 Acrobat 的 JavaScript 参考中:
这是一个可以作为起点的简单示例。其中,接受参数的文档级 JavaScript 函数用于两个链接的 Action 字典中:
\documentclass{article}
\immediate\pdfobj{<<
/S/JavaScript/JS (someFunc=function(arg){app.alert('I say ' + arg);})
>>}
\edef\someFunc{\the\pdflastobj\space 0 R}
\immediate\pdfobj{<<
/S/JavaScript/JS (otherFunc=function(arg){app.alert('You say ' + arg);})
>>}
\edef\otherFunc{\the\pdflastobj\space 0 R}
\pdfnames{
/JavaScript <<
%name tree mapping doc. level JavaScript functions to object numbers
/Names [(someFunc) \someFunc (otherFunc) \otherFunc ]
/Limits [(otherFunc) (someFunc)] %first and last in alphab. order
>>
}
\begin{document}
\leavevmode
\pdfstartlink user {
/Subtype /Link
/A <<
/S/JavaScript
/JS (someFunc('Hello!'))
>>
}Hello!\pdfendlink
\leavevmode
\pdfstartlink user {
/Subtype /Link
/A <<
/S/JavaScript
/JS (otherFunc('Good bye!'))
>>
}Good bye!\pdfendlink
\end{document}
亚历山大