Estoy usando una solución sugerida porC. FiorioenQuiere numeración de líneas al estilo Knuth en algoritmos Algoritm2e. La sugerencia fue utilizar elalgonlopción para que algoritmo2e logre la numeración de líneas del algoritmo estilo Knuth; es decir, el algoritmo n.° 3 debería tener líneas numeradas 3.1, 3.2, 3.3, etc. Sin embargo, parece que el número de línea desborda el cuadro delimitador si uso elen cajaopción.
¿Alguien puede sugerir una buena manera de solucionar este problema para que el cuadro del algoritmo no entre en conflicto con la numeración de líneas?
Esto es lo que veo renderizado.
Aquí hay un ejemplo de trabajo mínimo.
\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}
Respuesta1
Establecer un tamaño más grande \algomargin
resuelve el problema. Puede
- establecer directamente
\setlength\algomargin{3em}
o - utilizar
\IncMargin{<length>}
para agregar<length>
a\algomargin
.
Ver eldocumentación dealgorithm2e
, segundo 9.6.
Alternativamente, puedes
Ejemplo completo
\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}