我有:
\usepackage{amsthm}
\newtheorem{problem}{Problem}
....
\begin{problem}...\end{problem}...
...
\begin{problem}...\end{problem}...
在文档的第一页中,我如何才能知道文档中使用的问题环境的数量?也就是说,我想知道最后一个problem
计数器的值。
答案1
以下代码使用该.aux
文件来实现这一点。它提供了一个\total@problems
设置\totalproblems
为其参数的宏。并在文档末尾调用此宏来存储 counter 的值problem
。您需要运行两次,0
第一次运行时会存储该值。
\documentclass{article}
\usepackage{amsthm}
\newtheorem{problem}{Problem}
% STARTS HERE
\makeatletter
\AtEndDocument{\write\@auxout{\protect\total@problems{\arabic{problem}}}}
\def\total@problems#1{\global\def\totalproblems{#1}}
\total@problems{0}
\makeatother
% ENDS HERE
\begin{document}
Number of problems: \totalproblems
....
\begin{problem}...\end{problem}...
...
\begin{problem}...\end{problem}
\end{document}
答案2
该包totcount
提供了一个非常有效的解决方案。只需将计数器注册到“总计数器”列表中即可。
\documentclass{article}
\usepackage{totcount}
\newtheorem{problem}{Problem}
\regtotcounter{problem} % register the counter for getting the total
\begin{document}
Number of problems: \total{problem}
\begin{problem}
A
\end{problem}
\begin{problem}
B
\end{problem}
\end{document}
使用\total{problem}
将打印所需的数字;如果由于总数的变化而需要另一次运行,LaTeX 将发出警告。