论文模版不建议使用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 回答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 的特色。不用浮动体就没办法达成你想要的样式。

你的回答

请登录后回答

你的回答将会帮助更多人,请务必认真回答问题。