amsthm 与 algorithm 之间的共享计数器

amsthm 与 algorithm 之间的共享计数器

我在用amsthm

\usepackage{amsthm}
\newtheorem{thm}{Theorem}[chapter]
\newtheorem{lem}[thm]{Lemma}
\newtheorem{prop}[thm]{Proposition}

algorithm

\usepackage{algorithm, algpseudocode}
\makeatletter
\renewcommand\thealgorithm{\thechapter.\arabic{algorithm}}
%\@addtoreset{algorithm}{chapter}
\makeatother

在我的文本中,我将每章中的所有内容连续编号(定义 3.1、引理 3.2、定理 3.3),但有单独计数器的算法除外(定义 3.1、引理 3.2、算法 3.1、定理 3.3)。我怎样才能使算法与其他所有内容一起编号?(定义 3.1、引理 3.2、算法 3.3、定理 3.4)

答案1

[algorithm]在所有情况下使用\newthorem,以便他们使用algorithm计数器而不是thm

但请注意,如果您使用具有相同计数器的浮动环境和非浮动环境,则算法可能会超出定理,从而出现错误的顺序。

答案2

\newtheorem由于我无法获得定义,因此最终我需要一个不同的解决方案。

\newcounter{common} % Create counter "common"

\makeatletter
\let\c@theorem\relax % drop existing counter "theorem" (you might not need this)
\makeatother

\usepackage{aliascnt}
\newaliascnt{theorem}{common} % let "theorem" be an alias for "common"
\newaliascnt{algorithm}{common} % let "algorithm" be an alias for "common"

相关内容