在下面的代码中,我想存储定理的数量,因为它们是由 amsmath 格式化的。我该怎么做?
我的代码存储的是 1、2、3、1,而不是 1.1、1.1、1.1、2.1。在其他情况下,编号可能会有所不同,因此我需要访问在最终 PDF 输出中显示计数器的宏。
\documentclass[12pt]{article}
\usepackage{amsthm}
\newwrite\tempscoresfile
\immediate\openout\tempscoresfile=\jobname.test
\AtEndDocument{\immediate\closeout\tempscoresfile}
\newtheorem{@theorem@}{Théorème}[section]
\newenvironment{theorem}[1][]{
\begin{@theorem@}[#1]
\immediate\write\tempscoresfile{\arabic{@theorem@}}
}{
\end{@theorem@}
}
\begin{document}
\section{Section 1}
\begin{theorem}
Bla, blo, bli...
\end{theorem}
\begin{theorem}
Bla, blo, bli...
\end{theorem}
\begin{theorem}
Bla, blo, bli...
\end{theorem}
\section{Section 2}
\begin{theorem}
Bla, blo, bli...
\end{theorem}
\end{document}
答案1
使用 Werner 上述评论的解决方案。
\documentclass[12pt]{article}
\usepackage{amsthm}
\newwrite\tempscoresfile
\immediate\openout\tempscoresfile=\jobname.test
\AtEndDocument{\immediate\closeout\tempscoresfile}
\newcommand\storerefs{
\immediate\write\tempscoresfile{\arabic{@theorem@}::\csname the@theorem@\endcsname}
}
\newtheorem{@theorem@}{Théorème}[section]
\newenvironment{theorem}[1][]{
\begin{@theorem@}[#1]
\storerefs{}
}{
\end{@theorem@}
}
\begin{document}
\section{Section 1}
\begin{theorem}
Bla, blo, bli...
\end{theorem}
\begin{theorem}
Bla, blo, bli...
\end{theorem}
\begin{theorem}
Bla, blo, bli...
\end{theorem}
\section{Section 2}
\setcounter{@theorem@}{0}
\begin{theorem}
Bla, blo, bli...
\end{theorem}
\end{document}