算法包中未定义的控制序列

算法包中未定义的控制序列

\newenvironment我正在使用带有 TeXmaker 和 TeX Live 的 Ubuntu 11.04。我的 LaTeX 文件中有一个定义:

\newenvironment{algo}[1]{%
  \begin{algorithm}[#1]
    \SetTitleSty{textsc}{normalsize}
    \SetInd{0.25em}{0.25em}
    \SetAlgoVlined
    \SetNlSty{normal}{}{}
    \DontPrintSemicolon
    \SetKwComment{tcp}{}{}
    \small
  }{%
    \vspace{-0.5ex}
  \end{algorithm}
}

用法就像

\begin{algo}{t}
...
\end{algo}

这会出现错误:

! Undefined control sequence.
\algo ... \SetInd {0.25em}{0.25em} \SetAlgoVlined 
                                                  \SetNlSty {normal}{}{} \Do...

该文件在 Windows 7 + MikTeX 上编译良好。

还有人在 Ubuntu 上遇到类似的问题吗?

答案1

您可能拥有旧版本的 algorithm2e 包——我知道我的来自 ubuntu repos texlive distro,并且我必须使用\dontprintsemicolon大写版本。

您可以查明您尝试使用的命令是否有旧的类似物,更新您本地 tex 发行版上的 algorithm2e 包,或者在编译目录中提供最新 algorithm2e.sty 的副本。

编辑:如果您确实有一个旧版本(您可能有,使用来自 ubuntu repos 的 texlive),这里是相应的命令:

  • \SetAlgoVlined\SetVline
  • 如上所述\DontPrintSemicolon\dontprintsemicolon

答案2

出于某些原因,您可能希望代码与软件包的两个版本兼容。在这种情况下,一种可能性是使用\providecommand如下方法:

\usepackage[...]{algorithm2e}
\providecommand{\SetAlgoLined}{\SetLine}
\providecommand{\DontPrintSemicolon}{\dontprintsemicolon}
[...]

此后,使用\SetAlgoLined\DontPrintSemicolon应该可以持续发挥作用。

相关内容