我想做类似的事情:
\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*
可以是前一个算法标签,从而自动产生上述结果。