在算法列表的编号后添加短划线

在算法列表的编号后添加短划线

我想从此更改 algorithm2e 提供的算法列表的布局

1 Sorting...........................15

对此

Algorithm 1 -- Sorting..............15

我已经能够按照以下说明添加“算法”一词这个答案,但无法显示短划线。我尝试更新\numberline以添加短划线,但结果并不令人满意。我知道该类memoir有用于\cftfigureaftersnum在 LOF 中的图号后插入文本的,以及\cfttableaftersnum作为表格的等效项的,但我找不到算法的等效项。

对此有什么想法吗?

编辑:我正在为我大学的 LaTeX 课程提供支持,该课程基于 memoir。它使用 algorithm2e 作为创建算法的默认包,而不使用 tocloft。

答案1

A本国的设置 LoA 条目的方式memoir(或默认类加载tocloft)是让每个条目模仿 LoF 的风格。这很容易实现,只需添加

\makeatletter
\let\l@algocf\l@figure
\makeatother

到文档前言。现在\cftX...可以使用常规宏:

在此处输入图片描述

\documentclass{memoir}

\usepackage{algorithm2e}

\makeatletter
\let\l@algocf\l@figure% Handle LoA exactly like LoF
\makeatother

\let\oldlistofalgorithms\listofalgorithms
\renewcommand{\listofalgorithms}{{%
  % Locally update LoA entries as they are now similar to LoF
  \renewcommand{\cftfigurepresnum}[1]{\gdef\algonum{##1}}% Grab algorithm number
  \renewcommand{\cftfigureaftersnumb}{Algorithm~\algonum~--~}%
  \setlength{\cftfigurenumwidth}{0pt}%
  \oldlistofalgorithms
}}

\begin{document}

\listofalgorithms

\begin{algorithm}
  \caption{An algorithm}
\end{algorithm}

\end{document}

答案2

没有原生支持algorithm2ememoir(或默认文档类别,即使在添加tocloft\l@algocf)。但是,您可以非常轻松地修改 LoA 条目设置器:

在此处输入图片描述

\documentclass{memoir}

\usepackage{algorithm2e}

\let\oldlistofalgorithms\listofalgorithms
\let\oldnumberline\numberline% Store \numberline
\newcommand{\algnumberline}[1]{Algorithm~#1 -- }
\renewcommand{\listofalgorithms}{%
  \let\numberline\algnumberline% Update \numberline
  \oldlistofalgorithms
  \let\numberline\oldnumberline% Restore \numberline
}

\begin{document}

\listofalgorithms

\begin{algorithm}
  \caption{An algorithm}
\end{algorithm}

\end{document}

如果你希望删除 LoA 条目的缩进,还添加以下内容:

\makeatletter
% https://tex.stackexchange.com/a/334060/5764
\renewcommand{\l@algocf}{\@dottedtocline{1}{0pt}{2.3em}}% Remove indent of algorithm in LoA
\makeatother

在此处输入图片描述

相关内容