
Usando a resposta emComo permitir que os usuários digitem clozes em PDF?, consegui criar um documento cloze onde os usuários digitam os espaços em branco em um PDF. Usei o código em uma macro, então ele chama o mesmo \field[cloze]
várias vezes.
\setupinteraction[state=start]
\definefield[cloze][line]
\starttext
Frogs have four \field[cloze] and two eyes.
Frogs have four \field[cloze] and two eyes.
Frogs have four \field[cloze] and two eyes.
Frogs have four \field[cloze] and two eyes.
\stoptext
<<-- Tente digitar em um campo e ele copia para os outros campos.
O problema é que quando os usuários preenchem o primeiro cloze, o Adobe Acrobat preenche automaticamente todos os outros cloze com exatamente o mesmo valor. Preciso que o usuário digite valores diferentes.
\setupinteraction[state=start]
\definefield[cloze1][line]
\definefield[cloze2][line]
\definefield[cloze3][line]
\definefield[cloze4][line]
\starttext
Frogs have four \field[cloze1] and two eyes.
Frogs have four \field[cloze2] and two eyes.
Frogs have four \field[cloze3] and two eyes.
Frogs have four \field[cloze4] and two eyes.
\stoptext
<<-- Tente digitar em um campo e ele não será mais copiado para os outros campos.
Agora a solução em uma Resposta Mínima de Trabalho é alterar \field[cloze] para ter nomes diferentes para cada cloze, como \field[tree] e \field[mountain], o problema é que estou usando-o incorporado em alguns macros complexas. Tentei usar \field[#1] para enviar um valor diferente e \field[\expanded[#1]] e \field[\randomnumber{0}{10000000}], \def\somevalue{\randomnumber{0} {10000000}}\field{\expanded{somevalue}}, etc. e muitas outras combinações de código, mas tudo que tento falha na compilação. Por estar profundo em muitas camadas de macros, não consigo alterar manualmente \field[cloze] para outros valores.
Como posso usar o código da resposta, mas de forma que cada cloze seja um local onde os usuários possam digitar um valor único, e esse valor não seja copiado automaticamente para cada cloze?
Responder1
Você não precisa de expansão, o ConTeXt expande o nome de qualquer maneira. Além disso, eu recomendaria um contador gloabl em vez de um valor aleatório. Isso torna o documento mais reproduzível e confiável.
\setupinteraction[state=start]
\newcount\clozecount
\def\mycloze{%
\global \advance \clozecount by 1
\definefield[uniqcloze\the\clozecount][line]%
\field[uniqcloze\the\clozecount]%
}
\starttext
Frogs have four \mycloze\ and two eyes.
Frogs have four \mycloze\ and two eyes.
Frogs have four \mycloze\ and two eyes.
Frogs have four \mycloze\ and two eyes.
\stoptext