使用格式化的定理数字

使用格式化的定理数字

在下面的代码中,我想存储定理的数量,因为它们是由 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}

相关内容