未定义控制序列‘\For’-algorithmicx 包

未定义控制序列‘\For’-algorithmicx 包

我必须编写一些算法,因此我决定使用 algorithmicx 包:

\usepackage{algorithm}
\usepackage{algorithmicx}

\begin{algorithm}
    \begin{algorithmic}[1]
        \For{aa}
            \State $Sim(i,j) \gets \frac{v_{i} \cdot v_{j}}{\left|v_{i}\right|\left|v_{j}\right|}$
        \EndFor
    \end{algorithmic}
    \label{alg:rAP}
    \caption{algorithm}
\end{algorithm}

一切都很好,但是 LaTeX 说Undefinde control sequence \For

我很困惑,因为我只是按照algorithmicx

使用也没有问题\State(当我注释掉时\For

我也尝试过\FOR\for但是没什么作用。

似乎algorithmicx包没有被弃用,这让我更加困惑。

答案1

来自algorithmicx文档:

该包algorithmicx本身不定义任何算法命令,但提供了一组宏来定义这样的命令集。您可以仅使用algorithmicx,并自行定义命令,也可以使用预定义的命令集之一。

这些预定义的命令集(布局)是:

algpseudocode...

algcompatible...

algpascal...

algc...

这意味着algorithmicx仅加载包,您必须自己定义命令。

如果您想使用其中一个预定义的命令集,那么您必须加载相应的包(根据您的情况)algpseudocode

梅威瑟:

\documentclass{article}

\usepackage{algorithm}
\usepackage{algpseudocode}

\begin{document}

\begin{algorithm}
    \begin{algorithmic}[1]
        \For{aa}
            \State $Sim(i,j) \gets \frac{v_{i} \cdot v_{j}}{\left|v_{i}\right|\left|v_{j}\right|}$
        \EndFor
    \end{algorithmic}
    \label{alg:rAP}
    \caption{algorithm}
\end{algorithm}

\end{document} 

输出:

在此处输入图片描述

相关内容