我想从此更改 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
没有原生支持algorithm2e
在memoir
(或默认文档类别,即使在添加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