考虑以下 MWE:
\documentclass[twocolumn]{article}
\usepackage{algorithm}
\usepackage{algorithmicx}
\usepackage{algpseudocode}
\begin{document}
\begin{figure}[t]
\noindent\begin{minipage}{\columnwidth}
\begin{algorithm}[H]
\begin{algorithmic}[1]
\Function{Foo}{parameters}
\State{Do something}
\State{\Return result}
\EndFunction
\end{algorithmic}
\caption{Algorithm 1}
\end{algorithm}
\end{minipage}
\noindent\begin{minipage}{\columnwidth}
\begin{algorithm}[H]
\begin{algorithmic}[1]
\Function{Foo}{parameters}
\State{Do something}
\State{\Return result}
\EndFunction
\end{algorithmic}
\caption{Algorithm 2}
\end{algorithm}
\end{minipage}
\end{figure}
Some text.
Then comes the next algorithm.
\pagebreak
\begin{algorithm}[t]
\begin{algorithmic}[1]
\Function{Foo}{parameters}
\State{Do something}
\State{\Return result}
\EndFunction
\end{algorithmic}
\caption{Algorithm 3}
\end{algorithm}
And again some text.
\end{document}
我想将两个(或可能更多)算法组合到一个浮动对象中。我发现的唯一解决方案是使用两个小页面并在其中添加一个新的算法环境。该解决方案的问题是它在算法上方增加了一些空间。这在编译文档时清晰可见。左列中组合算法上方有一些空间。右列中的单个算法是否正确显示?
我怎样才能删除额外的空间,或者是否有更好的解决方案将两种算法结合在一个浮点数中?
答案1
有一个\baselineskip
需要删除。
\documentclass[twocolumn]{article}
\usepackage{algorithm}
\usepackage{algorithmicx}
\usepackage{algpseudocode}
\begin{document}
\begin{figure}[tp]
\vspace*{-\baselineskip}
\begin{minipage}{\columnwidth}
\begin{algorithm}[H]
\begin{algorithmic}[1]
\Function{Foo}{parameters}
\State{Do something}
\State{\Return result}
\EndFunction
\end{algorithmic}
\caption{Algorithm 1}
\end{algorithm}
\end{minipage}
\begin{minipage}{\columnwidth}
\begin{algorithm}[H]
\begin{algorithmic}[1]
\Function{Foo}{parameters}
\State{Do something}
\State{\Return result}
\EndFunction
\end{algorithmic}
\caption{Algorithm 2}
\end{algorithm}
\end{minipage}
\end{figure}
Some text.
Then comes the next algorithm.
\vfill
\pagebreak
\begin{algorithm}[tp]
\begin{algorithmic}[1]
\Function{Foo}{parameters}
\State{Do something}
\State{\Return result}
\EndFunction
\end{algorithmic}
\caption{Algorithm 3}
\end{algorithm}
And again some text.
\end{document}
你不需要\noindent
,因为里面的缩进被设置为零figure
。