我正在尝试重写一行算法的伪代码,并且希望能够以文本形式呈现它,而不是引入另一个浮动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
即可。希望它不会浮动到其他地方。如果发生这种情况,可以手动插入水平规则,除非您有不同的算法浮动样式。