algorithm2e 包:从算法标题中删除编号

algorithm2e 包:从算法标题中删除编号

考虑以下最小示例:

\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在序言中使用 来关闭所有算法编号。

相关内容