algorithm2e 的调整框规则

algorithm2e 的调整框规则

我有这个代码:

\documentclass{article}
\usepackage[utf8]{inputenc}

\usepackage[portuguese, ruled, linesnumbered, boxruled]{algorithm2e}

\begin{document}
\begin{algorithm}[H]
    \SetAlgoLined
    \Entrada{Parâmetros}
    \Saida{$P_t$}
    \Inicio{
      $t \leftarrow$ GeraNovaPopulação(); \\
      Avalia($P_t$); \\
      \Enqto{\textbf{\textit{não}} CriterioParadaAtingido()}{
        $Q_t \leftarrow$ Variação($P_t$); \\
        Avalia($Q_t$); \\
        $P_{t + 1} \leftarrow$ Atualiza($Q_t$, $P_t$); \\
        $t \leftarrow t + 1$; \\
      }
    }
    \caption{Pseudocódigo de uma MOEA.\label{algo:moea-pseudocode}}
    \end{algorithm}}
\end{document}

它会产生以下输出:

代码输出

我想知道是否可以减小水平线的宽度,即将其缩小到最大。

编辑:

正如@Werner 在评论中所说以及@marmot 所提到的,期望的输出是:

期望输出

答案1

algorithm2e包裹完全管理自己的浮动机制,因此没有与浮动相关联的常规句柄或钩子。因此,实现所需目的的最简单方法是将ed包装algorithm在内部,在其中指定块宽度:centerminipage

在此处输入图片描述

\documentclass{article}

\usepackage[utf8]{inputenc}

\usepackage[portuguese, ruled, linesnumbered, boxruled]{algorithm2e}

\begin{document}

\begin{center}
  \begin{minipage}{.725\linewidth}
    \begin{algorithm}[H]
      \SetAlgoLined
      \Entrada{Parâmetros}
      \Saida{$P_t$}
      \Inicio{
        $t \leftarrow$ GeraNovaPopulação(); \\
        Avalia($P_t$); \\
        \Enqto{\textbf{\textit{não}} CriterioParadaAtingido()}{
          $Q_t \leftarrow$ Variação($P_t$); \\
          Avalia($Q_t$); \\
          $P_{t + 1} \leftarrow$ Atualiza($Q_t$, $P_t$); \\
          $t \leftarrow t + 1$; \\
        }
      }
      \caption{Pseudocódigo de uma MOEA.\label{algo:moea-pseudocode}}
    \end{algorithm}
  \end{minipage}
\end{center}

\end{document}

0.725\linewidth您可以根据自己的需要调整其值。

上述方法依赖于你的algorithm设置为停留[H]在 ere(放置在文本内部)的事实。如果你想让它浮动但又受到约束,你必须采取如下方法:

\begin{figure}[<float spec>]
  \centering
  \begin{minipage}{.725\linewidth}
    \begin{algorithm}[H]
      % <your algorithm>
    \end{algorithm}
  \end{minipage}
\end{figure}

相关内容