使用答案如何让用户在 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