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

问题描述 投票:1回答:1

假设我有一个包含以下内容的.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的错误,或者是我做错了我无法发现。顺便说一句,这也发生在参考中,每次算法占用更多空间然后保留在当前页面上,就在它高于它之后出现的事情。

latex
1个回答
1
投票

默认情况下,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}
© www.soinside.com 2019 - 2024. All rights reserved.