我尝试使用 Overleaf 制作数字角色扮演玩家表,我希望其中有可填充的框,其中的值将被提取并用于某些公式中。例如,我想创建类似这样的内容:
\documentclass{article}
\usepackage{hyperref}
\begin{document}
\TextField{Strength:} \\
\TextField{Magic:} \\
\TextField{Speed:} \\
% AvgStat = sum numbers in Strength, magic and speed boxes divided by 3.
Your average stat is: \textbf{AvgStat}
\end{document}
变成
在这里我可以填写统计数据,但我不知道如何计算它们的平均值,将填充的文本提取成我可以使用的东西,如公式,或者是否有可能。
从其他示例中,我发现使用 hyperref 包似乎可以将填写的内容发送到服务器,但是否可以直接在最终的 PDF 中使用,无论是在他们输入时还是使用某些刷新按钮。
答案1
为了真正发挥作用,所有字段都需要放在一个Form
环境中。然后,您可以通过选项告诉字段calculate
它应该计算什么。
计算使用 JavaScript 来表达。您基本上定义event.value
,而其他字段的内容可以使用 来评估this.getField("<FieldName>").value
。为此,您应该使用 选项命名其他字段name
。
另外,也许您可能想要创建计算字段readonly
并将其初始设置value
为 0(零)。
\documentclass{article}
\usepackage{hyperref}
\begin{document}
\begin{Form}
\noindent%
\TextField[name=Strength]{Strength:} \\
\TextField[name=Magic]{Magic:} \\
\TextField[name=Speed]{Speed:} \\
% AvgStat = sum numbers in Strength, magic and speed boxes divided by 3.
\noindent%
Your average stat is: \TextField[name=AvgStat, calculate={
event.value = (
this.getField("Strength").value +
this.getField("Magic").value +
this.getField("Speed").value ) / 3;
}, readonly, value=0]{}
\end{Form}
\end{document}