使 ChoiceMenu 在 evince 和 Master PDF Editor 中默认选择工作

使 ChoiceMenu 在 evince 和 Master PDF Editor 中默认选择工作

如果您在 evince 中打开一个有 ChoiceMenu 的 pdf(见下面的代码),那么所有选项都将被选中。如果您使用 Master PDF Editor 打开同一个 pdf,那么所有选项都将被取消选中。我如何将默认选定选项设置为 true,将其他所有选项设置为 false?它应该适用于 evince 和 Master PDF Editor。

\documentclass{article}
\usepackage[utf8]{inputenc}

\usepackage{hyperref}

% make ChoiceMenu unselect work
    \usepackage{etoolbox}
    \makeatletter
        \patchcmd{\HyField@FlagsRadioButton}{\HyField@SetFlag{Ff}{Radio}}{}{}{}
    \makeatother

\begin{document}
    \begin{Form}
        \mbox{\ChoiceMenu[width=10pt,height=10pt,name=choiceMenuName,radio,radiosymbol=\ding{52}]{}{ =yes}} Yes
        
        \mbox{\ChoiceMenu[width=10pt,height=10pt,name=choiceMenuName,radio,radiosymbol=\ding{52}]{}{ =no}} No
    \end{Form}
\end{document}

代码结果显示: 代码结果显示 Master PDF Editor 中的代码结果: Master PDF Editor 中的代码结果

答案1

您可以尝试如果明确设置值和默认键是否会更好:

\documentclass{article}
\usepackage[utf8]{inputenc}

\usepackage{hyperref}

% make ChoiceMenu unselect work
    \usepackage{etoolbox}
    \makeatletter
        \patchcmd{\HyField@FlagsRadioButton}{\HyField@SetFlag{Ff}{Radio}}{}{}{}
    \makeatother

\begin{document}
    \begin{Form}
        \mbox{\ChoiceMenu[width=10pt,height=10pt,value=yes,default=yes,name=choiceMenuName,radio,radiosymbol=\ding{52}]{}{ =yes}} Yes

        \mbox{\ChoiceMenu[width=10pt,height=10pt,value=no,default=yes,name=choiceMenuName,radio,radiosymbol=\ding{52}]{}{ =no}} No
    \end{Form}
\end{document}

但我认为,单选按钮在 hyperref 中没有正确实现。属于同一组的单选按钮应该有一个公共字段作为父级。

有一个新的单选按钮实现,它试图正确地执行此操作。它需要非常新的 LaTeX 和最新的pdfmanagement-testphase。请注意,此实验性代码尚未与所有内容兼容。

\RequirePackage{pdfmanagement-testphase}
\DeclareDocumentMetadata{}


\documentclass{article}
\usepackage{l3pdffield-testphase}
\begin{document}
\ExplSyntaxOn
\pdffield_radio:n{group=A,value=button1,default=button1}~YES\par\smallskip
\pdffield_radio:n{group=A,value=button2}~NO\par
\ExplSyntaxOff

\end{document}

使用 adobe 输出(我没有 evince 或其他 pdf 编辑器)。

在此处输入图片描述

答案2

我很高兴的解决方法是不使用 ChoiceMenu 而是使用 CheckBox:

\documentclass{article}
\usepackage[utf8]{inputenc}

\usepackage{hyperref}

\begin{document}
    \begin{Form}
        \mbox{\CheckBox[checked=true,width=10pt,height=10pt,name=choiceMenuNameYes,radio,radiosymbol=\ding{52}]{}{}} Yes
        
        \mbox{\CheckBox[checked=false,width=10pt,height=10pt,name=choiceMenuNameNo,radio,radiosymbol=\ding{52}]{}{}} No
    \end{Form}
\end{document}

evince 中的输出:

输出结果

Master PDF Editor 中的输出:

在此处输入图片描述

我对这个解决方案并不满意,所以这不是问题的最终答案。

相关内容