Algorithm2e-Optionen Algonl und Boxed scheinen zu kollidieren

Algorithm2e-Optionen Algonl und Boxed scheinen zu kollidieren

Ich verwende eine Lösung vorgeschlagen vonC. FiorioInMöchten Sie Zeilennummerierung im Knuth-Stil in Algorithm2e-Algorithmen?Der Vorschlag war, diealgonOption für algorithm2e, um eine Zeilennummerierung im Knuth-Stil zu erreichen; d. h. Algorithmus Nr. 3 sollte Zeilen mit den Nummern 3.1, 3.2, 3.3 usw. haben. Es scheint jedoch, dass die Zeilennummer den Begrenzungsrahmen überschreitet, wenn ich dieverpacktMöglichkeit.

Kann jemand einen guten Weg vorschlagen, dies zu beheben, sodass das Algorithmusfeld nicht mit der Zeilennummerierung kollidiert?

Hier ist die Darstellung, die ich sehe. Bildbeschreibung hier eingeben

Hier ist ein minimal funktionierendes Beispiel.

\documentclass{article}

\usepackage[noend,boxed,linesnumbered,algonl]{algorithm2e}
\SetKwProg{Fn}{Function}{}{end}

\begin{document}

\begin{algorithm}[H]\label{algo.find.augmenting.path}
  \caption{Implementation of function to find an augmenting path if one exists.}
  \DontPrintSemicolon
  \Fn{find-augmenting-path-or-none$(adj,E,M)$}{
    \SetKwInOut{Input}{Input}\SetKwInOut{Output}{Output}
    \Input{$adj$ adjacency list of simple graph}
    \Input{$E$ set of edges}
    \Input{$M$ a matching}
    \BlankLine
    $free \gets $ generate-free-vertices() \;
    \If{$|free| < 2$}{
      \Return None \;
    }
    \tcp*[l]{Find set of length=2 paths starting at a free vertex}
    $paths \gets \{[u,v] \mid u\in free, \{u,v\} \in E  \}$\label{algo.line.paths.1b}\;
    $k \gets 1$  \tcp*{index of 2nd element of 0-index-based array}
    \While{$paths \neq \emptyset$}{
      \If{odd$(k)$}{
        \For{$p \in paths$}{
          \If{ $p_k \in free$ }{
            \Return p\;
          }
        }
      }
      $paths \gets$ extend-alternating-path$(adj,M,k,free,paths)$ \;
      $k \gets k+1$ \;
    }
    \Return None
  }
\end{algorithm}

\end{document}

Antwort1

Das Einstellen eines größeren Werts \algomarginlöst das Problem. Sie können

  • direkt setzen \setlength\algomargin{3em}oder
  • Verwenden Sie \IncMargin{<length>}es zum Hinzufügen <length>zu \algomargin.

Sehen Sie sich dieDokumentation vonalgorithm2e, Abschnitt 9.6.

Alternativ können Sie

Vollständiges Beispiel

\documentclass{article}

\usepackage[noend,boxed,linesnumbered,algonl]{algorithm2e}
\SetKwProg{Fn}{Function}{}{end}

\setlength\algomargin{3em}

\begin{document}

\begin{algorithm}[H]\label{algo.find.augmenting.path}
  \caption{Implementation of function to find an augmenting path if one exists.}
  \DontPrintSemicolon
  \Fn{find-augmenting-path-or-none$(adj,E,M)$}{
    \SetKwInOut{Input}{Input}\SetKwInOut{Output}{Output}
    \Input{$adj$ adjacency list of simple graph}
    \Input{$E$ set of edges}
    \Input{$M$ a matching}
    \BlankLine
    $free \gets $ generate-free-vertices() \;
    \If{$|free| < 2$}{
      \Return None \;
    }
    \tcp*[l]{Find set of length=2 paths starting at a free vertex}
    $paths \gets \{[u,v] \mid u\in free, \{u,v\} \in E  \}$\label{algo.line.paths.1b}\;
    $k \gets 1$  \tcp*{index of 2nd element of 0-index-based array}
    \While{$paths \neq \emptyset$}{
      \If{odd$(k)$}{
        \For{$p \in paths$}{
          \If{ $p_k \in free$ }{
            \Return p\;
          }
        }
      }
      $paths \gets$ extend-alternating-path$(adj,M,k,free,paths)$ \;
      $k \gets k+1$ \;
    }
    \Return None
  }
\end{algorithm}

\end{document}

Ausgabe zeigt größeren \algomargin

verwandte Informationen