是否可以使用 LaTeX 制作交互式 PDF 文档?例如,我想制作一个 PDF 文档(数学练习表),如下所示:
- 用户可以折叠/展开文档的部分内容(即,用户可以按加号来查看答案)
- 用户可以勾选某些字段来提交答案并查看自己的分数
- 打印生成的 PDF 文档或保存
答案1
可以制作交互式PDF
文档,但可能只能在 Acrobat Reader 中使用。可以在以下网址找到一些示例pdfLaTeX 中的 Hello World和如何用 LaTeX 表达新年快乐?。
有多种方法可以创建它们,但目前较简单的方法是使用韋斯特包裹来自AcroTeX 教育套装。
要创建交互部分,需要使用 PFD 表单并插入适当的 JavaScript 代码,就像在网页中一样,该代码用于编写交互部分的脚本。
该insdljs
包提供了一个环境,类似于用于编写 JavaScript 文件的文件内容。它定义了一个函数,用于根据圆的半径计算圆的面积和直径。
function doCalculation()
{
var radius=0.0 + this.getField("radius").value;
this.getField("diameter").value=radius*2;
this.getField("areacircle").value= Math.PI * Math.pow(radius, 2);
}
文本框和按钮也进行了相应的定义。MWE 说明了该应用程序。请使用兼容的阅读器查看。
\documentclass{scrartcl}
\usepackage[T1]{fontenc}
\usepackage{mathptmx}
\usepackage[scaled =.92]{helvet}
\setlength{\paperwidth}{5.2075in}
\setlength{\paperheight}{4.90in}
\renewcommand*{\familydefault}{phv}
\usepackage[pdftex,margin=0.5in]{geometry}
\usepackage{fancyhdr}
\lhead{A Sample Calculation}\chead{}
\rhead{Area of Circle}
\lfoot{}\cfoot{}\rfoot{}
\pagestyle{fancy}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage[pdftex,pdfpagelayout=SinglePage,
pdftitle={Wishing you a happy year},pdfsubject={Invest your new year improving your TeX skills}%
]{hyperref}
\setlength{\parindent}{0.0cm}
\usepackage[pdftex]{insdljs}
\begin{insDLJS}[test]{test}{JavaScript}
function doCalculation()
{
var radius=0.0 + this.getField("radius").value;
this.getField("diameter").value=radius*2;
this.getField("areacircle").value= Math.PI * Math.pow(radius, 2);
}
\end{insDLJS}
%% Short hand commands
\newcommand{\textforlabel}[2]{%
\TextField[name={#1}, value={#2}, width=9em,align=2,%
bordercolor={0.990 .980 .85},%
readonly=true]{}%
}
%% Define the heading
\newcommand{\heading}[1]{\textsc{#1}}
\begin{document}
\begin{center}
\textbf{\Huge Calculations\\ with JavaScript\\*[4pt] and pdfLateX!}
\end{center}
\newpage
\begin{Form}
\heading{Area of Circle}
%%
%%% Input field radius
\textforlabel{l01}{Radius:}
\TextField[name=radius,width=10em, bordercolor={0.650 .790 .94}]{}%
~m\\
%% Push button is defined here
\textforlabel{l02}{Press to calculate}
\PushButton[name=start,onclick={doCalculation();},bordercolor={0.650 .790 .94}%
]{Calculate}\\
\heading{Results}\\
%% RESULTS
%% Diameter
\textforlabel{name=l04}{%
Diameter :} \TextField[name=diameter,width=10em,bordercolor={0.650 .790 .94},%
readonly=true]{}~m
\textforlabel{name=l05}{Area:}
\TextField[name=areacircle,width=10em,%
bordercolor={0.650 .790 .94},readonly=true]{}~m$^2$\\*[-0.8em]
\end{Form}
\end{document}
这AcroTeX 教育套装提供了许多其他功能,在学术环境中可用于测验和辅导。
我个人不太相信,因为这样的设施可以在具有更好的交互性和开辟其他机会的网页上更好地提供。