如何使用 llncs 类重复定理编号并在两次出现之间改变文本?

如何使用 llncs 类重复定理编号并在两次出现之间改变文本?

类似的问题被问到如何重复定理编号?非常棒回答经过安德鲁·史黛西。但是,使用 需要 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}

相关内容