ハイパー参照テキストフィールドの条件値

ハイパー参照テキストフィールドの条件値

値がブール値に条件付きで設定される TextField を作成しようとしています。ブール値が true の場合、TextField のデフォルト値は何らかの値になります。ブール値が false の場合、TextField は空白 (値が空) で始まります。

これが私の試みです:

\documentclass{article}

\usepackage{hyperref}
\usepackage{ifthen}

\newboolean{withcorrect}   
\setboolean{withcorrect}{false}   

\newcommand{\correctAnsBlankPlain}[1]{%
\ifthenelse{\boolean{withcorrect}}{%
#1%
}{}%
}

\begin{document}

\correctAnsBlankPlain{5.0}

\TextField[name=H%
,value=\correctAnsBlankPlain{5.0}%
]{}

\end{document}

これにより、「./exam.tex:21: \boolean の引数に余分な } があります。」というエラーが発生します。

\correctAnsBlankPlain値を含む行をコメント アウトすると正常にコンパイルされるため、コマンドが機能することがわかります。また、withcorrectブール値を作成しtrueて、TextField の前に 5.0 が期待どおりに印刷されるのを確認することもできます。

したがって、TextField のオプション引数内にコマンドを含めることで何か間違っていると思いますが、1) 何、または 2) どのように回避するのが最善かわかりません。

答え1

ifthen のコマンドは拡張できないため、このような場所には適していません。たとえば、etoolbox のツールを使用します。

\documentclass{article}

\usepackage{hyperref}
\usepackage{etoolbox}
\newbool{withcorrect}
\setbool{withcorrect}{false}
\newcommand{\correctAnsBlankPlain}[1]{%
 \ifbool{withcorrect}{#1}{}}
\begin{document}

%\correctAnsBlankPlain{5.0}

\TextField[name=H1%
,value=\correctAnsBlankPlain{5.0}%
]{}

\setbool{withcorrect}{true}

\TextField[name=H2%
,value=\correctAnsBlankPlain{5.0}%
]{}

\end{document}

ここに画像の説明を入力してください

関連情報