![用于对齐类似(部分)算法的软件包,以便于比较](https://linux22.com/image/366711/%E7%94%A8%E4%BA%8E%E5%AF%B9%E9%BD%90%E7%B1%BB%E4%BC%BC%EF%BC%88%E9%83%A8%E5%88%86%EF%BC%89%E7%AE%97%E6%B3%95%E7%9A%84%E8%BD%AF%E4%BB%B6%E5%8C%85%EF%BC%8C%E4%BB%A5%E4%BE%BF%E4%BA%8E%E6%AF%94%E8%BE%83.png)
我有两个类似的算法,我想将它们并排展示,并希望对齐代码的类似部分。目前我正在使用:
\begin{multicols}{2}
\begin{algorithm}[H]
\eIf{$i = 0$}{
$a\leftarrow b$\;
\If{$j \not= 0$}{
$x\leftarrow f(i,j)$\;
}
}{
$a\leftarrow c$\;
}
...
\end{algorithm}
\columnbreak
\begin{algorithm}[H]
\If{$i = 0 \wedge j \not= 0$}{
\vskip 2em
$x\leftarrow f(i,j)$\;
}
\vskip 1em
$a\leftarrow c$\;
...
\end{algorithm}
\end{multicols}
这在某种程度上成功地对齐了if
-statement、x <- f(i,j)
和a <- c
,但对齐并不完全正确,因为我的 vskips 没有使用正确的长度。 这可能可以解决,但尽管如此:这显然是一次黑客攻击。这引出了我的问题:
有没有更好的方法(也许使用包)来并排呈现两个算法,以便算法的某些部分保持一致?