newcommand 中的计数器扩展

newcommand 中的计数器扩展

我正在尝试创建一个 pdf 表单。据我了解,每个复选框都必须有一个唯一的名称。如果所有复选框都具有相同的名称,则所有复选框都会被同时选中。我希望名称能够自动生成。我尝试了以下代码:

\RequirePackage{pdfmanagement-testphase}
\DeclareDocumentMetadata{uncompress,pdfversion=2.0}
\documentclass[]{article}
\usepackage{l3pdffield-testphase}
\usepackage{expl3}
\usepackage{hyperref}
\newcounter{namecounter}
\ExplSyntaxOn
\newcommand{\mcheckb}[2]{%
    \pdffield_checkbox:n{name=#2\thenamecounter,checked=false,width=#1,height=#1}%
    \stepcounter{namecounter}
}
\newcommand{\rating}[2]{\setcounter{namecounter}{0}\hfill\prg_replicate:nn {5}{\mcheckb{#1}{#2}\hspace{.2cm}}}
\ExplSyntaxOff
\begin{document}
\Form[NeedAppearances=false] 
First line with multiple checkboxes \rating{0.5cm}{first}\\
Second line with multiple checkboxes \rating{0.5cm}{second}\\
\end{document}

计数器似乎没有正确扩展。

我希望复选框具有以下名称:first1 first2 ...second1 second2 ...

任何帮助都将不胜感激!

答案1

您想在吸收论点\thenamecounter之前进行扩展。\pdffield_checkbox:n

\RequirePackage{pdfmanagement-testphase}
\DeclareDocumentMetadata{uncompress,pdfversion=2.0}

\documentclass[]{article}
\usepackage{l3pdffield-testphase}
\usepackage{hyperref}

\newcounter{namecounter}

\ExplSyntaxOn

\NewDocumentCommand{\mcheckb}{mm}
 {
  \stepcounter{namecounter}
  \exp_args:Ne \pdffield_checkbox:n
   {
    name=#2\thenamecounter,
    checked=false,
    width=#1,
    height=#1
   }
 }
\NewDocumentCommand{\rating}{mm}
 {
  \setcounter{namecounter}{0}
  \hfill\prg_replicate:nn {5}{\mcheckb{#1}{#2}\hspace{.2cm}}
 }

\ExplSyntaxOff

\begin{document}

\Form[NeedAppearances=false] 

First line with multiple checkboxes \rating{0.5cm}{first}

Second line with multiple checkboxes \rating{0.5cm}{second}

\end{document}

在此处输入图片描述

图中显示各个箱子可以彼此独立地进行检查。

相关内容