提问于:
浏览数:
3849
论文模版不建议使用algorithm的浮动环境,但是把算法嵌入到图片里面效果就不好看了,比如:
```
\begin{figure}
\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$
\State $r\gets a\bmod b$
\EndWhile\label{euclidendwhile}
\State \textbf{return} $b$\Comment{The gcd is b}
\EndProcedure
\end{algorithmic}
\caption{Euclid's algorithm}\label{euclid}
\end{figure}
```
出来效果是:
![](https://pics.latexstudio.net/data/images/202003/cf2a20f6fd79047.png)
还有一种效果倒是想要的,但是看起来比较麻烦:
```
\usepackage[ruled,norelsize]{algorithm2e}
\makeatletter
\newcommand{\removelatexerror}{\let\@latex@error\@gobble}
\makeatother
\begin{document}
\begin{figure}[!t]
\removelatexerror
\begin{algorithm}[H]
\caption{multiobjective DE}
initialize population $P = \left \{ X_{1}, ... , X_{N} \right \} $\;
\For( \emph{Evolutionary loop}){$g := 1$ to $G_{max}$}
{
Do things \;
Trim the population to size $N$ using nondominated sorting and diversity estimation \;
}
\end{algorithm}
\end{figure}
\end{document}
```
效果如下:
![](https://pics.latexstudio.net/data/images/202003/fd2f29cfc38ca7a.png)
如果直接在algorithm后面指定位置h
```
\begin{algorithm}[h]
\caption{An example for format For \& While Loop in Algorithm}
\begin{algorithmic}[1]
```
可以得到想要的结果,**但是这样可以去掉algorithm的浮动环境吗?**
我还尝试了直接在algorithm后面用H,但是算法的位置并没有紧跟文字,想知道是什么原因?
2 回答
0
我自己又尝试了一下,用h的话有时候算法会跑到很远的地方(那就是还是浮动的吧),貌似直接加H是可以的,但是,如果两个算法连在一起格式就比较奇怪了,依然疑惑
下面是我在一个论坛上看到的回答(这个要加上float包)![](https://pics.latexstudio.net/data/images/202003/4948297836aa6fe.png)
0
如果你只是想要算法的题注,而又不希望它浮动,或许你可考虑用 `\captionof` 啊。
作者追问:2020-03-18 23:53
我试了captionof,但是没有三条横线![](https://pics.latexstudio.net/data/images/202003/14998d0418237b9.png)
希望是下面这种
![](https://pics.latexstudio.net/data/images/202003/dc2f17a84a676a7.png)
回答: 2020-03-19 08:25
那些线就是浮动体环境提供的,这没办法,浮动体是 latex 的特色。不用浮动体就没办法达成你想要的样式。
你的回答
请登录后回答
你的回答将会帮助更多人,请务必认真回答问题。