跳到正文

Scissor LaTeX 中的算法宏包

算法宏包在 Scissor LaTeX 中部分可用:algorithm 环境可用,支持带编号的标题和 \label;algorithmic 的大写命令(\STATE、\FOR)只在会议版式中会被读取;algpseudocode(\State、\For)和 algorithm2e(\KwIn、\For{}{})不受支持,所以请改为把步骤写在 verbatim 块中。

宏包的作用

在 LaTeX 中写伪代码通常需要两个宏包。algorithm 提供一个带标题的编号环境,即“Algorithm 1: ...”,它像图一样浮动。另一个宏包负责书写步骤:algorithmic(大写命令,\STATE、\IF、\ENDIF),algorithmicx 套件中的 algpseudocode(大小写混合,\State、\If、\EndIf),或者 algorithm2e,它自带 algorithm 环境以及 \KwIn、\For{condition}{body} 等命令。

这里可用的功能

宏包功能在 Scissor LaTeX 中
algorithm\begin{algorithm}, \caption, \label, \ref可用:“Algorithm N”,标题在下方,不浮动。
algorithm[H], [t], [h] 位置参数忽略:算法留在你写下它的位置。
algorithm\listofalgorithms不支持:会被跳过并显示提示。
algorithmic\STATE, \IF, \FOR, \WHILE, \RETURN ...部分可用:在使用会议版式的文档中会被读取,但没有行号。在其他地方无法识别。
algpseudocode\State, \If, \For, \Function, \Return ...不支持:命令名被跳过,各步骤挤在一行中。
algorithm2e\KwIn, \KwOut, \For{..}{..}, \eIf, \;不支持:会被跳过并显示提示;各步骤挤在一起。

在 algorithm 中,内容会像在图中一样居中。verbatim 块会整体居中,而其中各行保持左对齐,缩进也和输入时一样,因此它是在这里展示步骤最可靠的方式。

示例

写在 verbatim 中的步骤,带编号和引用:

步骤写在 verbatim 中的 algorithm

LaTeX导言区: \usepackage{algorithm}在编辑器中打开 (在新标签页中打开)
\begin{algorithm}
\caption{Find the largest value}
\label{alg:max}
\begin{verbatim}
best := xs[1]
for i := 2 to n:
    if xs[i] > best:
        best := xs[i]
return best
\end{verbatim}
\end{algorithm}
Algorithm~\ref{alg:max} looks at each value once.
由 Scissor LaTeX 排版: 步骤写在 verbatim 中的 algorithm

algorithm2e 的命令会被跳过,所以各行会挤在一起。“问题”标签页会列出它不认识的命令:

algorithm2e 不受支持

LaTeX导言区: \usepackage{algorithm2e}在编辑器中打开 (在新标签页中打开)
\begin{algorithm}
\caption{Sum of a list}
\KwIn{numbers $a_1, \dots, a_n$}
$s \gets 0$\;
\For{$i \gets 1$ \KwTo $n$}{$s \gets s + a_i$\;}
\Return{$s$}\;
\end{algorithm}
由 Scissor LaTeX 排版: algorithm2e 不受支持

“问题”标签页: Skipped 4 unknown commands: \KwIn, \For, \KwTo, \Return

算法和伪代码页面并排展示了会议版式中的 algorithmic 和 algpseudocode。

兼容性

  • 从 TeX 发行版迁移到这里: 算法保留编号和标题。用 algpseudocode 或 algorithm2e 写的步骤会挤在一起;请改写成 verbatim,或在会议版式中使用 algorithmic。
  • 从这里迁移到 TeX 发行版: 步骤写在 verbatim 中的 algorithm 在任何地方都能编译,效果也相同,只是算法可能会浮动到页面顶部。

手册见 CTAN:algorithms(algorithm 和 algorithmic)、algorithmicx(algpseudocode)和 algorithm2e。

另请参阅算法、listings 和会议版式。

常见问题

在 Scissor LaTeX 中应该使用哪个算法宏包?

用 algorithm 提供编号和标题,并把步骤写在 verbatim 块中。这种写法在这里的任何文档以及任何 TeX 发行版中都可用。

为什么我的算法各行被合并成了一行?

这些步骤使用了 algpseudocode 或 algorithm2e 的命令,而 Scissor LaTeX 不读取它们。命令名被跳过,所以所有步骤的文本最终都落在同一行中。

本页的每个示例都在构建网站时由 Scissor LaTeX 排版。 最后更新:2026-11-07