在段落之间放置伪代码

在段落之间放置伪代码

我正在尝试重写一行算法的伪代码,并且希望能够以文本形式呈现它,而不是引入另一个浮动algorithm环境。我该怎么做?

下面是我想要实现的确切目标的一个例子:

在此处输入图片描述

编辑:我有以下 MWE。我想删除水平线并添加像上面一样的编号。

\documentclass{article}
\usepackage[utf8]{inputenc}

\usepackage{amsmath}
\usepackage{algorithm}
\usepackage{algpseudocode}

\begin{document}

...we can replace the update from Line 8 in Algorithm 3 with the following:

\begin{algorithm}
    \begin{algorithmic}
        \ForAll {$x \in X$}
            \State $y \leftarrow x$
        \EndFor
    \end{algorithmic} 
\end{algorithm}

This modification allows for...

\end{document}

答案1

您可以使用以下类似模板的方法来调整算法的组件。这个想法是更新行号方案(带前缀\ref)以打印\alph而不是\arabic,并缩进到适当的深度以匹配原始算法中的位置(水平)。

在此处输入图片描述

\documentclass{article}

\usepackage{algorithm}
\usepackage{algpseudocode}

\begin{document}

\begin{algorithm}[H]
  \caption{Euclid's algorithm}\label{alg: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 \neq 0$}\Comment{We have the answer if~$r$ is~$0$}
          \State $a \gets b$
          \State $b \gets r$\label{alg:b_r}
          \State $r \gets a \bmod b$
       \EndWhile
       \State \Return $b$\Comment{The gcd is~$b$}
    \EndProcedure
  \end{algorithmic}
\end{algorithm}

\ldots we can replace the update from Line~\ref{alg:b_r} in Algorithm~\ref{alg:euclid} with the following:

\begin{algorithm}[H]
  \begin{algorithmic}[1]
    \renewcommand\alglinenumber[1]{\footnotesize \ref{alg:b_r}\alph{ALG@line}:}% Update line number to be \alph with prefix
    \expandafter\addtolength\csname ALG@tlm\endcsname{2\dimexpr\algorithmicindent}% Update current indentation
    \ForAll {$x \in X$}
      \State $y \leftarrow x$
    \EndFor
  \end{algorithmic}
\end{algorithm}

This modification allows for\ldots

\end{document}

如果您不想要水平规则,那么只需删除algorithm环境周围的环境algorithmic即可。希望它不会浮动到其他地方。如果发生这种情况,可以手动插入水平规则,除非您有不同的算法浮动样式。

相关内容