¿Cómo crear clozes únicos en ConTeXt en un PDF que los usuarios puedan escribir?

¿Cómo crear clozes únicos en ConTeXt en un PDF que los usuarios puedan escribir?

Usando la respuesta en¿Cómo permitir que los usuarios escriban cierres en PDF?, Pude crear un documento cerrado donde los usuarios escriben los espacios en blanco en un PDF. Utilicé el código en una macro, por lo que llama igual \field[cloze]varias veces.

\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

<<-- Intente escribir en un campo y se copia en los demás campos.

El problema es que cuando los usuarios completan el primer cloze, Adobe Acrobat completa automáticamente todos los demás clozes con exactamente el mismo valor. Necesito que el usuario escriba diferentes valores.

\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

<<-- Intente escribir en un campo y ya no se copia en los demás campos.

Ahora la solución en una respuesta mínima de trabajo es cambiar \field[cloze] para que tenga nombres diferentes para cada cloze, como \field[tree] y \field[mountain], el problema es que lo estoy usando incrustado dentro de algunos macros complejas. Intenté usar \field[#1] para enviar un valor diferente, y \field[\expanded[#1]] y \field[\randomnumber{0}{10000000}], \def\somevalue{\randomnumber{0} {10000000}}\field{\expanded{somevalue}}, etc. y muchas otras combinaciones de código, pero todo lo que intento no se puede compilar. Debido a que está en muchas capas de macros, no puedo cambiar manualmente \field[cloze] a otros valores.

¿Cómo puedo usar el código de la respuesta, pero de manera que cada cloze sea un lugar donde los usuarios puedan escribir un valor único y ese valor no se copie automáticamente en cada cloze?

Respuesta1

No es necesario expandirlo, ConTeXt expande el nombre de todos modos. También recomendaría un contador global en lugar de un valor aleatorio. Eso hace que el documento sea más reproducible y confiable.

\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

información relacionada