类似的问题被问到如何重复定理编号?非常棒回答经过安德鲁·史黛西。但是,使用 需要 amsthm \newtheorem
,因此定理采用 amsthm 样式(名称 normal)而不是 llncs 样式(名称 bold)。当我更改\newtheorem*{rep@theorem}{\rep@title}
为时\spnewtheorem*{rep@theorem}{\rep@title}{\bfseries}{\itshape}
,出现未定义错误\rep@title
。
另外,还有一个类似的问题如何使用 llncs 类重复定理编号?, 但是,那回答经过埃格尔不允许我用不同的文本进行重述,而这正是我需要实现的。(我认为对于这种用例来说,restatable
环境对我来说似乎有用)。thm-restate
谢谢!
答案1
该类llncs
使用与不同的方法amsthm
,因此其他解决方案不适用。
将以下几行添加到你的序言中:
\newcommand\repeatedtheorem[2]{%
\expandafter\let\expandafter\repeatedtheoremtmp\csname#1name\endcsname
\expandafter\def\csname#1name\endcsname{%
\repeatedtheoremtmp\ \ref{#2}%
\global\expandafter\let\csname#1name\endcsname\repeatedtheoremtmp
}
}
要重复某个定理的次数,你必须做以下的事情。
定义定理环境的未编号版本。例如,如果你想回顾/预览一个定理,请在序言中添加以下行:
\spnewtheorem*{theorem*}{Theorem}{\normalshape\bfseries}{\itshape}
这将定义一个
theorem*
看起来像theorem
环境但没有数字的环境。为想要重复使用其编号的定理添加一个标签,例如
\label{myAmazingTheorem}
。在您想要预览/回忆真实定理(那里给出编号)的地方,使用未编号的版本
\begin{theorem*}...\end{theorem*}
。在这个未编号的定理之前,通过添加以下行来告诉 LaTeX 使用实数定理的编号
\repeatedtheorem{theorem*}{myAmazingTheorem}
\documentclass[envcountsect]{llncs}
\spnewtheorem*{theorem*}{Theorem}{\normalshape\bfseries}{\itshape}
\newcommand\repeatedtheorem[2]{%
\expandafter\let\expandafter\repeatedtheoremtmp\csname#1name\endcsname
\expandafter\def\csname#1name\endcsname{%
\repeatedtheoremtmp\ \ref{#2}%
\global\expandafter\let\csname#1name\endcsname\repeatedtheoremtmp
}
}
\begin{document}
\section{Preview}
\repeatedtheorem{theorem*}{myAmazingTheorem}
\begin{theorem*}[just a preview]
My amazing theorem that we will discuss later.
\end{theorem*}
\begin{theorem*}
An unnumbered theorem.
\end{theorem*}
\section{The real thing}
\begin{theorem}[The Amazing Theorem]
\label{myAmazingTheorem}
A theorem
\end{theorem}
\end{document}