在 中algorithm2e
,如果您使用“ruled”选项,算法的标题会自动编号。例如,如果您在一个文档中编写了 2 个算法,则第一个算法的标题为算法 1,第二个算法的标题为算法 2。我如何自定义此编号?假设我只编写了一个算法,并希望将其标题为“算法 3”,如下图所示。
答案1
您可以强制与该环境相关的计数器。
请注意,在典型的 LaTeX 方式中,计数器在使用前会递增。因此,为了强制算法按Algorithm 3
(比如说)方式启动,可以将相关计数器设置为 2。algorithm2e
环境algorithm
是algocf
(我猜是以作者 Christophe Fiorio 的名字命名的)。因此,使用
\setcounter{algocf}{2}
在使用algorithm
环境之前立即将以下算法设置为Algorithm 3
。
以下示例取自algorithm2e
文档:
\documentclass{article}
\usepackage[ruled]{algorithm2e}% http://ctan.org/pkg/algorithm2e
\begin{document}
\setcounter{algocf}{2}% Modify counter of algorithm
\begin{algorithm}
\DontPrintSemicolon
\KwData{$G=(X,U)$ such that $G^{tc}$ is an order.}
\KwResult{$G’=(X,V)$ with $V\subseteq U$ such that $G’^{tc}$ is an
interval order.}
\Begin{
$V \longleftarrow U$\;
$S \longleftarrow \emptyset$\;
\For{$x\in X$}{
$NbSuccInS(x) \longleftarrow 0$\;
$NbPredInMin(x) \longleftarrow 0$\;
$NbPredNotInMin(x) \longleftarrow |ImPred(x)|$\;
}
\For{$x \in X$}{
\If{$NbPredInMin(x) = 0$ {\bf and} $NbPredNotInMin(x) = 0$}{
$AppendToMin(x)$}
}
\nl\While{$S \neq \emptyset$}{\label{InRes1}
\nlset{REM} remove $x$ from the list of $T$ of maximal index\;\label{InResR}
\lnl{InRes2}\While{$|S \cap ImSucc(x)| \neq |S|$}{
\For{$ y \in S-ImSucc(x)$}{
\{ remove from $V$ all the arcs $zy$ : \}\;
\For{$z \in ImPred(y) \cap Min$}{
remove the arc $zy$ from $V$\;
$NbSuccInS(z) \longleftarrow NbSuccInS(z) - 1$\;
move $z$ in $T$ to the list preceding its present list\;
\{i.e. If $z \in T[k]$, move $z$ from $T[k]$ to
$T[k-1]$\}\;
}
$NbPredInMin(y) \longleftarrow 0$\;
$NbPredNotInMin(y) \longleftarrow 0$\;
$S \longleftarrow S - \{y\}$\;
$AppendToMin(y)$\;
}
}
$RemoveFromMin(x)$\;
}
}
\caption{IntervalRestriction\label{IR}}
\end{algorithm}
\end{document}
答案2
@pegausbupt:如何在引用算法时使用相同的更新计数器编号?对于标题为算法 3 的算法,新标题是算法 1,但当我引用时仍然得到算法 3。我需要建议。谢谢
\setcounter{algocf}{0} 我用它来手动设置计数器。