如何动态编号定理?

如何动态编号定理?

我正在写一篇导言。我想引用后面的定理等。我想做类似下面的事情。

\newtheorem*{thmcustom}[1]{Theorem #1}

然后\begin{thmcustom}[3.2.1] .. \end{thmcustom}会打印出来特里姆3.2.1:...(一般来说,我会有一个\ref{thm:whatever}与 3.2.1 相反的,但无论如何。)

当然,这是行不通的。有什么办法可以做到这一点吗?

\newtheorem*{thmA}{Theorem \ref{thm:thmA}}(对于我想要引用的每一个定理,我都有一个可怕的破解方法。

\documentclass[a4paper,10pt]{article}
\usepackage{amsthm}
\newtheorem{theorem}{Theorem}
\newtheorem*{thmA}{Theorem \ref{thm:thmA}}

\begin{document}
The same theorem which comes later:
\begin{thmA}
This is a theorem.
\end{thmA}

The original statement of the theorem.
\begin{theorem}
\label{thm:thmA}
This is a theorem.
\end{theorem}
\end{document}

这太糟糕了!所以任何事情都会更好……)

答案1

这是基于该包的(不太肮脏的)黑客攻击amsthmtheoremff环境用于“快进”定理。第一个(可选)参数是定理的名称。第二个参数是定理的标签。

请注意,定理不是动态地编号,我想你不会想要那样!它们像往常一样被编号,但你可以“快进”其中一些,当然使用它们以后将具有的相同编号。(事实上,“快进”可能具有误导性,因为您可能同样会将其用于已经出现的定理。)我希望我没有误解你的意图。

\documentclass{article}
\usepackage{amsthm}

\newtheorem{theorem}{Theorem}
\newtheorem*{theoremaux}{Theorem \theoremauxnum}
\gdef\theoremauxnum{1}

\newenvironment{theoremff}[2][]{%
  \def\theoremauxnum{\ref{#2}}
  \begin{theoremaux}[#1]
}{%
  \end{theoremaux}
}

\begin{document}

\section{Introduction}
Here are the two theorems that we will prove:

\begin{theoremff}[Progress]{thm:progress}
Progress theorem.
\end{theoremff}

\begin{theoremff}[Preservation]{thm:preservation}
Preservation theorem.
\end{theoremff}

\section{Metatheory}
And here are their proofs:

\begin{theorem}[Progress]
\label{thm:progress}
Progress theorem.
\begin{proof}
Easy.
\end{proof}
\end{theorem}

\begin{theorem}[Preservation]
\label{thm:preservation}
Preservation theorem.
\begin{proof}
Trivial.
\end{proof}
\end{theorem}

\end{document}

这就是您从上述文档中获得的内容。

结果

相关内容