algorithm2e 采用 booktabs 样式并在目录中列出算法

algorithm2e 采用 booktabs 样式并在目录中列出算法

我正在使用@egreg提供的解决方案这个答案,但我用的是algorithm2e包而不是algorithms

我想保留booktabs但该命令\listofalgorithms打印出一个空列表。

我认为这是因为现在算法都是数字,所以.loa文件结果是空的。我不知道该怎么做,任何建议都值得赞赏。

这是我的不工作 MWE

\documentclass{book}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{algorithm2e}
\usepackage{booktabs}

# https://tex.stackexchange.com/a/345745/127473
\makeatletter
\newcommand\fs@booktabsruled{%
  \def\@fs@cfont{\bfseries\strut}\let\@fs@capt\floatc@ruled
  \def\@fs@pre{\hrule height\heavyrulewidth depth0pt \kern\belowrulesep}%
  \def\@fs@mid{\kern\aboverulesep\hrule height\lightrulewidth\kern\belowrulesep}%
  \def\@fs@post{\kern\aboverulesep\hrule height\heavyrulewidth\relax}%
  \let\@fs@iftopcapt\iftrue
}
\makeatother

\usepackage{float}
\newfloat{algorithm}{h}{alg}

\floatstyle{booktabsruled}
\restylefloat{algorithm}

\begin{document}

\listofalgorithms % empty

\begin{algorithm} 
    \caption{test}
\end{algorithm}

\end{document}

这就是结果 姆韦

答案1

您链接的帖子中的宏\@fs@pre\@fs@mid和有对应的宏,称为、、,因此只需使用 egreg 的定义即可。 中的算法已经是浮动的,并且包已经处理了相应的列表。\@fs@postalgorithm2e\@algocf@pre@ruled\algocf@caption@ruled\@algocf@post@ruledalgorithm2e

\documentclass{article}

\usepackage[ruled]{algorithm2e}
\usepackage{booktabs}

% Values shamelessly taken from egreg's answer in 
% https://tex.stackexchange.com/a/345745/82917
\makeatletter
\renewcommand*{\@algocf@pre@ruled}{\hrule height\heavyrulewidth depth0pt \kern\belowrulesep}
\renewcommand*{\algocf@caption@ruled}{\box\algocf@capbox\kern\aboverulesep\hrule height\lightrulewidth\kern\belowrulesep}
\renewcommand*{\@algocf@post@ruled}{\kern\aboverulesep\hrule height\heavyrulewidth\relax}
\makeatother

\begin{document}

\listofalgorithms

\begin{algorithm} 
 \While{condition}{
  something;
 }
\caption{Some nice algorithm}
\end{algorithm}

\end{document}

(巨大的屏幕截图,否则不同规则厚度的渲染会很糟糕。)

在此处输入图片描述

相关内容