代码
\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
内部定义自己的标题样式/格式来实现上述功能。