algorithm2e 和 enumerate

algorithm2e 和 enumerate

我想将一个算法放在一个枚举列表中,如下面的代码所示。

\documentclass[10pt,a4paper]{article}
\usepackage[utf8x]{inputenc}
\usepackage{ucs}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage[ruled,french]{algorithm2e}
\usepackage{lipsum}

\begin{document}

\lipsum[1]

\begin{enumerate}
    \item Bla, bla...

\begin{algorithm}[H]
    \caption{Le crible d'Eratosthène}

    \KwData{la liste $L$ des naturels compris de $2$ à $N$.}
    \KwResult{la liste $P$ des nombres premiers compris entre $2$ et $N$.}
    \BlankLine
    \For{$i = 2$ \KwTo $N$}{
        \If{$i$ n'est pas barré dans la liste $L$}{
            Barrer dans la liste $L$ les mutltiples $ki$ où $k \geq 2$.
        }
    }
    \Return{la liste $P$ des nombres non barrés.}
\end{algorithm} 

    \item Bla, bla...
\end{enumerate}

\end{document}

我遇到的问题是,我获得了以下输出,其中算法放错了位置(或太宽)。

在此处输入图片描述

如果有人可以给出一个以页面为中心而不是以项目内容为中心的算法解决方案,那就太好了。

答案1

主要问题是其宏中的algorithm2e使用\hsize,即不是受到推崇的。

你可以通过以下方式解决问题

\usepackage{xpatch}
\xpretocmd{\algorithm}{\hsize=\linewidth}{}{}

但我不能保证这没有副作用。

在此处输入图片描述

另一种方法是使用全线宽度:定义一个listalgorithm在列表内使用的环境

\makeatletter
\newenvironment{listalgorithm}
 {\par\noindent\hspace*{-\@totalleftmargin}%
  \minipage{\textwidth}\algorithm[H]}
 {\endalgorithm\endminipage}
\makeatother

在此处输入图片描述

最后的评论。我会尽力避免将算法放在enumerateitemize环境中。

答案2

另一种方法是将其包装在适当大小的minipage环境中。

\documentclass[10pt,a4paper]{article}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage[ruled,french]{algorithm2e}
\usepackage{lipsum}

\begin{document}

\lipsum[1]

\begin{enumerate}
    \item Bla, bla...

\begin{minipage}{\linewidth}  % <<<<< modify here <<<<<
\begin{algorithm}[H]
    \caption{Le crible d'Eratosthène}

    \KwData{la liste $L$ des naturels compris de $2$ à $N$.}
    \KwResult{la liste $P$ des nombres premiers compris entre $2$ et $N$.}
    \BlankLine
    \For{$i = 2$ \KwTo $N$}{
        \If{$i$ n'est pas barré dans la liste $L$}{
            Barrer dans la liste $L$ les mutltiples $ki$ où $k \geq 2$.
        }
    }
    \Return{la liste $P$ des nombres non barrés.}
\end{algorithm} 
\end{minipage}  % <<<<< modify here <<<<<


    \item Bla, bla...
\end{enumerate}

\end{document}

相关内容