看了官方文档和网上一下资料,对于一个步骤下面有好多子步骤的算法,大多是通过for循环与while判断实现的,而且对于for下面的每一步骤没有重新编码,感觉很乱,不好看。
论文的参考文有下图的结构,感觉很好,可以一用。
主要用到下面这个代码块,其 对代码块里的每一句以 \State开始的语句进行编号,其中[1]表示,自动从1开始编号。如果不想自动编号,可以去掉[1],自己设置为step1,step2,a,b,c等等。
\begin{algorithmic}[1]
\State...
\State...
\end{algorithmic}
\begin{algorithmic}
\State step1...
\State step2...
\end{algorithmic}
因此考虑实现上述代码,使用两个编号代码块,如下:、
\begin{algorithm}
\caption{GFHF algorithm}\label{algo1}
\begin{algorithmic}[1]
\State Construct a probabilistic transition matrix P by (3)
\State Let $Y_{0}=[Y_{0}^{l},0]$
\State Performing the following steps for a desired $T$ steps:
\begin{algorithmic}
\State 3.a: $Y_{t+1}=P*Y_{t}$,
\State 3.b: $Y_{t+1}^{(l)}=Y_{0}^{l}$.
\end{algorithmic}
\State Output $Y_{T}$
\end{algorithmic}
\end{algorithm}
但是出现问题,最后一句总是在跟随子代码块,且自定义编号和\begin{algorithmic}的编号大小不一致,因此考虑一个编号代码块,且都自己定义编号,另外考虑3.a,3.b,前面添加空格。
\begin{algorithm}
\caption{GFHF algorithm}\label{algo1}
\begin{algorithmic}
\State 1: Construct a probabilistic transition matrix P by (3)
\State 2: Let $Y_{0}=[Y_{0}^{l},0]$
\State 3: Performing the following steps for a desired $T$ steps:
\State \quad \quad 3.a: $Y_{t+1}=P*Y_{t}$,
\State \quad \quad 3.b: $Y_{t+1}^{(l)}=Y_{0}^{l}$.
\State 4: Output $Y_{T}$
\end{algorithmic}
\end{algorithm}
最后一步,修改算法框的宽度,上述太宽了,不美观
加入:
\begin{center} % center algorithm
\begin{minipage}{0.8\linewidth} % mini-page
...
\end{minipage}
\end{center}
效果如下:
\begin{center} % center algorithm
\begin{minipage}{0.8\linewidth} % mini-page
\begin{algorithm}[H]
\caption{GFHF algorithm}\label{algo1}
\begin{algorithmic}
\State 1: Construct a probabilistic transition matrix P by (3)
\State 2: Let $Y_{0}=[Y_{0}^{l},0]$
\State 3: Performing the following steps for a desired $T$ steps:
\State \quad \quad 3.a: $Y_{t+1}=P*Y_{t}$,
\State \quad \quad 3.b: $Y_{t+1}^{(l)}=Y_{0}^{l}$.
\State 4: Output $Y_{T}$
\end{algorithmic}
\end{algorithm}
\end{minipage}
\end{center}
注意:0.8\linewidth,宽为0.8倍的\linewidth,要识别\linewidth为尺度单位,需导入包\usepackage{subcaption} (在\begin{document}之前)