![amsthm 与 algorithm 之间的共享计数器](https://linux22.com/image/311157/amsthm%20%E4%B8%8E%20algorithm%20%E4%B9%8B%E9%97%B4%E7%9A%84%E5%85%B1%E4%BA%AB%E8%AE%A1%E6%95%B0%E5%99%A8.png)
我在用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"