The llncs
class uses a different way of defining theorem-like environments, so it's not a surprise that the other suggested methods don't work. Neither amsthm
nor ntheorem
based solution can work.
Here I assume the theorem to repeat precedes the repetition. I define a new environment reptheorem
that stores the text; it has a mandatory argument that also sets a \label
with the same name.
In the example I also show that the optional argument is honored.
\documentclass[envcountsect]{llncs}
\usepackage{environ}
\newcommand{\repeattheorem}[1]{%
\begingroup
\renewcommand{\thetheorem}{\ref{#1}}%
\expandafter\expandafter\expandafter\theorem
\csname reptheorem@#1\endcsname
\endtheorem
\endgroup
}
\NewEnviron{reptheorem}[1]{%
\global\expandafter\xdef\csname reptheorem@#1\endcsname{%
\unexpanded\expandafter{\BODY}%
}%
\expandafter\theorem\BODY\unskip\label{#1}\endtheorem
}
\begin{document}
\section{Title}
\begin{reptheorem}{foo}[Somebody]
Let $x$ be a foo. Then $x$ is also a baz.
\end{reptheorem}
\section{Another}
\repeattheorem{foo}
\end{document}

A feature asked in comments prompted to write “more modern code” for the job.
\documentclass[envcountsect]{llncs}
\usepackage{amsmath}
\newcommand{\replabel}{\label} % will be redefined in restatements
\ExplSyntaxOn
\NewDocumentCommand{\repeattheorem}{m}
{
\group_begin:
\renewcommand{\thetheorem}{\ref{#1}}
\renewcommand{\replabel}[1]{\tag{\ref{##1}}}
\prop_item:Nn \g_reptheorem_prop { #1 }
\endtheorem
\group_end:
}
\NewDocumentEnvironment{reptheorem}{m+b}
{
\prop_gput:Nnn \g_reptheorem_prop { #1 } { \theorem #2 \endtheorem }
\theorem#2\unskip\label{#1}\endtheorem
}{}
\prop_new:N \g_reptheorem_prop
\ExplSyntaxOff
\begin{document}
\section{Title}
\begin{reptheorem}{foo}[Somebody]
Let $x$ be a foo. Then $x$ is also a baz.
\begin{equation}\replabel{fooeq}
1=1
\end{equation}
with an equation.
\end{reptheorem}
\section{Another}
\repeattheorem{foo}
\end{document}
In theorems to be repeated, labels to equations (mandatory) should be set with \replabel
. This way we can change the meaning to use \tag
instead. The \label
command cannot be used, because amsmath
(necessary for \tag
) would change back the meaning of \label
in a display.
