算法标题未编号,未到位

算法标题未编号,未到位

代码

\begin{algorithm}
\SetAlgoLined
\TitleOfAlgo{SA}
\BlankLine
\KwData{Movie}
\KwResult{Classification}
\BlankLine
\Begin
{    
\textbf{call Function 1: S}\\
\textbf{call Function 2: St}\\
\textbf{call Function 3: Su}\\
\textbf{call Function 4: Un}\\
}       
\end{algorithm}

输出结果符合预期,但标题位置不正确。我的意思是,它没有出现在两条标尺线之间。它出现在两条标尺线之后。

答案1

根据ruled选择algorithm2e,您必须使用\caption才能将算法的名称放在行之间:

在此处输入图片描述

\documentclass{article}
\usepackage[ruled]{algorithm2e}
\begin{document}

\begin{algorithm}
  \SetAlgoLined
  \caption{SA}
  \BlankLine
  \KwData{Movie}
  \KwResult{Classification}
  \BlankLine
  \Begin
  {    
    \textbf{call Function 1: S}\;
    \textbf{call Function 2: St}\;
    \textbf{call Function 3: Su}\;
    \textbf{call Function 4: Un}\;
  }     
\end{algorithm}

\end{document}

如上所示,这在打印时会给算法编号。如果您不希望发生这种情况,则可以使用以下设置:

在此处输入图片描述

\documentclass{article}
\usepackage{caption}
\usepackage[ruled]{algorithm2e}

\makeatletter
\newcommand{\RemoveAlgoNumber}{\renewcommand{\fnum@algocf}{\AlCapSty{\AlCapFnt\algorithmcfname}}}
\newcommand{\RevertAlgoNumber}{\algocf@resetfnum}
\makeatother

\begin{document}

\RemoveAlgoNumber

\begin{algorithm}
  \caption*{SA}
  \BlankLine
  \KwData{Movie}
  \KwResult{Classification}
  \BlankLine
  \Begin
  {    
    \textbf{call Function 1: S}\;
    \textbf{call Function 2: St}\;
    \textbf{call Function 3: Su}\;
    \textbf{call Function 4: Un}\;
  }
\end{algorithm}

\end{document}

我用caption它提供\caption*(为了易于使用)不会增加相应的浮点计数器(algocf在本例中)。我还定义了两个宏:

  • \RemoveAlgoNumber删除\thealgocf标题打印;以及
  • \RevertAlgoNumber这会撤销删除。

您还可以通过algorithm2e内部定义自己的标题样式/格式来实现上述功能。

相关内容