删除算法编号上的章节编号(scrbook)

删除算法编号上的章节编号(scrbook)

我使用我们学院提供的基于的文档类来撰写我的学士论文scrbook。我使用伪代码并将algorithm2e其放在附录中,因为否则它们会“打断”我引用它们的文本的阅读(它们占了 4 页)。

我的论文有 7 章,不包括参考文献和附录。算法在其标题中编号为7.17.2等等。我希望它们被编号为1,,2...

在谷歌搜索后,我发现了如何添加章节编号到标题,然而,这些都不是我自己写的(至少不是我自己写的)。我怎么知道algorithm2e 不是包括章节编号,因为附录不应该被视为我最后一章的一部分?

由于我使用的文档类中可能已明确启用章节编号:类文件中的哪些命令可能是问题所在?请注意,所有带有标题的浮点数(图形、定理等)都有章节编号(但一般情况下这是可以的,除了附录中的算法)。

我使用以下选项:

\usepackage[ruled,vlined,linesnumbered]{algorithm2e}

答案1

如果没有 MWE 或自定义类,则使用chngcntr包在最后一章之后重置计数器\algocf@float(实际上是一个宏)可能会起作用。

\documentclass{scrbook}

\usepackage{algorithm2e}

\usepackage{chngcntr}

\makeatletter
\counterwithin{\algocf@float}{chapter}% maybe part of your custom class

\newcommand*{\algowithoutchap}{%
  \counterwithout{\algocf@float}{chapter}%
}
\makeatother

\begin{document}

\chapter{foo}

Some text.

\chapter*{Appendix}

\algowithoutchap

\begin{algorithm}
  \uIf{1}{if...}%
  \Else{else... \\ \If{1}{if...}}%
\caption{An algorithm}
\end{algorithm}

\end{document}

相关内容