我正在写一篇导言。我想引用后面的定理等。我想做类似下面的事情。
\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
这是基于该包的(不太肮脏的)黑客攻击amsthm
。theoremff
环境用于“快进”定理。第一个(可选)参数是定理的名称。第二个参数是定理的标签。
请注意,定理不是动态地编号,我想你不会想要那样!它们像往常一样被编号,但你可以“快进”其中一些,当然使用它们以后将具有的相同编号。(事实上,“快进”可能具有误导性,因为您可能同样会将其用于已经出现的定理。)我希望我没有误解你的意图。
\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}
这就是您从上述文档中获得的内容。