删除算法列表中新章节后的垂直空格

删除算法列表中新章节后的垂直空格

生成算法列表时,命令\listofalgorithms会自动在章节中最后一个算法标题后插入 10pt vspace。我需要删除这个垂直空间,以便所有章节中的所有算法都垂直对齐。

答案1

这源于\@chapteralgorithm2e

\begingroup\expandafter\expandafter\expandafter\endgroup 
\expandafter\ifx\csname @chapter\endcsname\relax\else 
  \let\algocf@original@chapter=\@chapter% 
  \def\@chapter[#1]#2{\algocf@original@chapter[#1]{#2}\addtocontents{loa}{\protect\addvspace{10\p@}}}% 
\fi

它将其存储\@chapter然后重新定义为\addvspace{10\p@}类似于传统方式章节在 LoF/LoT 中的图形/表格之间插入空格。

为了避免这种情况,请algorithm2e按以下方式加载:

\makeatletter
\let\old@chapter\@chapter% Store \@chapter
\usepackage[<opts>]{algorithm2e}
\let\@chapter\old@chapter% Restore \@chapter
\makeatother

这是一个简单的例子没有上面的代码:

在此处输入图片描述

...和

在此处输入图片描述

\documentclass{report}
\makeatletter
\let\old@chapter\@chapter% Store \@chapter
\usepackage{algorithm2e}
\let\@chapter\old@chapter% Restore \@chapter
\makeatother
\begin{document}
\listofalgorithms
\chapter{First chapter}
\begin{algorithm}\caption{An algorithm}\end{algorithm}
\begin{algorithm}\caption{An algorithm}\end{algorithm}
\chapter{Second chapter}
\begin{algorithm}\caption{An algorithm}\end{algorithm}
\begin{algorithm}\caption{An algorithm}\end{algorithm}
\chapter{Last chapter}
\begin{algorithm}\caption{An algorithm}\end{algorithm}
\begin{algorithm}\caption{An algorithm}\end{algorithm}
\end{document}

注释掉添加的部分并重新编译两次即可在两者之间切换。

相关内容