如何创建对用户定义计数器的前向引用?

如何创建对用户定义计数器的前向引用?

我创建了一个计数器来计算附件的数量:

\newcounter{enclosure}{0}

在每个外壳的底部我放置了:

\addtocounter{enclosure}{1}\vfill\hfill\Enclosure \arabic{enclosure}\clearpage

并且效果非常好。

但是,在附件之前的页面上,我需要将其放在底部(如果有三个附件):

ENCLOSURES (3)

我想让括号中的值反映enclosure计数器的最后一个值。我试过了\ref\label但那抓取的是部分计数器,而不是这些计数器。

这是一个完整的例子:

\documentclass[10pt]{article}   
\begin{document}
\newcounter{enclosure}
\noindent
Total Enclosures: \\
\stepcounter{enclosure} Enclosure \arabic{enclosure}\\
\stepcounter{enclosure} Enclosure \arabic{enclosure}\\
\stepcounter{enclosure} Enclosure \arabic{enclosure}\\
\stepcounter{enclosure} Enclosure \arabic{enclosure}\\
Total Enclosures: \arabic{enclosure}
\end{document}

我希望 Total Enclosures 的顶部和底部相同。

谢谢。

答案1

\addtocounter{enclosure}{1}

或者

\stepcounter{enclosure}

这是同样的事情,只是增加了计数器,而不是使其可用\ref

相反使用

\refstepcounter{enclosure}

然后计数器以相同的方式递增,但其值将成为当前参考数,因此\label将拾取它并且您可以用 来引用它\ref

答案2

您可以\label在文档末尾添加命令:

\documentclass[10pt]{article}

\newcounter{enclosure}
\newcommand{\totalenclosures}{Total Enclosures:~\ref{tot@lencl@sures}}
\newcommand{\enclosure}{%
  \stepcounter{enclosure}%
  Enclosure~\theenclosure
}

\AtEndDocument{%
  \addtocounter{enclosure}{-1}%
  \refstepcounter{enclosure}\label{tot@lencl@sures}%
}

\begin{document}
\noindent\totalenclosures\\
\enclosure\\
\enclosure\\
\enclosure\\
\enclosure\\
\totalenclosures
\end{document}

strange\label{tot@lencl@sures}指的是文档中未使用的字符串。计数器被降低,然后“refstepped”上升,以便为 提供正确的值\label

\totalenclosures如果您希望当文档中没有附件时显示“无附件”,那么这会稍微复杂一些。

\documentclass[10pt]{article}
\usepackage{refcount} % for \getrefnumber
\newcounter{enclosure}
\newcommand{\totalenclosures}{%
  \ifnum\getrefnumber{tot@lencl@sures}=0
    No Enclosure%
  \else
    Total Enclosures:~\ref{tot@lencl@sures}%
  \fi
}
\AtEndDocument{%
  \addtocounter{enclosure}{-1}%
  \refstepcounter{enclosure}\label{tot@lencl@sures}%
}
\newcommand{\enclosure}{%
  \stepcounter{enclosure}%
  Enclosure~\theenclosure
}

\begin{document}
\noindent\totalenclosures\\
\enclosure\\
\enclosure\\
\enclosure\\
\enclosure\\
\totalenclosures
\end{document}

相关内容