很抱歉,如果重复了,但我找不到答案。我正在使用以下代码。但我收到错误:
! 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}