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.
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 \algomargin
lö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}