Como criar clozes exclusivos no ConTeXt em um PDF que os usuários possam digitar?

Como criar clozes exclusivos no ConTeXt em um PDF que os usuários possam digitar?

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

informação relacionada