如何创建带有标题的未编号算法?

如何创建带有标题的未编号算法?

我想做类似的事情:

\begin{algorithm*}
\caption{My unnumbered algorithm}
% etc. etc.
\end{algorithm*}

或者

\begin{algorithm}
\nonumbercaption{My unnumbered algorithm}
% etc. etc.
\end{algorithm}

当然,以上不是 LaTeX,只是一厢情愿。我该怎么做才能得到一个带有标题的未编号算法?

实际上,具体的动机是,由于算法太长,我将它从中间拆分(使用algorithmicx's \algstore);我希望第二部分有一个标题说明它是第二部分,但我不希望它有一个新的算法编号。

答案1

如果我正确理解了您的问题,您可以使用包\caption*中的命令caption来排版没有标签的标题;一个小例子:

\documentclass{article}
\usepackage{caption}
\usepackage{algorithm}
\usepackage{algpseudocode}

\begin{document}
\begin{algorithm}
  \caption{A test algorithm (Part I)}
  \begin{algorithmic}[1]
  \Procedure {BellmanKalaba}{$G$, $u$, $l$, $p$}
  \ForAll {$v \in V(G)$}
  \State $l(v) \leftarrow \infty$
  \EndFor
  \algstore{bkbreak}
  \end{algorithmic}
\end{algorithm}

\begin{algorithm}
  \caption*{A test algorithm (Part II)}
  \begin{algorithmic}[1]
  \algrestore{bkbreak}
  \State $p(i) \leftarrow v_j$
  \State $l’(i) \leftarrow min$
  \State $changed \leftarrow l \not= l’$
  \EndProcedure
  \end{algorithmic}
\end{algorithm}

\end{document}

在此处输入图片描述

答案2

\ContinuedFloat我建议使用caption包并将第二部分标记为“继续”:

\documentclass{article}

\usepackage{algorithm}
\usepackage{algpseudocode}
\usepackage{caption}

\begin{document}

\begin{algorithm}
  \caption{Test}
  \begin{algorithmic}
    \State $i \gets 42$
    \algstore{test}
  \end{algorithmic}
\end{algorithm}

\begin{algorithm}
  \ContinuedFloat
  \caption{Test (cont.)}
  \begin{algorithmic}
    \algrestore{test}
    \State $j \gets 24$
  \end{algorithmic}
\end{algorithm}

\end{document}

结果

caption如果您希望标签(而不是标题)文本包含“(继续)”字样,请参阅手册。

答案3

为了跟进@Gonzalo的回答,我将完整复制算法第二部分(续)的标题(使用\caption*)。感谢他的回答:

在此处输入图片描述

\documentclass{article}
\usepackage{caption}% http://ctan.org/pkg/caption
\usepackage{algorithm}% http://ctan.org/pkg/algorithm
\usepackage{algpseudocode}% http://ctan.org/pkg/algorithmicx

\begin{document}
\begin{algorithm}
  \caption{BellmanKalaba algorithm} \label{alg:first}
  \begin{algorithmic}[1]
  \Procedure {BellmanKalaba}{$G$, $u$, $l$, $p$}
  \ForAll {$v \in V(G)$}
  \State $l(v) \leftarrow \infty$
  \EndFor
  \algstore{bkbreak}
  \end{algorithmic}
\end{algorithm}

\begin{algorithm}
  \caption*{\textbf{Algorithm~\ref{alg:first}}\ BellmanKalaba algorithm (continued)}
  \begin{algorithmic}[1]
  \algrestore{bkbreak}
  \State $p(i) \leftarrow v_j$
  \State $l’(i) \leftarrow min$
  \State $changed \leftarrow l \not= l’$
  \EndProcedure
  \end{algorithmic}
\end{algorithm}
\end{document}

只需稍加努力,就可能能够提供修改\caption,以便附加参数\caption*可以是前一个算法标签,从而自动产生上述结果。

相关内容