
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