我正在尝试创建一个 TextField,其值取决于布尔值。如果布尔值为真,则 TextField 中的默认值为某个值;如果布尔值为假,则 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
并看到 5.0 按预期打印在 TextField 之前。
因此,我认为我在 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}