我正在尝试将算法拆分成两页。这个问题之前已经解决过,最接近的结果是这个问题。然而,我有一个问题——我需要算法有两个部分:一个列出输入,另一个列出步骤。
以下是一个例子:
\documentclass{article}
\usepackage{algorithm}
\usepackage{caption}
\begin{document}
\begin{algorithm}[H]
\caption{\label{alg:MyAlgorithm}My Algorithm}
\textbf{\footnotesize Inputs}{\footnotesize \par}
\begin{itemize}
\item {\footnotesize Input $A$}{\footnotesize \par}
\item {\footnotesize Input $B$}{\footnotesize \par}
\end{itemize}
\textbf{\footnotesize Steps}{\footnotesize \par}
\begin{enumerate}
\item {\footnotesize Calculate $X$}{\footnotesize \par}
\item {\footnotesize Calculate $Y$}{\footnotesize \par}
\end{enumerate}
\end{algorithm}
\end{document}
我需要将算法拆分到两页的原因是,输入列表和算法步骤的组合无法放在一页上。我之所以选择algorithmicx
拆分,是因为 (1) 它支持拆分,以及 (2) 能够为后续内容添加标题(其他软件包可能支持,但上面链接的示例展示了如何做到这一点)。但是,我不清楚如何包含分项列表(即第一部分,我在其中命名算法的输入)——这是我想要的第三件事。
关于能够使用itemize
(对于包含算法输入的部分)和enumerate
(对于算法的步骤;我也很乐意使用行号而不是enumerate
),我是否遗漏了什么,或者我是否在包方面犯了错误的错误?
答案1
您可以algorithmic
在自己的algorithm
。以下 MWE 显示了如何执行此操作以创建一个名为输入其中一个叫脚步同时仍然能够在多个页面上破解该算法(使用\algstore
和\algrestore
)。
\documentclass{article}
\usepackage{algorithm}% http://ctan.org/pkg/algorithm
\usepackage{algpseudocode}% http://ctan.org/pkg/algorithmicx
\usepackage{caption}% http://ctan.org/pkg/caption
\begin{document}
\begin{algorithm}
\caption{My algorithm}
\textbf{Inputs}% Inputs section
\begin{algorithmic}[1]
\State Input $A$
\State Input $B$
\State Input $C$
\end{algorithmic}
\bigskip
\textbf{Steps}% Steps section
\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}