
Estou tentando criar um TextField cujo valor é condicional a um booleano. Se o booleano for verdadeiro, o valor padrão no TextField será algum valor; se for falso, o TextField começa em branco (o valor está vazio).
Aqui está minha tentativa:
\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}
que gera o erro "./exam.tex:21: O argumento de \boolean possui um } extra."
Eu sei que o \correctAnsBlankPlain
comando funciona, porque quando comento a linha que contém o valor, ele compila perfeitamente. Também posso tornar o withcorrect
booleano true
e ver o 5.0 impresso conforme o esperado antes do TextField.
Portanto, presumo que estou fazendo algo errado ao incluir um comando no argumento opcional de TextField, mas não tenho certeza 1) o que ou 2) como contornar isso da melhor forma.
Responder1
os comandos em ifthen não são expansíveis e, portanto, inadequados em tais locais. Use, por exemplo, as ferramentas do 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}