考虑以下最小示例:
\documentclass[usenames,dvipsnames]{beamer}
\usepackage[linesnumbered,boxed,ruled,vlined,resetcount]{algorithm2e}
\begin{document}
\begin{frame}[fragile]
With caption:
\begin{algorithm}[H]
\KwIn{ $x, y$ }
\KwOut{$z$}
$z = x\cdot y + 1$
\Return $z$
\caption{$FindZ$}
\end{algorithm}
\vspace*{0.5cm}
Without caption:
\begin{algorithm}[H]
\TitleOfAlgo{$FindZ$}
\KwIn{ $x, y$ }
\KwOut{$z$}
$z = x\cdot y + 1$
\Return $z$
\end{algorithm}
\end{frame}
\end{document}
它使用两种算法生成以下幻灯片:
在第一个中,我使用了命令 \caption,其优点是标题出现在描述输入之前的两条水平线之间。但我不喜欢这个数字。
根据我在 tex.stackexchange 上找到的一些答案,我在第二个算法中使用了 \TitleOfAlgo 而不是 \caption。现在“算法”一词前面没有数字,但标题算作算法的一行(它被编号为第 1 行)。而且,它没有出现在两行之间(我们看到它上面的两行)。
有没有办法获得与使用 Caption 相同的内容,但在“算法”前面不显示数字,也不使其成为编号行?
答案1
使用\RemoveAlgoNumber
算法标题未编号,未到位允许您打开/关闭算法编号。如果在 内完成frame
,它将是临时的:
\documentclass{beamer}
\usepackage[linesnumbered,ruled,vlined]{algorithm2e}
\makeatletter
\newcommand{\RemoveAlgoNumber}{\renewcommand{\fnum@algocf}{\AlCapSty{\AlCapFnt\algorithmcfname}}}
\newcommand{\RevertAlgoNumber}{\algocf@resetfnum}
\makeatother
\begin{document}
\begin{frame}
With caption:
\begin{algorithm}[H]
\KwIn{ $x, y$ }
\KwOut{$z$}
$z = x\cdot y + 1$
\Return $z$
\caption{$FindZ$}
\end{algorithm}
\vspace*{0.5cm}
\RemoveAlgoNumber
Without caption:
\begin{algorithm}[H]
\caption{$FindZ$}
\KwIn{ $x, y$ }
\KwOut{$z$}
$z = x\cdot y + 1$
\Return $z$
\end{algorithm}
\end{frame}
\end{document}
请注意,算法编号仍然递增。然而,由于这是(beamer
) 演示,最好避免对内容进行编号,而是通过名称来引用它们。也就是说,\RemoveAlgoNumber
在序言中使用 来关闭所有算法编号。