Elsevier `elsart`/`elsart3p` 与 `algorithmic` 不兼容

Elsevier `elsart`/`elsart3p` 与 `algorithmic` 不兼容

困扰了以下问题一段时间,我被难住了。我正在使用elsart3p.cls文档类,但它似乎与包不太兼容algorithmic。这是一个最小的工作示例:

\documentclass{elsart3p} %also doesn't work with elsart
\usepackage{algorithmic}
\usepackage{algorithm}

\begin{document}

\begin{algorithm}[ht]
\begin{algorithmic}[1]
\REQUIRE help?
\end{algorithmic}
\caption{Algorithm}
\label{alg:test}
\end{algorithm}

\end{document}

当使用latex或进行编译时pdflatex,我收到一个错误(\begin{algorithmic}每个算法一个错误):

LaTeX Error: Command \AND already defined

...但输出看起来还不错。通常我不会太介意,但我会传递来源。

有人有解决方法吗?我有几个不错的算法,所以不太想换一个包(另外,我从来都不是 algorithmic2e 的忠实粉丝……太多的括号让我头晕)。

我知道这个问题并不完全是好莱坞大片的题材,但任何帮助都非常感谢!

答案1

elsart3p在内部加载elsart类,后者定义\AND\&algorithmic包也定义\AND但含义不同,因此这两个定义发生冲突(这就是您收到问题中包含的错误消息的原因)。一种可能的解决方案是使用savesym包重命名两个冲突名称之一:\savesymbol{AND}在加载algorithmic包之前使用,将\AND命令从elsartas重命名\origAND,避免名称冲突:

\documentclass{elsart3p}
\usepackage{savesym}
\savesymbol{AND}
\usepackage{algorithmic}
\usepackage{algorithm}

\begin{document}

\begin{algorithm}[ht]
\begin{algorithmic}[1]
\STATE solved!
\end{algorithmic}
\caption{Algorithm}
\label{alg:test}
\end{algorithm}

\end{document}

顺便提一下,也许算法您可能对该包感兴趣。

相关内容