我正在写算法长度相当于一页在 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}