
Я пытаюсь создать 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
и увидеть, что 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}