\caption 浮点数之外。算法

\caption 浮点数之外。算法

很抱歉,如果重复了,但我找不到答案。我正在使用以下代码。但我收到错误:

! LaTeX Error: \caption outside float.

\usepackage[algo2e]{algorithm2e}
\usepackage{algpseudocode}
\begin{document}
\begin{algorithm}
\caption{Euclid's algorithm}\label{euclid}
\begin{algorithmic}[1]
\Procedure{Euclid}{$a,b$}\Comment{The g.c.d. of a and b}
\State $r\gets a\bmod b$
\While{$r\not=0$}\Comment{We have the answer if r is 0}
\State $a\gets b$
\State $b\gets r$
\State $r\gets a\bmod b$
\EndWhile\label{euclidendwhile}
\State \textbf{return} $b$\Comment{The gcd is b}
\EndProcedure
\end{algorithmic}
\end{algorithm}
\end{document}

答案1

您的代码没有使用任何涉及algorithm2e包裹并且包的使用相互冲突。请添加algorithm包裹你的序言。

在此处输入图片描述

\documentclass{article}
\usepackage{algorithm,algpseudocode}

\begin{document}
\begin{algorithm}
  \caption{Euclid's algorithm}\label{euclid}
  \begin{algorithmic}[1]
    \Procedure{Euclid}{$a,b$}\Comment{The gcd of $a$ and $b$}
      \State $r \gets a \bmod b$
      \While{$r \neq 0$}\Comment{We have the answer if $r$ is $0$}
        \State $a \gets b$
        \State $b \gets r$
        \State $r \gets a \bmod b$
      \EndWhile\label{euclidendwhile}
      \State \textbf{return} $b$\Comment{The gcd is $b$}
    \EndProcedure
  \end{algorithmic}
\end{algorithm}

\end{document}

答案2

原因algorithm2e也是定义了algorithm环境,它也在 soda 文件中定义。

一种解决方案是将"algorithm"环境名称更改algorithm2e为,"algorithm2e"以避免命名冲突。

像这样:

\usepackage[algo2e]{algorithm2e} 

然后用以下代码包装你的代码:

\begin{algorithm2e}
...
\end{algorithm2e}

相关内容