我正在使用建议的解决方案C. 菲奥里奥在想要 algorithm2e 算法中的 Knuth 风格行号。建议使用阿尔贡algorithm2e 的选项可实现 Knuth 风格的算法行号;例如,算法 #3 的行号应为 3.1、3.2、3.3 等。但是,如果我使用盒装选项。
有人可以建议一个好方法来解决这个问题,以便算法框不会与行号冲突?
这是一个最小工作示例。
\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}
答案1
设置较大的值\algomargin
可以解决问题。您可以
- 直接设置
\setlength\algomargin{3em}
或 - 用来
\IncMargin{<length>}
添加<length>
到\algomargin
。
查看记录algorithm2e
,第 9.6 节。
或者,您也可以
完整示例
\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}