Как создать уникальные текстовые сообщения в ConTeXt в PDF-файле, которые пользователи смогут вводить самостоятельно?

Как создать уникальные текстовые сообщения в ConTeXt в PDF-файле, которые пользователи смогут вводить самостоятельно?

Используя ответ наКак разрешить пользователям вводить знаки препинания в PDF?, мне удалось создать документ-закрытие, в котором пользователи вводят данные для заполнения пробелов в PDF. Я использовал код в макросе, поэтому он вызывает одно и то же \field[cloze]несколько раз.

\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

<<-- Попробуйте ввести текст в одно поле, и он скопируется в другие поля.

Проблема в том, что когда пользователи заполняют первый клоуз, Adobe Acrobat автоматически заполняет все остальные клоузы тем же значением. Мне нужно, чтобы пользователь ввел разные значения.

\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

<<-- Попробуйте ввести текст в одно поле, и он больше не будет копироваться в другие поля.

Теперь решение в минимальном рабочем ответе — изменить \field[cloze] так, чтобы у каждого cloze были разные имена, например, \field[tree] и \field[mountain], проблема в том, что я использую его встроенным в некоторые сложные макросы. Я пробовал использовать \field[#1] для отправки другого значения, и \field[\expanded[#1]] и \field[\randomnumber{0}{10000000}], \def\somevalue{\randomnumber{0}{10000000}}\field{\expanded{somevalue}} и т. д. и много-много других комбинаций кода, но все, что я пытаюсь скомпилировать, не компилируется. Из-за того, что он находится глубоко во многих слоях макросов, я не могу вручную изменить \field[cloze] на другие значения.

Как можно использовать код из ответа, но так, чтобы каждый клоуз был местом, где пользователи могут ввести уникальное значение, и это значение не копировалось автоматически в каждый клоуз?

решение1

Вам не нужно расширенное, ConTeXt в любом случае расширяет имя. Также я бы рекомендовал глобальный счетчик вместо случайного значения. Это делает документ более воспроизводимым и надежным.

\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

Связанный контент