我正在使用@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@post
algorithm2e
\@algocf@pre@ruled
\algocf@caption@ruled
\@algocf@post@ruled
algorithm2e
\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}
(巨大的屏幕截图,否则不同规则厚度的渲染会很糟糕。)