文本在算法(algorithm2e)之前跳起来

时间:2019-04-23 13:15:06

标签: latex

假设我有一个包含以下内容的.tex文件:

    \documentclass[10pt,a4paper]{article}

    \usepackage[utf8]{inputenc}
    \usepackage[ruled,vlined]{algorithm2e}

    \begin{document}

    \section{Section1}

    \subsection{SubSection1}
    Text Before:\newline
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sem ex, rhoncus id mattis sit amet, vehicula sed magna. Sed lacus libero, cursus ac mi at, ornare mattis orci. Sed aliquet felis non scelerisque pulvinar. Maecenas congue volutpat neque sit amet placerat. Sed ultricies magna urna, nec egestas quam accumsan in. Nulla finibus quam dolor, at aliquet mauris tristique a. Aenean ultrices fermentum ante, a dignissim libero vehicula ac. Aenean ornare ullamcorper molestie. Nunc sagittis risus dolor, auctor sodales quam vestibulum a. Morbi tincidunt auctor odio. Sed feugiat diam nulla, commodo tincidunt lectus euismod vel. Aliquam quis maximus nunc, at cursus lectus. Vestibulum posuere aliquam diam, in malesuada nisi tincidunt id. Curabitur aliquam sapien cursus vestibulum tempor. Cras malesuada aliquet sapien et aliquet. Aliquam nibh metus, cursus at pharetra sit amet, tincidunt tincidunt ante. 

    \subsection{Subsection2}
    %Algorithm
    \SetKwFor{Loop}{Loop}{}{end}
    \begin{algorithm}
    \DontPrintSemicolon
    \SetAlgoLined
    \Loop{$\infty$:}{
        $i++$\;
    }
    \Loop{$\infty$:}{
        $i++$\;
    }
    \Loop{$\infty$:}{
        $i++$\;
    }
    \Loop{$\infty$:}{
        $i++$\;
    }
    \Loop{$\infty$:}{
        $i++$\;
    }
    \Loop{$\infty$:}{
        $i++$\;
    }
    \Loop{$\infty$:}{
        $i++$\;
    }
    \Loop{$\infty$:}{
        $i++$\;
    }
    \Loop{$\infty$:}{
        $i++$\;
    }
    \Return{V}\;
    \caption{{\sc someAlgorithm.}}
    \label{algo:Algorithm}
    \end{algorithm}

    Text After:\newline
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sem ex, rhoncus id mattis sit amet, vehicula sed magna. Sed lacus libero, cursus ac mi at, ornare mattis orci. Sed aliquet felis non scelerisque pulvinar. Maecenas congue volutpat neque sit amet placerat. Sed ultricies magna urna, nec egestas quam accumsan in. Nulla finibus quam dolor, at aliquet mauris tristique a. Aenean ultrices fermentum ante, a dignissim libero vehicula ac. Aenean ornare ullamcorper molestie. Nunc sagittis risus dolor, auctor sodales quam vestibulum a. Morbi tincidunt auctor odio. Sed feugiat diam nulla, commodo tincidunt lectus euismod vel. Aliquam quis maximus nunc, at cursus lectus. Vestibulum posuere aliquam diam, in malesuada nisi tincidunt id. Curabitur aliquam sapien cursus vestibulum tempor. Cras malesuada aliquet sapien et aliquet. Aliquam nibh metus, cursus at pharetra sit amet, tincidunt tincidunt ante.

\end{document}

我得到的结果如下所示: First Page Second Page

第2节中的文本应出现在算法之后,但是,它显示在其顶部,我不知道这是不是algorithm2e中的错误,还是我做错了我无法发现的错误。顺便说一句,这也参考了,每当算法占用的空间大于当前页面上剩余的空间时,它之后的内容就会超过它。

1 个答案:

答案 0 :(得分:2)

默认情况下,algorithm是一个浮动环境,例如图形或表格。这意味着tex将尝试为其找到最佳的位置。如果您认为可以做得更好,可以通过在H环境中添加选项algorithm来强制将其放置在文本中的确切位置:

    \documentclass[10pt,a4paper]{article}

    \usepackage[utf8]{inputenc}
    \usepackage[ruled,vlined]{algorithm2e}

    \begin{document}

    \section{Section1}

    \subsection{SubSection1}
    Text Before:\newline
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sem ex, rhoncus id mattis sit amet, vehicula sed magna. Sed lacus libero, cursus ac mi at, ornare mattis orci. Sed aliquet felis non scelerisque pulvinar. Maecenas congue volutpat neque sit amet placerat. Sed ultricies magna urna, nec egestas quam accumsan in. Nulla finibus quam dolor, at aliquet mauris tristique a. Aenean ultrices fermentum ante, a dignissim libero vehicula ac. Aenean ornare ullamcorper molestie. Nunc sagittis risus dolor, auctor sodales quam vestibulum a. Morbi tincidunt auctor odio. Sed feugiat diam nulla, commodo tincidunt lectus euismod vel. Aliquam quis maximus nunc, at cursus lectus. Vestibulum posuere aliquam diam, in malesuada nisi tincidunt id. Curabitur aliquam sapien cursus vestibulum tempor. Cras malesuada aliquet sapien et aliquet. Aliquam nibh metus, cursus at pharetra sit amet, tincidunt tincidunt ante. 

    \subsection{Subsection2}
    %Algorithm
    \SetKwFor{Loop}{Loop}{}{end}
    \begin{algorithm}[H]
    \DontPrintSemicolon
    \SetAlgoLined
    \Loop{$\infty$:}{
        $i++$\;
    }
    \Loop{$\infty$:}{
        $i++$\;
    }
    \Loop{$\infty$:}{
        $i++$\;
    }
    \Loop{$\infty$:}{
        $i++$\;
    }
    \Loop{$\infty$:}{
        $i++$\;
    }
    \Loop{$\infty$:}{
        $i++$\;
    }
    \Loop{$\infty$:}{
        $i++$\;
    }
    \Loop{$\infty$:}{
        $i++$\;
    }
    \Loop{$\infty$:}{
        $i++$\;
    }
    \Return{V}\;
    \caption{{\sc someAlgorithm.}}
    \label{algo:Algorithm}
    \end{algorithm}

    Text After:\newline
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sem ex, rhoncus id mattis sit amet, vehicula sed magna. Sed lacus libero, cursus ac mi at, ornare mattis orci. Sed aliquet felis non scelerisque pulvinar. Maecenas congue volutpat neque sit amet placerat. Sed ultricies magna urna, nec egestas quam accumsan in. Nulla finibus quam dolor, at aliquet mauris tristique a. Aenean ultrices fermentum ante, a dignissim libero vehicula ac. Aenean ornare ullamcorper molestie. Nunc sagittis risus dolor, auctor sodales quam vestibulum a. Morbi tincidunt auctor odio. Sed feugiat diam nulla, commodo tincidunt lectus euismod vel. Aliquam quis maximus nunc, at cursus lectus. Vestibulum posuere aliquam diam, in malesuada nisi tincidunt id. Curabitur aliquam sapien cursus vestibulum tempor. Cras malesuada aliquet sapien et aliquet. Aliquam nibh metus, cursus at pharetra sit amet, tincidunt tincidunt ante.

\end{document}