缩进伪代码

缩进伪代码

我在缩进枚举中的伪代码块时遇到了麻烦。或者更具体地说,算法的伪代码似乎忽略了枚举的缩进。我正在使用算法算法伪代码

\begin{enumerate} 
\item Some text...   
\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{enumerate}

我如何强制算法块遵循与枚举块相同的缩进?

答案1

您正在内部设置算法algorithm 漂浮的环境。并且,浮动被设置为(默认情况下)具有全宽(\textwidth)。似乎您希望保留“浮动”结构(标尺)没有浮动行为(因为你将它设置在列表中)。然后你需要做两件事:

  1. minipage设置宽度内的浮点数\linewidth,以适应列表内的行宽(参见\textwidth\linewidth之间的区别\hsize); 和
  2. 由于上述(1),您需要删除浮动行为并使用[H]浮动说明符进行设置(由float加载者algorithm)。

以下是以 MWE 形式呈现的最终结果:

在此处输入图片描述

\documentclass{article}
\usepackage{algorithm,algpseudocode}% http://ctan.org/pkg/{algorithms,algorithmicx}
\begin{document}
\begin{enumerate} 
  \item Some text\ldots\par
  \vspace{-\baselineskip}

  \begin{minipage}{\linewidth}
  \begin{algorithm}[H]
    \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{minipage}

  Some more text\ldots
\end{enumerate}
\end{document}

相关内容