Following is how I implement Andrew Stacey's suggestion. The difference is that I use ntheorem
to simulate amsthm
style; and I'm using \autoref
to have a single restatement environment which works for theorems, corollaries, anything - based on just the label. It's not elegant or terse, but it should be useful if you use ntheorem
. Of course, if you don't care about AMS styles, just tweak the \newtheoremstyle
commands to your liking (while keeping the styles for the statement and the restatement in synch).
Also, the code allows for restatement both with and without additional text after the theorem number.
\documentclass{article}
\usepackage{hyperref}
\usepackage[hyperref]{ntheorem}
\makeatletter
\def\ifempty#1{%
\def\@tmp@a{#1}%
\ifx\@tmp@a\@empty%
}
\newtheoremstyle{ams-theorem}%
{\item[\hskip\labelsep \theorem@headerfont ##1\ ##2\theorem@separator]}%
{\item[\hskip\labelsep {\theorem@headerfont ##1\ ##2}{\normalfont\ (##3)}{\theorem@headerfont
\theorem@separator}]}
% The following is a dummy style, we only need it so ntheorem uses its
% unnumbered version properly
\newtheoremstyle{ams-restatedtheorem}
{\item[\hskip\labelsep \theorem@headerfont ##1\ ##2\theorem@separator]}%
{\item[\hskip\labelsep {\theorem@headerfont ##1\ ##2}{\normalfont\ (##3)}{\theorem@headerfont
\theorem@separator}]}
% ... this is the one that's actually used, and in fact, we only use the
% 3-argument variant
\newtheoremstyle{nonumberams-restatedtheorem}%
{\item[\theorem@headerfont \hskip\labelsep ##1\theorem@separator]}%
{\item[\hskip\labelsep \theorem@headerfont ##3\theorem@separator]}%
\theoremstyle{ams-theorem}
\theoremheaderfont{\normalfont\bfseries}
\theorembodyfont{\itshape}
\theoremseparator{.}
\theoremindent0cm
\theoremnumbering{arabic}
\theoremsymbol{}
\newtheorem{theorem}{Theorem}
% and here you would have environments such as lemma, corollary, etc.
% (possibly with \newaliascnt commands to get them to use the same
% counter)
\theoremstyle{ams-restatedtheorem}
% the argument of restatedtheorem* shouldn't ever actually be used
\newtheorem*{restatedtheorem*}{}
\newenvironment{restatement}[2][]{%
\ifempty{#1}
\begin{restatedtheorem*}[\autoref*{#2}]%
\else%
\begin{restatedtheorem*}[\autoref*{#2} (#1)]%
\fi%
}%
{\end{restatedtheorem*}}
\makeatother
\begin{document}
\begin{theorem}
\label{myfirst}
This is my first theorem.
\end{theorem}
\begin{theorem}
\label{mysecond}
This is my second theorem.
\end{theorem}
\begin{restatement}{myfirst}
This is a restatement of my first theorem.
\end{restatement}
\begin{restatement}[fancy version]{mysecond}
Hear ye, hear ye, the most excellent seconde theoreme!
\end{restatement}
\end{document}