![伪代码会分布在多个页面上吗?](https://linux22.com/image/235855/%E4%BC%AA%E4%BB%A3%E7%A0%81%E4%BC%9A%E5%88%86%E5%B8%83%E5%9C%A8%E5%A4%9A%E4%B8%AA%E9%A1%B5%E9%9D%A2%E4%B8%8A%E5%90%97%EF%BC%9F.png)
我在算法环境中编写伪代码。它很长,无法放在一页上。它没有继续在下一页,而是被截断了。我尝试将其插入到图形环境中,但问题仍然存在。有没有解决方案可以让代码继续在下一页?
答案1
如果不想让算法浮动,就用algorithmic
没有algorithm
环境的环境就行。
否则,您可以使用algorithmicx
包。它允许将长算法拆分成几部分,保留行号和缩进。您还可以将其与caption
获得\ContinuedFloat
正确的算法编号:
\documentclass{article}
\usepackage{algorithm,algpseudocode}
\usepackage{caption}
\begin{document}
\begin{algorithm}
\caption{My algorithm}
\begin{algorithmic}[1]
\Procedure{Euclid}{$a,b$}\Comment{The g.c.d. of a and b}
\State $r\gets a\bmod b$
\While{$r\not=0$}\Comment{We have the answer if r is 0}
\State $a\gets b$
\State $b\gets r$
\algstore{myalg}
\end{algorithmic}
\end{algorithm}
\clearpage
\begin{algorithm}
\ContinuedFloat
\caption{My algorithm (continued)}
\begin{algorithmic}
\algrestore{myalg}
\State $r\gets a\bmod b$
\EndWhile\label{euclidendwhile}
\State \textbf{return} $b$\Comment{The gcd is b}
\EndProcedure
\end{algorithmic}
\end{algorithm}
\end{document}
(该算法示例取自的algorithmicx
文档。)