我经常使用单选按钮( \ChoiceMenu[radio,...] )。但有一点我不太满意:如果您选择/选中单选按钮组中的某个按钮,那么如果没有 javascript,就无法再次取消选择/取消选中该组的所有单选按钮。
举个小例子:
\documentclass{article}
\usepackage[bookmarks=false]{hyperref}
\begin{document}
\begin{Form}
{Do you want to: }%
\ChoiceMenu[radio,radiosymbol=\ding{52},name=myGroupOfRadiobuttons]{}{Do it all again=Again}
\ChoiceMenu[radio,radiosymbol=\ding{52},name=myGroupOfRadiobuttons]{}{Pretend it never happened=Pretend}
\ChoiceMenu[radio,radiosymbol=\ding{52},name=myGroupOfRadiobuttons]{}{Write a book about it=Write}
\end{Form}
\end{document}
我希望获得一组单选按钮的行为,就像这个政府表格上部的“填写状态”部分一样可填写的 pdf 表格。如果已选中/已检查的单选按钮再次被选中/选择,则选择将完全消失。
是否可以使用 LaTex 和 hyperref 而不是 javascript 来制作这样一组单选按钮?上面链接的 pdf 是使用软件“Adobe LifeCycle Designer”制作的。
編輯:(彼得·格里尔)
最初上述结果是:
单击第一个复选框后,我们得到:
目标是能够在此状态下检查第一个框并恢复到初始状态(第一个图像)。
答案1
有一个名为的标志NoToggleToOff
应该根据PDF 规范,第 439 页:
(仅限单选按钮)如果设置,则应始终选择一个单选按钮;选择当前选定的按钮无效。如果清除,单击选定的按钮将取消选择它,使所有按钮均不被选中。
但是,这并不像预期的那样工作:即使没有设置标志,我也无法取消选择曾经选中的单选按钮。我尝试使用不同的查看器(Adobe Reader X、PDF-XChange Viewer、Foxit Reader [Windows])和由不同程序生成的 PDF 文档(使用 LaTeX hyperref
、OpenOffice、文本),但没有成功。显然,该规范的这一特性目前任何 PDF 查看器均未实现该功能!
那么链接形式创建?
答案相当令人惊讶:此 PDF 中的“单选按钮”未设置标志Radio
,从技术上讲,这会将它们变成简单的复选框。但是,如您所见,它们仍然像单选按钮一样工作,因此您一次只能选择一个选项。您可以通过在创建的表单字段中删除此标志来利用这一奇怪之处hyperref
:
\documentclass{article}
\usepackage[bookmarks=false]{hyperref}
% Make radio buttons completely deselectable by removing the "Radio" flag
% (http://tex.stackexchange.com/a/74543/3323)
\usepackage{etoolbox}
\makeatletter
\patchcmd{\HyField@FlagsRadioButton}{\HyField@SetFlag{Ff}{Radio}}{}{}{}
\makeatother
\def\DefaultOptionsofRadio{print}
\begin{document}
\begin{Form}
{Do you want to: }%
\ChoiceMenu[radio,radiosymbol=\ding{52},name=myGroupOfRadiobuttons]{}{Do it all again=Again}
\ChoiceMenu[radio,radiosymbol=\ding{52},name=myGroupOfRadiobuttons]{}{Pretend it never happened=Pretend}
\ChoiceMenu[radio,radiosymbol=\ding{52},name=myGroupOfRadiobuttons]{}{Write a book about it=Write}
\end{Form}
\end{document}
这样,您就会得到完全可取消选择的单选按钮,就像您提供的表单中的单选按钮一样。
答案2
\documentclass{article}
\usepackage[bookmarks=false]{hyperref}
\begin{document}
\begin{Form}
{Do you want to: }%
\ChoiceMenu[radio,radiosymbol=\ding{52},name=myGroupOfRadiobuttons]{}{Do it all again=Again,%
Pretend it never happened=Pretend,Write a book about it=Write}
\end{Form}
\end{document}