在章节内而不是章节内创建算法列表(algorithm2e)

在章节内而不是章节内创建算法列表(algorithm2e)

我正在写论文,我有几个算法(使用 algorithm2e)想列在附录中,但我不想另起一页。此外,我的 listoffigures 目前创建的是部分,而不是章节,我的参考书目也是如此。

因此我想对 listofalgorithms 做同样的事情,但我无法正确地更改它。这是图列表的更改方式:

\renewcommand{\listoffigures}{%
  \@cfttocstart
  \par
  \begingroup
    \parindent\z@ \parskip\cftparskip
    \section{\listfigurename}
    \@starttoc{lof}%
  \endgroup
  \@cfttocfinish%
}%

我曾尝试不将其从章节更改为章节,而是将章节的布局更改为章节,但我无法完美地做到这一点,因为我无法更改标题后的跳过距离。

这几乎看起来是正确的:

\renewcommand\listalgorithmcfname{\thesection\hspace{3mm}List of Algorithms}
\begingroup
    \let\cleardoublepage\relax  % book
    \let\clearpage\relax        % report
    \titleformat{\chapter} [hang] {\Large\bfseries\sffamily} {\thesection} {1em} {}
    \listofalgorithms
\endgroup

我尝试了类似线程的建议,但他们使用其他算法包,所以我认为 algorithm2e 以不同的方式处理事情。

任何帮助都将受到赞赏。

编辑:@Werner:我无法告诉你原因,但它不起作用。也许它实际上没有使用章节,我不确定。它从新页面开始,缩进与章节标题相同。

这是一个 MWE:

\documentclass{report}
\usepackage{algorithm2e}
\begin{document}
\begin{algorithm}
    \caption{Algorithm}
\end{algorithm}

\listofalgorithms
\end{document}

答案1

我遇到了同样的问题,但在网上找不到解决方案,所以我打开algorithm2e.sty并深入研究。实际上有一个未记录的功能可以做到这一点。

我只是想C-s在整个文件中寻找“章节”,直到我发现一些有趣的东西,然后我就这么做了:

\ifx\l@chapter\undefined\let\algocf@seclistalgo=\section\else\let\algocf@seclistalgo=\chapter\fi
% /!\ this is not part of the solution, it just explains how I found it.

所以这意味着写作

\makeatletter
\let\l@chapter=\undefined
\makeatother

在打电话之前\usepackage[…]{algorithm2e}就可以很好地完成这个任务:)。

另一种解决方案是直接调用\@starttoc,知道算法列表是 toc loa

\section*{List of Algorithms} % or whatever is preferred
\makeatletter
\@starttoc{loa}
\makeatother

答案2

最简单的就是让它\chapter等同于\section

\begingroup
\let\chapter\section% Make \chapter equivalent to \section
\listofalgorithms
\endgroup

更新\chapter是暂时的,直到\listofalgorithms完成为止。

相关内容