\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
应该可以持续发挥作用。