为什么创建的算法会浮动到下一页?

为什么创建的算法会浮动到下一页?

我正在写算法长度相当于一页在 latex 下,算法浮动到下一页,并且在该算法之前的段落后留有一个空白。

在此处输入图片描述

使用的代码类似如下:

\documentclass{article}

\usepackage{amsmath, amssymb}
\usepackage{pdflscape}
\usepackage[margin=0.5in]{geometry}

\usepackage{colortbl}
\usepackage[margin=1cm]{caption}
\usepackage{multirow}
\usepackage{booktabs}
\usepackage{float}
\usepackage{graphicx}
\graphicspath{{figures/}}

\usepackage{longtable}

\usepackage{algorithm}
\usepackage{algorithmic}

\usepackage{pdfpages}

\begin{document}


------Some paragraph --------


\begin{algorithm}
    \caption{ algorithm_title}
    \begin{algorithmic}
-----Some instructions ----
\end{algorithmic}
\end{algorithm}

\end{document}

文档的另一个视图(段落前有一张图片):

在此处输入图片描述

我希望问题清楚。提前感谢您的帮助!

答案1

这个问题的一个更简单的 MWE:

\documentclass{article}
\usepackage{lipsum}
%\renewcommand{\topfraction}{0.9}
\begin{document} 
\begin{figure}
\rule{10cm}{14cm}\end{figure}
\lipsum[1-50] 
\end{document}

即使页面中只有一个单词,并且显然有足够的空间,浮动也会位于第二页中。问题是,根据某些 LaTeX 指令,没有足够的空间容纳浮动。默认情况下,浮动应放置在顶部,但前提是浮动高度小于文本高度的 70%。由于此浮动较大,因此使用不同的指令将其移动到“浮动页面”。

改变这种行为的一种方法是放宽以下指令之一:

\renewcommand{\topfraction}{0.9}

现在顶部浮动的空间可以达到文本高度的 90%,因此浮动将出现在第一页的顶部。

或者你可以忽略浮动指令:

\begin{figure}[!]

另一个解决方案是将默认值 ( [tp]) 更改为[htp]

\begin{figure}[htp]  % or just ...   \begin{figure}[h] 

有趣的是,[t]浮动不能位于顶部,但只有 [h] 才有可能,因为\topfraction指令不适用于此选项(即使“这里”确实是页面的顶部)。

有关浮动在文档中的位置的更多信息,请参阅如何影响 LaTeX 中图形和表格等浮动环境的位置?

答案2

我找到了另一个可能的解决方案,在代码中使用指定的包,并将要拆分的部分嵌入到新算法中。在这种情况下,只要不对此嵌入部分使用标题,它就不会被计算在内:

\documentclass{article}

\usepackage[linesnumbered,ruled,vlined]{algorithm2e}
\usepackage{ifoddpage}

%% plz drop linesnumbered and vlined options if you don't like the vertical line and the numbering %% of lines 

\begin{document}


\begin{algorithm}
%% Algorithm 1: caption
\caption{algorithm\_1 : caption }
\LinesNumbered
 
a=0
a=a+1 

 
\end{algorithm}


 


\begin{algorithm}
 \State remaining algorithm 1 instructions here
  %% This algo will not be counted because it completes the algorithm 1 
\end{algorithm}


\begin{algorithm}
%% Algorithm 2 : caption
\caption{ Algo 2 : The algo number will be displayed as 2}
  \LinesNumbered
    \State algorithm instructions here
\end{algorithm}

\end{document}

相关内容